latex如何添加圆圈数字?
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
⒈⒉⒊ ⒋ ⒌ ⒍ ⒎ ⒏⒐ ⒑ 1F100 2488 2489 248A 248B 248C 248D 248E 248F 2490 2491
⒒⒓⒔ ⒕ ⒖ ⒗ ⒘ ⒙⒚ ⒛ 2492 2493 2494 2495 2496 2497 2498 2499 249A 249B
2492 2493 2494 2495 2496 2497 2498 2499 249A 249B
在主流的 TEX 引擎下,pifont 宏包都可以使用。
Unicode
数字 0–50 的带圈版本都分配了对应的 Unicode 码位,因而在现代 TEX 引擎(XETEX 和 LuaTEX,若无特殊说明以下仅讨论这两者)中,配合合适的字体,理论上可以直接输 入这些符号。具体见下表:
①②③④⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 24EA 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469
\TESTi \TESTii \TESTiii
当然,其他样式的带圈数字并没有提供快捷的输入方式。
在 ctex 宏集中使用
以上的案例都是在标准文档类 article 中搭配 fontspec 宏包完成的。如果切换成 ctex 宏集,则需要额外做一些调整。
对于中文文档,我们通常需要为中西文(「西文」主要指 Latin script)分别设置字体。上面已经提到过,带圈数字分散在了几个 Unicode 区块中。xeCJK 将其中的 Enclosed CJK Letters and Months 和 Enclosed Ideographic Supplement 设置为了 CJK 字符类,使用中文字体;其余则为 Default 字符类,使用西文字体。
3280 3281 3282 3283 3284 3285 3286 3287 3288 3289
1F229 1F214 1F22A
1F242 1F241
这些符号分散在以下几个 Unicode 区块(block)中:
Enclosed Alphanumerics (U+2460–U+24FF) 带圈 0–20(以及 a–z、A–Z) 反白 0、11–20 双线 1–10 带圆括号 1–20 带点 1–20
西文
Enclosed Ideographic Supplement 中文
西文
在 XELATEX 下,可以做如下修改:
% 使用中文字体
\xeCJKDeclareCharClass{CJK}{%
"24EA,
%
"2460->"2473, % ①–
"3251->"32BF, % –
"24FF,
%
"2776->"277F, % ❶–❿
➊ ➋ ➌ ➍ ➎ ➏➐➑➒➓ 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)
❶ ❷ ❸ ❹ ❺❻❼❽❾❿ 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)
"24EB->"24F4 % –
}
\setCJKmainfont{Source Han Serif SC}
% 或使用西文字体 % \xeCJKDeclareCharClass{Default}{% % "24EA, "2460->"2473, "3251->"32BF, % "24FF, "2776->"277F, "24EB->"24F4} % \setmainfont{Garamond-Math.ja 作出了 ALchar 和 JAchar 的划分,大致相当于西文和日文(AL=ALphabetic,JA=JApanese);同时又预定义了一些字符 范围。默认设置中,上文所列的所有带圈数字均会使用日文字体。其后,ctex 宏集为了适应中文排版的需求又做了一些修改。结果是,Enclosed Alphanumerics 被设置为了 ALchar,即使用西文字体。
% 或使用西文字体 % \ltjdefcharrange{3}{% % "24EA, "2460-"2473, "3251-"32BF, % "24FF, "2776-"277F, "24EB-"24F4} % \setmainfont{Garamond-Math.otf}
这里的 6 和 3 原先分别对应日文字符和西文标点、符号。还需注意范围的写法与 xeCJK 中不同。
总而言之,在 ctex 宏集的默认配置下:
Unicode 区块
XELATEX LuaLATEX
Enclosed Alphanumerics
西文
西文
Dingbats
西文
西文
Enclosed CJK Letters and Months 中文
中文
Enclosed Alphanumeric Supplement 西文
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)
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 2483 2484 2485 2486 2487 带点(digits with full stop)
传统方案
pifont 宏包提供了一系列(dingbats),其中就有带圈数字。pifont 属于 psnfss 宏集,它封装了一系列 PostScript 字体,包含著名的 Helvetica、Times、Courier 等。pifont 使用的 是 字体。 使用 \ding{<number>} 可以很方便地使用带圈数字(共有四种),当然也有其他符号。具体数字可参见下图:
使用 XELATEX 或 LuaLATEX 编译,效果如下:
xunicode-addon 宏包
在实际使用中,无论是依靠码位,还是借由输入法直接录入这些特殊字符,都不是很方便。在 xunicode-addon 宏包(从属于 xeCJK)中,\textcircled 等一系列命令被重新定义,从而 能够显示 Unicode 所分配的带圈数字(和字母等)。举例如下:
} \cs_set:Npn \TESTii
{ \tl_map_inline:nn { abcdefghijklmnopqrstuvwxyz } { \textcircled{##1} ~ } \par } \cs_set:Npn \TESTiii
{ \tl_map_inline:nn { ABCDEFGHIJKLMNOPQRSTUVWXYZ } { \textcircled{##1} ~ } \par } \ExplSyntaxOff
在 LuaLATEX 下,也完全类似:
% 使用中文字体 \ltjdefcharrange{6}{%
"24EA, "2460-"2473, "3251-"32BF, "24FF, "2776-"277F, "24EB-"24F4} \setCJKmainfont{Source Han Serif SC}
利用 LATEX3 语法也可以迅速写出如下循环而不伤身体:
\ExplSyntaxOn \cs_set:Npn \TESTi
{ \int_step_inline:nnn { 0 } { 25 } { \textcircled{##1} ~ } \par \int_step_inline:nnn { 26 } { 50 } { \textcircled{##1} ~ } \par
\begin{document} ①②③④⑤ \symbol{"2776} \symbol{"2777} \symbol{"2778} \symbol{"2779} \symbol{"277A} \char"3248\ \char"3249\ \char"324A\ \char"324B\ \char"324C\ ^^^^3280 ^^^^3281 ^^^^3282 ^^^^3283 ^^^^3284 ^^^^^1f229 ^^^^^1f214 ^^^^^1f22a \end{document}
Enclosed Ideographic Supplement (U+1F200–U+1F2FF) 带方框 一、二、三 带六角括号 二、三
直接输入,或者利用码位,都能在 LATEX 中使用以上这些带圈数字(注意不同方法对大小写的要求有差异):
\documentclass{article} \usepackage{fontspec} \setmainfont{Source Han Serif SC}
\documentclass{article} \usepackage{fontspec,xunicode-addon} \setmainfont{Source Han Serif SC}
\begin{document} \textcircled{1} \textcircled{25} \textcircled{a} \textcircled{Z} \end{document}
配合 xunicode-addon 宏包,在 ctex 宏集中也同样可以使用 \textcircled 命令输入预定义的带圈数字。但需注意,\textcircled 会预先检查字符是否存在,且仅在西文字体中进行。所以如 需使用中文字体进行显示,就要「指鹿为马」:
带逗号(digits with comma)
1F101 1F102 1F103 1F104 1F105 1F106 1F107 1F108 1F109 1F10A
这些姑且也算上吧:
㈠ ㈡ ㈢ ㈣㈤㈥㈦㈧㈨㈩ 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229
博客园 用户登录 代码改变世界 密码登录 短信登录 忘记登录用户名 忘记密码 记住我 登录 第三方登录/注册 没有账户, 立即注册
latex如 何 添 加 圆 圈 数 字 ?
众所周知,LATEX 提供了 \textcircled 命令用以给字符加圈,但效果却不怎么好:
实际上,加圈并不是一个平凡的变换,它会涉及到圈内字符形状的微调,而这是几乎无法在 TEX 宏层面解决的。因此,要得到比较好的效果,最好能使用预先设计的字符形 (glyph)。
Dingbats (U+2700–U+27BF) 反白 1–10 无衬线 1–10 无衬线反白 1–10
Enclosed CJK Letters and Months (U+3200–U+32FF) 带圈 21–50 加框 10–80(仅限整十) 带圈 一~十 带圆括号 一~十
Enclosed Alphanumeric Supplement (U+1F100–U+1F1FF) 带逗号 0–9 无衬线、无衬线反白以及带点的 0
⒒⒓⒔ ⒕ ⒖ ⒗ ⒘ ⒙⒚ ⒛ 2492 2493 2494 2495 2496 2497 2498 2499 249A 249B
2492 2493 2494 2495 2496 2497 2498 2499 249A 249B
在主流的 TEX 引擎下,pifont 宏包都可以使用。
Unicode
数字 0–50 的带圈版本都分配了对应的 Unicode 码位,因而在现代 TEX 引擎(XETEX 和 LuaTEX,若无特殊说明以下仅讨论这两者)中,配合合适的字体,理论上可以直接输 入这些符号。具体见下表:
①②③④⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 24EA 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469
\TESTi \TESTii \TESTiii
当然,其他样式的带圈数字并没有提供快捷的输入方式。
在 ctex 宏集中使用
以上的案例都是在标准文档类 article 中搭配 fontspec 宏包完成的。如果切换成 ctex 宏集,则需要额外做一些调整。
对于中文文档,我们通常需要为中西文(「西文」主要指 Latin script)分别设置字体。上面已经提到过,带圈数字分散在了几个 Unicode 区块中。xeCJK 将其中的 Enclosed CJK Letters and Months 和 Enclosed Ideographic Supplement 设置为了 CJK 字符类,使用中文字体;其余则为 Default 字符类,使用西文字体。
3280 3281 3282 3283 3284 3285 3286 3287 3288 3289
1F229 1F214 1F22A
1F242 1F241
这些符号分散在以下几个 Unicode 区块(block)中:
Enclosed Alphanumerics (U+2460–U+24FF) 带圈 0–20(以及 a–z、A–Z) 反白 0、11–20 双线 1–10 带圆括号 1–20 带点 1–20
西文
Enclosed Ideographic Supplement 中文
西文
在 XELATEX 下,可以做如下修改:
% 使用中文字体
\xeCJKDeclareCharClass{CJK}{%
"24EA,
%
"2460->"2473, % ①–
"3251->"32BF, % –
"24FF,
%
"2776->"277F, % ❶–❿
➊ ➋ ➌ ➍ ➎ ➏➐➑➒➓ 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)
❶ ❷ ❸ ❹ ❺❻❼❽❾❿ 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)
"24EB->"24F4 % –
}
\setCJKmainfont{Source Han Serif SC}
% 或使用西文字体 % \xeCJKDeclareCharClass{Default}{% % "24EA, "2460->"2473, "3251->"32BF, % "24FF, "2776->"277F, "24EB->"24F4} % \setmainfont{Garamond-Math.ja 作出了 ALchar 和 JAchar 的划分,大致相当于西文和日文(AL=ALphabetic,JA=JApanese);同时又预定义了一些字符 范围。默认设置中,上文所列的所有带圈数字均会使用日文字体。其后,ctex 宏集为了适应中文排版的需求又做了一些修改。结果是,Enclosed Alphanumerics 被设置为了 ALchar,即使用西文字体。
% 或使用西文字体 % \ltjdefcharrange{3}{% % "24EA, "2460-"2473, "3251-"32BF, % "24FF, "2776-"277F, "24EB-"24F4} % \setmainfont{Garamond-Math.otf}
这里的 6 和 3 原先分别对应日文字符和西文标点、符号。还需注意范围的写法与 xeCJK 中不同。
总而言之,在 ctex 宏集的默认配置下:
Unicode 区块
XELATEX LuaLATEX
Enclosed Alphanumerics
西文
西文
Dingbats
西文
西文
Enclosed CJK Letters and Months 中文
中文
Enclosed Alphanumeric Supplement 西文
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)
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 2483 2484 2485 2486 2487 带点(digits with full stop)
传统方案
pifont 宏包提供了一系列(dingbats),其中就有带圈数字。pifont 属于 psnfss 宏集,它封装了一系列 PostScript 字体,包含著名的 Helvetica、Times、Courier 等。pifont 使用的 是 字体。 使用 \ding{<number>} 可以很方便地使用带圈数字(共有四种),当然也有其他符号。具体数字可参见下图:
使用 XELATEX 或 LuaLATEX 编译,效果如下:
xunicode-addon 宏包
在实际使用中,无论是依靠码位,还是借由输入法直接录入这些特殊字符,都不是很方便。在 xunicode-addon 宏包(从属于 xeCJK)中,\textcircled 等一系列命令被重新定义,从而 能够显示 Unicode 所分配的带圈数字(和字母等)。举例如下:
} \cs_set:Npn \TESTii
{ \tl_map_inline:nn { abcdefghijklmnopqrstuvwxyz } { \textcircled{##1} ~ } \par } \cs_set:Npn \TESTiii
{ \tl_map_inline:nn { ABCDEFGHIJKLMNOPQRSTUVWXYZ } { \textcircled{##1} ~ } \par } \ExplSyntaxOff
在 LuaLATEX 下,也完全类似:
% 使用中文字体 \ltjdefcharrange{6}{%
"24EA, "2460-"2473, "3251-"32BF, "24FF, "2776-"277F, "24EB-"24F4} \setCJKmainfont{Source Han Serif SC}
利用 LATEX3 语法也可以迅速写出如下循环而不伤身体:
\ExplSyntaxOn \cs_set:Npn \TESTi
{ \int_step_inline:nnn { 0 } { 25 } { \textcircled{##1} ~ } \par \int_step_inline:nnn { 26 } { 50 } { \textcircled{##1} ~ } \par
\begin{document} ①②③④⑤ \symbol{"2776} \symbol{"2777} \symbol{"2778} \symbol{"2779} \symbol{"277A} \char"3248\ \char"3249\ \char"324A\ \char"324B\ \char"324C\ ^^^^3280 ^^^^3281 ^^^^3282 ^^^^3283 ^^^^3284 ^^^^^1f229 ^^^^^1f214 ^^^^^1f22a \end{document}
Enclosed Ideographic Supplement (U+1F200–U+1F2FF) 带方框 一、二、三 带六角括号 二、三
直接输入,或者利用码位,都能在 LATEX 中使用以上这些带圈数字(注意不同方法对大小写的要求有差异):
\documentclass{article} \usepackage{fontspec} \setmainfont{Source Han Serif SC}
\documentclass{article} \usepackage{fontspec,xunicode-addon} \setmainfont{Source Han Serif SC}
\begin{document} \textcircled{1} \textcircled{25} \textcircled{a} \textcircled{Z} \end{document}
配合 xunicode-addon 宏包,在 ctex 宏集中也同样可以使用 \textcircled 命令输入预定义的带圈数字。但需注意,\textcircled 会预先检查字符是否存在,且仅在西文字体中进行。所以如 需使用中文字体进行显示,就要「指鹿为马」:
带逗号(digits with comma)
1F101 1F102 1F103 1F104 1F105 1F106 1F107 1F108 1F109 1F10A
这些姑且也算上吧:
㈠ ㈡ ㈢ ㈣㈤㈥㈦㈧㈨㈩ 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229
博客园 用户登录 代码改变世界 密码登录 短信登录 忘记登录用户名 忘记密码 记住我 登录 第三方登录/注册 没有账户, 立即注册
latex如 何 添 加 圆 圈 数 字 ?
众所周知,LATEX 提供了 \textcircled 命令用以给字符加圈,但效果却不怎么好:
实际上,加圈并不是一个平凡的变换,它会涉及到圈内字符形状的微调,而这是几乎无法在 TEX 宏层面解决的。因此,要得到比较好的效果,最好能使用预先设计的字符形 (glyph)。
Dingbats (U+2700–U+27BF) 反白 1–10 无衬线 1–10 无衬线反白 1–10
Enclosed CJK Letters and Months (U+3200–U+32FF) 带圈 21–50 加框 10–80(仅限整十) 带圈 一~十 带圆括号 一~十
Enclosed Alphanumeric Supplement (U+1F100–U+1F1FF) 带逗号 0–9 无衬线、无衬线反白以及带点的 0