![我怎样才能让 cleveref / enumitem 打印“Proposition 1 (e)”而不是“item (e)”?](https://linux22.com/image/283236/%E6%88%91%E6%80%8E%E6%A0%B7%E6%89%8D%E8%83%BD%E8%AE%A9%20cleveref%20%2F%20enumitem%20%E6%89%93%E5%8D%B0%E2%80%9CProposition%201%20(e)%E2%80%9D%E8%80%8C%E4%B8%8D%E6%98%AF%E2%80%9Citem%20(e)%E2%80%9D%EF%BC%9F.png)
我目前使用enumitem
和cleveref
来显示对定理的引用。有时,我想引用定理中列表中的某个点。它应该显示[Name of theorem type, e.g. Propsiton] [Number] [number inside list]
,但它显示item [number inside list]
我如何获得它?
平均能量损失
\documentclass[a4paper]{scrartcl}
\usepackage{amssymb, amsmath} % needed for math
\usepackage[utf8]{inputenc} % this is needed for umlauts
\usepackage[ngerman]{babel} % this is needed for umlauts
\usepackage[T1]{fontenc} % this is needed for correct output of umlauts in pdf
\usepackage{enumitem}
\usepackage[framed,amsmath,thmmarks,hyperref]{ntheorem}
\usepackage{framed}
\usepackage[german,nameinlink]{cleveref}
\newframedtheorem{satz}{Satz}[section]
\newframedtheorem{proposition}[satz]{Proposition}
\crefname{proposition}{Proposition}{Propositionen}
\begin{document}
\section{adfa}
adsfasdfasdf asdf asdf asd fasdfasd asd fasdf asdf
asdfasdfa sasdfas dfasdf asdf
\begin{proposition}\leavevmode
\begin{enumerate}[label=\alph*), ref=\theenumi{} (\alph*)]
\item asdfasdf asdf asdf sdf
\item sdfas dasdfasd fasdf asdf asdf
\item asdfasd asdf asdf sad f
\item \label{prop:15.2d} a fa ssd fas df
\item \label{prop:15.2e} sdf asd asdf sad f
\end{enumerate}
\end{proposition}
As shown in \cref{prop:15.2d} ...
\end{document}
渲染
“Punkt”在德语中是“物品”的意思。
答案1
除了 (a) 指示 LaTeX在创建交叉引用时将 添加proposition number
到 之前,例如,通过如下指令level-one item number
\begin{enumerate}[label=\alph*), ref=\theproposition~(\alph*)]
当启动枚举列表时,还需要(b)使用命令\crefalias
告知cleveref
类型enumi
(第一级枚举项)的实体应被称为命题;默认情况下,cleveref
将它们称为项目(或德语中的“Punkte”):
\crefalias{enumi}{proposition}
如果仅有的文档中枚举列表的实例位于proposition
环境内,这是实现交叉引用目标所需的唯一两项修改。但是,这个简单的解决方案可能太过深远,因为它适用于全部交叉引用enumi
实体,而不仅仅是命题环境中包含的实体。
幸运的是,该enumitem
包提供了一种方便的方法来创建新的枚举列表以及相关的专用计数器。例如,您可以添加指令
\newlist{propenum}{enumerate}{1} % also creates a counter called 'propenumi'
\setlist[propenum]{label=\alph*), ref=\theproposition~(\alph*)}
\crefalias{propenumi}{proposition}
在序言中,enumitem
和之后cleveref
已加载。然后,使用环境在环境propenum
内创建枚举列表:proposition
\begin{proposition}\leavevmode
\begin{propenum} % use 'propenum', not 'enumerate'
\item asdfasdf asdf asdf sdf
\item sdfas dasdfasd fasdf asdf asdf
\item asdfasd asdf asdf sad f
\item \label{prop:15.2d} a fa ssd fas df
\item \label{prop:15.2e} sdf asd asdf sad f
\end{propenum}
\end{proposition}
使用此设置,指令
As shown in \cref{prop:15.2d} \dots
将生成以下输出:
\cref
-对“普通”一级enumerate
环境项目的交叉引用将继续显示为“Punkt xx”(如果未设置德语选项,则显示为“item xx”...)。
附录:在您的后续评论中,您提到您希望将这些交叉引用嵌入数学模式中,并希望避免看到字符串“Proposition”(或“Propositionen”)以数学斜体模式呈现 - 而不必将说明包含在显式或命令\cref
中。为了实现这一额外目标,您可以在序言中提供以下命令:\text
\textup
\crefname{proposition}{\textup{Proposition}}{\textup{Propositionen}}
\setlist[propenum]{label=\alph*), ref=\textup{\theproposition~(\alph*)}}