
Есть ли способ сделать пакетавтонумработать с подуравнениями? В следующем примере ссылка будет правильно читать ур. 1, но к уравнениям не добавлен номер (я хотел бы видеть 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}
решение1
Это было интересно. Я считаю, что у меня есть работающее решение, использующее appto
команду из etoolbox
пакета. Обратите внимание, что рекомендуется загружать hyperref
пакет hypertexnames=false
при использовании autonum
(я также выбрал использование опции hidelinks
).
Пакет autonum
будет генерировать номер уравнения только тогда, когда это уравнение фактически ссылается, поэтому нам нужен способ ссылаться на все уравнения в среде subequations, когда эта среда ссылается в молчаливой манере. Мы можем сделать это, определив нашу собственную команду ссылки, которая принимает метку и ничего не делает, но затем сообщить пакету autonum, что это команда ссылки с помощью макроса, \autonum@generatePatchedReference
предоставленного пакетом.
\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}
Выход:
Примечание по использованию: Обозначьте уравнения среды подуравнений обычным способом. Затем, под этой средой, настройте макрос для ссылки на среду, \toplabel{\myMacroName}{subeq:label}
а затем \sublabel{\myMacroName}{a:sub:equation}
для каждого подуравнения, которое вы хотите пронумеровать (это не обязательно должны быть все!). Вот \myMacroName
что вы будете использовать для ссылки на среду подуравнения, как показано в примере.