如何使用 IEEEtranstools 定制子方程的编号系统?

如何使用 IEEEtranstools 定制子方程的编号系统?

我正在使用IEEEtrantoolsIEEEeqarray在那里我可以打印带子标签的方程式,例如

x^2   (1a)
y^2   (1b)

和:

 \begin{IEEEeqnarray}{rCl}
  x & = & y \IEEEyessubnumber \\
  z & = & b \IEEEyessubnumber
\end{IEEEeqnarray}

但是 - 我需要有第一个子号m,第二个子号b

x^2   (1m)
y^2   (1b)

因此我阅读了资料来源IEEEtrantools.sty并且得出了最好的结论:

\documentclass{article}

\usepackage{fontspec} % enagles loading of OpenType fonts
\usepackage{polyglossia} % support for languages

% fonts:
\defaultfontfeatures{Scale=MatchLowercase,Mapping=tex-text} % without this XeLaTeX won't turn "--" into dashes
\setmainfont{DejaVu Sans}
\setsansfont{DejaVu Sans}
\setmonofont{DejaVu Sans Mono}

\usepackage{IEEEtrantools}

\begin{document}

\subsection{Test!}

\begin{IEEEeqnarray}{rCl}
  x & = & y \renewcommand\theIEEEsubequation{\theequation{m}} \IEEEyessubnumber \\
  z & = & b \renewcommand\theIEEEsubequation{\theequation{b}} \IEEEyessubnumber
\end{IEEEeqnarray}

\end{document}

我编译了,但不起作用。有什么方法可以实现吗?IEEEeqarray对我来说是必须的。

我的问题是:自定义列表到子编号字符串意味着默认子编号字符串列表是a,,, ...bc我需要有一个自定义列表:m,,b...(对于手头的问题,我只需要两个)。

答案1

这里有一种方法:创建一个自定义编号系统,称为\mynumsys此处,用于局部重新定义\theIEEEsubequation。如果需要,您可以在我的定义的基础上\mynumsys添加更多符号。

注意:我删除了大部分前言调整,因为它们与问题没有直接关系。将它们放回代码中不会使我的解决方案无效。

在此处输入图片描述

\documentclass{article}

\usepackage{IEEEtrantools}

\makeatletter
\def\mynumsys#1{\expandafter\@mynumsys\csname c@#1\endcsname}% LaTeX
\def\@mynumsys#1{%
  \ifnum#1=0%
    \@ctrerr% 
  \else\ifnum#1=1%
      m%
    \else\ifnum#1=2%
       b%
     \else
        \@ctrerr%
    \fi
  \fi
\fi
}
\makeatother

\begin{document}
\subsection{Test!}
{
\def\theIEEEsubequation{\theequation\mynumsys{IEEEsubequation}}
\begin{IEEEeqnarray}{rCl}
  x & = & y \renewcommand\theIEEEsubequation{\theequation{m}} \IEEEyessubnumber \\
  z & = & b \renewcommand\theIEEEsubequation{\theequation{b}} \IEEEyessubnumber
\end{IEEEeqnarray}
}

\begin{IEEEeqnarray}{rCl}
  x & = & y \renewcommand\theIEEEsubequation{\theequation{m}} \IEEEyessubnumber \\
  z & = & b \renewcommand\theIEEEsubequation{\theequation{b}} \IEEEyessubnumber
\end{IEEEeqnarray}
\end{document}

答案2

例如,以 \fnsymbol 为例,将其副本命名为 \mysymbol,定义适当的符号,然后将定义中的阿拉伯计数器更改为 mysymbol。

编辑(可惜 Kindle 不适合阅读较长的文章)

以下示例中的alph计数器被新计数器替换。如果两者都需要,则需要进行一些额外工作。

\documentclass{article}

%\usepackage{fontspec} % enagles loading of OpenType fonts
%\usepackage{polyglossia} % support for languages

% fonts:
%\defaultfontfeatures{Scale=MatchLowercase,Mapping=tex-text} % without this XeLaTeX won't turn "--" into dashes
%\setmainfont{DejaVu Sans}
%\setsansfont{DejaVu Sans}
%\setmonofont{DejaVu Sans Mono}

\usepackage{IEEEtrantools}

\begin{document}


\section{Test!}


\begin{IEEEeqnarray}{rCl}
  x & = & y  \\
  z & = & b 
\end{IEEEeqnarray}

\begin{IEEEeqnarray}{rCl}
  x & = & y \IEEEyessubnumber \\
  z & = & b \IEEEyessubnumber
\end{IEEEeqnarray}

\makeatletter
\let\oldalph\alph
\let\old@alph\@alph
\def\alph#1{\expandafter\@alph\csname c@#1\endcsname}
\def\@alph#1{%
  \ifcase#1\or m\or b\or c\or d\or e\or f\or g\or h\or i\or j\or
   k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or
    y\or z\else\@ctrerr\fi}
\makeatother

Changed

\begin{IEEEeqnarray}{rCl}
  x & = & y  \\
  z & = & b 
\end{IEEEeqnarray}

\begin{IEEEeqnarray}{rCl}
  x & = & y \IEEEyessubnumber \\
  z & = & b \IEEEyessubnumber
\end{IEEEeqnarray}

\begin{IEEEeqnarray}{rCl}
  x & = & y \IEEEyessubnumber \\
  z & = & b \IEEEyessubnumber
\end{IEEEeqnarray}


%\begin{IEEEeqnarray}{rCl}
%  x & = & y \renewcommand\theIEEEsubequation{\theequation{m}} \IEEEyessubnumber \\
%  z & = & b \renewcommand\theIEEEsubequation{\theequation{b}} \IEEEyessubnumber
%\end{IEEEeqnarray}

\end{document}

相关内容