![采用 Etex 封装的橡胶](https://linux22.com/image/278672/%E9%87%87%E7%94%A8%20Etex%20%E5%B0%81%E8%A3%85%E7%9A%84%E6%A9%A1%E8%83%B6.png)
我用它rubber
来编译我的文档。在一些文档中(通常是 Beamer 演示文稿),我使用这个etex
包。在这种情况下,rubber
我打算使用它作为命令elatex
来调用e-TeX
编译引擎。但是没有这样的elatex
命令,所以它不起作用!
正如在Launchpad 上的错误报告,解决方案是rubber
使用选项-d
(对于 PDF)调用并-e 'set program pdflatex'
强制使用命令pdflatex
而不是elatex
.¹ 那么问题是什么?好吧,我想rubber
简单地使用rubber -d foo.tex
例如来调用。
避免使用命令行选项的一个解决方案是使用指令,在源代码中添加如下行:
% rubber: set program pdftex
但这些指令似乎与选项相对应-c
,即在分析源代码之前给出它们rubber
。因此,在我的情况下它不起作用,因为在我告诉它使用之后pdftex
,它会读取行
\usepackage{etex}
并切换到e-TeX
。(至少,这是我对这种行为的解释——我也可能错了!)
我的问题:是否有可能真的强制rubber
使用某个特定引擎,并在源代码中指定某个指令?或者(或多或少等同于)是否可以在源代码中给出与-e
选项相对应的指令而不是-c
选项?
一条评论:我知道正确的解决方案是删除rubber
,但由于它似乎不再被维护,我对纯的rubber
溶液如果它存在的话!
¹-e
选项允许设置所谓的变量经过对源代码的分析,这样即使rubber
注意到了该etex
包,我们也可以强制它使用pdftex
。
答案1
在最近(我想说是 2007 年以后)的 TeX 发行版中,不再有单独的pdfelatex
程序,因为pdflatex
默认使用 e-TeX 扩展。
的旧版本rubber
可能有不同的编译器模块pdfelatex
,但最新版本(1.2)没有。
如果你rubber
坚持调用pdfelatex
或elatex
,只需为它们创建 shell 别名,分别指向pdflatex
和latex
。
升级您的rubber
,这个问题就会解决。另请注意,使用 2015/01/01 的 LaTeX 内核,etex
不再需要调用该包。