Încerc să aliniez un set de ecuații lungi, care sunt ele însele align
medii, deoarece cele mai multe dintre ele se răspândesc pe mai multe linii.
În prezent, am doar o secvență de medii align
, cu fiecare ecuație în interior pentru a alinia piesele fiecărei ecuații. Atașez o captură de ecran a rezultatului:
Ceea ce ar dori să obținem în schimb este ceva care arată mai mult ca
care este același set de ecuații după ce treci prin biroul de redactare al unui jurnal și arată mult mai bine.
Iată un MWE. Aș dori ca toate cele trei ecuații să se alinieze la semnul egal.
\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}
Comentarii
Răspuns
fără un exemplu real, iată cum interpretez ceea ce doresc.
și iată intrarea:
\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}
cel mai lung element din stânga este inserat la început ca \phantom
și lungimile elementelor din stânga individului sunt” invizibile „, făcându-le la stânga folosind \mathllap
din pachetul mathtools
.
răspunsul inițial a fost (corect) notat pentru a alinia corect segmentele numai atunci când laturile din stânga aveau aceeași lungime. această modificare depășește problema respectivă.
Comentarii
\phantom
este necesar, astfel încât lățimea din partea stângă a grupului de ecuații să fie inclusă în lățimea întregului grup, astfel încât grupul să fie centrat.
Răspuns
Puteți utiliza și mediul split
din cadrul align
mediu, utilizând un ampersand (&
) unde doriți să aibă loc alinierea. Iată 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}
Observați că ultima ecuație nu se află într-un mediu split
, dar se aliniază în continuare cu restul, deoarece se află încă în mediul align
.
Rezultatul arată astfel:
Rețineți grupurile goale ({}
) înainte de ampersands. Fără acestea, ar exista să nu se aplice mai târziu între semnele egale și caracterul, deoarece alinierea rupe caseta. În timp ce grupurile goale nu fac nimic singure, în modul matematic simbolurile dinaintea lor adaugă kerning ca și cum grupurile goale ar fi caractere obișnuite. Aceasta permite TeX să aleagă spațiul cel mai potrivit. Dacă ampersand-urile ar fi plasate înaintea semnelor egale, mediul de aliniere s-ar învârti în jurul semnelor egale așa cum ar trebui, fără o astfel de complicație, dar atunci semnul de adăugare a ecuației împărțit ar sta neplăcut în spate, necesitând un fel de ajustare manuală a proprii.
Comentarii
- Lucrul plăcut la această soluție este că nu este nevoie să te amesteci cu
\phantom
sau\mathllap
. - Uau!De fapt, se pare că nu aveți ‘ nici măcar nevoie de divizări, înlocuind
&=
cu={}&
face trucul! - Când încerc să fac asta, primesc eroarea ” Fila de aliniere suplimentară a fost schimbată în \ cr. ” Am primit această eroare atunci când încerc să folosesc mai mult de un semn de compresie în cadrul divizării. Aveți idei?
- @Blaisorblade – motivul divizărilor este aplicarea corectă a numerelor de ecuație fiecărui grup. da, s-ar putea folosi
\notag
, dar nu ‘ nu oferă ieșirea dorită dacă numărul ecuației ar trebui să fie centrat pe grup. - Am încercat această tehnică și a funcționat la conversia în PDF, dar a funcționat defectuos la conversia în HTML utilizând fluxul de lucru
mk4ht htlatex test.tex "xhtml,mathml"
. Presupun că ‘ este o eroare în convertorul html.
Răspunde
Ca o extensie a răspunsului barbarei, puteți înfășura doar partea dreaptă a ecuațiilor în submedii aligned
. Acest lucru vă permite să aliniați semnele egale ale separării ecuații independente de dimensiunea laturilor din stânga sau din dreapta.
\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}
Semnul plus de pe a doua linie a celei de-a doua ecuații nu se potrivește exact pentru că simbolul „sa mathbin
. Poate că cineva cu mai multe cunoștințe TeX ar putea să comenteze cum se poate remedia cel mai bine acest lucru.
Comentarii
- Mulțumesc, și asta funcționează. Diferența pe care o văd este că numerele ecuației sunt pe linia superioară a fiecărei ecuații, în timp ce atunci când întreaga ecuație este în ‘ aliniat ‘ mediul numerele ecuației sunt centrate vertical. Există o modalitate de a controla acest lucru?
- @eldering – pentru a obține spațierea potrivită după primul semn plus din ultima linie, precedați-l cu un grup gol,
{}
.
Răspuns
Iată un align
-numai versiunea ecuațiilor dvs.:
\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}
Unele dintre ajustări includ
- Utilizarea
\mathrel
pentru spațierea corectă în jurul=
ascuns (inclus prin\phantom
); - Unele
\nulldelimiter
negative care lipsesc delimitatorii\left.
negativi (altfel ar exista spațiu suplimentar introdus între operator / operand); - Ajustarea înălțimii pentru mai multe linii
\left\{
și\right\}
perechi.
Ca fir comun, poate fi util să parcurgeți Herbert Voß „ mathmode
document .
Răspuns
Acesta este un modalitate de a realiza acest lucru pentru cantități mici de text utilizând comanda \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}
Comentarii
- Partea relevantă este despre
\qquad
, pe care l-am folosit ‘, dar asta nu ‘ nu funcționează suficient de bine. - (+1) Ah! 🙂 Am căutat așa ceva o vreme. Mulțumesc mult. 🙂
- În cazul în care paragrafele împart ecuațiile care urmează să fie aliniate, care este cea mai bună soluție?
Răspuns
Dacă, în loc să aliniați ecuațiile finale, doriți să le justificați (în mod similar cu modul în care mediul \multiline
gestionează ecuațiile finale), puteți utiliza următoarele truc, pe care l-am luat din acest răspuns 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}
Răspunde
\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}
va furniza următoarea ieșire
Comentarii
- Cum se adresează acest lucru postării originale în așa fel încât ‘ nu a fost deja abordat de celelalte răspunsuri?
Răspuns
Acest răspuns funcționează când utilizați
pachet. Exemplul de mai jos definește două macro-uri LaTeX\mymidline
și\mylastline
. Ambele macro-uri se extind în esență la primul lor argument în mediilealign*
. Macro-ul\mymidline
îl centrează și macro-ul\mylastline
îl aliniază la dreapta. Astfel, lățimea elementelor din al doilea argument este scăzută din „lățimea de afișare” disponibilă. Pentru mediilealign*
care ar trebui să fie doar (cea mai lungă) parte din stânga a ecuației. Exemplul de mai jos arată cum puteți face acest lucru cel mai eficient cu un 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}
Dacă aveți versiunea numerotată align*
ar trebui să luați în considerare și lățimea etichetei ecuației și a separatorului de etichete în al doilea argument al \mymidline
și \mylastline
. Nu am găsit o măsură predefinită pentru lățimea etichetei. După unele teste s-a dovedit că \quad\quad(1)
este un substituent adecvat pentru etichetă.
\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}
!
din față pentru a-l transforma într-un link. Un moderator sau alt utilizator cu privilegii de editare poate reintroduce!
pentru a-l transforma din nou în imagine.\documentclass
și pachetele corespunzătoare, astfel încât cei care încearcă să ajutor, nu ‘ nu trebuie să îl recreați.split
pentru ecuații lungi simple, mai degrabă decâtalign
. conform documentului,split
este pentru ecuații lungi simple,align
este pentru ecuații multiple. Numerotarea ar trebui să fie afectată.