在自定义浮点标题中引用方程计数器值

在自定义浮点标题中引用方程计数器值

我已使用该float包创建了方程浮点数,eqfloat因此我可以为方程添加标题。在其中,eqfloat我使用方程环境来排版数学。

我想保留方程环境添加的括号内的右侧阿拉伯数字,但我还希望eqfloat方程下方的标题使用与方程环境相同的数字。

下面的代码通过使 eqfloat 使用与方程环境相同的计数器,然后手动调整每个方程内的方程编号来实现这一点eqfloat

有没有更好的方法让eqfloat标题引用方程环境计数器的当前值?

是否可以防止自定义浮点环境增加计数器而仅引用方程计数器的当前值?

\documentclass[a4paper]{article}

\usepackage[margin=25pt, labelfont=bf]{caption}
\usepackage{amsmath, amsfonts, pifont, float, color, url}
\usepackage[pdftex, plainpages=false, pdfpagelabels, bookmarks=true]{hyperref}

\newfloat{eqfloat}{h}{eqflts}
\floatname{eqfloat}{Equation}
\makeatletter
\let\c@eqfloat\c@equation
\makeatother

\begin{document}
    ...
    \begin{eqfloat}
        \begin{equation}
            E = mc^2
        \end{equation}
        \addtocounter{equation}{-1}
        \caption{Equation caption here.}
        \label{eq:example}
    \end{eqfloat}

\end{document}

答案1

aliascnt可用于为计数器设置别名。它还负责处理计数器的其他伴随宏(例如或\the<counter>)。因此,以下示例使用类来实现更复杂的计数器。在 之前调用,因为 然后检测到新的“计数器”并且不分配计数器寄存器。\theH<counter>hyperrefbook\newaliascnt\newfloat\newfloat

通过将该生产线添加到内部环境,\addtocounter{equation}{-1}可以实现生产线的自动化。\captioneqfloat

\documentclass[a4paper]{book}

\usepackage[margin=25pt, labelfont=bf]{caption}
\usepackage{amsmath, amsfonts, pifont, float, color, url}
\usepackage[pdftex, plainpages=false, pdfpagelabels,
bookmarks=true]{hyperref}

\usepackage{aliascnt}
\newaliascnt{eqfloat}{equation}
\newfloat{eqfloat}{h}{eqflts}
\floatname{eqfloat}{Equation}

\newcommand*{\ORGeqfloat}{}
\let\ORGeqfloat\eqfloat
\def\eqfloat{%
  \let\ORIGINALcaption\caption
  \def\caption{%
    \addtocounter{equation}{-1}%
    \ORIGINALcaption
  }%
  \ORGeqfloat
}

\begin{document}
    \chapter{Test}
    \begin{eqfloat}
        \begin{equation}
            E = mc^2
        \end{equation}
        \caption{Equation caption here.}
        \label{eq:example}
    \end{eqfloat}

See \ref{eq:example}.
\end{document}

结果

相关内容