2010-03-19 21 views
8

¿cuál es la forma correcta de hacer una indentación de un documento LaTeX en Emacs (AucTex)?Indentación LaTeX (formateo) en Emacs

Por ejemplo, cuando tengo 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} 

y me gustaría terminó 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} 

me trataron indent-region pero no hace nada y el LaTeX-fill-* produce resultados extraños como:

\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} 

Gracias!

+1

Existe una diferencia entre el modo latex predeterminado y auctex, pero ambos generalmente me funcionan bastante bien. Puede determinar qué modos están activos en un búfer con 'describe-mode' (que normalmente está vinculado a' C-h m'). – dmckee

Respuesta

21

¿Estás seguro de que has instalado AUCTeX correctamente? El modo LaTeX de AUCTeX se llama LaTeX-mode, mientras que latex-mode es el valor predeterminado (cojo) de Emacs. Compruebe el modo principal actual con C-h m.

Cuando coloco el cursor al principio del medio ambiente y presiono C-c C-q C-e (LaTeX-fill-environment), me sale el siguiente:

\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} 

Lista de AUCTeX llenar comandos:

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

Usted también puede simplemente pulsar M-q (fill-paragraph) a medida que escribe.

+1

Personalmente uso el párrafo de relleno (Mq), funciona en la mayoría de los modos, y es más simple escribir –

+0

Parece que debe ser un problema en mi instalación de Auctex porque estoy usando el modo PDFLaTeX/F principal (modo Mx LaTeX) y si llego a llenar el párrafo, lo tengo todo en mal estado. El párrafo de relleno parece ser LaTeX inconsciente y simplemente se une al texto. – fikovnik

+0

Después de pasar más tiempo con eso, todavía obtengo resultados mixtos, pero si configuro fill-column en 70, está más que correcto. Extraño, pero podría haber algún problema con los aquamacs 2b5. De todos modos, creo que comenzaré a hacer una frase por línea de edición y en ese caso esto ya no es necesario. – fikovnik

1

que hacen un amplio uso de la siguiente función, que me prestó 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)))))) 

Esto funciona AUCTeX fuera demasiado. Ato a M-j usando:

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

Técnicamente eso es una función, no una macro. Solo lo menciono porque entre Emacs y LaTeX, ya hay 3 tipos diferentes de macros. –

+0

Lo suficiente .... –

3

Para obtener 2 plazas de sangría:

(setq LaTeX-item-indent 0) 

(source)

Usted puede llenar el medio ambiente de forma automática con:

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

(source)

+0

El '(setq LaTeX-item-indent 0)' funciona para mí. ¡Gracias! –