Markdown 如何在编辑标记时强制在latex文件中将%comment标记作为注释传递
将标记文件转换为latex文件时,pandoc通过自动转义所有%字符(Markdown 如何在编辑标记时强制在latex文件中将%comment标记作为注释传递,markdown,knitr,r-markdown,pandoc,Markdown,Knitr,R Markdown,Pandoc,将标记文件转换为latex文件时,pandoc通过自动转义所有%字符(\%),确保所有%字符保持为常规字符。我的工作流要求我将%TC:ignore和%TC:endignore标记传递到标记,以便我可以使用texcount实用程序。有没有办法强迫%作为普通的%标志通过而不被转义我看到两种解决方法 我解释了第一个问题。如果在环境中,我们可以利用pandoc的能力传递未加工的乳胶。我们定义了一个不做任何事情的新环境,并在那里传递注释。这很难看,但它能起作用: --- header-includes:
\%
),确保所有%字符保持为常规字符。我的工作流要求我将%TC:ignore
和%TC:endignore
标记传递到标记,以便我可以使用texcount
实用程序。有没有办法强迫%
作为普通的%
标志通过而不被转义我看到两种解决方法
我解释了第一个问题。如果在环境中,我们可以利用pandoc的能力传递未加工的乳胶。我们定义了一个不做任何事情的新环境,并在那里传递注释。这很难看,但它能起作用:
---
header-includes:
- \newenvironment{dummy}{}{}
---
\begin{dummy}
%TC:ignore
\end{dummy}
第二种方法是编写一个过滤器,将一些字符串转换为RawInline
,类型为latex
,而不是实际的字符串
#!/usr/bin/env python
from pandocfilters import toJSONFilter, RawInline
def comments(k, v, f, meta):
if k == 'Str' and v in ['%TC:ignore','%TC:endignore']:
return RawInline('latex', v)
if __name__ == "__main__":
toJSONFilter(comments)
将其另存为comments.py
并作为pandoc myfile.md-o myfile.tex--filter comments.py
运行。您需要一个python安装和库pandocfilters
(pip安装pandocfilters
应该可以)
此解决方案的优点是可以保持输入文件的干净。但是您需要在过滤器中添加所有希望以这种方式转义的字符串,如果您有各种类型的注释,这可能会很麻烦