我正在尝试创建一份带有方程式的报告,该方程式在某种条件下表示一件事,或在另一种条件下表示另一件事。我还想在行末的括号中包含一个方程式标签。
我当前用于测试这个的代码:
\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
我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 样式中的其他格式完全一致,并且仅在右侧有一个标签来标记方程式。