使用 amsthm 来编号示例 - 如何解释改变的示例(即 1'、1'' 等)

使用 amsthm 来编号示例 - 如何解释改变的示例(即 1'、1'' 等)

我一直在努力寻找解决方案,并尝试了多种方法https://tex.stackexchange.com/a/43351https://tex.stackexchange.com/a/443,但无法让它工作。我希望发生以下情况:

  • 我在文中某处定义了一个例子,如下

    \begin{shortex}\label{Example1} lorem ipsum \end{shortex}
    
  • 在本文后面,我将介绍该示例的修改版本(示例 1'),如果可能的话,使用cleveref

发生上述情况之前,这是我的代码:

\documentclass[letterpaper,12pt]{article} 

%Math symbol packages
  \usepackage{amsmath}
  \usepackage{amsfonts}
  \usepackage{amssymb}

%Add several formatting packages
  \usepackage{paralist}
  \usepackage[colorlinks=true,hidelinks]{hyperref}
  \usepackage{cleveref}
  \crefdefaultlabelformat{[#2#1#3]}

%Add theorem support
  \usepackage{amsthm}

%Define example
  \theoremstyle{definition}
  \newtheorem{ex}{Example}
  \renewcommand{\theex}{\arabic{ex}}

%Access package-internal code that uses @

\makeatletter

  % Define examples without linebreaks
  \newenvironment{shortex}
  {\refstepcounter{ex}\textsc{Example~}\theex:\normalfont}%\begin{shortex} 
    {}%\end{shortex}

\makeatother

%Define cref for Examples
  \crefname{ex}{}{examples}
  \creflabelformat{ex}{(#2#1#3)}

\begin{document}
   \begin{shortex}\label{ex1} This is example 1 \end{shortex}
\end{document}

我曾尝试摆脱 shortex 并简单地使用{ex},但这仍然不起作用。

谢谢大家给予的帮助!

编辑(djupp):我还发现了大卫卡莱尔的https://tex.stackexchange.com/a/69918/27148现在,如果我可以结合建议的用法\ref(或\cref)来引用旧示例,效果可能会很好。(即,在陈述 2、3、4、5 等之后,我可能想重述示例 1。)

答案1

我不知道这是否是你要找的;我定义了一个varex环境来陈述一个示例的变体,通过原始示例的标签和后缀来计算其编号,默认情况下,后缀是素数,但可以将另一个指定为可选参数。

\documentclass[letterpaper,12pt]{article} 

%Math symbol packages
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

%Add theorem support
\usepackage{amsthm}

%Expanded references
\usepackage{refcount}

%Add several formatting packages
\usepackage{paralist}
\usepackage[colorlinks=true,hidelinks]{hyperref}
\usepackage{cleveref}
\crefdefaultlabelformat{[#2#1#3]}

%Define example
\theoremstyle{definition}
\newtheorem{ex}{Example}
\newcounter{Hex} % a new counter for hyperref

%Access package-internal code that uses @

\makeatletter
\g@addto@macro\ex{\stepcounter{Hex}} % use Hex for making anchors

% Define examples without linebreaks
\newenvironment{varex}[2][$'$]
  {\edef\theex{\getrefnumber{#2}#1}%
   \addtocounter{ex}{-1}
   \ex}
  {\endex}

\makeatother

%Define cref for Examples
  \crefname{ex}{example}{examples}
  \creflabelformat{ex}{(#2#1#3)}

\begin{document}
\begin{ex}\label{first}
An example.
\end{ex}

\begin{ex}\label{second}
Another one.
\end{ex}

\begin{varex}{first}\label{first'}
This is example 1$'$.
\end{varex}

\begin{varex}[$''$]{first}\label{first''}
This is example 1$''$.
\end{varex}

References:

\cref{first}

\cref{second}

\cref{first'}

\cref{first''}

\end{document}

在此处输入图片描述

相关内容