1.6 PDF文档
在输出pdf文档之前,得先确保你已经安装了tinytex
包,详见第1.1节。
1.6.1 中文文档
一般而言,大家会在pdf中使用中文和英文。如果你在元数据处将输出格式设定为output: pdf_document
,很遗憾,即使你在文档中写有中文也不会正常输出。
对此,你需要下载rticles
包。下载完成后,在新建rmarkdown文件时选中From Template
,从中找到CTeX Documents
模板即可。

图 1.17: 中文文档模板
新建文件中已经将元数据设置好了,之后你只要根据需要适当修改即可。
1.6.3 图与表
在元数据处,可以预先设置一些关于图片的参数。
fig_width/fig_height
用于控制图片的宽度与高度,默认为6.5x4.5。
fig_crop
控制是否启用
pdfcrop
,若系统中有,则默认为true
。官方文档介绍可通过
tinytex::tlmgr_install("pdfcrop")
进行下载,并需配合ghostscript
使用。这一块我并不了解,仅仅是将
pdfcrop
和ghostscript
下载过来罢了,不知道具体的使用方法。fig_caption
在渲染图片时是否生成标题,默认为
true
。dev
用于渲染图片的图形设备,默认为
pdf
。即使设置了
dev: png
,在正文中导入.jpg
图片也能正常显示。
output:
rticles::ctex:
fig_width: 7
fig_height: 6
fig_caption: true
dev: pdf
fig_crop: true
除了在元数据处设置一些参数,还可以再代码块中进行设置,这在第1.3.9节已经介绍过了。这里重新提及仅针对latex的相关设置。
out.width/out.height
控制图片在输出文档中的宽与高,会进行适当放缩(与物理意义上的
fig.width
与fig.height
略有不同)。对于latex输出,可以设置为0.8\\linewidth
、3in
、8cm
、40%
(等价于0.4\\linewidth
)。out.extra
对于latex输出,
out.extra
表示的额外参数将会被输入到\includegraphics[]
中,例如out.extra='angle=90'
表示图片旋转90度。resize.width/resize.height
参数值将会被输入到
\resizebox{}{}
中,用于调整TikZ图形的大小。fig.env
设置图片环境,例如
fig.env = 'marginfigure'
在latex中表示\begin{marginfigure}
。这个选项要求与fig.cap
配合使用,即图片得有标题。很遗憾,当
output
为ctex
时会报错,而当output
为pdf_document
时则正常,不知原因。fig.scap
短标题,其参数值会被输入到
\caption[]
中,通常会在“List of Figures”中展示。在元数据处设置
lof: true
就可以召唤出插图清单了。注意lof: true
不在output
里面,而是与它同一个级别。fig.lp
将被输入到
\label{}
中的图片标签前缀。fig.pos
用于
\begin{figure}[]
的图片位置参数,可选值为'H'
(放置在当前位置,即尽可能靠近代码块)、't'
(放置在页面顶部)、'b'
(放置在页面底部)、'p'
(放置在单独一面)、'!H'
(强制放置在当前位置),默认为''
。fig.ncol、fig.subcap、fig.sep
而对于表格,和html文档类似,可在元数据处指定表格的打印形式,可选值有default
、kable
、tibble
、和自定义函数。
1.6.4 语法高亮
同第1.5.3节中的语法高亮。