内联枚举列表 mod 2

内联枚举列表 mod 2

考虑一下平均能量损失

\documentclass{report}
\usepackage[inline]{enumitem}
\newcommand{\foo}{Very long text to fill some lines}
\usepackage{xcolor}
\begin{document}

\begin{enumerate*}
\item \foo\ \foo
\item \foo\ \foo\ \foo
\item \foo
\end{enumerate*}

\bigskip

\textbf{\textcolor{red}{1.}} \textit{\foo\ \foo}\
\textbf{\textcolor{blue}{2.}} \foo\ \foo\ \foo\ 
\textbf{\textcolor{red}{1.}} \textit{\foo}

\end{document}

在此处输入图片描述

第一段展示了使用enumitem包生成的内联列表。非常棒!

但我想要一种简单的方法来获得第二段所示的结果。

也就是说,我想要计数器 mod 2,以及一种根据奇偶校验来格式化标签和项目内容的简单方法。

任何想法?

答案1

您可以定义自己的内联enumerate*环境:

在此处输入图片描述

\documentclass{article}

\newcommand{\foo}{Very long text to fill some lines}

\newenvironment{enumerate*}
  {\setcounter{enumi}{0}% Restart the list item counter
   \renewcommand{\item}{% Update \item to ...
     \ifvmode\else\unskip\hspace{.5em}\fi% ... insert space before label
     \refstepcounter{enumi}% ... step the enumi counter
     \ifodd\value{enumi}
       \normalfont\textcolor{red}{\textbf{\theenumi.}}\itshape
     \else% \value{enumi} is even
       \normalfont\textcolor{blue}{\textbf{\theenumi.}}%
       \setcounter{enumi}{0}% Reset counter
     \fi
     \hspace{.5em}% Space after item label
     \nobreak% Avoid breaks after setting the label + space
   }
  }{}

\usepackage{xcolor}
\begin{document}

\begin{enumerate*}
  \item \foo\ \foo
  \item \foo\ \foo\ \foo
  \item \foo
\end{enumerate*}

\bigskip

\textbf{\textcolor{red}{1.}} \textit{\foo\ \foo}\
\textbf{\textcolor{blue}{2.}} \foo\ \foo\ \foo\ 
\textbf{\textcolor{red}{1.}} \textit{\foo}

\end{document}

答案2

您可以尝试以下操作并根据您的需要进行调整:

\documentclass{report}
\usepackage[inline]{enumitem}
\newcommand{\foo}{Very long text to fill some lines}
\usepackage{xcolor}

\newcommand*{\modtwolabel}[1]{\ifodd#1%
                           \textbf{\textcolor{red}{1.}}%
                         \else 
                           \textbf{\textcolor{blue}{2.}}%
                         \fi}

\begin{document}

\begin{enumerate*}[label={\protect\modtwolabel{\value*}}]
\item \foo\ \foo
\item \foo\ \foo\ \foo
\item \foo
\end{enumerate*}

\bigskip

\textbf{\textcolor{red}{1.}} \textit{\foo\ \foo}\
\textbf{\textcolor{blue}{2.}} \foo\ \foo\ \foo\ 
\textbf{\textcolor{red}{1.}} \textit{\foo}

\end{document}

内联枚举模二

加上一些额外的标记,这也会影响项目内容。顺便说一句,我了解到 ,enumitem\AddEnumerateCounter承诺为我的 提供更清晰的界面\modtwolabel,但我无法让它工作。

\documentclass{report}
\usepackage[inline]{enumitem}
\newcommand{\foo}{Very long text to fill some lines}
\usepackage{xcolor}

\newif\ifoddlabel
\newcommand*{\modtwolabel}[1]{\ifodd#1%
                           \textbf{\textcolor{red}{1.}}%
                           \global\oddlabeltrue
                         \else 
                           \textbf{\textcolor{blue}{2.}}%
                           \global\oddlabelfalse
                         \fi}

\newcommand*{\sigur}{\relax\ifoddlabel\itshape\fi}


\begin{document}

\begin{enumerate*}[label={\protect\modtwolabel{\value*}}]
\item\sigur \foo\ \foo
\item\sigur \foo\ \foo\ \foo
\item\sigur \foo
\end{enumerate*}

\bigskip

\textbf{\textcolor{red}{1.}} \textit{\foo\ \foo}\
\textbf{\textcolor{blue}{2.}} \foo\ \foo\ \foo\ 
\textbf{\textcolor{red}{1.}} \textit{\foo}

\end{document}

使用 mod two 内容二进行内联枚举

答案3

目前还不清楚你为什么要这么做,但事实就是如此。

\documentclass{report}
\usepackage[inline]{enumitem}
\usepackage{etoolbox}
\usepackage{xcolor}

\newcommand\agi{\aftergroup\aftergroup\aftergroup\itshape}
\newcommand\agu{\aftergroup\aftergroup\aftergroup\upshape}

\newrobustcmd{\SP}{}
\newrobustcmd{\modulotwo}[4]{%
  % #1 = color for odd, #2 = color for even, #3 = format, #4 = counter
  \upshape
  \ifodd#4\relax
    \def\SP{1}\textcolor{#1}{#3}\aftergroup\agi
  \else
    \def\SP{2}\textcolor{#2}{#3}\aftergroup\agu
  \fi
}

\newcommand{\foo}{Very long text to fill some lines}
\begin{document}

\begin{enumerate*}[label=\modulotwo{red}{blue}{\SP.}{\value*}]
\item \foo\ \foo
\item \foo\ \foo\ \foo
\item \foo
\end{enumerate*}

\bigskip

\begin{enumerate*}[label=\modulotwo{red}{blue}{(\SP)}{\value*}]
\item \foo\ \foo
\item \foo\ \foo\ \foo
\item \foo
\end{enumerate*}

\end{document}

在此处输入图片描述

在第三个参数中,\modulotwo您可以指定格式;数字(1 或 2)由 表示\SP


没有这个的不同实现enumerate似乎并不是您真正需要的。

\documentclass{report}
\usepackage{xcolor}

\newenvironment{twovoices}
 {\setcounter{twovoices}{0}%
  \trivlist\item\relax\hspace{\parindent}\hspace{-\voiceindent}%
  \let\item\twovoicesitem}
 {\endtrivlist}
\newcommand{\twovoicesitem}{%
  \stepcounter{twovoices}%
  \upshape\hspace{\voiceindent}%
  \ifodd\value{twovoices}%
    \textcolor{red}{1.}\itshape
  \else
    \textcolor{blue}{2.}%
  \fi
  \nolinebreak\enspace\ignorespaces
}
\newcounter{twovoices}
\newlength{\voiceindent}
\setlength{\voiceindent}{2em plus .5em minus .5em}

\newcommand{\foo}{Very long text to fill some lines}
\begin{document}

\begin{twovoices}
\item \foo\ \foo
\item \foo\ \foo\ \foo
\item \foo
\end{twovoices}

\end{document}

在此处输入图片描述

相关内容