Jeg prøver å justere et sett med lange ligninger, det er seg selv align miljøer ettersom de fleste av dem sprer seg på flere linjer.

For øyeblikket har jeg bare en sekvens av align miljøer, med hver ligning inni for å justere delene av hver ligning. Jeg legger til et skjermbilde av resultatet:

Ujustert

Det som ønsker å få i stedet er noe som ser mer ut som

Justert

som er det samme sett med ligninger etter å ha gått gjennom copyediting office i en journal og ser mye bedre ut.

Her er en MWE. Jeg vil at alle tre ligningene skal justeres på likhetstegnet.

\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

  • Velkommen til TeX.sx! Som ny bruker uten bildeinnleggsrettigheter, bare inkluder bildet som normalt og fjern ! foran av det for å gjøre det til en lenke. En moderator eller en annen bruker med redigeringsrettigheter kan deretter sette inn !
  • Det ville være mye lettere hvis du oppga koden når det gjelder en fullstendig kompilerbar MWE som illustrerer problemet inkludert \documentclass og de aktuelle pakkene, slik at de som prøver å hjelp don ‘ t å måtte gjenskape den.
  • Kanskje Hvordan justere på tvers av vanlig tekst; som ved å bryte matriser, sett med ligninger, tabeller kan være nyttig.
  • Jeg tror det ‘ er bedre å bruke split for enkle lange ligninger i stedet for align. ifølge dokumentet er split for enkle lange ligninger, align er for flere ligninger. Nummereringen bør påvirkes.

Svar

uten et konkret eksempel, her tolker jeg det du ønsker.

utdata fra eksempelkode

og her er inngangen:

\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 lengste venstre elementet settes inn i begynnelsen som et \phantom og lengdene til de venstre elementene til individet aligned segmenter blir gjort» usynlige «ved å lappe dem til venstre ved hjelp av \mathllap fra mathtools -pakken.

det opprinnelige svaret ble (riktig) bemerket for å justere segmentene riktig bare når venstre side hadde samme lengde. denne modifikasjonen overvinner problemet.

Kommentarer

  • oops! glemte et par tegn. oppdatert versjon kommer.
  • fungerer bare hvis venstre side har samme lengder?
  • @ user1834164 – – du ‘ er riktig om lengdene på venstre element. men det kan berges. legger til at …
  • hvorfor trenger vi \ phantom {i + j + k} .. Jeg kunne ikke forstå ..
  • @PraphullaKoushik – \phantom er nødvendig slik at bredden på venstre side av ligningsgruppen er inkludert i bredden til hele gruppen, slik at gruppen blir sentrert.

Svar

Du kan også bruke split miljøet i align -miljø ved å bruke et ampersand (&) der du vil at justeringen skal finne sted. Her er 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} 

Legg merke til at den siste ligningen ikke er i et split -miljø, men likevel justerer med resten, siden det fortsatt er i align -miljøet.

Utgangen ser slik ut:

Output av et delt miljø i et justeringsmiljø

Legg merke til de tomme gruppene ({}) før ampersandene. Uten disse ville det være ingen tegning brukt mellom likhetstegn og tegnet etterpå, fordi justeringen bryter boksen. Mens de tomme gruppene ikke gjør noe selv, i matematikkmodus legger symbolene foran dem til innføring som om de tomme gruppene var vanlige tegn. Dette gjør det mulig for TeX å velge den mest passende avstanden. Hvis ampersandene ble plassert før likhetstegnene, ville justeringsmiljøet kjerne rundt likhetstegnene slik det burde uten noe slikt bry, men da ville tilleggstegnet til delingsligningen ligge ubehagelig langt bak, og kreve en slags manuell tilpasning av dens egen.

