Mathtools 的 showonlyrefs 因子方程式而失败

Mathtools 的 showonlyrefs 因子方程式而失败

对于代码

\begin{subequations}\label{eq:sub}
\begin{gather}
  \frac{\text{d}b_1}{\text{d}z} - \im\beta_1b_1 = C_{12}b_2,\\
  \frac{\text{d}b_2}{\text{d}z} - \im\beta_2b_2 = C_{21}b_1.
\end{gather}
\end{subequations}

使用 时\mathtoolsset{showonlyrefs=true,showmanualtags=true}\eqref正确引用了方程组编号,但是方程本身在文档中没有编号(因此,前一个方程是 (2.7),下一个方程是 (2.9),没有编号 2.8a 和 2.8b)。这是意料之中的事吗?有解决方法吗?

答案1

一种解决方法可能是标记两个内部方程并用来\noeqref默默引用它们。目前showonlytags没有考虑子方程,可能难以实现。

工作原理如下showonlyrefs\eqref设置一个特殊标记label来标记引用的给定标签。mathtools更改方程编号的排版方式以查看本地标签是否已标记。如果没有,则不进行排版。

这里的问题是,聚集内的等式数字排版员永远不会看到外部标签。

编辑:这有效。顺便说一句:下次请发布一个最小示例,而不是片段,我不知道那\im是什么。

\documentclass[a4paper]{article}
\usepackage{mathtools}
\mathtoolsset{showonlyrefs=true,showmanualtags=true}
\begin{document}
\begin{subequations}\label{eq:sub}
  \noeqref{eq:1,eq:2}
  \begin{gather}
    \frac{\text{d}b_1}{\text{d}z} - \beta_1b_1 = C_{12}b_2,\label{eq:1}\\
    \frac{\text{d}b_2}{\text{d}z} - \beta_2b_2 = C_{21}b_1.\label{eq:2}
  \end{gather}
\end{subequations}
\eqref{eq:sub}
\end{document}

相关内容