楼主: complicated
37064 31

[问答] 如何用Rstudio+knitr制造Pdf? [推广有奖]

21
ywh19860616 发表于 2014-6-14 10:58:15
shang00122 发表于 2014-6-13 19:42
安装的时候出错,rmarkdown无法更新安装,我在R里面安装rmarkdown的时候也报错,好像不支持最新版的R?很 ...
  1. devtools::install_github("rstudio/rmarkdown")
复制代码
R3.1.0可以安装。

22
jacky陈2183 在职认证  学生认证  发表于 2015-4-11 17:53:15
多谢分享

23
dogamodel 发表于 2015-8-15 15:53:34
用rmarkdown,knitr做中文PDF报告,原来以为点歌按钮那么简单,但使用后遇到中文显示不出来的问题。后来终于解决了。

1、首先要安装Rstudio,knitr包,还有pandoc
2、在Rstudio里写好一个Rmd文件后,做好Rstudio的设置,包括Tools-Goldblo option-Sweave里Weave Rnw files using "knitr",Typeset LaTeX into PDF using: "XeLaTeX",还有Rmarkdown里的设置,output format选PDF,Advanced里的LaTeX Engine:xelatex 等,其他的设置可以根据自己需要
一般上面的设置做好后,编译是不会有问题的,但生成的PDF文件中中文就是显示不出来,后来发现问题是默认TEX模板导致生成的TEX文件缺少了中文的支持,所以要进行下面的步骤
3、在pandoc里,导出默认的模板,在命令行输入   pandoc -D latex>template.tex
4、打开上面的模板,找到一行 % if luatex or xelatex,在下面的\ifxetex 和\else 下分别都加上两行,\usepackage{xecjk} \setCJKmainfont{SimSun}
为了导入xecjk包和设置汉字字体,字体可以更换。保存这个模板,暂定名称为mytemplate.tex
5、把这个文件置于要转换的Rmd文件同一目录下
6、修改Rmd文件的头,类似下面的
---
title: "AAA"
author: "AAA"
date: "2015.7.22."
output:
  pdf_document:
    template: mytemplate.tex          %这个位置要加上这句,使用刚才制作的模板
    keep_tex: yes
    latex_engine: xelatex
    number_sections: yes
    toc: yes
---
其他设置按自己需要,添加目录、字体尺寸等,详情可参考http://rmarkdown.rstudio.com/pdf_document_format.html
这样编译基本就没问题了
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
bllhm + 5 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 5  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

24
欧小波 学生认证  发表于 2016-5-29 11:48:42
galilee 发表于 2014-6-9 12:24
哈哈,易辉大大新弄的rmarkdown可以直接在rstidio里面把rmd文件转成pdf。
rstudio 的 preview release里面 ...
下载不了哎。。

25
bllhm 发表于 2016-11-8 09:16:11
dogamodel 发表于 2015-8-15 15:53
用rmarkdown,knitr做中文PDF报告,原来以为点歌按钮那么简单,但使用后遇到中文显示不出来的问题。后来终于 ...
到第三步不会做,不过益辉已经有模版了,可以生成正常的含中文的pdf

26
xujicheng 发表于 2018-6-1 08:54:55
看谢老大的书籍吧,链接是https://yihui.name/tinytex/。只需要安装tinytex就可以搞定。其实也就两个语句
install.packages(c('tinytex', 'rmarkdown'))
tinytex::install_tinytex()
前提是目录定义好

27
风向南吹TP 学生认证  发表于 2018-6-2 12:55:09
最直接的方法莫过于输出word,然后保存为PDF格式

28
屋檐滴语 发表于 2018-6-2 18:17:04
方法一:
安装MikTex软件
安装rticles包
模板选择CTeX Documents

方法二:
生成网页后打印成pdf格式。

29
屋檐滴语 发表于 2018-6-2 18:46:18
版本高的可以考虑tinytex,低版本貌似安装了仍然报错。

