使用Pandoc将Markdown转换为LaTeX/Beamer时,如何手动终止Block块的范围?
Pandoc将Markdown转换为LaTeX/Beamer时,如何手动终止Block块的范围?
我太懂这种烦恼了——用Markdown写Beamer幻灯片时,默认把二级标题映射成Block的规则,确实会让Block自动覆盖到下一个同级别或更高等级标题前的所有内容,根本没法手动截断。你试过的空段落、pause都属于Block内部的元素,自然没法终止它;空标题反而会新建一个Block,完全不是你要的效果。
给你两个实用的解决方案,能精准控制Block的范围:
方法一:使用Pandoc自定义Div语法(最推荐)
Pandoc支持用自定义Div来直接生成Beamer的Block,这种方式能完全手动控制Block的起始和结束位置,完美解决你的问题。
示例Markdown代码:
# Example slide Here is an example slide. ::: {.block title="Block"} This should be within the block. ::: This shouldn't be within the block.
转换后的LaTeX输出(关键部分):
\begin{frame}{Example slide} \protect\hypertarget{example-slide}{} Here is an example slide. \begin{block}{Block} This should be within the block. \end{block} This shouldn't be within the block. \end{frame}
可以看到,只有Div包裹的内容会进入Block,后面的文本完全独立,正好符合你的需求。
方法二:用“隐形”的低级标题截断
如果你不想用Div语法,也可以加一个三级标题(级别比二级低),然后通过Pandoc的属性让它不显示、不生成新Block,以此截断原Block的范围。
示例Markdown代码:
# Example slide Here is an example slide. ## Block This should be within the block. ### {.unnumbered .invisible} This shouldn't be within the block.
这里的.invisible类会让这个三级标题在Beamer中完全不可见,同时因为它是更低级的标题,会终止上一个二级标题对应的Block范围,后面的内容就不会被包含进去了。不过这个方法不如Div直观,推荐优先用第一种。
备注:内容来源于stack exchange,提问作者An Automaton Adrift
相关产品推荐
相关产品推荐

