如何在RMarkdown中为LaTeX TikZ环境动态设置标题?
解决方案
1. 修改LaTeX环境定义(template.tex)
在template.tex中,将原有的Example环境改为带可选参数的版本,同时绑定全局默认标题:
% 从YAML全局变量定义默认标题命令 \def\example{$example$} % 重新定义带可选参数的Example环境 \newenvironment{Example}[1][\example] {\begin{bclogo}[logo=\bctrombone, noborder=true, couleur=lightgray!50]{#1} \parindent0pt} {\end{bclogo}}
- 可选参数
[1][\example]表示:调用环境时不传参数则用全局默认标题,传参数则用自定义标题; - 原环境中的
$example$替换为#1,用于接收传入的标题参数。
2. 调整pandoc模板的block处理逻辑(template.tex)
找到template.tex中处理block的代码段(通常以$if(block)$开头),修改为支持传递title参数:
$if(block)$ $for(block)$ $if(block.title)$ \begin{$block.type$}{$block.title$} $else$ \begin{$block.type$} $endif$ $block.content$ \end{$block.type$} $endfor$ $endif$
这段逻辑会自动识别block的title参数,将其传递给LaTeX环境;无参数时则使用全局默认值。
3. 保留全局默认标题配置(index.Rmd)
继续在index.Rmd的YAML中维护全局标题,作为块的默认选项:
--- title: A Title ... # Boxes example: An Example chaptersummary: In a Nutshell ---
4. 在内容中使用自定义标题的块(content.Rmd)
现在可以直接给每个Example块指定自定义标题:
## Some Chapter ```{block, type='Example', title = "Some Different Title"} The ideal.
Some Other Chapter
The ideal.
- 带`title`参数的块会使用自定义标题; - 不带`title`参数的块自动使用YAML中定义的全局默认标题。 ### 额外:临时修改全局默认标题 如果需要在文档某部分临时替换所有无标题`Example`块的默认标题,可在Rmd中插入LaTeX命令: ```latex \renewcommand{\example}{临时全局标题}
之后的无标题Example块都会使用这个新默认值。
内容的提问来源于stack exchange,提问作者AFriendOfJamis
相关产品推荐
相关产品推荐

