2010-07-21 4 views
10

Wie in here erläutert, finde ich geprägte Paket ist ziemlich cool für die Quellcode-Auflistung.Verwendung von geprägten (Quellcode LaTeX-Paket) mit emacs/auctex

Meine Frage ist, wie man geprägte Paket mit AucTeX/Emacs verwenden? Für Kommandozeile I pdflatex -shell-escape SOURCE, aber

  • Q1 verwenden kann: Wie kann ich ändere Sie die AucTeX die -shell-escape einfügen? Ich meine, wie die Aktion für C ändern - c + C - c?
  • Q2: Benötige ich spezielle Taste außer C brauchen - c + C - c für -shell-escape Option? Oder ist es nur in Ordnung, es ohne Probleme zu benutzen?
  • Q3: Was ist die -shell-escape für?

Antwort

13

Q1: Sie müssen die Art und Weise bearbeiten, wie LaTeX von AucTeX aufgerufen wird. Eine Möglichkeit, dies zu tun, ist das folgende in der .emacs-Datei hinzuzufügen:

(eval-after-load "tex" 
    '(setcdr (assoc "LaTeX" TeX-command-list) 
      '("%`%l%(mode) -shell-escape%' %t" 
      TeX-run-TeX nil (latex-mode doctex-mode) :help "Run LaTeX") 
    ) 
) 

Q2: Nachdem Sie die Änderungen vorgenommen haben, um alle Anrufe an LaTeX mit C-c C-c die -shell-escape Option verwenden.

Q3: Siehe Konrads Antwort. Beachten Sie, dass diese Methode -shell-escape für alle in AucTeX bearbeiteten Dateien aktiviert. Dies kann ein potenzielles Sicherheitsrisiko darstellen, wenn Sie andere People-Pakete oder -Dateien verwenden.

+0

Wirklich nützlich. Vielen Dank. –

+0

@ Mikes Antwort auf der Unterseite bietet eine einfachere und weniger aufdringliche Möglichkeit, das gleiche in modernen Versionen von AucTeX zu tun. –

6

Ich kann nur antworten Frage 3:

Was ist das '-Schale-escape' für?

minted verwendet eine Drittanbieteranwendung pygmentize, um den Quellcode zu verarbeiten. LaTeX erlaubt normalerweise keinen Aufruf anderer Anwendungen aus Sicherheitsgründen (ein Rogue-Paket könnte sonst Aribtrary-Code aufrufen). Um explizit den Aufruf von externen Anwendungen zu ermöglichen, müssen Sie diese sogenannte Escape-Funktion für die Shell aktivieren, die bei den meisten LaTeX-Installationen über den Schalter -shell-escape erfolgt.

3

In den letzten Versionen von auctex sieht es so aus, als wäre es zuverlässiger, TeX-command-extra-options zu setzen, was genau für diesen Zweck gedacht ist und nicht dazu führt, dass Sie die verschiedenen Formen von TeX-command überschreiben. Wie ich es verstehe (möglicherweise falsch), kann dies nicht global festgelegt werden, sondern muss für jede Datei festgelegt werden. Sie können dies mit einem Haken tun. Zum Beispiel in .emacs hinzufügen möchten Sie:

(add-hook 'TeX-mode-hook 
    (lambda() 
    (setq TeX-command-extra-options "-shell-escape") 
) 
) 

Und da man den Latex Befehlsaufruf nicht vollständig überschreibt, werden andere Funktionen noch funktionieren - wie bei (setq TeX-source-correlate-mode t) auf synctex Unterstützung drehen [die außerhalb der passieren kann Haken].

+1

Sie können es auch zu Ihren '.dir-Locals hinzufügen.el ', um es für alle Dateien in einem Ordner zu setzen –

+0

Nützlicher Tipp. Vielen Dank! – Mike

Verwandte Themen