Rmarkdown,绘图标题字体为拉丁现代字体

Rmarkdown,绘图标题字体为拉丁现代字体

我有一个包含单个图的文档。我想在图中knitr使用 的原始字体,但轴标签除外,轴标签应来自 Latin Modern。我可以通过包将Latin Modern 用于图中的所有字体。但是当用于绘图的数据集非常大时,编译它需要太多时间。RtikzDeviceR

或者,我可以tikzDevice仅将其用作标签和情节标题吗?

摘要代码如下:

<<setup, include=FALSE, cache=FALSE>>=
library(knitr)
library(tikzDevice)
#opts_chunk$set(dev = 'tikz') # I don't want to use tikzDevice.
opts_chunk$set(dev.args=list(pointsize=12)) 
@

<<tikzfigure, echo = FALSE, fig.width = 4, fig.height = 4, fig.align = 'center', fig.pos = 'ht', tidy = TRUE>>=

plot(1:5,1:5,xlab=paste0("$\\sum \\beta_i$"))
@

输出:

在此处输入图片描述

情节应该保持不变,除了x label应该

在此处输入图片描述

(拉丁现代字体。)

我怎样才能实现这个目标?

(注意:我也在 stackoverflow 上问过这个问题,但我认为这里才是正确的地方。我不知道这是否是个问题……)

答案1

您可以使用latex2exp库来解析LaTeX标签中的代码。确保您拥有包含斜体 beta 的字体。我使用了 CM-Unicode。您可以使用 unicode 表示\u03B2或字符 来访问字形β

knitr以下是(.Rnw文件 )中的完整 MWE :

\documentclass[border=3pt]{standalone}

<<setup, include=FALSE, cache=FALSE>>=
rm(list = ls())
library(knitr)
library(latex2exp)
library(showtext)
font_add("CMUSerif-RomanSlanted",regular="c:/windows/fonts/cmunsl_0.ttf")
#library(tikzDevice)
#opts_chunk$set(dev = 'tikz') # I don't want to use tikzDevice.
opts_chunk$set(dev.args=list(pointsize=12))
@

\begin{document}
<<chunk1, echo = FALSE, fig.width = 4, fig.height = 4>>=
plot(1:5,1:5,xlab=TeX("$\\sum \\textit{\u03B2_i}$"))
plot(1:5,1:5,xlab=TeX("$\\sum \\textit{\u03B2_i}$",list(family="CMUSerif-RomanSlanted")))
plot(1:5,1:5,xlab=TeX("$\\sum \\textit{β_i}$",list(family="CMUSerif-RomanSlanted")))
@
\end{document}

给出这个:

在此处输入图片描述

相关内容