在 C# .Net 代码中使用 PDFLaTeX 不会加载某些数学符号

在 C# .Net 代码中使用 PDFLaTeX 不会加载某些数学符号

在安装了 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}

应该定义这个字符。

相关内容