Allineamento di equazioni e tabelle multilinea in modalità lattice


12

Diciamo che sto modificando un lattice nella modalità latex di Auctex e ho la seguente equazione.
Questo è appena rientrato indent-region.

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

L'allineamento sopra è quello che ottengo se seleziono tutto e premo TAB, cioè se sto solo usando indent-region.

Quello che vorrei ottenere è il seguente:
Nota come + c + dè allineato con il testo dopo il &. Ciò avrebbe più senso, dato che + c + dfanno parte della stessa "colonna" di = a + b.

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

Di seguito è quello che ottengo se chiamo align-current.

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

Che quasi ci arriva, ma non del tutto. La differenza è chiara
Inoltre, se decido di rimuovere il \phi, align-currentfa qualcosa di semplicemente bizzarro:

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

C'è un modo per personalizzare align-currento usare qualcos'altro per ottenere l'effetto desiderato?


1
Al momento non sono al computer per scrivere una risposta adeguata. Ma puoi selezionare quella regione e usare align-regexpe fornire la regex dei caratteri che vuoi allineare +|=. Potrebbe essere necessario sfuggire ad alcuni di quei personaggi.
Kaushal Modi,

La regex che inserisci è in realtà [+=]. Ma non darà esattamente quello che volevi .. non allineerà il &con il +.
Kaushal Modi,

Risposte:


6

Il risultato desiderato è già una funzionalità AUCTeX da ottobre 2013 . Questo non è ancora presente nella versione corrente (11.87). Tutto quello che devi fare è contrassegnare la regione e colpire TAB. Scopri LaTeX-hanging-ampersand-positioncome viene implementata la rientranza.


Ok, TAB funziona davvero! Ora come posso trasformare il repository git in un pacchetto? Sono riuscito a installarlo bene. Ma ho pacchetti elpa che dipendono da auctex, e sembra che chiamare make installdal repository git non sembri definire un pacchetto "auctex", quindi quegli altri pacchetti non riescono a inizializzarsi.
Malabarba,

(require 'tex-site)dovrebbe essere sufficiente dopo che è make installstato completato.
abo-ABO

@ abo-abo Che attiva auctex, ma package.el non lo vede ancora per me. In ogni caso, ho risolto il problema installando anche Auctex da Elpa e rimuovendo tutto tranne il -pkgfile dalla sua directory di installazione.
Malabarba,

4

Supponendo che non ci siano linee vuote tra \ inizio e \ fine delle equazioni, puoi chiamare questa funzione mentre il cursore si trova in qualsiasi punto all'interno della regione \ inizio- \ fine.

(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))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.