编辑自定义环境的 Cref

编辑自定义环境的 Cref

我最近使用了 Roelof 的答案列举文本中的案例我希望能够使用标签 Cref 来调用不同的案例。

环境是

\newcounter{casenum}
\newenvironment{caseof}{\setcounter{casenum}{1}}{\vskip.5\baselineskip}
\newcommand{\case}[2]{\vskip.5\baselineskip\par\noindent {\bfseries Case \arabic{casenum}:} #1\\#2\addtocounter{casenum}{1}}

编辑的示例是

\documentclass{article}
\begin{document}
  \newcounter{casenum}
  \newenvironment{caseof}{\setcounter{casenum}{1}}{\vskip.5\baselineskip}
  \newcommand{\case}[2]{\vskip.5\baselineskip\par\noindent {\bfseries Case \arabic{casenum}:} #1\\#2\addtocounter{casenum}{1}}
  \begin{caseof}
    \case{$x>0$}{
      In this case, $x$ is larger than $0$ \label{c:1}
    }
    \case{$x<0$}{
      In this case, $x$ is smaller than $0$ \label{c:2}
    }
    \case{$x=0$}{In this case, $x$ equals $0$\label{c:3}}
  \end{caseof}
\end{document}

我怎样才能改变 Cref,以便我可以使用说

\Cref{c:1} is a good example for positive $x$

并让 Latex 将其输出为

情况1)是正 x 的一个很好的例子。

如果我使用 \roman 则应该说

案例(一)是正 x 的一个很好的例子。

ETC

其中,就像正规方程一样,您可以单击 (1)/(i),它将引导您到文档的该部分。

非常感谢

答案1

如果你真的想要大胆的引用:

\documentclass{article}
\usepackage{hyperref}
\usepackage[nameinlink]{cleveref}

\newcounter{casenum}
\newenvironment{caseof}
  {\setcounter{casenum}{0}}
  {\par\addvspace{.5\baselineskip}}

\renewcommand*{\thecasenum}{\arabic{casenum}}

\newcommand{\case}[2]{%
  \par\addvspace{.5\baselineskip}%
  \noindent \refstepcounter{casenum}\textbf{Case \thecasenum:}~#1\\*
  #2\ifhmode\unskip\fi
}

\crefname{casenum}{\protect\textbf{case}}{\protect\textbf{cases}}
\Crefname{casenum}{\protect\textbf{Case}}{\protect\textbf{Cases}}
\creflabelformat{casenum}{#2\textbf{(#1)}#3}

\begin{document}

  \begin{caseof}
    \case{$x>0$\label{c:1}}{%
      In this case, $x$ is larger than $0$.%
    }
    \case{$x<0$\label{c:2}}{%
      In this case, $x$ is smaller than $0$.%
    }
    \case{$x=0$\label{c:3}}{%
      In this case, $x$ equals $0$.%
    }
  \end{caseof}

  \Cref{c:1} is a good example for positive $x$.

\end{document}

在此处输入图片描述

请注意,我曾经\\*防止分页符,您可能想要重新实现您的caseof环境enumitem(这将是另一个问题)。

如果您不想要粗体引用,请替换:

\crefname{casenum}{\protect\textbf{case}}{\protect\textbf{cases}}
\Crefname{casenum}{\protect\textbf{Case}}{\protect\textbf{Cases}}
\creflabelformat{casenum}{#2\textbf{(#1)}#3}

和:

\crefname{casenum}{case}{cases}
\creflabelformat{casenum}{#2(#1)#3}

在此处输入图片描述

对于罗马数字,请替换:

\renewcommand*{\thecasenum}{\arabic{casenum}}

和:

\renewcommand*{\thecasenum}{\roman{casenum}}

在此处输入图片描述

答案2

您也可以使用该enumitem包,如下所示。

\documentclass{memoir}
\usepackage{hyperref}
\usepackage[nameinlink]{cleveref}

\usepackage{enumitem}

\newlist{romcases}{enumerate}{3}
\setlist[romcases,1]{%
    label=\sffamily{Case (\roman*):},
    ref=\normalfont{(\roman*)},
    wide, labelindent=0pt,itemsep=0pt,topsep=0pt
}
\crefname{romcasesi}{Case}{Cases}
\Crefname{romcasesi}{Case}{Cases}

\begin{document}

\begin{romcases}

  \item $x>0$\label{c:1}\\
    In this case, $x$ is larger than $0$.

  \item $x<0$\label{c:2}\\
    In this case, $x$ is smaller than $0$.

  \item $x=0$\label{c:3}\\
    In this case, $x$ equals $0$.

\end{romcases}

\Cref{c:1} is a good example for positive $x$.

\end{document}

使用 enumitem 列出案例

相关内容