在安装了 MikTeK 的 Windows 8.1 上,以下 C# 代码成功生成了包含数学表达式(除了一些 Unicode 代码,例如加减号)的 PDF 文件:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "pdflatex.exe";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = Test.tex;
例如,在我的 tex 文件中,我有两个数学表达式,一个是带有平方根符号的 \sqrt{2},另一个是带有正负号的 a\unicode{177}b。上面的代码在生成的 PDF 文件中正确显示了平方根符号,但带有正负号的表达式显示为 a<177>b。MikTeK 生成的相应 Test.log 文件中显示的错误如下所示。错误为UC: bad: 177
。在 Windows 中直接使用 DOS 命令时,同一个 tex 文件可以正确显示数学表达式,如下所示pdflatex Test.tex
:
LaTeX Font Info: Try loading font information for U+msa on input line 19.
("C:\Program Files (x86)\MikTeX\tex\latex\amsfonts\umsa.fd"
File: umsa.fd 2013/01/14 v3.01 AMS symbols A
)
LaTeX Font Info: Try loading font information for U+msb on input line 19.
("C:\Program Files (x86)\MikTeX\tex\latex\amsfonts\umsb.fd"
File: umsb.fd 2013/01/14 v3.01 AMS symbols B
)
UC: bad: 177
[1....
更新 我正在使用通过以下方式生成的 tex 文件David 的样式表。该文件的全部内容是:
\documentclass{article}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{pmml-new}
\begin{document}
\(\let\par\empty
a\unicode{177}b
\)
\end{document}
当在 C# 代码中使用 pdflatex 时(如上所示),我得到以下 pdf:pdflatex Test.tex
。但是,当在 DOS 窗口中使用命令或使用 TeXworks 编辑器时,相同的 tex 文件可以正确生成如下所示的 pdf:
答案1
你没有说,但这是pmml-new.sty
设置一种机制来声明 unicode 字符的行为,但大多数都未定义。你需要将 177 定义为 \pm,因此
\@namedef{uc177}{\pm}
应该定义这个字符。