我正在编写一个应用程序,其中一部分功能是生成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, ...
我想填充动态信息,例如电子邮件地址。由于LaTeX本身的格式,使用{email}语法的.format不起作用,也不会使用带有%(email)语法的字典。编辑:特别是,像“\ begin {document}”这样的字符串(LaTeX中的一个命令)应该按字面意思保留,不能替换.format,像“%%”这样的字符串(LaTeX中的注释)也应该是离开,没有替换填充字典。这样做的合理方法是什么?
答案 0 :(得分:12)
为什么这不起作用?
>>> output = r'\author{{email}}'.format(email='user@example.org')
>>> print output
\author{email}
编辑:使用双花括号来“转义”只有LaTeX才能理解的文字花括号:
>>> output = r'\begin{{document}} ... \author{{{email}}}'.format(
... email='user@example.org')
>>> print output
\begin{document} ... \author{user@example.org}
答案 1 :(得分:3)
您不能使用新的format
语法来避免转义{
和}
。
这应该有效:
>>> 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}
您应该使用原始字符串r'something'
,以避免将\
转义为\\
。
PS:您应该查看txt2tags,一个Python脚本,将t2t格式的文本转换为html,latex,markdown等。检查源代码,看看这些转换是如何完成的。