我想在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}
答案 0 :(得分:0)
我不确定您是否真的想要您要的东西。该图将作为单独的文档生成,除该图外将不包含任何其他内容,该图将呈现为PDF。 scrartcl
和article
之间的差异对于数字而言并不重要,对于整个文档而言至关重要。
但是,如果确实需要该文档类,则可以通过在文档的早期R块中指定options(tikzDocumentDeclaration = "\\documentclass[12pt]{scrartcl}")
来获得它。当我这样做时,我可以在源代码中看到它的工作原理,但是输出看起来与默认类几乎相同。也可以使用块选项进行指定,但是这样做没有任何好处。
答案 1 :(得分:0)
我想我明白了:
我的问题是,在使用RMarkdown时,选项tikzDocumentDeclaration
,tikzLatexPackages
...(tikzDevice的几乎所有选项)没有自动设置。使用knitr时,将在从源文件中拆分标记和代码块的过程中设置tikzDevice的选项。使用RMarkdown时,没有提取和使用tikz的LaTeX代码,因为pandoc在渲染图形后生成它。因此,可以手动定义tikz
...选项,也可以像建议的user2554330一样使用块选项external=FALSE
。
示例minimal_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}