Я пытаюсь создать 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
. Я слежу за Викиучебниками нанастройка нумерованных списков. Я думаю, что должен быть способ заставить это работать без добавления дополнительных пакетов, но я не знаю как.
Если это не через enumi
,как мне получить доступ к номеру списка?
Ваше здоровье!
решение1
Вам следуетнетскажем \textbf#1
, но \bfseries#1
или \textbf{#1}
. Также должно быть \arabic{enumi}
, а не enumi
: с вашим кодом вы передаете enumi
as \circled
, #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}
просто выведет неукрашенное число.