Elsevier 模板中方程式交叉引用的问题

Elsevier 模板中方程式交叉引用的问题

这是我第一次提问。如果有人能帮忙的话我真的很感激。

我一直在使用文档类。不幸的是,我在使用和环境elsarticle时遇到了问题:方程式的交叉引用为空,即它们不显示方程式编号。如何解决这个问题?hyperreffleqn

\documentclass[3p,twocolumn]{elsarticle}
\usepackage{amsmath}
\usepackage{lineno}
\modulolinenumbers[5]
\usepackage {natbib}
\usepackage[dvipsnames]{xcolor}
\usepackage{adjustbox}
\usepackage{subfig}
\usepackage{tabularx}
\usepackage{tabulary}
\usepackage[maxfloats=30,morefloats=12]{morefloats}
\usepackage{multirow}
\usepackage{wasysym}
\usepackage{nicefrac}
\usepackage[sright]{rotating}
\usepackage{booktabs}
\usepackage{amssymb} %for z integer set presentation
\usepackage{mathtools, nccmath} % for breaking long equation
\usepackage{hyperref}
\usepackage{cleveref}

\begin{document}
    \begin{fleqn}
        \begin{equation}\label{e:hatT}
            \begin{aligned}
                &\hat{T}_l=\hat{A}T_c+\hat{B}
            \end{aligned}
        \end{equation}
    \end{fleqn}
    
    \begin{fleqn}
        \begin{equation}\label{f:eqialflow}
            \begin{aligned}
                &G_{eq}[(\hat{A}-1)T_c+\hat{B}]=\hat{C}T_c+\hat{D}\\
                &E=mc^2
            \end{aligned}
        \end{equation}
    \end{fleqn}
    The TEC cold temperature ($T_c$) is determined by  Eq. (\ref{f:eqialflow}). Substituting  $T_c$ in Eq. (\ref{e:hatT})
    
\end{document}

在此处输入图片描述

答案1

fleqn选项传递给amsmath并删除\mathindent( \setlength{\mathindent}{0pt})。这样您就可以避免使用该fleqn环境。

在此处输入图片描述

\documentclass[3p,twocolumn]{elsarticle}
\usepackage[fleqn]{amsmath}
\usepackage{hyperref}
\usepackage{cleveref}
\usepackage{mathtools, nccmath}% for breaking long equation

\setlength{\mathindent}{0pt}

\begin{document}

\begin{equation}\label{e:hatT}
  \hat{T}_l = \hat{A} T_c + \hat{B}
\end{equation}

\begin{equation}
  \label{f:eqialflow}
  \begin{aligned}
    &G_{eq}[(\hat{A} - 1) T_c + \hat{B}] = \hat{C} T_c + \hat{D} \\
    &E = mc^2
  \end{aligned}
\end{equation}
The TEC cold temperature~($T_c$) is determined by Eq.~(\ref{f:eqialflow}).
Substituting~$T_c$ in Eq.~(\ref{e:hatT}).
  
\end{document}

答案2

我将冒险从部分文本截图中诊断您的问题。

第 1 项:您将\label方程式的命令放在equation环境之外。如果这样做,它将不会引用方程式,而是引用最后一个节号(在本例中可能是 2.2)。您应该得到类似这样的内容:

\begin{equation}
 ... - m'^{2}\theta_{l} = 
   \frac{Q_{xz}{k}
\label{myequation}
\end{equation}

\label命令可以在equation环境中的任何地方运行,但如果您保持一致(并且将其保持在一行上),您会发现生活变得轻松得多。

第 2 项。看起来你写了类似这样的内容:

Eq. \eqref{myequation}

你会注意到“Eq.”和方程编号之间的间距太大了。这是因为 LaTeX 错误地认为“Eq.”是句子的结尾,并插入了句子结尾的间距。¹ 你应该这样写

Eq.~\eqref{myequation}

这将强制使用常规单词间距,并且作为额外的好处,可以避免在“Eq.”和“(19).”之间出现换行符。

或者更好的是,loading³cleveref可以让你直接写

\Cref{myequation}

Eq.~自动将前缀添加到引用中。


  1. TeX/LaTeX 这样做本身就是排版错误,但我就不提了。我认为 TeX 这样做的主要原因是 Knuth 想出了一个他想要实现的聪明算法,就像几乎\t没有实际用途的重音符号一样。²

  2. 我花了很长时间尝试追踪语音发音排版之外的任何用例,但 TeX 的用例是值得怀疑的,因为原始 Computer Modern 字体中缺少其他必需的字符。

  3. r请注意,中只有一个cleveref。我认为这可能有点太聪明了,可以这么说。

相关内容