Próbuję dopasować zestaw długich równań, które same są align, ponieważ większość z nich rozprzestrzenia się na wielu liniach.

Obecnie mam po prostu sekwencję align środowisk, z każdym równaniem wewnątrz w celu wyrównania fragmentów każdego równania. Załączam zrzut ekranu z wynikiem:

Unaligned

Zamiast tego chciałbym otrzymać coś bardziej przypominającego

Wyrównane

czyli ten sam zestaw równań po przejściu przez redakcję czasopisma i wygląda znacznie lepiej.

Oto MWE. Chciałbym, aby wszystkie trzy równania były wyrównane względem znaku równości.

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

Komentarze

  • Witamy w TeX.sx! Jako nowy użytkownik bez uprawnień do publikowania obrazów po prostu dołącz obraz jak zwykle i usuń ! z przodu z tego, aby przekształcić go w łącze. Moderator lub inny użytkownik z uprawnieniami do edycji może następnie ponownie wstawić !, aby ponownie przekształcić go w obraz.
  • Byłoby znacznie łatwiej, gdybyś podał kod pod względem w pełni kompilowalnego MWE , który ilustruje problem, w tym \documentclass i odpowiednie pakiety, tak aby osoby próbujące pomóż nie ' nie trzeba go odtwarzać.
  • Być może Jak wyrównać zwykły tekst; jak przy łamaniu macierzy, zestawów równań, tabel może być przydatne.
  • Myślę, że ' lepiej jest użyć split dla pojedynczych długich równań zamiast align. zgodnie z dokumentem split dotyczy pojedynczych długich równań, a align dotyczy wielu równań. Numeracja powinna ulec zmianie.

Odpowiedź

bez konkretnego przykładu, oto jak interpretuję to, co chcesz.

wyjście przykładowego kodu

a oto wejście:

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

najdłuższy lewy element jest wstawiany na początku jako \phantom, a długości lewych elementów poszczególnych stają się„ niewidoczne ”przez docieranie ich w lewo za pomocą \mathllap z pakietu mathtools.

pierwotna odpowiedź została (poprawnie) odnotowana w celu prawidłowego wyrównania segmentów tylko wtedy, gdy lewe boki miały tę samą długość. Ta modyfikacja rozwiązuje ten problem.

Komentarze

  • ups! zapomniałem kilku ampersandów. Niedługo pojawi się zaktualizowana wersja.
  • działa tylko wtedy, gdy lewe boki mają takie same długości? – ty ' poprawiam długość elementów po lewej stronie. ale można go uratować. dodając, że …
  • dlaczego potrzebujemy \ phantom {i + j + k} .. Nie mogłem zrozumieć ..
  • @PraphullaKoushik – the \phantom jest potrzebne, aby szerokość lewej strony grupy równań była uwzględniona w szerokości całej grupy, tak aby grupa była wyśrodkowana.

Odpowiedź

Możesz także użyć środowiska split wewnątrz align, używając znaku ampersand (&), w którym ma nastąpić wyrównanie. Oto 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} 

Zwróć uwagę, że ostatnie równanie nie znajduje się w środowisku split, ale jest wyrównane z resztą, ponieważ nadal znajduje się w środowisku align.

Wynik wygląda następująco:

Dane wyjściowe podzielonego środowiska wewnątrz wyrównanego środowiska

Zwróć uwagę na puste grupy ({}) przed znakami ampersand. Bez nich nie stosuj kerningu między znakami równości a późniejszym znakiem, ponieważ wyrównanie rozbija ramkę. Podczas gdy puste grupy same nic nie robią, w trybie matematycznym symbole przed nimi dodają kerning, jakby puste grupy były zwykłymi znakami. Dzięki temu TeX może wybrać najbardziej odpowiednie odstępy. Gdyby ampersandy zostały umieszczone przed znakami równości, środowisko wyrównywania objąłby znaki równości tak, jak powinno, bez takich kłopotów, ale wtedy znak dodania równania podziału leżałby niewygodnie daleko wstecz, wymagając jakiegoś ręcznego poprawienia jego własne.

