`\newtheorem{xxxx}{xxxx}[empty]` 中的计数器是否有空值?

`\newtheorem{xxxx}{xxxx}[empty]` 中的计数器是否有空值?

\newtheorem我正在尝试根据文件输入的内容在命令中设置一个可选计数器.sty。例如

\DeclareOption{empty}{
    \edef\counter{} 
}

\DeclareOption{section}{
    \edef\counter{\detokenize{section}} 
}

\ProcessOptions\relax

\theoremstyle{definition}
\newtheorem{definition}{Definition}[\counter]
\providecommand*{\definitionautorefname}{Definition}

包裹amsthm接受section或。chapter相反\counter,我想不是通过设置某个特定值来设置计数器\counter。我已尝试过\empty0以及{}如上所述。

当然,我可以为每个条件使用一组 if,\newtheorem并且只需设置\newtheorem{definition}{Definition}我不想关联任何计数器即可。不过,我想避免这种痛苦的选择。

提前致谢。

答案1

我认为您不应该强迫您的软件包的用户对定义进行编号,而要独立于定理和朋友。

没有理由强迫作者采用这样的风格

引理 1
定理 1
定理 2
定义 1
引理 2
定理 3

(可能带有部分前缀,但那无关紧要)而不是更常见和友好的

引理 1
定理 2
定理 3
定义 4
引理 5
定理 6

(再次带有可能的前缀)。我讨厌阅读这样的交叉引用

见第二章第二部分第六段

或者

第五章第三部分第二段第2条第2款第2条

这些内容来自一本真正的书,书中使用“部分”代替章节,使用“段落”代替小节,并且没有命名小节。页眉中没有关于如何找到所引用定理的任何线索。

在您提出的“空”风格中,读者将不知道引理 2 是在定理 1 之前还是之后。

无论如何,如果你坚持这样做(可能是因为严格的教职规定),诀窍就是定义你自己的设施。

\DeclareOption{empty}{\let\package@thmprefix=F}
\DeclareOption{section}{\let\package@thmprefix=T\def\package@thmlevel{section}}
\DeclareOption{chapter}{\let\package@thmprefix=T\def\package@thmlevel{chapter}}

\DeclareOption{empty}{\let\package@thmprefix=F}
\DeclareOption{section}{\let\package@thmprefix=T\def\package@thmlevel{section}}
\DeclareOption{chapter}{\let\package@thmprefix=T\def\package@thmlevel{chapter}}

\ExecuteOptions{empty}
\ProcessOptions\relax

\RequirePackage{amsthm}

\def\package@newtheorem#1#2{%
  \if\package@thmprefix F%
    \newtheorem{#1}{#2}%
  \else
    \newtheorem{#1}{#2}[\package@thmlevel]
  \fi
}

\package@newtheorem{lemma}{Lemma}
\package@newtheorem{theorem}{Theorem}
\theoremstyle{definition}
\package@newtheorem{definition}{Definition}

这是测试文件

\documentclass{book}

\usepackage{package}
%\usepackage[section]{package}
%\usepackage[chapter]{package}

\begin{document}

\chapter{Title}

\section{Title}

\begin{lemma}
Text
\end{lemma}

\begin{theorem}
Text
\end{theorem}

\begin{theorem}
Text
\end{theorem}

\section{Title}

\begin{definition}
Text
\end{definition}

\begin{lemma}
Text
\end{lemma}

\begin{theorem}
Text
\end{theorem}

\end{document}

使用empty选项输出(默认)

在此处输入图片描述

section使用选项输出

在此处输入图片描述

chapter使用选项输出

在此处输入图片描述

相关内容