如何在编辑markdown时强制将%注释标记作为注释传递到latex文件中

时间:2016-02-16 21:48:08

标签: markdown knitr r-markdown pandoc

将markdown文件转换为latex文件时,pandoc会确保所有%字符保留为常规%字符,方法是自动转义它们(\%)。我的工作流程要求我将%TC:ignore%TC:endignore标记传递给降价标记,以便我可以使用texcount实用程序。有没有办法迫使%作为普通的%标志而不被逃脱

1 个答案:

答案 0 :(得分:2)

我看到两个解决方法。

我解释了another answer中的第一个。如果它们在环境中,我们可以使用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安装和库pandocfilterspip install pandocfilters应该这样做)。

此解决方案的优点是可以保持输入文件的清洁。但是你需要在过滤器中添加你想要以这种方式转义的所有字符串,如果你有各种类型的注释,这可能很麻烦。