Kommentarer

  • Det fine med tingen om denne løsningen er at det ikke er behov for å rote med \phantom eller \mathllap.
  • Wow!Faktisk ser det ut til at du ikke trenger ‘ t en gang trenger splittene, og erstatter &= med ={}& gjør susen!
  • Når jeg prøver å gjøre det, får jeg feilen » Ekstra justeringsfane er endret til \ cr. » Jeg får denne feilen når jeg prøver å bruke mer enn ett ampersand innenfor split. Noen ideer?
  • @Blaisorblade – årsaken til splittene er å bruke ligningstallene riktig på hver gruppe. ja, \notag kan brukes, men det gir ikke ‘ t den ønskede utdata hvis ligningstallet skal være sentrert i gruppen.
  • Jeg prøvde denne teknikken, og den fungerte når jeg konverterte til PDF, men fungerte dårlig når jeg konverterte til HTML ved hjelp av mk4ht htlatex test.tex "xhtml,mathml" arbeidsflyten. Jeg antar at det ‘ er en feil i html-omformeren.

Svar

Som en utvidelse av svaret fra Barbara, kan du bare pakke inn høyre side av ligningene dine i aligned undermiljøer. Dette gjør at du kan justere likhetstegnene til de separate ligninger uavhengig av størrelsen på venstre eller høyre side.

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

Plusstegnet på den andre linjen i den andre ligningen stemmer ikke akkurat overens fordi det «sa mathbin symbol. Kanskje noen med mer TeX-kunnskap kan kommentere hvordan man best kan løse det.

Kommentarer

  • Takk, det fungerer også. Forskjellen jeg ser er at ligningstall er på den øverste linjen i hver ligning, mens når hele ligningen er i ‘ justert ‘ miljø er ligningstallene vertikalt sentrert. Er det en måte å kontrollere det?
  • @eldering – for å få samsvarende avstand etter det første pluss tegnet i siste linje, foran det med en tom gruppe, {}.

Svar

Her er et align -bar versjon av ligningene dine:

skriv inn bildebeskrivelse her

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

Noen av justeringene inkluderer

  • Bruk av \mathrel for riktig avstand rundt skjult = (inkludert via \phantom);
  • Noe negativ \nulldelimiter skjæring rundt manglende \left. skillelinjer (ellers det ville være ekstra avstand innført mellom operatør / operand);
  • Høydejustering for flerlinje \left\{ og \right\} par.

Som en rød tråd kan det være nyttig å lese Herbert Voß « mathmode dokument .

Svar

Dette er en måte å oppnå dette for små mengder tekst ved å bruke kommandoen \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 aktuelle delen handler om \qquad, som jeg ‘ har brukt, men det ‘ t fungerer godt nok.
  • (+1) Ah! 🙂 Jeg lette etter noe slikt en stund. Mange takk. 🙂
  • Hva er den beste løsningen hvis avsnitt deler opp ligningene som skal justeres?

Svar

Hvis du i stedet for å justere etterligningene du ønsker å rettferdiggjøre dem (på samme måte som \multiline -miljøet håndterer etterligninger), kan du bruke følgende triks, som jeg hentet fra dette svaret 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} 

utelat + 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} 

gir følgende utgang skriv inn bildebeskrivelse her

Kommentarer

  • Hvordan adresserer dette originalinnlegget på en slik måte at ‘ t allerede er adressert av de andre svarene?

Svar

Dette svaret fungerer når du bruker

pakke. Eksemplet nedenfor definerer to LaTeX-makroer\mymidlineog\mylastline. Begge makroene utvides i hovedsak til sitt første argument ialign*-miljøer.\mymidlinemakroen sentrerer den, og\mylastlinemakroen rettjusterer den. Dermed trekkes bredden på tingene i det andre argumentet fra den tilgjengelige «skjermbredden». Foralign*miljøer som bare skal være den (lengste) venstre siden av ligningen. Eksemplet nedenfor viser hvordan du kan gjøre det mest effektivt med en 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}  

Multilinjeformatering innen align *

Hvis du har den nummererte versjonen align*, bør du også vurdere bredden på ligningsetiketten og merkeseparatoren i det andre argumentet til \mymidline og \mylastline. Jeg fant ikke et forhåndsdefinert mål for etikettbredden. Etter noen tester viste det seg at \quad\quad(1) er en passende plassholder for 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}  

skriv inn bildebeskrivelse her

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *