
enumerate
선택적 인수로 환경을 재정의하고 싶습니다 . 기본적으로 \theenumi
항목에 레이블을 지정하고 호출할 때마다 \ref
counter 의 (아랍어) 값뿐만 아니라 실제 레이블이 인쇄되도록 재정의하고 싶습니다 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}
이는 위 코드의 출력입니다.
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}