Aquamacs emacs e reftex

  • Creatore
    Topic
  • #54427
    Up
    0
    Down
    ::


    Ciao a tutti!

    Uso Aquamacs su Mac come editor per latex. Vorrei fare in modo che per determinati ambienti che ho definito i label vengano inseriti automaticamente.

    Questo è il file prerences.el in cui ho utilizzato reftex-label-alist.
    `(load “auctex.el” nil t t)
    (load “preview-latex.el” nil t t)

    (require 'desktop)
    (desktop-save-mode t)
    (desktop-read)
    (setq desktop-load-locked-desktop t)

    (require 'saveplace)
    (setq-default save-place t)
    (savehist-mode t)

    (require 'reftex)
    (setq TeX-auto-save t)
    (setq TeX-parse-self t)
    (setq TeX-save-query nil)
    (add-hook 'LaTeX-mode-hook 'turn-on-reftex)
    (setq reftex-enable-partial-scans t)
    (setq reftex-save-parse-info t)
    (setq reftex-use-multiple-selection-buffers t)

    (add-hook 'LaTeX-mode-hook (lambda ()
    (TeX-fold-mode 1)))
    (add-hook 'LaTeX-mode-hook 'TeX-PDF-mode)

    (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)
    (setq reftex-trust-label-prefix t)

    (setq LaTeX-math-mode t)
    (setq reftex-plug-into-auctex t)

    (setq reftex-label-alist
    '((“defin” ?d “D:” “~\\ref{%s}” nil (“Definition” “Definitions” “definition” “Def.”))
    (“thm” ?h “T:” “~\\ref{%s}” t (“Theorem” “thm.” “Th.”))
    (“ex” ?z “E:” “~\\ref{%s}” t (“Example” “Examples” “example” “Ex.”))
    (“prop” ?p “P:” “~\\ref{%s}” t (“Proposition” “Examples” “Prop.” “prop.”))
    (“cor” ?x “C:” “~\\ref{%s}” t (“Problem” “Prob,” “prob” “Exercise” “exercise”))
    (“conj” ?y “conj:” “~\\ref{%s}” t (“Conjecture” “Conj” “conj”))
    (“lemma” ?l “L:” “~\\ref{%s}” t (“Lemma” “lemma”))
    (“remark” ?r “R:” “~\\ref{%s}” t (“Remark” “remark” “rem”))))

    (add-hook 'LaTeX-mode-hook
    (lambda ()
    (LaTeX-add-environments
    '(“cor” LaTeX-env-label)
    '(“ex” LaTeX-env-label)
    '(“thm” LaTeX-env-label)
    '(“prop” LaTeX-env-label)
    '(“defin” LaTeX-env-label)
    '(“conj” LaTeX-env-label)
    '(“lemma” LaTeX-env-label)
    '(“remark” LaTeX-env-label))))

    (autoload 'flyspell-mode “flyspell” “On-the-fly spelling checker.” t)
    (add-hook 'LaTeX-mode-hook 'flyspell-mode)

    (add-hook 'TeX-mode-hook
    (function
    (lambda ()
    (local-set-key “\C-c\C-i” 'TeX-complete-symbol)
    )))

    (require 'linum)
    (global-linum-mode 1)
    (setq linum-format (lambda (line) (propertize (format (let ((w (length (number-to-string (count-lines (point-min) (point-max)))))) (concat “%” (number-to-string w) “d “)) line) 'face 'linum)))

    (setq search-highlight t) ; Highlight search object
    (setq query-replace-highlight t) ; Highlight query object

    (global-visual-line-mode 1)

    (setq font-lock-maximum-decoration t)
    (setq TeX-auto-save t)
    (setq TeX-save-query nil)
    `

    Se faccio C-c C-e thm (per esempio) non compare \label{T:#numero del teorema}. Per farlo comparire devo fare C-c (. Vorrei saltare questo passaggio e ottenere, facendo C-c C-e thm questo:
    `
    \begin{thm}
    \label{T:#numero del teorema}
    \end{thm}
    `

    Cosa devo fare o cambiare? Grazie dell’aiuto.

    Paola

    P.S. Se dovesse servirvi vi metto anche il file customizations.el:

    `
    (custom-set-variables
    ;; custom-set-variables was added by Custom.
    ;; If you edit it by hand, you could mess it up, so be careful.
    ;; Your init file should contain only one such instance.
    ;; If there is more than one, they won't work right.
    '(LaTeX-math-abbrev-prefix “£”)
    '(aquamacs-additional-fontsets nil t)
    '(aquamacs-customization-version-id 210 t)
    '(aquamacs-tool-bar-user-customization (quote ((4194530 open-file save-buffer nil cut copy paste undo nil latex view bibtex preview) (37748974 Set\ for\ current\ session Save\ for\ future\ sessions Undo\ edits Reset\ to\ saved Erase\ customizations Help\ for\ Customize Exit))) t)
    '(default-frame-alist (quote ((cursor-type . box) (width . 100) (height . 35) (vertical-scroll-bars . right) (internal-border-width . 0) (fringe) (modeline . t) (mouse-color . “black”) (background-mode . light) (tool-bar-lines . 1) (menu-bar-lines . 1) (right-fringe . 0) (left-fringe . 0) (cursor-color . “Red”) (background-color . “White”) (foreground-color . “Black”) (font . “-apple-Lucida_Grande-medium-normal-normal-*-15-*-*-*-p-0-iso10646-1”) (fontsize . 0) (font-backend ns))))
    '(emulate-mac-italian-pro-keyboard-mode t)
    '(global-hl-line-mode t)
    '(global-linum-mode t)
    '(ns-tool-bar-display-mode (quote both) t)
    '(ns-tool-bar-size-mode (quote regular) t)
    '(visual-line-mode nil t))
    (custom-set-faces
    ;; custom-set-faces was added by Custom.
    ;; If you edit it by hand, you could mess it up, so be careful.
    ;; Your init file should contain only one such instance.
    ;; If there is more than one, they won't work right.
    '(autoface-default ((t (:inherit default))))
    '(latex-mode-default ((t (:inherit text-mode-default :height 150 :family “Lucida Grande”))))
    '(linum ((t (:inherit (shadow default) :inverse-video t)))))

    (kill-buffer “*scratch*”)

    (setq skeleton-pair t)
    (setq skeleton-pair-on-word t)
    (global-set-key “[” 'skeleton-pair-insert-maybe)
    (global-set-key “{” 'skeleton-pair-insert-maybe)
    (global-set-key “(” 'skeleton-pair-insert-maybe)
    (global-set-key “\”” 'skeleton-pair-insert-maybe)

    (define-skeleton Tex-dollar-sign-skeleton
    “Make a pair of dollar signs and leave point inside” nil
    “$”_”$”)
    (global-set-key (kbd “C-x e”) 'Tex-dollar-sign-skeleton)

    (define-skeleton TeX-square-skeleton
    “Make a pair of square brackets and leave point inside” nil
    “\\[” \n
    _ \n
    “\\]”)
    (global-set-key (kbd “C-x s”) 'TeX-square-skeleton)

    (define-skeleton TeX-graffe-skeleton
    “Make a pair of parenthesys and leave point inside” nil
    “\\{“_”\\}”)
    (global-set-key (kbd “C-x g”) 'TeX-graffe-skeleton)

    (define-skeleton mat1
    “Insert matrix” nil
    “\\[\n\\left(\n\\begin{array}{ccc}\n\t”_”\n\\end{array}\n\\right)\n\\]”
    )
    (global-set-key (kbd “C-x ar1”) 'mat1)

    (define-skeleton mat2
    “Insert matrix” nil
    “\\left(\n\\begin{array}{ccc}\n\t”_”\n\\end{array}\n\\right)”
    )
    (global-set-key (kbd “C-x ar2”) 'mat2)

    (define-skeleton mult*
    “Insert an multiline* in latex”
    nil
    “\\begin{multline*}\n\t”_”\t\n\\end{multline*}\n”)
    (global-set-key (kbd “C-x y”) 'mult*)

    (define-skeleton rid
    “Insert stackrel+riducendo”
    nil
    “\\stackrel{\\text{riducendo}}{\\longmapsto}\n”)
    (global-set-key (kbd “C-x t”) 'rid)

    (define-skeleton rid2
    “Insert stackrel+riducendo”
    nil
    “\\xrightarrow{\\scriptsize{\\begin{aligned}\n”_”\n\\end{aligned}}}”)
    (global-set-key (kbd “C-x x”) 'rid2)

    (define-skeleton virg
    “Inserire virgolette”
    nil
    “`”)
    (global-set-key (kbd “C-x c”) 'virg)

    (defun duplicate-line()
    (interactive)
    (move-beginning-of-line 1)
    (kill-line)
    (yank)
    (newline)
    (yank)
    )
    (global-set-key (kbd “C-d”) 'duplicate-line)
    `

Visualizzazione 12 filoni di risposte
  • Autore
    Risposte
    • #54428
      Up
      0
      Down
      ::


      Non ho familiarità con RefTeX, spero di riuscire ad approfondire un poco la settimana prossima e provare a darti una mano. Intanto vorrei segnalarti che c’è una discussione in cui raccogliamo i file di personalizzazione di Emacs, puoi aggiungere anche il tuo se vuoi: http://www.guit.sssup.it/phpbb/viewtopic.php?t=9000 😉

    • #54429
      Up
      0
      Down
      ::


      Grazie! Qualche possibilità per fare questo ci può essere con cdlatex.el, ma cambia un po’ di impostazioni. Qualcuno lo conosce per caso?

    • #54430
      Up
      0
      Down
      ::


      Penso di aver trovato l’inghippo: le variabili sono case sensitive, tu hai impostato reftex-plug-into-AUCTeX su non-nil ma con
      `(setq reftex-plug-into-auctex t)`
      ma `plug-into-AUCTeX’ è diverso da `plug-into-auctex’. Metto il corretto (vedi manuale di AUCTeX: http://www.gnu.org/software/auctex/manual/reftex.html#SEC50)
      `(setq reftex-plug-into-AUCTeX t)`
      a me funziona (più o meno perché mi suggerisce l’etichetta `sec’ per l’ambiente `thm’, forse c’è ancora qualcosa da correggere)

    • #54431
      Up
      0
      Down
      ::


      Grazie. Ho corretto, ma non c’è stato alcun cambiamento.

    • #54432
      Up
      0
      Down
      ::


      Ho riprovato a mettere al posto del mio .emacs i tuoi due file di inizializzazione con l’unica modifica `auctex’ → `AUCTeX’ e inserendo l’ambiente `thm’ mi aggiunge automaticamente l’etichetta `\label{T:1}’ (non so perché prima mi avesse messo `sec’, forse avevo fatto qualche esperimento di troppo; ora però funziona tutto correttamente). Hai riavviato Aquamacs dopo la modifica (oppure ricaricato il contenuto dei file di inizializzazione?)?

    • #54433
      Up
      0
      Down
      ::


      Ho riavviato. Avrà a che fare con aquamacs il problema. 🙁

    • #54434
      Up
      0
      Down
      ::


      Non so che dirti, io ho Emacs 23.2 su Ubuntu, AUCTeX 11.86, RefTeX 4.28

    • #54435
      Up
      0
      Down
      ::


      Dice che si basa su GNU Emacs 23.2.50.1, auctex 11.86, reftex versione 4.31.

    • #54436
      Up
      0
      Down
      ::


      Allora non credo sia un problema di versione: pensavo che tu potessi avere una vecchia versione di RefTeX invece la tua è addirittura più recente della mia (chissà poi perché la mia è così vecchia, ma questo è off-topic). Hai la possibilità di provare la versione normale di Emacs, per provare a capire se ha davvero qualcosa a che fare Aquamacs?

    • #54437
      Up
      0
      Down
      ::


      Onestamente no. O meglio c’è installata una versione emacs certamente più vecchia.

    • #54438
      Up
      0
      Down
      ::


      Se ce l’hai, anche se è vecchia un tentativo non penso che faccia male (se ne hai la possibilità), non riesco proprio a capire perché a me funzioni e a te no, solo facendo la modifica indicata sopra ho risolto. A parte il programma (io Emacs tu Aquamacs) non vedo altre differenze (hai una versione più recente di RefTeX, non penso che questo possa comportare problemi, anzi mi aspetterei più problemi con una versione più vecchia come la mia). 🙁

      Se devo essere completamente onesto nei miei esperimenti ho anche tolto dai tuoi file di inizializzazione un paio di pacchetti che mi davano fastidio (ma che non c’entrano nulla con RefTeX): `desktop’ e `saveplace’ (oltre a non far più uccidere il povero buffer scratch!)

    • #54439
      Up
      0
      Down
      ::


      Ho eliminato la stringa (desktop-read) e funziona. Evidentemente ci sarà un qualche tipo di interazione. Grazie dell’aiuto!

    • #54440
      Up
      0
      Down
      ::


      Ah, quindi avevo toccato proprio un pacchetto che aveva un qualche effetto collaterale interagendo con RefTeX! Meglio così (e per fortuna che sono stato completamente onesto :D)

Visualizzazione 12 filoni di risposte
  • Devi essere connesso per rispondere a questo topic.

Go to top