MikTeX 源和 LaTeX 语言

MikTeX 源和 LaTeX 语言
  • 我是否正确地认为 C++ 中的 MikTeX 源包含打开 .tex 文件(当我运行)的代码latex.exe myfile.tex、读取它、解析命令、如果它们正确则执行它们,否则记录错误消息?
  • 并且 TeX/LaTeX 语法也被‘安装’到这些源中吗?
  • 例如,LaTeX 文档必须以\documentclass命令开头。此语法要求是否直接在 С++ 源中的某个地方保留?

答案1

MikTeX 与 texlive 类似,包含一个 tex-the-program 实现,该实现很大程度上自动从原始 WEB(Pascal)源代码转换为 C,并根据需要补充了其他 C。您可以在以下位置浏览源代码

https://miktex.org/sources

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定义为检查已指定文档类。

相关内容