为用户定义的环境添加新的 crossref 类型

为用户定义的环境添加新的 crossref 类型

简而言之,我正在尝试定义一个comment具有自己的 crossref 类型和计数器的环境。我希望以后能够引用这些评论环境。

看起来就像cleveref我想要的那样,但我发现文档有点难以理解。据我所知,这应该可行:

\documentclass{article}

\usepackage{cleveref}

\newcounter{CommentCount}
\setcounter{CommentCount}{1}
\crefalias{CommentCount}{comments}

\newenvironment{comment}[1][\theCommentCount]
    {\label[comments]{#1}\textbf{Comment \#\theCommentCount:}\itshape}
    {\stepcounter{CommentCount}}

\begin{document}

Some text

\begin{comment}[wibble]
more text
\end{comment}

See Comment~\cref{comments}{wibble}.

\end{document}

但这给出了:! Use of \cref@override@label@type doesn't match its definition.

我接近了吗?

答案1

我会\crefalias使用以下指令

\crefname{CommentCount}{comment}{comments}

由于您要使用计数器进行交叉引用,因此您应该使用\refstepcounter而不是\stepcounter来增加计数器变量CommentCount

在此处输入图片描述

\documentclass{article}
\newcounter{CommentCount}
\setcounter{CommentCount}{0}

\newenvironment{comment}[1]
    {\refstepcounter{CommentCount}%
     \label{comment:#1}%
     \par\noindent\textbf{Comment \#\theCommentCount:}\itshape}
    {\par}

\usepackage{cleveref}  % load "cleveref" as late as possible
\crefname{CommentCount}{Comment}{Comments}

\begin{document}
Some text\dots
\begin{comment}{wibble}
More text
\end{comment}
\begin{comment}{wobble}
Still more text
\end{comment}
See \cref{comment:wibble,comment:wobble}.
\end{document}

相关内容