2010-07-18 10 views
8

AucTeX auf Emacs ist ziemlich erstaunlich Werkzeug, aber wenn ich ein einziges '$' schreibe, ist alle Färbung gebrochen.

Normalerweise wird ein '$' von einem anderen '$' begleitet, um mathematische Gleichungen auszudrücken, aber für die Quellenangabe wird häufig '$' verwendet.

\begin{Verbatim} 
(let ((buffer (url-retrieve-synchronously 
... 
    (re-search-forward "^$" nil 'move) <-- It breaks the coloring 
... 
\end{Verbatim} 

Die einfache Lösung ist wie folgt, um das '$' zu entsprechen.

(re-search-forward "^$" nil 'move) ;; $ 

Gibt es eine Option in AucTeX, um dieses einzelne '$' Problem zu verhindern?

Antwort

9

AUCTeX weiß, dass $ in der wörtlichen Umgebung nicht speziell ist, aber man muss ihm sagen, dass Verbatim eine wortgetreue Umgebung ist durch die Anordnung für sie in LaTeX-verbatim-environments-local erscheinen.

Wenn AUCTeX optimal installiert ist, weiß es dies bereits, da AUCTeX für jede geladene Datei einen Style-Hook über \usepackage und Freunde lädt. Möglicherweise müssen Sie es anweisen, Ihre Headerdatei mit C-c C-n (TeX-normal-mode) zu analysieren.

Wenn das nicht genug ist, bedeutet dies Verbatim wurde in einer Style-Datei definiert, für die AUCTeX nicht genug Informationen hat. Sie können AUCTeX anweisen, einige oder alle von Ihnen installierten Style-Dateien zu analysieren. Siehe das Kapitel "Automatisch" im AUCTeX-Handbuch.

Manchmal kann AUCTeX die Style-Datei nicht analysieren; dann kannst du diesen Teil von Hand machen. Der folgende Code geht davon aus, dass Sie die Verbatim-Umgebung aus dem fancyvrb-Paket erhalten; passen Sie den Namen sonst an. Erstellen Sie eine Datei mit dem Namen fancyvrb.el in einem der genannten Verzeichnisse in TeX-style-path mit folgendem Inhalt (es sein kann, andere Dinge wert, dort habe ich angepasst gerade alltt.el):

 
(TeX-add-style-hook 
"fancyvrb" 
(lambda() 
    (LaTeX-add-environments "BVerbatim" "LVerbatim" "SaveVerbatim" "Verbatim") 
    (make-local-variable 'LaTeX-indent-environment-list) 
    (add-to-list 'LaTeX-indent-environment-list '("BVerbatim" current-indentation)) 
    (add-to-list 'LaTeX-indent-environment-list '("LVerbatim" current-indentation)) 
    (add-to-list 'LaTeX-indent-environment-list '("SaveVerbatim" current-indentation)) 
    (add-to-list 'LaTeX-indent-environment-list '("Verbatim" current-indentation)) 
    (make-local-variable 'LaTeX-verbatim-regexp) 
    (setq LaTeX-verbatim-regexp (concat LaTeX-verbatim-regexp "\\|\\([BL]?\\|Save\\)Verbatim")) 
    (add-to-list 'LaTeX-verbatim-environments-local "BVerbatim") 
    (add-to-list 'LaTeX-verbatim-environments-local "LVerbatim") 
    (add-to-list 'LaTeX-verbatim-environments-local "SaveVerbatim") 
    (add-to-list 'LaTeX-verbatim-environments-local "Verbatim") 
    (when (and (featurep 'font-latex) 
       (eq TeX-install-font-lock 'font-latex-setup)) 
    (font-latex-set-syntactic-keywords) 
    (setq font-lock-set-defaults nil) 
    (font-lock-set-defaults)))) 

(ich dachte, dass Sie es auch tun könnte manuell durch Dateivariablen, aber dies stellt sich als nicht funktionierend heraus, da die Einstellungen für die Schriftartverriegelung erstellt werden, bevor die lokalen Variablen der Datei initialisiert werden. Ich sehe keine Abhilfe.)

+0

Für die endgültige Methode, ist es nur OK, sie in die letzte Zeile des TeX-Quellcodes zu kopieren? Es scheint nicht so zu funktionieren. – prosseek

+0

@prosseek: Entschuldigung, ich habe einen Tippfehler im Variablennamen gemacht, jetzt behoben. Aber selbst dann habe ich es nur getestet und es funktioniert nicht für mich. Es sieht so aus, als wäre die Variable gesetzt, nachdem die Farbparameter eingerichtet wurden, und ich weiß nicht, wie ich das beheben soll. – Gilles

+0

Ok, mit einer lokalen Dateivariable funktioniert nicht, also * style * .el ist der Weg zu gehen. Ich habe meine Antwort bearbeitet, um den Code dafür einzubeziehen. – Gilles

4

Gibt es einen Grund, Verbatim vs. Verbatim zu verwenden? wörtlich macht alles in der Sektion die gleiche Farbe für mich. Nebenbei verwende ich lieber die listings package. für die Anzeige von Programmcode in Latex.

Mithilfe der Paketlisten können Sie nicht formatierten Text wie in \ begin {verbatim} hinzufügen, das Hauptziel ist jedoch, den Quellcode einer beliebigen Programmiersprache in Ihr Dokument einzufügen.

+0

Danke für den Tipp, und ich verstehe Diese Auflistung ist die bessere Option. Aber in Bezug auf Emacs/AucTeX sehe ich das gleiche Problem. – prosseek

Verwandte Themen