【发布时间】:2017-05-05 11:06:14
【问题描述】:
我试过这个: (.php 文件)
<?php
$texscript = "
\documentclass[12pt,a4paper]{article}
\usepackage{helvet}
\usepackage{times}
\usepackage{multido}
\usepackage{fancyhdr}
\usepackage[hmargin=.8cm,vmargin=1.5cm,nohead,nofoot]{geometry}
\renewcommand{\familydefault}{\sfdefault}
\begin{document}
\fancyhf{} % clear all header and footer fields
\renewcommand{\headrulewidth}{0pt}
\pagestyle{fancy}
%\rhead{{\large\bfseries\thepage}}
\rhead{{\fbox{\large\bfseries\thepage}}}
\setcounter{page}{1}
\multido{}{1383}{\vphantom{x}\newpage}
\end{document}
";
$pdflatex = shell_exec("echo \$PATH > myenv; pdflatex ".$texscript." ");
?>
我得到一个错误:
pdflatex :这是 pdfTeX,版本 3.14159265-2.6-1.40.16 (TeX Live 2015/Debian)(预加载格式=pdflatex)已启用 \write18。 **!终端上的文件结束...
为什么?
上面给出的代码是在PHP变量中编写LaTeX并将其传递给pdflatex命令的正确方法吗?
如果不是,那么请建议更正!
我不想调用外部 .tex 文件,而是在 PHP 文件本身中编写 LaTeX 代码并从那里运行。
【问题讨论】:
-
1.
""(双引号)中的代码需要转义,或者您使用''(单引号)代替。 2. pdflatex 需要一个文件或通过管道输入,如cat t.tex | pdflatex3. 尝试将输出引导到另一个您有权使用-output-directory命令的-output-directory选项写入的目录。或授予在同一目录上写的权利 -
如果可能,也考虑更新,因为您的版本已经超过一年了
-
我试过单引号..仍然给出同样的错误
-
实际上,如果我提供一个包含相同乳胶代码的外部 .tex 文件,它运行良好。
-
参数文件和字符串不一样。试着在cli上做:
pdflatex $(cat t.tex )
标签: php variables escaping shell-exec pdflatex