我有一个包含单个图的文档。我想在图中knitr
使用 的原始字体,但轴标签除外,轴标签应来自 Latin Modern。我可以通过包将Latin Modern 用于图中的所有字体。但是当用于绘图的数据集非常大时,编译它需要太多时间。R
tikzDevice
R
或者,我可以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}
给出这个: