首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在RMarkdown文档中使用时,tikzDevice不使用LaTeX前导码

在RMarkdown文档中使用时,tikzDevice不使用LaTeX前导码
EN

Stack Overflow用户
提问于 2019-06-16 22:21:52
回答 2查看 191关注 0票数 0

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

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

RMarkdown文件:

代码语言:javascript
复制
---
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))

代码语言:javascript
复制
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{文章}

代码语言:javascript
复制
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}

代码语言:javascript
复制
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-17 02:40:26

我想我想通了:

我的问题是,在使用RMarkdown时,选项tikzDocumentDeclarationtikzLatexPackages ...(几乎所有tikzDevice选项)都不是自动设置的。当您使用code时,会在拆分源文件中的标记和代码块的过程中设置tikzDevice的选项。对于RMarkdown,不需要提取LaTeX代码并与tikz一起使用,因为pandoc会在图形呈现后生成它。所以我们可以定义tikz。选项,或者像user2554330建议的那样使用块选项external=FALSE

示例minimal_knitr.Rnw:

代码语言:javascript
复制
\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}
票数 0
EN

Stack Overflow用户

发布于 2019-06-16 23:04:59

我不确定你是否真的想要你想要的东西。该图形将作为一个单独的文档生成,其中除了图形外不包含任何内容,该图形将呈现为PDF。scrartclarticle之间的区别对图来说应该不重要,它们对整个文档都很重要。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56619696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档