Перекрестные ссылки на уравнения с помощью fleqn - ошибочные ссылки в классе статей

Перекрестные ссылки на уравнения с помощью fleqn - ошибочные ссылки в классе статей

В настоящее время у меня возникают проблемы с перекрестными ссылками на мои уравнения при использовании среды fleqn с пакетом amsmath и nccmath. Я хочу, чтобы мои уравнения были выровнены по левому краю, поэтому использую среду fleqn. Однако я заметил, что когда я пытаюсь сделать перекрестную ссылку на уравнение, похоже, что это перекрестная ссылка на номер раздела, а не на само уравнение. Не уверен, почему так происходит.

Вот MWE:

\documentclass[11pt]{article}
\usepackage{amsfonts, amsmath, amssymb, nccmath}

\begin{document}

\section{Intro}

Yup Yup

\section{Booyah} \label{sec: booyah}

Find Equation \ref{Eq:GGS_distribution_function_2} below Equation \ref{Eq:GGS_distribution_function} in section \ref{sec: booyah}.

\begin{fleqn}
\begin{equation}
R_F(d_p) = \left(\frac{d_p}{d_{p,max}}\right)^m 
\label{Eq:GGS_distribution_function}
\end{equation}
\end{fleqn}

\begin{fleqn}
\begin{equation}
R_F(d_p) = 5
\label{Eq:GGS_distribution_function_2}
\end{equation}
\end{fleqn}

\end{document}

введите описание изображения здесь

решение1

вы можете удалить nccmath:

\documentclass[11pt,fleqn]{article}
\usepackage{amsfonts, amsmath, amssymb}

\setlength{\mathindent}{0pt}
\begin{document}

\section{Intro}

Yup Yup

\section{Booyah} \label{sec: booyah}

Find Equation \ref{Eq:GGS_distribution_function_2} below Equation \ref{Eq:GGS_distribution_function} in section \ref{sec: booyah}.


\begin{equation}
R_F(d_p) = \left(\frac{d_p}{d_{p,max}}\right)^m
\label{Eq:GGS_distribution_function}
\end{equation}

\begin{equation}
R_F(d_p) = 5
\label{Eq:GGS_distribution_function_2}
\end{equation}

\end{document}

введите описание изображения здесь

Причина, по которой он ломается, — изменение в amsmath в 2021 году (https://github.com/latex3/latex2e/issues/652):

\changes{v2.17k}{2021/08/24}{Переместите счетчик внутрь уравнения и защитите его с помощью mathopen для лучшей совместимости с hyperref, выдача gh/652} Как и при увеличении hyperref, счетчик создает блок для повышения якоря, он должен находиться в месте, где это не влияет на интервал. В настоящее время для избежания этой проблемы используется код из hyperref: если fleqn не активен, счетчик устанавливается внутри уравнения, а потенциальный блок защищается mathopen, чтобы избежать побочных эффектов при следующих унарных символах. Если fleqn активирован, он должен быть снаружи, чтобы избежать проблем с метками. Это решение временное и не обязательно лучшее.}

Таким образом, уравнение определяется по-разному в зависимости от того, fleqn была ли установлена ​​опция пакета или нет. Но поскольку nccmathоно установлено \@fleqntrueтолько локально, оно не использует правильное определение и поэтому ломается.

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