背景:我问了一个比较混乱的问题,但相关问题早些时候。我收到了曼努埃尔(Manuel)的出色回答但我对这个问题的困惑意味着我不幸问错了问题。所以这是一个不同的问题,尽管内容相似,但我希望这可能是A正确的问题,即使不是这正确的问题。
我正在尝试创建一个新环境来排版枚举列表。该环境设计为采用一个强制参数,通常是一个字母。这用作列表中项目的前缀。因此,如果字母是a
,则项目将被标记为a1
,a2
依此类推。标签的排版方式是字母采用小写字母。对项目的引用也应使用小写字母,但有时我希望将字母设置为大写字母,例如在句子开头。
我一直在尝试组合cleveref
并enumitem
实现此结果。列表中的标签没有问题,因为label=\textsc{<letter>}\arabic*
它可以很好地完成工作。
但是,为了便于在句子开头使用不同的格式,我将 选项与 一起使用enumitem
。ref
然后label
,我希望正确\Cref
设置\cref
标签的格式。但是,我不知道该怎么做。
如果我在项目的参考资料中包含字母,例如ref=<letter>\arabic*
,那么我可以使用\creflabelformat{<type>}{<format>}
将标签排版为小写字母。但这对上下文不敏感。\Cref
并\cref
假设任何大小写差异都会影响姓名与引用类型相关,而不是特定项目引用本身的内容。
因此,我使用并尝试使用和ref=\arabic*
设置字母前缀。但是,这意味着我需要在自定义环境中使用和创建自定义格式。问题是这些定义不是全局的,因此当我在文档的其他地方使用或时,它们没有被定义。\crefname
\Crefname
\crefname
\Crefname
\cref
\Cref
如何在没有预先定义的情况下获得所需的结果\crefname
以及\Crefname
我需要的字母?
\documentclass{article}
\usepackage{xparse,enumitem,cleveref,ebgaramond}
\NewDocumentEnvironment{lettered}{ O {} m }{%
\let\labelorig\label
\def\label##1{\labelorig[lettered#2]{##1}}%
\crefname{lettered#2}{\textsc{#2}}{\textsc{#2}}%
\Crefname{lettered#2}{\MakeUppercase{#2}}{\MakeUppercase{#2}}%
\begin{enumerate}[label=\textsc{#2}\arabic*., ref=\arabic*, #1]
}{%
\end{enumerate}%
}
\begin{document}
Some examples:
\begin{lettered}{t}
\item\label{t:thing} A thing.
\item\label{t:another} Another thing.
\end{lettered}
\begin{lettered}{c}
\item\label{c:claim} A claim.
\item\label{c:different} A different claim.
\end{lettered}
The actual output is the next sentence.
\Cref{t:thing} and \cref{t:another} are the subject of claims \cref{c:claim} and \cref{c:different}.
The desired output is the next sentence.
T1 and \textsc{t}2 are the subject of claims \textsc{c}1 and \textsc{c}2.
\end{document}
答案1
好吧。我是个白痴。我可以盯着某个东西看一下午,但只能花 30 秒找到答案后我发帖问一个问题。
事实证明,cleveref
文档对于“单一”引用的构成有一个奇怪的想法。我天真地以为这Single Cross-References
意味着交叉引用代币然后
交叉引用格式单身的
\crefformat
使用和命令来定义或重新定义交叉引用\Crefformat
...
引入了关于排版交叉引用的讨论代币。
但事实证明,文档指的是单个类型交叉引用,而不是单一代币交叉引用,正如我所料。这意味着我只需使用和\crefformat
,就可以\Crefformat
类型在我的自定义环境中创建的所有标签的交叉引用:
\documentclass{article}
\usepackage{xparse,enumitem,cleveref,ebgaramond}
\NewDocumentEnvironment{lettered}{ O {} m }{%
\let\labelorig\label
\def\label##1{\labelorig[lettered]{##1}}%
\begin{enumerate}[label=\textsc{#2}\arabic*., ref=#2\arabic*, #1]
}{%
\end{enumerate}%
}
\crefformat{lettered}{#2\textsc{#1}#3}
\Crefformat{lettered}{#2\MakeUppercase{#1}#3}
\begin{document}
Some examples:
\begin{lettered}{t}
\item\label{t:thing} A thing.
\item\label{t:another} Another thing.
\end{lettered}
\begin{lettered}{c}
\item\label{c:claim} A claim.
\item\label{c:different} A different claim.
\end{lettered}
The actual output is the next sentence.
\Cref{t:thing} and \cref{t:another} are the subject of claims \cref{c:claim} and \cref{c:different}.
The desired output is the next sentence.
T1 and \textsc{t}2 are the subject of claims \textsc{c}1 and \textsc{c}2.
\end{document}
以下是排版单个交叉引用的结果类型涉及四个交叉引用代币: