Configuración de Emacs para LaTeX después del verso (use-package)


8

Cómo hacer que este archivo de configuración funcione use-packagecon respecto a AucTeX, RefTeXy LaTeX. Normalmente escribo látex en lugar de documentos de texto puro.

Configuración actual de trabajo de Emacs

(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)))

Mi versión de prueba con use-package (no funciona correctamente)

(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)
  )

Cuestiones

Cuando abro cualquier .texarchivo, AucTeX ya no lo reconoce y no hay bloqueo de fuente.

Después de buscar en Google, encontré un puñado de configuraciones de archivos de puntos de Emacs, pero la variedad de configuraciones me dejó sin idea de qué hacer para ajustar mi configuración de LaTeX después del use-packageverso dada la complejidad de los diferentes componentes y casos de uso (tex, latex , auctex, reftex, etc.).

Entonces, dada mi configuración actual de trabajo anterior, ¿cómo debería ajustarse para que se ajuste al use-packageverso?

Nota

  • Otros paquetes estaban funcionando como se esperaba use-package, problemas hasta ahora solo con látex
  • GNU Emacs 25.2.2 (x86_64-pc-linux-gnu, GTK + Versión 3.18.9) de 2017-05-06
  • use-package versión: 20170710.1234

Respuestas:


7

La parte esencial es cargar en latexlugar de tex, ver la primera línea.
(También hice algunas pequeñas limpiezas)

(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
Me pregunto qué caso de uso prognsería necesario usar. Me di cuenta de que ya lo eliminaste. Otra pregunta, ¿cuál sería la diferencia si (defun...)se pusieran macro en el :initbloque o en el :prefacebloque? ¿Cómo puede alguien decir qué palabra clave tomar aquí?
doctorado

1
También me di cuenta de que eliminaste (use-package reftex...)todo, ¿puedes compartir tus ideas, por qué?
doctorado

@doctorate con prognél es posible agrupar varias instrucciones y rellenarlas donde solo se permite una, use-package ya lo está haciendo por usted, por lo que no es necesario. (use-package reftex ...)Simplemente no lo cambié, así que no lo volví a escribir.
jue

@doctorate defun in :inito :preface: creo que en su caso no hay diferencia, porque con él, solo se define una función. Se define antes que todo lo demás, de esa manera ya está definido cuando se necesita.
jue
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.