我正在排版一篇数学论文,其中很多时候我需要将证明分解成几个案例。我一直将它们放在 itemize 环境中,但这很令人困惑,因为像“案例 1”这样的内容不再是唯一定义的;我希望名称具有全局范围,这样我就可以参考先前定理的子案例。
理想情况下,我希望使用类似 itemize 的功能,但使用单独的计数器来指示环境已使用的次数。然后,在第一次出现环境时,案例应该显示为 (A1) (A2) (A3),在第二次出现环境时,案例应该显示为 (B1) (B2) (B3),等等。
有没有包或其他简单的方法来解决这个问题?
答案1
我反对在校样中列举或逐项列出清单;它们只会通过移动边距来混淆读者。
这是一个模仿列表的实现,它允许\label
不添加不需要的空格。
\documentclass{article}
\usepackage{amsthm}
\newtheorem{thm}{Theorem}[section]
\newcounter{case}
\renewcommand{\thecase}{\Alph{case}}
\newcounter{proofcase}[case]
\renewcommand{\theproofcase}{(\thecase\arabic{proofcase})}
\newif\ifusedcase
\newcommand{\proofcase}{%
\ifusedcase\else\usedcasetrue\stepcounter{case}\fi
\par
\refstepcounter{proofcase}
\everypar=\expandafter{\the\everypar{\setbox0=\lastbox}\everypar{}Case \theproofcase\ }%
}
\begin{document}
\section{Preliminaries}
\begin{thm}
There exists a talking mule.
\end{thm}
\begin{proof}
We shall prove the statements in a few steps.
\proofcase\label{talkingmule-start}
Go to a suitable cinema.
\proofcase\label{talkingmule-end}
It's that easy.
\end{proof}
\section{The tough thing}
\begin{thm}
We can do it!
\end{thm}
\begin{proof}
\proofcase\label{Yes}
Go in an old castle.
\proofcase\label{Inga}
Ensure you have a pretty assistant.
\proofcase\label{Igor}
Send the other assistant to get a brain.
\proofcase\label{End}
That's it.
\end{proof}
Case~\ref{talkingmule-start} may be difficult. Case~\ref{Igor} can
have unexpected consequences.
\end{document}
答案2
这是一个基本的实现,展示了如何使用enumitem
创建一个自定义的列表环境,例如thmcases
,打印案例十.#对于每种情况,X是定理数,并且#是案件编号。当然,您可以根据需要进行修改。
\documentclass{article}
\usepackage{amsthm,enumitem}
\newtheorem{theorem}{Theorem}
\newlist{thmcases}{enumerate}{1}
\setlist[thmcases]{
label=\textbf{\upshape Case~\thetheorem.\arabic*},
leftmargin=*,
ref={\thetheorem.\arabic*}}
\begin{document}
\begin{theorem}
This is a theorem.
\begin{thmcases}
\item This is the first case
\item This is the second case\label{casetwo}
\item This is the last case
\end{thmcases}
\end{theorem}
See Case~\ref{casetwo} that you should \ldots
\end{document}