![在定义环境之后为定理环境定义共享计数器](https://linux22.com/image/260669/%E5%9C%A8%E5%AE%9A%E4%B9%89%E7%8E%AF%E5%A2%83%E4%B9%8B%E5%90%8E%E4%B8%BA%E5%AE%9A%E7%90%86%E7%8E%AF%E5%A2%83%E5%AE%9A%E4%B9%89%E5%85%B1%E4%BA%AB%E8%AE%A1%E6%95%B0%E5%99%A8.png)
我试图对定理、命题、定义等使用相同的编号。这通常可以通过使用amsmath
和定义这些环境并使用相同的计数器轻松解决:
\newtheorem{theorem}{Theorem}[section]
\newtheorem{proposition}[theorem]{Proposition}
问题:我正在使用一个包含theorem
s、proposition
s 的日记文档类,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
实际上是使用“特殊定理宏”启动的,该宏仅从相应的环境中接收一堆格式(加上计数器和名称)信息。最初,theorem
和proposition
定义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 }.
您需要做的就是使proposition
和definition
环境启动宏类似于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}