%&latex
有人可以解释一下在源 LaTeX 文件中命令之前放置的哪个命令的作用是什么吗\begin{document}
?
答案1
在古代,TeX 有两种形式:initex
和virtex
。第一个二进制文件用于创造格式有 Plain 和 LaTeX 等,第二种格式用于在加载其中一种可用格式后排版文档。
所以我们必须这样做
initex lplain
并将创建的文件保存lplain.fmt
在合适的目录中;从那时起,就可以使用
virtex '&lplain' file
当然,许多用户或系统管理员定义了别名,以便可以简单地调用
latex file
多年来,人们发明了几种简化格式选择的技巧。例如,有些系统会进行内存转储,initex
而不是执行\dump
,这样转储就可以变成可执行文件,从而加快运行的启动速度。
另一个技巧是允许 TeX 解析第一个输入文件的第一行,因此如果文件是
%&latex
\documentclass{article}
\begin{document}
The Mad Hatter and the White Hare.
\end{document}
一个简单的电话
tex file
相当于tex '&latex' file
。是的,在更近的时代,不是virtex
调用可执行文件tex
,而是使用 创建 LaTeX 格式initex latex.ltx
,因此生成的格式是latex.fmt
。
当前的 TeX 发行版也提供这种“首行解析”。我不确定 MiKTeX 的状态如何(我知道它允许指定更多选项)。
TeX Live 发行版使用不同的策略;当创建格式(使用脚本mktexfmt-sys
)时,例如pdflatex
,符号链接
pdftex -> pdflatex
在二进制目录中创建;这是我的系统上的内容:
lrwxr-xr-x 1 root wheel 6 Apr 20 2013 /usr/texbin/pdflatex@ -> pdftex
这使其pdflatex
成为“可执行文件”,但pdftex
实际上已经运行;程序能够知道它被调用的名称,并在加载格式时执行适当的操作。
那么,如果你有上述文件并运行命令行,会发生什么情况
pdflatex file
没有其他选择?“第一行解析”处于活动状态,因此这将覆盖基于调用名称的格式选择,并latex
选择格式,以 DVI 格式而不是 PDF 格式产生输出。
所以,最好的办法是不是使用该格式的第一行。至少会造成混淆。
您可以查看 TeX Live 的文档以了解更多信息:
http://texdoc.net./texmf/doc/texlive/texlive-en/texlive-en.pdf
发现这个选项甚至没有描述。pdftex 的手册页有
-parse-first-line
如果主输入文件的第一行以%&
解析开头,则查找转储名称或-translate-file
选项。
-no-parse-first-line
禁用对主输入文件第一行的解析。[...]
-translate-file tcxname
使用 tcxname 转换表来设置输入字符的映射和输出字符的重新映射。如果您有个人特殊格式并且不想费心创建别名或符号链接,此功能非常有用。
TeX Live 手册对 TCX 文件进行了一些讨论,但它们主要只是过去的遗物。
可以在运行时通过调用关闭该功能
pdftex -no-parse-first-line
pdftex
(可以使用指向的任何符号链接)。请注意,该功能已关闭离开默认情况下使用tex
(即原始的 Knuth TeX,无法生成 PDF 输出)。标准texmf.cnf
文件中的相关设置为
% Allow TeX, and MF to parse the first line of an input file for
% the %&format construct.
parse_first_line = t
% But don't parse the first line if invoked as "tex", since we want that
% to remain Knuth-compatible. The src_specials and
% file_line_error_style settings, as well as the options -enctex,
% -mltex, -8bit, etc., also affect this, but they are all off by default.
parse_first_line.tex = f
parse_first_line.initex = f
如果你添加
parse_first_line = f
到顶层texmf.cnf
文件,即
/usr/local/texlive/2013/texmf.cnf
对于 2013 版本,您可以关闭所有二进制文件的该功能。
答案2
它会pdflatex
编译 DVI 输出。如果您想生成 PDF,只需执行以下操作之一:
- 将其更改为
%&pdflatex
- 跑步
pdflatex -no-parse-first-line
- 去掉它。