tikz를 사용하여 열거된 목록을 사용자 정의하면 숫자 대신 enumi가 인쇄됩니다.

tikz를 사용하여 열거된 목록을 사용자 정의하면 숫자 대신 enumi가 인쇄됩니다.

enumerate색칠된 원 안에 숫자가 포함된 목록을 만들려고 합니다 . 서클의 경우 tikz패키지와 color패키지를 사용하고 있습니다. 서문에 원을 정의한 다음 목록 항목을 재정의합니다.

\documentclass{report}

\usepackage{color}
\usepackage{tikz}

% Defining the circle:
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{
    \node[shape=circle,draw,inner sep=2pt,fill=lightgray,lightgray] (char) {\color{gray}\textbf#1};}}

% Redefining the list items
\renewcommand{\labelenumi}{\protect\circled{enumi}}

\begin{document}

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

\end{document}

문제는 목록 번호를 인쇄하는 대신 enumi. 나는 Wikibooks를 팔로우하고 있습니다.열거 목록 사용자 정의. 추가 패키지를 추가하지 않고도 작동하게 할 수 있는 방법이 있어야 한다고 생각하는데, 방법을 모르겠습니다.

통과되지 않은 경우 enumi,목록 번호에 어떻게 접근해야 하나요??

건배!

답변1

당신은해야~ 아니다, \textbf#1그러나 \bfseries#1또는 \textbf{#1}. 또한 \arabic{enumi}, not : 로 enumi전달하는 코드에서는 카운터 값을 인쇄하는 명령이 아니라 as 이어야 합니다 .enumi\circled#1

그러나 다음을 사용하는 것이 좋습니다 enumitem.

\documentclass{report}

\usepackage{color}
\usepackage{tikz}
\usepackage{enumitem}

% Defining the circle:
\DeclareRobustCommand*\circled[1]{%
  \tikz[
    baseline=(char.base)
  ]{%
    \node[
      shape=circle,
      draw,
      inner sep=2pt,
      fill=lightgray,
      lightgray
     ] (char) {\color{gray}\bfseries#1};%
   }%
}

\begin{document}

\begin{enumerate}[label=\circled{\arabic*},ref=\arabic*]
 \item foo
 \item bar
\end{enumerate}

\end{document}

모든 첫 번째 수준 enumerate환경을 사용자 정의하여 사용할 수 있습니다 \circled.

\setlist[enumerate,1]{label=\circled{\arabic*},ref=\arabic*}

서문에 에 대한 선택적 인수가 필요하지 않습니다 \begin{enumerate}.

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

추가 패키지를 원하지 않지만 이유가 확실하지 않은 경우 재정의 방법이 \labelenumi작동할 것입니다.

\renewcommand{\labelenumi}{\protect\circled{\arabic{enumi}}}

\circled하지만 당신 을 정의할 때 기억하세요.~ 해야 하다\bfseries#1또는 중 하나를 수행하십시오 \textbf{#1}. 왜냐하면 \textbf#1은 잘못되어 알 수 없는 오류가 발생하기 때문입니다.

왜 로드하고 싶나요 enumitem? 단순한; 당신이 그렇게한다면

\item\label{foo} text

그런 다음 시도하면 \ref{foo}텍스트에 원으로 둘러싸인 숫자가 표시되는데 이는 올바르지 않게 표시됩니다. 위의 코드를 사용하면 enumitem장식 \ref{foo}되지 않은 숫자만 인쇄됩니다.

관련 정보