автонум с подуравнениями

автонум с подуравнениями

Есть ли способ сделать пакетавтонумработать с подуравнениями? В следующем примере ссылка будет правильно читать ур. 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что вы будете использовать для ссылки на среду подуравнения, как показано в примере.

Связанный контент