0

我想在 RMarkdown 中使用 tikz 作为图形设备,我希望它包含生成的 LaTeX 序言。

过去,我已经在 knitr 文档中使用了 tikzDevice。tikzDevice 生成的 tex 文件通常包含我的 knitr/LaTeX 文档中的整个序言。当我将它与 RMarkdown 一起使用时,我得到了标准的序言(见下文)。

RMarkdown 文件:

---
title: "Title"
author: "Me"
fontsize: 12pt
documentclass: scrartcl
output:
  bookdown::pdf_document2:
    toc: true
    fig_caption: true
    keep_tex: true
---

# Introduction

```{r plot, dev="tikz"}
plot(rnorm(50))
``

生成的 tex 文件(plot-1.tex)的开头:

% Created by tikzDevice version 0.12.3 on 2019-06-16 16:09:40
% !TEX encoding = UTF-8 Unicode
\documentclass[10pt]{article}

plot-1.tex 的期望/预期开始:

% Created by tikzDevice version 0.12.3 on 2019-06-16 16:09:40
% !TEX encoding = UTF-8 Unicode
\documentclass[12pt]{scrartcl}
4

2 回答 2

0

我不确定你是否真的想要你所要求的。该图将作为一个单独的文档生成,除了该图之外什么都不包含,该图将呈现为 PDF。两者之间的差异scrartclarticle数字无关紧要,它们对整个文档很重要。

但是如果你真的需要那个文档类,你可以通过options(tikzDocumentDeclaration = "\\documentclass[12pt]{scrartcl}")在文档的早期指定一个 R 块来获得它。当我这样做时,我可以在源代码中看到它有效,但输出看起来与默认类几乎相同。也可以使用块选项来指定它,但这样做不太可能有任何优势。

于 2019-06-16T15:04:59.303 回答
0

我想我想通了:

我的问题是,在使用 RMarkdown 选项tikzDocumentDeclaration时,tikzLatexPackages...(几乎所有 tikzDevice 选项)都没有自动设置。当您使用 knitr 时,tikzDevice 的选项会在从源文件中拆分标记和代码块的过程中设置。使用 RMarkdown,没有 LaTeX 代码可以提取并与 tikz 一起使用,因为 pandoc 在渲染图形后生成它。tikz因此,可以手动定义... 选项,也可以使用建议的user2554330external=FALSE之类的块选项。

示例 minimum_knitr.Rnw:

\documentclass[fontsize=12pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\begin{document}

<<r plot, dev='tikz', echo=FALSE>>=
plot(rnorm(50))
@

\end{document}
于 2019-06-16T18:40:26.007 回答