我正在修补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}
输入包含在Shaded
和Highlighting
中,可以在tex文件的前导码中修改。但是,输出仅包含在标准verbatim
环境中,在文件中重新定义会有问题(因为重新定义会使其他部分混乱)。如何设置我的配置以将输出包装在我可以重新定义的环境中?或者可能只是将输入和输出保存在同一环境中?
我的_output.yml
文件看起来像这样(或多或少是从Yihui复制的)
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{", "}{}"]
如何更改代码以添加包装器或只重新定义输出块的格式?
答案 0 :(得分: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前言中定义自定义环境。