カスタム非連続列挙

カスタム非連続列挙

非連続的な特別な順序で列挙したいと思います\item。以下の例 (現在のプロジェクト) では、常に 3\item個あります。

(カウンターが定義された最大数を超えた場合のユーザー エラーを処理するために、列挙リストに が多すぎることを注意させるために、\itemに対して (赤色の) エラー テキストを出力することができます。)\item\item

ここに画像の説明を入力してください

この場合、私は丸で囲んだテキストのコードを使用しています\textcircled 数字を作成する良い方法はありますか?

入力したい

\begin{CircleProcedure}
\item \lipsum[1][1-2]
\item \lipsum[1][1-2]
\item \lipsum[1][1-2]
\end{CircleProcedure}

以下の MWE に示されている 'full' 引数の代わりに使用します。

私が考えているもう1つの可能な出力は、サンプル番号2に示すように、数学的なインデックスを使用することです。

以下に、MWE での推奨入力を示しますが、ここで[]は避けたい引数も示します。

(シンプルで統一された入出力環境が使用されるため)

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}

(私はpdfLaTeX 2023をオーバーリーフ

答え1

独自のリストを生成し、表現するカウンターを指定して、2 つをリンクすることができます ( を使用\AddEnumerateCounter)。カウンター表現は、1、2、3 の数字の外観を定義し、\item4 (またはそれ以上) の場合はエラー (「カウンターが大きすぎます」) を引き起こします。

ここに画像の説明を入力してください

\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

を使用しない1つの方法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}

ここに画像の説明を入力してください

関連情報