Emacs-Setup für LaTeX nach (Use-Package) Vers


8

Wie diese Konfigurationsdatei Arbeit zu machen mit use-packageBezug auf AucTeX, RefTeXund LaTeX. Normalerweise schreibe ich Latex rahter als reine Tex-Dokumente.

Aktuelle Emacs-Konfiguration

(load "auctex.el" nil t t)
(setq-default TeX-master nil) ; by each new fie AUCTEX will ask for a master fie.
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq-default TeX-PDF-mode t)
(setq TeX-show-compilation nil)         ; if `t`, automatically shows compilation log
;; (setq-default TeX-engine 'xetex)     ; optional
(setq TeX-save-query nil)       ; don't prompt for saving the .tex file

;; add makeglossaries to TeX-run-command-list
(eval-after-load "tex" '(add-to-list 'TeX-command-list
                     '("Makeglossaries" "makeglossaries %s" TeX-run-command nil
                       (latex-mode)
                       :help "Run makeglossaries script, which will choose xindy or makeindex") t))

;; Font-lock for AUCTeX
;; Note: '«' and '»' is by pressing 'C-x 8 <' and 'C-x 8 >', respectively
(font-lock-add-keywords 'latex-mode (list (list "\\(«\\(.+?\\|\n\\)\\)\\(+?\\)\\(»\\)" '(1 'font-latex-string-face t) '(2 'font-latex-string-face t) '(3 'font-latex-string-face t))))

;; Add standard Sweave file extensions to the list of files recognized  by AUCTeX.
(setq TeX-file-extensions
      '("Rnw" "rnw" "Snw" "snw" "tex" "sty" "cls" "ltx" "texi" "texinfo" "dtx"))

(setq LaTeX-babel-hyphen nil) ; Disable language-specific hyphen insertion.
;; `"` expands into csquotes macros (for this to work babel must be loaded after csquotes).
(setq LaTeX-csquotes-close-quote "}"
     LaTeX-csquotes-open-quote "\\enquote{")

;; RefTeX
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(setq reftex-plug-into-AUCTeX t)
(add-hook 'LaTeX-mode-hook (function (lambda() (bind-key "C-c C-r" 'reftex-query-replace-document))))
(add-hook 'LaTeX-mode-hook (function (lambda() (bind-key "C-c C-g" 'reftex-grep-document))))
(add-hook 'TeX-mode-hook (lambda () (reftex-isearch-minor-mode))) ; for AUCTeX

;; A user-defined function to delete the current macro in AUCTeX.
;; Note: keybinds won't be added to TeX-mode-hook if not kept at the end of the AUCTeX setup!
(defun TeX-remove-macro ()
  "Remove current macro and return `t'.  If no macro at point,
    return 'nil'."
  (interactive)
  (when (TeX-current-macro)
    (let ((bounds (TeX-find-macro-boundaries))
      (brace  (save-excursion
            (goto-char (1- (TeX-find-macro-end)))
            (TeX-find-opening-brace))))
      (delete-region (1- (cdr bounds)) (cdr bounds))
      (delete-region (car bounds) (1+ brace)))
    t))
(add-hook 'LaTeX-mode-hook (lambda () (bind-key "M-DEL" 'TeX-remove-macro)))

Meine Testversion mit Use-Package (funktioniert nicht richtig)

(use-package reftex
  :commands turn-on-reftex
  :config (setq reftex-plug-into-AUCTeX t))

