2010-03-19 3 views
8

qual è il modo corretto di eseguire il rientro di un documento LaTeX in Emacs (AucTex)?Rientro LaTeX (formattazione) in Emacs

Per esempio, quando ho una lista:

\begin{itemize} 
\item orem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim urna, mattis eu aliquet eget, condimentum id nibh. In hac habitasse platea dictumst. 
\item orem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim urna, mattis eu aliquet eget, condimentum id nibh. In hac habitasse platea dictumst. 
\end{itemize} 

e vorrei conclusa con:

\begin{itemize} 
    \item orem ipsum dolor sit amet, consectetur 
    adipiscing elit. Aliquam enim urna, mattis eu aliquet eget, 
    condimentum id nibh. In hac habitasse platea dictumst. 
    \item orem 
    ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim 
    urna, mattis eu aliquet eget, condimentum id nibh. In hac 
    habitasse platea dictumst. 
\end{itemize} 

ho cercato indent-region ma non fa nulla e la LaTeX-fill-* produce risultati strani Mi piace:

\begin{itemize} \item orem ipsum dolor sit amet, consectetur 
    adipiscing elit. Aliquam enim urna, mattis eu aliquet eget, 
    condimentum id nibh. In hac habitasse platea dictumst. \item orem 
    ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim 
    urna, mattis eu aliquet eget, condimentum id nibh. In hac 
    habitasse platea dictumst. \end{itemize} 

Grazie!

+1

C'è una differenza tra la modalità predefinita in lattice e auctex, ma entrambi funzionano generalmente abbastanza bene per me. È possibile determinare quali modalità sono attive in un buffer con 'describe-mode' (che è normalmente legato a' C-h m'). – dmckee

risposta

21

Sei sicuro di aver installato AUCTeX correttamente? La modalità LaTeX di AUCTeX è denominata LaTeX-mode, mentre latex-mode è l'impostazione predefinita (lame) di Emacs. Controlla la modalità principale corrente con C-h m.

quando ho posto il cursore all'inizio dell'ambiente e premo C-c C-q C-e (LaTeX-fill-environment), ottengo il seguente:

\begin{itemize} 
\item orem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam 
    enim urna, mattis eu aliquet eget, condimentum id nibh. In hac 
    habitasse platea dictumst. 
\item orem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam 
    enim urna, mattis eu aliquet eget, condimentum id nibh. In hac 
    habitasse platea dictumst. 
\end{itemize} 

Elenco dei AUCTeX riempire comandi:

  • C-c C-q C-e (LaTeX-fill-environment)
  • C-c C-q C-p (LaTeX-fill-paragraph)
  • C-c C-q C-r (LaTeX-fill-region)
  • C-c C-q C-s (LaTeX-fill-section)

Potete anche semplicemente premere M-q (fill-paragraph) durante la digitazione.

+1

Personalmente uso il paragrafo di riempimento (Mq), funziona la maggior parte delle modalità ed è più semplice digitare –

+0

Sembra che debba essere un problema nella mia installazione Auctex poiché sto utilizzando la modalità principale PDFLaTeX/F (modalità Mx LaTeX) e se lo faccio fill-paragraph allora ho incasinato. Il paragrafo di riempimento sembra essere inconsapevolmente di LaTeX e si unisce semplicemente al riformattare il testo. – fikovnik

+0

Dopo aver passato ancora un po 'di tempo con questo, sto ancora ottenendo risultati misti, ma se imposto la colonna di riempimento su 70 è per lo più ok. Strano, ma potrebbe avere qualche problema con l'aquamacs 2b5. Comunque penso che comincerò a fare un modo di modificare una frase per riga e in tal caso non è più necessario. – fikovnik

1

mi fanno largo uso delle seguenti funzioni, che ho preso in prestito da Luca da Alfaro:

(defun fill-sentence() 
    (interactive) 
    (save-excursion 
    (or (eq (point) (point-max)) (forward-char)) 
    (forward-sentence -1) 
    (indent-relative) 
    (let ((beg (point))) 
     (forward-sentence) 
     (if (equal "LaTeX" (substring mode-name (string-match "LaTeX" mode-name))) 
      (LaTeX-fill-region-as-paragraph beg (point)) 
     (fill-region-as-paragraph beg (point)))))) 

Questo funziona AUCTeX fuori troppo. Mi legano a M-j utilizzando:

(global-set-key "\ej" 'fill-sentence) 
+0

Tecnicamente questa è una funzione, non una macro. Lo cito solo perché tra Emacs e LaTeX ci sono già 3 diversi tipi di macro. –

+0

Abbastanza corretto .... –

3

Per ottenere 2 posti rientro:

(setq LaTeX-item-indent 0) 

(source)

Potete riempire l'ambiente automaticamente:

(add-hook 'LaTeX-mode-hook 'turn-on-auto-fill) 

(source)

+0

Il '(setq LaTeX-item-indent 0)' funziona per me. Grazie! –