在定理环境中使用枚举的最佳实践

在定理环境中使用枚举的最佳实践

假设有一个定理/证明,例如:


\begin{theorem}
The following are equivalent:
  \begin{enumerate}
   \item Statement 1
   \item Statement 2
   \item Statement 3
  \end{enumerate}
\end{theorem}

\begin{proof} (1) $\implies$ (2): Proof if (1) then (2) (2) $\implies$ (3): Proof if (2) then (3) (3) $\implies$ (1): Proof if (3) then (1) \end{proof}

显然,对项目编号进行硬编码不是一个好主意。我想,可以使用带有自定义项目标签的枚举,但话又说回来,这仍然相当于对项目编号进行硬编码。更好的做法是,至少在某种程度上,将枚举环境与自动项目标签生成结合使用,以生成以下形式的标签 $(m) \implies (n)$ (尽管我不知道该怎么做)。也许更好的做法是在证明中根本不使用枚举环境,而只是使用对证明项目的引用,例如在伪代码中


\makeimplies{\ref{ItemLabel1}, \ref{ItemLabel2}} here is proof for if (1) then (2)
显然,我也不知道该怎么做。

无论如何,处理这种情况的建议做法是什么?

答案1

我将使用以下功能来定义项目enumitem包裹。这将要求您标记要引用的项目(使用\label),然后使用 相应地引用它们\ref

在下面的最小示例中,等效项列表使用格式化为的标签构造,并(<arabic#>)带有等效引用输出。这是使用enumerate环境的可选参数 ( [label=..,ref=..]) 完成的。该命令\Implies{<ref1>}{<ref2>}构造$\text{\ref{<ref1>}}\implies\text{\ref{<ref2>}}$,以保持一致性和易用性。

在此处输入图片描述

\documentclass{article}
\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\usepackage{amsthm}% http://ctan.org/pkg/amsthm
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\newtheorem{theorem}{Theorem}
\newcommand{\Implies}[2]{$\text{\ref{#1}}\implies\text{\ref{#2}}$}% X => Y
\begin{document}
\begin{theorem}
The following are equivalent:
  \begin{enumerate}[label=(\arabic*),ref=(\arabic*)]
   \item Statement 1 \label{statement1}
   \item Statement 2 \label{statement2}
   \item Statement 3 \label{statement3}
  \end{enumerate}
\end{theorem}

\begin{proof}
\Implies{statement1}{statement2}: Proof if~\ref{statement1} then~\ref{statement2}.
\Implies{statement2}{statement3}: Proof if~\ref{statement2} then~\ref{statement3}.
\Implies{statement3}{statement1}: Proof if~\ref{statement3} then~\ref{statement1}.
\end{proof}
\end{document}​

这里的主要方法是允许引用列出的项目,这样您就不必担心是否要更改外观,也不必随后修改(硬)编码的证明。此外,您只需要标记要引用的那些条目。在本例中,所有语句都已标记。

相关内容