Sto cercando di allineare un insieme di equazioni lunghe, che sono esse stesse align
ambienti poiché la maggior parte di essi si diffonde su più righe.
Attualmente ho solo una sequenza di ambienti align
, con ogni equazione allinterno per allineare i pezzi di ciascuna equazione. Allego uno screenshot del risultato:
Quello che vorrei ottenere invece è qualcosa che assomiglia di più a
che è lo stesso insieme di equazioni dopo essere passato attraverso lufficio di redazione di una rivista e ha un aspetto molto migliore.
Ecco un MWE. Vorrei che tutte e tre le equazioni fossero allineate sul segno di uguale.
\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}
Commenti
Rispondi
senza un esempio reale, ecco come interpreto ciò che tu desidera.
ed ecco linput:
\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}
lelemento di sinistra più lungo viene inserito allinizio come \phantom
e le lunghezze degli elementi di sinistra del singolo aligned
i segmenti vengono resi” invisibili “sovrapponendoli a sinistra utilizzando \mathllap
dal pacchetto mathtools
.
la risposta originale è stata annotata (correttamente) per allineare correttamente i segmenti solo quando i lati di sinistra avevano la stessa lunghezza. questa modifica supera questo problema.
Commenti
- oops! Ho dimenticato un paio di e commerciali. Versione aggiornata in arrivo.
- funziona solo se i lati di sinistra hanno la stessa lunghezza?
- @ user1834164 – – tu ‘ correggere le lunghezze degli elementi di sinistra. ma può essere recuperato. aggiungendo che …
- perché abbiamo bisogno di \ phantom {i + j + k} .. Non riuscivo a capire ..
- @PraphullaKoushik – il
\phantom
è necessario in modo che la larghezza del lato sinistro del gruppo di equazioni sia inclusa nella larghezza dellintero gruppo, in modo che il gruppo sia centrato.
Risposta
Puoi anche utilizzare lambiente split
allinterno di align
ambiente, utilizzando una e commerciale (&
) in cui desideri che abbia luogo lallineamento. Ecco un 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}
Nota che lultima equazione non è allinterno di un ambiente split
, ma si allinea comunque con il resto, dato che è ancora allinterno dellambiente align
.
Loutput è simile a questo:
Notare i gruppi vuoti ({}
) prima della e commerciale. Senza questi, ci sarebbe non viene applicata alcuna crenatura tra i segni di uguale e il carattere in seguito, perché lallineamento rompe la scatola. Mentre i gruppi vuoti non fanno nulla da soli, in modalità matematica i simboli prima di loro aggiungono crenatura come se i gruppi vuoti fossero caratteri normali. Ciò consente a TeX di scegliere la spaziatura più appropriata. Se le e commerciali fossero posizionate prima dei segni di uguale, lambiente di allineamento si concentrerebbe attorno ai segni di uguale come dovrebbe senza problemi, ma poi il segno di addizione dellequazione di divisione si troverebbe scomodamente molto indietro, richiedendo una sorta di modifica manuale proprio.
Commenti
- La cosa bella di questa soluzione è che non cè bisogno di scherzare con
\phantom
o\mathllap
. - Wow!In effetti, sembra che tu non ‘ ne abbia nemmeno bisogno, sostituendo
&=
con={}&
fa il trucco! - Quando provo a farlo, ottengo lerrore ” La scheda di allineamento extra è stata modificata in \ cr. ” Ottengo questo errore quando provo a utilizzare più di una e commerciale allinterno di una divisione. Qualche idea?
- @Blaisorblade – il motivo delle divisioni è applicare correttamente i numeri delle equazioni a ciascun gruppo. sì,
\notag
potrebbe essere utilizzato, ma ‘ non fornisce loutput desiderato se il numero dellequazione deve essere centrato sul gruppo. - Ho provato questa tecnica e ha funzionato durante la conversione in PDF, ma non funzionava correttamente durante la conversione in HTML utilizzando il flusso di lavoro
mk4ht htlatex test.tex "xhtml,mathml"
. Presumo che ‘ sia un bug nel convertitore html.
Risposta
Come estensione alla risposta di barbara, puoi racchiudere solo il lato destro delle tue equazioni in aligned
sottoambienti. Ciò ti consente di allineare i segni di uguale dei separati equazioni indipendenti dalla dimensione dei lati sinistro o destro.
\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}
Il segno più sulla seconda riga della seconda equazione non corrisponde esattamente perché esso “sa mathbin
simbolo. Forse qualcuno con più conoscenza di TeX potrebbe commentare come risolverlo al meglio.
Commenti
- Grazie, funziona anche questo. La differenza che vedo è che i numeri di equazione si trovano sulla riga superiore di ogni equazione, mentre quando lintera equazione è in ‘ allineato ‘ ambiente i numeri delle equazioni sono centrati verticalmente. Cè un modo per controllarlo?
- @eldering – per ottenere la spaziatura corrispondente dopo il primo segno più nellultima riga, anteponilo a un gruppo vuoto,
{}
.
Risposta
Ecco un align
-sola versione delle tue equazioni:
\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}
Alcuni degli aggiustamenti include
- Utilizzo di
\mathrel
per una corretta spaziatura intorno a=
(incluso tramite\phantom
); - Alcuni
\nulldelimiter
crenatura negativa intorno ai delimitatori\left.
mancanti (altrimenti sarebbe stata introdotta una spaziatura aggiuntiva tra operatore / operando); - Regolazione dellaltezza per
\left\{
e\right\}
coppie.
Come filo conduttore, può essere utile leggere attentamente Herbert Voß “ mathmode
documento .
Risposta
Questo è un modo per ottenere questo risultato per piccole quantità di testo utilizzando il 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}
Commenti
- La parte pertinente riguarda
\qquad
, che ‘ ho utilizzato, ma ‘ t funziona abbastanza bene. - (+1) Ah! 🙂 Stavo cercando una cosa del genere per un po . Grazie molto. 🙂
- In caso di paragrafi che dividono le equazioni da allineare, qual è la soluzione migliore?
Risposta
Se invece di allineare le equazioni finali desideri giustificarle a destra (in modo simile al modo in cui lambiente \multiline
gestisce le equazioni finali), puoi utilizzare quanto segue trucco, che ho preso da questa risposta di 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}
Risposta
\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}
fornirà il seguente output
Commenti
- In che modo questo indirizza il post originale in modo tale che ‘ non sia già stato affrontato dalle altre risposte?
Risposta
Questa risposta funziona quando usi
pacchetto. Lesempio seguente definisce due macro LaTeX\mymidline
e\mylastline
. Entrambe le macro si espandono essenzialmente al loro primo argomento allinterno degli ambientialign*
. La macro\mymidline
la centra e la macro\mylastline
la allinea a destra. In tal modo, la larghezza del contenuto nel secondo argomento viene sottratta dalla “larghezza di visualizzazione” disponibile. Per gli ambientialign*
, dovrebbe essere solo il lato sinistro (più lungo) dellequazione. Lesempio seguente mostra come farlo in modo più efficiente con una 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 hai la versione numerata align*
dovresti anche considerare la larghezza delletichetta dellequazione e del separatore delletichetta nel secondo argomento di \mymidline
e \mylastline
. Non ho trovato una misura predefinita per la larghezza delletichetta. Dopo alcuni test si è scoperto che \quad\quad(1)
è un segnaposto appropriato per letichetta.
\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}
!
davanti di esso per trasformarlo in un collegamento. Un moderatore o un altro utente con privilegi di modifica può quindi reinserire!
per trasformarlo di nuovo in unimmagine.\documentclass
e i pacchetti appropriati in modo che coloro che cercano di aiutare a don ‘ non doverlo ricreare.split
per singole equazioni lunghe anzichéalign
. secondo il documento,split
è per singole equazioni lunghe,align
è per più equazioni. La numerazione dovrebbe essere influenzata.