引用定理/引理/推论等子陈述的一种风格如下。假设我们有以下文本(我对第一部分的翻译)1区)。
第一章:态射
...
2. 准有限态射
命题 2.1。设 ... 则等价条件为:
(我) ...
(二)...
(三)...
我想将枚举列表中的项目引用为
(i)
,,在这个命题的证明中(在 SGA 中,这个特定的例子可能是一个坏例子,因为这个(ii)
命题(iii)
没有证明,而且这种引用风格甚至用在推论2.2紧接着这一提议);(2.1, (i))
,,(2.1, (ii))
在(2.1 (iii))
本第一章;(I, 2.1, (i))
,,(I, 2.1, (ii))
在(I, 2.1, (iii))
除第一章。
这种风格在 SGA 和 EGA 中(或多或少)都得到了遵循(EGA 中有逗号,SGA 中没有逗号)。我知道可以手动完成此操作,方法是label
输入章节、命题和列表中的项目,然后提供三个不同的命令来实现这些风格。但我正在寻找一种上下文感知机制,即我只需要label
列表中的三个项目,单个引用命令将根据调用位置产生正确的风格。这种机制需要保存每个项目的相关命题和章节,然后将它们进行比较以获得正确的风格。我也知道\p@enumi
前缀\theenumi
,但不知道如何使其工作。欢迎任何想法或软件包。
编辑:我不知道这是否有很大帮助,但这里有一个穷人对这个问题的解决方案(评论中要求的 MWE):
\documentclass{book}
\renewcommand{\thechapter}{\Roman{chapter}}
\counterwithout{section}{chapter}
\counterwithin*{section}{chapter}
\usepackage{amsthm}
\newtheorem{theorem}{Theorem}[section]
\usepackage{enumitem}
\setlist[enumerate]{label=\textup{(\roman*)}}
\NewDocumentCommand{\itmref}{ m o o }{% itm, thm, ch
\IfValueT{#2}{(}%
\IfValueT{#3}{\ref{#3}, }%
\IfValueT{#2}{\ref{#2}, }%
\ref{#1}%
\IfValueT{#2}{)}%
}
\NewDocumentCommand{\thmref}{ m o }{% thm, ch
(\IfValueT{#2}{\ref{#2}, }%
\ref{#1})%
}
\begin{document}
\chapter{} \label{ch}
\section{}
\begin{theorem} \label{thm1}
Let \dots
\begin{enumerate}
\item \label{itm}
\end{enumerate}
\end{theorem}
\begin{proof}
\itmref{itm}
\end{proof}
\begin{theorem} \label{thm2}
\end{theorem}
\itmref{itm}[thm1],
\thmref{thm2}
\chapter{}
\itmref{itm}[thm1][ch],
\thmref{thm2}[ch]
\end{document}
第 1 页:
第 3 页:
目标是有一个命令\itmref
不需要可选参数[thm]
或,[thm][ch]
并且在所有情况下仍能产生正确的结果。 类似\thmref
。 如果有一些命令\magicref
结合了\itmref
和\nameref
功能,那就更好了。