Alinear ecuaciones y tablas de líneas múltiples en modo látex

12

Digamos que estoy editando un látex en el modo látex de Auctex, y tengo la siguiente ecuación.
Esto solo está sangrado indent-region.

\begin{align}
    \phi & = a + b
    + c + d \\
    & = a + b
    + c + d + e
\end{align}

La alineación anterior es lo que obtengo si selecciono todo y presiono TAB, es decir, si solo estoy usando indent-region.

Lo que me gustaría obtener es lo siguiente:
Observe cómo + c + dse alinea con el texto después de &. Esto tendría más sentido, ya que + c + dson parte de la misma "columna" que = a + b.

\begin{align}
    \phi & = a + b
           + c + d \\
         & = a + b
           + c + d + e
\end{align}

A continuación se muestra lo que obtengo si llamo align-current.

\begin{align}
    \phi & = a + b
    + c + d \\
         & = a + b
         + c + d + e
\end{align}

Que casi llega allí, pero no del todo. La diferencia es clara.
Además, si decido eliminar el \phi, align-currenthace algo simplemente extraño:

\begin{align}
 & = a + b
    + c + d \\
 & = a + b
         + c + d + e
\end{align}

¿Hay alguna manera de personalizar align-currento usar algo más para obtener el efecto deseado?

Malabarba
fuente
1
Actualmente no estoy en mi computadora para escribir una respuesta adecuada. Pero puede seleccionar esa región y usar align-regexpy proporcionar la expresión regular de los caracteres que desea alinear +|=. Es posible que tengas que escapar de algunos de esos personajes.
Kaushal Modi
La expresión regular que ingresas es en realidad [+=]. Pero no le dará exactamente lo que quería ... no alineará el &junto con el +.
Kaushal Modi

Respuestas:

6

El resultado que desea ya es una función de AUCTeX desde octubre de 2013 . Esto aún no está presente en la versión actual (11.87). Todo lo que tienes que hacer es marcar la región y golpear TAB. Vea LaTeX-hanging-ampersand-positioncómo se implementa la sangría.

abo-abo
fuente
Ok, TAB de hecho funciona! Ahora, ¿cómo convierto el repositorio de git en un paquete? Logré instalarlo bien. Pero tengo paquetes elpa que dependen de auctex, y parece que llamar make installdesde el repositorio de git no parece definir un paquete "auctex", por lo que esos otros paquetes no se inicializan.
Malabarba
(require 'tex-site)debería ser suficiente después de que make installse haya completado.
abo-abo
@ abo-abo Eso activa auctex, pero package.el todavía no lo ve por mí. En cualquier caso, solucioné esto instalando también Auctex de Elpa y simplemente eliminando todo menos el -pkgarchivo de su directorio de instalación.
Malabarba
4

Suponiendo que no tiene líneas en blanco entre \ begin y \ end de sus ecuaciones, puede llamar a esta función mientras su cursor se encuentra en cualquier lugar dentro de la región \ begin- \ end.

(defun my/align-latex-eq ()
  "Align the & chars and then align the +/= chars."
  (interactive)
  (backward-paragraph)
  (mark-paragraph)
  ;; align-regexp syntax:  align-regexp (beg end regexp &optional group spacing repeat)
  (align-regexp (region-beginning) (region-end) "\\(\\s-*\\)&" 1 1 nil)
  (mark-paragraph)
  (align-regexp (region-beginning) (region-end) "\\(\\s-*\\)[+=]" 1 1 nil))
Kaushal Modi
fuente