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)
您不能使用新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 等。检查源代码以了解这些转换是如何完成的。