TeX 和 Texinfo 有什么区别?

TeX 和 Texinfo 有什么区别?

我想知道是否可以使用该texi2pdf程序编译原始 TeX 代码。

答案1

Texinfo是另一个宏包,它定义了自己的标记语言,可以由 TeX 处理以生成 dvi(texi2dvi)或 pdf(texi2pdf)。您可以在和@iftex命令中包含任意(大致为纯文本)TeX 代码@end iftex;但是,此条件中的任何内容在转换为其他格式(html、info 等)时都将被忽略。texi2[dvi|pdf]是自动处理 Texinfo 文件以生成可打印文档的 shell 脚本,类似于makeinfo,例如,一个处理相同文档以生成 info 或 html 格式的在线文档的程序。

texi2pdf还可以通过检查文件扩展名来自动处理 LaTeX 文件。因此,texi2pdf filename.tex会自动将filename.tex其作为 LaTeX 文件处理,并附带其主要副产品(bibtex 和 makeindex)。

您可以采用texi2pdfFran 建议的策略来处理 Plain TeX 文件;但这样一来,您只能强制脚本texi2pdf使用Plain TeX 文件格式pdftex的引擎pdftex,结果与使用命令相同pdftex filename.tex

答案2

你的问题不太清楚。据我了解,你问的是是否可以.tex使用texi2pdf 无需安装 TeX 发行版

这个问题的答案是,你不能,因为它texi2pdf只是作为一个包装器,依赖于 TeX 发行版提供的编译命令的可用性。

请注意,我之所以以这种方式解释你的问题,而不是像其他人那样解释,是因为我目前无法想象有任何其他动机。也就是说,如果你安装了 TeX 发行版,你可能很快就会使用pdftexpdflatex编译.tex文件:使用提供的包装器的唯一原因texinfo是你正在处理.texi文件而不是.tex

因此,虽然可能可以用它texi2pdf来编译.tex文件,但很难理解为什么有人会这样做。

基本包装器是texi2dvitexi2pdf是一种简写,可以使用 pdfTeX 引擎代替标准 TeX 引擎。

texi2dvi根据文档,对文件进行运行.texi相当于以下 5 个步骤:

  1. 在 Texinfo 文件上运行“tex”。这将生成一个 DVI 文件(带有未定义的交叉引用且没有索引)和原始索引文件(带有两个字母的扩展名)。

  2. 在原始索引文件上运行“texindex”。这将创建相应的排序索引文件(带有三个字母的扩展名)。

  3. 再次对 Texinfo 文件运行“tex”。这会重新生成 DVI 文件,这次带有索引和定义的交叉引用,但带有上次运行的交叉引用的页码,这通常是不正确的。

  4. 使用“texindex”对索引再次排序。

  5. 最后运行 'tex'。这一次,交叉引用的页码已正确写入。

步骤 1、3 和 5 至少需要安装 TeX。(如果您正在处理文件.tex,我认为步骤 2 和 4 不适用。)

答案3

根据man texi2pdf处理(电子)纯 TeX 文件,必须设置环境变量。对于使用或 的LATEX=texDVI 输出,这是正确的,以使用引擎而不是,但对于 PDF 输出,设置实际上应该是 通过更改引擎。因此,在 Linux 系统中,纯 TeX 文件如下texi2dvitexi2pdf --dvietexlatexPDFLATEX=pdftexpdflatexpdftextest.tex,程序可以是:

$ PDFLATEX=pdftex ; export PDFLATEX ; texi2pdf test.tex

或者,告知程序源代码是一个 TeXinfo 文件,无论.tex扩展名是什么:

$ texi2pdf --language=texinfo test.tex 

或者更棘手的是,更改扩展名。不一定是 texinfo 文件的扩展名(.texi),因为没有 的名称.tex不会被识别为 LaTeX 文件,将被视为 texinfo 文件,无论有任何其他后缀(或者即使没有任何后缀)。因此,您可以将其命名为test.foo

在 Linux 中,可以使用硬链接为同一个文件维护多个名称,因此您可以保留原始文件名 test.tex,但使用test.foo以下命令进行编译texi2pdf

$ ln test.tex test.foo
$ texi2pdf  test.foo 

正如另一个答案所解释的那样,以这种方式欺骗程序是可行的,因为 TeXinfo 文件基于纯 TeX,因此使用相同的引擎,但您可能会使用误导性或非标准后缀欺骗自己。

相关内容