사용자 정의 비순차적 열거

사용자 정의 비순차적 열거

\item비순차적으로 특별한 순서로 열거 되도록 하고 싶습니다 . 아래 예(현재 프로젝트)에는 항상 정확히 3 \item초가 있습니다.

(카운터가 정의된 최대 수를 초과하는 사용자 오류를 처리하기 위해 열거 목록에 너무 많은 s가 포함되어 있다는 점에 주의를 끌기 위해 s \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' 인수 대신.

내가 생각하고 있는 또 다른 가능한 출력은 샘플 번호 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을 실행합니다.overleaf.com)

답변1

자신만의 목록을 생성한 다음 카운터가 표시되어야 함을 지정하고 두 개를 연결할 수 있습니다( 사용 \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

다음을 사용하지 않는 한 가지 방법 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}

여기에 이미지 설명을 입력하세요

관련 정보