Alinhando equações e tabelas com várias linhas no modo látex

12

Digamos que estou editando um látex no modo de látex de Auctex e tenho a seguinte equação.
Isso é apenas recuado com indent-region.

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

O alinhamento acima é o que recebo se eu selecionar tudo e clicar TAB, se estiver apenas usando indent-region.

O que eu gostaria de obter é o seguinte:
Observe como o + c + destá alinhado com o texto após o &. Isso faria mais sentido, pois + c + dfazem parte da mesma "coluna" que = a + b.

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

Abaixo está o que recebo se eu ligar align-current.

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

O que quase chega lá, mas não exatamente. A diferença é clara.
Além disso, se eu decidir remover o \phi, align-currentfaz algo simplesmente bizarro:

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

Existe uma maneira de personalizar align-currentou usar outra coisa para obter o efeito desejado?

Malabarba
fonte
1
Atualmente, não estou no meu computador para escrever uma resposta adequada. Mas você pode selecionar essa região e usar align-regexpe fornecer a regex de caracteres que deseja alinhar +|=. Você pode ter que escapar de alguns desses personagens.
precisa saber é o seguinte
O regex digitado é realmente [+=]. Mas não dará exatamente o que você queria .. não alinhará o &junto com o +.
Kaushal Modi

Respostas:

6

O resultado que você deseja já é um recurso do AUCTeX desde outubro de 2013 . Isso ainda não está presente na versão atual (11.87). Tudo que você precisa fazer é marcar a região e bater TAB. Veja LaTeX-hanging-ampersand-positioncomo o recuo é implementado.

abo-abo
fonte
Ok, o TAB realmente funciona! Agora, como transformar o repositório git em um pacote? Eu consegui instalá-lo bem. Mas eu tenho pacotes elpa que dependem do auctex, e parece que chamar make installdo repositório git não parece definir um pacote "auctex" para que outros pacotes falhem ao inicializar.
Malabarba 16/10
(require 'tex-site)deve ser suficiente após a make installconclusão.
abo-abo
@ abo-abo Isso ativa o auctex, mas o package.el ainda não o vê para mim. De qualquer forma, resolvi isso instalando o Auctex da Elpa e removendo tudo, exceto o -pkgarquivo, do diretório de instalação.
Malabarba 17/10/2014
4

Supondo que você não tenha nenhuma linha em branco entre o \ begin e \ end de suas equações, você pode chamar essa função enquanto o cursor estiver em qualquer lugar da região \ 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
fonte