带字母但重叠的枚举样式

带字母但重叠的枚举样式

我想使用字母样式枚举来将两个运行列表合并为一个。

这两个列表有字母枚举 J-期刊和 C-会议。这两个列表的代码和输出如下。

一旦合并为一个列表,它将允许重叠JC项目。例如: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}

输出

简单说一下这个功能的作用:

我定义了计数器enumjenumc来跟踪期刊和会议索引。每当调用\jitem或时,这些计数器都会减少\citem,并且在环境结束时,jcenum会计算它们的正确起始值并将其写入辅助文件。在第二次运行时,存储在辅助文件中的起始值将在环境开始时应用于enumj和(否则将使用)。enumcjcenum0

如果您的文档包含多个环境,则计数器jcenum会为各个环境生成标识符。jcenumjcenum

相关内容