Jag försöker rikta en uppsättning långa ekvationer, som själva är align
miljöer eftersom de flesta av dem sprider sig på flera linjer.
För närvarande har jag bara en sekvens av align
-miljöer, med varje ekvation inuti för att justera bitarna i varje ekvation. Jag bifogar en skärmdump av resultatet:
Vad som skulle vilja få istället är något som ser mer ut som
vilket är samma uppsättning ekvationer efter att ha gått igenom kopieringskontoret för en journal och ser mycket bättre ut.
Här är en MWE. Jag skulle vilja att alla tre ekvationerna skulle anpassas efter likhetstecknet.
\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}
Kommentarer
Svara
utan ett konkret exempel, här tolkar jag vad du vill.
och här är ingången:
\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}
det längsta vänstra elementet infogas i början som ett \phantom
och längderna på de vänstra elementen för individen aligned
-segment görs” osynliga ”genom att lappa dem åt vänster med \mathllap
från mathtools
-paketet.
det ursprungliga svaret noterades (korrekt) för att justera segmenten ordentligt endast när vänster sida hade samma längd. denna modifiering löser problemet.
Kommentarer
- oops! glömde ett par tecken. uppdaterad version kommer.
- fungerar bara om vänster sida har samma längder?
- @ user1834164 – – du ’ korrigera om längderna på de vänstra elementen. men det kan räddas. lägger till att …
- varför behöver vi \ phantom {i + j + k} .. Jag kunde inte förstå ..
- @PraphullaKoushik –
\phantom
behövs så att bredden på vänster sida av ekvationsgruppen ingår i bredden för hela gruppen, så att gruppen kommer att centreras.
Svar
Du kan också använda split
-miljön inuti align
-miljö med ett ampersand (&
) där du vill att justeringen ska ske. Här är en 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}
Observera att den sista ekvationen inte finns i en split
-miljö, men ändå justerar med resten, eftersom det fortfarande finns i align
-miljön.
Utgången ser ut så här:
Observera de tomma grupperna ({}
) före tecken. Utan dessa skulle det vara ingen kerning applicerad mellan likhetstecknen och tecknet efteråt, eftersom inriktningen bryter rutan. Medan de tomma grupperna inte gör någonting själva, lägger symbolerna framför dem till matning i matematikläge som om de tomma grupperna var vanliga tecken. Detta gör det möjligt för TeX att välja det lämpligaste avståndet. Om tecknen placerades före likhetstecknen, skulle inriktningsmiljön kärnas runt lika tecken som den borde utan sådant krångel, men då skulle tilläggstecknet för delningsekvationen ligga obekvämt långt tillbaka och kräva någon form av manuell justering av egna.
Kommentarer
- Det fina med den här lösningen är att det inte finns något behov av att röra sig med
\phantom
eller\mathllap
. - Wow!I själva verket verkar det som om du inte behöver ’ t ens behöver delningarna och ersätter
&=
med={}&
gör tricket! - När jag försöker göra det får jag felet ” Extra flik för justering har ändrats till \ cr. ” Jag får detta fel när jag försöker använda mer än ett ampersand inom split. Några idéer?
- @Blaisorblade – anledningen till delningarna är att tillämpa ekvationsnumren ordentligt på varje grupp. ja,
\notag
kan användas, men det ger inte ’ den önskade utgången om ekvationsnumret skulle vara centrerat i gruppen. - Jag försökte den här tekniken och den fungerade när jag konverterade till PDF, men fungerade inte när jag konverterade till HTML med
mk4ht htlatex test.tex "xhtml,mathml"
arbetsflöde. Jag antar att det ’ är ett fel i html-omvandlaren.
Svar
Som en förlängning av barbaras svar kan du bara svepa till höger om dina ekvationer i aligned
undermiljöer. Detta gör att du kan justera lika tecken för de separata ekvationer oberoende av storleken på vänster- eller höger sida.
\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}
Plustecknet på andra raden i den andra ekvationen matchar inte exakt eftersom symbolen ”sa mathbin
. Kanske någon med mer TeX-kunskap kan kommentera hur man bäst fixar det.
Kommentarer
- Tack, det fungerar också. Skillnaden jag ser är att ekvationsnummer ligger på den övre raden i varje ekvation, medan när hela ekvationen är i ’ inriktad ’ miljö är ekvationsnumren vertikalt centrerade. Finns det ett sätt att kontrollera det?
- @eldering – för att få matchande avstånd efter det första plustecknet i sista raden, föregås av en tom grupp,
{}
.
Svar
Här är ett align
-bara version av dina ekvationer:
\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}
Några av justeringarna inkluderar
- Användning av
\mathrel
för korrekt avstånd runt dold=
(ingår via\phantom
); - Några negativa
\nulldelimiter
omslag saknas\left.
avgränsare (annars det skulle finnas ytterligare avstånd mellan operatör / operand); - Höjdjustering för flerradig
\left\{
och\right\}
par.
Som en vanlig tråd kan det vara användbart att granska Herbert Voß ” mathmode
dokument .
Svar
Detta är en sätt att åstadkomma detta för små mängder text genom att använda kommandot \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}
Kommentarer
- Den relevanta delen handlar om
\qquad
, som jag ’ har använt, men det ’ fungerar inte tillräckligt bra. - (+1) Ah! 🙂 Jag letade efter en sådan sak ett tag. Tack så mycket. 🙂
- Om stycken delar upp ekvationerna som ska justeras, vad är den bästa lösningen?
Svar
Om du istället för att anpassa de bakre ekvationerna som du vill rättfärdiga dem (på samma sätt som \multiline
-miljön hanterar efterliggande ekvationer), kan du använda följande trick som jag hämtade från detta svar av 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}
Svar
\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}
ger följande utdata
Kommentarer
- Hur adresserar detta originalinlägget på ett sådant sätt att ’ inte redan har tagits upp av de andra svaren?
Svar
Detta svar fungerar när du använder
-paket. I exemplet nedan definieras två LaTeX-makron\mymidline
och\mylastline
. Båda makron utvidgas i huvudsak till sitt första argument inomalign*
-miljöer.\mymidline
makrot centrerar det och\mylastline
makro högerjusterar det. Därmed subtraheras greppens bredd i det andra argumentet från den tillgängliga ”visningsbredden”. Föralign*
miljöer som bara ska vara den (längsta) vänstra sidan av ekvationen. Exemplet nedan visar hur du kan göra det mest effektivt med ett makro\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}
Om du har den numrerade versionen align*
bör du också överväga ekvationens bredd och etikettseparatorn i det andra argumentet för \mymidline
och \mylastline
. Jag hittade inte ett fördefinierat mått på etikettbredden. Efter några tester visade det sig att \quad\quad(1)
är en lämplig platshållare för etiketten.
\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}
!
framför av det för att göra det till en länk. En moderator eller en annan användare med redigeringsbehörighet kan sedan sätta in!
för att göra det till en bild igen.\documentclass
och lämpliga paket så att de som försöker hjälp don ’ t måste återskapa den.split
för enstaka långa ekvationer snarare änalign
. enligt dokumentet ärsplit
för enstaka långa ekvationer,align
är för flera ekvationer. Numreringen bör påverkas.