我最近发现了knitr,我主要使用它来生成dev=tikz
的图,以便轻松进行乳胶排版。但是,我不了解如何设置块选项fig.width
和out.width
的一致性。
我的意思是,我知道第一个是R选项,而第二个是\includegraphics
附带的乳胶选项,但似乎fig.width
与out.width
相比过大然后线条非常薄,因为乳胶缩小了图片。另一方面,如果它太小,那么乳胶会拉伸它,而且一切都太大了。
基本上我也喜欢设置,我只选择out.width
,然后线条和文本的粗细与文档的文字大小一致。
我包含说明我的问题的MWE。另外我在第一个例子中设置fig.height
,否则图片比页面大,我也不太了解这一点。
热烈欢迎任何帮助!
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
<<setup, include=FALSE, cache=FALSE>>=
library(knitr)
options(formatR.arrow=TRUE,width=50)
opts_chunk$set(fig.path='figure/graphics-',
cache.path='cache/graphics-',
fig.align='center',
dev='tikz')
@
\begin{document}
\begin{figure}[!ht]
<<fig_1,fig.width=2, fig.height = 3,out.width = '\\textwidth',echo=FALSE>>=
x = seq(1,3,l=100)
plot(x,cos(x), type ="l", xlab = "x", ylab = "y")
@
\end{figure}
\begin{figure}[!ht]
<<fig_2,fig.width=10, out.width = '\\textwidth',echo=FALSE>>=
x = seq(1,3,l=100)
plot(x,cos(x), type ="l", xlab = "x", ylab = "y")
@
\end{figure}
\end{document}
答案 0 :(得分:6)
基本上不应在创建tikzpicture
后进行大小调整,因为它会与文本样式失去一致性。事实上,当设置了块选项cache=FALSE
时,out.width
没有效果,因为没有创建pdf输出。因此,必须为每个块指定fig.width
和fig.height
的精确度量单位。
经过对stackoverflow和Knitr网站的一些研究后,我发现了一个几乎相同的用户实验的技巧,即我不想关心实际尺寸但只考虑相对到\textwidth
和其他Latex变量:
paperwidth
,textwidth
对应于Latex 1英寸,例如A4纸是(w,h)=(8.3, 11.7)。fig.width = 0.5*paperwidth
例如这是一个MWE:
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{tikz}
<<setup, include=FALSE, cache=FALSE>>=
library(knitr)
options(formatR.arrow=TRUE,width=50)
opts_chunk$set(fig.path='figure/graphics-',
cache.path='cache/graphics-',
fig.align='center',
dev='tikz',
external=TRUE,
echo=FALSE
)
a4width<- 8.3
a4height<- 11.7
@
\begin{document}
\begin{figure}[!ht]
\centering
<<fig_1, fig.width = 0.4*a4width, fig.height = 0.2*a4height>>=
x = seq(1,3,l=100)
plot(x,cos(x), type ="l", xlab = "x", ylab = "y")
@
<<fig_2, fig.width = 0.2*a4width, fig.height = 0.5*a4height>>=
x = seq(1,3,l=100)
plot(x,cos(x), type ="l", xlab = "x", ylab = "y")
@
\caption{Test figure}
\end{figure}
\end{document}
答案 1 :(得分:1)
你可能不应该\begin{figure}
,因为knitr会为你包含它们。此外,当LaTeX根本没有调整数字大小时,我发现它是最好的,即它们的尺寸已经合适。这是一个例子,我将文本宽度设置为6英寸,图形宽度设置为相同的值。
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
<<setup, include=FALSE, cache=FALSE>>=
library(knitr)
options(formatR.arrow=TRUE,width=50)
opts_chunk$set(fig.path='figure/graphics-',
cache.path='cache/graphics-',
fig.align='center',
dev='tikz')
@
\usepackage[text={6in,9in},centering]{geometry}
\begin{document}
<<fig_1, fig.width=6, echo=FALSE>>=
x = seq(1,3,l=100)
plot(x,cos(x), type ="l", xlab = "x", ylab = "y")
@
<<fig_2, fig.width=6, out.width = '\\textwidth',echo=FALSE>>=
x = seq(1,3,l=100)
plot(x,cos(x), type ="l", xlab = "x", ylab = "y")
@
\end{document}