在knitr和Sweave中使用fig.cap的LaTeX错误

Dav*_*ell 3 latex figure sweave knitr

在knitr运行后,以下代码在LaTeX中导致"Runaway argument"错误:

\documentclass{article}

\begin{document}

<<fig.cap="This causes \\texttt{problems.}">>=
plot(1:10,10:1)
@

\end{document}
Run Code Online (Sandbox Code Playgroud)

这个原因并不明显,所以我希望这可以帮助那些可能遇到这个问题的人.

Dav*_*ell 5

问题出现的原因是,如"knitr中的图形的力量"中所述

通过在第一个句点或冒号或分号截断标题,从标题中提取默认的短标题.

因此,通过编织上述示例产生的.tex文件包含以下内容

\caption[This causes \texttt{problems]{This causes \texttt{problems.}
Run Code Online (Sandbox Code Playgroud)

解决方案是提供一个不会过早截断的短标题,例如,

\documentclass{article}

\begin{document}

<<fig.cap="This causes \\texttt{no problems.}", fig.scap="This causes \\texttt{no problems.}">>=
plot(1:10,10:1)
@

\end{document}
Run Code Online (Sandbox Code Playgroud)

很多,非常感谢谢毅辉大力提高我的生产力和代码的可重用性!