使用浮动 tcolorbox 对方程式进行编号

使用浮动 tcolorbox 对方程式进行编号

使用浮点数时,方程的编号存在问题tcolorbox。我希望方程按出现的顺序编号。

这是 MWE

\documentclass{article}
\usepackage{tikz}
\usepackage{tcolorbox}
\newtcolorbox{myframe}[1][]{#1}
\begin{document}
\begin{equation} 1+2=3 \end{equation}
used with theorem \ref{theorem}
\begin{myframe}[float,floatplacement=t]
This is the theorem:
\begin{equation} 1+1=2. \label{theorem} \end{equation}
\end{myframe}
gives
\begin{equation} 2+2=4. \end{equation}
\end{document}

MWE 输出

有没有办法正确地对方程式进行编号?谢谢。

编辑更准确地说,我希望编号按照出现的顺序进行,浮子位于任何位置。

答案1

这使用了\tagamsmath 中的命令。要使它工作,您需要添加\mytag到每个编号方程中。重新标记方程需要运行两次,而\ref正确运行则需要运行 3 次。

如果您希望将章节号作为公式号的前缀,则必须重新格式化\tag内部内容\mytag

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{tcolorbox}
\newtcolorbox{myframe}[1][]{#1}

\newcounter{myequation}

\newcommand{\neweqmap}[1]% #1 = original euqation number
  {\stepcounter{myequation}%
  \expandafter\xdef\csname eqmap#1\endcsname{\themyequation}}

\makeatletter
\newcommand{\mytag}{\@ifundefined{eqmap\theequation}{}%
  {\stepcounter{equation}%
    \tag{\csname eqmap\theequation\endcsname}}%
  \protected@write\@auxout{}{\string\neweqmap{\theequation}}}
\makeatother

\begin{document}
\begin{equation} 1+2=3 \mytag \end{equation}
used with theorem \ref{theorem}
\begin{myframe}[float,floatplacement=t]
This is the theorem:
\begin{equation} 1+1=2. \mytag\label{theorem} \end{equation}
\end{myframe}
gives
\begin{equation} 2+2=4. \mytag \end{equation}
\end{document}

重新编号的方程式

答案2

只需改变出现的顺序:

\documentclass{article}
\usepackage{tikz}
\usepackage{tcolorbox}
\newtcolorbox{myframe}[1][]{#1}
\begin{document}
\begin{myframe}[float,floatplacement=t]
This is the theorem:
\begin{equation} 1+1=2. \label{theorem} \end{equation}
\end{myframe}
\begin{equation} 1+2=3 \end{equation}
used with theorem \ref{theorem}
gives
\begin{equation} 2+2=4. \end{equation}
\end{document}

数字

相关内容