summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx')
-rw-r--r--Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx2147
1 files changed, 1911 insertions, 236 deletions
diff --git a/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx b/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx
index 5c19c51446a..a6eda0639d1 100644
--- a/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx
+++ b/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx
@@ -29,6 +29,7 @@ This package consists of the file xeCJK.dtx,
xeCJKfntef.sty,
xeCJK-listings.sty,
xunicode-addon.sty,
+ xunicode-extra.def,
xeCJK-example-autofake.tex,
xeCJK-example-fallback.tex,
xeCJK-example-subCJKblock.tex,
@@ -39,6 +40,10 @@ This package consists of the file xeCJK.dtx,
xeCJK-example-verbatim.tex,
xeCJK-example-IVS.tex,
xeCJK-example-listings.tex,
+ xunicode-symbols.tex,
+ xunicode-commands.tex,
+ xunicode-combine-marks.tex,
+ xunicode-symbols.pdf,
full-stop.tec,
fullwidth-stop.tec,
han-simp.tec,
@@ -90,7 +95,7 @@ CJK scripts fonts (TrueType or OpenType).
\askforoverwritefalse
\preamble
-$Id: xeCJK.dtx 533 2013-12-05 10:52:12Z sobenlee $
+$Id: xeCJK.dtx 537 2013-12-08 13:01:40Z sobenlee $
$URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
-----------------------------------------------------------------
Author:
@@ -130,6 +135,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
xeCJKfntef.sty,
xeCJK-listings.sty,
xunicode-addon.sty,
+ xunicode-extra.def,
xeCJK-example-autofake.tex,
xeCJK-example-fallback.tex,
xeCJK-example-subCJKblock.tex,
@@ -140,6 +146,10 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
xeCJK-example-verbatim.tex,
xeCJK-example-IVS.tex,
xeCJK-example-listings.tex,
+ xunicode-symbols.tex,
+ xunicode-commands.tex,
+ xunicode-combine-marks.tex,
+ xunicode-symbols.pdf,
full-stop.tec,
fullwidth-stop.tec,
han-simp.tec,
@@ -159,6 +169,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
\file{xeCJKfntef.sty}{\from{\jobname.dtx}{fntef}}
\file{xeCJK-listings.sty}{\from{\jobname.dtx}{listings}}
\file{xunicode-addon.sty}{\from{\jobname.dtx}{xunicode}}
+ \file{xunicode-extra.def}{\from{\jobname.dtx}{xunextra}}
\usepreamble\emptypreamble
\usepostamble\emptypostamble
\usedir{tex/xelatex/xecjk/config}
@@ -174,6 +185,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
\file{\jobname-example-verbatim.tex}{\from{\jobname.dtx}{ex-verb}}
\file{\jobname-example-IVS.tex}{\from{\jobname.dtx}{ex-IVS}}
\file{\jobname-example-listings.tex}{\from{\jobname.dtx}{ex-listings}}
+ \file{xunicode-symbols.tex}{\from{\jobname.dtx}{xunicode-symbols}}
\nopreamble\nopostamble
\usedir{doc/xelatex/xecjk}
\file{README.txt}{\from{\jobname.dtx}{readme}}
@@ -184,12 +196,12 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
%<*internal>
\fi
%</internal>
-%<*driver|package|config|fntef|listings|xunicode>
-%<*!config>
+%<*driver|package|config|fntef|listings|xunicode|xunextra>
+%<*!config&!xunextra>
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-%</!config>
-\GetIdInfo$Id: xeCJK.dtx 533 2013-12-05 10:52:12Z sobenlee $
+%</!config&!xunextra>
+\GetIdInfo$Id: xeCJK.dtx 537 2013-12-08 13:01:40Z sobenlee $
%<*driver|package>
{Typesetting CJK scripts with XeLaTeX}
%</driver|package>
@@ -197,24 +209,27 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
%<fntef> {xeCJK patch file for ulem/CJKfntef}
%<listings> {xeCJK patch file for listings}
%<xunicode> {addon file for xunicode}
-%<*driver|config>
+%<xunextra> {extra definition for xunicode}
+%<*driver|config|xunextra>
\ProvidesExplFile
-%</driver|config>
+%</driver|config|xunextra>
%<*driver>
{\ExplFileName.\ExplFileExtension}
%</driver>
%<config> {\ExplFileName.cfg}
+%<xunextra> {\ExplFileName.def}
%<package|fntef|listings|xunicode>\ProvidesExplPackage
%<package> {\ExplFileName}
%<fntef> {xeCJKfntef}
%<listings> {xeCJK-listings}
%<xunicode> {xunicode-addon}
- {\ExplFileDate}{3.2.8}{\ExplFileDescription}
+ {\ExplFileDate}{3.2.9}{\ExplFileDescription}
+%<xunextra>\ExplSyntaxOff
%<*driver>
\let\xeCJKrevnum\ExplFileVersion
\ExplSyntaxOff
%</driver>
-%</driver|package|config|fntef|listings|xunicode>
+%</driver|package|config|fntef|listings|xunicode|xunextra>
%
%<*driver>
\expandafter\let\csname ver@thumbpdf.sty\endcsname\fmtversion
@@ -340,7 +355,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \changes{v3.2.4}{2013/07/02}{遵循 \hologo{LaTeX3} 变量需要预先声明的原则。}
% \changes{v3.2.6}{2013/07/29}{\texttt{case} 类函数的用法与 \hologo{LaTeX3} 同步。}
%
-% \CheckSum{5934}
+% \CheckSum{8827}
% \GetFileInfo{\jobname.dtx}
%
% \title{\bfseries\pkg{xeCJK} 宏包}
@@ -6942,6 +6957,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
{
\textellipsis \textemdash \textperiodcentered \textcentereddot
\textquoteleft \textquoteright \textquotedblleft \textquotedblright
+ \textcdot \textgrq \textgrqq
}
{
\AtBeginUTFCommand [#1] { \@@_group_begin: \makexeCJKinactive }
@@ -6950,22 +6966,99 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[internal]{\l_@@_patch_Bxii_tl,\@@_patch_Bxii:n}
+% \changes{v3.2.9}{2013/12/08}
+% {完整处理 \file{encguide.pdf} 的编码符号表中,与旧编码的 \texttt{U+00B7} 冲突。}
% 常被用作中文间隔号的 \texttt{U+00B7} 与 T1 等旧字体编码下定义的符号命令冲突。
+% 在 \file{encguide.pdf} 的编码符号表中,如下定义有冲突。
+% \begin{verbatim}
+% \DeclareTextComposite{\r}{T1}{u}{183}
+% \DeclareTextSymbol{\cyrchvcrs}{T2A}{183}
+% \DeclareTextSymbol{\cyrchldsc}{T2B}{183}
+% \DeclareTextSymbol{\cyrabhha}{T2C}{183}
+% \DeclareTextSymbol\textvibyy{T3}{183}
+% \DeclareTextComposite{\B}{T4}{t}{183}
+% \DeclareTextComposite{\`}{T5}{\ecircumflex}{183}
+% \DeclareTextDoubleComposite{\`}{T5}{\^}{e}{183}
+% \DeclareTextSymbol{\textperiodcentered}{TS1}{183}
+% \DeclareTextSymbol{\cyrchldsc}{X2}{183}
+% \DeclareTextSymbol{\textperiodcentered}{LY1}{183}
+% \end{verbatim}
+% LGR 编码的符号表有 \texttt{183} 号字符,但在 \file{lgrenc.def} 中未找到相应的
+% 符号命令,它的输入方式为 |>`w| 或者 |\accpsilivaria{w}|。前者比较特殊,如果
+% 与 \pkg{xeCJK} 一起使用,\XeTeX\ 会出现如下错误。
+% \begin{verbatim}
+% ! Cannot use \XeTeXglyphbounds with grmn1000; not a native platform font.
+% \xeCJK_glyph_bounds:NN ...use:N \XeTeXglyphbounds
+% #1 \XeTeXcharglyph \xeCJK_...
+% \end{verbatim}
+% 这个不好处理,只修改后者。
% \begin{macrocode}
-\@@_after_preamble:n
+\@@_after_end_preamble:n { \l_@@_patch_Bxii_tl }
+\tl_new:N \l_@@_patch_Bxii_tl
+\cs_new_protected_nopar:Npn \@@_patch_Bxii:nN #1#2
{
- \tl_put_left:Nn \tipaencoding { \makexeCJKinactive }
- \cs_new_eq:NN \@@_aux_r:n \r
- \cs_set_nopar:Npn \r #1
+ \tl_put_right:Nx \l_@@_patch_Bxii_tl
+ { \@@_patch_Bxii:n { #1 \token_to_str:N #2 } }
+ }
+\group_begin:
+\cs_set:Npn \@@_tmp:w #1
+ {
+ \group_end:
+ \cs_new_protected_nopar:Npn \@@_patch_Bxii:nNN ##1##2##3
{
- \bool_if:nTF
+ \tl_put_right:Nx \l_@@_patch_Bxii_tl
{
- \str_if_eq_x_p:nn { \f@encoding } { T1 } &&
- \str_if_eq_x_p:nn {#1} { u }
+ \@@_patch_Bxii:Nnn
+ #1 { ##1 \token_to_str:N ##2 } { \token_to_str:N ##3 }
}
- { { \makexeCJKinactive \@@_aux_r:n {#1} } }
- { \@@_aux_r:n {#1} }
}
+ }
+\use:n
+ {
+ \char_set_catcode_other:N \\
+ \@@_tmp:w
+ }
+ { \ }
+\cs_new_protected_nopar:Npn \@@_patch_Bxii:n #1
+ { \cs_if_free:cF {#1} { \cs_gset_eq:cN {#1} \@@_Default_Bxii: } }
+\cs_new_protected_nopar:Npn \@@_patch_Bxii:Nnn #1#2#3
+ { \cs_if_free:cF {#2} { \cs_gset_eq:cN { #1#2 - #3 } \@@_Default_Bxii: } }
+\group_begin:
+\char_set_catcode_other:n { 183 }
+\cs_new_protected_nopar:Npn \@@_Default_Bxii:
+ {
+ \int_compare:nNnTF \XeTeXinterchartokenstate > \c_zero
+ { \@@_group_begin: \makexeCJKinactive ^^b7 \@@_group_end: }
+ { ^^b7 }
+ }
+\group_end:
+\clist_map_inline:nn
+ {
+ { T3 } \textvibyy ,
+ { T2A } \cyrchvcrs ,
+ { T2B } \cyrchldsc ,
+ { T2C } \cyrabhha ,
+ { X2 } \cyrchldsc ,
+ { TS1 } \textperiodcentered ,
+ { LY1 } \textperiodcentered
+ }
+ { \@@_patch_Bxii:nN #1 }
+\clist_map_inline:nn
+ {
+ { T1 } \r u ,
+ { T4 } \B t ,
+ { T5 } \` \ecircumflex ,
+ { LGR } \accpsilivaria w
+ }
+ { \@@_patch_Bxii:nNN #1 }
+\tl_put_right:Nx \l_@@_patch_Bxii_tl
+ {
+ \@@_patch_Bxii:n
+ { \token_to_str:N \T 5 \token_to_str:N \` - \token_to_str:N \^ - e }
+ }
+\@@_after_end_preamble:n
+ {
\xeCJK_if_package_loaded:nT { pifont }
{
\RenewDocumentCommand \Pifont { m }
@@ -6973,6 +7066,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
}
}
% \end{macrocode}
+% \end{macro}
%
% 简单处理与 \pkg{hyperref} 宏包的兼容问题。
% \begin{macrocode}
@@ -8168,6 +8262,8 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
%
% \changes{v3.2.5}{2013/07/18}
% {增加小宏包 \pkg{xunicode-addon},为 \pkg{xunicode} 提供判断字符是否存在的功能。}
+% \changes{v3.2.9}{2013/12/08}
+% {文档部分增加 \pkg{xunicode} 定义的符号表。}
%
% \begin{macrocode}
%<*xunicode>
@@ -8261,8 +8357,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
\tl_set:Nx \UTFencname {##1}
\clist_gput_right:Nx \g_@@_encname_clist {##1}
\file_input:n { xunicode.sty }
- \@@_declare_textcircled:n { \UTFencname }
- \@@_declare_math_symbols:n { \UTFencname }
+ \file_input:n { xunicode-extra.def }
}
{ \msg_error:nnn { xunicode-addon } { encoding-unknown } {##1} }
}
@@ -8280,21 +8375,6 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\@@_declare_math_symbols:}
-% 几个特殊的数学符号对应的 Unicode 符号定义以 \cs{text} 打头的命令。
-% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_declare_math_symbols:n #1
- {
- \@@_declare_character:Nnn \textFinv {#1} { x2132 }
- \@@_declare_character:Nnn \textaleph {#1} { x2135 }
- \@@_declare_character:Nnn \textbeth {#1} { x2136 }
- \@@_declare_character:Nnn \textgimel {#1} { x2137 }
- \@@_declare_character:Nnn \textdaleth {#1} { x2138 }
- \@@_declare_character:Nnn \textGame {#1} { x2141 }
- }
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}[internal]{\DeclareUTFmathsymbols}
% \changes{v3.2.8}{2013/12/04}{修正 \cs{UseMathAsText} 的功能,恢复 \cs{hbar}
% 和增加以 \texttt{text} 打头的文本符号命令。}
@@ -8380,7 +8460,16 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
{#1} {#4} {#2}
}
\cs_new_protected:Npn \@@_undeclare_composite:Nnnn #1#2#3#4
- { \cs_undefine:c { \token_to_str:c {#2} \token_to_str:N #1 - \tl_to_str:n {#3} } }
+ { \cs_undefine:c { \@@_composite_cs:Nnn #1 {#2} {#3} } }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{\@@_composite_cs:Nnn,\@@_composite_cs:nnn}
+% \begin{macrocode}
+\cs_new:Npx \@@_composite_cs:Nnn #1#2#3
+ { \cs_to_str:N \\ #2 \exp_not:N \token_to_str:N #1 - \exp_not:N \tl_to_str:n {#3} }
+\cs_new:Npx \@@_composite_cs:nnn #1#2#3
+ { \cs_to_str:N \\ #2 #1 - \exp_not:N \tl_to_str:n {#3} }
% \end{macrocode}
% \end{macro}
%
@@ -8439,7 +8528,8 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
%
% \begin{macro}[internal]{\@@_declare_character:Nnn}
% 通过 \texttt{lowercase} 技巧,直接由 Unicode |#3| 得到编码 |#2| 下的符号命令
-% |#1| 对应的实际字符。
+% |#1| 对应的实际字符。\cs{DeclareUTFSymbol} 的参数格式与 \cs{DeclareTextSymbol}
+% 完全一致。
% \begin{macrocode}
\cs_new_protected:Npn \@@_declare_character:Nnn #1#2#3
{
@@ -8457,6 +8547,25 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[internal]{\DeclareUTFSymbol,\DeclareUTFCommand}
+% \cs{DeclareUTFCommand} 只能用于定义不带参数的符号命令。
+% \begin{macrocode}
+\NewDocumentCommand \DeclareUTFSymbol { m O { \UTFencname } m }
+ { \@@_declare_character:Nnn #1 {#2} {#3} }
+\NewDocumentCommand \DeclareUTFCommand { m O { \UTFencname } m }
+ { \@@_text_command:Nonn #1 { \token_to_str:N #1 } {#2} {#3} }
+\cs_new_protected:Npn \@@_text_command:Nnnn #1#2#3#4
+ { \DeclareTextCommand #1 {#3} { \@@_text_command:nn {#2} {#4} } }
+\cs_generate_variant:Nn \@@_text_command:Nnnn { No }
+\cs_new_protected:Npn \@@_text_command:nn #1#2
+ {
+ \@@_begin_hook:nn {#1} {#2}
+ #2
+ \@@_end_hook:nn {#1} {#2}
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}[internal]{\@@_provide_text_command_default:N}
% 如果控制序列 |#1| 已经存在,但不是符号命令,\pkg{xunicode} 会将它定义为
% \cs{UTFencname} 编码下的符号命令。但是编码被转换之后,再使用这些控制序列,
@@ -8541,8 +8650,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
\cs_new_protected:Npn \@@_declare_composite:Nnnn #1#2#3#4
{
\tex_afterassignment:D \use_none_delimit_by_q_stop:w
- \@@_chardef:cn
- { \token_to_str:c {#2} \token_to_str:N #1 - \tl_to_str:n {#3} }
+ \@@_chardef:cn { \@@_composite_cs:Nnn #1 {#2} {#3} }
{ \@@_check_slot:n {#4} }
\q_stop
}
@@ -8553,125 +8661,189 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\tonebar}
-% 使得 |\tonebar{25}| 和 |\tonebar{52}| 生效。
+% \begin{macro}[internal]{\DeclareUTFCompositeCommand}
+% 设置编码 |#2| 下的符号命令 |#1| 与它的参数 |#3| 的复合对应结果是 |#4|。不能直接用
+% \cs{Declare\-Text\-Composite\-Command} 来定义,它与我们的机制冲突。
% \begin{macrocode}
-\AtEndOfPackage
- {
- \DeclareUTFCompositeCommand \tonebar { 25 } { \tonebar { 2 } \tonebar { 5 } }
- \DeclareUTFCompositeCommand \tonebar { 52 } { \tonebar { 5 } \tonebar { 2 } }
- }
+\NewDocumentCommand \DeclareUTFCompositeCommand { m O { \UTFencname } m m }
+ { \cs_set_protected:cpn { \@@_composite_cs:Nnn #1 {#2} {#3} } {#4} }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\DeclareUTFCompositeCommand}
-% 设置编码 |#1| 下的符号命令 |#2| 与它的参数 |#3| 的复合对应结果是 |#4|。不能直接用
-% \cs{Declare\-Text\-Composite\-Command} 来定义,它与我们的机制冲突。
+% \begin{macro}[internal]{\DeclareUTFCompositeSymbol}
+% 设置编码 |#2| 下的符号命令 |#1| 与它的参数 |#3| 的复合对应结果是 |#4|。不能直接用
+% \cs{Declare\-Text\-Composite} 来定义,它与我们的机制冲突。
% \begin{macrocode}
-\NewDocumentCommand \DeclareUTFCompositeCommand { O { \UTFencname } m m m }
+\NewDocumentCommand \DeclareUTFCompositeSymbol { m O { \UTFencname } m m }
{
- \@@_if_csname:nTF {#2}
- { \@@_declare_composite_command:Nnnn #2 }
- { \@@_declare_composite_command:cnnn { \tl_to_str:n {#2} } }
- {#1} {#3} {#4}
+ \@@_chardef:cn { \@@_composite_cs:Nnn #1 {#2} {#3} }
+ { \@@_check_slot:n {#4} }
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\@@_declare_composite_command:Nnnn}
+% \begin{macro}[internal]{\DeclareUTFComposite}
+% 将 |#1| 设置为编码 |#2| 下的带一个参数的复合符号命令。
% \begin{macrocode}
-\cs_new_protected:Npn \@@_declare_composite_command:Nnnn #1#2#3#4
- {
- \cs_set_protected:cpn
- { \token_to_str:c {#2} \token_to_str:N #1 - \tl_to_str:n {#3} }
- {#4}
- }
-\cs_generate_variant:Nn \@@_declare_composite_command:Nnnn { c }
+\NewDocumentCommand \DeclareUTFComposite { m O { \UTFencname } }
+ { \use:x { \@@_declare_composite:Nnn \exp_not:N #1 { \token_to_str:N #1 } {#2} } }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{\DeclareUTFEncodedAccent}
+% |#1| 是重音命令,|#2| 是编码,|#3| 是组合重音符号的 Unicode,|#4| 是基本重音符号
+% 的 Unicode。当 |#1| 的参数为空时,输出 |#4|,否则是 |#1| 的参数与 |#3| 的组合。
+% \begin{macrocode}
+\NewDocumentCommand \DeclareUTFEncodedAccent { m O { \UTFencname } m m }
+ { \@@_declare_encoded:NNnnn \@@_combine_accent:nnNNn #1 {#2} {#3} {#4} }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{\DeclareUTFEncodedAccents}
+% |#1| 是重音命令,|#2| 是编码,|#3| 和 |#4| 都是组合重音符号的 Unicode。
+% 输出 |#1| 与 |#3|、|#4| 的组合。
+% \begin{macrocode}
+\NewDocumentCommand \DeclareUTFEncodedAccents { m O { \UTFencname } m m }
+ { \@@_declare_encoded:NNnnn \@@_combine_accents:nnNNn #1 {#2} {#3} {#4} }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{\DeclareUTFEncodedSymbol}
+% |#1| 是带参数的符号命令,|#2| 是编码,|#3| 是组合符号的 Unicode,|#4| 是基本符号的
+% Unicode。当 |#1| 的参数为空时,输出 |#4|,否则是 |#1| 的参数与 |#3| 的组合。
+% \begin{macrocode}
+\NewDocumentCommand \DeclareUTFEncodedSymbol { m O { \UTFencname } m m }
+ { \@@_declare_encoded:NNnnn \@@_combine_symbol:nnNNn #1 {#2} {#3} {#4} }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{\DeclareUTFEncodedCircle}
+% |#1| 是带参数的圆圈符号命令,|#2| 是编码,|#3| 是组合圆圈符号的 Unicode,|#4|
+% 是圆圈符号的 Unicode。当 |#1| 的参数为空时,输出 |#4|,否则是 |#1| 的参数与 |#4| 的组合。
+% \begin{macrocode}
+\NewDocumentCommand \DeclareUTFEncodedCircle { m O { \UTFencname } m m }
+ { \@@_declare_encoded:NNnnn \@@_combine_circle:nnNNn #1 {#2} {#3} {#4} }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[internal]{\DeclareEncodedCompositeCharacter}
-% |#1| 是编码,|#2| 是重音命令,|#3| 是组合重音符号的 Unicode,|#4| 是基本重音符号
-% 的 Unicode。当 |#2| 的参数为空时,输出 |#4|,否则是 |#2| 的参数与 |#3| 的组合。
% \begin{macrocode}
\RenewDocumentCommand \DeclareEncodedCompositeCharacter { m m m m }
- {
- \@@_if_csname:nTF {#2}
- { \@@_declare_accent:Nnnn #2 }
- { \@@_declare_accent:cnnn { \tl_to_str:n {#2} } }
- {#1} {#3} {#4}
- }
+ { \DeclareUTFEncodedSymbol #2 [#1] { "#3 } { "0#4 } }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[internal]{\DeclareEncodedCompositeAccents}
-% |#1| 是编码,|#2| 是重音命令,|#3| 和 |#4| 都是组合重音的 Unicode。当 |#2| 的
-% 参数为空时,输出 |#3|,否则是 |#2| 的参数与 |#4| 的组合。
+% \changes{v3.2.9}{2013/12/07}{修正 \pkg{xunicode} 中的错误定义。}
% \begin{macrocode}
\RenewDocumentCommand \DeclareEncodedCompositeAccents { m m m m }
+ { \DeclareUTFEncodedAccents #2 [#1] { "#4 } { "#3 } }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{\@@_declare_composite:Nnn}
+% 通过 \texttt{lowercase} 技巧,直接由重音符号的 Unicode 得到实际字符。
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_declare_composite:Nnn #1#2#3
+ { \DeclareTextCommand #1 {#3} { \@@_text_composite:nnn {#2} {#3} } }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{\@@_text_composite:nnn}
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_text_composite:nnn #1#2#3
{
- \@@_if_csname:nTF {#2}
- { \@@_declare_accent:Nnnn #2 }
- { \@@_declare_accent:cnnn { \tl_to_str:n {#2} } }
- {#1} {#4} {#3}
+ \@@_begin_hook:nn {#1} {#3}
+ \cs_if_exist:cTF { \@@_composite_cs:nnn {#1} {#2} {#3} }
+ {
+ \@@_text_composite:cnn
+ { \@@_composite_cs:nnn {#1} {#2} {#3} } {#1} {#3}
+ }
+ { \cs_if_exist_use:cTF { ? #1 } { {#3} } {#3} }
+ \@@_end_hook:nn {#1} {#3}
}
+\cs_new_protected:Npn \@@_text_composite:Nnn #1#2#3
+ {
+ \token_if_chardef:NTF #1
+ {
+ \@@_glyph_if_exist:nTF {#1}
+ {#1} { \cs_if_exist_use:cTF { ? #2 } { {#3} } {#3} }
+ }
+ {#1}
+ }
+\cs_generate_variant:Nn \@@_text_composite:Nnn { c }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\@@_declare_accent:Nnnn}
+% \begin{macro}[internal]{\@@_declare_encoded:NNnnn}
% 通过 \texttt{lowercase} 技巧,直接由重音符号的 Unicode 得到实际字符。
% \begin{macrocode}
-\cs_new_protected:Npn \@@_declare_accent:Nnnn #1#2#3#4
+\cs_new_protected:Npn \@@_declare_encoded:NNnnn #1#2#3#4#5
{
\group_begin:
- \char_set_lccode:nn { `3 } { "#3 }
- \char_set_lccode:nn { `4 } { \tl_if_blank:nTF {#4} { "#3 } { "#4 } }
+ \char_set_lccode:nn { `4 } { \@@_check_slot:n {#4} }
+ \char_set_lccode:nn { `5 } { \@@_check_slot:n {#5} }
\tl_to_lowercase:n
{
\group_end:
- \@@_declare_accent:NNNxxn 3 4
+ \@@_declare_encoded:NNNNxx 4 5
}
- #1 { \token_to_str:c {#2} } { \token_to_str:N #1 } {#2}
- }
-\cs_new_protected:Npn \@@_declare_accent:NNNnnn #1#2#3#4#5#6
- {
- \DeclareTextCommand #3 {#6}
- { \@@_text_composite:nnNNn {#4} {#5} {#1} {#2} }
+ #1 #2 { \token_to_str:N #2 } {#3}
}
-\cs_generate_variant:Nn \@@_declare_accent:Nnnn { c }
-\cs_generate_variant:Nn \@@_declare_accent:NNNnnn { NNNxx }
+\cs_new_protected:Npn \@@_declare_encoded:NNNNnn #1#2#3#4#5#6
+ { \DeclareTextCommand #4 {#6} { #3 {#5} {#6} {#1} {#2} } }
+\cs_generate_variant:Nn \@@_declare_encoded:NNnnn { c }
+\cs_generate_variant:Nn \@@_declare_encoded:NNNNnn { NNNNxx }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\@@_text_composite:nnNNn}
-% 若重音命令 |#2| 与它的参数 |#5| 的复合已经由 \cs{DeclareUTFcomposite} 设置,
+% \begin{macro}[internal]{\@@_text_combine:NnnNNn}
+% 若重音命令 |#2| 与它的参数 |#6| 的复合已经由 \cs{DeclareUTFcomposite} 设置,
% 并且在当前字体中存在该字符,则直接使用。否则使用组合命令。
% \begin{macrocode}
-\cs_new_protected:Npn \@@_text_composite:nnNNn #1#2#3#4#5
+\cs_new_protected:Npn \@@_text_combine:NnnNNn #1#2#3#4#5#6
{
- \@@_begin_hook:nn {#2} {#5}
- \cs_if_exist:cTF { #1#2 - \tl_to_str:n {#5} }
+ \@@_begin_hook:nn {#2} {#6}
+ \cs_if_exist:cTF { \@@_composite_cs:nnn {#2} {#3} {#6} }
{
- \@@_text_composite_aux:cnNNn
- { #1#2 - \tl_to_str:n {#5} } {#2} {#3} {#4} {#5}
+ \@@_text_combine:cNnNNn
+ { \@@_composite_cs:nnn {#2} {#3} {#6} } #1 {#2} {#4} {#5} {#6}
}
- { \@@_add_accent:nnNN {#5} {#2} {#3} {#4} }
- \@@_end_hook:nn {#2} {#5}
+ { #1 {#6} {#2} {#4} {#5} }
+ \@@_end_hook:nn {#2} {#6}
}
-\cs_new_protected:Npn \@@_text_composite_aux:NnNNn #1#2#3#4#5
+\cs_new_protected:Npn \@@_text_combine:NNnNNn #1#2#3#4#5#6
{
\token_if_chardef:NTF #1
+ { \@@_glyph_if_exist:nTF {#1} {#1} { #2 {#6} {#3} {#4} {#5} } }
+ {#1}
+ }
+\cs_generate_variant:Nn \@@_text_combine:NNnNNn { c }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{\@@_combine_symbol:nnNNn}
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_combine_symbol:nnNNn #1#2#3#4#5
+ { \@@_text_combine:NnnNNn \@@_add_symbol:nnNN {#1} {#2} {#3} {#4} {#5} }
+\cs_new_protected:Npn \@@_add_symbol:nnNN #1#2#3#4
+ {
+ \tl_if_blank:nTF {#1}
{
- \@@_glyph_if_exist:nTF {#1}
- {#1} { \@@_add_accent:nnNN {#5} {#2} {#3} {#4} }
+ \@@_glyph_if_exist:nTF { `#4 }
+ {#4}
+ { \cs_if_exist_use:cTF { ? #2 } { {#1} } {#4} }
+ }
+ {
+ \@@_glyph_if_exist:nTF { `#3 }
+ { #1#3 }
+ { \cs_if_exist_use:cTF { ? #2 } { {#1} } { #1#3 } }
}
- {#1}
}
-\cs_generate_variant:Nn \@@_text_composite_aux:NnNNn { c }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\@@_add_accent:nnNN}
+% \begin{macro}[internal]{\@@_combine_accent:nnNNn,\@@_add_accent:nnNN}
% 若组合重音符号的 |#3| 和基本重音符号 |#4| 在当前字体中都不存在,则转换到
% \cs{Declare\-Text\-Accent\-Default} 设置的编码或者使用
% \cs{DeclareTextCommandDefault} 中设置的命令。\texttt{0.9999} 版以前的 \XeTeX
@@ -8680,6 +8852,8 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \cs{XeTeXinputnormalization} 似乎是无效的,怀疑是使用 HarfBuzz 库替代 ICU 进行
% 字体排版的缘故\footnote{\url{http://tug.org/pipermail/xetex/2013-July/024579.html}}。
% \begin{macrocode}
+\cs_new_protected:Npn \@@_combine_accent:nnNNn #1#2#3#4#5
+ { \@@_text_combine:NnnNNn \@@_add_accent:nnNN {#1} {#2} {#3} {#4} {#5} }
\cs_new_protected:Npn \@@_add_accent:nnNN #1#2#3#4
{
\tl_if_blank:nTF {#1}
@@ -8689,31 +8863,60 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
{ \cs_if_exist_use:cTF { ? #2 } { {#1} } {#4} }
}
{
- \bool_if:NTF \l_@@_add_circle_bool
+ \@@_glyph_if_exist:nTF { `#3 }
+ { #1#3 }
{
- \bool_set_false:N \l_@@_add_circle_bool
\@@_glyph_if_exist:nTF { `#4 }
- { \@@_add_circle:nn {#4} {#1} }
+ { \add@accent { `#4 } {#1} }
+ { \cs_if_exist_use:cTF { ? #2 } { {#1} } { #1#3 } }
}
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{\@@_combine_accents:nnNNn,\@@_add_accents:nnNN}
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_combine_accents:nnNNn #1#2#3#4#5
+ { \@@_text_combine:NnnNNn \@@_add_accents:nnNN {#1} {#2} {#3} {#4} {#5} }
+\cs_new_protected:Npn \@@_add_accents:nnNN #1#2#3#4
+ {
+ \tl_if_blank:nTF {#1}
+ { \cs_if_exist_use:cTF { ? #2 } { {#1} } {#1} }
+ {
+ \bool_if:nTF
{
- \@@_glyph_if_exist:nTF { `#3 }
- { #1#3 }
- {
- \@@_glyph_if_exist:nTF { `#4 }
- { \add@accent { `#4 } {#1} }
- }
+ \@@_glyph_if_exist_p:n { `#3 } &&
+ \@@_glyph_if_exist_p:n { `#4 }
}
- { \cs_if_exist_use:cTF { ? #2 } { {#1} } {#1} }
+ { #1#3#4 }
+ { \cs_if_exist_use:cTF { ? #2 } { {#1} } { #1#3#4 } }
}
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\@@_add_circle:nn}
+% \begin{macro}[internal]{\@@_combine_circle:nnNNn,\@@_add_circle:nnNN,\@@_add_circle:Nn}
% 对圆圈中的数字或者字母适当缩小,以适合圆圈的大小。只有字体中存在
% \texttt{U+25EF} 时,才使用这里的设置,否则还还是 \LaTeX\ 中的设置。
% \begin{macrocode}
-\cs_new_protected:Npn \@@_add_circle:nn #1#2
+\cs_new_protected:Npn \@@_combine_circle:nnNNn #1#2#3#4#5
+ { \@@_text_combine:NnnNNn \@@_add_circle:nnNN {#1} {#2} {#3} {#4} {#5} }
+\cs_new_protected:Npn \@@_add_circle:nnNN #1#2#3#4
+ {
+ \tl_if_blank:nTF {#1}
+ {
+ \@@_glyph_if_exist:nTF { `#4 }
+ {#4}
+ { \cs_if_exist_use:cTF { ? #2 } { {#1} } {#4} }
+ }
+ {
+ \@@_glyph_if_exist:nTF { `#4 }
+ { \@@_add_circle:Nn #4 {#1} }
+ { \cs_if_exist_use:cTF { ? #2 } { {#1} } {#1} }
+ }
+ }
+\cs_new_protected:Npn \@@_add_circle:Nn #1#2
{
\hcoffin_set:Nn \l_@@_circle_coffin {#1}
\hcoffin_set:Nn \l_@@_tmp_coffin {#2}
@@ -8819,125 +9022,1406 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
%
% \changes{v3.2.8}{2013/12/05}{启用 \pkg{xunicode} 中的带圈数字和字母设置。}
%
-% \begin{macro}[internal]{\@@_declare_textcircled:n}
-% 启用 \pkg{xunicode} 中的带圈数字和字母设置。
-% \begin{macrocode}
-\AtBeginUTFCommand [ \textcircled ]
- { \bool_set_true:N \l_@@_add_circle_bool }
-\bool_new:N \l_@@_add_circle_bool
-\cs_new_protected_nopar:Npn \@@_declare_textcircled:n #1
- {
- \@@_declare_character:Nnn \textbigcircle {#1} { x25EF }
- \@@_declare_accent:Nnnn \textcircled {#1} { 20DD } { 25EF }
- \@@_declare_composite:Nnnn \textcircled {#1} { 0 } { x24EA }
- \@@_declare_composite:Nnnn \textcircled {#1} { 1 } { x2460 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 2 } { x2461 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 3 } { x2462 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 4 } { x2463 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 5 } { x2464 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 6 } { x2465 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 7 } { x2466 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 8 } { x2467 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 9 } { x2468 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 10 } { x2469 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 11 } { x246A }
- \@@_declare_composite:Nnnn \textcircled {#1} { 12 } { x246B }
- \@@_declare_composite:Nnnn \textcircled {#1} { 13 } { x246C }
- \@@_declare_composite:Nnnn \textcircled {#1} { 14 } { x246D }
- \@@_declare_composite:Nnnn \textcircled {#1} { 15 } { x246E }
- \@@_declare_composite:Nnnn \textcircled {#1} { 16 } { x246F }
- \@@_declare_composite:Nnnn \textcircled {#1} { 17 } { x2470 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 18 } { x2471 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 19 } { x2472 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 20 } { x2473 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 21 } { x3251 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 22 } { x3252 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 23 } { x3253 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 24 } { x3254 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 25 } { x3255 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 26 } { x3256 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 27 } { x3257 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 28 } { x3258 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 29 } { x3259 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 30 } { x325A }
- \@@_declare_composite:Nnnn \textcircled {#1} { 31 } { x325B }
- \@@_declare_composite:Nnnn \textcircled {#1} { 32 } { x325C }
- \@@_declare_composite:Nnnn \textcircled {#1} { 33 } { x325D }
- \@@_declare_composite:Nnnn \textcircled {#1} { 34 } { x325E }
- \@@_declare_composite:Nnnn \textcircled {#1} { 35 } { x325F }
- \@@_declare_composite:Nnnn \textcircled {#1} { 36 } { x32B1 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 37 } { x32B2 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 38 } { x32B3 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 39 } { x32B4 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 40 } { x32B5 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 41 } { x32B6 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 42 } { x32B7 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 43 } { x32B8 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 44 } { x32B9 }
- \@@_declare_composite:Nnnn \textcircled {#1} { 45 } { x32BA }
- \@@_declare_composite:Nnnn \textcircled {#1} { 46 } { x32BB }
- \@@_declare_composite:Nnnn \textcircled {#1} { 47 } { x32BC }
- \@@_declare_composite:Nnnn \textcircled {#1} { 48 } { x32BD }
- \@@_declare_composite:Nnnn \textcircled {#1} { 49 } { x32BE }
- \@@_declare_composite:Nnnn \textcircled {#1} { 50 } { x32BF }
- \@@_declare_composite:Nnnn \textcircled {#1} { A } { x24B6 }
- \@@_declare_composite:Nnnn \textcircled {#1} { B } { x24B7 }
- \@@_declare_composite:Nnnn \textcircled {#1} { C } { x24B8 }
- \@@_declare_composite:Nnnn \textcircled {#1} { D } { x24B9 }
- \@@_declare_composite:Nnnn \textcircled {#1} { E } { x24BA }
- \@@_declare_composite:Nnnn \textcircled {#1} { F } { x24BB }
- \@@_declare_composite:Nnnn \textcircled {#1} { G } { x24BC }
- \@@_declare_composite:Nnnn \textcircled {#1} { H } { x24BD }
- \@@_declare_composite:Nnnn \textcircled {#1} { I } { x24BE }
- \@@_declare_composite:Nnnn \textcircled {#1} { J } { x24BF }
- \@@_declare_composite:Nnnn \textcircled {#1} { K } { x24C0 }
- \@@_declare_composite:Nnnn \textcircled {#1} { L } { x24C1 }
- \@@_declare_composite:Nnnn \textcircled {#1} { M } { x24C2 }
- \@@_declare_composite:Nnnn \textcircled {#1} { N } { x24C3 }
- \@@_declare_composite:Nnnn \textcircled {#1} { O } { x24C4 }
- \@@_declare_composite:Nnnn \textcircled {#1} { P } { x24C5 }
- \@@_declare_composite:Nnnn \textcircled {#1} { Q } { x24C6 }
- \@@_declare_composite:Nnnn \textcircled {#1} { R } { x24C7 }
- \@@_declare_composite:Nnnn \textcircled {#1} { S } { x24C8 }
- \@@_declare_composite:Nnnn \textcircled {#1} { T } { x24C9 }
- \@@_declare_composite:Nnnn \textcircled {#1} { U } { x24CA }
- \@@_declare_composite:Nnnn \textcircled {#1} { V } { x24CB }
- \@@_declare_composite:Nnnn \textcircled {#1} { W } { x24CC }
- \@@_declare_composite:Nnnn \textcircled {#1} { X } { x24CD }
- \@@_declare_composite:Nnnn \textcircled {#1} { Y } { x24CE }
- \@@_declare_composite:Nnnn \textcircled {#1} { Z } { x24CF }
- \@@_declare_composite:Nnnn \textcircled {#1} { a } { x24D0 }
- \@@_declare_composite:Nnnn \textcircled {#1} { b } { x24D1 }
- \@@_declare_composite:Nnnn \textcircled {#1} { c } { x24D2 }
- \@@_declare_composite:Nnnn \textcircled {#1} { d } { x24D3 }
- \@@_declare_composite:Nnnn \textcircled {#1} { e } { x24D4 }
- \@@_declare_composite:Nnnn \textcircled {#1} { f } { x24D5 }
- \@@_declare_composite:Nnnn \textcircled {#1} { g } { x24D6 }
- \@@_declare_composite:Nnnn \textcircled {#1} { h } { x24D7 }
- \@@_declare_composite:Nnnn \textcircled {#1} { i } { x24D8 }
- \@@_declare_composite:Nnnn \textcircled {#1} { j } { x24D9 }
- \@@_declare_composite:Nnnn \textcircled {#1} { k } { x24DA }
- \@@_declare_composite:Nnnn \textcircled {#1} { l } { x24DB }
- \@@_declare_composite:Nnnn \textcircled {#1} { m } { x24DC }
- \@@_declare_composite:Nnnn \textcircled {#1} { n } { x24DD }
- \@@_declare_composite:Nnnn \textcircled {#1} { o } { x24DE }
- \@@_declare_composite:Nnnn \textcircled {#1} { p } { x24DF }
- \@@_declare_composite:Nnnn \textcircled {#1} { q } { x24E0 }
- \@@_declare_composite:Nnnn \textcircled {#1} { r } { x24E1 }
- \@@_declare_composite:Nnnn \textcircled {#1} { s } { x24E2 }
- \@@_declare_composite:Nnnn \textcircled {#1} { t } { x24E3 }
- \@@_declare_composite:Nnnn \textcircled {#1} { u } { x24E4 }
- \@@_declare_composite:Nnnn \textcircled {#1} { v } { x24E5 }
- \@@_declare_composite:Nnnn \textcircled {#1} { w } { x24E6 }
- \@@_declare_composite:Nnnn \textcircled {#1} { x } { x24E7 }
- \@@_declare_composite:Nnnn \textcircled {#1} { y } { x24E8 }
- \@@_declare_composite:Nnnn \textcircled {#1} { z } { x24E9 }
- }
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macrocode}
%</xunicode>
+%<*xunextra>
+% \end{macrocode}
+%
+% 以下内容选自 \pkg{xunicode},并做了适当修改。
+% \begin{macrocode}
+\DeclareUTFComposite\textsuperscript
+\DeclareUTFComposite\textsubscript
+\DeclareUTFEncodedAccent\textsbleftarrow{"20EE}{"20FF}
+\DeclareUTFEncodedAccent\`{"0300}{"02CB}
+\DeclareUTFEncodedAccent\capitalgrave{"0300}{"02CB}
+\DeclareUTFEncodedAccent\'{"0301}{"02CA}
+\DeclareUTFEncodedAccent\capitalacute{"0301}{"02CA}
+\DeclareUTFEncodedAccent\^{"0302}{"02C6}
+\DeclareUTFEncodedAccent\capitalcircumflex{"0302}{"02C6}
+\DeclareUTFEncodedAccent\~{"0303}{"02DC}
+\DeclareUTFEncodedAccent\capitaltilde{"0303}{"02DC}
+\DeclareUTFEncodedAccent\={"0304}{"02C9}
+\DeclareUTFEncodedAccent\capitalmacron{"0304}{"02C9}
+\DeclareUTFEncodedAccent\textoverline{"0305}{"203E}
+\DeclareUTFEncodedAccent\u{"0306}{"02D8}
+\DeclareUTFEncodedAccent\capitalbreve{"0306}{"02D8}
+\DeclareUTFEncodedAccent\.{"0307}{"02D9}
+\DeclareUTFEncodedAccent\capitaldotaccent{"0307}{"02D9}
+\DeclareUTFEncodedAccent\"{"0308}{"00A8}
+\DeclareUTFEncodedAccent\capitaldieresis{"0308}{"00A8}
+\DeclareUTFEncodedAccent\m{"0309}{"0309}
+\DeclareUTFEncodedAccent\texthookabove{"0309}{"0309}
+\DeclareUTFEncodedAccent\r{"030A}{"02DA}
+\DeclareUTFEncodedAccent\capitalring{"030A}{"02DA}
+\DeclareUTFEncodedAccent\H{"030B}{"02DD}
+\DeclareUTFEncodedAccent\capitalhungarumlaut{"030B}{"02DD}
+\DeclareUTFEncodedAccent\v{"030C}{"02C7}
+\DeclareUTFEncodedAccent\capitalcaron{"030C}{"02C7}
+\DeclareUTFEncodedAccent\textvbaraccent{"030D}{"02C8}
+\DeclareUTFEncodedAccent\textdoublevbaraccent{"030E}{"0022}
+\DeclareUTFEncodedAccent\U{"030E}{"0022}
+\DeclareUTFEncodedAccent\textdoublegrave{"030F}{"02F5}
+\DeclareUTFEncodedAccent\G{"030F}{"02F5}
+\DeclareUTFEncodedAccent\textdotbreve{"0310}{"0310}
+\DeclareUTFEncodedAccent\textroundcap{"0311}{"0311}
+\DeclareUTFEncodedAccent\newtie{"0311}{"0311}
+\DeclareUTFEncodedAccent\capitalnewtie{"0311}{"0311}
+\DeclareUTFEncodedAccent\textturncommaabove{"0312}{"02BB}
+\DeclareUTFEncodedAccent\textcommaabove{"0313}{"02BC}
+\DeclareUTFEncodedAccent\textrevcommaabove{"0314}{"02BD}
+\DeclareUTFEncodedAccent\overbridge{"0346}{"0346}
+\DeclareUTFEncodedAccent\crtilde{"034A}{"034A}
+\DeclareUTFEncodedAccent\dottedtilde{"034B}{"034B}
+\DeclareUTFEncodedAccent\doubletilde{"034C}{"034C}
+\DeclareUTFEncodedAccent\textrightarrowhead{"0350}{"02C3}
+\DeclareUTFEncodedAccent\textlefthalfring{"0351}{"02D3}
+\DeclareUTFEncodedAccent\textrighthalfring{"0357}{"02D2}
+\DeclareUTFEncodedAccent\textdoubletilde{"0360}{"0360}
+\DeclareUTFEncodedAccent\t{"0361}{"0361}
+\DeclareUTFEncodedAccent\textdoublebreve{"035D}{"035D}
+\DeclareUTFEncodedAccent\textdoublemacron{"035E}{"035E}
+\DeclareUTFEncodedAccent\capitaltie{"0361}{"0361}
+\DeclareUTFEncodedAccent\texttoptiebar{"0361}{"0361}
+\DeclareUTFEncodedAccent\texthighrise{"1DC4}{"1DC4}
+\DeclareUTFEncodedAccent\textlowrise{"1DC5}{"1DC5}
+\DeclareUTFEncodedAccent\textrisefall{"1DC8}{"1DC8}
+\DeclareUTFEncodedAccent\textfallrise{"1DC9}{"1DC9}
+\DeclareUTFEncodedAccent\textaolig{"1DD5}{"1DD5}
+\DeclareUTFCompositeSymbol\textundertie{H}{"1E2A}
+\DeclareUTFCompositeSymbol\textundertie{h}{"1E2B}
+\DeclareUTFEncodedAccents\textcircumgrave{"0302}{"0301}
+\DeclareUTFSymbol\textFinv{"2132}
+\DeclareUTFSymbol\textaleph{"2135}
+\DeclareUTFSymbol\textbeth{"2136}
+\DeclareUTFSymbol\textgimel{"2137}
+\DeclareUTFSymbol\textdaleth{"2138}
+\DeclareUTFSymbol\textGame{"2141}
+\DeclareUTFCompositeCommand\tonebar{25}{\tonebar{2}\tonebar{5}}
+\DeclareUTFCompositeCommand\tonebar{52}{\tonebar{5}\tonebar{2}}
+\DeclareUTFSymbol\textbigcircle{"25EF}
+\DeclareUTFEncodedCircle\textcircled{"20DD}{"25EF}
+\DeclareUTFCompositeSymbol\textcircled{0}{"24EA}
+\DeclareUTFCompositeSymbol\textcircled{1}{"2460}
+\DeclareUTFCompositeSymbol\textcircled{2}{"2461}
+\DeclareUTFCompositeSymbol\textcircled{3}{"2462}
+\DeclareUTFCompositeSymbol\textcircled{4}{"2463}
+\DeclareUTFCompositeSymbol\textcircled{5}{"2464}
+\DeclareUTFCompositeSymbol\textcircled{6}{"2465}
+\DeclareUTFCompositeSymbol\textcircled{7}{"2466}
+\DeclareUTFCompositeSymbol\textcircled{8}{"2467}
+\DeclareUTFCompositeSymbol\textcircled{9}{"2468}
+\DeclareUTFCompositeSymbol\textcircled{10}{"2469}
+\DeclareUTFCompositeSymbol\textcircled{11}{"246A}
+\DeclareUTFCompositeSymbol\textcircled{12}{"246B}
+\DeclareUTFCompositeSymbol\textcircled{13}{"246C}
+\DeclareUTFCompositeSymbol\textcircled{14}{"246D}
+\DeclareUTFCompositeSymbol\textcircled{15}{"246E}
+\DeclareUTFCompositeSymbol\textcircled{16}{"246F}
+\DeclareUTFCompositeSymbol\textcircled{17}{"2470}
+\DeclareUTFCompositeSymbol\textcircled{18}{"2471}
+\DeclareUTFCompositeSymbol\textcircled{19}{"2472}
+\DeclareUTFCompositeSymbol\textcircled{20}{"2473}
+\DeclareUTFCompositeSymbol\textcircled{21}{"3251}
+\DeclareUTFCompositeSymbol\textcircled{22}{"3252}
+\DeclareUTFCompositeSymbol\textcircled{23}{"3253}
+\DeclareUTFCompositeSymbol\textcircled{24}{"3254}
+\DeclareUTFCompositeSymbol\textcircled{25}{"3255}
+\DeclareUTFCompositeSymbol\textcircled{26}{"3256}
+\DeclareUTFCompositeSymbol\textcircled{27}{"3257}
+\DeclareUTFCompositeSymbol\textcircled{28}{"3258}
+\DeclareUTFCompositeSymbol\textcircled{29}{"3259}
+\DeclareUTFCompositeSymbol\textcircled{30}{"325A}
+\DeclareUTFCompositeSymbol\textcircled{31}{"325B}
+\DeclareUTFCompositeSymbol\textcircled{32}{"325C}
+\DeclareUTFCompositeSymbol\textcircled{33}{"325D}
+\DeclareUTFCompositeSymbol\textcircled{34}{"325E}
+\DeclareUTFCompositeSymbol\textcircled{35}{"325F}
+\DeclareUTFCompositeSymbol\textcircled{36}{"32B1}
+\DeclareUTFCompositeSymbol\textcircled{37}{"32B2}
+\DeclareUTFCompositeSymbol\textcircled{38}{"32B3}
+\DeclareUTFCompositeSymbol\textcircled{39}{"32B4}
+\DeclareUTFCompositeSymbol\textcircled{40}{"32B5}
+\DeclareUTFCompositeSymbol\textcircled{41}{"32B6}
+\DeclareUTFCompositeSymbol\textcircled{42}{"32B7}
+\DeclareUTFCompositeSymbol\textcircled{43}{"32B8}
+\DeclareUTFCompositeSymbol\textcircled{44}{"32B9}
+\DeclareUTFCompositeSymbol\textcircled{45}{"32BA}
+\DeclareUTFCompositeSymbol\textcircled{46}{"32BB}
+\DeclareUTFCompositeSymbol\textcircled{47}{"32BC}
+\DeclareUTFCompositeSymbol\textcircled{48}{"32BD}
+\DeclareUTFCompositeSymbol\textcircled{49}{"32BE}
+\DeclareUTFCompositeSymbol\textcircled{50}{"32BF}
+\DeclareUTFCompositeSymbol\textcircled{A}{"24B6}
+\DeclareUTFCompositeSymbol\textcircled{B}{"24B7}
+\DeclareUTFCompositeSymbol\textcircled{C}{"24B8}
+\DeclareUTFCompositeSymbol\textcircled{D}{"24B9}
+\DeclareUTFCompositeSymbol\textcircled{E}{"24BA}
+\DeclareUTFCompositeSymbol\textcircled{F}{"24BB}
+\DeclareUTFCompositeSymbol\textcircled{G}{"24BC}
+\DeclareUTFCompositeSymbol\textcircled{H}{"24BD}
+\DeclareUTFCompositeSymbol\textcircled{I}{"24BE}
+\DeclareUTFCompositeSymbol\textcircled{J}{"24BF}
+\DeclareUTFCompositeSymbol\textcircled{K}{"24C0}
+\DeclareUTFCompositeSymbol\textcircled{L}{"24C1}
+\DeclareUTFCompositeSymbol\textcircled{M}{"24C2}
+\DeclareUTFCompositeSymbol\textcircled{N}{"24C3}
+\DeclareUTFCompositeSymbol\textcircled{O}{"24C4}
+\DeclareUTFCompositeSymbol\textcircled{P}{"24C5}
+\DeclareUTFCompositeSymbol\textcircled{Q}{"24C6}
+\DeclareUTFCompositeSymbol\textcircled{R}{"24C7}
+\DeclareUTFCompositeSymbol\textcircled{S}{"24C8}
+\DeclareUTFCompositeSymbol\textcircled{T}{"24C9}
+\DeclareUTFCompositeSymbol\textcircled{U}{"24CA}
+\DeclareUTFCompositeSymbol\textcircled{V}{"24CB}
+\DeclareUTFCompositeSymbol\textcircled{W}{"24CC}
+\DeclareUTFCompositeSymbol\textcircled{X}{"24CD}
+\DeclareUTFCompositeSymbol\textcircled{Y}{"24CE}
+\DeclareUTFCompositeSymbol\textcircled{Z}{"24CF}
+\DeclareUTFCompositeSymbol\textcircled{a}{"24D0}
+\DeclareUTFCompositeSymbol\textcircled{b}{"24D1}
+\DeclareUTFCompositeSymbol\textcircled{c}{"24D2}
+\DeclareUTFCompositeSymbol\textcircled{d}{"24D3}
+\DeclareUTFCompositeSymbol\textcircled{e}{"24D4}
+\DeclareUTFCompositeSymbol\textcircled{f}{"24D5}
+\DeclareUTFCompositeSymbol\textcircled{g}{"24D6}
+\DeclareUTFCompositeSymbol\textcircled{h}{"24D7}
+\DeclareUTFCompositeSymbol\textcircled{i}{"24D8}
+\DeclareUTFCompositeSymbol\textcircled{j}{"24D9}
+\DeclareUTFCompositeSymbol\textcircled{k}{"24DA}
+\DeclareUTFCompositeSymbol\textcircled{l}{"24DB}
+\DeclareUTFCompositeSymbol\textcircled{m}{"24DC}
+\DeclareUTFCompositeSymbol\textcircled{n}{"24DD}
+\DeclareUTFCompositeSymbol\textcircled{o}{"24DE}
+\DeclareUTFCompositeSymbol\textcircled{p}{"24DF}
+\DeclareUTFCompositeSymbol\textcircled{q}{"24E0}
+\DeclareUTFCompositeSymbol\textcircled{r}{"24E1}
+\DeclareUTFCompositeSymbol\textcircled{s}{"24E2}
+\DeclareUTFCompositeSymbol\textcircled{t}{"24E3}
+\DeclareUTFCompositeSymbol\textcircled{u}{"24E4}
+\DeclareUTFCompositeSymbol\textcircled{v}{"24E5}
+\DeclareUTFCompositeSymbol\textcircled{w}{"24E6}
+\DeclareUTFCompositeSymbol\textcircled{x}{"24E7}
+\DeclareUTFCompositeSymbol\textcircled{y}{"24E8}
+\DeclareUTFCompositeSymbol\textcircled{z}{"24E9}
+% \end{macrocode}
+%
+% \changes{v3.2.9}{2013/12/07}
+% {增加 \file{xunicode-extra.def} 中,用于加入 \file{puenc.def} 中的符号定义。}
+%
+% 以下定义取自 \pkg{hyperref} 的 \file{puenc.def}。
+% \begin{macrocode}
+\DeclareUTFEncodedAccent\textinvbreve{"0311}{"0311}
+\DeclareUTFEncodedSymbol\textsubbreve{"032E}{"203F}
+\DeclareUTFSymbol\textHT{"0009}
+\DeclareUTFSymbol\textLF{"000A}
+\DeclareUTFSymbol\textCR{"000D}
+\DeclareUTFSymbol\textnumbersign{"0023}
+\DeclareUTFSymbol\textparenleft{"0028}
+\DeclareUTFSymbol\textparenright{"0029}
+\DeclareUTFSymbol\textMVPlus{"002B}
+\DeclareUTFSymbol\textMVComma{"002C}
+\DeclareUTFSymbol\textMVMinus{"002D}
+\DeclareUTFSymbol\textMVPeriod{"002E}
+\DeclareUTFSymbol\textMVDivision{"002F}
+\DeclareUTFSymbol\textMVZero{"0030}
+\DeclareUTFSymbol\textMVOne{"0031}
+\DeclareUTFSymbol\textMVTwo{"0032}
+\DeclareUTFSymbol\textMVThree{"0033}
+\DeclareUTFSymbol\textMVFour{"0034}
+\DeclareUTFSymbol\textMVFive{"0035}
+\DeclareUTFSymbol\textMVSix{"0036}
+\DeclareUTFSymbol\textMVSeven{"0037}
+\DeclareUTFSymbol\textMVEight{"0038}
+\DeclareUTFSymbol\textMVNine{"0039}
+\DeclareUTFSymbol\textMVAt{"0040}
+\DeclareUTFCompositeCommand\.{\i}{i}
+\DeclareUTFCompositeCommand\.{i}{i}
+\DeclareUTFSymbol\textlnot{"00AC}
+\DeclareUTFSymbol\textplusminus{"00B1}
+\DeclareUTFSymbol\textcedilla{"00B8}
+\DeclareUTFSymbol\textmultiply{"00D7}
+\DeclareUTFSymbol\textThorn{"00DE}
+\DeclareUTFSymbol\textdivide{"00F7}
+\DeclareUTFSymbol\textHslash{"0126}
+\DeclareUTFCompositeSymbol\k{\i}{"012F}
+\DeclareUTFCompositeSymbol\.{L}{"013F}
+\DeclareUTFCompositeSymbol\.{l}{"0140}
+\DeclareUTFSymbol\textnapostrophe{"0149}
+\DeclareUTFSymbol\textTslash{"0166}
+\DeclareUTFSymbol\texttslash{"0167}
+\DeclareUTFSymbol\textlongs{"017F}
+\DeclareUTFSymbol\texthausaB{"0181}
+\DeclareUTFSymbol\texthausaD{"018A}
+\DeclareUTFSymbol\textrevE{"018E}
+\DeclareUTFSymbol\texthausaK{"0198}
+\DeclareUTFSymbol\textPUnrleg{"019E}
+\DeclareUTFSymbol\textinve{"01DD}
+\DeclareUTFSymbol\textGslash{"01E4}
+\DeclareUTFSymbol\textgslash{"01E5}
+\DeclareUTFCompositeSymbol\textinvbreve{E}{"0206}
+\DeclareUTFCompositeSymbol\textinvbreve{e}{"0207}
+\DeclareUTFCompositeSymbol\textinvbreve{I}{"020A}
+\DeclareUTFCompositeSymbol\textinvbreve{i}{"020B}
+\DeclareUTFCompositeSymbol\textinvbreve{\i}{"020B}
+\DeclareUTFCompositeSymbol\textinvbreve{O}{"020E}
+\DeclareUTFCompositeSymbol\textinvbreve{o}{"020F}
+\DeclareUTFCompositeSymbol\textinvbreve{U}{"0216}
+\DeclareUTFCompositeSymbol\textinvbreve{u}{"0217}
+\DeclareUTFSymbol\j{"0237}
+\DeclareUTFSymbol\textPUdblig{"0238}
+\DeclareUTFSymbol\textPUqplig{"0239}
+\DeclareUTFSymbol\textslashc{"023C}
+\DeclareUTFSymbol\textniepsilon{"025B}
+\DeclareUTFSymbol\textipagamma{"0263}
+\DeclareUTFSymbol\textniiota{"0269}
+\DeclareUTFSymbol\textniphi{"0278}
+\DeclareUTFSymbol\textniupsilon{"028A}
+\DeclareUTFSymbol\textring{"02DA}
+\DeclareUTFSymbol\texttilde{"02DC}
+\DeclareUTFSymbol\texthungarumlaut{"02DD}
+\DeclareUTFSymbol\textringlow{"02F3}
+\DeclareUTFSymbol\texttildelow{"02F7}
+\DeclareUTFCommand\textnewtie{\textinvbreve\ }
+\DeclareUTFCommand\textdotbelow{\d\ }
+\DeclareUTFSymbol\textmacronbelow{"02CD}
+\DeclareUTFCommand\texttie{\t\ }
+\DeclareUTFSymbol\textnumeralsigngreek{"0374}
+\DeclareUTFSymbol\textnumeralsignlowergreek{"0375}
+\DeclareUTFCompositeSymbol\'{\textAlpha}{"0386}
+\DeclareUTFCompositeSymbol\'{\textEpsilon}{"0388}
+\DeclareUTFCompositeSymbol\'{\textEta}{"0389}
+\DeclareUTFCompositeSymbol\'{\textIota}{"038A}
+\DeclareUTFCompositeSymbol\'{\textOmicron}{"038C}
+\DeclareUTFCompositeSymbol\'{\textUpsilon}{"038E}
+\DeclareUTFCompositeSymbol\'{\textOmega}{"038F}
+\DeclareUTFCompositeSymbol\'{\textIotadieresis}{"0390}
+\DeclareUTFSymbol\textIotadieresis{"03AA}
+\DeclareUTFCompositeSymbol\"{\textIota}{"03AA}
+\DeclareUTFCompositeSymbol\"{\textUpsilon}{"03AB}
+\DeclareUTFCompositeSymbol\'{\textalpha}{"03AC}
+\DeclareUTFCompositeSymbol\'{\textepsilon}{"03AD}
+\DeclareUTFCompositeSymbol\'{\texteta}{"03AE}
+\DeclareUTFCompositeSymbol\'{\textiota}{"03AF}
+\DeclareUTFCompositeSymbol\"{\textupsilonacute}{"03B0}
+\DeclareUTFSymbol\textmugreek{"03BC}
+\DeclareUTFSymbol\textvarsigma{"03C2}
+\DeclareUTFCompositeSymbol\"{\textiota}{"03CA}
+\DeclareUTFCompositeSymbol\"{\textupsilon}{"03CB}
+\DeclareUTFCompositeSymbol\'{\textomicron}{"03CC}
+\DeclareUTFSymbol\textupsilonacute{"03CD}
+\DeclareUTFCompositeSymbol\'{\textupsilon}{"03CD}
+\DeclareUTFCompositeSymbol\'{\textomega}{"03CE}
+\DeclareUTFSymbol\textStigmagreek{"03DA}
+\DeclareUTFSymbol\textstigmagreek{"03DB}
+\DeclareUTFSymbol\textDigammagreek{"03DC}
+\DeclareUTFSymbol\textdigammagreek{"03DD}
+\DeclareUTFSymbol\textKoppagreek{"03DE}
+\DeclareUTFSymbol\textkoppagreek{"03DF}
+\DeclareUTFSymbol\textSampigreek{"03E0}
+\DeclareUTFSymbol\textsampigreek{"03E1}
+\DeclareUTFSymbol\textbackepsilon{"03F6}
+\DeclareUTFCompositeSymbol\`{\CYRE}{"0400}
+\DeclareUTFSymbol\CYRYO{"0401}
+\DeclareUTFCompositeSymbol\"{\CYRE}{"0401}
+\DeclareUTFSymbol\CYRDJE{"0402}
+\DeclareUTFCompositeSymbol\'{\CYRG}{"0403}
+\DeclareUTFSymbol\CYRIE{"0404}
+\DeclareUTFSymbol\CYRDZE{"0405}
+\DeclareUTFSymbol\CYRII{"0406}
+\DeclareUTFSymbol\CYRYI{"0407}
+\DeclareUTFCompositeSymbol\"{\CYRII}{"0407}
+\DeclareUTFSymbol\CYRJE{"0408}
+\DeclareUTFSymbol\CYRLJE{"0409}
+\DeclareUTFSymbol\CYRNJE{"040A}
+\DeclareUTFSymbol\CYRTSHE{"040B}
+\DeclareUTFCompositeSymbol\'{\CYRK}{"040C}
+\DeclareUTFCompositeSymbol\`{\CYRI}{"040D}
+\DeclareUTFSymbol\CYRUSHRT{"040E}
+\DeclareUTFCompositeSymbol\U{\CYRU}{"040E}
+\DeclareUTFSymbol\CYRDZHE{"040F}
+\DeclareUTFSymbol\CYRA{"0410}
+\DeclareUTFSymbol\CYRB{"0411}
+\DeclareUTFSymbol\CYRV{"0412}
+\DeclareUTFSymbol\CYRG{"0413}
+\DeclareUTFSymbol\CYRD{"0414}
+\DeclareUTFSymbol\CYRE{"0415}
+\DeclareUTFSymbol\CYRZH{"0416}
+\DeclareUTFSymbol\CYRZ{"0417}
+\DeclareUTFSymbol\CYRI{"0418}
+\DeclareUTFSymbol\CYRISHRT{"0419}
+\DeclareUTFCompositeSymbol\U{\CYRI}{"0419}
+\DeclareUTFSymbol\CYRK{"041A}
+\DeclareUTFSymbol\CYRL{"041B}
+\DeclareUTFSymbol\CYRM{"041C}
+\DeclareUTFSymbol\CYRN{"041D}
+\DeclareUTFSymbol\CYRO{"041E}
+\DeclareUTFSymbol\CYRP{"041F}
+\DeclareUTFSymbol\CYRR{"0420}
+\DeclareUTFSymbol\CYRS{"0421}
+\DeclareUTFSymbol\CYRT{"0422}
+\DeclareUTFSymbol\CYRU{"0423}
+\DeclareUTFSymbol\CYRF{"0424}
+\DeclareUTFSymbol\CYRH{"0425}
+\DeclareUTFSymbol\CYRC{"0426}
+\DeclareUTFSymbol\CYRCH{"0427}
+\DeclareUTFSymbol\CYRSH{"0428}
+\DeclareUTFSymbol\CYRSHCH{"0429}
+\DeclareUTFSymbol\CYRHRDSN{"042A}
+\DeclareUTFSymbol\CYRERY{"042B}
+\DeclareUTFSymbol\CYRSFTSN{"042C}
+\DeclareUTFSymbol\CYREREV{"042D}
+\DeclareUTFSymbol\CYRYU{"042E}
+\DeclareUTFSymbol\CYRYA{"042F}
+\DeclareUTFSymbol\cyra{"0430}
+\DeclareUTFSymbol\cyrb{"0431}
+\DeclareUTFSymbol\cyrv{"0432}
+\DeclareUTFSymbol\cyrg{"0433}
+\DeclareUTFSymbol\cyrd{"0434}
+\DeclareUTFSymbol\cyre{"0435}
+\DeclareUTFSymbol\cyrzh{"0436}
+\DeclareUTFSymbol\cyrz{"0437}
+\DeclareUTFSymbol\cyri{"0438}
+\DeclareUTFSymbol\cyrishrt{"0439}
+\DeclareUTFCompositeSymbol\U{\cyri}{"0439}
+\DeclareUTFSymbol\cyrk{"043A}
+\DeclareUTFSymbol\cyrl{"043B}
+\DeclareUTFSymbol\cyrm{"043C}
+\DeclareUTFSymbol\cyrn{"043D}
+\DeclareUTFSymbol\cyro{"043E}
+\DeclareUTFSymbol\cyrp{"043F}
+\DeclareUTFSymbol\cyrr{"0440}
+\DeclareUTFSymbol\cyrs{"0441}
+\DeclareUTFSymbol\cyrt{"0442}
+\DeclareUTFSymbol\cyru{"0443}
+\DeclareUTFSymbol\cyrf{"0444}
+\DeclareUTFSymbol\cyrh{"0445}
+\DeclareUTFSymbol\cyrc{"0446}
+\DeclareUTFSymbol\cyrch{"0447}
+\DeclareUTFSymbol\cyrsh{"0448}
+\DeclareUTFSymbol\cyrshch{"0449}
+\DeclareUTFSymbol\cyrhrdsn{"044A}
+\DeclareUTFSymbol\cyrery{"044B}
+\DeclareUTFSymbol\cyrsftsn{"044C}
+\DeclareUTFSymbol\cyrerev{"044D}
+\DeclareUTFSymbol\cyryu{"044E}
+\DeclareUTFSymbol\cyrya{"044F}
+\DeclareUTFCompositeSymbol\`{\cyre}{"0450}
+\DeclareUTFSymbol\cyryo{"0451}
+\DeclareUTFCompositeSymbol\"{\cyre}{"0451}
+\DeclareUTFSymbol\cyrdje{"0452}
+\DeclareUTFCompositeSymbol\'{\cyrg}{"0453}
+\DeclareUTFSymbol\cyrie{"0454}
+\DeclareUTFSymbol\cyrdze{"0455}
+\DeclareUTFSymbol\cyrii{"0456}
+\DeclareUTFSymbol\cyryi{"0457}
+\DeclareUTFCompositeSymbol\"{\cyrii}{"0457}
+\DeclareUTFSymbol\cyrje{"0458}
+\DeclareUTFSymbol\cyrlje{"0459}
+\DeclareUTFSymbol\cyrnje{"045A}
+\DeclareUTFSymbol\cyrtshe{"045B}
+\DeclareUTFCompositeSymbol\'{\cyrk}{"045C}
+\DeclareUTFCompositeSymbol\`{\cyri}{"045D}
+\DeclareUTFSymbol\cyrushrt{"045E}
+\DeclareUTFCompositeSymbol\U{\curu}{"045E}
+\DeclareUTFSymbol\cyrdzhe{"045F}
+\DeclareUTFSymbol\CYROMEGA{"0460}
+\DeclareUTFSymbol\cyromega{"0461}
+\DeclareUTFSymbol\CYRYAT{"0462}
+\DeclareUTFSymbol\cyryat{"0463}
+\DeclareUTFSymbol\CYRIOTE{"0464}
+\DeclareUTFSymbol\cyriote{"0465}
+\DeclareUTFSymbol\CYRLYUS{"0466}
+\DeclareUTFSymbol\cyrlyus{"0467}
+\DeclareUTFSymbol\CYRIOTLYUS{"0468}
+\DeclareUTFSymbol\cyriotlyus{"0469}
+\DeclareUTFSymbol\CYRBYUS{"046A}
+\DeclareUTFSymbol\cyrbyus{"046B}
+\DeclareUTFSymbol\CYRIOTBYUS{"046C}
+\DeclareUTFSymbol\cyriotbyus{"046D}
+\DeclareUTFSymbol\CYRKSI{"046E}
+\DeclareUTFSymbol\cyrksi{"046F}
+\DeclareUTFSymbol\CYRPSI{"0470}
+\DeclareUTFSymbol\cyrpsi{"0471}
+\DeclareUTFSymbol\CYRFITA{"0472}
+\DeclareUTFSymbol\cyrfita{"0473}
+\DeclareUTFSymbol\CYRIZH{"0474}
+\DeclareUTFSymbol\cyrizh{"0475}
+\DeclareUTFCompositeSymbol\C{\CYRIZH}{"0476}
+\DeclareUTFCompositeSymbol\C{\cyrizh}{"0477}
+\DeclareUTFSymbol\CYRUK{"0478}
+\DeclareUTFSymbol\cyruk{"0479}
+\DeclareUTFSymbol\CYROMEGARND{"047A}
+\DeclareUTFSymbol\cyromegarnd{"047B}
+\DeclareUTFSymbol\CYROMEGATITLO{"047C}
+\DeclareUTFSymbol\cyromegatitlo{"047D}
+\DeclareUTFSymbol\CYROT{"047E}
+\DeclareUTFSymbol\cyrot{"047F}
+\DeclareUTFSymbol\CYRKOPPA{"0480}
+\DeclareUTFSymbol\cyrkoppa{"0481}
+\DeclareUTFSymbol\cyrthousands{"0482}
+\DeclareUTFSymbol\CYRISHRTDSC{"048A}
+\DeclareUTFSymbol\cyrishrtdsc{"048B}
+\DeclareUTFSymbol\CYRSEMISFTSN{"048C}
+\DeclareUTFSymbol\cyrsemisftsn{"048D}
+\DeclareUTFSymbol\CYRRTICK{"048E}
+\DeclareUTFSymbol\cyrrtick{"048F}
+\DeclareUTFSymbol\CYRGUP{"0490}
+\DeclareUTFSymbol\cyrgup{"0491}
+\DeclareUTFSymbol\CYRGHCRS{"0492}
+\DeclareUTFSymbol\cyrghcrs{"0493}
+\DeclareUTFSymbol\CYRGHK{"0494}
+\DeclareUTFSymbol\cyrghk{"0495}
+\DeclareUTFSymbol\CYRZHDSC{"0496}
+\DeclareUTFSymbol\cyrzhdsc{"0497}
+\DeclareUTFSymbol\CYRZDSC{"0498}
+\DeclareUTFCompositeSymbol\c{\CYRZ}{"0498}
+\DeclareUTFSymbol\cyrzdsc{"0499}
+\DeclareUTFCompositeSymbol\c{\cyrz}{"0499}
+\DeclareUTFSymbol\CYRKDSC{"049A}
+\DeclareUTFSymbol\cyrkdsc{"049B}
+\DeclareUTFSymbol\CYRKVCRS{"049C}
+\DeclareUTFSymbol\cyrkvcrs{"049D}
+\DeclareUTFSymbol\CYRKHCRS{"049E}
+\DeclareUTFSymbol\cyrkhcrs{"049F}
+\DeclareUTFSymbol\CYRKBEAK{"04A0}
+\DeclareUTFSymbol\cyrkbeak{"04A1}
+\DeclareUTFSymbol\CYRNDSC{"04A2}
+\DeclareUTFSymbol\cyrndsc{"04A3}
+\DeclareUTFSymbol\CYRNG{"04A4}
+\DeclareUTFSymbol\cyrng{"04A5}
+\DeclareUTFSymbol\CYRPHK{"04A6}
+\DeclareUTFSymbol\cyrphk{"04A7}
+\DeclareUTFSymbol\CYRABHHA{"04A8}
+\DeclareUTFSymbol\cyrabhha{"04A9}
+\DeclareUTFSymbol\CYRSDSC{"04AA}
+\DeclareUTFCompositeSymbol\CYRSDSC{\CYRS}{"04AA}
+\DeclareUTFSymbol\cyrsdsc{"04AB}
+\DeclareUTFCompositeSymbol\k{\cyrs}{"04AB}
+\DeclareUTFSymbol\CYRTDSC{"04AC}
+\DeclareUTFSymbol\cyrtdsc{"04AD}
+\DeclareUTFSymbol\CYRY{"04AE}
+\DeclareUTFSymbol\cyry{"04AF}
+\DeclareUTFSymbol\CYRYHCRS{"04B0}
+\DeclareUTFSymbol\cyryhcrs{"04B1}
+\DeclareUTFSymbol\CYRHDSC{"04B2}
+\DeclareUTFSymbol\cyrhdsc{"04B3}
+\DeclareUTFSymbol\CYRTETSE{"04B4}
+\DeclareUTFSymbol\cyrtetse{"04B5}
+\DeclareUTFSymbol\CYRCHRDSC{"04B6}
+\DeclareUTFSymbol\cyrchrdsc{"04B7}
+\DeclareUTFSymbol\CYRCHVCRS{"04B8}
+\DeclareUTFSymbol\cyrchvcrs{"04B9}
+\DeclareUTFSymbol\CYRSHHA{"04BA}
+\DeclareUTFSymbol\cyrshha{"04BB}
+\DeclareUTFSymbol\CYRABHCH{"04BC}
+\DeclareUTFSymbol\cyrabhch{"04BD}
+\DeclareUTFSymbol\CYRABHCHDSC{"04BE}
+\DeclareUTFCompositeSymbol\k{\CYRABHCH}{"04BE}
+\DeclareUTFSymbol\cyrabhchdsc{"04BF}
+\DeclareUTFCompositeSymbol\k{\cyrabhch}{"04BF}
+\DeclareUTFSymbol\CYRpalochka{"04C0}
+\DeclareUTFCompositeSymbol\U{\CYRZH}{"04C1}
+\DeclareUTFCompositeSymbol\U{\cyrzh}{"04C2}
+\DeclareUTFSymbol\CYRKHK{"04C3}
+\DeclareUTFSymbol\cyrkhk{"04C4}
+\DeclareUTFSymbol\CYRLDSC{"04C5}
+\DeclareUTFSymbol\cyrldsc{"04C6}
+\DeclareUTFSymbol\CYRNHK{"04C7}
+\DeclareUTFSymbol\cyrnhk{"04C8}
+\DeclareUTFSymbol\CYRCHLDSC{"04CB}
+\DeclareUTFSymbol\cyrchldsc{"04CC}
+\DeclareUTFSymbol\CYRMDSC{"04CD}
+\DeclareUTFSymbol\cyrmdsc{"04CE}
+\DeclareUTFCompositeSymbol\U{\CYRA}{"04D0}
+\DeclareUTFCompositeSymbol\U{\cyra}{"04D1}
+\DeclareUTFCompositeSymbol\"{\CYRA}{"04D2}
+\DeclareUTFCompositeSymbol\"{\cyra}{"04D3}
+\DeclareUTFSymbol\CYRAE{"04D4}
+\DeclareUTFSymbol\cyrae{"04D5}
+\DeclareUTFCompositeSymbol\U{\CYRE}{"04D6}
+\DeclareUTFCompositeSymbol\U{\cyre}{"04D7}
+\DeclareUTFSymbol\CYRSCHWA{"04D8}
+\DeclareUTFSymbol\cyrschwa{"04D9}
+\DeclareUTFCompositeSymbol\"{\CYRSCHWA}{"04DA}
+\DeclareUTFCompositeSymbol\"{\cyrschwa}{"04DB}
+\DeclareUTFCompositeSymbol\"{\CYRZH}{"04DC}
+\DeclareUTFCompositeSymbol\"{\cyrzh}{"04DD}
+\DeclareUTFCompositeSymbol\"{\CYRZ}{"04DE}
+\DeclareUTFCompositeSymbol\"{\cyrz}{"04DF}
+\DeclareUTFSymbol\CYRABHDZE{"04E0}
+\DeclareUTFSymbol\cyrabhdze{"04E1}
+\DeclareUTFCompositeSymbol\={\CYRI}{"04E2}
+\DeclareUTFCompositeSymbol\={\cyri}{"04E3}
+\DeclareUTFCompositeSymbol\"{\CYRI}{"04E4}
+\DeclareUTFCompositeSymbol\"{\cyri}{"04E5}
+\DeclareUTFCompositeSymbol\"{\CYRO}{"04E6}
+\DeclareUTFCompositeSymbol\"{\cyro}{"04E7}
+\DeclareUTFSymbol\CYROTLD{"04E8}
+\DeclareUTFSymbol\cyrotld{"04E9}
+\DeclareUTFCompositeSymbol\"{\CYROTLD}{"04EA}
+\DeclareUTFCompositeSymbol\"{\cyrotld}{"04EB}
+\DeclareUTFCompositeSymbol\"{\CYREREV}{"04EC}
+\DeclareUTFCompositeSymbol\"{\cyreref}{"04ED}
+\DeclareUTFCompositeSymbol\={\CYRU}{"04EE}
+\DeclareUTFCompositeSymbol\={\cyru}{"04EF}
+\DeclareUTFCompositeSymbol\"{\CYRU}{"04F0}
+\DeclareUTFCompositeSymbol\"{\cyru}{"04F1}
+\DeclareUTFCompositeSymbol\H{\CYRU}{"04F2}
+\DeclareUTFCompositeSymbol\H{\cyru}{"04F3}
+\DeclareUTFCompositeSymbol\"{\CYRCH}{"04F4}
+\DeclareUTFCompositeSymbol\"{\cyrch}{"04F5}
+\DeclareUTFSymbol\CYRGDSC{"04F6}
+\DeclareUTFSymbol\cyrgdsc{"04F7}
+\DeclareUTFCompositeSymbol\"{\CYRERY}{"04F8}
+\DeclareUTFCompositeSymbol\"{\cyrery}{"04F9}
+\DeclareUTFSymbol\CYRHHK{"04FC}
+\DeclareUTFSymbol\cyrhhk{"04FD}
+\DeclareUTFSymbol\sofpasuq{"05C3}
+\DeclareUTFSymbol\hebalef{"05D0}
+\DeclareUTFSymbol\hebbet{"05D1}
+\DeclareUTFSymbol\hebgimel{"05D2}
+\DeclareUTFSymbol\hebdalet{"05D3}
+\DeclareUTFSymbol\hebhe{"05D4}
+\DeclareUTFSymbol\hebvav{"05D5}
+\DeclareUTFSymbol\hebzayin{"05D6}
+\DeclareUTFSymbol\hebhet{"05D7}
+\DeclareUTFSymbol\hebtet{"05D8}
+\DeclareUTFSymbol\hebyod{"05D9}
+\DeclareUTFSymbol\hebfinalkaf{"05DA}
+\DeclareUTFSymbol\hebkaf{"05DB}
+\DeclareUTFSymbol\heblamed{"05DC}
+\DeclareUTFSymbol\hebfinalmem{"05DD}
+\DeclareUTFSymbol\hebmem{"05DE}
+\DeclareUTFSymbol\hebfinalnun{"05DF}
+\DeclareUTFSymbol\hebnun{"05E0}
+\DeclareUTFSymbol\hebsamekh{"05E1}
+\DeclareUTFSymbol\hebayin{"05E2}
+\DeclareUTFSymbol\hebfinalpe{"05E3}
+\DeclareUTFSymbol\hebpe{"05E4}
+\DeclareUTFSymbol\hebfinaltsadi{"05E5}
+\DeclareUTFSymbol\hebtsadi{"05E6}
+\DeclareUTFSymbol\hebqof{"05E7}
+\DeclareUTFSymbol\hebresh{"05E8}
+\DeclareUTFSymbol\hebshin{"05E9}
+\DeclareUTFSymbol\hebtav{"05EA}
+\DeclareUTFSymbol\doublevav{"05F0}
+\DeclareUTFSymbol\vavyod{"05F1}
+\DeclareUTFSymbol\doubleyod{"05F2}
+\DeclareUTFSymbol\textscd{"1D05}
+\DeclareUTFSymbol\textPUsck{"1D0B}
+\DeclareUTFSymbol\textPUscm{"1D0D}
+\DeclareUTFSymbol\textPUscp{"1D18}
+\DeclareUTFSymbol\textPUrevscr{"1D19}
+\DeclareUTFSymbol\textiinferior{"1D62}
+\DeclareUTFSymbol\textrinferior{"1D63}
+\DeclareUTFSymbol\textuinferior{"1D64}
+\DeclareUTFSymbol\textvinferior{"1D65}
+\DeclareUTFSymbol\textbetainferior{"1D66}
+\DeclareUTFSymbol\textgammainferior{"1D67}
+\DeclareUTFSymbol\textrhoinferior{"1D68}
+\DeclareUTFSymbol\textphiinferior{"1D69}
+\DeclareUTFSymbol\textchiinferior{"1D6A}
+\DeclareUTFSymbol\textbarsci{"1D7B}
+\DeclareUTFSymbol\textbarp{"1D7D}
+\DeclareUTFSymbol\textbarscu{"1D7E}
+\DeclareUTFSymbol\textPUrhooka{"1D8F}
+\DeclareUTFSymbol\textPUrhooke{"1D92}
+\DeclareUTFSymbol\textPUrhookepsilon{"1D93}
+\DeclareUTFSymbol\textPUrhookopeno{"1D97}
+\DeclareUTFCompositeSymbol\textsubbreve{H}{"1E2A}
+\DeclareUTFCompositeSymbol\textsubbreve{h}{"1E2B}
+\DeclareUTFCompositeSymbol\.{\textlongs}{"1E9B}
+\DeclareUTFSymbol\textcompwordmark{"200C}
+\DeclareUTFSymbol\texthdotfor{"2025}
+\DeclareUTFSymbol\textprime{"2032}
+\DeclareUTFSymbol\textsecond{"2033}
+\DeclareUTFSymbol\textthird{"2034}
+\DeclareUTFSymbol\textbackprime{"2035}
+\DeclareUTFSymbol\textlefttherefore{"2056}
+\DeclareUTFSymbol\textfourth{"2057}
+\DeclareUTFSymbol\textdiamonddots{"2058}
+\DeclareUTFSymbol\textzerosuperior{"2070}
+\DeclareUTFSymbol\textisuperior{"2071}
+\DeclareUTFSymbol\textfoursuperior{"2074}
+\DeclareUTFSymbol\textfivesuperior{"2075}
+\DeclareUTFSymbol\textsixsuperior{"2076}
+\DeclareUTFSymbol\textsevensuperior{"2077}
+\DeclareUTFSymbol\texteightsuperior{"2078}
+\DeclareUTFSymbol\textninesuperior{"2079}
+\DeclareUTFSymbol\textplussuperior{"207A}
+\DeclareUTFSymbol\textminussuperior{"207B}
+\DeclareUTFSymbol\textequalsuperior{"207C}
+\DeclareUTFSymbol\textparenleftsuperior{"207D}
+\DeclareUTFSymbol\textparenrightsuperior{"207E}
+\DeclareUTFSymbol\textnsuperior{"207F}
+\DeclareUTFSymbol\textzeroinferior{"2080}
+\DeclareUTFSymbol\textoneinferior{"2081}
+\DeclareUTFSymbol\texttwoinferior{"2082}
+\DeclareUTFSymbol\textthreeinferior{"2083}
+\DeclareUTFSymbol\textfourinferior{"2084}
+\DeclareUTFSymbol\textfiveinferior{"2085}
+\DeclareUTFSymbol\textsixinferior{"2086}
+\DeclareUTFSymbol\textseveninferior{"2087}
+\DeclareUTFSymbol\texteightinferior{"2088}
+\DeclareUTFSymbol\textnineinferior{"2089}
+\DeclareUTFSymbol\textplusinferior{"208A}
+\DeclareUTFSymbol\textminusinferior{"208B}
+\DeclareUTFSymbol\textequalsinferior{"208C}
+\DeclareUTFSymbol\textparenleftinferior{"208D}
+\DeclareUTFSymbol\textparenrightinferior{"208E}
+\DeclareUTFSymbol\textainferior{"2090}
+\DeclareUTFSymbol\texteinferior{"2091}
+\DeclareUTFSymbol\textoinferior{"2092}
+\DeclareUTFSymbol\textxinferior{"2093}
+\DeclareUTFSymbol\textschwainferior{"2094}
+\DeclareUTFSymbol\texthinferior{"2095}
+\DeclareUTFSymbol\textkinferior{"2096}
+\DeclareUTFSymbol\textlinferior{"2097}
+\DeclareUTFSymbol\textminferior{"2098}
+\DeclareUTFSymbol\textninferior{"2099}
+\DeclareUTFSymbol\textpinferior{"209A}
+\DeclareUTFSymbol\textsinferior{"209B}
+\DeclareUTFSymbol\texttinferior{"209C}
+\DeclareUTFSymbol\textpeseta{"20A7}
+\DeclareUTFSymbol\textDeleatur{"20B0}
+\DeclareUTFSymbol\textguarani{"20B2}
+\DeclareUTFSymbol\texthslash{"210F}
+\DeclareUTFSymbol\textIm{"2111}
+\DeclareUTFSymbol\textell{"2113}
+\DeclareUTFSymbol\textwp{"2118}
+\DeclareUTFSymbol\textRe{"211C}
+\DeclareUTFSymbol\textriota{"2129}
+\DeclareUTFSymbol\textangstrom{"212B}
+\DeclareUTFSymbol\textFinv{"2132}
+\DeclareUTFSymbol\textaleph{"2135}
+\DeclareUTFSymbol\textbeth{"2136}
+\DeclareUTFSymbol\textdaleth{"2138}
+\DeclareUTFSymbol\textfax{"213B}
+\DeclareUTFSymbol\textGame{"2141}
+\DeclareUTFSymbol\textinvamp{"214B}
+\DeclareUTFSymbol\textoneseventh{"2150}
+\DeclareUTFSymbol\textoneninth{"2151}
+\DeclareUTFSymbol\textonetenth{"2152}
+\DeclareUTFSymbol\textonethird{"2153}
+\DeclareUTFSymbol\texttwothirds{"2154}
+\DeclareUTFSymbol\textonefifth{"2155}
+\DeclareUTFSymbol\texttwofifths{"2156}
+\DeclareUTFSymbol\textthreefifths{"2157}
+\DeclareUTFSymbol\textfourfifths{"2158}
+\DeclareUTFSymbol\textonesixth{"2159}
+\DeclareUTFSymbol\textfivesixths{"215A}
+\DeclareUTFSymbol\textoneeighth{"215B}
+\DeclareUTFSymbol\textthreeeighths{"215C}
+\DeclareUTFSymbol\textfiveeighths{"215D}
+\DeclareUTFSymbol\textseveneighths{"215E}
+\DeclareUTFSymbol\textrevc{"2184}
+\DeclareUTFSymbol\textzerothirds{"2189}
+\DeclareUTFSymbol\textnleftarrow{"219A}
+\DeclareUTFSymbol\textnrightarrow{"219B}
+\DeclareUTFSymbol\texttwoheadleftarrow{"219E}
+\DeclareUTFCommand\textntwoheadleftarrow{\textlstrikethru\texttwoheadleftarrow}
+\DeclareUTFSymbol\texttwoheaduparrow{"219F}
+\DeclareUTFSymbol\texttwoheadrightarrow{"21A0}
+\DeclareUTFCommand\textntwoheadrightarrow{\textlstrikethru\texttwoheadrightarrow}
+\DeclareUTFSymbol\texttwoheaddownarrow{"21A1}
+\DeclareUTFSymbol\textleftarrowtail{"21A2}
+\DeclareUTFSymbol\textrightarrowtail{"21A3}
+\DeclareUTFSymbol\textmapsto{"21A6}
+\DeclareUTFSymbol\texthookleftarrow{"21A9}
+\DeclareUTFSymbol\texthookrightarrow{"21AA}
+\DeclareUTFSymbol\textlooparrowleft{"21AB}
+\DeclareUTFSymbol\textlooparrowright{"21AC}
+\DeclareUTFSymbol\textnleftrightarrow{"21AE}
+\DeclareUTFSymbol\textlightning{"21AF}
+\DeclareUTFSymbol\textdlsh{"21B5}
+\DeclareUTFSymbol\textcurvearrowleft{"21B6}
+\DeclareUTFSymbol\textcurvearrowright{"21B7}
+\DeclareUTFSymbol\textleftharpoonup{"21BC}
+\DeclareUTFSymbol\textleftharpoondown{"21BD}
+\DeclareUTFSymbol\textupharpoonright{"21BE}
+\DeclareUTFSymbol\textupharpoonleft{"21BF}
+\DeclareUTFSymbol\textrightharpoonup{"21C0}
+\DeclareUTFSymbol\textrightharpoondown{"21C1}
+\DeclareUTFSymbol\textdownharpoonright{"21C2}
+\DeclareUTFSymbol\textdownharpoonleft{"21C3}
+\DeclareUTFSymbol\textrightleftarrows{"21C4}
+\DeclareUTFSymbol\textupdownarrows{"21C5}
+\DeclareUTFSymbol\textleftrightarrows{"21C6}
+\DeclareUTFSymbol\textleftleftarrows{"21C7}
+\DeclareUTFSymbol\textupuparrows{"21C8}
+\DeclareUTFSymbol\textrightrightarrows{"21C9}
+\DeclareUTFSymbol\textdowndownarrows{"21CA}
+\DeclareUTFSymbol\textleftrightharpoons{"21CB}
+\DeclareUTFSymbol\textrightleftharpoons{"21CC}
+\DeclareUTFSymbol\textnLeftarrow{"21CD}
+\DeclareUTFSymbol\textnLeftrightarrow{"21CE}
+\DeclareUTFSymbol\textnRightarrow{"21CF}
+\DeclareUTFSymbol\textLeftarrow{"21D0}
+\DeclareUTFSymbol\textUparrow{"21D1}
+\DeclareUTFSymbol\textRightarrow{"21D2}
+\DeclareUTFSymbol\textDownarrow{"21D3}
+\DeclareUTFSymbol\textLeftrightarrow{"21D4}
+\DeclareUTFSymbol\textUpdownarrow{"21D5}
+\DeclareUTFSymbol\textNwarrow{"21D6}
+\DeclareUTFSymbol\textNearrow{"21D7}
+\DeclareUTFSymbol\textSearrow{"21D8}
+\DeclareUTFSymbol\textSwarrow{"21D9}
+\DeclareUTFSymbol\textLleftarrow{"21DA}
+\DeclareUTFSymbol\textRrightarrow{"21DB}
+\DeclareUTFSymbol\textleftsquigarrow{"21DC}
+\DeclareUTFSymbol\textrightsquigarrow{"21DD}
+\DeclareUTFSymbol\textdashleftarrow{"21E0}
+\DeclareUTFSymbol\textdasheduparrow{"21E1}
+\DeclareUTFSymbol\textdashrightarrow{"21E2}
+\DeclareUTFSymbol\textdasheddownarrow{"21E3}
+\DeclareUTFSymbol\textpointer{"21E8}
+\DeclareUTFSymbol\textdownuparrows{"21F5}
+\DeclareUTFSymbol\textleftarrowtriangle{"21FD}
+\DeclareUTFSymbol\textrightarrowtriangle{"21FE}
+\DeclareUTFSymbol\textleftrightarrowtriangle{"21FF}
+\DeclareUTFSymbol\textforall{"2200}
+\DeclareUTFSymbol\textcomplement{"2201}
+\DeclareUTFSymbol\textpartial{"2202}
+\DeclareUTFSymbol\textexists{"2203}
+\DeclareUTFSymbol\textnexists{"2204}
+\DeclareUTFSymbol\textemptyset{"2205}
+\DeclareUTFSymbol\texttriangle{"2206}
+\DeclareUTFSymbol\textnabla{"2207}
+\DeclareUTFSymbol\textin{"2208}
+\DeclareUTFSymbol\textnotin{"2209}
+\DeclareUTFSymbol\textsmallin{"220A}
+\DeclareUTFSymbol\textni{"220B}
+\DeclareUTFSymbol\textnotowner{"220C}
+\DeclareUTFSymbol\textsmallowns{"220D}
+\DeclareUTFSymbol\textprod{"220F}
+\DeclareUTFSymbol\textamalg{"2210}
+\DeclareUTFSymbol\textsum{"2211}
+\DeclareUTFSymbol\textmp{"2213}
+\DeclareUTFSymbol\textdotplus{"2214}
+\DeclareUTFSymbol\textDivides{"2215}
+\DeclareUTFSymbol\textsetminus{"2216}
+\DeclareUTFSymbol\textast{"2217}
+\DeclareUTFSymbol\textcirc{"2218}
+\DeclareUTFSymbol\textbulletoperator{"2219}
+\DeclareUTFSymbol\textpropto{"221D}
+\DeclareUTFSymbol\textinfty{"221E}
+\DeclareUTFSymbol\textangle{"2220}
+\DeclareUTFSymbol\textmeasuredangle{"2221}
+\DeclareUTFSymbol\textsphericalangle{"2222}
+\DeclareUTFSymbol\textmid{"2223}
+\DeclareUTFSymbol\textnmid{"2224}
+\DeclareUTFSymbol\textparallel{"2225}
+\DeclareUTFSymbol\textnparallel{"2226}
+\DeclareUTFSymbol\textwedge{"2227}
+\DeclareUTFCommand\textowedge{\textcircled\textwedge}
+\DeclareUTFSymbol\textvee{"2228}
+\DeclareUTFCommand\textovee{\textcircled\textvee}
+\DeclareUTFSymbol\textcap{"2229}
+\DeclareUTFSymbol\textcup{"222A}
+\DeclareUTFSymbol\textint{"222B}
+\DeclareUTFSymbol\textiint{"222C}
+\DeclareUTFSymbol\textiiint{"222D}
+\DeclareUTFSymbol\textoint{"222E}
+\DeclareUTFSymbol\textoiint{"222F}
+\DeclareUTFSymbol\textointclockwise{"2232}
+\DeclareUTFSymbol\textointctrclockwise{"2233}
+\DeclareUTFSymbol\texttherefore{"2234}
+\DeclareUTFSymbol\textbecause{"2235}
+\DeclareUTFSymbol\textvdotdot{"2236}
+\DeclareUTFSymbol\textsquaredots{"2237}
+\DeclareUTFSymbol\textdotminus{"2238}
+\DeclareUTFSymbol\texteqcolon{"2239}
+\DeclareUTFSymbol\textsim{"223C}
+\DeclareUTFSymbol\textbacksim{"223D}
+\DeclareUTFCommand\textnbacksim{\textlstrikethru\textnbacksim}
+\DeclareUTFSymbol\textwr{"2240}
+\DeclareUTFSymbol\textnsim{"2241}
+\DeclareUTFSymbol\texteqsim{"2242}
+\DeclareUTFCommand\textneqsim{\textlstrikethru\texteqsim}
+\DeclareUTFSymbol\textsimeq{"2243}
+\DeclareUTFSymbol\textnsimeq{"2244}
+\DeclareUTFSymbol\textcong{"2245}
+\DeclareUTFSymbol\textncong{"2247}
+\DeclareUTFSymbol\textapprox{"2248}
+\DeclareUTFSymbol\textnapprox{"2249}
+\DeclareUTFSymbol\textapproxeq{"224A}
+\DeclareUTFCommand\textnapproxeq{\textlstrikethru\textapproxeq}
+\DeclareUTFSymbol\texttriplesim{"224B}
+\DeclareUTFCommand\textntriplesim{\textlstrikethru\texttriplesim}
+\DeclareUTFSymbol\textbackcong{"224C}
+\DeclareUTFCommand\textnbackcong{\textlstrikethru\textbackcong}
+\DeclareUTFSymbol\textasymp{"224D}
+\DeclareUTFCommand\textnasymp{\textlstrikethru\textasymp}
+\DeclareUTFSymbol\textBumpeq{"224E}
+\DeclareUTFCommand\textnBumpeq{\textlstrikethru\textBumpeq}
+\DeclareUTFSymbol\textbumpeq{"224F}
+\DeclareUTFCommand\textnbumpeq{\textlstrikethru\textbumpeq}
+\DeclareUTFSymbol\textdoteq{"2250}
+\DeclareUTFCommand\textndoteq{\textlstrikethru\textdoteq}
+\DeclareUTFSymbol\textdoteqdot{"2251}
+\DeclareUTFCommand\textnDoteq{\textlstrikethru\textdoteqdot}
+\DeclareUTFSymbol\textfallingdoteq{"2252}
+\DeclareUTFCommand\textnfallingdoteq{\textlstrikethru\textfallingdoteq}
+\DeclareUTFSymbol\textrisingdoteq{"2253}
+\DeclareUTFCommand\textnrisingdoteq{\textlstrikethru\textrisingdoteq}
+\DeclareUTFSymbol\textcolonequals{"2254}
+\DeclareUTFSymbol\textequalscolon{"2255}
+\DeclareUTFSymbol\texteqcirc{"2256}
+\DeclareUTFCommand\textneqcirc{\textlstrikethru\texteqcirc}
+\DeclareUTFSymbol\textcirceq{"2257}
+\DeclareUTFCommand\textncirceq{\textlstrikethru\textcirceq}
+\DeclareUTFSymbol\texthateq{"2259}
+\DeclareUTFCommand\textnhateq{\textlstrikethru\texthateq}
+\DeclareUTFSymbol\texttriangleeq{"225C}
+\DeclareUTFSymbol\textneq{"2260}
+\DeclareUTFSymbol\textne{"2260}
+\DeclareUTFSymbol\textequiv{"2261}
+\DeclareUTFSymbol\textnequiv{"2262}
+\DeclareUTFSymbol\textleq{"2264}
+\DeclareUTFSymbol\textle{"2264}
+\DeclareUTFSymbol\textgeq{"2265}
+\DeclareUTFSymbol\textge{"2265}
+\DeclareUTFSymbol\textleqq{"2266}
+\DeclareUTFCommand\textnleqq{\textlstrikethru\textleqq}
+\DeclareUTFSymbol\textgeqq{"2267}
+\DeclareUTFCommand\textngeqq{\textlstrikethru\textgeqq}
+\DeclareUTFSymbol\textlneqq{"2268}
+\DeclareUTFSymbol\textgneqq{"2269}
+\DeclareUTFSymbol\textll{"226A}
+\DeclareUTFCommand\textnll{\textlstrikethru\textll}
+\DeclareUTFSymbol\textgg{"226B}
+\DeclareUTFCommand\textngg{\textlstrikethru\textgg}
+\DeclareUTFSymbol\textbetween{"226C}
+\DeclareUTFSymbol\textnless{"226E}
+\DeclareUTFSymbol\textngtr{"226F}
+\DeclareUTFSymbol\textnleq{"2270}
+\DeclareUTFSymbol\textngeq{"2271}
+\DeclareUTFSymbol\textlesssim{"2272}
+\DeclareUTFSymbol\textgtrsim{"2273}
+\DeclareUTFSymbol\textnlesssim{"2274}
+\DeclareUTFSymbol\textngtrsim{"2275}
+\DeclareUTFSymbol\textlessgtr{"2276}
+\DeclareUTFSymbol\textgtrless{"2277}
+\DeclareUTFSymbol\textngtrless{"2278}
+\DeclareUTFSymbol\textnlessgtr{"2279}
+\DeclareUTFSymbol\textprec{"227A}
+\DeclareUTFSymbol\textsucc{"227B}
+\DeclareUTFSymbol\textpreccurlyeq{"227C}
+\DeclareUTFSymbol\textsucccurlyeq{"227D}
+\DeclareUTFSymbol\textprecsim{"227E}
+\DeclareUTFCommand\textnprecsim{\textlstrikethru\textprecsim}
+\DeclareUTFSymbol\textsuccsim{"227F}
+\DeclareUTFCommand\textnsuccsim{\textlstrikethru\textsuccsim}
+\DeclareUTFSymbol\textnprec{"2280}
+\DeclareUTFSymbol\textnsucc{"2281}
+\DeclareUTFSymbol\textsubset{"2282}
+\DeclareUTFSymbol\textsupset{"2283}
+\DeclareUTFSymbol\textnsubset{"2284}
+\DeclareUTFSymbol\textnsupset{"2285}
+\DeclareUTFSymbol\textsubseteq{"2286}
+\DeclareUTFSymbol\textsupseteq{"2287}
+\DeclareUTFSymbol\textnsubseteq{"2288}
+\DeclareUTFSymbol\textnsupseteq{"2289}
+\DeclareUTFSymbol\textsubsetneq{"228A}
+\DeclareUTFSymbol\textsupsetneq{"228B}
+\DeclareUTFSymbol\textcupdot{"228D}
+\DeclareUTFSymbol\textcupplus{"228E}
+\DeclareUTFSymbol\textsqsubset{"228F}
+\DeclareUTFCommand\textnsqsubset{\textlstrikethru\textsqsubset}
+\DeclareUTFSymbol\textsqsupset{"2290}
+\DeclareUTFCommand\textnsqsupset{\textlstrikethru\textsqsupset}
+\DeclareUTFSymbol\textsqsubseteq{"2291}
+\DeclareUTFCommand\textnsqsubseteq{\textlstrikethru\textsqsubseteq}
+\DeclareUTFSymbol\textsqsupseteq{"2292}
+\DeclareUTFCommand\textnsqsupseteq{\textlstrikethru\textsqsupseteq}
+\DeclareUTFSymbol\textsqcap{"2293}
+\DeclareUTFSymbol\textsqcup{"2294}
+\DeclareUTFSymbol\textoplus{"2295}
+\DeclareUTFSymbol\textominus{"2296}
+\DeclareUTFSymbol\textotimes{"2297}
+\DeclareUTFSymbol\textoslash{"2298}
+\DeclareUTFSymbol\textodot{"2299}
+\DeclareUTFSymbol\textcircledcirc{"229A}
+\DeclareUTFSymbol\textcircledast{"229B}
+\DeclareUTFSymbol\textcircleddash{"229D}
+\DeclareUTFSymbol\textboxplus{"229E}
+\DeclareUTFSymbol\textboxminus{"229F}
+\DeclareUTFSymbol\textboxtimes{"22A0}
+\DeclareUTFSymbol\textboxdot{"22A1}
+\DeclareUTFSymbol\textvdash{"22A2}
+\DeclareUTFSymbol\textdashv{"22A3}
+\DeclareUTFCommand\textndashv{\textlstrikethru\textdashv}
+\DeclareUTFSymbol\texttop{"22A4}
+\DeclareUTFCommand\textndownvdash{\textlstrikethru\texttop}
+\DeclareUTFSymbol\textbot{"22A5}
+\DeclareUTFCommand\textnupvdash{\textlstrikethru\textbot}
+\DeclareUTFSymbol\textvDash{"22A8}
+\DeclareUTFSymbol\textVdash{"22A9}
+\DeclareUTFSymbol\textVvdash{"22AA}
+\DeclareUTFCommand\textnVvash{\textlstrikethru\textVvdash}
+\DeclareUTFSymbol\textVDash{"22AB}
+\DeclareUTFSymbol\textnvdash{"22AC}
+\DeclareUTFSymbol\textnvDash{"22AD}
+\DeclareUTFSymbol\textnVdash{"22AE}
+\DeclareUTFSymbol\textnVDash{"22AF}
+\DeclareUTFSymbol\textlhd{"22B2}
+\DeclareUTFSymbol\textrhd{"22B3}
+\DeclareUTFSymbol\textunlhd{"22B4}
+\DeclareUTFSymbol\textunrhd{"22B5}
+\DeclareUTFSymbol\textmultimapdotbothA{"22B6}
+\DeclareUTFSymbol\textmultimapdotbothB{"22B7}
+\DeclareUTFSymbol\textmultimap{"22B8}
+\DeclareUTFSymbol\textveebar{"22BB}
+\DeclareUTFSymbol\textbarwedge{"22BC}
+\DeclareUTFSymbol\textstar{"22C6}
+\DeclareUTFSymbol\textdivideontimes{"22C7}
+\DeclareUTFSymbol\textbowtie{"22C8}
+\DeclareUTFSymbol\textltimes{"22C9}
+\DeclareUTFSymbol\textrtimes{"22CA}
+\DeclareUTFSymbol\textleftthreetimes{"22CB}
+\DeclareUTFSymbol\textrightthreetimes{"22CC}
+\DeclareUTFSymbol\textbacksimeq{"22CD}
+\DeclareUTFCommand\textnbacksimeq{\textlstrikethru\textbacksimeq}
+\DeclareUTFSymbol\textcurlyvee{"22CE}
+\DeclareUTFSymbol\textcurlywedge{"22CF}
+\DeclareUTFSymbol\textSubset{"22D0}
+\DeclareUTFCommand\textnSubset{\textlstrikethru\textSubset}
+\DeclareUTFSymbol\textSupset{"22D1}
+\DeclareUTFCommand\textnSupset{\textlstrikethru\textSupset}
+\DeclareUTFSymbol\textCap{"22D2}
+\DeclareUTFSymbol\textCup{"22D3}
+\DeclareUTFSymbol\textpitchfork{"22D4}
+\DeclareUTFSymbol\textlessdot{"22D6}
+\DeclareUTFSymbol\textgtrdot{"22D7}
+\DeclareUTFSymbol\textlll{"22D8}
+\DeclareUTFSymbol\textggg{"22D9}
+\DeclareUTFSymbol\textlesseqgtr{"22DA}
+\DeclareUTFSymbol\textgtreqless{"22DB}
+\DeclareUTFSymbol\textcurlyeqprec{"22DE}
+\DeclareUTFCommand\textncurlyeqprec{\textlstrikethru\textcurlyeqprec}
+\DeclareUTFSymbol\textcurlyeqsucc{"22DF}
+\DeclareUTFCommand\textncurlyeqsucc{\textlstrikethru\textcurlyeqsucc}
+\DeclareUTFSymbol\textnpreccurlyeq{"22E0}
+\DeclareUTFSymbol\textnsucccurlyeq{"22E1}
+\DeclareUTFSymbol\textnqsubseteq{"22E2}
+\DeclareUTFSymbol\textnqsupseteq{"22E3}
+\DeclareUTFSymbol\textsqsubsetneq{"22E4}
+\DeclareUTFSymbol\textsqsupsetneq{"22E5}
+\DeclareUTFSymbol\textlnsim{"22E6}
+\DeclareUTFSymbol\textgnsim{"22E7}
+\DeclareUTFSymbol\textprecnsim{"22E8}
+\DeclareUTFSymbol\textsuccnsim{"22E9}
+\DeclareUTFSymbol\textntriangleleft{"22EA}
+\DeclareUTFSymbol\textntriangleright{"22EB}
+\DeclareUTFSymbol\textntrianglelefteq{"22EC}
+\DeclareUTFSymbol\textntrianglerighteq{"22ED}
+\DeclareUTFSymbol\textvdots{"22EE}
+\DeclareUTFSymbol\textcdots{"22EF}
+\DeclareUTFSymbol\textudots{"22F0}
+\DeclareUTFSymbol\textddots{"22F1}
+\DeclareUTFSymbol\textbarin{"22F6}
+\DeclareUTFSymbol\textdiameter{"2300}
+\DeclareUTFSymbol\textbackneg{"2310}
+\DeclareUTFSymbol\textwasylozenge{"2311}
+\DeclareUTFSymbol\textinvbackneg{"2319}
+\DeclareUTFSymbol\textclock{"231A}
+\DeclareUTFSymbol\textulcorner{"231C}
+\DeclareUTFSymbol\texturcorner{"231D}
+\DeclareUTFSymbol\textllcorner{"231E}
+\DeclareUTFSymbol\textlrcorner{"231F}
+\DeclareUTFSymbol\textfrown{"2322}
+\DeclareUTFSymbol\textsmile{"2323}
+\DeclareUTFSymbol\textKeyboard{"2328}
+\DeclareUTFSymbol\textlangle{"2329}
+\DeclareUTFSymbol\textrangle{"232A}
+\DeclareUTFSymbol\textAPLinv{"2339}
+\DeclareUTFSymbol\textTumbler{"233C}
+\DeclareUTFSymbol\textstmaryrdbaro{"233D}
+\DeclareUTFSymbol\textnotslash{"233F}
+\DeclareUTFSymbol\textnotbackslash{"2340}
+\DeclareUTFSymbol\textboxbackslash{"2342}
+\DeclareUTFSymbol\textAPLleftarrowbox{"2347}
+\DeclareUTFSymbol\textAPLrightarrowbox{"2348}
+\DeclareUTFSymbol\textAPLuparrowbox{"2350}
+\DeclareUTFSymbol\textAPLdownarrowbox{"2357}
+\DeclareUTFSymbol\textAPLinput{"235E}
+\DeclareUTFSymbol\textRequest{"2370}
+\DeclareUTFSymbol\textBeam{"2393}
+\DeclareUTFSymbol\texthexagon{"2394}
+\DeclareUTFSymbol\textAPLbox{"2395}
+\DeclareUTFSymbol\textForwardToIndex{"23ED}
+\DeclareUTFSymbol\textRewindToIndex{"23EE}
+\DeclareUTFSymbol\textbbslash{"244A}
+\DeclareUTFSymbol\textCircledA{"24B6}
+\DeclareUTFSymbol\textCleaningF{"24BB}
+\DeclareUTFCommand\textCleaningFF{\b\textCleaningF}
+\DeclareUTFSymbol\textCleaningP{"24C5}
+\DeclareUTFCommand\textCleaningPP{\b\textCleaningP}
+\DeclareUTFSymbol\textCuttingLine{"2504}
+\DeclareUTFSymbol\textUParrow{"25B2}
+\DeclareUTFSymbol\textbigtriangleup{"25B3}
+\DeclareUTFSymbol\textForward{"25B6}
+\DeclareUTFSymbol\texttriangleright{"25B7}
+\DeclareUTFSymbol\textRHD{"25BA}
+\DeclareUTFSymbol\textDOWNarrow{"25BC}
+\DeclareUTFSymbol\textbigtriangledown{"25BD}
+\DeclareUTFSymbol\textRewind{"25C0}
+\DeclareUTFSymbol\texttriangleleft{"25C1}
+\DeclareUTFSymbol\textLHD{"25C4}
+\DeclareUTFSymbol\textdiamond{"25C7}
+\DeclareUTFSymbol\textlozenge{"25CA}
+\DeclareUTFSymbol\textLEFTCIRCLE{"25D6}
+\DeclareUTFSymbol\textRIGHTCIRCLE{"25D7}
+\DeclareUTFSymbol\textboxbar{"25EB}
+\DeclareUTFSymbol\textbigcircle{"25EF}
+\DeclareUTFSymbol\textCloud{"2601}
+\DeclareUTFSymbol\textFiveStar{"2605}
+\DeclareUTFSymbol\textFiveStarOpen{"2606}
+\DeclareUTFSymbol\textPhone{"260E}
+\DeclareUTFSymbol\textboxempty{"2610}
+\DeclareUTFSymbol\textCheckedbox{"2611}
+\DeclareUTFSymbol\textCrossedbox{"2612}
+\DeclareUTFSymbol\textCoffeecup{"2615}
+\DeclareUTFSymbol\textHandCuffLeft{"261A}
+\DeclareUTFSymbol\textHandCuffRight{"261B}
+\DeclareUTFSymbol\textHandLeft{"261C}
+\DeclareUTFSymbol\textHandRight{"261E}
+\DeclareUTFSymbol\textRadioactivity{"2622}
+\DeclareUTFSymbol\textBiohazard{"2623}
+\DeclareUTFSymbol\textAnkh{"2625}
+\DeclareUTFSymbol\textYinYang{"262F}
+\DeclareUTFSymbol\textfrownie{"2639}
+\DeclareUTFSymbol\textsmiley{"263A}
+\DeclareUTFSymbol\textblacksmiley{"263B}
+\DeclareUTFSymbol\textsun{"263C}
+\DeclareUTFSymbol\textleftmoon{"263D}
+\DeclareUTFSymbol\textrightmoon{"263E}
+\DeclareUTFSymbol\textmercury{"263F}
+\DeclareUTFSymbol\textPUfemale{"2640}
+\DeclareUTFSymbol\textearth{"2641}
+\DeclareUTFSymbol\textmale{"2642}
+\DeclareUTFSymbol\textjupiter{"2643}
+\DeclareUTFSymbol\textsaturn{"2644}
+\DeclareUTFSymbol\texturanus{"2645}
+\DeclareUTFSymbol\textneptune{"2646}
+\DeclareUTFSymbol\textpluto{"2647}
+\DeclareUTFSymbol\textaries{"2648}
+\DeclareUTFSymbol\texttaurus{"2649}
+\DeclareUTFSymbol\textgemini{"264A}
+\DeclareUTFSymbol\textcancer{"264B}
+\DeclareUTFSymbol\textleo{"264C}
+\DeclareUTFSymbol\textvirgo{"264D}
+\DeclareUTFSymbol\textlibra{"264E}
+\DeclareUTFSymbol\textscorpio{"264F}
+\DeclareUTFSymbol\textsagittarius{"2650}
+\DeclareUTFSymbol\textcapricornus{"2651}
+\DeclareUTFSymbol\textaquarius{"2652}
+\DeclareUTFSymbol\textpisces{"2653}
+\DeclareUTFSymbol\textspadesuitblack{"2660}
+\DeclareUTFSymbol\textheartsuitwhite{"2661}
+\DeclareUTFSymbol\textdiamondsuitwhite{"2662}
+\DeclareUTFSymbol\textclubsuitblack{"2663}
+\DeclareUTFSymbol\textspadesuitwhite{"2664}
+\DeclareUTFSymbol\textheartsuitblack{"2665}
+\DeclareUTFSymbol\textdiamondsuitblack{"2666}
+\DeclareUTFSymbol\textclubsuitwhite{"2667}
+\DeclareUTFSymbol\textquarternote{"2669}
+\DeclareUTFSymbol\texttwonotes{"266B}
+\DeclareUTFSymbol\textsixteenthnote{"266C}
+\DeclareUTFSymbol\textflat{"266D}
+\DeclareUTFSymbol\textnatural{"266E}
+\DeclareUTFSymbol\textsharp{"266F}
+\DeclareUTFSymbol\textrecycle{"2672}
+\DeclareUTFSymbol\textWheelchair{"267F}
+\DeclareUTFSymbol\textFlag{"2691}
+\DeclareUTFSymbol\textMineSign{"2692}
+\DeclareUTFSymbol\textdsmilitary{"2694}
+\DeclareUTFSymbol\textdsmedical{"2695}
+\DeclareUTFSymbol\textdsjuridical{"2696}
+\DeclareUTFSymbol\textdschemical{"2697}
+\DeclareUTFSymbol\textdsbiological{"2698}
+\DeclareUTFSymbol\textdscommercial{"269A}
+\DeclareUTFSymbol\textmanstar{"269D}
+\DeclareUTFSymbol\textdanger{"26A0}
+\DeclareUTFSymbol\textFemaleFemale{"26A2}
+\DeclareUTFSymbol\textMaleMale{"26A3}
+\DeclareUTFSymbol\textFemaleMale{"26A4}
+\DeclareUTFSymbol\textHermaphrodite{"26A5}
+\DeclareUTFSymbol\textNeutral{"26AA}
+\DeclareUTFSymbol\textPUuncrfemale{"26B2}
+\DeclareUTFSymbol\texthexstar{"26B9}
+\DeclareUTFSymbol\textSoccerBall{"26BD}
+\DeclareUTFSymbol\textSunCload{"26C5}
+\DeclareUTFSymbol\textRain{"26C6}
+\DeclareUTFSymbol\textnoway{"26D4}
+\DeclareUTFSymbol\textMountain{"26F0}
+\DeclareUTFSymbol\textTent{"26FA}
+\DeclareUTFSymbol\textScissorRightBrokenBottom{"2701}
+\DeclareUTFSymbol\textScissorRight{"2702}
+\DeclareUTFSymbol\textScissorRightBrokenTop{"2703}
+\DeclareUTFSymbol\textScissorHollowRight{"2704}
+\DeclareUTFSymbol\textPhoneHandset{"2706}
+\DeclareUTFSymbol\textTape{"2707}
+\DeclareUTFSymbol\textPlane{"2708}
+\DeclareUTFSymbol\textEnvelope{"2709}
+\DeclareUTFSymbol\textPeace{"270C}
+\DeclareUTFSymbol\textWritingHand{"270D}
+\DeclareUTFSymbol\textPencilRightDown{"270E}
+\DeclareUTFSymbol\textPencilRight{"270F}
+\DeclareUTFSymbol\textPencilRightUp{"2710}
+\DeclareUTFSymbol\textNibRight{"2711}
+\DeclareUTFSymbol\textNibSolidRight{"2712}
+\DeclareUTFSymbol\textCheckmark{"2713}
+\DeclareUTFSymbol\textCheckmarkBold{"2714}
+\DeclareUTFSymbol\textXSolid{"2715}
+\DeclareUTFSymbol\textXSolidBold{"2716}
+\DeclareUTFSymbol\textXSolidBrush{"2717}
+\DeclareUTFSymbol\textPlusOutline{"2719}
+\DeclareUTFSymbol\textPlus{"271A}
+\DeclareUTFSymbol\textPlusThinCenterOpen{"271B}
+\DeclareUTFSymbol\textPlusCenterOpen{"271C}
+\DeclareUTFSymbol\textCross{"271D}
+\DeclareUTFSymbol\textCrossOpenShadow{"271E}
+\DeclareUTFSymbol\textCrossOutline{"271F}
+\DeclareUTFSymbol\textCrossMaltese{"2720}
+\DeclareUTFSymbol\textDavidStar{"2721}
+\DeclareUTFSymbol\textFourAsterisk{"2722}
+\DeclareUTFSymbol\textJackStar{"2723}
+\DeclareUTFSymbol\textJackStarBold{"2724}
+\DeclareUTFSymbol\textClowerTips{"2725}
+\DeclareUTFSymbol\textFourStar{"2726}
+\DeclareUTFSymbol\textFourStarOpen{"2727}
+\DeclareUTFSymbol\textFiveStarOpenCircled{"272A}
+\DeclareUTFSymbol\textFiveStarCenterOpen{"272B}
+\DeclareUTFSymbol\textFiveStarOpenDotted{"272C}
+\DeclareUTFSymbol\textFiveStarOutline{"272D}
+\DeclareUTFSymbol\textFiveStarOutlineHeavy{"272E}
+\DeclareUTFSymbol\textFiveStarConvex{"272F}
+\DeclareUTFSymbol\textFiveStarShadow{"2730}
+\DeclareUTFSymbol\textAsteriskBold{"2731}
+\DeclareUTFSymbol\textAsteriskCenterOpen{"2732}
+\DeclareUTFSymbol\textEightStarTaper{"2734}
+\DeclareUTFSymbol\textEightStarConvex{"2735}
+\DeclareUTFSymbol\textSixStar{"2736}
+\DeclareUTFSymbol\textEightStar{"2737}
+\DeclareUTFSymbol\textEightStarBold{"2738}
+\DeclareUTFSymbol\textTwelveStar{"2739}
+\DeclareUTFSymbol\textSixteenStarLight{"273A}
+\DeclareUTFSymbol\textSixFlowerPetalRemoved{"273B}
+\DeclareUTFSymbol\textSixFlowerOpenCenter{"273C}
+\DeclareUTFSymbol\textAsterisk{"273D}
+\DeclareUTFSymbol\textSixFlowerAlternate{"273E}
+\DeclareUTFSymbol\textFiveFlowerPetal{"273F}
+\DeclareUTFSymbol\textFiveFlowerOpen{"2740}
+\DeclareUTFSymbol\textEightFlowerPetal{"2741}
+\DeclareUTFSymbol\textSunshineOpenCircled{"2742}
+\DeclareUTFSymbol\textSixFlowerAltPetal{"2743}
+\DeclareUTFSymbol\textSnowflakeChevron{"2744}
+\DeclareUTFSymbol\textSnowflake{"2745}
+\DeclareUTFSymbol\textSnowflakeChevronBold{"2746}
+\DeclareUTFSymbol\textSparkle{"2747}
+\DeclareUTFSymbol\textSparkleBold{"2748}
+\DeclareUTFSymbol\textAsteriskRoundedEnds{"2749}
+\DeclareUTFSymbol\textEightFlowerPetalRemoved{"274A}
+\DeclareUTFSymbol\textEightAsterisk{"274B}
+\DeclareUTFSymbol\textCircleShadow{"274D}
+\DeclareUTFSymbol\textSquareShadowBottomRight{"274F}
+\DeclareUTFSymbol\textSquareTopRight{"2750}
+\DeclareUTFSymbol\textSquareCastShadowBottomRight{"2751}
+\DeclareUTFSymbol\textSquareCastShadowTopRight{"2752}
+\DeclareUTFSymbol\textDiamandSolid{"2756}
+\DeclareUTFSymbol\textRectangleThin{"2758}
+\DeclareUTFSymbol\textRectangle{"2759}
+\DeclareUTFSymbol\textRectangleBold{"275A}
+\DeclareUTFSymbol\textperp{"27C2}
+\DeclareUTFCommand\textnotperp{\textlstrikethru\textperp}
+\DeclareUTFSymbol\textveedot{"27C7}
+\DeclareUTFSymbol\textwedgedot{"27D1}
+\DeclareUTFSymbol\textleftspoon{"27DC}
+\DeclareUTFSymbol\textlbrackdbl{"27E6}
+\DeclareUTFSymbol\textrbrackdbl{"27E7}
+\DeclareUTFSymbol\textcirclearrowleft{"27F2}
+\DeclareUTFSymbol\textcirclearrowright{"27F3}
+\DeclareUTFSymbol\textlongleftarrow{"27F5}
+\DeclareUTFSymbol\textlongrightarrow{"27F6}
+\DeclareUTFSymbol\textlongleftrightarrow{"27F7}
+\DeclareUTFSymbol\textLongleftarrow{"27F8}
+\DeclareUTFSymbol\textLongrightarrow{"27F9}
+\DeclareUTFSymbol\textLongleftrightarrow{"27FA}
+\DeclareUTFSymbol\textlongmapsto{"27FC}
+\DeclareUTFSymbol\textLongmapsfrom{"27FD}
+\DeclareUTFSymbol\textLongmapsto{"27FE}
+\DeclareUTFSymbol\textnwsearrow{"2921}
+\DeclareUTFSymbol\textneswarrow{"2922}
+\DeclareUTFSymbol\textlhooknwarrow{"2923}
+\DeclareUTFSymbol\textrhooknearrow{"2924}
+\DeclareUTFSymbol\textlhooksearrow{"2925}
+\DeclareUTFSymbol\textrhookswarrow{"2926}
+\DeclareUTFSymbol\textleadsto{"2933}
+\DeclareUTFSymbol\textrcurvearrowne{"2934}
+\DeclareUTFSymbol\textlcurvearrowse{"2935}
+\DeclareUTFSymbol\textlcurvearrowsw{"2936}
+\DeclareUTFSymbol\textrcurvearrowse{"2937}
+\DeclareUTFSymbol\textlcurvearrowdown{"2938}
+\DeclareUTFSymbol\textrcurvearrowdown{"2939}
+\DeclareUTFSymbol\textrcurvearrowleft{"293A}
+\DeclareUTFSymbol\textrcurvearrowright{"293B}
+\DeclareUTFSymbol\textleftrightharpoon{"294A}
+\DeclareUTFSymbol\textrightleftharpoon{"294B}
+\DeclareUTFSymbol\textupdownharpoonrightleft{"294C}
+\DeclareUTFSymbol\textupdownharpoonleftright{"294D}
+\DeclareUTFSymbol\textleftleftharpoons{"2962}
+\DeclareUTFSymbol\textupupharpoons{"2963}
+\DeclareUTFSymbol\textrightrightharpoons{"2964}
+\DeclareUTFSymbol\textdowndownharpoons{"2965}
+\DeclareUTFSymbol\textleftbarharpoon{"296A}
+\DeclareUTFSymbol\textbarleftharpoon{"296B}
+\DeclareUTFSymbol\textrightbarharpoon{"296C}
+\DeclareUTFSymbol\textbarrightharpoon{"296D}
+\DeclareUTFSymbol\textupdownharpoons{"296E}
+\DeclareUTFSymbol\textdownupharpoons{"296F}
+\DeclareUTFSymbol\textllparenthesis{"2987}
+\DeclareUTFSymbol\textrrparenthesis{"2988}
+\DeclareUTFSymbol\textinvdiameter{"29B0}
+\DeclareUTFSymbol\textobar{"29B6}
+\DeclareUTFSymbol\textobslash{"29B8}
+\DeclareUTFSymbol\textobot{"29BA}
+\DeclareUTFSymbol\textNoChemicalCleaning{"29BB}
+\DeclareUTFSymbol\textolessthan{"29C0}
+\DeclareUTFSymbol\textogreaterthan{"29C1}
+\DeclareUTFSymbol\textboxslash{"29C4}
+\DeclareUTFSymbol\textboxbslash{"29C5}
+\DeclareUTFSymbol\textboxast{"29C6}
+\DeclareUTFSymbol\textboxcircle{"29C7}
+\DeclareUTFSymbol\textboxbox{"29C8}
+\DeclareUTFSymbol\textValve{"29D3}
+\DeclareUTFSymbol\textmultimapboth{"29DF}
+\DeclareUTFSymbol\textshuffle{"29E2}
+\DeclareUTFSymbol\textuplus{"2A04}
+\DeclareUTFSymbol\textbigdoublewedge{"2A07}
+\DeclareUTFSymbol\textbigdoublevee{"2A08}
+\DeclareUTFSymbol\textJoin{"2A1D}
+\DeclareUTFSymbol\textfatsemi{"2A1F}
+\DeclareUTFSymbol\textcircplus{"2A22}
+\DeclareUTFSymbol\textminusdot{"2A2A}
+\DeclareUTFSymbol\textdottimes{"2A30}
+\DeclareUTFSymbol\textdtimes{"2A32}
+\DeclareUTFSymbol\textodiv{"2A38}
+\DeclareUTFSymbol\textinvneg{"2A3C}
+\DeclareUTFSymbol\textsqdoublecap{"2A4E}
+\DeclareUTFSymbol\textcapdot{"2A40}
+\DeclareUTFSymbol\textsqdoublecup{"2A4F}
+\DeclareUTFSymbol\textdoublewedge{"2A55}
+\DeclareUTFSymbol\textdoublevee{"2A56}
+\DeclareUTFSymbol\textdoublebarwedge{"2A5E}
+\DeclareUTFSymbol\textveedoublebar{"2A63}
+\DeclareUTFSymbol\texteqdot{"2A66}
+\DeclareUTFCommand\textneqdot{\textlstrikethru\texteqdot}
+\DeclareUTFSymbol\textcoloncolonequals{"2A74}
+\DeclareUTFSymbol\textleqslant{"2A7D}
+\DeclareUTFCommand\textnleqslant{\textlstrikethrux\textleqslant}
+\DeclareUTFSymbol\textgeqslant{"2A7E}
+\DeclareUTFCommand\textngeqslant{\textlstrikethru\textgeqslant}
+\DeclareUTFSymbol\textlessapprox{"2A85}
+\DeclareUTFCommand\textnlessapprox{\textlstrikethru\textnlessapprox}
+\DeclareUTFSymbol\textgtrapprox{"2A86}
+\DeclareUTFCommand\textngtrapprox{\textlstrikethru\textgtrapprox}
+\DeclareUTFSymbol\textlneq{"2A87}
+\DeclareUTFSymbol\textgneq{"2A88}
+\DeclareUTFSymbol\textlnapprox{"2A89}
+\DeclareUTFSymbol\textgnapprox{"2A8A}
+\DeclareUTFSymbol\textlesseqqgtr{"2A8B}
+\DeclareUTFSymbol\textgtreqqless{"2A8C}
+\DeclareUTFSymbol\texteqslantless{"2A95}
+\DeclareUTFSymbol\texteqslantgtr{"2A96}
+\DeclareUTFSymbol\textleftslice{"2AA6}
+\DeclareUTFSymbol\textrightslice{"2AA7}
+\DeclareUTFSymbol\textpreceq{"2AAF}
+\DeclareUTFCommand\textnpreceq{\textlstrikethru\textpreceq}
+\DeclareUTFSymbol\textsucceq{"2AB0}
+\DeclareUTFCommand\textnsucceq{\textlstrikethru\textsucceq}
+\DeclareUTFSymbol\textprecneq{"2AB1}
+\DeclareUTFSymbol\textsuccneq{"2AB2}
+\DeclareUTFSymbol\textpreceqq{"2AB3}
+\DeclareUTFCommand\textnpreceqq{\textlstrikethru\textpreceqq}
+\DeclareUTFSymbol\textsucceqq{"2AB4}
+\DeclareUTFCommand\textnsucceqq{\textlstrikethru\textsucceqq}
+\DeclareUTFSymbol\textprecneqq{"2AB5}
+\DeclareUTFSymbol\textsuccneqq{"2AB6}
+\DeclareUTFSymbol\textprecapprox{"2AB7}
+\DeclareUTFCommand\textnprecapprox{\textlstrikethru\textprecapprox}
+\DeclareUTFSymbol\textsuccapprox{"2AB8}
+\DeclareUTFCommand\textnsuccapprox{\textlstrikethru\textsuccapprox}
+\DeclareUTFSymbol\textprecnapprox{"2AB9}
+\DeclareUTFSymbol\textsuccnapprox{"2ABA}
+\DeclareUTFSymbol\textsubseteqq{"2AC5}
+\DeclareUTFCommand\textnsubseteqq{\textlstrikethru\textsubseteqq}
+\DeclareUTFSymbol\textsupseteqq{"2AC6}
+\DeclareUTFCommand\textnsupseteqq{\textlstrikethru\textsupseteqq}
+\DeclareUTFSymbol\textdashV{"2AE3}
+\DeclareUTFCommand\textndashV{\textlstrikethru\textdashV}
+\DeclareUTFSymbol\textDashv{"2AE4}
+\DeclareUTFCommand\textnDashv{\textlstrikethru\textDashv}
+\DeclareUTFSymbol\textDashV{"2AE5}
+\DeclareUTFCommand\textnDashV{\textlstrikethru\textDashV}
+\DeclareUTFSymbol\textdownmodels{"2AEA}
+\DeclareUTFCommand\textndownmodels{\textlstrikethru\textdownmodels}
+\DeclareUTFSymbol\textupmodels{"2AEB}
+\DeclareUTFCommand\textnupmodels{\textlstrikethru\textupmodels}
+\DeclareUTFSymbol\textupspoon{"2AEF}
+\DeclareUTFSymbol\textinterleave{"2AF4}
+\DeclareUTFSymbol\textsslash{"2AFD}
+\DeclareUTFSymbol\textpentagon{"2B20}
+\DeclareUTFSymbol\textvarhexagon{"2B21}
+\DeclareUTFSymbol\textjinferior{"2C7C}
+\DeclareUTFSymbol\textslashdiv{"2E13}
+\DeclareUTFSymbol\textinterrobangdown{"2E18}
+\DeclareUTFSymbol\textfivedots{"2E2D}
+\DeclareUTFSymbol\textPUheng{"A727}
+\DeclareUTFSymbol\textPUlhookfour{"A72C}
+\DeclareUTFSymbol\textPUscf{"A730}
+\DeclareUTFSymbol\textPUaolig{"A735}
+\DeclareUTFSymbol\textoo{"A74F}
+\DeclareUTFSymbol\textcircumlow{"A788}
+\DeclareUTFSymbol\textfi{"FB01}
+\DeclareUTFSymbol\textfl{"FB02}
+\DeclareUTFSymbol\textGaPa{"1D13B}
+\DeclareUTFSymbol\textHaPa{"1D13C}
+\DeclareUTFSymbol\textViPa{"1D13D}
+\DeclareUTFSymbol\textAcPa{"1D13E}
+\DeclareUTFSymbol\textSePa{"1D13F}
+\DeclareUTFSymbol\textZwPa{"1D140}
+\DeclareUTFSymbol\textfullnote{"1D15D}
+\DeclareUTFSymbol\texthalfnote{"1D15E}
+\DeclareUTFSymbol\textVier{"1D15F}
+\DeclareUTFSymbol\textAcht{"1D160}
+\DeclareUTFSymbol\textSech{"1D161}
+\DeclareUTFSymbol\textZwdr{"1D162}
+\DeclareUTFSymbol\textMundus{"1F30D}
+\DeclareUTFSymbol\textMoon{"1F319}
+\DeclareUTFSymbol\textManFace{"1F468}
+\DeclareUTFSymbol\textWomanFace{"1F469}
+\DeclareUTFSymbol\textFax{"1F4E0}
+\DeclareUTFSymbol\textFire{"1F525}
+\DeclareUTFSymbol\textBicycle{"1F6B2}
+\DeclareUTFSymbol\textGentsroom{"1F6B9}
+\DeclareUTFSymbol\textLadiesroom{"1F6BA}
+\DeclareUTFCommand\textcopyleft{\textcircled\textrevc}
+\DeclareUTFCommand\textccsa{\textcircled\textcirclearrowleft}
+\DeclareUTFSymbol\textglqq{"201E}
+\DeclareUTFSymbol\textgrqq{"201C}
+\DeclareUTFSymbol\textglq{"201A}
+\DeclareUTFSymbol\textgrq{"2018}
+\DeclareUTFSymbol\textflqq{"00AB}
+\DeclareUTFSymbol\textfrqq{"00BB}
+\DeclareUTFSymbol\textflq{"2039}
+\DeclareUTFSymbol\textfrq{"203A}
+\DeclareUTFSymbol\textneg{"00AC}
+\DeclareUTFSymbol\textcdot{"00B7}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</xunextra>
% \end{macrocode}
%
% \setbox\xeCJKtmpbox\vbox\bgroup\gobblelineno
@@ -8961,7 +10445,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
%</config>
% \end{macrocode}
%
-% \iffalse
+% \begin{comment}
%
% \makeatletter
% \let\special@index\@gobble
@@ -9564,7 +11048,198 @@ int main()
%</ex-listings>
% \end{macrocode}
%
-% \fi
+% \subsection{\pkg{xunicode-symbols.tex}}
+%
+% \begin{macrocode}
+%<*xunicode-symbols>
+% \end{macrocode}
+%
+% \setbox\xeCJKtmpbox\vbox\bgroup\gobblelineno
+% \begin{macrocode}
+%<@@=xunsym>
+% \end{macrocode}\egroup
+%
+% \begin{macrocode}
+\documentclass{article}
+\usepackage[margin=2cm]{geometry}
+\usepackage{fontspec}
+\usepackage{xunicode-addon}
+\usepackage{l3str}
+\usepackage{longtable,tabu,booktabs}
+\usepackage{zref-base}
+
+\setmainfont{FreeSerif}
+\newfontfamily\falllbackfont{Segoe UI Symbol}
+
+\makeatletter
+\ExplSyntaxOn
+\cs_new_protected_nopar:Npx \@@_restore_catcode:
+ { \char_set_catcode:nn { \c_zero } { \char_value_catcode:n { \c_zero } } }
+\file_if_exist:nTF { xunicode-commands.tex }
+ { \char_set_catcode_comment:n { \c_zero } }
+ { \char_set_catcode_ignore:n { \c_zero } }
+^^@ \tl_new:N \l_@@_command_tl
+^^@ \int_new:N \l_@@_command_int
+^^@ \iow_new:N \g_@@_command_iow
+^^@ \iow_new:N \g_@@_combine_mark_iow
+^^@ \ior_new:N \g_@@_unicode_ior
+^^@ \prop_new:N \l_@@_command_prop
+^^@ \prop_new:N \l_@@_combine_mark_prop
+^^@ \prop_new:N \l_@@_combine_marks_prop
+^^@ \cs_new_protected_nopar:Npn \SaveUTFCommands
+^^@ {
+^^@ \group_begin:
+^^@ \@@_restore_catcode:
+^^@ \cs_set_eq:NN \DeclareTextAccent \use_none:nnn
+^^@ \cs_set_eq:NN \DeclareUTFComposite \use_none:n
+^^@ \cs_set_eq:NN \DeclareUTFEncodedAccent \use_none:nnn
+^^@ \cs_set_eq:NN \DeclareUTFCommand \use_none:nn
+^^@ \cs_set_eq:NN \DeclareUTFCompositeCommand \use_none:nnn
+^^@ \cs_set_eq:NN \DeclareUTFSymbol \@@_save_UTF_command:Nn
+^^@ \cs_set_eq:NN \DeclareUTFCompositeSymbol \@@_save_UTF_command:Nnn
+^^@ \cs_set_eq:NN \DeclareEncodedCompositeCharacter \@@_save_combine_mark:nnnn
+^^@ \cs_set_eq:NN \DeclareEncodedCompositeAccents \@@_save_combine_marks:nnnn
+^^@ \DeclareDocumentCommand \DeclareUTFcharacter { O { \UTFencname } m m }
+^^@ { \@@_save_UTF_command:NNn \l_@@_command_prop {##3} {##2} }
+^^@ \DeclareDocumentCommand \DeclareUTFcomposite { O { \UTFencname } m m m }
+^^@ { \@@_save_UTF_command:NNnn \l_@@_command_prop {##3} {##4} {##2} }
+^^@ \ReloadXunicode { \UTFencname }
+^^@ \ior_open:NnTF \g_@@_unicode_ior { UnicodeData.txt }
+^^@ {
+^^@ \iow_open:Nn \g_@@_command_iow { xunicode-commands.tex }
+^^@ \iow_open:Nn \g_@@_combine_mark_iow { xunicode-combine-marks.tex }
+^^@ \ior_map_inline:Nn \g_@@_unicode_ior { \@@_make_table:w ##1 \q_stop }
+^^@ \@@_write_combine_marks:
+^^@ \ior_close:N \g_@@_unicode_ior
+^^@ \iow_close:N \g_@@_command_iow
+^^@ \iow_close:N \g_@@_combine_mark_iow
+^^@ \group_end:
+^^@ }
+^^@ {
+^^@ \group_end:
+^^@ \msg_fatal:nn { @@ } { UnicodeData }
+^^@ }
+^^@ }
+^^@ \msg_new:nnn { @@ } { UnicodeData }
+^^@ { File~`UnicodeData.txt`~not~found. }
+^^@ \cs_new_protected:Npn \@@_save_UTF_command:Nn
+^^@ { \@@_save_UTF_command:NNn \l_@@_command_prop }
+^^@ \cs_new_protected:Npn \@@_save_UTF_command:Nnn
+^^@ { \@@_save_UTF_command:NNnn \l_@@_command_prop }
+^^@ \cs_new_protected:Npn \@@_save_UTF_command:NNn #1#2#3
+^^@ { \@@_save_UTF_text_command:Nxx #1 { \use_none:n #3 } { \token_to_str:N #2 } }
+^^@ \cs_new_protected:Npn \@@_save_UTF_command:NNnn #1#2#3#4
+^^@ {
+^^@ \@@_save_UTF_text_command:Nxx #1 { \use_none:n #4 }
+^^@ {
+^^@ \token_to_str:N #2 \c_left_brace_str
+^^@ \tl_if_single:nTF {#3} { \token_to_str:N #3 } { \tl_to_str:n {#3} }
+^^@ \c_right_brace_str
+^^@ }
+^^@ }
+^^@ \cs_new_protected:Npn \@@_save_combine_mark:nnnn #1#2#3#4
+^^@ { \@@_save_UTF_text_command:Nxx \l_@@_combine_mark_prop {#3} { \token_to_str:N #2 } }
+^^@ \cs_new_protected:Npn \@@_save_combine_marks:nnnn #1#2#3#4
+^^@ { \@@_save_UTF_text_command:Nxx \l_@@_combine_marks_prop { { "#4 } { "#3 } } { \token_to_str:N #2 } }
+^^@ \cs_new_protected:Npn \@@_save_UTF_text_command:Nxx #1#2#3
+^^@ { \use:x { \@@_save_UTF_text_command:Nnn \exp_not:N #1 {#2} {#3} } }
+^^@ \cs_new_protected:Npn \@@_save_UTF_text_command:Nnn #1#2#3
+^^@ {
+^^@ \prop_get:NnNTF #1 {#2} \l_@@_command_tl
+^^@ { \prop_put:Nno #1 {#2} { \l_@@_command_tl , #3 } }
+^^@ { \prop_put:Nnn #1 {#2} {#3} }
+^^@ }
+^^@ \cs_new_protected:Npn \@@_make_table:w #1 ; #2 ; #3 \q_stop
+^^@ {
+^^@ \prop_get:NnNT \l_@@_command_prop {#1} \l_@@_command_tl
+^^@ {
+^^@ \iow_now:Nx \g_@@_command_iow
+^^@ { \token_to_str:N \UnicodeTextSymbol { "#1 } { \l_@@_command_tl } {#2} }
+^^@ }
+^^@ \prop_get:NnNT \l_@@_combine_mark_prop {#1} \l_@@_command_tl
+^^@ {
+^^@ \iow_now:Nx \g_@@_combine_mark_iow
+^^@ { \token_to_str:N \UnicodeCombineMark { "#1 } { \l_@@_command_tl } {#2} }
+^^@ }
+^^@ }
+^^@ \cs_new_protected:Npn \@@_write_combine_marks:
+^^@ {
+^^@ \prop_map_inline:Nn \l_@@_combine_marks_prop
+^^@ {
+^^@ \iow_now:Nx \g_@@_combine_mark_iow
+^^@ { \token_to_str:N \UnicodeCombineMarks ##1 {##2} }
+^^@ }
+^^@ }
+^^@ \ExplSyntaxOff
+^^@ \SaveUTFCommands
+^^@ \ExplSyntaxOn
+\@@_restore_catcode:
+\int_new:N \g_@@_symbol_int
+\int_new:N \g_@@_table_int
+\DeclareDocumentCommand \UnicodeTextSymbol { m v m }
+ {
+ \int_gincr:N \g_@@_symbol_int
+ \use_none:n #1 &
+ \scan_align_safe_stop:
+ \reverse_if:N \etex_iffontchar:D \tex_font:D #1 \exp_stop_f: \falllbackfont \fi:
+ \tex_char:D #1 \exp_stop_f: &
+ \tl_set:Nn \l_tmpa_clist {#2}
+ \clist_use:Nnnn \l_tmpa_clist
+ { \par } { \par } { \par }
+ \strut
+ & #3 \\
+ }
+\cs_set_eq:NN \UnicodeCombineMark \UnicodeTextSymbol
+\DeclareDocumentCommand \UnicodeCombineMarks { m m v }
+ {
+ \int_gincr:N \g_@@_symbol_int
+ \use_none:n #1 ~ \use_none:n #2 &
+ \tex_char:D #1 \exp_stop_f: \tex_char:D #2 \exp_stop_f: &
+ \tl_set:Nn \l_tmpa_clist {#3}
+ \clist_use:Nnnn \l_tmpa_clist
+ { \par } { \par } { \par }
+ \strut \\
+ }
+\DeclareDocumentCommand \UTFTABLE { m m }
+ {
+ \int_gincr:N \g_@@_table_int
+ \exp_args:Nx \@@_make_table:nnn { UTFTABLE - \int_use:N \g_@@_table_int } {#1} {#2}
+ }
+\cs_new_protected_nopar:Npn \@@_make_table:nnn #1#2#3
+ {
+ \section{#2~(\zref@extractdefault{#1}{default}{0})}
+ \zref@refused{#1}
+ \noindent
+ \begin{longtabu} to \linewidth {>{\ttfamily\footnotesize}rc>{\ttfamily\footnotesize}X>{\tiny}X}
+ \toprule\rowfont{\normalfont\normalsize}
+ \multicolumn1c{USV} & Symbol & Macro(s) & Description \\
+ \midrule \endhead
+ \bottomrule \endfoot
+ \int_gzero:N \g_@@_symbol_int
+ \input{#3}
+ \end{longtabu}
+ \group_begin:
+ \zref@setcurrent{default}{\int_use:N\g_@@_symbol_int}
+ \zref@wrapper@immediate{\zref@labelbyprops{#1}{default}}
+ \group_end:
+ }
+\cs_generate_variant:Nn \@@_make_table:nnn { x }
+\ExplSyntaxOff
+
+\begin{document}
+
+\UTFTABLE{Symbols}{xunicode-commands.tex}
+
+\UTFTABLE{Combining Marks}{xunicode-combine-marks.tex}
+
+\end{document}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</xunicode-symbols>
+% \end{macrocode}
+%
+% \end{comment}
%
% \end{implementation}
%