在用户定义的环境中铸造破坏方程编号

在用户定义的环境中铸造破坏方程编号

当我在 amsmath 和 hyperref 之间加载 minted 包时,我的环境中的方程编号似乎被破坏了。

\usepackage{amsmath}
\usepackage{minted}
\usepackage{hyperref}

\newenvironment{hop}[1]{\equation#1\endequation\align}{\endalign}

\begin{document}
    \begin{hop}{ a + b = c }
        c - a = b\\
        c - b = a
    \end{hop}
\end{document}

在此处输入图片描述

是什么原因导致了这种现象?我怎样才能恢复每行一个数字?

当 minted 在其他地方加载时不会出现此行为,但我无法minted在之后加载,hyperref因为csquotes它位于中间,我无法minted在之前加载,amsmath因为amsmath它是我需要使用的类的一部分。
用硬编码公式替换参数不会改变任何东西。
问题似乎来自环境equation,但这似乎最适合我的需求。

答案1

minted包与问题无关:问题在于如何lineno重新定义equation。处理amsmath变得混乱。

解决方案:

\documentclass{article}
\usepackage{amsmath}
\usepackage{lineno}

\newenvironment{hop}[1]{\begin{equation}#1\end{equation}\align}{\endalign}

\begin{document}

\begin{hop}{ a + b = c }
c - a &= b+abc+de \\
c - b &= a
\end{hop}

\end{document}

答案2

我建议使用environ包来设置它。它对内部环境的干扰较少。

示例输出

\documentclass{article}

\usepackage{amsmath,environ}
\usepackage{minted}
\usepackage{hyperref}

\NewEnviron{hop}[1]{\begin{equation}#1\end{equation}\begin{align}\BODY\end{align}}

\begin{document}
\begin{hop}{ a + b = c }
  c - a = b\\
  c - b = a
\end{hop}
\end{document}

顺便说一句,您没有&在正文中指定任何对齐点。

相关内容