方程式のシステム (1a)、(1b) などが与えられます。(1a) とシステム全体 (1) の両方を参照できるようにしたいと考えています。これは では簡単ですsubequations
が、iopart
ドキュメントではこの環境はサポートされていないようです ( ではないamsmath
と思います)。そのため、 を使用することをお勧めします\numparts ... \endnumparts
。ただし、 では\numparts
、適切に参照することができません。まず、eqnarray
は参照可能ではないようです ( では問題ではありませんが、それでも)。また、すべてを参照可能な環境numparts
に配置したとしても、システム全体を参照することはできません。equation
MWE:
\documentclass[10pt]{iopart}
\usepackage{cleveref}
\crefname{equation}{}{}
\begin{document}
\section{Example}
\numparts\begin{eqnarray} \label{system1}
a=1, \\
b=2
\end{eqnarray}\endnumparts
\numparts\begin{equation} \label{system2a}
a=1
\end{equation}\begin{equation} \label{system2b}
b=2
\end{equation}\endnumparts
\cref{system1} should read (1) but instead labels the section\\
\cref{system2a,system2b} should read (2) but instead reads (2a) and (2b)\\
\end{document}
答え1
このiopart
クラスにはいくつかの基本的なエラーがあり、主なエラーは と互換性のない愚かなことを行うことですamsmath
。
サポートチームに連絡を取ろうとしましたが、全く返答がありませんでした。
もう 1 つのエラーは、 ではなく で\numparts
カウンターequation
がステップされるの定義にあります。\addtocounter
\refstepcounter
しかし、eqnarray
は とうまく動作しないcleveref
ため、単一の方程式を参照するには、単純な を使用する必要があります\ref
。
\documentclass[10pt]{iopart}
\usepackage{cleveref}
\usepackage{etoolbox}
\crefname{equation}{}{}
\patchcmd{\numparts}{\addtocounter{equation}{1}}{\refstepcounter{equation}}{}{}
\begin{document}
\setcounter{section}{8} % just to test
\section{Example}
\begin{numparts}\label{system1}
\begin{eqnarray}
a&=&1,\label{system1a}\\
b&=&2\label{system1b}
\end{eqnarray}
\end{numparts}
\begin{numparts}\label{system2}
\begin{equation} \label{system2a}
a=1
\end{equation}
\begin{equation} \label{system2b}
b=2
\end{equation}
\end{numparts}
\cref{system1} refers to the first system; separately \ref{system1a} and \ref{system1b}
\cref{system2} refers to the second system; separately \cref{system2a,system2b}
\end{document}
一方、私は IOP の人々が何を考え、何を使用しているかを単に無視しますamsmath
。
\documentclass[10pt]{iopart}
% for using amsmath
\expandafter\let\csname equation*\endcsname\relax
\expandafter\let\csname endequation*\endcsname\relax
\usepackage{amsmath}
\usepackage{etoolbox}
\patchcmd{\subequations}{\alph{equation}}{\textit{\alph{equation}}}{}{}
\usepackage{cleveref}
\crefname{equation}{}{}
\begin{document}
\setcounter{section}{8} % just to test
\section{Example}
\begin{subequations}\label{system1}
\begin{align}
a&=1,\label{system1a}\\
b&=2\label{system1b}
\end{align}
\end{subequations}
\begin{subequations}\label{system2}
\begin{equation} \label{system2a}
a=1
\end{equation}
\begin{equation} \label{system2b}
b=2
\end{equation}
\end{subequations}
\cref{system1} refers to the first system; separately \cref{system1a,system1b}
\cref{system2} refers to the second system; separately \cref{system2a,system2b}
\end{document}
きっと彼らはそれを発見しないでしょう。 をロードする前に、部分式文字をイタリック体で表した の出力をエミュレートするパッチをiopart
作成する必要がありますcleveref
。