tikzDevice in R:将所有字体、字体大小和字体权重绝对设置为TeX文档字体大小



不到两周前,我在tex.stackexchange.com上发布了这个问题,没有人能够提出解决方案,所以我希望在这里重复这个问题不是问题。

我想用tikz在我的文档中插入R图。我想将所有字体、字体大小和字体权重设置为TeX文档的字体主体。我查阅了tikzDevice和par()的文档,但我找不到这样做的方法。附件是生成一些需要修复的图形的示例R-脚本:

library(tikzDevice)
tikz("/home/marius/Dokumenter/stk1110/oblig2/fig1.tex", width = 6, height = 5, pointsize=11)
# some data
menn = c(36.1,36.3,36.4,36.6,36.6,36.7,36.7,37.0,36.5,37.1)  
kvinner = c(36.6,36.7,36.8,36.8,36.7,37.0,37.1,37.3,36.9,37.4)
par(mfrow=c(2,3))
# first row
boxplot(menn)
qqnorm(menn)
qqline(menn)
hist(menn, freq=FALSE)
x = seq(36,37.4,0.01)
lines(x, 1/(2*pi*var(menn))^0.5*exp(-(x-mean(menn))^2/(2*var(menn))))
# second row
boxplot(kvinner)
qqnorm(kvinner)
qqline(kvinner)
hist(kvinner, freq=FALSE)
lines(x, 1/(2*pi*var(kvinner))^0.5*exp(-(x-mean(kvinner))^2/(2*var(kvinner))))
par(ps=1, cex=1, cex.main=111, cex.lab=111, cex.axis=111, cex.sub=111, font.main=1)
dev.off()

还有一份TeX文档:

documentclass[11pt,norsk,a4paper]{article}
usepackage[norsk]{babel}
usepackage[paper=a4paper, top=1in,bottom=1.1in,right=0.9in,left=0.9in]{geometry}
usepackage[utf8]{inputenc}
usepackage[makeroom]{cancel}
usepackage{amsmath,amsthm}
usepackage{newtxtext}
usepackage[T1]{fontenc}
usepackage{pgf, pgfplots}
usepackage{textcomp}
date{normalsize today}
begin{document}
I want all fonts in R plots to be exactly like this one.
begin{figure}[!htbp]
  begin{center}
    input{fig1.tex}
  end{center}
end{figure}
end{document}

我希望这能适用于R中的大多数不同绘图,如果不是全部的话,这样我就可以使用与文档正文完全相同的字体。即使是人物标题。你能提出解决方案吗?

tikz()将输出latex代码。如果您在latex文档中包含此代码,则字体应在字体等方面遵循此主文档的设置。

标题是粗体的,并非所有文本都有相同的大小,这不是tikz()的问题,而是plot()的问题,必须在那里处理(据我所知)。请参见此处的示例:调整基准R中的绘图标题和子标题。例如,您可能想要设置cex等:hist(kvinner, freq=FALSE, cex.main = 1, font.main = 1)。另请参阅:tikzDevice不带黑体的主标题

也可以通过设置tikz(..., standAlone = TRUE)创建独立地物,然后可以通过pdflatex test.tikz(或LuaTeX或XeLaTeX,带有一些额外设置)渲染该地物。

在这种情况下,您需要传入前导码的相关部分,例如通过options() 的包

options(tikzDocumentDeclaration = "\documentclass[11pt,norsk,a4paper]{article}n", 
        tikzLatexPackages = 
            c(getOption("tikzLatexPackages"), 
            "\usepackage[paper=a4paper, top=1in,bottom=1.1in,right=0.9in,left=0.9in]{geometry}n",
            "\usepackage[utf8]{inputenc}n")
    )  
tikz("fig1.tex", width = 6, height = 5, standAlone = TRUE)
...
dev.off()

我们需要在默认选项中添加新选项,而不是覆盖它们,这就是为什么我们使用getOption("tikzLatexPackages")进行连接。还要注意,您必须转义R字符串中的

最新更新