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