(use-package tex
  :ensure auctex
  :init
  (progn
    ;; A function to delete the current macro in AUCTeX.
    ;; Note: keybinds won't be added to TeX-mode-hook if not kept at the end of the AUCTeX setup!
    (defun TeX-remove-macro ()
      "Remove current macro and return TRUE, If no macro at point, return Nil."
      (interactive)
      (when (TeX-current-macro)
    (let ((bounds (TeX-find-macro-boundaries))
          (brace  (save-excursion
            (goto-char (1- (TeX-find-macro-end)))
            (TeX-find-opening-brace))))
      (delete-region (1- (cdr bounds)) (cdr bounds))
      (delete-region (car bounds) (1+ brace)))
    t))
    )
  :bind (:map LaTeX-mode-map
          ("M-<delete>" . TeX-remove-macro)
          ("C-c C-r" . reftex-query-replace-document)
          ("C-c C-g" . reftex-grep-document))
  :config
  (progn
    (add-to-list 'TeX-command-list
         '("Makeglossaries" "makeglossaries %s" TeX-run-command nil
           (latex-mode)
           :help "Run makeglossaries script, which will choose xindy or makeindex") t)
    (setq-default TeX-master nil) ; by each new fie AUCTEX will ask for a master fie.
    (setq TeX-auto-save t)
    (setq TeX-save-query nil)       ; don't prompt for saving the .tex file
    (setq TeX-parse-self t)
    (setq-default TeX-PDF-mode t)
    (setq TeX-show-compilation nil)         ; if `t`, automatically shows compilation log
    (setq-default TeX-engine 'xetex)     ; optional
    (setq LaTeX-babel-hyphen nil) ; Disable language-specific hyphen insertion.
    ;; `"` expands into csquotes macros (for this to work, babel pkg must be loaded after csquotes pkg).
    (setq LaTeX-csquotes-close-quote "}"
      LaTeX-csquotes-open-quote "\\enquote{")
    ;; Font-lock for AUCTeX
    ;; Note: '«' and '»' is by pressing 'C-x 8 <' and 'C-x 8 >', respectively
    (font-lock-add-keywords 'latex-mode (list (list "\\(«\\(.+?\\|\n\\)\\)\\(+?\\)\\(»\\)" '(1 'font-latex-string-face t) '(2 'font-latex-string-face t) '(3 'font-latex-string-face t))))
    ;; Add standard Sweave file extensions to the list of files recognized  by AUCTeX.
    (setq TeX-file-extensions
      '("Rnw" "rnw" "Snw" "snw" "tex" "sty" "cls" "ltx" "texi" "texinfo" "dtx"))
    (add-hook 'TeX-mode-hook (lambda () (reftex-isearch-minor-mode))) ; for AUCTeX
    )
  :mode ("\\.tex\\'" . latex-mode)
  )

Probleme

Wenn ich eine .texDatei öffne, wird sie von AucTeX nicht mehr erkannt und es ist keine Schriftsperrung vorhanden.

Nach einigem googeln fand ich eine Handvoll Emacs-Dot-File-Setups, aber die Vielzahl der Setups ließ mich keine Ahnung, was ich tun sollte, um meine LaTeX-Konfiguration nach use-packageVersen anzupassen, da die verschiedenen Komponenten und Anwendungsfälle (Tex, Latex) komplex sind , auctex, reftex usw.).

Wie sollte meine aktuelle aktuelle Konfiguration an den use-packageVers angepasst werden ?

Hinweis

  • Andere Pakete funktionierten wie erwartet use-package, Probleme bisher nur mit Latex
  • GNU Emacs 25.2.2 (x86_64-pc-linux-gnu, GTK + Version 3.18.9) vom 06.05.2017
  • use-package Version: 20170710.1234

Antworten:


7

Der wesentliche Teil ist das Laden latexstatt in texder ersten Zeile.
(auch ich habe ein paar kleine Aufräumarbeiten gemacht)

(use-package latex
    :mode
    ("\\.tex\\'" . latex-mode)
    :bind
    (:map LaTeX-mode-map
          ("M-<delete>" . TeX-remove-macro)
          ("C-c C-r" . reftex-query-replace-document)
          ("C-c C-g" . reftex-grep-document))
    :init
    ;; A function to delete the current macro in AUCTeX.
    ;; Note: keybinds won't be added to TeX-mode-hook if not kept at the end of the AUCTeX setup!
    (defun TeX-remove-macro ()
        "Remove current macro and return TRUE, If no macro at point, return Nil."
        (interactive)
        (when (TeX-current-macro)
            (let ((bounds (TeX-find-macro-boundaries))
                  (brace  (save-excursion
                              (goto-char (1- (TeX-find-macro-end)))
                              (TeX-find-opening-brace))))
                (delete-region (1- (cdr bounds)) (cdr bounds))
                (delete-region (car bounds) (1+ brace)))
            t))
    :config
    (add-to-list 'TeX-command-list
                 '("Makeglossaries" "makeglossaries %s" TeX-run-command nil
                   (latex-mode)
                   :help "Run makeglossaries script, which will choose xindy or makeindex") t)

    (setq-default TeX-master nil ; by each new fie AUCTEX will ask for a master fie.
                  TeX-PDF-mode t
                  TeX-engine 'xetex)     ; optional

    (setq TeX-auto-save t
          TeX-save-query nil       ; don't prompt for saving the .tex file
          TeX-parse-self t
          TeX-show-compilation nil         ; if `t`, automatically shows compilation log
          LaTeX-babel-hyphen nil ; Disable language-specific hyphen insertion.
          ;; `"` expands into csquotes macros (for this to work, babel pkg must be loaded after csquotes pkg).
          LaTeX-csquotes-close-quote "}"
          LaTeX-csquotes-open-quote "\\enquote{"
          TeX-file-extensions '("Rnw" "rnw" "Snw" "snw" "tex" "sty" "cls" "ltx" "texi" "texinfo" "dtx"))

    ;; Font-lock for AuCTeX
    ;; Note: '«' and '»' is by pressing 'C-x 8 <' and 'C-x 8 >', respectively
    (font-lock-add-keywords 'latex-mode (list (list "\\(«\\(.+?\\|\n\\)\\)\\(+?\\)\\(»\\)" '(1 'font-latex-string-face t) '(2 'font-latex-string-face t) '(3 'font-latex-string-face t))))
    ;; Add standard Sweave file extensions to the list of files recognized  by AuCTeX.
    (add-hook 'TeX-mode-hook (lambda () (reftex-isearch-minor-mode)))
    )

1
Ich frage mich, welcher Anwendungsfall prognerforderlich wäre? Mir ist aufgefallen, dass Sie es bereits entfernt haben. Eine andere Frage ist, welcher Unterschied wäre, wenn ein (defun...)Makro in den :initBlock oder den :prefaceBlock eingefügt würde. Wie kann jemand sagen, welches Keyword hier verwendet werden soll?
Promotion

1
Mir ist auch aufgefallen, dass du das (use-package reftex...)komplett entfernt hast , kannst du deine Idee teilen, bitte, warum war das so?
Promotion

@doctorate mit ist prognes möglich, mehrere Anweisungen zu gruppieren und sie dort zu stopfen, wo nur eine zulässig ist. Das Use-Package erledigt dies bereits für Sie, sodass es nicht benötigt wird. (use-package reftex ...)Ich habe es einfach nicht geändert, also habe ich es nicht noch einmal geschrieben.
jue

@doctorate defun in :initoder :preface: Ich denke in deinem Fall macht es keinen Unterschied, denn damit wird nur eine Funktion definiert. Es wird vor allem anderen definiert, so dass es bereits definiert ist, wenn es benötigt wird.
jue
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.