在 knitr 中,如何使用 Latex 中的 \textwidth 设置图形宽度

In knitr, how to set figure width with \textwidth from Latex

我尝试了以下方法来使用 knitr 和 LaTeX 设置图形宽度:

\documentclass{paper}
\begin{document}
<<fig.width=\textwidth>>
x = runif(1000)
plot(x)
@
\end{document}

但是,我收到以下错误:

<to be read again> 
                >
l.54 <<fig.width=\textwidth>
                        >

我做错了什么?

fig.width 的值需要是 R 在设置图形设备时可以使用的值。它不知道 \textwidth 会变成什么,所以这是行不通的。您需要固定一个值,通常采用以英寸为单位的尺寸(但对于某些设备可能是像素)。

\textwidth 可以在 LaTeX 排版图形时使用,将图形调整为请求的大小。要使其成为默认使用

\setkeys{Gin}{width=\textwidth}

在 R 代码块之外。 (假设您在 LaTeX 中使用 graphicx 包;我忘记 knitr 是否自动执行此操作。)

fig.width 选项应该是数字,用于设置图形本身的大小。要控制图形在 LaTeX 中的显示方式,请使用 out.widthout.height 选项。这些选项必须是字符串,并且您需要转义反斜杠。

区块

<<plot1, fig.width = 5, fig.height = 5, out.width = "0.48\textwidth">>=
@

将生成一个 5 英寸 x 5 英寸的图形,该图形将占最终文档文本宽度的 48%。也就是说,文件plot1-1.pdf是一个五英寸乘五英寸的图形,LaTeX代码

\includegraphics[width=0.48\textwidth]{figure/plot1-1}

将被放置在生成的 .tex 文件中。