Jeg prøver at justere et sæt lange ligninger, der selv er align miljøer, da de fleste af dem spredes på flere linjer.

I øjeblikket har jeg bare en sekvens af align miljøer med hver ligning inde for at justere brikkerne i hver ligning. Jeg vedhæfter et screenshot af resultatet:

Ujusteret

Hvad der gerne vil få i stedet, er noget der ligner

Justeret

som er det samme sæt ligninger efter at have gennemgået en journals kopieringskontor og ser meget bedre ud.

Her er en MWE. Jeg vil gerne have, at alle tre ligninger stemmer overens med ligestegnet.

\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 bruger uden billedopslagsrettigheder skal du blot inkludere billedet som normalt og fjerne ! foran af det for at gøre det til et link. En moderator eller en anden bruger med redigeringsrettigheder kan derefter genindsætte ! for at gøre det til et billede igen.
  • Det ville være meget lettere, hvis du angav koden med hensyn til en fuldt kompilerbar MWE , der illustrerer problemet inklusive \documentclass og de relevante pakker, så de, der prøver at hjælp don ‘ t nødt til at genskabe det.
  • Måske Sådan justeres på tværs af almindelig tekst; som ved at bryde matricer, sæt af ligninger, tabeller kan være nyttigt.
  • Jeg synes, det er ‘ bedre at bruge split til enkelte lange ligninger i stedet for align. ifølge dokumentet er split for enkelt lange ligninger, align er for flere ligninger. Nummereringen skal påvirkes.

Svar

uden et konkret eksempel, her fortolker jeg, hvad du ønsker.

output af eksempelkode

og her er input:

\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ængste venstre element indsættes i begyndelsen som et \phantom og længderne af de venstre elementer for det enkelte aligned -segmenter bliver” usynlige “ved at lappe dem til venstre ved hjælp af \mathllap fra mathtools -pakken.

det originale svar blev (korrekt) bemærket for kun at justere segmenterne korrekt, når venstre side havde samme længde. denne ændring overvinder problemet.

Kommentarer

  • Ups! har du glemt et par tegn. opdateret version kommer.
  • fungerer kun, hvis venstre side har de samme længder?
  • @ user1834164 – – du ‘ korriger længderne på venstre element. men det kan reddes. tilføjer at …
  • hvorfor har vi brug for \ phantom {i + j + k} .. Jeg kunne ikke forstå ..
  • @PraphullaKoushik – \phantom er nødvendig, så bredden på venstre side af ligningsgruppen er inkluderet i bredden af hele gruppen, så gruppen bliver centreret.

Svar

Du kan også bruge split miljøet i align -miljø ved hjælp af et ampersand (&), hvor du ønsker, at justeringen skal finde 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} 

Bemærk, at den sidste ligning ikke er inde i et split -miljø, men stadig justeres med resten, da det stadig er inden for align miljøet.

Outputtet ser sådan ud:

Output af et delt miljø i et align-miljø

Bemærk de tomme grupper ({}) før ampersands. Uden disse ville der være ingen kerning anvendt mellem ligetegnene og tegnet bagefter, fordi justeringen bryder boksen. Mens de tomme grupper ikke gør noget selv, i matematisk tilstand tilføjer symbolerne foran dem kerning, som om de tomme grupper var almindelige tegn. Dette gør det muligt for TeX at vælge den mest passende afstand. Hvis ampersands blev placeret før lige tegn, ville justeringsmiljøet kerne omkring lige tegn som det burde uden sådan besvær, men så tilføjede tegn på splitligningen ville ligge ubehageligt langt tilbage og kræve en slags manuel tilpasning af dens egen.

Kommentarer

  • Det pæne ved ting ved denne løsning er, at der ikke er behov for at rode med \phantom eller \mathllap.
  • Wow!Faktisk ser det ud til, at du ikke ‘ ikke engang har brug for splittelserne, idet du erstatter &= med ={}& gør tricket!
  • Når jeg prøver at gøre det, får jeg fejlen ” Ekstra justeringsfane er blevet ændret til \ cr. ” Jeg får denne fejl, når jeg prøver at bruge mere end et ampersand inden for split. Eventuelle ideer?
  • @Blaisorblade – grunden til splittelserne er at anvende ligningstallene korrekt til hver gruppe. ja, \notag kunne bruges, men det giver ikke ‘ det ønskede output, hvis ligningsnummeret skulle være centreret om gruppen.
  • Jeg prøvede denne teknik, og den fungerede, når jeg konverterede til PDF, men fungerede ikke, når jeg konverterede til HTML ved hjælp af mk4ht htlatex test.tex "xhtml,mathml" workflow. Jeg antager, at det ‘ er en fejl i html-konverteren.

Svar

Som en udvidelse af Barbaras svar kunne du kun pakke den højre side af dine ligninger ind i aligned undermiljøer. Dette giver dig mulighed for at justere ens tegn på de separate ligninger uafhængigt af størrelsen på venstre eller højre 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} 

Plustegnet på anden linje i den anden ligning stemmer ikke nøjagtigt overens, fordi det “sa mathbin symbol. Måske kan nogen med mere TeX-viden kommentere, hvordan man bedst løser det.

Kommentarer

  • Tak, det fungerer også. Forskellen jeg ser er, at ligningstal er på den øverste linje i hver ligning, mens når hele ligningen er i ‘ justeret ‘ miljø er ligningstallene lodret centreret. Er der en måde at kontrollere det på?
  • @eldering – for at få den matchende afstand efter det første plustegn i sidste linje, gå foran den med en tom gruppe, {}.

Svar

Her er et align -Kun version af dine ligninger:

indtast billedbeskrivelse 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} ​ 

Nogle af justeringerne inkluderer

  • Brug af \mathrel til korrekt afstand omkring skjult = (inkluderet via \phantom);
  • Noget negativt \nulldelimiter omvendt mangler \left. afgrænsere (ellers der ville blive introduceret yderligere afstand mellem operatør / operand);
  • Højdejustering for multi-line \left\{ og \right\} par.

Som en fælles tråd kan det være nyttigt at gennemgå Herbert Voß “ mathmode dokument .

Svar

Dette er en måde at opnå dette på små mængder tekst ved hjælp af 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 relevante del handler om \qquad, som jeg ‘ har brugt, men det ‘ t fungerer godt nok.
  • (+1) Ah! 🙂 Jeg ledte efter sådan en ting et stykke tid. Mange tak. 🙂
  • I tilfælde af at afsnit opdeler ligningerne, der skal justeres, hvad er den bedste løsning?

Svar

Hvis du i stedet for at justere de efterfølgende ligninger, du ønsker at retfærdiggøre dem (på samme måde som \multiline -miljøet håndterer efterligninger), kan du bruge følgende trick, som jeg hentede fra dette svar af 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} 

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

giver følgende output indtast billedebeskrivelse her

Kommentarer

  • Hvordan adresserer dette det oprindelige indlæg på en sådan måde, at ‘ ikke allerede er adresseret af de andre svar?

Svar

Dette svar fungerer, når du bruger

pakke. Eksemplet nedenfor definerer to LaTeX-makroer\mymidlineog\mylastline. Begge makroer udvides i det væsentlige til deres første argument inden foralign*miljøer.\mymidlinemakroen centrerer den, og makroen\mylastlinejusterer den højre. Dermed trækkes bredden af tingene i det andet argument fra den tilgængelige “skærmbredde”. Foralign*miljøer, der bare skal være den (længste) venstre side af ligningen. Eksemplet nedenfor viser, hvordan du kan gø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}  

Multline-lignende formatering inden for align *

Hvis du har den nummererede version align*, bør du også overveje bredden på ligningsetiketten og etiketseparatoren i det andet argument for \mymidline og \mylastline. Jeg fandt ikke et foruddefineret mål for etiketbredden. Efter nogle tests viste det sig, at \quad\quad(1) er en passende pladsholder 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}  

indtast billedbeskrivelse her

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *