LaTeX 中的带圈数字一直是比较有趣的东西,今天来谈一谈在 LaTeX 中的实现方案
LaTeX 自带的 \textcircled
这个命令效果不好,数字在垂直方向并没有居中
latex
\textcircled{1}, \textcircled{2}, \textcircled{5},
\textcircled{9}, \textcircled{12}
当然可以手动调节一下
latex
\def\circled#1{\raisebox{.5pt}{\textcircled{\raisebox{-.9pt}{#1}}}}
\circled{1}, \circled{2}, \circled{5},
\circled{9}, \circled{12}
看起来会好一些,但是遇到两位及以上的数字就没办法了.
pifont 宏包
latex
% \usepackage{tikz}
% \usepackage{pifont}
\foreach \x in {1, 2, ..., 10}
{
\ding{\numexpr 171+\x\relax},
}
\foreach \x in {1, 2, ..., 10}
{
\ding{\numexpr 181+\x\relax},
}
\foreach \x in {1, 2, ..., 10}
{
\ding{\numexpr 191+\x\relax},
}
\foreach \x in {1, 2, ..., 10}
{
\ding{\numexpr 201+\x\relax},
}
这个宏包提供了 \ding{number}
命令,只需要填入一个数字就能得到对应的符号,172-211
都是带圈数字,不过也还是有一个明显的缺陷,10 以上的数字无法表示. 并且里面的字体字形是固定的,没有办法更换.
TiKZ
latex
% \usepackage{tikz}
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{\node[circle, draw, inner sep=2pt] (char) {#1};}}
\circled{1}, \circled{2}, \circled{5},
\circled{9}, \circled{12}
TiKZ
是比较简单且灵活的,这里只展示了它最基础的功能.
circledsteps 宏包
这个包提供了 \Circled[]{}
命令用来绘制带圈数字,
latex
% \usepackage{circledsteps}
\Circled{1}, \Circled[inner color = red]{2}, \Circled[outer color = green]{5}
\Circled[fill color = cyan]{9}, \Circled[inner xsep = 8pt]{12}
这个包是对 TiKZ
的封装,所以它能做到的 TiKZ
也能够做到.
circledtext 宏包
这个包是 耿楠 教授基于 l3draw
和 latex3
开发的,其中还做了字符压缩,值得推荐,可以看看说明手册
latex
\circledtextset{charf = \LARGE}
\foreach \x in {1,2,...,5,10,100}
{
\circledtext{\x}\,
}
\foreach \x in {1,2,...,5,10,100}
{
\circledtext[boxcolor=cyan,boxtype=ox,boxfill = red!20]{\x}\,
}
结合 enumitem 包
这里基于上面的 TiKZ
方案配合 enumitem
包实现带圈数字列表
latex
\documentclass{article}
\usepackage[margin = 2cm]{geometry}
\pagestyle{plain}
\usepackage{tikz}
\usepackage{enumitem}
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{\node[circle, draw, inner sep=0pt, minimum size = 1.3em] (char) {#1};}}
\begin{document}
\begin{enumerate}[label = \protect\circled{\arabic*}]
\item test \verb|\circled|, test \verb|\circled|
\item test \verb|\circled|, test \verb|\circled|
\item test \verb|\circled|, test \verb|\circled|
\item test \verb|\circled|, test \verb|\circled|
\item test \verb|\circled|, test \verb|\circled|
\item test \verb|\circled|, test \verb|\circled|
\item test \verb|\circled|, test \verb|\circled|
\item test \verb|\circled|, test \verb|\circled|
\item test \verb|\circled|, test \verb|\circled|
\item test \verb|\circled|, test \verb|\circled|
\item test \verb|\circled|, test \verb|\circled|
\end{enumerate}
\end{document}
得到