I am using rubber to compile my documents. In some of them (usually Beamer presentations), I use the etex package. In such a case, rubber aims to use as the command elatex to invoke the e-TeX engine for the compilation. But there is no such elatex command, so it does not work!

As mentioned in a bug report on Launchpad, a solution is to invoke rubber with the options -d (for PDF) and -e 'set program pdflatex' to force using the command pdflatex instead of elatex.¹ What is the problem then? Well, I'd like to invoke rubber simply with rubber -d foo.tex for instance.

A solution for avoiding command-line options is the use of directives, adding lines in the source such as:

% rubber: set program pdftex

But these directives seem to correspond to the -c option, that is they are given to rubber before it analyzes the sources. Therefore, it does not work in my case since after I tell it to use pdftex, it will read the line


and switch to e-TeX. (At least, it is how I interpret the behavior — I may well be wrong!)

My question: Is it possible to really force rubber to use some specific engine, with some directive in the source? Or (more or less equivalently) is it possible to give a directive in the source corresponding to a -e option instead of a -c option?

A comment: I am aware that the right solution would be to remove the bug in rubber, but since it does not seem to be maintained anymore, I am interested in a pure rubber solution if it exists!

¹ The -e option allows to set so-called variables after analysis of the sources, so that even though rubber has noticed the etex package, we can force it to use pdftex.

  • which tex distribution do you have? It is very rare not to have etex, and if you have pdftex without etex it must be very old as etex and pdftex have been the same executable since some time last century in particular latex and pdflatex should both be built with etex extensions. – David Carlisle Nov 8 '13 at 9:41
  • Hmmm, since I have TL2013 it does not qualify as old... Actually, what rubber does not find is the elatex command, and I have the etex command which simply calls pdftex (I just checked that following your comment). I thought elatex is to the e-TeX engine as pdflatex is to the pdfTeX engine... Now I'm a bit at a loss: Does someone has an idea where does the problem lies, and how to solve it? – Bruno Nov 8 '13 at 9:48
  • there is no elatex as latex (and pdflatex) have been built on etex rather than classic tex for years. I don't know rubber but it is mis-configured: it should just be using latex – David Carlisle Nov 8 '13 at 9:51
  • Thank you David, I'll update my question in consequence. – Bruno Nov 8 '13 at 9:54
  • 1
    If rubber wants to call elatex or pdfelatex just define a couple of aliases: elatex should point to latex and pdfelatex to pdflatex. That's all. – egreg Nov 8 '13 at 10:06

In recent (later than 2007, I'd say) TeX distributions, there's no more a separate pdfelatex program, because pdflatex uses e-TeX extensions by default.

Older versions of rubber might have a different compiler modules for pdfelatex, but the most recent version (1.2) hasn't.

If your rubber insists in calling pdfelatex or elatex, just make shell aliases for them, pointing to pdflatex and latex respectively.

Upgrade your rubber and this will be solved. Note also that with a LaTeX kernel from 2015/01/01, calling the etex package is not required any more.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.