18

Is there a way to make AUCTeX aware of the TeX engine local variable set in a master file when I compile from other files?

master.tex:

\documentclass{minimal}
\usepackage{fontspec}

\begin{document}
  \input{content}
\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-engine: luatex
%%% End:

content.tex:

Here is some content.

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "master"
%%% End:

When I am inside content.tex and pres C-c C-c, AUCTeX runs pdflatex and not lualatex.

neic
  • 379
  • 2
  • 13
  • Some comment (bit off topic): no need for minimal in the MWE, we prefer article (or scrartcl) for instance. – Manuel Mar 24 '14 at 00:21
  • 2
    For now, I'd just set it in the child files as well: TeX-engine is local to a buffer by default, and that variable does not seem to be parsed and added to the 'auto' sub-directory by default. (I assume this is an oversight that should be corrected.) Meanwhile, you can simply do a TeX-engine-set luatex to makecontent.texswitch engines, which I'm sure you know already. It is likewise easy to setluatex` as your default engine for all files, too. (Better Emacs hackers will hopefully chime in with a real answer.) – jon Mar 24 '14 at 02:40
  • 2
    Just as a design thought for a hero who writes up a solution: perhaps it would be good to create an alist (say, TeX-inherited-variables-alist) of variables to inherit from the file-local variables of the master. There is no such ready-made function, but you can grep for Local Variables: in files.el to find the sexp that handles it. – Sean Allred Mar 24 '14 at 03:45

1 Answers1

20

If all LaTeX files in this directory will use the same engine, then you can set TeX-engine for all of them using Emacs per-directory local variables. Create a file in this directory named .dir-locals.el with the following contents:

((latex-mode
  (TeX-engine . luatex)))

If all LaTeX files in this directory share the same master, then per-directory local variables are a convenient place to set this too:

((latex-mode
  (TeX-engine . luatex)
  (TeX-master . "master")))

I find this more convenient than adding Local variables: sections to the end of each individual file. Of course, you can still use per-file local variables to override any of these if there are a few exceptional files to which these settings should not apply.

Ben Liblit
  • 1,433