记录LaTeX中文文档有关字符显示的字体、连字、中文URL、带圈数字等问题。
本文示例仓库见marvel084/LaTeXTest2024 (github.com)
LuaLaTeX vs XeLaTeX
在字符显示上
LuaTeX优点:
- 与csl(citeproc-lua)配合的很好
- 使用ctex时,支持
\url
直接显示URL中的汉字 - TH-Times字体支持彩色emoji,且使用ZWJ的不受干扰
pmhanguljamo
宏包可以正常显示(古)谚文
LuaTeX缺点:
- 多语言TTC字体TH-Times无法直接使用,加
polyglossia
包后可使用 - (西文)fontspec定义的字体,不加Script参数不能正确处理“连字/位置变体”(如八思巴文) ꡂ ꡦ ꡃ -> ꡂꡦꡃ)
- 配合BixbLaTeX时,不能正确显示参考文献的中文URL(用的biblatex-gb7714-2015 issue方法,biblatex-gb7714-2015本身会对中文url转义,这也导致用lualatex编译会因url和urlraw不一致而报错终止)
(待复现) - 使用ctex(luatex-ja)后不能拼合古谚文,需调至西文ALchar显示
- fontspec定义的字体(使用
Script=Hangul
参数)。在TeX Live 2023及以上发行版中,在使用LuaLaTeX编译时,如果一个谚文的初、中声刚好能拼成现代韩语音节(谚文音节区段,Hangul Syllables,"AC00-"D7AF
),则该音节会抢先显示,把终声甩在后头,从而使古谚文无法正确拼合。
XeTeX优点:
- (西文)fontspec定义的字体(不加Script参数)能正确处理“连字/位置变体”(如八思巴文)
- (中文)xeCJK定义的字体能正确拼合古谚文(如
ᄎ
ᆑ
ᇙ
拼成ᄎᆑᇙ
) - 配合BibLaTeX能正确显示参考文献的中文URL(见biblatex-gb7714-2015 issue)
XeTeX缺点:
- 不能直接使用csl(citeproc-lua)参考文献后端,但可以配置latexmkrc等方式使用
\url
无法正确显示中文URL,遇中文网址需转义或改用\href
pmhanguljamo
宏包显示谚文会被xeCJK干扰从而显示错误,可用polyglossia
分别配置语言环境解决- TH-Times字体不支持彩色emoji,
polyglossia
+ctex
时使用ZWJ的emoji无法显示(如麻将红宝牌🀔\char"200D🟥
)
字体
参见:
西文字体
fontspec
fontspec
用来配置(西文)字体,可以指定OpenType字体的参数
- 分别设置正文衬线、无衬线、等宽字体
\setmainfont{texgyretermes}[ %仿TimesNewRoman字体
Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-italic,
BoldItalicFont = *-bolditalic,
Ligatures = TeX,
]%
\setsansfont{texgyreheros}[
Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-italic,
BoldItalicFont = *-bolditalic,
]%
\setmonofont{texgyrecursor}[
Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-italic,
BoldItalicFont = *-bolditalic,
Scale = MatchLowercase,
Ligatures = CommonOff,
]%
对于粗体、斜体等变化可以使用Style,可以调用其他字体。
对于TrueType TTC字体没有对应的Bold字体的话,可以定义伪粗体:
\setmainfont{TH-Times}[AutoFakeBold]
- 设置特定参数的字体
设置Script
以显示特定语言
\newfontfamily\psp{TH-Times}[Script=Phags-pa] %八思巴文 TH-Times修正了NotoSansPhagsPa的错误
\newfontfamily\hangulfont{Noto Serif CJK KR}[Script=Hangul] % 谚文
天珩字库的TH-Times1对许多语言支持很好,可用于手动fallback
\newfontfamily\fb{TH-Times}
\newfontfamily\fbtk{TH-Times}[Language=Turkish]
pandoc的字体有fallback,仅LuaTeX可用,见Pandoc - Pandoc User’s Guide
LuaTeX可设置fallback feature Fallback fonts in LuaTeX via 'luaotfload.add_fallback' (was "Fontsets") (gnu.org)
\directlua{ luaotfload.add_fallback ("fallbacktest", { "oldstandard:mode=harf;script=grek;color=0000FF;", "oldstandard:mode=harf;script=cyrl;color=0000FF;", "freeserif:mode=harf;script=arab;color=0000FF;", "freeserif:mode=harf;script=dev2;color=0000FF;", } ) } \setmainfont{latinmodernroman}[RawFeature={fallback=fallbacktest}]
polyglossia
Overleaf介绍利用polyglossia
和fontspec
显示多语言:Multilingual typesetting on Overleaf using polyglossia and fontspec - Overleaf
polyglossia
用于处理多种语言的显示,可以设置多种语言环境
\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage{korean}
使用polyglossia
能解决一些问题:
- LuaTeX下使用多语言TrueType TTC字体TH-Times1需要搭配
polyglossia
- xeCJK下使用
pmhanguljamo
宏包需要使用polyglossia
配置korean环境
但与ctex会有一些冲突:
polyglossia
会覆盖ctex的scheme,如图表题注、目录标题会被替换成Figure、Table、Contents,需手动设置% polyglossia参数控制图标题注,需启用setmainlanguage为english后起效 \setmainlanguage{english} \gappto\captionsenglish{\def\tablename{表}} \gappto\captionsenglish{\def\figurename{图}} \gappto\captionsenglish{\def\contentsname{目~~录}} \gappto\captionsenglish{\def\listfigurename{图~~片}} \gappto\captionsenglish{\def\listtablename{表~~格}} % 或使用caption宏包控制图标题注 \usepackage{caption} \captionsetup[figure]{name=图} \captionsetup[table]{name=表}
- XeTeX下
polyglossia
要置于ctex前,否则汉字显示失败 - 与xeCJK冲突,TH-Times字体使用ZWJ组合的emoji无法正常组合(如麻将红宝牌
🀔\char"200D🟥
)
中文字体
LaTeX使用中文一般用ctex包,ctex在XeTeX下会包含xeCJK;而在LuaTeX下包含LuaTeX-ja,并且魔改了LuaTeX-ja的部分设置
CJK字体的设置与fontspec类似,比如设置正文为思源宋体,加粗为思源黑体,斜体为楷体
\setCJKmainfont{Source Han Serif SC}[
BoldFont={Noto Sans CJK SC},
% ItalicFont={KaiTi},
ItalicFont={AR PL KaitiM GB}, % TeX楷体
Script=CJK,
]
\setCJKsansfont{Noto Sans CJK SC}
\setCJKmonofont{Noto Sans Mono CJK SC}
由于ctex会把干涉字符的划分,因此要实现某些功能时,需将某些字符划给西文或中文。
ctex魔改了luatex-ja的设置,字符范围2、3 为ALchar,6为JAchar。下面是修改汉字和谚文的分区
% 给圈码数字分区,糅合THUThesis与https://www.cnblogs.com/coderzjz/p/15821966.html
\ltjdefcharrange{6}{%
%带圈字母数字,CJK汉字部首补充,【修改】CJK符号和标点,汉文训读符号,片假名语音扩展
"2460-"24FF, "2E80-"2EFF, "3000-"303F, "3190-"319F, "31F0-"4DBF,
%CJK统一,CJK兼容,竖排形式,CJK兼容形式(竖排标点),半角及全角字符
"4E00-"9FFF, "F900-"FAFF, "FE10-"FE1F, "FE30-"FE6F, "FF00-"FFEF,
%假名补充 假名扩展A 小型假名扩展,带圈字母数字补充 带圈表意文字补充,CJK二三平面,变体选择符补充
"1B000-"1B16F, "1F100-"1F2FF, "20000-"3FFFF, "E0100-"E01EF,
%【新增】圈1-10反白,CJK扩展A,注音符号,注音扩展
"2776-"277F, "3400-"4DBF, "3100-"312F, "31A0-"31BF,"1100-"11FF,"3130-"318F,"A960-"A97F}
\ltjdefcharrange{3}{
"1100-"11FF,"3130-"318F,"A960-"A97F,"D7B0-"D7FF,"302E-"302F %谚文声调附点 302E 302F
}
\ltjdefcharrange{3}{
"AC00-"D7AF % 现代韩语音节,开启后ctex+polyglossia可谚文傍点,但正文CJK字体无法显示韩语
}
在xeCJK中使用
\xeCJKDeclareCharClass{CJK}{}
汉字分区
Unicode汉字在第0平面有CJK统一表意文字、CJK扩展A区、CJK兼容汉字;第2平面有CJK扩展B、C、D、E、F、I区和兼容增补;第3平面有扩展G、H区,总共10万余汉字。一般字体仅能支持第0平面的部分汉字,像思源宋体(Source Han Serif)只能覆盖全部的CJK统一区和扩展A,以及部分CJK兼容区汉字。Windows中有支持扩展B的SimSun-ExtB,支持第2平面的部分汉字但不全。
Unicode标准每年更新会在各区的空余处追加一些汉字,故一些旧的字体可能对已支持的区段也覆盖不全,如debian12源中Noto Serif CJK就比最新的思源宋体支持的字少。2025年将新增扩展J区,并在扩展C追加数个急用汉字2,未来第3平面将会收录篆书、金文、简帛文、陶文、鸟虫书等。3
支持全字集的字体有天珩字库、典迹汉字等,更多字体见维基百科:Unicode扩展汉字。由于字体单文件最多65536字符,想显示10万汉字只能分文件显示,TeX也支持汉字的分区设置字体,ctex为此也做了优化。
XeTeX下使用xeCJK原生设置CJK分区别名,并在字体中使用这些分区别名
%定义CJK字体分区
\xeCJKDeclareSubCJKBlock{P0-CJKpart}{"2FF0->"2FFF, "3100->"312F, "31A0->"31BF, "31C0->"31EF} %第0平面部分CJK相关
\xeCJKDeclareSubCJKBlock{CJKExtA}{"3400-> "4DBF} %CJK扩展A
\xeCJKDeclareSubCJKBlock{CJKUnified}{"4E00 -> "9FFF} %CJK统一
\xeCJKDeclareSubCJKBlock{CJKCompat}{"F900-> "FAFF} %CJK兼容
\xeCJKDeclareSubCJKBlock{CJKCompat-Source}{"FA6E-> "FAFF} %CJK兼容,思源宋体不支持的部分
\xeCJKDeclareSubCJKBlock{SPUA}{ "E400 -> "E4DA , "E500 -> "E5E8 , "E600 -> "E6CE } %私用区
\xeCJKDeclareSubCJKBlock{P2}{ "20000 -> "2EE5F } %第2平面汉字(CJK扩展BCDEFI)
\xeCJKDeclareSubCJKBlock{P3}{ "30000 -> "323AF } %第3平面汉字(CJK扩展GH)
\xeCJKDeclareSubCJKBlock{P16}{ "100000 -> "10FFFF } %第16平面汉字(补充私用区B)
%设置中文字体
\setCJKmainfont[
CJKCompat-Source=TH-Tshyn-P0, % 思源宋体CJK兼容区缺失的,
P0-CJKpart=TH-Tshyn-P0, % 0平面部分字,
P2=TH-Tshyn-P2, % 2平面,
P3=TH-Tshyn-P1, % 3平面字交给 天珩字库 http://cheonhyeong.com/Simplified/download.html
]{Source Han Serif SC} %思源宋体
XeTeX下也可以设置fallback字体,当字集显示不全时即会调用备用字体
\xeCJKsetup{AutoFallBack}
\setCJKfallbackfamilyfont{\CJKrmdefault}{{TH-Times},{TH-Tshyn-P0},{TH-Tshyn-P2},{TH-Tshyn-P1}} %CJKfallback字体列
LuaTeX下可也设置CJK字体分区,ctex为此提供了设置参数。在CJK字体设置中用 AlternateFont
设置分区字体
\ctexset
{
declarecharrange =
{
{P0-CJKpart} {"2FF0 -> "2FFF , "3100 -> "312F , "31A0 -> "31BF , "31C0 -> "31EF} , %P0的部分CJK
{CJKCompat-Source} {"FA6E-> "FAFF}, %CJK兼容 思源宋体不支持的部分
{P2} { "20000 -> "2EE5F } , %第2平面汉字
{P3} { "30000 -> "323AF } , %第3平面汉字
}
}
\setCJKmainfont{Source Han Serif SC} %思源宋体
[
AlternateFont={
{P0-CJKpart,CJKCompat-Source} {TH-Tshyn-P0},
{P2} {TH-Tshyn-P2},
{P3} {TH-Tshyn-P1}, % 天珩字库 http://cheonhyeong.com/Simplified/download.html
}
]
显示示例全文见:Unicode CJK扩展区 显示测试页面 - Sakiko's Blog (earlywolf.cn)
中文字体集
ctex有fontset参数指定加载的字库
windows
用中易字库ubuntu
用思源宋体、思源黑体和TeX发行版自带的文鼎楷体founder
用方正字库,等等……
预定义的中文字库还的字体预设:
- 基本都有的:
\songti
宋体,\heiti
黑体,\fangsong
仿宋(ubuntu
中没有),\kaishu
楷体 windows
、founder
和macnew
中有的:\lishu
隶书,\youyuan
幼圆windows
、macnew
中有的:\yahei
微软雅黑macnew
中有的:\pingfang
苹方
ctex默认正文用宋体,粗体\textbf
用黑体,斜体\textit
、\textsl
用楷体显示。
对于Pandoc转义的文档,粗体\textbf
,斜体\emph
,也会用黑体、楷体显示。
Pandoc转义的文档还会有删除线\sout
,需要下面配置才能显示(如果你动过模板,输出的是\st
那下面这两条重定义命令要反着写)
%%删除线
\ifLuaTeX
\usepackage{luacolor}
\usepackage[soul]{lua-ul} %eisvogel模板所采用,配合markdown删除线
\newcommand*{\sout}[1]{\st{#1}}
% \usepackage{ulem} %不支持中文
\fi
\ifXeTeX
\usepackage{xeCJKfntef}
% \renewcommand{\st}[1]{\sout{#1}}
\fi
上面说的\songti
\heiti
等会调用CJK字体族zhsong
zhhei
等,这些也可自定义:
\setCJKfamilyfont{zhsong}{Source Han Serif SC}
[
UprightFont = *-Regular,
BoldFont = *-Bold,
ItalicFont = *-Regular,
BoldItalicFont = *-BoldSC
]
\setCJKfamilyfont{zhhei}{Noto Sans CJK SC}
[
UprightFont = *-Regular,
BoldFont = *-Bold,
ItalicFont = *-Regular,
BoldItalicFont = *-Bold
]
字符变形
TH-Times是天珩字库用于处理多语言复杂文本变形的字体,此节主要讨论此字体。见TH-Times核心说明书 (cheonhyeong.com)、蒙古文字变形规则说明 (cheonhyeong.com)
- 连字
TH-Times字体定义了多种连字,st ct Qu Th ff fi fí ft ff ffi ſs 这些均会自动连字,另有数字2nd 12th等连字(2th 12nd等错误写法则不会连字)
但由于TH-Times启用了过多连字,也非像Open Type可调,因此西文正文最好用正常的字体,需要连字等特殊显示时再调用TH-Times
%% 英文字体
\setmainfont{TeX Gyre Pagella}[Ligatures=TeX]
\newfontfamily\fb{TH-Times} %手动fallback用TH-Times
- 标准化变体序列(Standardized Variation Sequence,SVS)
通过后接变体选择符来实现字符变体,变体选择符在"FE00-"FE0F
有16个,另有在特殊用途平面"E0100-"E01EF
扩充至256个,不过一般的字符只用到一两个
如八思巴文的反转形式是+VS01("FE00
),如 ꡖ "A856
与 ꡖ︀ "A856 "FE00
- 位置变体
八思巴文的元音存在位置变体,词首词尾不一样
此特性可以通过[Script=Phags-pa]
正常显示
\newfontfamily\psp{TH-Times}[Script=Phags-pa] %TH-Times修正了NotoSansPhagsPa的错误
- 彩色字符
LuaTeX下可显示彩色字符
更多特性请见本文示例仓库marvel084/LaTeXTest2024 (github.com)
谚文显示请见CTEX中文LaTeX文档中古谚文的显示、CTeX中文LaTeX文档中古谚文的显示 - 知乎 (zhihu.com)
中文URL
LaTeX一般用\url{}
显示URL链接,显示文内链接用\href{url}{text}
,hyperref
包含了url
包。\url
对含特殊字符的URL能正常显示,比如%
可以在文中键入而不被注释。不过\url
并不支持非拉丁字符,含有中文的链接一般要转义后再用\url
显示。
\url{https://ctext.org/wiki.pl?if=gb&chapter=552474&remap=gb#纪载宝坻县记}
\url{https://ctext.org/wiki.pl?if=gb&chapter=552474&remap=gb#%E7%BA%AA%E8%BD%BD%E5%AE%9D%E5%9D%BB%E5%8E%BF%E8%AE%B0} % #%&可以直接输入
在使用ctex
宏包后,LuaTeX能显示\url
中的汉字,而XeTeX中汉字无法显示,这应该与luatex-ja和xeCJK对字符的处理有关,LuaTeX汉字自动用CJK显示,XeTeX url中字符全用西文字体,特别是设置了url样式的话:
\urlstyle{same} % 使用西文main字体
\urlstyle{rm} % 使用西文衬线字体
若要显示强制汉字可以换url字体:
\newfontfamily\urlfontcjk{Noto Serif CJK SC} % 用于支持url的字体
\def\UrlFont{\urlfontcjk}
不过\url
有个更致命的问题,无论LuaTeX还是XeTeX都无法使url在汉字处断行。想要彻底解决需换用href
\url
的问题:
- 无法在中文字符处换行
- 不会自动转义中文字符
- cjk字符在xetex默认西文字体不支持显示
换用
\href{url}{text}
也有问题:
- 汉字处可断行,而英文处反倒无法正确换行
- text中不能有特殊字符,如
{ } $ & # % _ ~ ^ \ |
这些
解决href无法在英文处断行的问题,biblatex-gb7714-2015 issue#50 的回复提供了一种使用seqsplit
断行的方法
\usepackage{seqsplit}
\href{#1}{\UrlFont\seqsplit{#1}}
不过链接中的特殊字符还需要手动转义,可以手动使用正则表达式替换,或定义钩子等方法自动替换,此处不絮。
对于参考文献条目URL含中文的情况,详见第3回【LaTeX参考文献格式】(还没写完),对biblatex和citeproc-lua引擎给出替换方法。特别是citeproc-lua能自动转义特殊字符,方便利用。下面仅简述:
BibLaTeX 见biblatex-gb7714-2015 issue#50 的回复,判断URL是否会转义,会则替换成href
显示原文:
\usepackage{seqsplit} %
\DeclareFieldFormat{urlraw}{\href{#1}{\UrlFont\seqsplit{#1}}} %url原文(urlraw)用\href显示
\renewbibmacro*{url}{%
\iffieldsequal{url}{urlraw}{\printfield{url}}{\printfield{urlraw}}% 英文URL用url,含中文URL用urlraw
}
citeproc-lua 可以修改citeproc-lua源码,将citeproc-output.lua行2103原url改为href(需要seqsplit宏包),还利用了citeproc-lua自身的代码,将text中非法字符转义掉,就是中英文全用href
显示了:
function LatexWriter:write_link(inline, context)
if inline.href == inline.value then
-- URL
- return string.format("\\url{%s}", inline.value)
+ return string.format("\\href{%s}{\\seqsplit{%s}}", inline.href, self:write_escaped(inline.value, context))
elseif context.engine.opt.wrap_url_and_doi then
return string.format("\\href{%s}{%s}", inline.href, self:write_escaped(inline.value, context))
else
return self:write_escaped(inline.value, context)
end
end
带圈数字
参考:带圈数字 | Stone Zeng’s Site (stone-zeng.site)
带圈字母与数字在Unicode的码段并不连续:
样式 | 码段 |
---|---|
常规 | "24EA ⓪;"2460-"2473 ①-⑳;"3251-"325F ㉑-㉟;"32B1-"32BF ㊱-㊿ |
反白 | "24FF ⓿;"2776-"277F ❶-❿;"24EB-"24F4 ⓫-⓴ |
无衬线 | "1F10B 🄋; "2780-"2789 ➀-➉;等宽圈01F10D � |
无衬线反白 | "1F10C 🄌;"278A-" 2793 ➊-➓ |
双线 | "24F5-"24FE ⓵-⓾ |
加框 | "3248-"324F ㉈、㉉、㉊、㉋、㉌、㉍、㉎、㉏ |
带圆括号 | "2474-"2487 ⑴-⒇ |
带点 | "1F100 🄀;"2488-"249B ⒈-⒛ |
带逗号 | "1F101- "1F10A 🄁-🄊 |
带圆括号汉字 | "3220-"3229 ㈠-㈩ |
带圈汉字 | "3280-"3289 ㊀-㊉ |
方框汉字和六角括号汉字 | "1F229 🈩 "1F214 🈔 "1F22A 🈪 "1F242 🉂 "1F241 🉁 |
分布在Unicode区段:
U+2460..U+24FF
带圈字母数字 Enclosed AlphanumericsU+3200..U+32FF
中日韩带圈字符及月份 Enclosed CJK Letters and MonthsU+1F100..U+1F1FF
带圈字母数字补充 Enclosed Alphanumeric SupplementU+1F200..U+1F2FF
带圈表意文字补充 Enclosed Ideographic Supplement
带圈数字可以由支持圈码的字体直接显示,也可以用LaTeX的\textcircled
实现,不过后者会使用正文字体渲染,某些字体下(如Tex Gyre Termes)数字会突破圆圈。
xunicode-addon
宏包提供了一种方式:在使用\textcircled
时,如果有则自动转为Unicode对应字符显示,默认使用西文字体。ctex也会包含xunicode-addon
,我们可以设置使圈码使用中文字体
首先圈码划给中文,以支持带圈数字unicode的直接显示
\usepackage{fontspec,xunicode-addon,ctex}
\ifXeTeX
\xeCJKDeclareCharClass{CJK}{%带圈数字划给CJK
"24EA, % ⓪
"2460->"2473, % ①->⑳
"3251->"32BF, % ㉑->㊿
"24FF, % ⓿
"2776->"277F, % ❶->❿
"24EB->"24F4 % ⓫->⓴
}
\fi
\ifLuaTeX
% 给圈码数字分区,糅合THUThesis与https://www.cnblogs.com/coderzjz/p/15821966.html
% ctex 将带圈数字 U+2460–U+24FF 归入字符范围 3(ALchar),这里改回范围 6(JAchar)
\ltjdefcharrange{6}{ %用不了这么多,可以适当删
%带圈字母数字,CJK汉字部首补充,【修改】CJK符号和标点,汉文训读符号,片假名语音扩展
"2460-"24FF, "2E80-"2EFF, "3000-"303F, "3190-"319F, "31F0-"4DBF,
%CJK统一,CJK兼容,竖排形式,CJK兼容形式(竖排标点),半角及全角字符
"4E00-"9FFF, "F900-"FAFF, "FE10-"FE1F, "FE30-"FE6F, "FF00-"FFEF,
%假名补充 假名扩展A 小型假名扩展,带圈字母数字补充 带圈表意文字补充,CJK二三平面,变体选择符补充
"1B000-"1B16F, "1F100-"1F2FF, "20000-"3FFFF, "E0100-"E01EF,
%【新增】圈1-10反白,CJK扩展A,注音符号,注音扩展
"2776-"277F, "3400-"4DBF, "3100-"312F, "31A0-"31BF,"1100-"11FF,"3130-"318F,"A960-"A97F}
\fi
重定义钩子在使用 \textcircled
时切换至中文字体
%% 带圈数字字体 https://stone-zeng.site/2019-02-09-circled-numbers
% XeLaTeX 下需要把全体带圈数字都设置成 Default 类(上方有CJK了,不需要)
% \xeCJKDeclareCharClass{Default}{"24EA, "2460->"2473, "3251->"32BF}
% 将中文字体声明为(西文)字体族(我这思源宋缩放时会有问题,TH-Times会好些)
% \newfontfamily\EnclosedNumbers{TH-Times} %天珩字库
\newfontfamily\EnclosedNumbers{Noto Serif CJK SC}
% 放置钩子,只让带圈字符才需更换字体
\AtBeginUTFCommand[\textcircled]{\begingroup\EnclosedNumbers}
\AtEndUTFCommand[\textcircled]{\endgroup}
脚注与note式参考文献脚注使用圈码及其格式配置见第3回【LaTeX参考文献格式】。
附 thuthesis模板处理圈码的方式,直接用数字往上加
"245F
,即使用"2460-"2469
的带圈数字①-⑩显示,由于圈码的unicode区段并不连续,此方法也只能单页显示有限个脚注,这对于频用脚注的文章可能是不够的。\newcommand\thu@circled[1]{% \ifnum#1 >10\relax \thu@warning{% Too many footnotes in this page. Keep footnote less than 10% }% \fi {\symbol{\the\numexpr#1+"245F\relax}}% }