Как отформатировать строку LaTeX в python? - PullRequest
10 голосов
/ 13 июля 2011

Я пишу приложение, часть функций которого заключается в создании резюме LaTeX, поэтому я нахожусь в ситуации, когда у меня есть строки типа

\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 .format с синтаксисом {email} не будет работать и не будет использовать словарь с синтаксисом% (email) s.Редактировать: в частности, строки типа "\ begin {document}" (команда в LaTeX) должны быть оставлены буквально такими, как есть, без замены из .format, а также строки типа "%%" (комментарий в LaTeX) также должны бытьосталось, без замены из заполненного словаря.Какой разумный способ сделать это?

Ответы [ 2 ]

12 голосов
/ 13 июля 2011

Почему это не сработает?

>>> output = r'\author{{email}}'.format(email='user@example.org')
>>> print output
\author{email}

edit : используйте двойные фигурные скобки, чтобы "убежать" от буквенных фигурных скобок, которые понимает только LaTeX:

>>> output = r'\begin{{document}} ... \author{{{email}}}'.format(
... email='user@example.org')
>>> print output
\begin{document} ... \author{user@example.org}
3 голосов
/ 13 июля 2011

Вы не можете использовать новый синтаксис 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 и т. Д. Проверьте исходный код, чтобы увидеть, как выполняются эти преобразования.

...