使用R中的Pandoc和Knitr生成带有变音符号的表格

4

我很难通过knitr包和pandoc打印带有变音符号的表格。 我相信Name.md文件是正确生成的,但在pandoc层面上出现错误。 我做错了什么? 没有变音符号,它可以完美地工作。

以下是我遵循的示例和步骤:

在R中复制表格

SampleTable <- data.frame(Nazov=c("Kratkodobé záväzky (TA)","Dlhodobé záväzky 
                                 (LA)","Záväzky celkovo (TA)"))

我运行*.Rmd文件以创建Name.md文件。
```{r, echo=FALSE, dpi=600, fig.width=12, fig.height=15, fig.cap="Finančná štruktúra"}
   print(xtable(SampleTable))
```

将 .md 转换为 .pdf

knit("Name.rmd")


system(paste("pandoc -V geometry:margin=1in -o", "Report", ".pdf ", "Name", ".md", 
              sep=""))

编辑:错误信息:

pandoc.exe: Cannot decode byte '\x20': Data.Text.Encoding.decodeUtf8: Invalid UTF-8
            stream

Warning message:
running command 'pandoc -V geometry:margin=1in -oReport7.pdf ReportNew.md' had status 1

@AnandaMahto:我已经在编辑中发布了错误信息。 - Maximilian
1
从Pandoc手册中得知:*Pandoc使用UTF-8字符编码进行输入和输出。如果您的本地字符编码不是UTF-8,则应通过iconv进行输入和输出:iconv -t utf-8 input.txt | pandoc | iconv -f utf-8*。此外,还可以参考这里这里获取更多想法。 - A5C1D2H2I1M1N2O1R2T1
1
这并不是一个完全的复制品,因为你似乎在使用 xtable 包,所以我猜测你的 Rmd 文件中有 library(xtable)。关于 iconv 的注释,你需要在命令行或系统调用中对你的 .md 文件进行转换,然后再使用 Pandoc。 - A5C1D2H2I1M1N2O1R2T1
好的,我会把它发布在某个地方,并提供链接给你。谢谢。 - Maximilian
抱歉,这需要登录。不太好。 - Maximilian
显示剩余3条评论
1个回答

3

在像“Geany”这样的文本编辑器中查看您的文件(File > Properties),您可以轻松查看文件编码,您会发现该文件的编码是ISO-8859-1。

然而,正如 Pandoc 的 man 手册所述:

Pandoc uses the UTF-8 character encoding for both input and output. If your local character encoding is not UTF-8, you should pipe input and output through iconv:

iconv -t utf-8 input.txt | pandoc | iconv -f utf-8

因此,在我的终端上所做的是(假设您已经切换到存储您的 .md 文件的目录):

iconv -f ISO-8859-1 -t UTF-8 md_file.md > new.md
pandoc new.md -o test.pdf

如果您希望从R中进行此操作,请像在现有问题中所做的那样将命令粘贴在一起。

这是我得到的输出:

enter image description here

注意:我应该提到我正在使用Ubuntu,iconv在Unix系统中相当标准。


@Max,> 符号表示将左侧的输出写入一个名为右侧内容的新文件中。是的,我会将它们分别运行在不同的行上。但是你为什么要在 R 中这样做呢?为什么不只是切换到控制台几秒钟呢?我还没有测试过你的 system 命令,但基本上 -f 开关表示“从”,-t 开关表示“到”,然后您指定输入文件(这里是“md_file.md”)和输出文件(这里是“new.md”)(以便您可以以类似的方式将它们粘贴在一起)。 - A5C1D2H2I1M1N2O1R2T1
以下是有关编程的内容,请参考以下链接获取更多信息:http://www.gnu.org/savannah-checkouts/gnu/libiconv/documentation/libiconv-1.13/iconv.1.html - Maximilian
你知道如何在R中执行iconv命令吗?我尝试了system(paste("iconv -f ISO-8859-1 -t UTF-8 Report1.md > ReportRRR.md", sep="")),但是出现了错误。基本上,我会经常使用这个报告工具,所以如果能在R中使用而不用切换到控制台就更好了。 - Maximilian
R确实有一个iconv()函数。 - Yihui Xie
@Yihui:你能否请发一下在R基础中进行转换的命令?谢谢。 - Maximilian
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接