我有类似这样的东西:
\usepackage{amsmath}
\begin{document}
\begin{thm}
The following are true:
\begin{enumerate}
\item \label{foo} Foo
\item \label{bar} Bar
\item \label{baz} Baz
\end{enumerate}
\end{thm}
Refer to Theorem \ref{bar}
\end{document}
现在,对 bar 的引用显示为定理 1。我希望它显示为定理 1.2。有什么办法吗?给定理中的每个标签一个子编号?
答案1
我同意 Jubobs 的评论:使用“定理 1.2”很容易造成混淆。
可以这样做:
\documentclass{article}
\usepackage{enumitem}
\newenvironment{thmenum}
{\begin{enumerate}[label=\upshape(\arabic*),ref=\thethm(\arabic*)]}
{\end{enumerate}}
\newtheorem{thm}{Theorem}
\begin{document}
\begin{thm}
The following are true:
\begin{thmenum}
\item \label{foo} Foo
\item \label{bar} Bar
\item \label{baz} Baz
\end{thmenum}
\end{thm}
Refer to Theorem \ref{bar}
\end{document}
我会给这些项目一个独特的编号,以便更清楚地表明“定理 1(2)”指的是定理 1 中的陈述 2。
编辑功能请求
\documentclass{article}
\usepackage{amsthm}
\usepackage{enumitem}
\NewDocumentCommand{\refprefix}{m}{%
\ifinproofref\else #1\fi
}
\newif\ifinproofref
\newcommand{\proofref}[1]{\begingroup\inproofreftrue\ref{#1}\endgroup}
\newenvironment{thmenum}
{\begin{enumerate}[label=\upshape(\arabic*),ref=\refprefix{\thethm}(\arabic*)]}
{\end{enumerate}}
\newtheorem{thm}{Theorem}
\begin{document}
\begin{thm}
The following are true:
\begin{thmenum}
\item \label{foo} Foo
\item \label{bar} Bar
\item \label{baz} Baz
\end{thmenum}
\end{thm}
\begin{proof}
\proofref{foo} is easy. \proofref{bar} is not difficult and
immediately proves also~\proofref{baz}.
\end{proof}
Refer to Theorem~\ref{bar}
\end{document}
的格式ref
是这样的,可以省略。引用该项目时\thethm
必须使用。\proofref