2011-07-12 35 views
8

Tôi đang viết một ứng dụng, một phần của chức năng mà là để tạo LaTeX CV, vì vậy tôi tìm thấy bản thân mình trong một tình huống mà tôi có chuỗi nhưLàm thế nào để định dạng một chuỗi LaTeX trong python?

\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, ... 

mà tôi muốn cư với thông tin năng động, ví dụ địa chỉ e-mail. Do định dạng của bản thân LaTeX, .format với cú pháp {email} sẽ không hoạt động và sẽ không sử dụng từ điển nào với cú pháp% (email). Chỉnh sửa: đặc biệt, các chuỗi như "\ begin {document}" (một lệnh trong LaTeX) nên được để nguyên theo đúng nghĩa đen, mà không cần thay thế từ .format và các chuỗi như "%%" (chú thích trong LaTeX) cũng phải là trái, mà không cần thay thế từ một từ điển populating. Một cách hợp lý để làm điều này là gì?

+0

Hoạt động ở đây theo giả định rằng tôi không thực sự muốn phải nhập %% cho% ở mọi nơi ... –

+0

Bạn đang sử dụng phiên bản Python nào? str.format() là mới cho 2.6 – Usagi

+0

Hiện đang sử dụng 2.7 –

Trả lời

9

Tại sao tính năng này không hoạt động?

>>> output = r'\author{{email}}'.format(email='[email protected]') 
>>> print output 
\author{email} 

chỉnh sửa: Sử dụng đôi dấu ngoặc nhọn để "thoát" dấu ngoặc nhọn đen mà chỉ LaTeX hiểu:

>>> output = r'\begin{{document}} ... \author{{{email}}}'.format(
... email='[email protected]') 
>>> print output 
\begin{document} ... \author{[email protected]} 
+0

out = r '' ' ...: \ begin {document} ...: {{email}}' '' định dạng (email='[email protected] ') ---- -------------------------------------------------- --------------------- KeyError Traceback (cuộc gọi gần đây nhất) /home/valkyrie/projects/invenio/modules/websearch/lib/ in () KeyError: 'document' –

+1

LaTeX chứa những thứ có dấu ngoặc nhọn cần được giữ nguyên chưa sửa đổi (bao gồm cả các dấu ngoặc nhọn). –

+0

Vì vậy, sử dụng dấu ngoặc kép cho những người (về cơ bản là trốn thoát chúng. – Santa

2

Bạn không thể sử dụng format cú pháp mới để tránh thoát những {}.

Nên hoạt động:

>>> 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} 

Bạn nên sử dụng dây thô r'something' để tránh thoát \ như \\.

PS: Bạn nên xem txt2tags, một tập lệnh Python để chuyển đổi văn bản được định dạng t2t thành html, latex, markdown, vv Kiểm tra mã nguồn để xem các chuyển đổi này được thực hiện như thế nào.

+0

Nó than phiền về Ý kiến ​​của LaTeX, ví dụ Tôi có một dòng nói "% \ usepackage ...." khiến trình định dạng từ điển phàn nàn. Tôi sẽ nhìn vào txt2tags, mặc dù, cảm ơn bạn! –

+1

Bạn có thể thêm nhận xét sau khi định dạng ... Hoặc thoát khỏi '%' bằng '\%'. – JBernardo

Các vấn đề liên quan