2013-12-09 16 views
6

tôi có hầu hết các mã sau từ đây: Generating pdf-latex with python scriptValueError: nhân vật không được hỗ trợ định dạng '

#!/usr/bin/env python 

from __future__ import division 
from functions import * 
import shlex 

#from Utilities import * 
import os 
import argparse 
import subprocess 

equation = '\begin{equation*}1 + \gamma\lambda B/2\end{equation*}' 

content=r'''\documentclass{article} 
\usepackage{graphicx,amsmath} 

\begin{document} 
\noindent\rotatebox{180}{\vbox{% 
    %(equation)s 
    }% 
} 
\end{document} 
''' 

parser=argparse.ArgumentParser() 
parser.add_argument('-e', '--equation', default=equation) 

args=parser.parse_args() 
content%args.__dict__ 

print content%args.__dict__ 

chạy mã này mang lại cho tôi những lỗi sau:

Traceback (most recent call last): 
    File "latex.py", line 29, in <module> 
    content%args.__dict__ 
ValueError: unsupported format character ' 
' (0xa) at index 104 

ai biết điều gì đang xảy ra sai? Tôi đã có lỗi tương tự từ các phương pháp xoay trang khác.

+0

Nó nói với bạn rằng nó không hỗ trợ linefeeds. – AronVietti

+0

* Ngoài *: chuỗi ký tự cho 'phương trình' có thể là một chuỗi ký tự thô:' equation = r '\ begin ...' '. –

+0

@AronVietti: Nó cho bạn biết rằng '% \ n' không phải là cú pháp định dạng hợp lệ. –

Trả lời

13

Bất kỳ% trong content được xem là trình giữ chỗ định dạng. Đôi nào mà không phải là một giữ chỗ:

content=r'''\documentclass{article} 
\usepackage{graphicx,amsmath} 

\begin{document} 
\noindent\rotatebox{180}{\vbox{%% 
    %(equation)s 
    }%% 
} 
\end{document} 
''' 

Nếu không % ở phần cuối của dòng \noindent\rotatebox{180}{\vbox{% được xem cùng với newline \n như một nhân vật định dạng, vì thế mà ngoại lệ với một newline nhúng.

+0

tuyệt vời. làm việc như người ở. – juggler

+0

Nhấn lỗi này trong khi mã hóa một phép tính đã sử dụng mô-đun làm chuỗi. –

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