- 我是否正确地认为 C++ 中的 MikTeX 源包含打开 .tex 文件(当我运行)的代码
latex.exe myfile.tex
、读取它、解析命令、如果它们正确则执行它们,否则记录错误消息? - 并且 TeX/LaTeX 语法也被‘安装’到这些源中吗?
- 例如,LaTeX 文档必须以
\documentclass
命令开头。此语法要求是否直接在 С++ 源中的某个地方保留?
答案1
MikTeX 与 texlive 类似,包含一个 tex-the-program 实现,该实现很大程度上自动从原始 WEB(Pascal)源代码转换为 C,并根据需要补充了其他 C。您可以在以下位置浏览源代码
LaTeX 是一个用 TeX 编写的程序,然后用合适的 TeX 可执行文件进行处理,因此 pdflatex、latex、lualatex、xelatex 等本质上分别是用 pdftex、etex、luahbtex、xetex 处理的相同的 latex 源代码。
您可以看到 latex 的文档来源texdoc source2e
和提取的运行时 tex 文件,该文件用于制作 latex 格式,将安装在您的 tex 树中<texmf-root>/tex/latex/base/latex.ltx
例如,您提到的命令\documentclass
在该文件中定义为
\def\documentclass{%
\let\documentclass\@twoclasseserror
\if@compatibility\else\let\usepackage\RequirePackage\fi
\@fileswithoptions\@clsextension}
并且必须只有一个的约束也在 TeX 宏中实现。如上所示,在第一次使用后,\documentclass
将自身重新定义为,\@twoclasseserror
如果使用则会产生错误。相反,在文件的其他地方你会发现
\everypar{\@nodocument}
如果在之前开始一段文本,则会产生错误,\begin{document}
并且\begin{document}
检查至少是否\normalfont
定义为检查已指定文档类。