从 tex 加载 latex

从 tex 加载 latex

我决定深入研究 TeX 和 LaTeX 的世界。我一直在研究、texpdftexlatex在仔细研究了二进制文件后,我还是无法弄清楚发生了什么,于是我决定是时候来向有知识的人寻求帮助了。

latex==pdftex

latex和二进制文件是否pdftex相同?我使用的是 Mac OS X 10.7.5,这是我从终端得到的结果:

jmlopez$ which pdftex
/usr/texbin/pdftex
jmlopez$ ls -al /usr/texbin/pdftex
-rwxr-xr-x  1 root  wheel  1662700 Jun 21  2011 /usr/texbin/pdftex

这告诉我 pdftex 是一个我可以执行的实际二进制文件。让我们看一下latex

jmlopez$ which latex
/usr/texbin/latex
jmlopez$ ls -al /usr/texbin/latex
lrwxr-xr-x  1 root  wheel  6 Feb 13  2012 /usr/texbin/latex -> pdftex

看起来latex是 的符号链接pdftex。因此实际上latexpdftex和 甚至pdflatex是同一个程序,即pdftex

pdftex

下一组命令显示当我向 pdftex 提交命令时发生的情况:

jmlopez$ pdftex
This is pdfTeX, Version 3.1415926-2.3-1.40.12 (TeX Live 2011)
 restricted \write18 enabled.
**\relax
entering extended mode

*\show\newcommand
> \newcommand=undefined.
<*> \show\newcommand

? 

pdftex不是,latex因为它不知道 的定义\newcommand。但是现在让我们看看 会发生什么latex

latex

jmlopez$ latex
This is pdfTeX, Version 3.1415926-2.3-1.40.12 (TeX Live 2011)
 restricted \write18 enabled.
**\relax
entering extended mode
LaTeX2e <2009/09/24>
Babel <v3.8l> and hyphenation patterns for english, dumylang, nohyphenation, ge
rman-x-2009-06-19, ngerman-x-2009-06-19, afrikaans, ancientgreek, ibycus, arabi
c, armenian, basque, bulgarian, catalan, pinyin, coptic, croatian, czech, danis
h, dutch, ukenglish, usenglishmax, esperanto, estonian, ethiopic, farsi, finnis
h, french, galician, german, ngerman, swissgerman, monogreek, greek, hungarian,
 icelandic, assamese, bengali, gujarati, hindi, kannada, malayalam, marathi, or
iya, panjabi, tamil, telugu, indonesian, interlingua, irish, italian, kurmanji,
 lao, latin, latvian, lithuanian, mongolian, mongolianlmc, bokmal, nynorsk, pol
ish, portuguese, romanian, russian, sanskrit, serbian, serbianc, slovak, sloven
ian, spanish, swedish, turkish, turkmen, ukrainian, uppersorbian, welsh, loaded
.

*\show\newcommand
> \newcommand=macro:
->\@star@or@long \new@command .
<*> \show\newcommand

? 

从输入的第一行latex可以pdftex看出,它是完全相同的程序。唯一的区别是,它以pdftex某种方式知道,当它作为符号链接执行时latex,它需要加载所有latex定义。包括宏在内的定义\newcommand

latexpdftex或加载tex

我的实际问题是,假设我已经执行pdftextex,如何加载latex以便定义的所有宏都latex可以在中使用pdftex

我之所以想知道这一点,是因为我想找到定义所有这些宏的实际文件,这样我就可以更好地理解使用命令时发生了什么latex。我想知道它如何定义其所有环境以及它如何知道在哪里寻找它的包。这些可能是未来的其他问题,但现在我只想知道是否可以从或latex加载宏。latexpdftextex

答案1

在 texlive 中设置二进制文件的方式(至少)二进制文件使用它的姓名自定义其行为。所以pdftexpdflatex可能是相同二进制文件的副本(或符号链接),但一个将加载纯 TeX 格式,另一个将加载格式,latex因此它们的行为非常不同。latex 格式的源代码是latex.ltx或其文档形式,请在命令行上source2e尝试。texdoc source2ekpsewhich latex.ltx

更多详细信息请参阅

格式、引擎的可执行文件和引擎的可执行文件

相关内容