如何在python中格式化LaTeX字符串?

Val*_*age 10 python string format latex

我正在编写一个应用程序,其功能之一是生成LaTeX CV,所以我发现自己处于一种我喜欢的字符串状态

\begin{document}
\title{Papers by AUTHOR}
\author{}
\date{}
\maketitle
\begin{enumerate}

%%   LIST OF PAPERS
%%   Please comment out anything between here and the
%%   first \item
%%   Please send any updates or corrections to the list to
%%   XXXEMAIL???XXX

%\usepackage[pdftex, ...
Run Code Online (Sandbox Code Playgroud)

我希望填充动态信息,例如电子邮件地址.由于LaTeX本身的格式,使用{email}语法的.format不起作用,也不会使用带有%(email)语法的字典.编辑:特别是,像"\ begin {document}"这样的字符串(LaTeX中的一个命令)应该按字面意思保留,不能替换.format,像"%%"这样的字符串(LaTeX中的注释)也应该是离开,没有替换填充字典.这样做的合理方法是什么?

San*_*nta 12

为什么这不起作用?

>>> output = r'\author{{email}}'.format(email='user@example.org')
>>> print output
\author{email}
Run Code Online (Sandbox Code Playgroud)

编辑:使用双花括号来"转义"只有LaTeX才能理解的文字花括号:

>>> output = r'\begin{{document}} ... \author{{{email}}}'.format(
... email='user@example.org')
>>> print output
\begin{document} ... \author{user@example.org}
Run Code Online (Sandbox Code Playgroud)


JBe*_*rdo 5

您不能使用新format语法来避免转义{and }

那应该有效:

>>> a = r'''
\title{%(title)s}
\author{%(author)s}
\begin{document}'''

>>> b = a % {'title': 'My Title', 'author': 'Me, Of course'}
>>> print(b)

\title{My Title}
\author{Me, Of course}
\begin{document}
Run Code Online (Sandbox Code Playgroud)

您应该使用原始字符串r'something'以避免转义\\\.

PS:你应该看看txt2tags,这是一个 Python 脚本,用于将 t2t 格式的文本转换为 html、latex、markdown 等。检查源代码以了解这些转换是如何完成的。