在定义环境之后为定理环境定义共享计数器

在定义环境之后为定理环境定义共享计数器

我试图对定理、命题、定义等使用相同的编号。这通常可以通过使用amsmath和定义这些环境并使用相同的计数器轻松解决:

\newtheorem{theorem}{Theorem}[section]  
\newtheorem{proposition}[theorem]{Proposition} 

问题:我正在使用一个包含theorems、propositions 的日记文档类,definition s 等。因此我需要更改计数器环境已经定义好了,类似于可以简单地用以下方式改变数字格式:

\renewcommand{\theprop}{\arabic{section}.\arabic{prop}} 

就我而言,文档类别是:

\documentclass[twocolumn]{svjour3}     

刚刚发现非常简单的解决方案受到启发如何识别方程、定理、截面的计数器。解决方案是匹配计数器:

\makeatletter
\let\c@proposition\c@theorem
\let\c@corollary\c@theorem
\let\c@lemma\c@theorem
\let\c@definition\c@theorem
\let\c@example\c@theorem
\makeatother

答案1

这些环境的定义svjour3实际上是使用“特殊定理宏”启动的,该宏仅从相应的环境中接收一堆格式(加上计数器和名称)信息。最初,theoremproposition定义definition如下:

> \theorem=macro:
->\@spthm {theorem}{\csname theoremname\endcsname }{\bfseries }{\itshape }.

> \proposition=macro:
->\@spthm {proposition}{\csname propositionname\endcsname }{\bfseries }{\itshape }.

> \definition=macro:
->\@spthm {definition}{\csname definitionname\endcsname }{\bfseries }{\rmfamily }.

您需要做的就是使propositiondefinition环境启动宏类似于theorem

在此处输入图片描述

\documentclass[twocolumn]{svjour3}% http://www.e-publications.org/springer/support/spr-chicago.html
\makeatletter
\def\proposition{\@spthm{theorem}{\csname propositionname\endcsname}{\bfseries}{\itshape}}
\def\definition{\@spthm{theorem}{\csname definitionname\endcsname}{\bfseries}{\itshape}}
\makeatother
\begin{document}
\begin{theorem}This is a theorem.\end{theorem}
\begin{proposition}This is a proposition.\end{proposition}
\begin{definition}This is a definition.\end{definition}
\begin{theorem}This is a theorem.\end{theorem}
\begin{proposition}This is a proposition.\end{proposition}
\begin{definition}This is a definition.\end{definition}
\end{document}

答案2

该类svjour3使用不同的命令来定义新的“定理”,但并不要求这样做。如果您传递该nospthms选项,则不会定义任何预定义的定理。

\documentclass[nospthms]{svjour3}

\usepackage{amsthm}
\newtheorem{theorem}{Theorem}
\newtheorem{proposition}[theorem]{Proposition}
\theoremstyle{definition}
\newtheorem{definition}[theorem]{Definition}

或者,如果您想使用该类提供的工具箱,您可以取消定义预定义的环境:

\documentclass{svjour3}

% Undefine the predefined environments
\let\theorem\relax
\let\proposition\relax
\let\definition\relax

% Define them anew
\spnewtheorem{theorem}{Theorem}{\bfseries}{\itshape}
\spnewtheorem{proposition}[theorem]{Proposition}{\bfseries}{\itshape}
\spnewtheorem{definition}[theorem]{Definition}{\bfseries}{\upshape}

相关内容