'열거' 환경을 재정의하는 열거 문제

'열거' 환경을 재정의하는 열거 문제

enumerate선택적 인수로 환경을 재정의하고 싶습니다 . 기본적으로 \theenumi항목에 레이블을 지정하고 호출할 때마다 \refcounter 의 (아랍어) 값뿐만 아니라 실제 레이블이 인쇄되도록 재정의하고 싶습니다 enumi.

아래 코드로 시도했는데 .각 레이블에 항상 추가 점( )을 추가한다는 사실을 제외하고는 작동합니다. 내가 그것을 호출하면 \ref올바른 레이블이 인쇄됩니다.

내가 시도한 MWE는 다음과 같습니다.

\documentclass{book}
\usepackage{enumerate}
%%
%%
\let\oldenumerate\enumerate
\let\endoldenumerate\endenumerate
\renewenvironment{enumerate}[1][\arabic{enumi}.]% Defaults to 1. 2. 3. ...
{%
    \bgroup\renewcommand\theenumi{#1}%
    \oldenumerate%
}%
{%
    \endoldenumerate\egroup%
}%
\begin{document}
First list with default enumeration
\begin{enumerate}
\item First item
\item Second item
\end{enumerate}
Second list with custom enumeration
\begin{enumerate}[(\emph{\roman{enumi}})]
\item First item
\item Second item
\end{enumerate}
Labels have an extra dot in the lists, but references \ref{a} and \ref{b} are printed correctly.
\end{document}

이는 위 코드의 출력입니다.

위 MWE의 출력

enumerate목록에 점이 추가되지 않도록 하려면 어떻게 재정의해야 합니까 ?

답변1

enumitem바퀴를 재발명하는 것보다 이런 종류의 작업에 패키지를 사용하는 것이 훨씬 쉽습니다 . 이 특정 예에서는 괄호가 이탤릭체 숫자와 잘 어울리도록 음수 커른을 추가했습니다. Kannappan Sampath가 지적한 것처럼 참조 형식을 별도로 지정할 수도 있습니다.

\documentclass{article}
\usepackage{enumitem}
\begin{document}
Second list with custom enumeration
\begin{enumerate}[label=(\kern-.5pt\emph{\roman*}),ref=(\roman*)]
\item First item \label{a}
\item Second item \label{b}
\end{enumerate}
Labels have an extra dot in the lists, but references \ref{a} and \ref{b} are printed correctly.
\end{document}

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

답변2

다음과 같은 솔루션이 있습니다 enumitem.

\documentclass{book}
\usepackage{enumitem}
%%% Set the default: number followed by a period
\setlist[enumerate,1]{label=\arabic*.}

\begin{document}
First list with default enumeration
\begin{enumerate}
\item First item
\item\label{a} Second item
\end{enumerate}
Second list with custom enumeration
\begin{enumerate}[label=(\emph{\roman*})]
\item First item
\item\label{b} Second item
\end{enumerate}
Labels have an extra dot in the lists, and references
\ref{a} and \ref{b} are printed correctly.
\end{document}

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

관련 정보