Komentarze

  • Zaletą tego rozwiązania jest to, że nie ma potrzeby bawić się z \phantom lub \mathllap.
  • Wow!W rzeczywistości wygląda na to, że ' nie potrzebujesz nawet podziałów, zastępując &= ={}& załatwia sprawę!
  • Kiedy próbuję to zrobić, pojawia się błąd ” Dodatkowa karta wyrównania została zmieniona na \ cr. ” Ten błąd pojawia się, gdy próbuję użyć więcej niż jednego znaku ampersand w ramach podziału. Jakieś pomysły?
  • @Blaisorblade – powodem podziału jest prawidłowe zastosowanie numerów równań do każdej grupy. tak, \notag może zostać użyte, ale nie ' nie daje pożądanego wyniku, jeśli numer równania powinien być wyśrodkowany na grupie.
  • Wypróbowałem tę technikę i zadziałała podczas konwersji do formatu PDF, ale działała nieprawidłowo podczas konwersji do formatu HTML przy użyciu przepływu pracy mk4ht htlatex test.tex "xhtml,mathml". Zakładam, że ' to błąd w konwerterze HTML.

Odpowiedź

Jako rozszerzenie odpowiedzi Barbary możesz zawinąć tylko prawą stronę swoich równań do aligned środowisk podrzędnych. Pozwala to dopasować znaki równości oddzielnych równania niezależne od rozmiaru lewej lub prawej strony.

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

Znak plus w drugim wierszu drugiego równania nie pasuje dokładnie, ponieważ jest to symbol „sa mathbin. Może ktoś z większą znajomością TeX-a mógłby skomentować, jak najlepiej to naprawić.

Komentarze

  • Dzięki, to też działa. Różnica, którą widzę, polega na tym, że numery równań znajdują się w górnym wierszu każdego równania, podczas gdy całe równanie znajduje się w ' wyrównanych ' środowisko numery równania są wyśrodkowane w pionie. Czy istnieje sposób, aby to kontrolować?
  • @eldering – aby uzyskać pasujące odstępy po pierwszym znaku plus w ostatnim wierszu, poprzedź go pustą grupą, {}.

Odpowiedź

Oto align -tylko wersja twoich równań:

tutaj wprowadź opis obrazu

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

Niektóre z dostosowań obejmuje

  • Używanie \mathrel do odpowiedniego odstępu wokół ukrytego = (zawarte przez \phantom);
  • Niektóre ujemne \nulldelimiter kerning wokół brakujących \left. ograniczników (w przeciwnym razie wprowadzono by dodatkowe odstępy między operatorem / operandem);
  • Regulacja wysokości dla wielu linii \left\{ i \right\} par.

Jako częsty wątek warto zapoznać się z Herbertem Voß „ mathmode dokument .

Odpowiedź

To jest sposób osiągnięcia tego w przypadku małych ilości tekstu za pomocą polecenia \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} 

Komentarze

  • Odpowiednia część dotyczy \qquad, którego ' użyłem, ale to już nie ' nie działa wystarczająco dobrze.
  • (+1) Ach! 🙂 Szukałem czegoś takiego przez jakiś czas. Wielkie dzięki. 🙂
  • Jakie jest najlepsze rozwiązanie w przypadku akapitów dzielących równania do wyrównania?

Odpowiedź

Jeśli zamiast wyrównywać końcowe równania, chcesz je wyrównać do prawej (podobnie do sposobu, w jaki środowisko \multiline obsługuje końcowe równania), możesz użyć następującego sztuczka, którą wybrałem z tej odpowiedzi autorstwa 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} 

pomiń + hfill

Odpowiedź

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

zapewni następujące dane wyjściowe wprowadź tutaj opis obrazu

Komentarze

  • W jaki sposób odnosi się to do oryginalnego posta w taki sposób, że nie ' nie zostało już uwzględnione w innych odpowiedziach?

Odpowiedź

Ta odpowiedź działa, gdy używasz

pakiet. Poniższy przykład definiuje dwa makra LaTeX\mymidlinei\mylastline. Oba makra zasadniczo rozwijają się do pierwszego argumentu w środowiskachalign*. Makro\mymidlinewyśrodkowuje je, a\mylastlinewyrównuje do prawej. W ten sposób szerokość rzeczy w drugim argumencie jest odejmowana od dostępnej „szerokości wyświetlania”. W przypadkualign*środowisk powinno to być (najdłuższą) lewą stroną równania. Poniższy przykład pokazuje, jak możesz to zrobić najskuteczniej za pomocą makra\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}  

Wielowierszowe formatowanie w ramach align *

Jeśli masz numerowaną wersję align*, powinieneś również wziąć pod uwagę szerokość etykiety równania i separatora etykiety w drugim argumencie \mymidline i \mylastline. Nie znalazłem predefiniowanej miary szerokości etykiety. Po kilku testach okazało się, że \quad\quad(1) jest odpowiednim miejscem na etykietę.

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

wprowadź tutaj opis obrazu

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *