![为整个 LaTeX 文档中的所有 R 代码块和图表设置全局选项](https://linux22.com/image/475520/%E4%B8%BA%E6%95%B4%E4%B8%AA%20LaTeX%20%E6%96%87%E6%A1%A3%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%20R%20%E4%BB%A3%E7%A0%81%E5%9D%97%E5%92%8C%E5%9B%BE%E8%A1%A8%E8%AE%BE%E7%BD%AE%E5%85%A8%E5%B1%80%E9%80%89%E9%A1%B9.png)
在 Overleaf 上的 LaTeX 文档中制作几个 R 图。每个 R 图都放置在一个figure
环境中:
\begin{figure}[h]
\centering
<<>>=
curve(dnorm(x))
@
\caption{normalPlot}
\label{fig:label}
\end{figure}
问题:
- 每个图的图边距都太宽。需要减少周围的空白,而不是像
par(mar=c(1,1,1,1)
每个块那样通过手动代码。 - 任何块中均无代码回显。需要
echo=F
跨块进行全局切换。
尝试使用dev.args
但 Overleaf 可能还不支持它。LaTeXdev.args
也有一些错误;knitr 可能已经修复了它们但也许它们没有在 Overleaf 的存储库中更新。
有什么解决办法吗?还有其他方法吗?
答案1
\documentclass[twocolumn]{article}
\usepackage{lipsum,geometry}
\begin{document}
<<options,include=FALSE>>=
knitr::opts_chunk$set(echo = FALSE, fig.dim = c(5, 3), fig.pos="h",out.width = "106%", dev='tikz')
@
See fig. \ref{labelA} and \ref{labelB}. \lipsum[1][1]
<<figA, fig.cap="normalPlot \\label{labelA} " >>=
curve(dnorm(x))
@
\lipsum[2][1-3]
<<figB, fig.cap="simplePlot \\label{labelB} " >>=
plot(jitter(1:40,factor=5,amount=5),xlab="foo",ylab="bar")
@
\lipsum[3-8]
\end{document}