我如何彻底学习 LaTeX/TeX?

我如何彻底学习 LaTeX/TeX?

例如,我正在尝试\textsuperscript以原始形式执行(从其定义来看)。

我甚至不知道从哪里开始寻找来源!

当然,我发现了\show。我也可以\expandafter\show\csname textsuperscript \endcsname对受保护的宏执行此操作,然后我发现了\makeatletter\show\@textsuperscript\makeatother

是的,kpsewhich如果我知道源文件的名称,就会找到源文件。

但这是最好的方法吗?有没有真正更新的文档,以便我和我的团队不必费力研究源代码?

答案1

从字面上理解这个问题,如何彻底学习 (La)TeX。从最底层开始:

  • [跳过布尔逻辑、晶体管、计算机架构、操作系统等...]

  • 有一个名为 TeX 的程序,由 DE Knuth 编写,你可以阅读(记录的)源代码texdoc tex(也出版为 B 卷计算机和排版)以及用户手册(TeXbook= 卷 A)。 (另一个独立文献是TeX 按主题分类)如果你决定阅读源代码,你还必须了解 Pascal 编程语言(的一个子集),以及 Knuth 的WEB读写编程系统

  • 接下来是一个名为 LaTeX 的程序(TeX 宏的集合),最初由 Leslie Lamport 编写,然后由其他的,您可以阅读(记录的)源代码texdoc source2e以及(印刷版、实体)书中的用户手册LaTeX:文档准备系统以及其他书籍(LaTeX 伴侣lshort等;请参阅本网站上的问题)。

  • 接下来,有成千上万个程序(又称为包,基于 TeX、LaTeX 和其他包构建​​的宏集合),由不同的人编写,用于 TeX/LaTeX。它们的用户手册中的文档质量各不相同,源代码中的文档质量也各不相同。

  • [省略 TeX 的扩展,如 eTeX、pdfTeX、XeTeX、LuaTeX 等。]

  • [同样省略了 TeX 核心工作完成之前或之后发生的事情:输入编码、字体(OpenType 和其他)、DVI 驱动程序或 PDF 查看器等。]

因此,当您遇到想要了解更多信息的特定宏或行为时,它可能来自以下任何来源。您可以从顶部开始:

  • 首先,看看这个定义是否在任何包中。要知道要查看哪个包的源代码,首先你可以获取 TeX 程序打开的所有包文件的列表:你可以使用 和在文件pdflatex -recorder中查找<jobname>.fls,或者使用mkjobtexmf,或者一堆其他解决方案. 使用粗略grep或其他任何方法在这些文件中搜索您的宏。

  • 接下来,检查它是否是 LaTeX 本身的一部分:你可以使用 grep in latex.ltx

  • 最后,检查它是否是 TeX 本身的一部分:你可以查看 TeXbook 的索引。

不幸的是,没有更好的解决方案,例如 TeX 记录遇到宏定义的位置。


例子:对于\textsuperscript,您可以首先检查它是否未在任何包中定义(可能会发生,具体取决于您包含的包集),然后在texdoc source2e

文字上标

您可以对找到的定义重复该过程,即此处\DeclareRobustCommand\selectfont\m@th\ensuremath\mbox\fontsize,,\sf@size\z@并重复你在其定义中找到的东西,等等。当然,许多这些定义(例如的定义\sf@size)只有在其他定义或特定语境下的预期下才有意义,所以你也需要理解它们。

相关内容