我想在RMarkdown中使用tikz作为图形设备,并且我希望它包含生成的LaTeX前导。
在过去,我已经在within文档中使用了tikzDevice。由tikzDevice生成的tex文件通常包含我的document /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"}绘图(rnorm(50))
Beginning of generated tex file (plot-1.tex):
```javascript由tikzDevice version 0.12.3创建于2019-06-16 16:09:40
% !TEX编码= UTF-8 Unicode
\documentclass10pt{文章}
Desired/expected beginning of plot-1.tex:
```javascript由tikzDevice version 0.12.3创建于2019-06-16 16:09:40
% !TEX编码= UTF-8 Unicode
\documentclass12pt{scrartcl}
发布于 2019-06-17 02:40:26
我想我想通了:
我的问题是,在使用RMarkdown时,选项tikzDocumentDeclaration、tikzLatexPackages ...(几乎所有tikzDevice选项)都不是自动设置的。当您使用code时,会在拆分源文件中的标记和代码块的过程中设置tikzDevice的选项。对于RMarkdown,不需要提取LaTeX代码并与tikz一起使用,因为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}发布于 2019-06-16 23:04:59
我不确定你是否真的想要你想要的东西。该图形将作为一个单独的文档生成,其中除了图形外不包含任何内容,该图形将呈现为PDF。scrartcl和article之间的区别对图来说应该不重要,它们对整个文档都很重要。
但是,如果您确实需要该document类,那么可以通过在文档的早期R块中指定options(tikzDocumentDeclaration = "\\documentclass[12pt]{scrartcl}")来获得它。当我这样做时,我可以在源代码中看到它是有效的,但输出看起来与使用默认类时几乎相同。也可以使用块选项来指定这一点,但这样做不太可能有任何好处。
https://stackoverflow.com/questions/56619696
复制相似问题