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?


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.


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