我希望我的\item
枚举按特殊顺序排列,不按顺序排列。在下面的示例中(这是我当前的项目),始终恰好有 3 个\item
。
(为了处理\item
计数器超过定义的最大数量时的用户错误,它可以为(s)输出(红色)错误文本\item
,以提醒您枚举列表包含太多的\item
s。)
在这种情况下,我使用了来自制作 \textcircled 数字的好方法?
我想输入
\begin{CircleProcedure}
\item \lipsum[1][1-2]
\item \lipsum[1][1-2]
\item \lipsum[1][1-2]
\end{CircleProcedure}
而不是像下面的 MWE 中所示的“完整”参数。
我想到的另一种可能的输出是数学指数,如示例 2 所示
下面我展示了 MWE 中的建议输入,但带有[]
我想要避免的参数。
(用于简单和统一的输入/输出环境)
梅威瑟:
\documentclass{article}
\usepackage{tikz}
\usepackage{lipsum}
\usepackage{enumitem}
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{
\node[shape=circle,draw,inner sep=2pt] (char) {#1};}}
\newenvironment{CircleProcedure}
{\begin{enumerate}[labelwidth=16mm,leftmargin=16mm,labelsep=2mm]}
{\end{enumerate}}
\newenvironment{IndexProcedure}
{\begin{enumerate}[align=left,labelwidth=9mm,leftmargin=10mm,labelsep=1mm]}
{\end{enumerate}}
\begin{document}
\lipsum[1][1-5]
\begin{CircleProcedure}
\item[\circled{1}] \lipsum[1][1-2]
\item[\circled{2}] \lipsum[1][1-2]
\item[\(\circled{1}+\circled{2}\)] \lipsum[1][1-2]
\end{CircleProcedure}
\lipsum[1][1-5]
\begin{IndexProcedure}
\item[\(\textbf{P}_{1}\)] \lipsum[1][1-2]
\item[\(\textbf{P}_{2}\)] \lipsum[1][1-2]
\item[\(\textbf{P}_{1+2}\)] \lipsum[1][1-2]
\end{IndexProcedure}
\lipsum[1][1-5]
\end{document}
(我在overleaf.com)
答案1
您可以生成自己的列表,然后指定应表示的计数器并将两者链接起来(使用\AddEnumerateCounter
)。计数器表示定义了 1、2 和 3 的数字,并为\item
4(或更高)导致错误(“计数器太大”)。
\documentclass{article}
\usepackage{tikz}
\usepackage{lipsum}
\usepackage{enumitem}
\NewDocumentCommand{\circled}{m}{%
\tikz[baseline=(char.base)]{%
\node[shape=circle,draw,inner sep=2pt] (char) {#1};}}
\newlist{CircleProcedure}{enumerate}{1}
\setlist[CircleProcedure]{%
labelwidth=16mm,
leftmargin=16mm,
labelsep=2mm,
label=\circledenum*,
}
\newlist{IndexProcedure}{enumerate}{1}
\setlist[IndexProcedure]{%
align=left,
labelwidth=15mm,
leftmargin=15mm,
labelsep=0mm,
label=\indexenum*
}
\makeatletter
\newcommand*{\circledenum}[1]{%
\expandafter\@circledenum\csname c@#1\endcsname%
}
\newcommand*{\@circledenum}[1]{%
$\ifcase#1\or\circled{1}\or\circled{2}\or\circled{1}+\circled{2}%
\else\@ctrerr\fi$%
}
\AddEnumerateCounter{\circledenum}{\@circledenum}{1}
\newcommand*{\indexenum}[1]{%
\expandafter\@indexenum\csname c@#1\endcsname%
}
\newcommand*{\@indexenum}[1]{%
$\ifcase#1\or\textbf{P}_1\or\textbf{P}_2\or\textbf{P}_1+\textbf{P}_2%
\else\@ctrerr\fi$%
}
\AddEnumerateCounter{\indexenum}{\@indexenum}{1}
\makeatother
\begin{document}
\lipsum[1][1-5]
\begin{CircleProcedure}
\item \lipsum[1][1-2]
\item \lipsum[1][1-2]
\item \lipsum[1][1-2]
\end{CircleProcedure}
\lipsum[1][1-5]
\begin{IndexProcedure}
\item \lipsum[1][1-2]
\item \lipsum[1][1-2]
\item \lipsum[1][1-2]
\end{IndexProcedure}
\lipsum[1][1-5]
\end{document}
如果需要,您还可以使用\label
和。\ref
答案2
一种不使用的方法enumitem
:
\documentclass{article}
\usepackage{tikz}
\usepackage{lipsum}
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{
\node[shape=circle,draw,inner sep=2pt] (char) {#1};}}
\newcounter{CircledProcedure}
\newenvironment{CircledProcedure}%
{\begin{list}{}{
\labelwidth 16mm%
\leftmargin 16mm%
\labelsep 2mm%
\let\makelabel\CircledProcedureLabel
\usecounter{CircledProcedure}
}}{\end{list}}
\newcommand*{\CircledProcedureLabel}{%
\ifnum\value{CircledProcedure}<3 \hfill\circled{\theCircledProcedure} \else \(\circled{1}+\circled{2}\) \fi}
\begin{document}
\begin{CircledProcedure}
\item \lipsum[1][1-2]
\item \lipsum[1][1-2]
\item \lipsum[1][1-2]
\end{CircledProcedure}
\end{document}