1

我正在修补bookdown并生成 html 和 pdf 输出。

对于 html 输出,渲染的R输入和输出放置在灰色背景的块中。对于 pdf 输出,输入块被突出显示,但输出不是。例如下面的源代码

Blah blah blah

```{r, message=FALSE}
library(mosaic)           # Load mosiac-pakken
tally(~ Smoke, data=fev)  # Optæl Smoke
```

Blah blah blah

导致这个 tex 输出:

\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{library}\NormalTok{(mosaic)           }\CommentTok{# Load mosiac-pakken}
\KeywordTok{tally}\NormalTok{(}\OperatorTok{~}\StringTok{ }\NormalTok{Smoke, }\DataTypeTok{data=}\NormalTok{fev)  }\CommentTok{# Optæl Smoke}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
Smoke
  0   1 
589  65 
\end{verbatim}

输入包含在tex 文件的序言中Shaded,并且Highlighting可以对其进行修改。但是,输出仅包装在标准verbatim环境中,在文件中重新定义会出现问题(因为重新定义会弄乱其他部分)。如何设置我的配置以将输出包装在我可以重新定义的环境中?或者可能只是将输入和输出包装在同一个环境中?

我的_output.yml文件是这样的(或多或少是从一辉抄来的)

bookdown::pdf_book:
  highlight: zenburn
  includes:
    in_header: latex/preamble.tex
    before_body: latex/before_body.tex
    after_body: latex/after_body.tex
  keep_tex: yes
  dev: "cairo_pdf"
  latex_engine: xelatex
  citation_package: natbib
  template: null
  pandoc_args: --chapters
  toc_depth: 3
  toc_unnumbered: no
  toc_appendix: yes
  quote_footer: ["\\VA{", "}{}"]

如何更改代码以添加包装器或重新定义输出块的格式?

4

1 回答 1

0

bookdown 0.4开始,您可以使用全局选项bookdown.post.latex对 LaTeX 输出进行后处理。在您的情况下,它将类似于:

options(bookdown.post.latex = function(x) {
  # x is the content of the LaTeX output file
  gsub('^\\\\(begin|end)\\{verbatim\\}$', '\\\\\\1{YOUR_ENVIRONMENT}', x)
})

然后在您的 LaTeX 序言中定义自定义环境。

于 2017-07-13T06:01:10.297 回答