在仔细阅读了这个网站和tcolorbox
文档一个多小时后,我还是搞不清楚如何重置derivation
环境中的方程计数器。我用编写了旧版本,mdframed
它和环境开始时一样简单\setcounter{equation}{0}
,但这显然在这里不起作用。我需要从每个实例开始重新编号derivation
。我觉得这很简单,我只是没有看到它。
我的 MWE:
% !TEX TS-program = lualatexmk
% !TEX encoding = UTF-8 Unicode
\documentclass{article}
\usepackage{amsmath}
\usepackage{tcolorbox}
\tcbuselibrary{theorems}
\newtcolorbox[auto counter]{derivation}{%
ams align,%
title={DERIVATION \thetcbcounter},%
fonttitle=\bfseries,%
label={derivation@\thetcbcounter},
coltitle=black,%
colback=orange!25,%
colframe=orange!60%
%colback=orange!5!white,%
%colframe=orange!75!black%
}%
\begin{document}
\begin{derivation}
x + y &= z && \text{given} \\
y &= z - x && \text{solve for \(y\)}
\end{derivation}
\begin{derivation}
\gamma &= \frac{1}{\sqrt{1-v^2}} && \text{definition} \\
v &= \sqrt{1-\frac{1}{\gamma^2}} && \text{solve for \(v\)}
\end{derivation}
\end{document}
答案1
有各种钩子允许人们在构建框的各个阶段执行一些代码。以下使用code
和after
。它还重新定义和恢复方程编号,类似于这个问题。但请注意,我并不想给人留下这是一个超级稳定的解决方案的印象。我没有检查这是否适用于 hyperref,也没有进行其他交叉检查。然而,一个可能更稳定的解决方案(可能会或可能不会使用未来版本的 LaTeX 内核)可能使用与此代码相同的键。
\documentclass{article}
\usepackage{amsmath}
\usepackage{tcolorbox}
\tcbuselibrary{theorems}
\newcounter{savedeq}
\newtcolorbox[auto counter]{derivation}{%
code=\setcounter{savedeq}{\value{equation}}%
\setcounter{equation}{0}\renewcommand{\theequation}{\thetcbcounter-\arabic{equation}},%
after=\setcounter{equation}{\value{savedeq}},%
ams align,%
title={DERIVATION \thetcbcounter},%
fonttitle=\bfseries,%
label={derivation@\thetcbcounter},
coltitle=black,%
colback=orange!25,%
colframe=orange!60,%
%colback=orange!5!white,%
%colframe=orange!75!black%
}%
%\numberwithin{equation}{derivation}
\begin{document}
\begin{equation}
E=mc^2
\end{equation}
\begin{derivation}
x + y &= z && \text{given} \\
y &= z - x && \text{solve for \(y\)}
\end{derivation}
\begin{equation}
E=h\nu
\end{equation}
\begin{derivation}
\gamma &= \frac{1}{\sqrt{1-v^2}} && \text{definition} \\
v &= \sqrt{1-\frac{1}{\gamma^2}} && \text{solve for \(v\)}
\end{derivation}
\begin{equation}
a^2+b^2=c^2
\end{equation}
\end{document}