在R-Markdown + tikzDevice中绘制注释

时间:2019-06-01 13:33:22

标签: r-markdown knitr tikzdevice

我正在使用R-Markdown + Beamer准备演示文稿,并希望使用衬线字体对每个打印注释进行排版。

这是一个最小的示例(为了运行此示例,应将代码粘贴到.Rmd文件中并使用knitr进行编译):

---
title: An example
subtitle: which should work
output:
  beamer_presentation:
    theme: metropolis
header-includes:
  \usefonttheme[onlymath]{serif}
---

## A slide

```{r test, echo=FALSE, fig.height=3.2, fig.width=4, fig.align='center', dev='tikz', external=FALSE}
plot(2*pi*(0:19)/20, sin( 2*pi*(0:19)/20 ), xlab = '$x$', ylab='$\\sin(2\\pi x)$', pch=21, bg=rgb(0,.4,.7,.5), main='A plot using \\LaTeX', font.main=1)
```

在生成的绘图中,我期望轴的编号,绘图标题等中的字体注释使用衬线字体(与数学注释中显示的字体相同)进行排版,但实际输出是使用sans-serif字体。重要的是,文档的其余部分仍使用无衬线字体进行排版。

1 个答案:

答案 0 :(得分:1)

这是因为图是在单独的tex文件中编译的。要更改有关绘图的任何内容,您应该更改tikzLatexPackages选项。默认值为

options(
tikzLatexPackages = c(
    "\\usepackage{tikz}",
    "\\usepackage[active,tightpage]{preview}",
    "\\PreviewEnvironment{pgfpicture}",
    "\\setlength\\PreviewBorder{0pt}")
),
tikzXelatexPackages = c(
    "\\usepackage{tikz}\n",
    "\\usepackage[active,tightpage,xetex]{preview}\n",
    "\\usepackage{fontspec,xunicode}\n",
    "\\PreviewEnvironment{pgfpicture}\n",
    "\\setlength\\PreviewBorder{0pt}\n"
),
tikzLualatexPackages = c(
    "\\usepackage{tikz}\n",
    "\\usepackage[active,tightpage,psfixbb]{preview}\n",
    "\\usepackage{fontspec,xunicode}\n",
    "\\PreviewEnvironment{pgfpicture}\n",
"\\setlength\\PreviewBorder{0pt}\n")
)

因此将\usefonttheme[onlymath]{serif}添加到该第一个选项应该可以做到。

您可以在tikzDevice手册的第6页上找到更多信息。