下面的代码给出了在 cricle 中显示数字的一个很好的解决方案,但是 最好能够控制圆的大小。为什么?在下面的例子中,你会看到圆圈中的三个数字在相同的上下文中看起来并不好看:在同一个段落中或在一个列表中,如下面的代码所示。
因此,我希望我们使用第一个可选参数来执行以下操作:
- 如果第一个可选参数为 0,则圆的直径为当前自动的直径。
- 如果第一个可选参数是一个自然数 n <> 0,那么圆的直径是字符宽度的 n 倍。
- 在其他情况下,必须引发一个错误。
这是要修改的代码...
% Source : http://tex.stackexchange.com/questions/7032/good-way-to-make-pgftextcircled-numbers
\documentclass{article}
\usepackage{enumitem}
\usepackage{tikz}
\newcommand{\pgftextcircled}[2][0]{
\setbox0=\hbox{#2}%
\dimen0\wd0%
\divide\dimen0 by 2%
\begin{tikzpicture}[baseline=(a.base)]%
\useasboundingbox (-\the\dimen0,0pt) rectangle (\the\dimen0,1pt);
\node[
circle,
draw,
outer sep=0pt,
inner sep=0.1ex
] (a) {#2};
\end{tikzpicture}
}
\begin{document}
\begin{description}
\item[Automatic width :] \pgftextcircled{0} , \pgftextcircled{63} , \pgftextcircled{733}
\item[Width = 2 :] \pgftextcircled[2]{0} , \pgftextcircled[2]{63} , \pgftextcircled[2]{733}
\item[Width = 3 :] \pgftextcircled[3]{0} , \pgftextcircled[3]{63} , \pgftextcircled[3]{733}
\end{description}
Lets' try in one list :
\begin{enumerate}[label=\protect{\pgftextcircled[2]{\arabic*}}]
\item Item n°1
\item Item n°2
\item Item n°3
\item Item n°4
\item Item n°5
\item Item n°6
\item Item n°7
\item Item n°8
\item Item n°9
\item Item n°10
\item Item n°11
\item Item n°12
\end{enumerate}
\end{document}
答案1
例如尝试一下:
\documentclass{article}
\usepackage{enumitem}
\usepackage{tikz}
\newbox\nodebox
\newcommand\pgftextcircled[2][0]{%
\ifnum#1=0 \setbox\nodebox\hbox{#2}%
\else \setbox\nodebox\hbox{0}\wd\nodebox\dimexpr\wd\nodebox*#1\relax
\fi
\begin{tikzpicture}[baseline=(a.base)]%
\node[draw,circle,outer sep=0pt,inner sep=0.5pt](a){\hbox to\wd\nodebox{\hss#2\hss}};
\end{tikzpicture}%
}
\begin{document}
\begin{description}
\item[Automatic width :] \pgftextcircled{1} , \pgftextcircled{63} , \pgftextcircled{733}
\item[Width = 2 :] \pgftextcircled[2]{0} , \pgftextcircled[2]{63} , \pgftextcircled[2]{733}
\item[Width = 3 :] \pgftextcircled[3]{0} , \pgftextcircled[3]{63} , \pgftextcircled[3]{733}
\end{description}
\begin{enumerate}[label=\protect{\pgftextcircled[2]{\arabic*}}]
\item Item n°1
\item Item n°2
\item Item n°3
\item Item n°4
\item Item n°5
\item Item n°6
\item Item n°7
\item Item n°8
\item Item n°9
\item Item n°10
\item Item n°11
\item Item n°12
\end{enumerate}
\end{document}