![如何使用 IEEEtranstools 定制子方程的编号系统?](https://linux22.com/image/266556/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20IEEEtranstools%20%E5%AE%9A%E5%88%B6%E5%AD%90%E6%96%B9%E7%A8%8B%E7%9A%84%E7%BC%96%E5%8F%B7%E7%B3%BB%E7%BB%9F%EF%BC%9F.png)
我正在使用IEEEtrantools
,IEEEeqarray
在那里我可以打印带子标签的方程式,例如
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
,,, ...b
而c
我需要有一个自定义列表: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}