참조 및 재정의된 열거 목록

참조 및 재정의된 열거 목록

를 재정의했는데 \theenumii상당히 간단한데, 본문에서 참고하면 아래 결과 \ref{enumi21}는 2.1이 아닌 22.1이 됩니다.

\renewcommand{\theenumii}{\theenumi.\arabic{enumii}}로 재정의하면 \renewcommand{\theenumii}{.\arabic{enumii}}2.1 \ref{enumi21}로 올바르게 출력되지만 당연히 레이블이 지저분해집니다.

반면에 이렇게 하면 문제가 해결됩니다.

\renewcommand{\labelenumii}{\arabic{enumi}.\arabic{enumii}}
\renewcommand{\theenumii}{.\arabic{enumii}}

텍스트는 괜찮습니다.하지만 \theenumii.1텍스트로 반환됩니다 . 물론 를 사용할 필요는 없지만 \theenumii이 뒤에 숨어 있는 논리를 이해하고 싶습니다.

\documentclass{article}


\renewcommand{\labelenumii}{\theenumi.\arabic{enumii}}
\renewcommand{\theenumii}{\theenumi.\arabic{enumii}}

\begin{document}
\begin{enumerate}
\item \label{enumi1}
\item Number 2
\begin{enumerate}
    \item Number 2.1 \label{enumi21}
\end{enumerate}
\end{enumerate}

\ref{enumi1}, \ref{enumi21}.

\theenumii \verb|\theenumii|

\theenumi \verb|\theenumi|
\end{document}

답변1

이것은 작동하는 것 같습니다:

\documentclass{article}

\usepackage{enumitem}
\setlist[enumerate,2]{label=\theenumi.\arabic*}
\usepackage{chngcntr}
\counterwithin{enumii}{enumi}

\begin{document}

\begin{enumerate}
\item \label{enumi1}
\item Number 2
\begin{enumerate}
    \item Number 2.1 \label{enumi21}
\end{enumerate}
\end{enumerate}
See \ref{enumi1}, \ref{enumi21}.

\theenumii \verb|\theenumii|

\theenumi \verb|\theenumi|

\end{document} 

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

또는 로드하지 않으려면 다음 줄로 chngcntr바꾸세요 .\counterwithin{…}

\renewcommand{\theenumii}{\theenumi.\arabic{enumii}}

답변2

\labelenumiiand 의 의미를 묻는다면 \theenumii,

\labelenumii:
\long macro:->(\theenumii )

\theenumii:
\long macro:->\@alph \c@enumii 

(나는 texdef)을 사용했다. 를 요청하면 \p@enumii얻을 수 있다.

\p@enumii:
\long macro:->\theenumi 

이것이 문제의 핵심입니다. 매크로는 라벨이 처리될 때 \p@enumii제공되는 값 앞에 추가됩니다 .\theenumii

\documentclass{article}

\renewcommand{\labelenumii}{\theenumi.\arabic{enumii}}
\renewcommand{\theenumii}{\arabic{enumii}}
\makeatletter
\renewcommand{\p@enumii}{\theenumi.}
\makeatother

\begin{document}

\begin{enumerate}
\item \label{enumi1}
\item Number 2
\begin{enumerate}
    \item Number 2.1 \label{enumi21}
\end{enumerate}
\end{enumerate}

\verb|\ref{enumi1}| $\to$ \ref{enumi1}.

\verb|\ref{enumi21}| $\to$ \ref{enumi21}.

\end{document}

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

관련 정보