Gibt es eine Möglichkeit, eine Tastenkombination zu erstellen, mit der ich eine .tex
Datei nur kompilieren kann?
Für die LaTeX-Kompilierung verwende ich die Tastenkombination ^C ^C
. Es zeigt mir „Latex“ als Standard oder manchmal „Ansicht“. Wenn es auf „Latex“ eingestellt ist, drücke ich einfach die Eingabetaste, aber stelle es auf „Ansicht“ ein. Dann muss ich zum Kompilieren „Latex“ eingeben. Dann verwende ich bei Bedarf ^C ^V
die Option „Ansicht “.pdf
Dies ist die Operation, die ich am häufigsten verwende, aber es ist ziemlich lästig, danach explizit „latex“ einzugeben ^C ^C
. Ich bin ein Neuling bei Emacs und Aquamacs (habe es erst seit einer Woche verwendet).
Antwort1
Klicken Sie einfach auf die LaTeX-Schaltfläche in der Symbolleiste. :)
Alternativ können Sie mit Command-O eine Datei öffnen und zu
<HOME>/Library/Preferences/Aquamacs Emacs
und öffnen Preferences.el
(was in Aquamacs der Datei vorzuziehen ist .emacs
). Fügen Sie unten hinzu
(add-hook
'LaTeX-mode-hook
(lambda ()
(local-set-key
(kbd "C-c c")
(lambda nil
(interactive)
(progn
(TeX-save-document
(TeX-master-file)
)
(TeX-command "LaTeX" (quote TeX-master-file) -1))))))
Dadurch wird die gleiche Funktion, die durch Klicken auf das Symbol ausgeführt wird, an gebunden C-c c
. Sie können eine ähnliche Aktion hinzufügen, die an gebunden ist, C-c v
um
(add-hook
'LaTeX-mode-hook
(lambda ()
(local-set-key
(kbd "C-c v")
(lambda nil (interactive)
(TeX-command "View" (quote TeX-master-file) -1)))))
Antwort2
Ich verwende Aquamacs und hatte die gleiche Frage. Der Beitrag von Sean Allred hat mir geholfen, die Antwort zu finden, nach der ich gesucht habe. Das Einzige, was ich hinzufügen möchte, ist, dass es besser ist, die Datei zu bearbeiten, wenn Sie ausschließlich Aquamacs verwenden
Präferenz.elgelegen in
~/Bibliothek/Einstellungen/Aquamacs\ Emacs/Sobald Sie den untenstehenden Code in die Datei eingefügt haben, wird die Befehlssequenz
Cc Caführt den Standardcompiler aus und sendet dann die Ausgabe an die Vorschau. Dieser Codeausschnitt wurde kopiert vonhttp://www.emacswiki.org/emacs/TN#toc8unter dem Abschnitt TEX-texify.
(erfordert „tex-buf“) (defun TeX-Befehl-Standard (Name) „Nächster zu verwendender TeX-Befehl. Der Großteil des Codes wurde von ‚TeX-command-query‘ gestohlen.“ (cond ((if (string-gleich Name TeX-Region) (TeX-Check-Dateien (Concat-Name "." (TeX-Ausgabeerweiterung)) (Listennamen) TeX-Dateierweiterungen) (TeX-Dokument speichern (TeX-Masterdatei))) TeX-Befehl-Standard) ((und (memq Hauptmodus '(doctex-modus latex-modus)) (TeX-Check-Dateien (Concat-Name ".bbl") (KarteAuto 'Auto (LaTeX-Bibliographie-Liste)) BibTeX-Dateierweiterungen)) ;; Wir sollten hier auch nach BST-Dateien suchen. TeX-Befehl-BibTeX) ((TeX-Prozess-Variablenname abrufen 'TeX-Befehl-next TeX-Befehl-Show)) (TeX-Befehl-Anzeigen))) (defcustom TeX-texify-Show t "Ansichtsbefehl am Ende von TeX-texify starten?" :Typ 'Boolesch :Gruppe 'TeX-Befehl) (defcustom TeX-texify-max-runs-same-command 5 „Maximale Anzahl von Durchläufen desselben Befehls“ :Typ ‚Integer :Gruppe ‚TeX-Befehl) (defun TeX-texify-sentinel (&optional proc sentinel) "Nicht interaktiv! Ruft den Standard-Sentinel des aktuellen LaTeX-Prozesses auf. Wenn dann noch etwas übrig ist, starten Sie den nächsten Latex-Befehl." (Puffer festlegen (Prozesspuffer proc)) (Funktionsaufruf TeX-texify-sentinel proc sentinel) (lass ((case-fold-search nil)) (wenn (String-Match "\\(fertig\\|beendet\\)" Sentinel) (Set-Buffer TeX-Befehlspuffer) (es sei denn (plist-get TeX-error-report-switches (intern (TeX-master-file))) (TeX-texifizieren))))) (defun TeX-texify () „Alles erledigen.“ (interaktiv) (let ((nextCmd (TeX-Befehl-Standard (TeX-Masterdatei))) proc) (wenn (und (null TeX-texify-Show) (gleich nextCmd TeX-Befehl-Show)) (wenn (aufgerufen-interaktiv-p 'any) (Meldung „TeX-texify: Nichts zu tun.“) (TeX-Befehl nextCmd 'TeX-Masterdatei) (wenn (oder (interaktiv aufgerufen-p 'any) (null (boundp 'TeX-texify-count-gleicher-Befehl)) (null (boundp 'TeX-texify-letzter-Befehl)) (null (gleich nextCmd TeX-texify-last-command))) (mapc 'lokale Variable erstellen' (TeX-texify-sentinel, TeX-texify-count-gleicher-Befehl, TeX-texify-letzter-Befehl)) (setq TeX-texify-count-gleicher-Befehl 1)) (wenn (>= TeX-texify-count-gleicher-Befehl TeX-texify-max-runs-gleicher-Befehl) (Meldung „TeX-texify: Habe %S bereits %d-mal gemacht. Möchte es nicht mehr machen.“ TeX-texify-last-command TeX-texify-count-same-command) (setq TeX-texify-count-gleicher-Befehl (1+ TeX-texify-count-gleicher-Befehl)) (setq TeX-texify-letzter-Befehl nächsterBefehl) (und (null (gleich nextCmd TeX-Befehl-Show)) (setq proc (Pufferprozess abrufen (aktueller Puffer))) (setq TeX-texify-sentinel (Prozess-Sentinel-Prozedur)) (set-process-sentinel proc 'TeX-texify-sentinel)))))) (add-hook 'LaTeX-mode-hook '(lambda() (local-set-key (kbd "Cc Ca") 'TeX-texify)))
Antwort3
Wenn ich keine bestimmte Tastenkombination benutze (ich weiß, dass es eine gibt, aber ich kann einfach nichtfindenes), das wird funktionieren:
(add-hook
'LaTeX-mode-hook
(lambda ()
(local-set-key
(kbd "C-c c")
(lambda (&optional arg)
"Run the current document through LaTeX."
(interactive "p")
(kmacro-exec-ring-item
(quote ([3 3 76 97 84 101 88 return] 0 "%d"))
arg)))
Dadurch wird die Tastenfolge C-c can ein ausgeführtes Tastaturmakro gebunden C-c C-c LaTeX RET.
Falls Sie sich fragen: Nein, den wichtigen Teil habe ich nicht selbst gemacht. Normalerweise habe ich C-x (ein Tastaturmakro gestartet, dann habe ich eingegeben C-c C-c LaTeX RETund dann C-c )das Makro beendet. Dann habe ich C-x C-k ndem Makro einen Namen gegeben und M-x insert-kbd-macroes dann in meinem ausgeführt .emacs
(normalerweise auffindbar über C-x C-f ~/.emacs).
Ich binde das Makro mit an eine Tastenfolge local-set-key
und füge dies dann dem LaTeX-mode
Hook hinzu, damit es bei jeder Eingabe ausgeführt wird LaTeX-mode
.
Antwort4
Alternativ können Sie Folgendes in Ihr Feld einfügen .emacs
und alles automatisch nacheinander erledigen lassen, ähnlich wie bei Quick Build in TeXMaker.
(require 'tex-buf)
(defun TeX-command-default (name)
"Next TeX command to use. Most of the code is stolen from `TeX-command-query'."
(cond ((if (string-equal name TeX-region)
(TeX-check-files (concat name "." (TeX-output-extension))
(list name)
TeX-file-extensions)
(TeX-save-document (TeX-master-file)))
TeX-command-default)
((and (memq major-mode '(doctex-mode latex-mode))
(TeX-check-files (concat name ".bbl")
(mapcar 'car
(LaTeX-bibliography-list))
BibTeX-file-extensions))
;; We should check for bst files here as well.
TeX-command-BibTeX)
((TeX-process-get-variable name
'TeX-command-next
TeX-command-Show))
(TeX-command-Show)))
(defcustom TeX-texify-Show t "Start view-command at end of TeX-texify?" :type 'boolean :group 'TeX-command)
(defcustom TeX-texify-max-runs-same-command 5 "Maximal run number of the same command" :type 'integer :group 'TeX-command)
(defun TeX-texify-sentinel (&optional proc sentinel)
"Non-interactive! Call the standard-sentinel of the current LaTeX-process.
If there is still something left do do start the next latex-command."
(set-buffer (process-buffer proc))
(funcall TeX-texify-sentinel proc sentinel)
(let ((case-fold-search nil))
(when (string-match "\\(finished\\|exited\\)" sentinel)
(set-buffer TeX-command-buffer)
(unless (plist-get TeX-error-report-switches (intern (TeX-master-file)))
(TeX-texify)))))
(defun TeX-texify ()
"Get everything done."
(interactive)
(let ((nextCmd (TeX-command-default (TeX-master-file)))
proc)
(if (and (null TeX-texify-Show)
(equal nextCmd TeX-command-Show))
(when (called-interactively-p 'any)
(message "TeX-texify: Nothing to be done."))
(TeX-command nextCmd 'TeX-master-file)
(when (or (called-interactively-p 'any)
(null (boundp 'TeX-texify-count-same-command))
(null (boundp 'TeX-texify-last-command))
(null (equal nextCmd TeX-texify-last-command)))
(mapc 'make-local-variable '(TeX-texify-sentinel TeX-texify-count-same-command TeX-texify-last-command))
(setq TeX-texify-count-same-command 1))
(if (>= TeX-texify-count-same-command TeX-texify-max-runs-same-command)
(message "TeX-texify: Did %S already %d times. Don't want to do it anymore." TeX-texify-last-command TeX-texify-count-same-command)
(setq TeX-texify-count-same-command (1+ TeX-texify-count-same-command))
(setq TeX-texify-last-command nextCmd)
(and (null (equal nextCmd TeX-command-Show))
(setq proc (get-buffer-process (current-buffer)))
(setq TeX-texify-sentinel (process-sentinel proc))
(set-process-sentinel proc 'TeX-texify-sentinel))))))
(add-hook 'LaTeX-mode-hook '(lambda () (local-set-key (kbd "C-c C-a") 'TeX-texify)))
Dies bindet die Tastenfolge C-c C-aan TeX-texify
, das alle notwendigen Kompilierungsschritte durchläuft, um das aktuelle Dokument zu erstellen. Schamlos geklaut vondas Emacs Wiki.