0

我正在使用 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)
```

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

4

1 回答 1

2

那是因为这些图是在单独的 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 页找到更多信息。

请注意,也可以包含 tex 代码而不是预编译代码。尽管过去我对这种方法有一些问题。

于 2019-06-01T17:25:07.200 回答