R tikzdevice:如何使用无衬线字体

3
我在使用 R 中的 ggplot 创建图表,使用 tikzdevice 将其保存,然后使用 latex 在较大的文档中编译它们。
当我创建一个非常简单的图表时,例如:
require(ggplot2)
require(tikzDevice)

tikz("test.tikz", height = 4, width = 4)
ggplot(data = data.frame(x = c(1:3), y = c(1:3)), aes(x=x, y=y)) +
geom_point() +
theme(text = element_text(family = "sans", face = "bold"))
dev.off()

虽然我可以使用theme中的element_text选项更改大小和字体,但更改字体族不起作用。也就是说,导出的tikz文件不包含无衬线字体命令。

我该如何在导出的图形中使用无衬线字体来显示文本(特别是坐标轴标签)?

1个回答

0

tikz() 会输出 LaTeX 代码。这些字体将会是在这个 LaTeX 文档中指定的(这非常好,因为可以得到一致的外观)。

要创建一个带有无衬线字体的独立图形,然后通过 pdflatex test.tikz 渲染,可以按以下方法实现:

require(ggplot2)
require(tikzDevice)
options(tikzLatexPackages = 
      c(getOption("tikzLatexPackages"), 
        "\\renewcommand{\\familydefault}{\\sfdefault}\n")
      )

tikz("test.tikz", height = 4, width = 4, standAlone = TRUE)
   ggplot(data = data.frame(x = c(1:3), y = c(1:3)), aes(x=x, y=y)) +
   geom_point()
dev.off()

我们通过options传入额外的文本,以便写入前导。我们需要将新选项添加到默认选项中,而不是覆盖它们,这就是为什么我们要使用getOption("tikzLatexPackages")进行连接的原因。还要注意,在R字符串中必须转义\

第二个重要部分是如果我们想要单独渲染图形而不将其作为较大文档的一部分,则设置standAlone = TRUE

如何在latex文档中设置字体我仍然觉得有些神秘。我的解决方案基于this question。但是,您可以通过options传递其他latex命令以不同的方式设置字体。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接