![带字母但重叠的枚举样式](https://linux22.com/image/386389/%E5%B8%A6%E5%AD%97%E6%AF%8D%E4%BD%86%E9%87%8D%E5%8F%A0%E7%9A%84%E6%9E%9A%E4%B8%BE%E6%A0%B7%E5%BC%8F.png)
我想使用字母样式枚举来将两个运行列表合并为一个。
这两个列表有字母枚举 J-期刊和 C-会议。这两个列表的代码和输出如下。
一旦合并为一个列表,它将允许重叠J和C项目。例如:J3 C2 J2 J1 C1
Journal list:
\begin{etaremune}
\renewcommand{\theenumi}{J\arabic{enumi}}
\item Journal 1
\item Journal 2
\end{etaremune}
Conference list:
\begin{etaremune}
\renewcommand{\theenumi}{C\arabic{enumi}}
\item Proceeding 1
\item Proceeding 2
\end{etaremune}
答案1
我不认为有一个包可以做到这一点,所以下面实际上是重新实现的etaremune
它使用两个计数器而不是一个。
下面定义的环境jcenum
使用 来定义itemize
。它可以包含两种类型的项目,用 和 声明,\jitem
分别\citem
对应期刊和会议。
\documentclass{article}
%% Counter for jcenum environments:
\newcounter{jcenum}
%% Separate counters for journals and conferences:
\newcounter{enumj} %% <- counts journals
\newcounter{enumc} %% <- counts conferences
\renewcommand*\theenumj{J\arabic{enumj}}
\renewcommand*\theenumc{C\arabic{enumc}}
%% A new enumeration environment based on itemize:
\makeatletter %% <- make @ usable in macro names
\newenvironment{jcenum}{%
\stepcounter{jcenum}%
\@ifundefined{enumjmax@\arabic{jcenum}}{\@namedef{enumjmax@\arabic{jcenum}}{0}}{}%
\@ifundefined{enumcmax@\arabic{jcenum}}{\@namedef{enumcmax@\arabic{jcenum}}{0}}{}%
\setcounter{enumj}{\@nameuse{enumjmax@\arabic{jcenum}}}%
\setcounter{enumc}{\@nameuse{enumcmax@\arabic{jcenum}}}%
\itemize
}{%
%% Write the number of journals/conferences to the aux files:
\immediate\write\@auxout{%
\string\global\string\@namedef{enumjmax@\arabic{jcenum}}%
{\the\numexpr\@nameuse{enumjmax@\arabic{jcenum}}-\value{enumj}+1}%
\string\global\string\@namedef{enumcmax@\arabic{jcenum}}%
{\the\numexpr\@nameuse{enumcmax@\arabic{jcenum}}-\value{enumc}+1}%
}%
\enditemize
}
\makeatother %% <- revert @
%% Separate \item macros for journals and conferences:
\newcommand*\jitem{\addtocounter{enumj}{-2}\refstepcounter{enumj}\item[\theenumj.]}
\newcommand*\citem{\addtocounter{enumc}{-2}\refstepcounter{enumc}\item[\theenumc.]}
\begin{document}
\subsection*{First environment}
\begin{jcenum}
\jitem First journal \label{firstitem}
\citem First conference
\citem Second conference
\jitem Second journal
\citem Third conference
\end{jcenum}
\noindent Reference to the first item: \ref{firstitem}
\subsection*{Second environment}
\begin{jcenum}
\jitem First journal
\citem First conference
\citem Second conference
\end{jcenum}
\end{document}
简单说一下这个功能的作用:
我定义了计数器enumj
和enumc
来跟踪期刊和会议索引。每当调用\jitem
或时,这些计数器都会减少\citem
,并且在环境结束时,jcenum
会计算它们的正确起始值并将其写入辅助文件。在第二次运行时,存储在辅助文件中的起始值将在环境开始时应用于enumj
和(否则将使用)。enumc
jcenum
0
如果您的文档包含多个环境,则计数器jcenum
会为各个环境生成标识符。jcenum
jcenum