如何在 iopart 文档中包含 \choice 的等式末尾放置 \tag?

如何在 iopart 文档中包含 \choice 的等式末尾放置 \tag?

我正在尝试创建一份带有方程式的报告,该方程式在某种条件下表示一件事,或在另一种条件下表示另一件事。我还想在行末的括号中包含一个方程式标签。

我当前用于测试这个的代码:

\documentclass[12pt]{iopart}
\usepackage{graphicx}

\makeatletter
\@namedef{[email protected]}{}
\makeatother

\usepackage{amsmath}
\usepackage{chemformula}

\usepackage{mathtools}

\makeatletter
\newcases{iopcases}{\tqs}
 {$\m@th\displaystyle##$\hfil}
 {##\hfil}
 {\lbrace}
 {.}
\makeatother

\begin{document}

\begin{eqnarray}
j = n\mu E - D\nabla n,
\end{eqnarray}


\begin{eqnarray}
f(x)=\begin{iopcases}  1 & ABC \\ 2 & uvw \end{iopcases}
\end{eqnarray}

\noindent Text between the two equations

\[f(x)=\begin{iopcases} 1 & ABC \\  & 2 & uvw \end{iopcases}%\]

\tag{(4)} \\



\end{document}

可在此处获取:https://www.overleaf.com/read/csndrqmksbbb

此代码输出以下文档:

图片_1

第一个等式是本文前面的一个正确运行的例子;第二个等式在正确的缩进级别上带有括号的标签,但是在花括号的数据中包含一个标签;第三个等式是完美的,只是标签的缩进级别错误。

有没有一种我所缺少的简单方法可以做到这一点?

答案1

iopart.cls从网站下载了,但您使用的加载技巧amsmath不起作用。无论如何,为了解决您的问题,您可以使用cases一些变通方法。

\documentclass[12pt]{iopart}
\usepackage{graphicx}

\makeatletter
%\@namedef{[email protected]}{}
\expandafter\let\csname equation*\endcsname\relax
\expandafter\let\csname endequation*\endcsname\relax
\makeatother

\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{cases}
\usepackage{chemformula}
\usepackage{etoolbox}

\makeatletter
\newcases{iopcases}{\tqs}
 {$\m@th\displaystyle##$\hfil}
 {##\hfil}
 {\lbrace}
 {.}
\newenvironment{iopnumcases}{%
  \newcommand\@unnc@casecr[1][\z@skip]{\cr \noalign{\vskip ##1}}%
  \let\\\@unnc@casecr
  \patchcmd{\numcases}{\quad}{\qquad}{}{}%
  \openup\jot
  \numcases
}{\endnumcases}
\makeatother

\begin{document}

\begin{gather}
j = n\mu E - D\nabla n,
\\
f(x)=\begin{iopcases}  1 & ABC \\ 2 & uvw \end{iopcases}
\end{gather}
Text between the two equations
\begin{iopnumcases}{f(x)=}
  1 & ABC \\
  2 & uvw
\end{iopnumcases}

\end{document}

切勿使用eqnarray:它有缺陷。另外,不要使用连续显示,但在这种情况下,gather。切勿在显示前留空行。对于您的情况,不应使用空行。

为了标记两种情况,您可以使用新定义的iopnumcases

在此处输入图片描述

答案2

经过进一步的研究,我发现其他答案提供的代码确实有效,但是格式不一定与 IOP 样式的其余部分一致。

使用页面右侧的单个标签即可正确实现此目的的版本如下:

\documentclass[12pt]{iopart}
\usepackage{graphicx}

\makeatletter
\@namedef{[email protected]}{}
\makeatother

\usepackage{amsmath}

\let\iopartcases\cases

\begin{document}

\begin{equation}
    f(x)=\iopartcases{1 & abc \\ 0 & uvw}
\end{equation}

\end{document}

这与 IOP 样式中的其他格式完全一致,并且仅在右侧有一个标签来标记方程式。

相关内容