将 eqref 与 amspset 文档类结合使用

将 eqref 与 amspset 文档类结合使用

我想使用\label{eq:1}eqref{eq:1}。但它似乎不想与我使用的文档类一起使用。(可以在 amspset 文档类中找到这里

\documentclass[reqno, 11pt, letterpaper, cm, unboxed]{amspset}
\usepackage{amsthm, amssymb, amsfonts, amsmath}
\usepackage[in]{fullpage}
\let\ifpdf\relax
\usepackage{mathtools}

\newcommand{\eq}[1]{\begin{align*}#1\end{align*}}
\newcommand{\ml}[1]{\!\begin{multlined}[t]#1\end{multlined}}

\newcommand{\pr}[2]{\begin{solution}{\textbf{#1.}}#2\end{solution}}

\name{Eric Auld}
\class{MATH 2200}
\assignment{Homework 1}
\duedate{April, 10}

\begin{document}

\pr{1}{
 \eq{
  e=mc^2 \label{eq:1}
 }
Suppose we consider \eqref{eq:1}
}

\end{document}

当我这样做时,它无法识别该引用,并显示 Latex 警告:第 1 页上的引用“eq:1”在第 __ 行未定义。

有人能有什么建议吗?

答案1

align*您使用的环境不会\eq生成数字,因此您的\label命令最终什么都没有引用,至少在这个特定情况下是这样。在一般情况下,它会引用一个“随机”数字,准确地说是最后一个生成的数字,可能是由\section命令生成的。

你得到很多更具灵活性、结构性和可读性,如果你隐藏命令内的环境。

使用你的输入而不是

\documentclass[reqno, 11pt, letterpaper, cm, unboxed]{amspset}
\usepackage{amsthm, amssymb, amsfonts, amsmath}
\usepackage[in]{fullpage}
\let\ifpdf\relax
\usepackage{mathtools}

%%% patch solution to typeset its argument boldface
\usepackage{xpatch}
\xpatchcmd{\solution}{#1]}{\textbf{#1.}]}{}{}    


\name{Eric Auld}
\class{MATH 2200}
\assignment{Homework 1}
\duedate{April, 10}

\begin{document}

\begin{solution}[1]
\begin{equation}
  e=mc^2 \label{eq:1}
\end{equation}
Suppose we consider \eqref{eq:1}
\end{solution}

\end{document}

顺便说一句,不建议使用alignalign*作为“包罗万象”的显示环境:使用它们仅有的适用于多线环境。

几个月后,您可能会盯着您的文档问自己“这在做什么*@$$\pr”此外,使用标准命令的代码可以从一个文档移植到另一个文档。

同样,我对其进行了修补solution,使其(可选)参数以粗体显示,这样您就不必使用笨拙的

\begin{solution}[\textbf{1.}]

并且您的文档将符合标准。如果主管(例如您的助教或主管)告诉您“那里的粗体字是干什么的?”,您只需移除补丁并再次打印论文,然后反问“什么粗体字?”;-)

相关内容