Estou tentando alinhar um conjunto de equações longas, que são elas mesmas align
já que a maioria deles está se espalhando em várias linhas.
Atualmente, tenho apenas uma sequência de ambientes align
, com cada equação dentro para alinhar as peças de cada equação. Estou anexando uma captura de tela do resultado:
O que gostaria de obter no lugar é algo parecido com
que é o mesmo conjunto de equações após passar pelo escritório de edição de texto de um periódico e parece muito melhor.
Aqui está um MWE. Gostaria que todas as três equações se alinhassem com o sinal de igual.
\documentclass{article} \usepackage{amsmath} \begin{document} \begin{align} a & = b + c + d \nonumber \\ & \qquad + e + f + g \label{eq:1} \end{align} \begin{align} k & = l + m + n + m + n + m + n \nonumber \\ & \qquad + o + p + q \label{eq:2} \end{align} \begin{equation} r = s + t (u + v + w) \label{eq:3} \end{equation} \end{document}
Comentários
Resposta
sem um exemplo real, aqui está como eu interpreto o que você deseja.
e aqui está a entrada:
\documentclass{article} \usepackage{mathtools} \begin{document} This example shows \verb|aligned| equations within an \verb|align| environment. \begin{align} \phantom{i + j + k} &\begin{aligned} \mathllap{a} &= b + c + d\\ &\qquad + e + f + g + x + y + z \end{aligned}\\ &\begin{aligned} \mathllap{i + j + k} &= l + m + n\\ &\qquad + o + p + q \end{aligned} \end{align} \end{document}
o elemento mais longo à esquerda é inserido no início como \phantom
e os comprimentos dos elementos à esquerda do indivíduo aligned
os segmentos tornam-se” invisíveis “dobrando-os para a esquerda usando \mathllap
do pacote mathtools
.
a resposta original foi anotada (corretamente) para alinhar os segmentos adequadamente apenas quando os lados esquerdos tinham o mesmo comprimento. esta modificação resolve o problema.
Comentários
- oops! esqueci alguns “e” comerciais. versão atualizada chegando.
- só funciona se os lados esquerdos tiverem o mesmo comprimento?
- @ user1834164 – – você ‘ re correto sobre os comprimentos dos elementos do lado esquerdo. mas pode ser recuperado. adicionando isso …
- por que precisamos de \ phantom {i + j + k} .. Não consegui entender ..
- @PraphullaKoushik – o
\phantom
é necessário para que a largura do lado esquerdo do grupo de equações seja incluída na largura de todo o grupo, de modo que o grupo seja centralizado.
Resposta
Você também pode usar o ambiente split
dentro do align
ambiente, usando um E comercial (&
) onde você deseja que o alinhamento ocorra. Aqui está um MWE:
\documentclass{article} \usepackage{amsmath} \begin{document} \begin{align} \begin{split}\label{eq:1} a ={}& b + c + d\\ & + e + f + g \end{split}\\ \begin{split}\label{eq:2} k ={}& l + m + n + m + n + m + n\\ & + o + p + q \end{split}\\ r ={}& s + t (u + v + w)\label{eq:3} \end{align} \end{document}
Observe que a última equação não está dentro de um ambiente split
, mas ainda se alinha com o resto, uma vez que “ainda está dentro do ambiente align
.
A saída é semelhante a esta:
Observe os grupos vazios ({}
) antes dos” e “comerciais. Sem eles, haveria não seja aplicado kerning entre os sinais de igual e o caractere depois, porque o alinhamento quebra a caixa. Enquanto os grupos vazios não fazem nada por si mesmos, no modo matemático os símbolos antes deles adicionam kerning como se os grupos vazios fossem caracteres comuns. Isso permite que o TeX escolha o espaçamento mais apropriado. Se o e comercial fosse colocado antes dos sinais de igual, o ambiente de alinhamento iria kern em torno dos sinais de igual como deveria, sem tal incômodo, mas então o sinal de adição da equação de divisão ficaria desconfortavelmente bem atrás, exigindo algum tipo de ajuste manual de seu próprio.
Comentários
- O bom dessa solução é que não há necessidade de mexer com
\phantom
ou\mathllap
. - Uau!Na verdade, parece que você não ‘ nem precisa das divisões, substituindo
&=
por={}&
faz o truque! - Quando tento fazer isso, recebo o erro ” A guia de alinhamento extra foi alterada para \ cr. ” Recebo este erro quando tento usar mais de um E comercial na divisão. Alguma ideia?
- @Blaisorblade – a razão para as divisões é aplicar corretamente os números da equação a cada grupo. sim,
\notag
poderia ser usado, mas não ‘ dá a saída desejada se o número da equação deve ser centralizado no grupo. - Tentei essa técnica e funcionou ao converter para PDF, mas não funcionou corretamente ao converter para HTML usando o fluxo de trabalho
mk4ht htlatex test.tex "xhtml,mathml"
. Presumo que seja ‘ um bug no conversor de html.
Resposta
Como uma extensão da resposta de barbara, você pode envolver apenas o lado direito de suas equações em aligned
subambientes. Isso permite que você alinhe os sinais de igual de cada equações independentes do tamanho dos lados esquerdo ou direito.
\documentclass{article} \usepackage{amsmath} \begin{document} This example shows \verb|aligned| equations within an \verb|align| environment. \begin{align} a &= \begin{aligned}[t] &b + c + d +\\ &c + e + f + g + h + i \end{aligned}\\ k &= \begin{aligned}[t] &l + m + n\\ &+ o + p + q \end{aligned} \end{align} \end{document}
O sinal de mais na segunda linha da segunda equação não corresponde exatamente porque é o símbolo “sa mathbin
. Talvez alguém com mais conhecimento de TeX possa comentar sobre a melhor forma de consertar isso.
Comentários
- Obrigado, isso também funciona. A diferença que vejo é que os números das equações estão na linha superior de cada equação, enquanto a equação inteira está no ‘ alinhado ‘ ambiente os números da equação são centrados verticalmente. Existe uma maneira de controlar isso?
- @eldering – para obter o espaçamento correspondente após o primeiro sinal de mais na última linha, preceda-o por um grupo vazio,
{}
.
Resposta
Aqui está uma align
apenas a versão das suas equações:
\documentclass{article} \usepackage{amsmath}% http://ctan.org/pkg/amsmath \newcommand{\myvec}[1]{\hat{\mathbf{#1}}}% Vector notation \begin{document} \begin{align} f_{\textit{P},\textit{P}}\left(\myvec{n};\myvec{m}\right) &= \frac{\omega^2}{4\pi\rho\alpha^4} \textit{AF}\left(k_\alpha\left(\myvec{n}-\myvec{m}\right)\right) \nonumber \\ &\mathrel{\phantom{=}} \times\left\{\left(\lambda+\mu\right)^2\eta_N+\left(\lambda+\mu\right)\mu\eta_N\left(\cos 2\phi+\cos 2\theta\right)\right. \nonumber \\ &\mathrel{\phantom{=}} \left.\kern-\nulldelimiterspace +\;\mu^2\eta_N\cos 2\phi\cos 2\theta+\mu^2\eta_T\sin 2\phi\sin 2\theta\cos\varphi\vphantom{\left(\lambda\right)^2}\right\}, \\ f_{\textit{P},\textit{SH}}\left(\myvec{n};\myvec{m},\myvec{q}\right) &= \frac{\omega^2}{4\pi\rho\alpha\beta^3} \textit{AF}\left(k_\alpha\myvec{n}-k_\beta\myvec{m}\right) \nonumber \\ &\mathrel{\phantom{=}} \times\left(-\mu^2\eta_T\right)\sin 2\phi\cos\theta\sin\varphi, \\ f_{\textit{P},\textit{SV}}\left(\myvec{n};\myvec{m},\myvec{q}\right) &= \frac{\omega^2}{4\pi\rho\alpha\beta^3} \textit{AF}\left(k_\alpha\myvec{n}-k_\beta\myvec{m}\right) \nonumber \\ &\mathrel{\phantom{=}} \times\left\{\left(\lambda+\mu\right)\mu\eta_N\sin 2\theta+\mu^2\eta_N\cos 2\phi\sin 2\theta\right. \nonumber \\ &\mathrel{\phantom{=}} \left.\kern-\nulldelimiterspace -\;\mu^2\eta_T\sin 2\phi\cos 2\theta\cos\varphi\right\}, \end{align} \end{document}
Alguns dos ajustes incluem
- Usando
\mathrel
para espaçamento adequado entre=
(incluído via\phantom
); - Alguns
\nulldelimiter
kerning negativos em torno dos delimitadores\left.
ausentes (caso contrário haveria espaçamento adicional introduzido entre operador / operando); - Ajuste de altura para multilinhas
\left\{
e\right\}
pares.
Como um tópico comum, pode ser útil examinar Herbert Voß “ mathmode
documento .
Resposta
Este é um maneira de fazer isso para pequenas quantidades de texto usando o comando \intertext
.
\documentclass{article} \usepackage{amsmath} \begin{document} This example shows \verb|aligned| equations within an \verb|align| environment. \begin{align} \begin{aligned} a &= b + c + d\\ &\qquad + e + f + g \end{aligned}\\ \begin{aligned} k &= l + m + n + m + n + m + n\\ &\qquad + o + p + q \end{aligned} \end{align} This example shows text and equations within an \verb|align| environment. \begin{align} a &= b + c + d\\ &\qquad + e + f + g \intertext{A small amount of text can go here with $x=2$ inline math and $$\int_a^b f(x)\,dx=F(b)-F(a)$$ (even inline math). But not a lot of text. } k &= l + m + n + m + n + m + n\\ &\qquad + o + p + q \end{align} \end{document}
Comentários
- A parte relevante é sobre
\qquad
, que eu ‘ usei, mas não ‘ t funciona bem o suficiente. - (+1) Ah! 🙂 Eu estava procurando por uma coisa dessas há um tempo. Muito Obrigado. 🙂
- No caso de parágrafos dividindo as equações a serem alinhadas, qual é a melhor solução?
Resposta
Se em vez de alinhar as equações finais você deseja justificá-las à direita (de forma semelhante à forma como o \multiline
ambiente lida com as equações finais), você pode usar o seguinte truque, que aprendi esta resposta de Ulrike Fischer.
\documentclass{article} \usepackage{amsmath} \begin{document} \begin{align} a & = b + c + d + e + f + g + h \nonumber \\ & \hspace{7cm} + i + j + k \\ a & = b + c + d + e + f + g + h \nonumber \\ & \omit\hfill ${} + i + j + k$ \end{align} \end{document}
Resposta
\begin{align} \ni Tdij (Ti,Tj,Sk,t) & = Tdij(Ti,Tj,Sk,t) \nonumber \\ & Tddir (Ti,Tj,Sk,t) \bigoplus \nonumber \\ & Tdrecom (Ti,Tj,Sk,t) \bigoplus \nonumber \\ & Tdiv (Ti,Tj,Sk,t) \label{eq:1} \end{align}
fornecerá o seguinte resultado
Comentários
- Como isso aborda a postagem original de uma forma que não ‘ já foi abordada pelas outras respostas?
Resposta
Esta resposta funciona quando você usa o
pacote. O exemplo abaixo define duas macros LaTeX\mymidline
e\mylastline
. Ambas as macros se expandem essencialmente para seu primeiro argumento dentro de ambientesalign*
. A macro\mymidline
o centraliza e a macro\mylastline
o alinha à direita. Desse modo, a largura do material no segundo argumento é subtraída da “largura de exibição” disponível. Para ambientesalign*
, que deve ser apenas o (mais longo) lado esquerdo da equação. O exemplo abaixo mostra como você pode fazer isso de forma mais eficiente com uma macro\LHS
.
\documentclass{article} \usepackage[DIV15]{typearea} \usepackage{amsmath,amsfonts} \usepackage{fleqn} \usepackage{ulem} \makeatletter \newdimen\@tzadima \newdimen\@tzadimb \newbox\@tzaboxa \def\mylinemeasures#1#2{% \@tzadima\displaywidth% \advance\@tzadima-\tagwidth@% \advance\@tzadima-\alignsep@% \setbox\@tzaboxa\hbox{$\displaystyle#1$}% \@tzadimb\wd\@tzaboxa% \advance\@tzadima-\@tzadimb% \setbox\@tzaboxa\hbox{$\displaystyle#2$}% \@tzadimb\wd\@tzaboxa% \advance\@tzadima-\@tzadimb% } \def\mymidline#1#2{% \mylinemeasures{#1}{#2}% \divide\@tzadima2% \hbox to \@tzadima{}#1\notag } \def\mylastline#1#2{% \mylinemeasures{#1}{#2}% \hbox to \@tzadima{}#1% } \makeatother \begin{document} \begin{align*} \gdef\LHS{(L\cdot R)^{(i)}[i+1:n,i+1:n]}\LHS &= \underbrace{L^{(i-1)}[i+1:n,1:i-1]\cdot R^{(i-1)}[1:i-1,i+1:n]}_{\text{untouched}}+\\ &\mymidline{+ L^{(i)}[i+1:n,i] \underbrace{R^{(i)}[i,i+1:n]}_{\text{untouched pivot row}}+}\LHS\\ &\mylastline{+ \underbrace{L^{(i)}[i+1:n,i+1:n]}_{=1_{n-i-1}}\cdot R^{(i)}[i+1:n,i+1:n]}\LHS\\ &= L^{(i-1)}[i+1:n,1:i-1]\cdot R^{(i-1)}[1:i-1,i+1:n] +\\ &\mymidline{+ \uwave{L^{(i)}[i+1:n,i]\cdot R^{(i-1)}[i,i+1:n]}+}\LHS\\ &\mylastline{+R^{(i-1)}[i+1:n,i+1:n]\uwave{\strut- L^{(i)}[i+1:n,i]\cdot R^{(i-1)}[i,i+1:n]}}\LHS\\ &=L^{(i-1)}[i+1:n,1:i-1]\cdot R^{(i-1)}[1:i-1,i+1:n] +\\ &\mymidline{+ \underbrace{L^{(i-1)}[i+1:n,i]}_{=0}\cdot R^{(i-1)}[i,i+1:n] +}\LHS\\ &\mylastline{+ \underbrace{L^{(i-1)}[i+1:n,i+1:n]}_{=1_{n-i}}\cdot R^{(i-1)}[i+1:n,i+1:n]}\LHS\\ &= A[i+1:n,i+1:n]. \end{align*} \end{document}
Se você tiver a versão numerada align*
, você também deve considerar o largura do rótulo da equação e o separador de rótulo no segundo argumento de \mymidline
e \mylastline
. Não encontrei uma medida predefinida para a largura do rótulo. Após alguns testes, descobri que \quad\quad(1)
é um marcador apropriado para o rótulo.
\documentclass{article} \usepackage[DIV15]{typearea} \usepackage{amsmath,amsfonts} \usepackage{fleqn} \usepackage{ulem} \makeatletter \newdimen\@tzadima \newdimen\@tzadimb \newbox\@tzaboxa \def\mylinemeasures#1#2{% \@tzadima\displaywidth% \advance\@tzadima-\tagwidth@% \advance\@tzadima-\alignsep@% \setbox\@tzaboxa\hbox{$\displaystyle#1$}% \@tzadimb\wd\@tzaboxa% \advance\@tzadima-\@tzadimb% \setbox\@tzaboxa\hbox{$\displaystyle#2$}% \@tzadimb\wd\@tzaboxa% \advance\@tzadima-\@tzadimb% } \def\mymidline#1#2{% \mylinemeasures{#1}{#2}% \divide\@tzadima2% \hbox to \@tzadima{}#1\notag } \def\mylastline#1#2{% \mylinemeasures{#1}{#2}% \hbox to \@tzadima{}#1% } \makeatother \begin{document} \begin{align} \gdef\LHS{(L\cdot R)^{(i)}[i+1:n,i+1:n]}\LHS &= \underbrace{L^{(i-1)}[i+1:n,1:i-1]\cdot R^{(i-1)}[1:i-1,i+1:n]}_{\text{untouched}}+\notag\\ &\mymidline{+ L^{(i)}[i+1:n,i] \underbrace{R^{(i)}[i,i+1:n]}_{\text{untouched pivot row}}+}\LHS\\ &\mylastline{+ \underbrace{L^{(i)}[i+1:n,i+1:n]}_{=1_{n-i-1}}\cdot R^{(i)}[i+1:n,i+1:n]}{\LHS\quad\quad(1)}\\ &= L^{(i-1)}[i+1:n,1:i-1]\cdot R^{(i-1)}[1:i-1,i+1:n] +\notag\\ &\mymidline{+ \uwave{L^{(i)}[i+1:n,i]\cdot R^{(i-1)}[i,i+1:n]}+}{(L\cdot R)^{(i)}[i+1:n,i+1:n]}\\ &\mylastline{+R^{(i-1)}[i+1:n,i+1:n]\uwave{\strut- L^{(i)}[i+1:n,i]\cdot R^{(i-1)}[i,i+1:n]}}{\LHS\quad\quad(1)}\\ &=L^{(i-1)}[i+1:n,1:i-1]\cdot R^{(i-1)}[1:i-1,i+1:n] +\notag\\ &\mymidline{+ \underbrace{L^{(i-1)}[i+1:n,i]}_{=0}\cdot R^{(i-1)}[i,i+1:n] +}{(L\cdot R)^{(i)}[i+1:n,i+1:n]}\\ &\mylastline{+ \underbrace{L^{(i-1)}[i+1:n,i+1:n]}_{=1_{n-i}}\cdot R^{(i-1)}[i+1:n,i+1:n]}{\LHS\quad\quad(1)}\\ &= A[i+1:n,i+1:n]. \end{align} \end{document}
!
da frente dele para transformá-lo em um link. Um moderador ou outro usuário com privilégios de edição pode reinserir o!
para transformá-lo em uma imagem novamente.\documentclass
e os pacotes apropriados para que aqueles que estão tentando ajude a não ‘ a recriá-lo.split
para equações longas únicas em vez dealign
. de acordo com o documento,split
é para equações longas simples,align
é para equações múltiplas. A numeração deve ser afetada.