众所周知,LATEX 提供了 \textcircled
命令用以给字符加圈,但效果却不怎么好:
实际上,加圈并不是一个平凡的变换,它会涉及到圈内字符形状的微调,而这是几乎无法在 TEX 宏层面解决的。因此,要得到比较好的效果,最好能使用预先设计的字符形(glyph)。
传统方案
pifont
宏包提供了一系列杂锦符号(dingbats),其中就有带圈数字。pifont
属于 psnfss
宏集,它封装了一系列 PostScript 字体,包含著名的 Helvetica、Times、Courier 等。pifont
使用的是 Zapf Dingbats 字体。
使用 \ding{<number>}
可以很方便地使用带圈数字(共有四种),当然也有其他符号。具体数字可参见下图:
在主流的 TEX 引擎下,pifont
宏包都可以使用。
Unicode
数字 0–50 的带圈版本都分配了对应的 Unicode 码位,因而在现代 TEX 引擎(XETEX 和 LuaTEX,若无特殊说明以下仅讨论这两者)中,配合合适的字体,理论上可以直接输入这些符号。具体见下表:[1]
⓪ | ① | ② | ③ | ④ | ⑤ | ⑥ | ⑦ | ⑧ | ⑨ | ⑩ |
24EA | 2460 | 2461 | 2462 | 2463 | 2464 | 2465 | 2466 | 2467 | 2468 | 2469 |
⑪ | ⑫ | ⑬ | ⑭ | ⑮ | ⑯ | ⑰ | ⑱ | ⑲ | ⑳ | |
246A | 246B | 246C | 246D | 246E | 246F | 2470 | 2471 | 2472 | 2473 | |
㉑ | ㉒ | ㉓ | ㉔ | ㉕ | ㉖ | ㉗ | ㉘ | ㉙ | ㉚ | |
3251 | 3252 | 3253 | 3254 | 3255 | 3256 | 3257 | 3258 | 3259 | 325A | |
㉛ | ㉜ | ㉝ | ㉞ | ㉟ | ㊱ | ㊲ | ㊳ | ㊴ | ㊵ | |
325B | 325C | 325D | 325E | 325F | 32B1 | 32B2 | 32B3 | 32B4 | 32B5 | |
㊶ | ㊷ | ㊸ | ㊹ | ㊺ | ㊻ | ㊼ | ㊽ | ㊾ | ㊿ | |
32B6 | 32B7 | 32B8 | 32B9 | 32BA | 32BB | 32BC | 32BD | 32BE | 32BF |
Zapf Dingbats 中的其他几种样式也分配有码位:
-
反白(negative circled digits)
⓿ ❶ ❷ ❸ ❹ ❺ ❻ ❼ ❽ ❾ ❿ 24FF 2776 2777 2778 2779 277A 277B 277C 277D 277E 277F ⓫ ⓬ ⓭ ⓮ ⓯ ⓰ ⓱ ⓲ ⓳ ⓴ 24EB 24EC 24ED 24EE 24EF 24F0 24F1 24F2 24F3 24F4 -
无衬线(circled sans-serif digits)
🄋 ➀ ➁ ➂ ➃ ➄ ➅ ➆ ➇ ➈ ➉ 1F10B 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 -
无衬线反白(negative circled sans-serif digits)
🄌 ➊ ➋ ➌ ➍ ➎ ➏ ➐ ➑ ➒ ➓ 1F10C 278A 278B 278C 278D 278E 278F 2790 2791 2792 2793
此外,还额外增加了一些样式:
-
双线(double circled digits)
⓵ ⓶ ⓷ ⓸ ⓹ ⓺ ⓻ ⓼ ⓽ ⓾ 24F5 24F6 24F7 24F8 24F9 24FA 24FB 24FC 24FD 24FE -
加框(circled numbers on black square)
㉈ ㉉ ㉊ ㉋ ㉌ ㉍ ㉎ ㉏ 3248 3249 324A 324B 324C 324D 324E 324F -
带圆括号(parenthesized digits)
⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ 2474 2475 2476 2477 2478 2479 247A 247B 247C 247D ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ 247E 247F 2480 2481 2482