格式化 bookdown 的 pdf 输出块
Formatting pdf-output chunks of bookdown
我正在修改 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
文件是这样的(多多少少是从易慧那里抄来的)
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{", "}{}"]
如何更改代码以添加包装器或仅重新定义输出块的格式?
自 bookdown 0.4 起,您可以使用全局选项 bookdown.post.latex
来 post 处理 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 序言中定义自定义环境。
我正在修改 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
文件是这样的(多多少少是从易慧那里抄来的)
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{", "}{}"]
如何更改代码以添加包装器或仅重新定义输出块的格式?
自 bookdown 0.4 起,您可以使用全局选项 bookdown.post.latex
来 post 处理 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 序言中定义自定义环境。