【问题标题】:Plot annotation in R-Markdown + tikzDevice在 R-Markdown + tikzDevice 中绘制注释
【发布时间】:2019-06-01 13:33:22
【问题描述】:

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

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

【问题讨论】:

    标签: r-markdown knitr tikzdevice


    【解决方案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 页找到更多信息。

    请注意,也可以包含 tex 代码而不是预编译代码。虽然过去我在使用这种方法时遇到了一些问题。

    【讨论】:

      猜你喜欢
      • 2014-02-27
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      • 2021-10-11
      • 2023-04-02
      • 2021-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多