autonum com subequações

autonum com subequações

Tem como fazer o pacotenúmero automáticotrabalhar com subequações? No exemplo a seguir, a referência lerá corretamente a eq. 1, mas nenhum número é anexado às equações (gostaria de ver 1a, 1b).

\documentclass[11pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage{cleveref}
\usepackage{autonum}
\begin{document}

\begin{subequations}
    \label{eq:subequations}
    \begin{align}
        1 + 1 = 2, \\
        2 + 2 = 4
    \end{align}
\end{subequations}

Let us examine \cref{eq:subequations}.

\end{document}

Responder1

Isso foi interessante. Acredito que tenho uma solução funcional usando o apptocomando do etoolboxpacote. Observe que é recomendado carregar o hyperrefpacote hypertexnames=falseao usar autonum(também optei por usar a hidelinksopção).

O autonumpacote só gerará um número de equação quando essa equação for realmente referenciada, portanto, precisamos de uma maneira de referenciar todas as equações em um ambiente de subequações quando esse ambiente for referenciado de maneira silenciosa. Podemos fazer isso definindo nosso próprio comando de referência que recebe um rótulo e não faz nada, mas depois informa ao pacote autonum que é um comando de referência com a \autonum@generatePatchedReferencemacro fornecida pelo pacote.

\documentclass[11pt,a4paper]{article}
\usepackage{amsmath}
\usepackage[hypertexnames=false, hidelinks]{hyperref} % hypertexnames=false for autonum compatibility (autonum.pdf 3.2 Hyperref)
\usepackage{cleveref}
\usepackage{autonum}
\usepackage{etoolbox} % \appto (etoolbox.pdf 3.3 Hook management)
\newcommand\toplabel[2]{% Args: macro and label for subequations environment
\appto{#1}{(\ref{#2})}%
}
\newcommand\sublabel[2]{% Args: macro and label for a subequation
\appto{#1}{\hoaxref{#2}}% Pretend to reference this equation when #1 is called, to fool autonum
}
\newcommand\hoaxref[1]{%
% Do nothing!
}
\makeatletter
\autonum@generatePatchedReference{hoaxref} % Tell autonum about our reference command (autonum.pdf 3.3 Reference commands)
\makeatother
\begin{document}
\begin{subequations}
    \label{eq:1}
    \begin{align}
        1 + 1 &= 2 \label{eq:1a}\\
        2 + 2 &= 4\label{eq:1b}
    \end{align}
\end{subequations}
\toplabel{\referone}{eq:1}%
\sublabel{\referone}{eq:1a}%
\sublabel{\referone}{eq:1b}%

Let us examine system \referone. 
\begin{subequations}
    \label{eq:2}
    \begin{align}
        3 + 3 &= 8 \label{eq:2a}\\
        4 + 4 &= 8\label{eq:2b}
    \end{align}
\end{subequations}

For comparison, an ordinary reference to system \ref{eq:2}.
\end{document}

Saída:

saída

Nota de uso: Rotule as equações de ambiente das subequações da maneira usual. Então, abaixo deste ambiente, configure uma macro para referenciar o ambiente \toplabel{\myMacroName}{subeq:label}e então \sublabel{\myMacroName}{a:sub:equation}para cada subequação que você deseja numerar (não precisa ser todas elas!). Aqui \myMacroNameestá o que você usará para fazer referência ao ambiente de subequação, conforme mostrado no exemplo.

informação relacionada