在派生对齐行中进行注释的最佳实践?

在派生对齐行中进行注释的最佳实践?

当展示一个基于先前介绍的定理或方程的冗长的数学推导时,很好的做法是逐行写下推导行(例如使用环境align),然后在应用特定步骤的左边或右边距添加所使用的定理或方程的编号。

是否有一个软件包或一个好的、干净的方法来实现这一点?我觉得我目前使用的方法alignat{2}有点笨拙。

\begin{alignat}{2}
  & &   foo &= bar \\
  \text{Lemma \ref{lem:Bla} &\quad & foo &= boo
\end{alignat}

答案1

您可以\tag在任何amsmath显示环境中使用宏来为方程式的一行添加标签,例如您想要引用的定理。如果您还想要一个真正的行号,您必须进行一些编程,否则将重新定义将打印的\tag“数字”\ref为您选择的任何标签(可能不是您想要的行号)。这是一个粗略的尝试:

\documentclass{article}
\usepackage{amsmath}
\newtheorem{lem}{Lemma}
\let\mylabel=\label
\newcommand*{\referto}[2]{
 \refstepcounter{equation}%
 \mylabel{#2}
 \tag*{by Lemma \ref{#1} \quad  (\theequation)}%
}
\begin{document}
 \begin{lem}
  \label{lem:one}
  We have foo equal to bar.
 \end{lem}

 \begin{lem}
  \label{lem:two}
  We have foo equal to boo.
 \end{lem}

 That is, we have
 \begin{align}
  \text{foo} &= \text{bar} \referto{lem:one}{line:one} \\
  \text{foo} &= \text{boo} \referto{lem:two}{line:two} \\
  \text{boo} &= \text{bar} \label{line:three}
 \end{align}
 whence the theorem (see lines \ref{line:one}, \ref{line:two}, \ref{line:three}).

\end{document}

唯一完全不透明的部分是\mylabel命令。事实证明,amsmath重新定义\label为使用\tag,但我们不想要这个,所以我们只保存原始版本供自己使用。

相关内容