
Я хочу выровнять по правому краю (что-то вроде \raggedleft ?) комментарии каждой строки. Я использую \ \ \ \, что нехорошо. Пожалуйста, предложите мне лучший способ написать это. Мне следует использовать разделение или что-то еще?
\begin{align*}
& \ \ \ Opt_\rho (i,j,M)\\
&= \min_{\kappa \in Seg(i,j)} (Cost(\rho, \kappa, M))\\
& \ \ \ \ \ \ \ \ \ \text{[Comment for the line]}\\
&= \min_{1\leq l\leq i} (\min_{\kappa' \in Seg(l,j)} (Cost(\rho,\kappa',M)))\\
& \ \ \ \ \ \ \ \ \ \text{[Comment for another line]} \\
&= \min_{1\leq l\leq i} (\min_{\kappa''[l:i] \in Seg(l,j)} (\max_{\iota'' \in
\kappa''[l:i]} (||Cost(\rho, \iota'')-M||)))\\
& \ \ \ \ \ \ \ \ \ \text{[More Comments]} \\
&= \min_{1\leq l\leq i} (\min_{\kappa''[l:i] \in Seg(l,j)} (\max (\max_{\iota'' \in \kappa''} (||Cost(\rho, \iota'')-M||)), &\\
& \ \ \ ||Cost(\rho,[l:i])-M||))\\
& \ \ \ \ \ \ \ \ \ \text{[This is a long long long long comment]} \\
&= \min_{1\leq l\leq i} (\max (\min_{\kappa'' \in Seg(l,j-1)} (\max_{\iota'' \in \kappa''} (||Cost(\rho, \iota'')-M||))), &\\
& \ \ \ ||Cost(\rho,[l:i])-M||)\\
& \ \ \ \ \ \ \ \ \ \text{[Finally this comment]} \\
\end{align*}
решение1
Моим первым предложением, не зная больше, было бы использовать flalign*
среду, которая использует максимально доступную ей ширину, и поместить комментарии как выровненную по правому краю часть следующей группы выравнивания, примерно так:
\documentclass[12pt]{article}
\usepackage{amsmath}
\DeclareMathOperator{\Opt}{Opt}
\DeclareMathOperator{\Cost}{Cost}
\DeclareMathOperator{\Seg}{Seg}
\usepackage{mathtools}
\begin{document}
\begin{flalign*}
&\phantom{=\ } \Opt_\rho (i,j,M)\\
&= \min_{\kappa \in \Seg(i,j)} (\Cost(\rho, \kappa, M)) & \text{[Comment for the line]}\\
&= \min_{1\leq l\leq i} (\min_{\kappa' \in \Seg(l,j)} (\Cost(\rho,\kappa',M))) & \text{[Comment for another line]} \\
&= \min_{1\leq l\leq i} (\min_{\kappa''[l:i] \in \Seg(l,j)} (\max_{\iota'' \in
\kappa''[l:i]} (||\Cost(\rho, \iota'')-M||))) & \text{[More Comments]} \\
&= \min_{1\leq l\leq i} (\min_{\kappa''[l:i] \in \Seg(l,j)} (\max (\max_{\iota'' \in \kappa''} (||\Cost(\rho, \iota'')-M||)), &\\
&\phantom{=\ } ||\Cost(\rho,[l:i])-M||)) & \mathllap{\text{[This is a long long long long comment]}} \\
&= \min_{1\leq l\leq i} (\max (\min_{\kappa'' \in \Seg(l,j-1)} (\max_{\iota'' \in \kappa''} (||\Cost(\rho, \iota'')-M||))), &\\
&\phantom{=\ } ||\Cost(\rho,[l:i])-M||) & \text{[Finally this comment]} \\
\end{flalign*}
\end{document}
Пара дополнительных вещей: действительно длинный комментарий, как есть, сделал бы "колонку" для заметок слишком широкой, поэтому я позволял \mathllap
ему горизонтально перекрывать части уравнения; к счастью, строка, к которой он применяется, не такая длинная. Если бы это было так, вам, вероятно, пришлось бы поместить этот комментарий на отдельную строку.
Кроме того, я предлагаю использовать \DeclareMathOperator
для таких вещей, как «Cost» и «Opt», поскольку полные «слова» в mathmode выглядят неправильно, если их не обрабатывать другим способом.
Как отметил Зарко в комментариях, наилучший вариант будет разным для страниц разного размера, поэтому в вашем конкретном случае он может не сработать без внесения изменений.
решение2
Я предлагаю решение, основанное на \intertext
, с неровным содержанием слева:
\documentclass{article}
\usepackage{amsmath}
\DeclareMathOperator{\Cost}{Cost}
\DeclareMathOperator{\Opt}{Opt}
\DeclareMathOperator{\Seg}{Seg}
\begin{document}
\begin{align*}
& \Opt_\rho (i,j,M)\\
& = \min_{\kappa \in \Seg(i,j)} (\Cost(\rho, \kappa, M)) \\[-3ex]
\intertext{\raggedleft [From Eq. \ref{eq:opt}]}
& = \min_{1\leq l\leq i} (\min_{\kappa' \in \Seg(l,j)} (\Cost(\rho,\kappa',M))) \\[-3ex]
\intertext{[\raggedleft From Proposition \ref{prop:minmin}]}
&= \min_{1\leq l\leq i} (\min_{\kappa''[l:i] \in \Seg(l,j)} (\max_{\iota'' \in
\kappa''[l:i]} (\|\Cost(\rho, \iota'')-M\|))) \\[-2.5ex]
\intertext{\raggedleft [Definition of $\Cost(\rho, \kappa''[l:i],M)$]}
& = \min_{1\leq l\leq i} (\min_{\kappa''[l:i] \in \Seg(l,j)} (\max (\max_{\iota'' \in \kappa''} (\|\Cost(\rho, \iota'')-M\|)), \|\Cost(\rho,[l:i])-M\|)) \\[-2.5ex]
\intertext{\raggedleft [Separating the last segment $[l:i]$]}
& = \min_{1\leq l\leq i} (\max (\min_{\kappa'' \in \Seg(l,j-1)} (\max_{\iota'' \in \kappa''} (\|\Cost(\rho,
\iota'')-M\|))), \|\Cost(\rho,[l:i])-M \|) \\[-2.5ex]
\intertext{\raggedleft [From Proposition \ref{prop:minmax}]} \\
\end{align*}
\end{document}
решение3
С использованием mathtools
и linegoal
пакетов. Поскольку ваше уравнение довольно широкое, я добавляю geometry
пакет для увеличения \textwidth
размера.
Для уравнений используются align*
и split
среды. Длинные комментарии пишутся в \parbox
:
\documentclass{article}
\usepackage{geometry}
\usepackage{mathtools}
\DeclareMathOperator{\cost}{Cost}
\DeclareMathOperator{\opt}{Opt}
\DeclareMathOperator{\seg}{Seg}
\DeclarePairedDelimiterX{\norm}[1]\lVert\rVert{#1}
\usepackage{linegoal}
\begin{document}
\begin{align*}
\MoveEqLeft
\opt_\rho (i,j,M)
& = \min_{\kappa \in\seg(i,j)} (\cost(\rho, \kappa, M))
&& \text{[From Eq. \ref{eq:opt}]} \\
& = \min_{1\leq l\leq i} (\min_{\kappa' \in \seg(l,j)} (\cost(\rho,\kappa',M)))
&& \text{[From Proposition \ref{prop:minmin}]} \\
& = \min_{1\leq l\leq i} (\min_{\kappa''[l:i] \in Seg(l,j)}
(\max_{\iota'' \in \kappa''[l:i]} (\norm{\cost(\rho, \iota'')-M} )))
&& \text{[Definition of $\cost(\rho, \kappa''[l:i],M)$]} \\
\begin{split}
& = \min_{1\leq l\leq i} (\max (\min_{\kappa'' \in Seg(l,j-1)}
(\max_{\iota'' \in \kappa''}\\
&\qquad (\norm{\cost(\rho, \iota'')-M} ))), \norm{\cost(\rho,[l:i])-M})
\end{split} && \parbox{\linegoal}{\raggedright
[This is a very, very, very long comment in two lines]}
\end{align*}
\end{document}