编写并编织一份按变量与特殊字符 (å æ ø) 分割的 PDF 报告 - 编码问题

2023-11-22

我尝试使用基于分组变量的部分来生成一份 PDF 报告brew and knitr。我的分组变量可能包含特殊字符(元音变音),例如 å æ ø。

仅文档标题中的变音符号可以很好地处理\usepackage[utf8]{inputenc}(参见下面的示例)。但是,分组变量中的变音符号会生成错误\usepackage[utf8]{inputenc}.

另一方面,当我尝试时\usepackage[T1]{fontenc},分组变量中的变音符号得到正确处理。但现在标题编码不正确。

我正在努力在标题和分组变量中正确编码。

下面是一个示例,我尝试生成一份 PDF 报告,其中包含鸢尾花数据集中每个物种的摘要统计数据的小节。我希望它可以说明我的问题。

用于准备不带变音符号的数据的 R 代码

library(plyr)
library(xtable)
library(knitr)
library(brew)
library(stringr)

为内置的每个物种创建一个汇总表iris数据集。首先,使用原来的Species名称,不带变音符号。文档中的变音符号\title仅(请参阅代码.rnw模板文件)。将汇总表存储在列表中。

 data(iris)
 iris_tbl <- dlply(.data = iris, .variables = .(Species), function(x) xtable(summary(x)))

定义函数brew_knit_pdf。该函数生成一个模板乳胶文件xxx.rnw到一个新的.rnw file xxx_out.rnw,其中每个循环的项目/组都有一个部分。这xxx_out.rnw from brew然后用作输入文件knit2pdf并转换为 PDF。

brew_knit_pdf <- function(template, ...){
  brew_out <- str_replace(string = template, pattern = ".rnw", replacement = "_out.rnw")
  brew(file = template, output = brew_out)
  knit2pdf(input = brew_out, ...)
}

brew_knit_pdf("iris_umlaut_tbl.rnw")

.rnw 模板文件的代码

在我的示例中,我为以下代码命名了模板文件iris_umlaut_tbl.rnw。该文件用作brew_knit_pdfR 脚本中的函数。

\documentclass{article}

% \usepackage[T1]{fontenc}    
\usepackage[utf8]{inputenc}

\usepackage{geometry}
\geometry{tmargin=2.5cm,bmargin=2.5cm,lmargin=2.5cm,rmargin=2.5cm}

\begin{document}

\begin{titlepage}

\title{Using brew and knitr to produce one PDF report split by a grouping variable.\\Problem with å æ ø in grouping variable}

\clearpage\maketitle
\thispagestyle{empty}

\tableofcontents

\end{titlepage}
\newpage


\section{Summary statistics for each species}

% R code loop wrapped in brew syntax, which brews the template file xxx.rnw to a new .rnw file xxx_out.rnw, which has one section for each group that is looped over, i.e. the names of the list iris_tbl produced in the R script.

<% for (Sp in names(iris_tbl)) { -%>

\subsection{<%= Sp %>}
<<sum-<%= Sp %>, echo=FALSE, results='asis'>>=
print(iris_tbl[["<%= Sp %>"]])
@
\newpage
<% } %>

\end{document}

使用变音符号准备数据的 R 代码

为了模仿我的真实数据,我将虹膜数据中的物种名称替换为包含变音符号的(无意义的)名称。

data(iris)
iris$Species <- as.character(iris$Species)

iris$Species[iris$Species == "setosa"] <- "åsetosa"
iris$Species[iris$Species == "versicolor"] <- "æversicolor"
iris$Species[iris$Species == "virginica"] <- "øvirginica"

# create a summary table for each species
iris_tbl <- dlply(.data = iris, .variables = .(Species), function(x) xtable(summary(x)))

当 iris_tbl 的“元音变音版本”准备好后,我在与上面相同的 .rnw 文件上运行brew_knit_pdf 函数,只是我使用不同的编码包(inputenc 和/或 fontenc)。

Result

以下是迄今为止四次尝试的总结;使用不带或带变音符号的数据集,并在 .rnw 文件中使用不同的编码包。

    • R 数据:用非元音变音物种准备的 iris_tbl
    • .rnw 文件:元音变音\title{ }, \usepackage[utf8]{inputenc}

Output标题中的变音符号 OK

    • R 数据:iris_tbl 使用 Species 的元音变音版本准备
    • .rnw 文件:元音变音\title{ }, \usepackage[utf8]{inputenc}

Output

错误:在“iris_umlaut_tbl_out.tex”上运行“texi2dvi”失败 LaTeX 错误:...Package inputenc 错误:Unicode char \u8:æve 未设置用于 LaTeX。

    • R 数据:iris_tbl 使用 Species 的元音变音版本准备
    • .rnw 文件:umlauts in \title{ }, \usepackage[T1]{fontenc}, \usepackage[utf8]{inputenc}

Output

错误:在“iris_umlaut_tbl_out.tex”上运行“texi2dvi”失败 LaTeX 错误:...Package inputenc 错误:Unicode char \u8:æve 未设置用于 LaTeX。

    • R 数据:iris_tbl 使用 Species 的元音变音版本准备
    • .rnw 文件:元音变音\title{ }, \usepackage[T1]{fontenc}

Output

标题中的变音符号不正确,分组变量中的变音符号正常


谁能指出正确的方向以正确编码both title and分组变量?预先非常感谢您抽出时间。


会议信息

我的 R Studio 0.97.336 中的默认文本编码:UTF-8

> sessionInfo()

R version 3.0.0 (2013-04-03)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=Norwegian (Bokmål)_Norway.1252  LC_CTYPE=Norwegian (Bokmål)_Norway.1252   
[3] LC_MONETARY=Norwegian (Bokmål)_Norway.1252 LC_NUMERIC=C                              
[5] LC_TIME=Norwegian (Bokmål)_Norway.1252    

attached base packages:
[1] splines   stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] Hmisc_3.10-1               survival_2.37-4            pastecs_1.3-13             boot_1.3-9                
 [5] pspline_1.0-15             ggplot2_0.9.3.1            lubridate_1.2.0            stringr_0.6.2             
 [9] brew_1.0-6                 knitr_1.1                  xtable_1.7-1               plyr_1.8                  
[13] PerformanceAnalytics_1.1.0 xts_0.9-3                  zoo_1.7-9                  gdata_2.12.0.2            

loaded via a namespace (and not attached):
 [1] cluster_1.14.4     colorspace_1.2-2   dichromat_2.0-0    digest_0.6.3       evaluate_0.4.3     formatR_0.7       
 [7] grid_3.0.0         gtable_0.1.2       gtools_2.7.1       labeling_0.1       lattice_0.20-15    MASS_7.3-26       
[13] memoise_0.1        munsell_0.4        proto_0.3-10       RColorBrewer_1.0-5 reshape2_1.2.2     scales_0.2.3      
[19] tools_3.0.0

> getOption("encoding")

[1] "native.enc"

Update:

我非常感谢来自brew包维护者Jeffrey Horner的“off-SO”​​输入。当使用 Ubuntu 和命令行 R 运行我的脚本时,他没有遇到编码问题。这给了我新的希望。我没有机会自己运行Ubuntu,但今天我更新了RStudio(0.97.449)并将默认编码设置为ISO8859-1(感谢Yihui!)。现在,标题和分组变量中的特殊字符都已正确编码\usepackage[latin1]{inputenc}在 .rnw 文件中。还\usepackage[ansinew]{inputenc}作品。我不确定我最初的尝试出了什么问题。当我重新打开脚本文件时,可能是 RStudio 没有将选项中设置的默认编码应用到脚本文件中,我按照 Yihui 的建议更改了这些默认编码。但这只是猜测。


既然你正在使用UTF-8,这不是您操作系统的本机编码,您需要明确告诉knitr输入文档的编码。例如,您必须调用

knit2pdf(brew_out, encoding = "UTF-8")

但我不确定是否brew可以处理非本地字符编码。如果没有,我建议你使用系统默认编码(应该是ISO8859-1在这种情况下),并且

\usepackage[latin9]{inputenc}

或者做所有事情knitr如果你必须使用UTF-8(这也使您能够单击按钮来编译文档);看075-针织扩展.Rnw举个例子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编写并编织一份按变量与特殊字符 (å æ ø) 分割的 PDF 报告 - 编码问题 的相关文章

  • 纵向序列数据的三次样条方法?

    我有一个串行数据 格式如下 time milk Animal ID 30 25 6 1 31 27 2 1 32 24 4 1 33 17 4 1 34 33 6 1 35 25 4 1 33 29 4 2 34 25 4 2 35 24
  • kernlab 中 SVM 训练之外的核矩阵计算

    我正在开发一种新算法 该算法可以生成修改后的核矩阵以用于 SVM 训练 但遇到了一个奇怪的问题 出于测试目的 我比较了使用 kernelMatrix 接口和普通内核接口学习的 SVM 模型 例如 Model with kernelMatri
  • R 中的快速 QR 分解

    我有大量矩阵 需要对其执行 QR 分解并存储生成的 Q 矩阵 进行归一化 以便 R 矩阵在其对角线上具有正数 除了使用之外还有其他方法吗qr 功能 这是工作示例 system time Parameters for the matrix t
  • pyomo + 网状错误 6 句柄无效

    我正在尝试运行pyomo优化 我收到错误消息 Error 6 The handle is invalid 不知道如何解释它 环顾四周似乎与特权有关 但我不太明白 在下面找到完整的错误跟踪以及重现它的玩具示例 完整的错误跟踪 py run f
  • R独特的列或行与NA无可比拟

    有谁知道如果incomparables的论证unique or duplicated 曾经被实施过incomparables FALSE 也许我不明白它应该如何工作 无论如何 我正在寻找一个巧妙的解决方案 以仅保留与另一列相同的唯一列 或行
  • 为什么 dplyr filter() 不能在函数内工作(即使用变量作为列名)?

    使用 dplyr 函数对数据进行过滤 分组和变异的函数 基本管道序列在函数之外工作得很好 这就是我使用真实列名称的地方 将其放入一个函数中 其中列名称是一个变量 并且某些函数可以工作 但有些函数则不能 尤其是 dplyr filter 例如
  • 在 R 中创建虚拟变量,排除某些情况为 NA

    我的数据看起来像这样 V1 V2 A 0 B 1 C 2 D 3 E 4 F 5 G 9 我想创建一个虚拟变量R where 0 1 1 2 3 4 and NA 0 5 9 应该很简单 有人可以帮忙吗 我们可以转换V2 into a fa
  • 只读取选定的列

    谁能告诉我如何仅读取下面每年数据的前 6 个月 7 列 例如使用read table Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2009 41 27 25 31 31 39 2
  • 将阴影区域添加到五分位数之间的直方图中

    All 我有一个包含 2 个直方图的图表 其中我还绘制了代表第 20 40 60 和 80 个百分位数的线条 下面的代码使用虚拟数据重现了类似的图表 data lt rbind data frame x rnorm 1000 0 1 g o
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 在 r 中的 group_by 之后建模后取消列表列的嵌套

    我想对所有组进行线性回归group by 将模型系数保存在列表列中 然后使用 unnest 扩展列表列 这里我用的是mtcars以数据集为例 注 我想用do here becausebroom tidy 不适用于所有型号 mtcars gt
  • 相当于 min() 的 rowMeans()

    我在 R 邮件列表上多次看到这个问题 但仍然找不到满意的答案 假设我有一个矩阵m m lt matrix rnorm 10000000 ncol 10 我可以通过以下方式获得每行的平均值 system time rowMeans m use
  • 我可以在元标记中使用 HTML 字符实体吗?

    我有一个有两种语言的网站 英语和中文 在使用 UTF 8 字符集的英文主页中 我有 例如 这出现在搜索结果中 我想将其更改为 在哪里 20013 25991 是 中文 的 ISO 实体 搜索结果中会显示为 中文 吗 我无法将 中文 直接粘贴
  • 纵向比较 R 中的值...并进行扭转

    我有许多人在多达四个时间段进行的测试结果 这是一个示例 dat lt structure list Participant ID c A A A A B B B B C C C C phase structure c 1L 2L 3L 4L
  • R 中用于调用 sed、rsync、ssh 等的 system() 的替代方案:函数是否存在,我应该编写自己的函数,还是我错过了重点?

    最近 我发现了base files命令 与其他命令一起使用 例如getwd write lines file show dir等等 似乎有许多 bash 函数的 R 等价物 我还在 R 中编写了一些函数来简化对ssh and rsync通过
  • 如何从 R 读取 PDF 元数据

    我们很好奇 有没有一种方法可以从 R 读取 PDF 元数据 例如下面显示的信息 通过搜索我对此无能为力 r pdf metadata在当前的问题库中 非常欢迎任何指点 我想不出纯 R 的方法来执行此操作 但您可能可以安装您最喜欢的 PDF
  • R“错误:“}”中出现意外的“}”[重复]

    这个问题在这里已经有答案了 我有一个字符串变量 对于缺少数据的情况 它具有 空值 我想将 空值 重新编码为缺失 而不是说 空值 我正在尝试编写一个循环来删除这些 空值 条目 但我不断收到错误 错误 中出现意外的 for row in dat
  • 以编程方式将字符串宽度值插入到 sprintf() 中

    我正在尝试以编程方式将字符串宽度值插入到sprintf 格式 期望的结果是 sprintf 20s hello 1 hello 但我想插入20在同一通话中即时进行 因此它可以是任何号码 我努力了 sprintf ds 20 hello 1
  • 闭包作为数据合并习惯的解决方案

    我正在尝试解决闭包问题 而且我think我发现了一个案例 他们可能会有所帮助 我有以下几部分需要处理 一组正则表达式 旨在清理状态名称 位于函数中 具有州名称 上述函数创建的标准化形式 和州 ID 代码的 data frame 用于链接两者
  • 如何使用 dplyr 独立过滤每列的行

    我有以下内容 library tidyverse df lt tibble tribble gene colB colC a 1 2 b 2 3 c 3 4 d 1 1 df gt A tibble 4 x 3 gt gene colB c

随机推荐

  • C语言的unicode你好世界?

    我正在尝试从 C 输出 蠀 等内容 include
  • 启动和停止来自广播接收器的通知

    我正在尝试从广播接收器启动状态栏通知 然后从另一个广播接收器停止它 但我遇到了问题 我想在 USB 连接时在状态栏中启动通知 然后在 USB 断开连接时我想停止它 我设置了两个接收器并正在工作 只是在从接收器启动和停止一个接收器方面遇到困难
  • 如何从 DatePickerDialog 获取 DatePicker?

    我有一个活动弹出 android app DatePickerDialog DatePickerDialog dialog new DatePickerDialog this startDateSetListener start cal g
  • 固定页眉

    我以前从未处理过 CSS 但现在我必须处理 我正在开发一些 HTML 代码 一个网站的草图 并且有 CSS 问题 我希望我的标题位于固定位置 我的意思是它始终应该位于网站的顶部 即使有太多内容以至于网站必须滚动才能看到所有内容 我尝试过一些
  • 删除控制器/类中的 HttpServletRequest 参数的最佳方法?

    我有一个情况 我需要将 HTTP 请求对象重定向到其他控制器 类以进行进一步处理 问题是 在某些控制器中 我想更好地控制我转发到下一个类的参数 修改 编辑 删除它们 所以 我想知道是否有一个好的实践 模式来实现对 HTTP 请求参数的基本控
  • Android 4 ICS 上带有 SSL 客户端证书的 WebView

    我对 Android 上的本机 WebView 有问题 我需要使用 SSL 客户端证书对站点进行身份验证 Android WebView 似乎不支持这个 作为解决方法 我使用了 WebView 的修改版本 https github com
  • java中String转int数组

    我有一根绳子 String arr 1 2 ie 1 2 就像一个单一的字符串 我该如何转换这个arrjava中的int数组 String arr 1 2 String items arr replaceAll replaceAll rep
  • JavaScript 中的数字是不可变的吗? [复制]

    这个问题在这里已经有答案了 可能的重复 javascript 数字 不可变 我读了道格拉斯 克罗克福德 Douglas Crockford 的书 JavaScript the Good Parts 它说 JavaScript 中的数字是不可
  • 如何在不输入任何内容的情况下触发角度解析器

    正如主题所述 我如何触发在一个内部发生的动作 modelController parsers 没有用户输入 我能想到的唯一方法是将它们包装在函数中并调用它 但是有没有更好的方法来触发 pseudo modelController trigg
  • 对齐属性 已弃用

    不久前我发现中心标签已被弃用 这是可以理解的 因为 HTML 是用来构建内容的 而不是用来格式化的 但为什么对齐属性也被弃用了呢 属性可用于格式化 我明白CSS可以用 但并不是每个人都懂CSS 更糟糕的是 文本对齐 居中 and 左边距 自
  • 源代码不可用时的访问者模式实现

    考虑的原因之一访客模式 这种分离的实际结果是能够向现有对象结构添加新操作 而无需修改这些结构 假设您没有第三方库的源代码 并且您已经添加了对相关对象的一项操作 由于您没有对象 因此无法修改您的元素 第三方类 来添加访问者 在这种情况下 双重
  • 使用后备语言检索 i18n 数据

    我必须从数据库中获取 i18n 文本 默认语言为英语 其文本为一切 但非英语语言不一定具有所有所需的翻译 如果某个实体 键的非英语翻译在数据库中不可用 那么我希望它返回英语文本 所以 英语是fallback这里的语言 i18n 文本表如下所
  • 如何使用 CMake 有选择地链接到静态或动态 boost 库?

    我有一个 CMake 项目 有时想针对静态 boost 库进行编译 但我也希望能够轻松地使用 cmake GUI 中的动态库 在我的顶级 CMakeLists txt 中 我有以下内容 option USE STATIC BOOST Bui
  • jQuery 中的节流事件调用

    我有一个keyup事件绑定到需要大约四分之一秒才能完成的函数 search keyup function code that takes a little bit to complete 当用户键入整个单词或以其他方式快速按键时 该函数将连
  • 使用pyspark,在hadoop文件系统上读/写2D图像

    我希望能够在 hdfs 文件系统上读取 写入图像并利用 hdfs 局部性 我有一个图像集合 其中每个图像由以下内容组成 uint16 的二维数组 存储为 xml 文件的基本附加信息 我想通过 hdfs 文件系统创建一个存档 并使用 Spar
  • jQuery Mobile 破坏了我的网站

    当我仅使用移动触摸屏设备时 我会在网站上加载 jQuery Mobile 当我这么做的时候 它把一切都搞乱了 例如 选择菜单也不能正常工作 页面底部会出现 正在加载 正在加载 未定义 字样 我知道我错过了一些东西 但不知道是什么 关于我可能
  • JavaScript 对象的生命周期和内存泄漏

    我对此进行了相当多的研究 但主要是通过将其他问题拼凑在一起 这仍然留下了一些疑问 在一个不随时刷新浏览器页面并且可能会运行相当长一段时间 几个小时 而不关闭的应用程序中 假设刷新页面或导航到另一个页面会重新启动 js 代码 确保对象的最佳方
  • TypeScript:具有可选值的可区分联合

    给定以下类型 interface FullName fullName string interface Name firstName string lastName string type Person FullName Name cons
  • 友元函数无法构造该类的唯一指针

    我有一个特定的设计策略 其中我的类的构造函数是私有的 并且只能由该类的朋友构建 在朋友函数中 我尝试使用以下命令创建我的类的 unique pointerstd make unique但它不编译 我的 VC12 编译器抱怨 c progra
  • 编写并编织一份按变量与特殊字符 (å æ ø) 分割的 PDF 报告 - 编码问题

    我尝试使用基于分组变量的部分来生成一份 PDF 报告brew and knitr 我的分组变量可能包含特殊字符 元音变音 例如 仅文档标题中的变音符号可以很好地处理 usepackage utf8 inputenc 参见下面的示例 但是 分