30
屋檐滴语 发表于 2018-6-2 18:52:04
  1. ---
  2. title: "在R Markdown文档中使用中文"
  3. author:
  4.   - 谢益辉
  5.   - 邱怡轩
  6.   - 于淼
  7. documentclass: ctexart
  8. output:
  9.   rticles::ctex:
  10.     fig_caption: yes
  11.     number_sections: yes
  12.     toc: yes
  13. classoption: "hyperref,"
  14. ---

  15. # 引言

  16. 中文LaTeX文档并非难题。当然这句话得站在巨人 [CTeX](http://ctex.org) 的肩膀上才能说,它让我们只需要一句

  17. ```latex
  18. \documentclass{ctexart} % 或者ctexrep/ctexbook
  19. ```

  20. 或者

  21. ```latex
  22. \usepackage{ctex}
  23. ```

  24. 就轻松搞定中文LaTeX排版问题。跨平台通用的LaTeX编译却是个小难题,主要是没有一种跨平台通用且免费的中文字体。好吧,你们Windows用户永远有宋体黑体,你们Mac用户有华文字体,而我们苦逼Linux用户在编译LaTeX文档就没那么简单了^[切,傲娇的Linux用户怎么会干出找你们复制字体的事情],是啊,我们有文泉驿,但我们要是用了文泉驿之后把文档发给你们八成不能编译,因为你们没有安装文泉驿。

  25. # 字体和选项

  26. LaTeX包[**ctex**](http://ctan.org/pkg/ctex)支持若干种字体选项,如果你是**ctex**老用户,请注意这里我们要求的最低版本是2.2,你可能需要升级你的LaTeX包。从版本2.0开始,**ctex**支持根据不同操作系统自动选择中文字体,简直是为人类进步作出了巨大贡献,我们再也不必费尽口舌向用户解释“啊,你用Windows啊,那么你该使用什么字体;啊,你用Mac啊,又该如何如何”。

  27. 下面的YAML元数据应该能满足多数用户的需求,主要设置两项参数:文档类为`ctexart`(当然也可以是别的类),输出格式为`rticles::ctex`,其默认LaTeX引擎为XeLaTeX(真的,别纠结你的旧爱PDFLaTeX了)。

  28. ```yaml
  29. ---
  30. documentclass: ctexart
  31. output: rticles::ctex
  32. ---
  33. ```

  34. `rticles::ctex`的参数都是普通的`pdf_document`参数,参见文档**rmarkdown**包的文档,这里就不赘述了。

  35. Windows和Mac用户应该都已经有自带的中文字体了。Linux用户可以另外下载 [Fandol字体](http://ctan.org/pkg/fandol)^[http://ctan.org/tex-archive/fonts/fandol],它号称是免费的,不过我们也没太搞清楚它的来头。把那些.otf字体文件下载下来保存到`~/.fonts`文件夹下,然后命令行切换到那里,运行`fc-cache -fv`。

  36. # R代码段

  37. R代码用R Markdown的语法嵌入,即三个反引号开始一段代码```` ```{r} ````和三个反引号```` ``` ```` 结束一段代码:

  38. ```{r}
  39. options(digits = 4)
  40. fit = lm(dist ~ speed, data = cars)
  41. coef(summary(fit))
  42. b = coef(fit)
  43. ```

  44. 上面回归方程中的斜率是`r b[2]`,完整的回归方程为:$$ Y = `r b[1]` + `r b[2]`x$$

  45. 画图当然也是木有问题的啦,想画就说嘛,不说我怎么知道你想画呢?

  46. ```{r scatter, fig.cap='cars数据散点图以及回归直线。'}
  47. par(mar = c(4, 4, .1, .1), las = 1)
  48. plot(cars, pch = 19)
  49. abline(fit, col = 'red')
  50. ```

  51. 请不要问我为什么图浮动到下一页去了,这么初级的LaTeX问题问出来信不信我扁你。

  52. # 源代码控

  53. 这里提供的rticles模板可能由于种种原因不能满足客官的要求,LaTeX用户就是这样永无止境地调格式(唉,跟Word用户到底有啥区别呢)。若真是需要调整,你可以复制一份默认模板去改,如前面所说,本文档的模板是`rticles::ctex_template()`,它是一个文本文件。若熟悉LaTeX的话一看就明白,只不过里面有些Pandoc变量而已;若不熟悉LaTeX我们在这里说了也白说,花几天时间好好啃一啃LaTeX入门手册吧。

  54. 本文档所用的模板是从Pandoc默认LaTeX模板基础上做了少许改动而来的:https://github.com/yihui/pandoc-templates/blob/ctex/default.latex 具体改动从GIT提交消息日志中可以看到,主要就是去掉了mathspec包和hyperref包。

  55. # 小结

  56. 事实证明我们可以理直气壮地通过XeLaTeX将中文R Markdown转化为PDF文档,麻麻再也不用担心我的论文满屏幕都是反斜杠,朕养完小白鼠之后终于不必先折腾三个小时LaTeX再开始写实验报告了:打开RStudio,菜单File > New File > R Markdown,然后从模板中选择CTeX Documents,搞定。
复制代码

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 01:19