Rmarkdown转PDF时避免将(a)识别为列表的方法咨询
我之前在写Rmarkdown转PDF的文档时也碰到过这个头疼的问题,给你分享几个亲测有效的解决方案:
1. 用LaTeX命令生成带括号的标记
这是我最常用的方法,既能避免列表识别,又不会破坏RStudio的语法高亮。直接用LaTeX的\text命令把(a)包起来就行:
\text{(a)} This should be the second paragraph. \text{(b)} No more unwanted list formatting here.
编织成PDF后显示效果和直接写(a)完全一样,而且Rmd文件里的文本高亮会恢复正常,不会出现整段变色的情况。
2. 插入零宽度空格
在(a)前面加一个零宽度空格(Unicode U+200B),这个空格在PDF输出里完全看不见,但能打断Rmarkdown的列表解析逻辑。在RStudio里插入很简单:
- 按
Ctrl + Shift + U,输入200B再回车就能插入; - 或者从顶部菜单选「Insert」→「Special Character」,搜索「zero-width space」插入。
插入后的Rmd内容看起来和原来一样(空格不可见),但不会被识别为列表:
(a) This stays as a normal paragraph.
3. 调整Pandoc的列表识别规则(进阶)
如果你经常需要这种格式,可以修改Pandoc的参数,让它只在标记后跟两个及以上空格时才识别为列表。在YAML头部添加pandoc_args:
title: "Untitled" output: pdf_document: pandoc_args: ["--list-indent=2"]
这样设置后,(a)后面跟一个空格就是普通段落,跟两个空格才会变成列表项,灵活性很高:
(a) This is a normal paragraph (one space after) (a) This becomes a list item (two spaces after)
内容的提问来源于stack exchange,提问作者Eric Green
相关产品推荐
相关产品推荐

