涉及宏文件时如何更改定理编号

涉及宏文件时如何更改定理编号

例如,在我的宏文件中,我定义了某些定理环境。

\newtheorem{theorem}{Theorem}
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{corollary}[theorem]{Corollary}

\theoremstyle{definition}
\newtheorem{definition}[theorem]{Definition}

再次重申,这些行都在我的macros.sty快捷方式文件中。

过去,我曾使用 更改定理等的编号…… \numberwithin。我最近了解到我可以改为编辑\newtheorem行。例如,如果我想要按部分编号结果,我可以使用

\newtheorem{theorem}{Theorem}[section]

我现在的问题是关于未来的情况,当我有两个文档时,它们都使用同一个macros.sty文件,但是在其中一个文档中我想用其他东西对结果进行编号,section而在另一个文档中我想用其他东西对结果进行编号,比如说chapter

如何在不创建两个不同.sty文件的情况下实现此目的?

编辑:我想我应该补充一点,我正在寻找一种无需返回即可完成此操作的方法\numberwithin。这样做的原因是\numberwithin似乎无法与thmtools软件包很好地配合使用。

答案1

对包使用选项,例如drivercounter,将其设置为默认值,如section在包(mymacro.sty)中一样,并chapter在文件中设置为demochapter.tex

为了简化,我没有添加其他定理定义

当然可能还有其他包裹选项,但这是 OP 的选择......

韓國語

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mymacro}

\usepackage{amsthm}

\RequirePackage{xkeyval}

%% Declare a package option 
\DeclareOptionX{drivercounter}{%
  \def\TheoremDriverCounter{#1}%
}

%% Preset the option with 'section' value
\ExecuteOptionsX{drivercounter=section}

%% Process the options given to the package 
\ProcessOptionsX


\newtheorem{theorem}{Theorem}[\TheoremDriverCounter]


\endinput

演示部分.sty

\documentclass{article}

\usepackage{mymacro}


\begin{document}

\section{First}

\begin{theorem}
Blabla
\end{theorem}

\begin{theorem}
Blabla
\end{theorem}

\section{Second}

\begin{theorem}
Blabla
\end{theorem}
\end{document}

演示章节.tex

\documentclass{book}

\usepackage[drivercounter=chapter]{mymacro}


\begin{document}


\chapter{First}

\section{First}

\begin{theorem}
Blabla
\end{theorem}

\chapter{Second}

\section{First of 2nd}

\begin{theorem}
Blabla 1
\end{theorem}


\section{Second of 2nd}

\begin{theorem}
Blabla 2
\end{theorem}
\end{document}

demochapter.tex 的快照

在此处输入图片描述

相关内容