항목별 환경의 사용자 정의 재정의를 위해 왼쪽 여백을 하드 코딩할 수 없습니다.

항목별 환경의 사용자 정의 재정의를 위해 왼쪽 여백을 하드 코딩할 수 없습니다.

문서 enumitem에는 다음 그림이 나와 있습니다.

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

itemize기본값을 넘어 여러 수준의 중첩을 수행할 수 있도록 환경을 재정의하려고 합니다 . 나는 각각의 새로운 중첩 수준을 이전 수준과 비슷한 거리에 들여쓰고 싶습니다. 따라서 위의 그림을 기반으로 \leftmargin사용하기에 올바른 변수가 있다고 생각합니다.

\documentclass{article}

\usepackage{enumitem}
\usepackage{pifont, graphicx}

\let\oldlabelitemi\labelitemi
\let\oldlabelitemii\labelitemii
\let\oldlabelitemiii\labelitemiii
\let\oldlabelitemiv\labelitemiv

\setlistdepth{9}
\setlist[itemize, 1]{label=\oldlabelitemi, leftmargin=25pt}
\setlist[itemize, 2]{label=\oldlabelitemii, leftmargin=30pt}
\setlist[itemize, 3]{label=\oldlabelitemiii, leftmargin=35pt}
\setlist[itemize, 4]{label=\scalebox{0.7}{\ding{117}}, leftmargin=40pt}
\setlist[itemize, 5]{label=\scalebox{0.7}{\ding{110}}, leftmargin=45pt}
\setlist[itemize, 6]{label=\scalebox{0.7}{\ding{115}}, leftmargin=50pt}
\setlist[itemize, 7]{label=\scalebox{0.7}{\ding{108}}, leftmargin=55pt}
\setlist[itemize, 8]{label=\scalebox{0.7}{\ding{53}}, leftmargin=60pt}
\setlist[itemize, 9]{label=\oldlabelitemiv, leftmargin=65pt}

\renewlist{itemize}{itemize}{9}

\begin{document}

\begin{itemize}
\item 1
  \begin{itemize}
  \item 2
    \begin{itemize}
    \item 3
      \begin{itemize}
      \item 4
        \begin{itemize}
        \item 5
          \begin{itemize}
          \item 6
            \begin{itemize}
            \item 7
              \begin{itemize}
              \item 8
                \begin{itemize}
                \item 9
                \end{itemize}
              \end{itemize}
            \end{itemize}
          \end{itemize}
        \end{itemize}
      \end{itemize}
    \end{itemize}
  \end{itemize}
\end{itemize}

\end{document}

그러나 이것을 컴파일하면 새로운 중첩 수준이 나올 때마다 왼쪽 여백이 증가하는 것 같습니다.

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

이런 일이 발생하는 이유는 무엇이며 이러한 일이 발생하지 않도록 하려면 어떻게 해야 합니까?

답변1

모든 레벨을 포함한 전체 목록에 대해 전역 설정을 지정한 다음 별표 버전을 사용하여 \setlist*개별 레벨을 변경할 수 있습니다. 예를 들어 아래 코드에서는 라벨만 변경했지만 사용자도 변경할 수 있습니다 leftmargin.

\documentclass{article}
\usepackage{enumitem}
\usepackage{pifont, graphicx}
\usepackage{kantlipsum}

\let\oldlabelitemi\labelitemi
\let\oldlabelitemii\labelitemii
\let\oldlabelitemiii\labelitemiii
\let\oldlabelitemiv\labelitemiv
\setlistdepth{9}
\renewlist{itemize}{itemize}{9}
\setlist[itemize]{
  align=left,
  leftmargin=*,         % or use fixed length like 0.5em etc.
  listparindent=1.5em,  % indentation for subsequent paragraphs 
  label=\scalebox{0.7}{\ding{117}}, % Default label
}
\setlist[itemize, 1]{label=\oldlabelitemi}
\setlist[itemize, 2]{label=\oldlabelitemii}
\setlist[itemize, 3]{label=\oldlabelitemiii}
\setlist[itemize, 9]{label=\oldlabelitemiv}


\begin{document}

\begin{itemize}
\item \kant[2][1]\kant[3][1]
\item \kant[2][1]\kant[3][1]
  \begin{itemize}
  \item \kant[2][1]\kant[3][1]
  \item \kant[2][1]\kant[3][1]
    \begin{itemize}
    \item \kant[2][1]\kant[3][1] 
    \item \kant[2][1]\kant[3][1] 
      \begin{itemize}
      \item \kant[2][1]\kant[3][1]
        \begin{itemize}
        \item \kant[2][1]\kant[3][1]
          \begin{itemize}
          \item \kant[2][1]\kant[3][1]
            \begin{itemize}
            \item \kant[2][1]\kant[3][1]
              \begin{itemize}
              \item \kant[2][1]\kant[3][1]
                \begin{itemize}
                \item \kant[2][1]\kant[3][1]
                \end{itemize}
              \end{itemize}
            \end{itemize}
          \end{itemize}
        \end{itemize}
      \end{itemize}
    \end{itemize}
  \end{itemize}
\end{itemize}

\end{document}

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

관련 정보