如何将 \underrightarrow 命令与 iopart.cls 类一起使用?

如何将 \underrightarrow 命令与 iopart.cls 类一起使用?

我想使用包\underrightarrow中包含的命令amsmath.sty。但是,发布者强制使用iopart.cls与 不兼容的类amsmath.sty

还有其他可以使用的替代命令iopart.cls吗?

答案1

由于非常神秘的原因,该类iopart不希望其用户加载amsmath,这听起来很奇怪。在我看来,该类应该要求包而不是试图重新发明轮子。

无论如何,这里有从中提取的代码amsmath.sty(仅稍作改动),它定义了您需要的构造。

\documentclass[12pt]{iopart}

\makeatletter
\providecommand\underarrow@[3]{%
  \vtop{\ialign{##\crcr$\m@th\hfil#2#3\hfil$\crcr
  \noalign{\nointerlineskip\kern.12\baselineskip}#1#2\crcr}}}
\providecommand{\underrightarrow}{%
  \mathpalette{\underarrow@\rightarrowfill@}}
\providecommand\rightarrowfill@{\arrowfill@\relbar\relbar\rightarrow}
\providecommand\arrowfill@[4]{%
  $\m@th\thickmuskip0mu\medmuskip\thickmuskip\thinmuskip\thickmuskip
   \relax#4#1\mkern-7mu%
   \cleaders\hbox{$#4\mkern-2mu#2\mkern-2mu$}\hfill
   \mkern-7mu#3$%
}
\makeatother

\begin{document}

$\underrightarrow{abc}$

\end{document}

在此处输入图片描述

答案2

在以下 MWE 中,我只是禁用了冲突的定义iopart。可能还有其他问题……我不知道该 documentclass。也许你应该阅读一下文档,iopart以了解它们的反amsmath决策。

% arara: pdflatex

\documentclass{iopart}
\expandafter\let\csname equation*\endcsname\relax
\expandafter\let\csname endequation*\endcsname\relax 
\usepackage{mathtools} % which loads amsmath as well.

\begin{document}
Here is an underrightarrow for you: $\underrightarrow{x}$
\end{document}

在此处输入图片描述

相关内容