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:

Ojusterad

Vad som skulle vilja få istället är något som ser mer ut som

Inriktad

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

  • Välkommen till TeX.sx! Som ny användare utan bildinläggsbehörigheter inkluderar du helt enkelt bilden som vanligt och tar bort ! 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.
  • Det skulle vara mycket lättare om du angav koden i termer av en fullständigt sammanställbar MWE som illustrerar problemet inklusive \documentclass och lämpliga paket så att de som försöker hjälp don ’ t måste återskapa den.
  • Kanske Hur man justerar över vanlig text; som att bryta matriser, uppsättningar av ekvationer, tabeller kan vara till nytta.
  • Jag tror att det ’ är bättre att använda split för enstaka långa ekvationer snarare än align. enligt dokumentet är split för enstaka långa ekvationer, align är för flera ekvationer. Numreringen bör påverkas.

Svara

utan ett konkret exempel, här tolkar jag vad du vill.

utdata från exempelkod

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:

Utmatning av en delad miljö i en inriktningsmiljö

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:

ange bildbeskrivning här

\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} 

utelämna + hfill

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 ange bildbeskrivning här

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\mymidlineoch\mylastline. Båda makron utvidgas i huvudsak till sitt första argument inomalign*-miljöer.\mymidlinemakrot centrerar det och\mylastlinemakro 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}  

Formatering av flera rader inom align *

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}  

ange bildbeskrivning här

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *