我正在嘗試製作一個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}
,而不是enumi
:使用您傳遞enumi
給\circled
as 的程式碼#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}
只會列印一個樸素的數字。