例如,在我的宏文件中,我定义了某些定理环境。
\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 的快照