- 可以使用 来共享浮点数(fig)和计数器
\newtheorem{theorem}[figure]{Theorem}
。 - 可以根据 PDF 中的实际位置(而不是源代码中的位置)正确排序浮点数(图)
\MakeSorted{figure}
计数器perpage.sty
。 - 可以使用 来共享浮点数(图)和方程计数器
\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
)?任何帮助都将不胜感激!
%% 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}
%% 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}