我决定深入研究 TeX 和 LaTeX 的世界。我一直在研究、tex
和pdftex
,latex
在仔细研究了二进制文件后,我还是无法弄清楚发生了什么,于是我决定是时候来向有知识的人寻求帮助了。
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
。因此实际上latex
和pdftex
和 甚至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
。
latex
从pdftex
或加载tex
我的实际问题是,假设我已经执行pdftex
或tex
,如何加载latex
以便定义的所有宏都latex
可以在中使用pdftex
?
我之所以想知道这一点,是因为我想找到定义所有这些宏的实际文件,这样我就可以更好地理解使用命令时发生了什么latex
。我想知道它如何定义其所有环境以及它如何知道在哪里寻找它的包。这些可能是未来的其他问题,但现在我只想知道是否可以从或latex
加载宏。latex
pdftex
tex
答案1
在 texlive 中设置二进制文件的方式(至少)二进制文件使用它的姓名自定义其行为。所以pdftex
和pdflatex
可能是相同二进制文件的副本(或符号链接),但一个将加载纯 TeX 格式,另一个将加载格式,latex
因此它们的行为非常不同。latex 格式的源代码是latex.ltx
或其文档形式,请在命令行上source2e
尝试。texdoc source2e
kpsewhich latex.ltx
更多详细信息请参阅