Ausrichten von mehrzeiligen Gleichungen und Tabellen im Latex-Modus

12

Angenommen, ich bearbeite einen Latex im Latex-Modus von Auctex und habe die folgende Gleichung.
Dies wird nur mit eingerückt indent-region.

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

Die obige Ausrichtung erhalte ich, wenn ich alles auswähle und drücke TAB, das heißt, wenn ich nur benutze indent-region.

Was ich erhalten möchte, ist das folgende:
Beachten Sie, wie das + c + dmit dem Text nach dem & ausgerichtet wird. Dies wäre am sinnvollsten, da sie + c + dTeil derselben "Spalte" sind wie = a + b.

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

Folgendes bekomme ich, wenn ich anrufe align-current.

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

Was fast da ist, aber nicht ganz. Der Unterschied ist klar.
Auch, wenn ich mich entscheide, das zu entfernen \phi, align-currenttut etwas einfach Bizarres:

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

Gibt es eine Möglichkeit align-current, etwas anderes anzupassen oder zu verwenden, um den gewünschten Effekt zu erzielen?

Malabarba
quelle
1
Ich bin momentan nicht an meinem Computer, um eine richtige Antwort zu schreiben. Sie können jedoch diesen Bereich auswählen align-regexpund die Regex der Zeichen verwenden, die Sie ausrichten möchten +|=. Möglicherweise müssen Sie einigen dieser Zeichen entkommen.
Kaushal Modi
Die Regex, die Sie eingeben, ist tatsächlich [+=]. Aber es wird nicht genau das , was Sie wollten .. es wird nicht das Ausrichten &zusammen mit der +.
Kaushal Modi

Antworten:

6

Das gewünschte Ergebnis ist bereits seit Oktober 2013 eine AUCTeX-Funktion . Dies ist in der aktuellen Version (11.87) noch nicht vorhanden. Alles was Sie tun müssen, ist die Region zu markieren und zu drücken TAB. Sehen Sie, LaTeX-hanging-ampersand-positionwie die Einrückung implementiert wird.

abo-abo
quelle
Ok, TAB funktioniert tatsächlich! Wie mache ich aus dem Git-Repo ein Paket? Ich habe es geschafft, es gut zu installieren. Aber ich habe elpa-Pakete, die von auctex abhängen, und es scheint, als würde ein Aufruf make installaus dem git repo kein "auctex" -Paket definieren, so dass diese anderen Pakete nicht initialisiert werden können.
Malabarba
(require 'tex-site)sollte ausreichen, nachdem make installabgeschlossen wurde.
abo-abo
@ abo-abo Das aktiviert auctex, aber package.el sieht es immer noch nicht für mich. Auf jeden Fall habe ich das umgangen, indem ich Auctex von Elpa installiert und nur alles außer der -pkgDatei aus dem Installationsverzeichnis entfernt habe.
Malabarba
4

Vorausgesetzt, Sie haben keine Leerzeilen zwischen \ begin und \ end Ihrer Gleichungen, können Sie diese Funktion aufrufen, während sich Ihr Cursor irgendwo innerhalb des Bereichs \ begin- \ end befindet.

(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
quelle