
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 appto
comando do etoolbox
pacote. Observe que é recomendado carregar o hyperref
pacote hypertexnames=false
ao usar autonum
(também optei por usar a hidelinks
opção).
O autonum
pacote 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@generatePatchedReference
macro 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:
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 \myMacroName
está o que você usará para fazer referência ao ambiente de subequação, conforme mostrado no exemplo.