根据帮助文件:
$ pdflatex --help
Usage: pdftex [OPTION]... [TEXNAME[.tex]] [COMMANDS]
or: pdftex [OPTION]... \FIRST-LINE
or: pdftex [OPTION]... &FMT ARGS
Run pdfTeX on TEXNAME, usually creating TEXNAME.pdf.
Any remaining COMMANDS are processed as pdfTeX input, after TEXNAME is read.
If the first line of TEXNAME is %&FMT, and FMT is an existing .fmt file,
use it. Else use `NAME.fmt', where NAME is the program invocation name,
most commonly `pdftex'.
Alternatively, if the first non-option argument begins with a backslash,
interpret all non-option arguments as a line of pdfTeX input.
“如果第一个非选项参数以反斜杠开头,则将所有非选项参数解释为一行 pdfTex 输入。”
好吧,我有一个我知道可以工作的 tex 文档。由于我试图将多个 tex 文档打印为 pdf,我认为最好将文档作为字符串存储在内存中,然后将字符串直接发送到可执行文件,而不是反复读取我的模板文件。
我尝试通过命令行来测试这一点:
pdftex \documentclass{book} \usepackage{graphicx} \usepackage[absolute]{textpos} \usepackage{fancyhdr} \pagestyle{fancy} \usepackage{xcolor,colortbl} \definecolor{DarkGray}{rgb}{0.7,0.7,0.7} \definecolor{LightGray}{rgb}{0.93,0.93,0.93} \definecolor{LightCyan}{rgb}{0.88,1,1} \definecolor{White}{rgb}{.99,.99,.99} \begin{document} \pagenumbering{gobble} \begin{textblock}{150}(0,0.3) \includegraphics[width=50mm]{images/logo.jpeg} \end{textblock} \begin{textblock}{150}(11,11.5) \includegraphics[width=50mm]{images/watermark_uw.jpg} \end{textblock} \begin{textblock}{150}(3,2) \mbox{\large{\textbf{NAME:}}} %NAME HERE \end{textblock} \begin{textblock}{150}(6,2) \mbox{\large{\textbf{Heather Steinmetz }}} %NAME HERE \end{textblock} {\renewcommand{\arraystretch}{2}% \begin{textblock}{400}(3,3.5) \setlength\arrayrulewidth{1.0pt} \begin{table}[h] \begin{tabular}{c>{\hspace{3pc}}c>{\hspace{3pc}}c<{\hspace{20pt}}} \rowcolor{DarkGray} \hline \textbf{\large{Time Slot}} & \textbf{\large{Meeting With}} & \textbf{\large{Location}} \\[5pt] \hline \rowcolor{LightGray} 1030 to 1100 & Alex Williams & DC2119 \\ \hline \rowcolor{White} 1100 to 1130 & Unscheduled & \\ \hline \rowcolor{LightGray} 1130 to 1200 & Yasha Pushak & DC2119 \\ \hline \rowcolor{White} 1300 to 1330 & Unscheduled & \\ \hline \rowcolor{White} & & \\ \end{tabular} \end{table} \end{textblock} \fancyhf{} % sets both header and footer to nothing \renewcommand{\headrulewidth}{0pt} \rfoot{\mbox{519-988-4567 | uwaterloo.ca | 200 UNIVERSITY AVENUE WEST, WATERLOO, ON. CANADA N2L 3G1}} \end{document}
但是,我无法使用此方法让 pdflatex 创建 pdf。它总是出错并显示:
$ pdftex \documentclass{article} \begin{document} \end{document}
This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian)
entering extended mode
! I can't find file `documentclass{article}'.
<*> documentclass{article}
begin{document} end{document}
我究竟做错了什么?
编辑
总结一下我解决问题的步骤:(感谢egreg的回答和Warren的评论)
将字符串发送到
pdflatex
,而不是pdftex就像帮助文件中所说的那样。将字符串放在引号内。请使用单引号,不要使用双引号,因为单引号会按原样保留字符串(不处理特殊字符)。
删除换行符。我使用 PHP 中的字符串替换完成了此操作。
删除注释——用“%”符号表示。
除了 egreg 给出的答案之外,我还删除了发送给 pdflatex 的字符串中的所有换行符。
答案1
shell 将反斜杠解释为其处理的一部分,前启动程序。你必须引用这个论点:
pdflatex "\documentclass{book}\begin{document}Hello world\end{document}"
不过,将所有文档都放在命令行中似乎不是一个好主意。