在共享 eqn/thm 计数器时正确排序浮点计数器 (perpage.sty)

在共享 eqn/thm 计数器时正确排序浮点计数器 (perpage.sty)
  1. 可以使用 来共享浮点数(fig)和计数器\newtheorem{theorem}[figure]{Theorem}
  2. 可以根据 PDF 中的实际位置(而不是源代码中的位置)正确排序浮点数(图)\MakeSorted{figure}计数器perpage.sty
  3. 可以使用 来共享浮点数(图)和方程计数器\makeatletter\let\c@equation\c@figure\makeatother

我可以同时做 1 和 2(参见 mwe-b)。 我可以同时做 1 和 3(参见 mwe-c)。 但我无法同时完成这三件事(参见 mwe-d)。

部分/假解决方案。我可以通过创建一个myeqn环境来解决这个问题(参见mwe-a)。

问题。有没有实际的解决方案可以让你保留环境equation?也许可以通过换出某些东西来解决 mwe-d 中的冲突\c@figure(基于的精确实现perpage.sty)?任何帮助都将不胜感激!

韋-a mwe-b mwe-c 最大重量

%% MWE-A
\documentlass{article}
\usepackage{blindtext}
\newtheorem{theorem}[figure]{Theorem} %1
\usepackage{perpage}\MakeSorted{figure} %2
\newenvironment{myeqn}
  {\stepcounter{figure}\hfill\begin{math}}
  {\end{math}\hfill(\arabic{figure})}
\begin{document}
\begin{theorem}\blindtext\end{theorem}
\begin{figure}\blindtext\caption{Caption}\end{figure}
\begin{myeqn}a^2+b^2=c^2\end{myeqn}
\end{document}

%% MWE-B
\documentclass{article}
\usepackage{blindtext}
\newtheorem{theorem}[figure]{Theorem} %1
\usepackage{perpage}\MakeSorted{figure} %2
\begin{document}
\begin{theorem}\blindtext\end{theorem}
\begin{figure}\blindtext\caption{Caption}\end{figure}
\begin{equation}a^2+b^2=c^2\end{equation}
\end{document}

%% MWE-C
\documentclass{article}
\usepackage{blindtext}
\newtheorem{theorem}[figure]{Theorem} %1
\makeatletter\let\c@equation\c@figure\makeatother %3
\begin{document}
\begin{theorem}\blindtext\end{theorem}
\begin{figure}\blindtext\caption{Caption}\end{figure}
\begin{equation}a^2+b^2=c^2\end{equation}
\end{document}

%% MWE-D
\documentclass{article}
\usepackage{blindtext}
\newtheorem{theorem}[figure]{Theorem} %1
\usepackage{perpage}\MakeSorted{figure} %2
\makeatletter\let\c@equation\c@figure\makeatother %3
\begin{document}
\begin{theorem}\blindtext\end{theorem}
\begin{figure}\blindtext\caption{Caption}\end{figure}
\begin{equation}a^2+b^2=c^2\end{equation}
\end{document}

答案1

无需创建新myeqn环境,只需修改equation环境即可。解决方案似乎可以很好地与 配合使用perpage\MakeSorted编号看起来符合预期)。

\usepackage{etoolbox}
\AtBeginEnvironment{equation}{%
    \setcounter{equation}{\value{figure}}%
    \stepcounter{figure}%
    }
\renewcommand\theequation{\arabic{figure}}

上面最后一行用equation计数器的打印输出替换了figure计数器的打印输出,因为计数器在根据显示顺序重新编号浮点数equation时可能会不正确。因此,上面这一行是不必要的,可以删除(这一行只是为了防止意外引用计数器)。\MakeSorted\setcounter{equation}{\arabic{figure}}equation

同样,因为与的perpage冲突,如果您想重置每个部分的计数器,您可以进行修改。chngcntr\counterwithin\section

\usepackage{etoolbox}
\preto\section{\setcounter{figure}0}

只要您没有太多部分并且浮动彼此靠近(即在同一页面上),该补丁似乎就可以工作。

编辑。这里有两个 mwe:仅方程修复(mwe-e)和带有节内计数修复的方程修复(mwe-f)。

%% MWE-E
\documentclass{article}
\usepackage{lipsum, amsthm, perpage, etoolbox}
\newtheorem{theorem}[figure]{Theorem} % sync thm, float
\MakeSorted{figure} % renumber float
\AtBeginEnvironment{equation}{\stepcounter{figure}} % sync eqn, float
\renewcommand\theequation{\arabic{figure}} % sync eqn, float

\begin{document}
\section*{This is a section}
\begin{theorem}This is a theorem.\end{theorem}
\begin{figure}\lipsum[2]\caption{This is a caption}\end{figure}
\begin{equation}a^2+b^2=c^2\end{equation}
\section*{Another section}
\begin{theorem}[This is a Title]\lipsum[2]\end{theorem}
\begin{equation}a^2+b^2=c^2\end{equation}
\end{document}

韋-e

%% MWE-F
\documentclass{article}
\usepackage{lipsum, amsthm, perpage, etoolbox}
\newtheorem{theorem}[figure]{Theorem}
\MakeSorted{figure}
\AtBeginEnvironment{equation}{\stepcounter{figure}}
\renewcommand\theequation{\arabic{section}.\arabic{figure}} % count within sec
\renewcommand\thefigure{\arabic{section}.\arabic{figure}} % count within sec
\preto\section{\setcounter{figure}0} % count within sec

\begin{document}
\section{This is a section}
\begin{theorem}This is a theorem.\end{theorem}
\begin{figure}\lipsum[2]\caption{This is a caption}\end{figure}
\begin{equation}a^2+b^2=c^2\end{equation}
\section{Another section}
\begin{theorem}[This is a Title]\lipsum[2]\end{theorem}
\begin{equation}a^2+b^2=c^2\end{equation}
\end{document}

mwe-f

相关内容