Hi list,

in AUCTeX there isn't an easy&flexible way to pass arbitrary options
to the TeX processor.  The most wanted option probably is
`-shell-escape'.  Another useful option can be `-fmt <format file>',
to select a format file, because in AUCTeX first line parsing is de
facto disabled.

Setting `{La,}TeX-command' locally (note that those variables aren't
safe by default as file-local variables) doesn't work with
`TeX-engine's different from `default', so this isn't flexible.

Another possibility is to add the options to `LaTeX-command-style' but
this isn't buffer-local by default, there is no corresponding variable
for plain TeX and it's definitely difficult to be remembered.

One could define a new engine in `TeX-engine-alist' combining an
existent engine with the relevant options, but defining a new engine
for all possible combinations of a TeX engine and options (think about
the `-fmt <format file>' option) isn't easy.

I'm sending a patch to address this problem.  It simply adds a new
safe file-local variable (`TeX-command-extra-options') which is the
string of options to be passed to the TeX-processor through a new
expander in `TeX-expand-list'.  In this way, eg, the shell escape can
be enabled with
    %%% TeX-command-extra-options: "-shell-escape"
in the list of local variables, and a format file can be picked up with
    %%% TeX-command-extra-options: "-fmt <format file>"

I tested the patch with plain TeX and LaTeX with default, luatex and
xelatex engines.  It works also with `TeX-command-region'.

Any thoughts?  Can I install the patch?

Bye,
Mosè
diff --git a/tex.el b/tex.el
index 0d6280e..77bcb09 100644
--- a/tex.el
+++ b/tex.el
@@ -112,24 +112,24 @@ If nil, none is specified."
 ;; TeX-expand-list for a description of the % escapes
 
 (defcustom TeX-command-list
-  `(("TeX" "%(PDF)%(tex) %`%S%(PDFout)%(mode)%' %t"
+  `(("TeX" "%(PDF)%(tex) %(extraopts) %`%S%(PDFout)%(mode)%' %t"
      TeX-run-TeX nil
      (plain-tex-mode ams-tex-mode texinfo-mode) :help "Run plain TeX")
     ("LaTeX" "%`%l%(mode)%' %t"
      TeX-run-TeX nil
      (latex-mode doctex-mode) :help "Run LaTeX")
 	;; Not part of standard TeX.
-    ("Makeinfo" "makeinfo %t" TeX-run-compile nil
+    ("Makeinfo" "makeinfo %(extraopts) %t" TeX-run-compile nil
      (texinfo-mode) :help "Run Makeinfo with Info output")
-    ("Makeinfo HTML" "makeinfo --html %t" TeX-run-compile nil
+    ("Makeinfo HTML" "makeinfo %(extraopts) --html %t" TeX-run-compile nil
      (texinfo-mode) :help "Run Makeinfo with HTML output")
-    ("AmSTeX" "%(PDF)amstex %`%S%(PDFout)%(mode)%' %t"
+    ("AmSTeX" "%(PDF)amstex %(extraopts) %`%S%(PDFout)%(mode)%' %t"
      TeX-run-TeX nil (ams-tex-mode) :help "Run AMSTeX")
     ;; support for ConTeXt  --pg
     ;; first version of ConTeXt to support nonstopmode: 2003.2.10
-    ("ConTeXt" "texexec --once --texutil %(execopts)%t"
+    ("ConTeXt" "texexec --once --texutil %(extraopts) %(execopts)%t"
      TeX-run-TeX nil (context-mode) :help "Run ConTeXt once")
-    ("ConTeXt Full" "texexec %(execopts)%t"
+    ("ConTeXt Full" "texexec %(extraopts) %(execopts)%t"
      TeX-run-TeX nil
      (context-mode) :help "Run ConTeXt until completion")
     ("BibTeX" "bibtex %s" TeX-run-BibTeX nil t :help "Run BibTeX")
@@ -301,7 +301,7 @@ The executable `latex' is LaTeX version 2e."
 
 (defcustom LaTeX-command-style
   ;; They have all been combined in LaTeX 2e.
-  '(("" "%(PDF)%(latex) %S%(PDFout)"))
+  '(("" "%(PDF)%(latex) %(extraopts) %S%(PDFout)"))
 "List of style options and LaTeX commands.
 
 If the first element (a regular expression) matches the name of one of
@@ -408,6 +408,12 @@ string."
   :group 'TeX-command
   :type '(repeat (group regexp (string :tag "Command"))))
 
+(defcustom TeX-command-extra-options ""
+  "String with the extra options to be given to the TeX processor."
+  :type 'string)
+(make-variable-buffer-local 'TeX-command-extra-options)
+(put 'TeX-command-extra-options 'safe-local-variable 'stringp)
+
 ;; This is the list of expansion for the commands in
 ;; TeX-command-list.  Not likely to be changed, but you may e.g. want
 ;; to handle .ps files.
@@ -455,6 +461,7 @@ string."
     ("%(tex)" (lambda () (eval (nth 2 (assq TeX-engine (TeX-engine-alist))))))
     ("%(latex)" (lambda () (eval (nth 3 (assq TeX-engine (TeX-engine-alist))))))
     ("%(execopts)" ConTeXt-expand-options)
+    ("%(extraopts)" (lambda () TeX-command-extra-options))
     ("%S" TeX-source-correlate-expand-options)
     ("%dS" TeX-source-specials-view-expand-options)
     ("%cS" TeX-source-specials-view-expand-client)
_______________________________________________
auctex-devel mailing list
auctex-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/auctex-devel

Reply via email to