-
Notifications
You must be signed in to change notification settings - Fork 125
/
Copy pathxeCJK.dtx
14398 lines (14274 loc) · 507 KB
/
xeCJK.dtx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
% \iffalse meta-comment
% !TEX program = XeLaTeX
%<*internal>
\iffalse
%</internal>
%<*readme>
xeCJK
=====
`xeCJK` is a package written for XeLaTeX which allows users to typeset
CJK scripts easily.
- Different default fonts for CJK and other characters.
- Spaces automatically ignored between CJK characters.
- Special effects on full-width CJK punctuation.
- Automatic adjustment of the space between CJK and other characters.
Contributing
------------
This package is a part of the [ctex-kit](https://github.com/CTeX-org/ctex-kit) project.
Issues and pull requests are welcome.
Copyright and Licence
---------------------
Copyright (C) 2007--2010 by Wenchang Sun <[email protected]>
Copyright (C) 2009--2022 by Leo Liu <[email protected]>
Copyright (C) 2012--2022 by Qing Lee <[email protected]>
----------------------------------------------------------------------
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
version 1.3c of this license or (at your option) any later
version. This version of this license is in
http://www.latex-project.org/lppl/lppl-1-3c.txt
and the latest version of this license is in
http://www.latex-project.org/lppl.txt
and version 1.3 or later is part of all distributions of
LaTeX version 2005/12/01 or later.
This work has the LPPL maintenance status "maintained".
The Current Maintainers of this work are Leo Liu and Qing Lee.
This package consists of the files xeCJK.dtx,
full-stop.map,
fullwidth-stop.map,
han-simp.map,
han-trad.map,
and the derived files xeCJK.pdf,
xeCJK.sty,
xeCJK.cfg,
xeCJK.ins,
xeCJKfntef.sty,
xeCJK-listings.sty,
xunicode-addon.sty,
xunicode-extra.def,
xeCJK-example-autofake.tex,
xeCJK-example-fallback.tex,
xeCJK-example-subCJKblock.tex,
xeCJK-example-CJKecglue.tex,
xeCJK-example-checksingle.tex,
xeCJK-example-CJKfntef.tex,
xeCJK-example-punctstyle.tex,
xeCJK-example-verbatim.tex,
xeCJK-example-CM.tex,
xeCJK-example-listings.tex,
xeCJK-example-mathblock.tex,
xunicode-symbols.tex,
xunicode-commands.tex,
xunicode-combine-marks.tex,
xunicode-symbols.pdf,
full-stop.tec,
fullwidth-stop.tec,
han-simp.tec,
han-trad.tec, and
README.md (this file).
%</readme>
%<*internal>
\fi
\begingroup
\def\temp{LaTeX2e}
\expandafter\endgroup\ifx\temp\fmtname\else
\csname fi\endcsname
%</internal>
%<*install>
\input ctxdocstrip %
\preamble
Copyright (C) 2007--2010 by Wenchang Sun <[email protected]>
Copyright (C) 2009--2022 by Leo Liu <[email protected]>
Copyright (C) 2012--2022 by Qing Lee <[email protected]>
----------------------------------------------------------------------
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
version 1.3c of this license or (at your option) any later
version. This version of this license is in
http://www.latex-project.org/lppl/lppl-1-3c.txt
and the latest version of this license is in
http://www.latex-project.org/lppl.txt
and version 1.3 or later is part of all distributions of
LaTeX version 2005/12/01 or later.
This work has the LPPL maintenance status "maintained".
The Current Maintainers of this work are Leo Liu and Qing Lee.
----------------------------------------------------------------------
\endpreamble
\postamble
This package consists of the files xeCJK.dtx,
full-stop.map,
fullwidth-stop.map,
han-simp.map,
han-trad.map,
and the derived files xeCJK.pdf,
xeCJK.sty,
xeCJK.cfg,
xeCJK.ins,
xeCJKfntef.sty,
xeCJK-listings.sty,
xunicode-addon.sty,
xunicode-extra.def,
xeCJK-example-autofake.tex,
xeCJK-example-fallback.tex,
xeCJK-example-subCJKblock.tex,
xeCJK-example-CJKecglue.tex,
xeCJK-example-checksingle.tex,
xeCJK-example-CJKfntef.tex,
xeCJK-example-punctstyle.tex,
xeCJK-example-verbatim.tex,
xeCJK-example-CM.tex,
xeCJK-example-listings.tex,
xeCJK-example-mathblock.tex,
xunicode-symbols.tex,
xunicode-commands.tex,
xunicode-combine-marks.tex,
xunicode-symbols.pdf,
full-stop.tec,
fullwidth-stop.tec,
han-simp.tec,
han-trad.tec, and
README.md.
\endpostamble
\generate
{
%</install>
%<*internal>
\usedir{source/xelatex/xecjk}
\file{xeCJK.ins} {\from{\jobname.dtx}{install}}
%</internal>
%<*install>
\usedir{tex/xelatex/xecjk}
\file{xeCJK.sty} {\from{\jobname.dtx}{package}}
\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}
\file{xeCJK.cfg} {\from{\jobname.dtx}{config}}
\usedir{doc/xelatex/xecjk/example}
\file{xeCJK-example-autofake.tex} {\from{\jobname.dtx}{ex-autofake}}
\file{xeCJK-example-fallback.tex} {\from{\jobname.dtx}{ex-fallback}}
\file{xeCJK-example-subCJKblock.tex} {\from{\jobname.dtx}{ex-block}}
\file{xeCJK-example-CJKecglue.tex} {\from{\jobname.dtx}{ex-ecglue}}
\file{xeCJK-example-checksingle.tex} {\from{\jobname.dtx}{ex-single}}
\file{xeCJK-example-CJKfntef.tex} {\from{\jobname.dtx}{ex-fntef}}
\file{xeCJK-example-punctstyle.tex} {\from{\jobname.dtx}{ex-punctstyle}}
\file{xeCJK-example-verbatim.tex} {\from{\jobname.dtx}{ex-verb}}
\file{xeCJK-example-CM.tex} {\from{\jobname.dtx}{ex-cm}}
\file{xeCJK-example-listings.tex} {\from{\jobname.dtx}{ex-listings}}
\file{xeCJK-example-mathblock.tex} {\from{\jobname.dtx}{ex-mathblock}}
\file{xunicode-symbols.tex} {\from{\jobname.dtx}{xunicode-symbols}}
\nopreamble\nopostamble
\usedir{doc/xelatex/xecjk}
\file{README.md} {\from{\jobname.dtx}{readme}}
}
\endbatchfile
%</install>
%<*internal>
\fi
%</internal>
%<*package|config|fntef|listings|xunicode|xunextra>
%<!(config|xunextra)>\NeedsTeXFormat{LaTeX2e}
%<!(config|xunextra)>\RequirePackage{expl3}
%<+!driver>\GetIdInfo$Id$
%<package> {Typesetting CJK scripts with XeLaTeX}
%<config> {Configuration file for xeCJK package}
%<fntef> {xeCJK font effect}
%<listings> {xeCJK patch file for listings}
%<xunicode> {addon file for xunicode}
%<xunextra> {extra definition for xunicode}
%<package>\ProvidesExplPackage{\ExplFileName}
%<config>\ProvidesExplFile{\ExplFileName.cfg}
%<fntef>\ProvidesExplPackage{xeCJKfntef}
%<listings>\ProvidesExplPackage{xeCJK-listings}
%<xunicode>\ProvidesExplPackage{xunicode-addon}
%<xunextra>\ProvidesExplFile{xunicode-extra.def}
%<!driver> {\ExplFileDate}{3.9.1}{\ExplFileDescription}
%</package|config|fntef|listings|xunicode|xunextra>
%<*driver>
\documentclass{ctxdoc}
\usepackage{xeCJKfntef}
\xeCJKDeclareSubCJKBlock{SP} { "2E3A , "301C , "30A0 , "FF65 }
\xeCJKDeclareSubCJKBlock{Ext-B} { "20000 -> "2A6DF }
\xeCJKDeclareSubCJKBlock{Hangul}
{ "1100 -> "11FF, "3130 -> "318F, "A960 -> "A97F, "AC00 -> "D7AF }
\setCJKmainfont[SP, Language=Chinese Simplified]{Source Han Serif SC}
\setCJKmainfont[Ext-B]{SimSun-ExtB}
\setCJKmainfont[Hangul, Script=Hangul, Language=Korean]{Source Han Serif K}
\newlist{psopt}{description}{3}
\setlist[psopt]{%
font=\mdseries\ttfamily, align=right,
labelsep=.5em, leftmargin=4.5em, labelindent=0pt}
\newcommand\PSKeyVal[2]{%
\item[#1]\makebox[4em][l]{\meta{#2}}\ignorespaces}
\newcommand\tokslink[1]{\hyperlink{#1}{\ding{51}}}
\newcommand\ghissue[1]{%
\href{https://github.com/CTeX-org/ctex-kit/issues/#1}{\##1}}
\AtBeginDocument{\DeleteShortVerb{\"}}
\ExplSyntaxOn
\NewDocumentCommand \PrintPunctList { O{7} m m }
{
\par
\begingroup
\CJKfontspec[Language=Chinese ~ Simplified]{Source ~ Han ~ Serif ~ SC}
\tl_clear:N \l_tmpa_tl
\int_zero:N \l_tmpa_int
\tl_set:Nx \l_tmpb_tl { \tl_to_str:n { c_@@_#2_chars_clist } }
\int_set:Nn \l_tmpb_int { \clist_count:c { \l_tmpb_tl } }
\clist_map_inline:cn { \l_tmpb_tl }
{
\int_incr:N \l_tmpa_int
\tl_put_right:Nx \l_tmpa_tl
{
\use_none:n ##1 & \tex_char:D ##1 \scan_stop:
\int_compare:nNnF \l_tmpa_int = \l_tmpb_int
{
\int_compare:nNnTF { \int_mod:nn \l_tmpa_int {#1} } = \c_zero_int
{ \exp_not:N \\ \scan_stop: } { & }
}
}
}
\noindent\hfill\linespread{1}\selectfont
\begin{tabular}{|*{#1}{>{\footnotesize\ttfamily U+}c|c|}}
\tl_use:N \l_tmpa_tl
\end{tabular}\hfill\null
\endgroup
\par
}
\ExplSyntaxOff
\begin{document}
\DocInput{\jobname.dtx}
\IndexLayout
\PrintChanges
\PrintIndex
\end{document}
%</driver>
% \fi
%
% \changes{v3.1.0}{2012/11/13}{放弃对 \tn{outer} 宏的特殊处理。}
% \changes{v3.1.1}{2012/12/07}{不再依赖 \pkg{xpatch} 宏包。}
% \changes{v3.2.2}{2013/06/01}{修正某些重音不能正确显示的问题。}
% \changes{v3.2.3}{2013/06/07}{提供四个 TECkit 映射文件用于句号转换和简繁互换。}
% \changes{v3.2.4}{2013/07/02}{遵循 \LaTeXiii{} 变量需要预先声明的原则。}
% \changes{v3.2.6}{2013/07/29}{\texttt{case} 类函数的用法与 \LaTeXiii{} 同步。}
% \changes{v3.3.2}{2015/05/15}{随 Unicode 7.0.0 更新简繁汉字映射。}
% \changes{v3.3.3}{2015/09/25}{更新 \LaTeXiii{} 代码。}
% \changes{v3.5.0}{2017/07/19}{常数 \cs{c_minus_one} 已过时。}
% \changes{v3.5.0}{2017/07/22}{使用 \texttt{lazy} 函数对 Boolean 表达式
% 进行最小化运算(\LaTeXiii{} 2017/07/19)。}
% \changes{v3.6.0}{2018/01/13}{同步 \LaTeXiii{} 2017/12/16。}
% \changes{v3.6.1}{2018/02/27}{减少 \texttt{bool} 运算。}
% \changes{v3.7.2}{2019/03/23}{同步 \LaTeXiii{} 2019/03/05。}
% \changes{v3.8.0}{2020/02/09}{兼容 \LaTeXe\ 2020/02/02 对 \pkg{NFSS} 的修改。}
% \changes{v3.8.0}{2020/02/09}{清理过时的兼容性补丁代码。}
% \changes{v3.8.3}{2020/04/07}{删除 \texttt{\_nopar}。}
%
% \CheckSum{11032}
% \GetFileId{xeCJK.sty}
%
% \title{\bfseries\pkg{xeCJK} 宏包}
% \author{\href{http://www.ctex.org}{CTEX.ORG}}
% \date{\filedate\qquad\fileversion\thanks{\ctexkitrev{\ExplFileVersion}.}}
% \maketitle
%
% \tableofcontents
% \vspace{\baselineskip}
%
% \begin{documentation}
%
% \section{简介}
%
% \pkg{xeCJK} 是一个 \XeLaTeX 宏包,用于排版中日韩(CJK)文字。主要功能:
% \begin{enumerate}
% \item 分别设置 CJK 和英文字体;
% \item 自动忽略 CJK 文字间的空格而保留其他空格,允许在非标点汉字和英文
% 字母 (a -- z, A -- Z) 间断行;
% \item 提供多种标点处理方式: 全角式、半角式、开明式、行末半角式和 CCT 式;
% \item 自动调整中英文间空白。
% \end{enumerate}
%
% \pkg{xeCJK} 使用了 \XeTeX 的一些最新特性,需要 \XeTeX{} 0.9995.0 (2009/06/29) 以
% 后的版本。\pkg{xeCJK} 依赖 \LaTeXiii{} 项目的宏包套件
% \package{l3kernel} 和 \package{l3packages}。
% \pkg{xeCJK} 还需要通过 \package{fontspec} 宏包来调用系统字体。
% \pkg{xeCJK} 会自动根据需要载入这些宏包。
%
% \pkg{xeCJK} 的原始作者是孙文昌,2009 年 5 月起宏包被收入 \ctexkit\ 项目进行
% 维护,目前主要维护者是刘海洋\footnote{\email{[email protected]}} 和
% 李清\footnote{\email{[email protected]}}。
%
% \section{基本用法}
%
% 与其他 \LaTeX{} 宏包一样,引入 \pkg{xeCJK} 宏包只要在导言区使用
% \begin{frameverb}
% \usepackage{xeCJK}
% \end{frameverb}
% 在引入 \pkg{xeCJK} 宏包之后,只要设置 CJK 文字的字体,就可以在文档中使用中日
% 韩文字了。
%
% 可以在各种文档类中使用 \pkg{xeCJK} 宏包,最简单的示例是:
% \begin{ctexexam}
% \documentclass{article}
% \usepackage{xeCJK}
% \setCJKmainfont{SimSun}
%
% \begin{document}
% 中文 \LaTeX 示例。
% \end{document}
% \end{ctexexam}
% 上述示例设置了中文字体 SimSun(宋体)。运行此示例要求系统安装了设置的字体,
% 源文件用 UTF-8 编码保存,使用 \XeLaTeX{} 编译。
%
% \pkg{xeCJK} 只提供了字体和标点控制等基本 CJK 语言支持。对于中文文档,可以使
% 用更为高层的 \package{ctex} 宏包或文档类,它将自动调用 \pkg{xeCJK} 并设置好中文
% 字体,同时提供了进一步的本地化支持。详细内容参看 \package{ctex} 宏包套件的说明。
%
% \pkg{xeCJK} 提供了大量选项,可以在宏包调用时作为宏包选项或用 \tn{xeCJKsetup}
% 命令进行设置,详见 \ref{subsec:opts}~节。除了 \tn{setCJKmainfont} 命令,
% \pkg{xeCJK} 还提供了许多其他命令设置和选择中文字体,详见
% \ref{subsec:fontset}~节。其他更详细的功能也都将在下面详细说明。在本文档所在的
% 文件夹的 |example| 目录下面也有一些例子可以参考。
%
% \section{用户手册}
%
% \subsection{宏包选项}
% \label{subsec:opts}
%
% \pkg{xeCJK} 以 \meta{key}|=|\meta{var} 的形式提供宏包选项,你可以在调用宏包
% 的时候直接设置这些选项,也可以在调用宏包之后使用 \tn{xeCJKsetup} 来设置这些选
% 项。\pkg{xeCJK} 内部调用 \pkg{fontspec} 宏包,可以在调用 \pkg{xeCJK} 的时候,
% 使用它的宏包选项。\pkg{xeCJK} 会将 \pkg{fontspec} 的选项传递给它。
%
% \begin{function}{\xeCJKsetup}
% \begin{syntax}
% \tn{xeCJKsetup} \{\meta{key_1}=\meta{val_1}, \meta{key_2}=\meta{val_2}, ...\}
% \end{syntax}
% 其中 \meta{key_1}, \meta{key_2} 是设置选项,而 \meta{val_1}, \meta{val_2} 则是对应选项的
% 设置内容。多个选项可以在一个语句中完成设置。例如
% \begin{ctexexam}
% \usepackage[PunctStyle=kaiming]{xeCJK}
% \end{ctexexam}
% 等价于
% \begin{ctexexam}
% \usepackage{xeCJK}
% ......
% \xeCJKsetup{PunctStyle=kaiming}
% \end{ctexexam}
% \end{function}
%
% 带有 \exptarget\expstar{} 或者 \rexptarget\rexpstar{} 标记的选项或命令
% 只能在导言区中使用,其中 \rexptarget\rexpstar{} 还表示这个选项或命令只
% 影响随后定义的 CJK 字体。其余不带特殊标记的选项或命令,如果没有特别说明,
% 则可以在导言区或正文中使用。\textbf{粗体}表示 \pkg{xeCJK} 的默认设置。
%
% \begin{function}[EXP,added=2012-11-22]{LocalConfig}
% \begin{syntax}
% LocalConfig = \Arg{\TTF|name}
% \end{syntax}
% 是否使用本地配置文件 \texttt{xeCJK-\meta{name}.cfg}。\meta{name} 可以是不包含
% 空格的任意使文件名合法的字符串。如果设置为 |true|,则使用的是 \texttt{xeCJK.cfg};
% 设置为 |false| 则不载入配置文件。可以把将要在下文介绍到的对 \pkg{xeCJK} 的一些
% 设置(例如设置常用 CJK 字体、修改字符范围和定义新的标点输出格式等)保存到文件
% \texttt{xeCJK-\meta{name}.cfg}。然后把这个文件放在本地的 |TDS| 目录下的适当
% 位置。使用 \TeX~Live 的用户,可以新建下列目录,然后再把
% \texttt{xeCJK-\meta{name}.cfg} 放在里面:
% \begin{frameverb}
% texlive/texmf-local/tex/xelatex/xecjk
% \end{frameverb}
% 最后还需要在命令行下执行 |mktexlsr|,刷新文件名数据库以便 \TeX 系统能够找到它。
% \end{function}
%
% 请注意,\pkg{xeCJK} 宏包中只有上述 |LocalConfig| 选项需要在调用 \pkg{xeCJK} 时
% 设置,而不能通过 \tn{xeCJKsetup} 来设置。
%
% \begin{function}{xeCJKactive}
% \begin{syntax}
% xeCJKactive = \meta{\TTF}
% \end{syntax}
% 打开/关闭对中文的特殊处理。事实上,这个选项会打开/关闭 \XeTeX 的整个字符类机制,依赖
% 这个机制的宏包都会受到影响。
% \end{function}
%
% \begin{function}{CJKspace}
% \begin{syntax}
% CJKspace = \meta{\TFF}
% \end{syntax}
% 缺省状态下,\pkg{xeCJK} 会忽略 CJK 文字之间的空格,使用这一选项来保留它们之间的空格。
% \end{function}
%
% \begin{function}[EXP,updated=2016-05-04]{CJKmath}
% \begin{syntax}
% CJKmath = \meta{\TFF}
% \end{syntax}
% 是否支持在数学环境中直接输入 CJK 字符。使用这个选项后,可以直接在数学环境中
% 输出 CJK 字符。\pkg{url} 宏包将一个 URL 放在一个特殊的数学环境中排版,所以如果在
% \tn{path} 等命令的路径参数中含有汉字,则需要启用这个选项,路径中的汉字才能显示。
% \end{function}
%
% \begin{function}{CJKglue}
% \begin{syntax}
% CJKglue = \{\tn{hskip} 0pt plus 0.08\tn{baselineskip}\}
% \end{syntax}
% 设置 CJK 文字之间插入的 |glue|,上边是 \pkg{xeCJK} 的默认值。一般来说,除非有
% 特殊需要(例如,改变文字间距等),否则不需要设置这个选项,使用默认值即可。如果要设置
% 这个选项,为了行末的对齐,设置的 |glue| 最好有一定的弹性。
% \end{function}
%
% \begin{function}{CJKecglue}
% \begin{syntax}
% CJKecglue = \Arg{glue}
% \end{syntax}
% 设置 CJK 文字与西文、CJK 文字与行内数学公式之间的间距,默认值是一个空格。使用这个
% 选项设置的 \meta{glue} 最好也要用一定的弹性。请注意,这里设置的 \meta{glue} 只影响
% \pkg{xeCJK} 根据需要自动添加的空白,源文件中直接输入的 CJK 文字与西文之间的空格不
% 受影响(直接输出)。有时候 \pkg{xeCJK} 可能不能正确地调整间距,需要手动加空格。
% \end{function}
%
% \begin{function}{xCJKecglue}
% \begin{syntax}
% xCJKecglue = \Arg{\TFF|glue}
% \end{syntax}
% 缺省状态下,\pkg{xeCJK} 不对源文件中直接输入的 CJK 文字与西文之间的空格进行调整,如
% 果需要调整,请使用这个选项。如果使用这个选项,将使用 |CJKecglue| 替换源文件中直接输
% 入的 CJK 文字与西文之间的空格。
% \end{function}
%
% \begin{function}[updated=2013-06-26]{CheckSingle}
% \begin{syntax}
% CheckSingle = \meta{\TFF}
% \end{syntax}
% 是否避免单个 CJK 文字单独占一个段落的最后一行。需要说明的是,这个选项只有在
% 段末的最后一个字是 CJK 文字或者标点符号,并且倒数第二和第三个字都是文字才能
% 正确处理处理孤字的问题。如果这倒数三个字有作为控制序列的参数的情况,那么一般
% 来说也不能正确处理。
% \end{function}
%
% \begin{function}[added=2015-04-08]{WidowPenalty}
% \begin{syntax}
% WidowPenalty = \Arg{penalty|(10000)}
% \end{syntax}
% 使用 \texttt{CheckSingle} 选项后,设置段末三个汉字之间的 penalty。
% 初始值为 \num{10000},即禁止在它们之间折行。
% \end{function}
%
% \begin{function}[added=2012-12-06]{PlainEquation}
% \begin{syntax}
% PlainEquation = \meta{\TFF}
% \end{syntax}
% 如果使用了 |$$...$$| 的形式来输入行间数学公式,就需要启用本选项,以便
% |CheckSingle| 选项能够正确识别。推荐使用 |\[...\]| 的形式来输入行间数学公式。
% \end{function}
%
% \begin{function}[added=2012-12-04]{NewLineCS,NewLineCS+,NewLineCS-}
% \begin{syntax}
% NewLineCS = \{ \tn{par} \tn{[} \}
% \end{syntax}
% 设置造成断行的控制序列,以便 |CheckSingle| 选项能够正确识别。
% 以上是 \pkg{xeCJK} 的初始设置。
% \end{function}
%
% \begin{function}[added=2012-12-04]{EnvCS,EnvCS+,EnvCS-}
% \begin{syntax}
% EnvCS = \{ \tn{begin} \tn{end} \}
% \end{syntax}
% 设置 \LaTeX 环境开始和结束的控制序列,以便 |CheckSingle| 选项能够正确识别。
% 以上是 \pkg{xeCJK} 的初始设置。
% \end{function}
%
% \begin{function}[updated=2012-12-06]{InlineEnv,InlineEnv+,InlineEnv-}
% \begin{syntax}
% InlineEnv = \{\meta{env_1}, \meta{env_2}, \meta{env_3}, ...\}
% \end{syntax}
% 在使用 |CheckSingle| 选项的时候,\pkg{xeCJK} 会将 CJK 文字后接着的 \LaTeX 环境的
% 开始 |\begin{...}| 和结束 |\end{...}| 视为断行的地方,如果有某些特殊
% 的 \LaTeX 环境没有造成断行,可以使用这个选项来声明它,以便 |CheckSingle| 能正确识别。
% \end{function}
%
% \begin{function}{AutoFallBack}
% \begin{syntax}
% AutoFallBack = \meta{\TFF}
% \end{syntax}
% 当文档中有个别生僻字时,可以使用这个选项,自动使用预先设置好的后备字体来输出这些生僻
% 字。后备字体的设置方法将在 \ref{subsec:fontset} 节中介绍。
% \end{function}
%
% \begin{function}[rEXP]{AutoFakeBold}
% \begin{syntax}
% AutoFakeBold = \Arg{\TFF|数字}
% \end{syntax}
% 全局设定当没有声明对应的粗体时,是否使用^^A
% \textbf{\CJKfontspec[AutoFakeBold]{FandolSong-Regular.otf}伪粗体};
% 当输入的是数字时,将使用伪粗体,并将使用输入的数字作为伪粗体的默认粗细程度。
% \end{function}
%
% \begin{function}[rEXP]{AutoFakeSlant}
% \begin{syntax}
% AutoFakeSlant = \Arg{\TFF|数字}
% \end{syntax}
% 全局设定当没有声明对应的斜体时,是否使用^^A
% \textit{\CJKfontspec[AutoFakeSlant]{FandolSong-Regular.otf}伪斜体};
% 当输入的是数字时,将使用伪斜体,并将使用输入的数字作为伪斜体的默认倾斜程度。
% 倾斜程度的取值范围是 $[-0.999, 0.999]$。
% \end{function}
%
% \begin{function}[rEXP]{EmboldenFactor}
% \begin{syntax}
% EmboldenFactor = \Arg{数字|(4)}
% \end{syntax}
% 设置伪粗体的默认粗细程度。
% \end{function}
%
% \begin{function}[rEXP]{SlantFactor}
% \begin{syntax}
% SlantFactor = \Arg{数字|(0.167)}
% \end{syntax}
% 设置伪斜体的倾斜程度,范围是 $[-0.999, 0.999]$。
% \end{function}
%
% \begin{function}[updated=2012-11-10]{PunctStyle}
% \begin{syntax}
% PunctStyle = \Arg{(quanjiao)|banjiao|kaiming|hangmobanjiao|CCT|plain|...}
% \end{syntax}
% 设置标点处理格式。\pkg{xeCJK} 中预先定义好的格式为
% \begin{optdesc}
% \item[quanjiao] 全角式:所有标点占一个汉字宽度,相邻两个标点占 1.5 汉字宽度;
% \item[banjiao] 半角式:所有标点占半个汉字宽度;
% \item[kaiming] 开明式:句末点号用全角,其他半角;
% \item[hangmobanjiao] 行末半角式:所有标点占一个汉字宽度,行首行末对齐;
% \item[CCT] CCT 格式:所有标点符号的宽度略小于一个汉字宽度;
% \item[plain] 原样(不调整标点间距)。
% \end{optdesc}
% 可以使用 \ref{subsec:punctstyle} 中介绍的 \tn{xeCJKDeclarePunctStyle} 定义新的标点
% 格式。
% \end{function}
%
% \begin{function}[added=2018-01-24]{PunctFamily}
% \begin{syntax}
% PunctFamily = \Arg{(false)|family}
% \end{syntax}
% 默认情况下,CJK 标点符号的字体与 CJK 正文一致,\opt{PunctFamily} 用于单独对标点符号设置字体。
% \meta{family} 需要使用随后说明的 \tn{setCJKfamilyfont} 或 \tn{newCJKfontfamily}
% 预先定义。\opt{false} 表示取消本选项的作用,让标点符号字体与正文一致。
% \end{function}
%
% \begin{function}[EXP]{KaiMingPunct,KaiMingPunct+,KaiMingPunct-}
% \begin{syntax}
% KaiMingPunct = \Arg{( . 。? !)}
% \end{syntax}
% 设置开明(|kaiming|)标点处理格式时的句末点号,|KaiMingPunct| 后带的 |+| 与 |-|
% 分别表示从已有的开明句末点号中增加或减少标点。
% \end{function}
%
% \begin{function}[EXP]{LongPunct,LongPunct+,LongPunct-}
% \begin{syntax}
% LongPunct = \Arg{( — ⸺ ‥ … )}
% \end{syntax}
% 设置长标点,例如破折号“——”与省略号“……”,允许在长标点前后
% 断行,但是禁止在它们之间断行。
% \end{function}
%
% \begin{function}[EXP]{MiddlePunct,MiddlePunct+,MiddlePunct-}
% \begin{syntax}
% MiddlePunct = \Arg{( – — ⸺ · · ・ 〜゠~)}
% \end{syntax}
% 设置居中显示的标点,例如间隔号“\textbf{·}”。对于在 CJK 文字之间的居中标点,
% \pkg{xeCJK} 会根据不同的标点处理格式,调整居中标点与前后文字之间的空白,保证
% 其确实居中。对于行末出现的居中标点,允许在其后面断行,但禁止在它前面断行。
% \end{function}
%
% \begin{function}[EXP]{PunctWidth}
% \begin{syntax}
% PunctWidth = \Arg{length}
% \end{syntax}
% 缺省状态下,\pkg{xeCJK} 会根据所选择的标点处理格式自动计算标点所占的宽度,如果对缺
% 省设置不满意,可以通过这一选项来改变它。为了使得标点所占的宽度能够适应字体大小的变化,
% 这里设置的 |length| 的单位最好用 |em| 等相对距离单位,而不建议使用诸如 |pt| 之类的
% 绝对距离单位。这里的设置可用于除了 |plain| 以外的所有标点处理格式。同时,这里的
% 设置对所有的 CJK 标点都生效,如果只要设置部分标点,请使用 \ref{subsec:punct}~节的
% \tn{xeCJKsetwidth}。
% \end{function}
%
% \begin{function}[EXP,added=2013-08-22]{PunctBoundWidth}
% \begin{syntax}
% PunctBoundWidth = \Arg{length}
% \end{syntax}
% 与以上选项类似,但设置的是标点符号出现在行首/尾时的宽度。
% \end{function}
%
% \begin{function}{AllowBreakBetweenPuncts}
% \begin{syntax}
% AllowBreakBetweenPuncts = \meta{\TFF}
% \end{syntax}
% 缺省状态下,\pkg{xeCJK} 禁止在相邻 CJK 右标点和 CJK 左标点之间换行,可以使用
% 这一选项改变这一设置。
% \end{function}
%
% \begin{function}[updated=2016-05-13]{RubberPunctSkip}
% \begin{syntax}
% RubberPunctSkip = \meta{\TTF|plus|minus}
% \end{syntax}
% 缺省状态下,标点符号前/后的间距有一定的弹性。可以伸长到原始边界宽度,可以收缩到
% 标点另一侧的边界宽度。将本选项设置为 \texttt{plus},将只允许伸长;设置为
% \texttt{minus} 只允许收缩。设置为 \texttt{false} 将禁用这一特性,
% 从而使得前/后的间距为固定值。
% \end{function}
%
% \begin{function}[added=2012-12-02]{CheckFullRight}
% \begin{syntax}
% CheckFullRight = \meta{\TFF}
% \end{syntax}
% 某些控制序列要求不能在它的前面断行。但是在缺省状态下,单个全角右标点的后面总是
% 可以断行的。因此当这些控制序列出现在全角右标点后面时,可能会出现意料之外的断行。
% 此时可以使用这个选项来避免这个情况。
% \end{function}
%
% \begin{function}[added=2012-12-02]{NoBreakCS,NoBreakCS+,NoBreakCS-}
% \begin{syntax}
% NoBreakCS = \{ \tn{footnote} \tn{footnotemark} \tn{nobreak} \}
% \end{syntax}
% 设置不能在全角右标点后断行的控制序列。以上是 \pkg{xeCJK} 的默认设置。如果这些
% 控制序列在文档中只出现少量几次,也可以不必使用 |CheckFullRight| 选项,而是手工
% 在这些控制序列前面加上 \ref{subsec:others}~节介绍的 \tn{xeCJKnobreak}。
% \end{function}
%
% \begin{function}[updated=2013-11-16]{Verb}
% \begin{syntax}
% Verb = \meta{\TF|(env)|env+}
% \end{syntax}
% \texttt{true} 表示在 \tn{verb} 命令或 \texttt{verbatim} 环境里不自动调整中英文
% 之间的间距。\texttt{env} 选项在 \texttt{verbatim} 环境里自动计算中西文间距和中文
% 之间的间距,以便于保持代码的对齐;\texttt{env} 选项不调整 \tn{verb} 里的间距,^^A
% \texttt{env+} 选项还将正文里设置的间距应用到 \tn{verb} 里。^^A
% 这个选项对使用到 \tn{verbatim@font} 命令的情形均有效,更一般的情况可以使用
% \ref{subsec:others}~节介绍的 \tn{xeCJKVerbAddon}。\texttt{false} 表示不作任何
% 处理。以上选项的值除 \texttt{false} 外,都禁止在汉字之间和汉字与西文之间自动换行。
% \end{function}
%
% \begin{function}[rEXP,added=2014-03-01]{LoadFandol}
% \begin{syntax}
% LoadFandol = \meta{\TTF}
% \end{syntax}
% 当没有在导言区设置 CJK 字体时,是否使用 Fandol 字体。如果启用这个选项,需要
% 安装 \package{Fandol} 字体系列。
% \end{function}
%
% \subsection{字体设置与选择}
% \label{subsec:fontset}
%
% \begin{function}[EXP,updated=2016-11-18]{\setCJKmainfont}
% \begin{syntax}
% \tn{setCJKmainfont} \Arg{font name}\oarg{font features} 或\\
% \tn{setCJKmainfont} \oarg{font features} \Arg{font name}
% \end{syntax}
% 设置正文罗马族的 CJK 字体,影响 \tn{rmfamily} 和 \tn{textrm} 的字体。后面两个
% 参数继承自 \pkg{fontspec} 宏包, \meta{font features} 表示字体属性选项,
% \meta{font name} 是字体名。字体名可以是字体族名,也可以是字体的文件名,查
% 找字体名见 \ref{subsubsec:fontsearch}~节;可用的字体属性选项参见
% \pkg{fontspec} 宏包的文档。需要说明的是 \pkg{xeCJK} 修改了 |AutoFakeBold|
% 和 |AutoFakeSlant| 选项,以便配合全局伪粗体和伪斜体的设定。
%
% 出于兼容性考虑,字体属性可选项可以放在字体名称前面,也可以放在后面。
% 如果可选项放在后面,字体名称与可选项之间不要有空格或者换行。
% \end{function}
%
% \begin{function}[label = ]{AutoFakeBold,AutoFakeSlant}
% \begin{syntax}
% AutoFakeBold = \Arg{\TF|数字}
% AutoFakeSlant = \Arg{\TF|数字}
% \end{syntax}
% 局部设置当前字体族的伪粗和伪斜属性。如果没有在局部给出这些选项,将使用全局设定。
% \end{function}
%
% \begin{function}[added=2013-06-07]{Mapping}
% \begin{syntax}
% Mapping = \Arg{fullwidth-stop|full-stop|han-trad|han-simp|...}
% \end{syntax}
% \pkg{xeCJK} 提供了以上四个 \href{http://scripts.sil.org/teckit}{TECKit} 映射
% 文件,可以在设置字体的时候通过 \texttt{Mapping} 选项来使用它们。其中
% \texttt{fullwidth-stop} 用于将正常句号“。”转换成全角实心句号“.”,
% \texttt{full-stop} 的作用相反。\texttt{han-trad} 用于将简体中文转换成繁体中文,
% \texttt{han-simp} 的作用相反。需要注意的是,简繁互换都是简单机械的字字对译,
% 不能做到完全准确,使用时要小心。例如简体的“发挥”和“头发”被转换成繁体的
% “發揮”和“頭發”,显然后者应作“頭髮”。也可以根据实际需要,制作新的映射文件,
% 请参考 TECKit 的文档。
% \end{function}
%
% \begin{function}[EXP,updated=2016-11-18]{\setCJKsansfont}
% \begin{syntax}
% \tn{setCJKsansfont} \Arg{font name}\oarg{font features} 或\\
% \tn{setCJKsansfont} \oarg{font features} \Arg{font name}
% \end{syntax}
% 设置正文无衬线族的 CJK 字体,影响 \tn{sffamily} 和 \tn{textsf} 的字体。
% \end{function}
%
% \begin{function}[EXP,updated=2016-11-18]{\setCJKmonofont}
% \begin{syntax}
% \tn{setCJKmonofont} \Arg{font name}\oarg{font features} 或\\
% \tn{setCJKmonofont} \oarg{font features} \Arg{font name}
% \end{syntax}
% 设置正文等宽族的 CJK 字体,影响 \tn{ttfamily} 和 \tn{texttt} 的字体。
% \end{function}
%
% \begin{function}[EXP,updated=2016-11-18]{\setCJKfamilyfont}
% \begin{syntax}
% \tn{setCJKfamilyfont} \Arg{family} \Arg{font name}\oarg{font features} 或\\
% \tn{setCJKfamilyfont} \Arg{family} \oarg{font features} \Arg{font name}
% \end{syntax}
% 声明新的 CJK 字体族 \meta{family} 并指定字体。
% \end{function}
%
% \begin{function}[updated=2012-10-27]{\CJKfamily}
% \begin{syntax}
% \tn{CJKfamily} \Arg{family}
% \tn{CJKfamily} + \Arg{family}
% \tn{CJKfamily} - \Arg{family}
% \end{syntax}
% 用于在文档中切换 |CJK| 字体族,\meta{family} 必须预先声明。\tn{CJKfamily} 仅对
% CJK 字符类有效,\tn{CJKfamily}|+| 对所有字符类均有效,\tn{CJKfamily}|-| 对非 CJK 字
% 符类有效。当 \tn{CJKfamily}|+| 和 \tn{CJKfamily}|-| 的参数为空时,则使用当前的 |CJK| 字体族。
% \end{function}
%
% \begin{function}[EXP,updated=2016-11-18]{\newCJKfontfamily}
% \begin{syntax}
% \tn{newCJKfontfamily} \oarg{family} \cs{\meta{font-switch}} \Arg{font name}\oarg{font features} 或\\
% \tn{newCJKfontfamily} \oarg{family} \cs{\meta{font-switch}} \oarg{font features} \Arg{font name}
% \end{syntax}
% 声明新的 CJK 字体族 \meta{family} 并指定字体,并定义 \cs{\meta{font-switch}},在
% 文档中可以使用它来切换 CJK 字体族。可以不必指定 \meta{family},这时候 \meta{family}
% 将等于 \meta{font-switch}。
% \end{function}
%
% 事实上,\tn{newCJKfontfamily} 是 \tn{setCJKfamilyfont} 和
% \tn{CJKfamily} 的合并。例如
% \begin{ctexexam}
% \newCJKfontfamily[song]\songti{SimSun}
% \end{ctexexam}
% 等价于
% \begin{ctexexam}
% \setCJKfamilyfont{song}{SimSun}
% \newcommand*{\songti}{\CJKfamily{song}}
% \end{ctexexam}
%
% \begin{function}[updated=2016-11-18]{\CJKfontspec}
% \begin{syntax}
% \tn{CJKfontspec} \Arg{font name}\oarg{font features} 或\\
% \tn{CJKfontspec} \oarg{font features} \Arg{font name}
% \end{syntax}
% 在文档中定义新的 CJK 字体族,并马上使用它。
% \end{function}
%
% \begin{function}[rEXP]{\defaultCJKfontfeatures}
% \begin{syntax}
% \tn{defaultCJKfontfeatures} \Arg{font features}
% \end{syntax}
% 全局设置 CJK 字体族的默认选项。例如,使用
% \begin{ctexexam}
% \defaultCJKfontfeatures{Scale=0.962216}
% \end{ctexexam}
% 可以将全部 CJK 字体缩小为 |0.962216|。\pkg{xeCJK} 宏包的初始化设置是
% \begin{frameverb}
% \defaultCJKfontfeatures{Script=CJK}
% \end{frameverb}
% \end{function}
%
% \begin{function}[updated=2013-06-30]{\addCJKfontfeatures}
% \begin{syntax}
% \tn{addCJKfontfeatures} \Arg{font features}
% \tn{addCJKfontfeatures} * \Arg{font features}
% \tn{addCJKfontfeatures} \oarg{block_1, block_2, ...} \Arg{font features}
% \tn{addCJKfontfeatures} * \oarg{block_1, block_2, ...} \Arg{font features}
% \end{syntax}
% 临时增加当前使用的 CJK 字体的选项。第一条命令,仅对当前 CJK 主分区字体有效;
% 第二条对主分区和其他分区的字体都有效;第三条仅对可选参数中指定的分区有效;
% 第四条对主分区和可选参数中指定的分区有效。例如,使用
% \begin{ctexexam}
% \addCJKfontfeatures{Scale=1.1}
% \end{ctexexam}
% 可以将文档中当前使用的 CJK 主分区字体放大为 |1.1|。
% \end{function}
%
% \begin{function}{\CJKrmdefault}
% 保存 \tn{textrm} 和 \tn{rmfamily} 所使用的 CJK 字体族,默认值是 |rm|。
% \end{function}
%
% \begin{function}{\CJKsfdefault}
% 保存 \tn{textsf} 和 \tn{sffamily} 所使用的 CJK 字体族,默认值是 |sf|。
% \end{function}
%
% \begin{function}{\CJKttdefault}
% 保存 \tn{texttt} 和 \tn{ttfamily} 所使用的 CJK 字体族,默认值是 |tt|。
% \end{function}
%
% \begin{function}[updated=2013-01-01]{\CJKfamilydefault}
% 保存 \tn{textnormal} 和 \tn{normalfont} 所使用的 CJK 字体族。类似西文字体的 \tn{familydefault}。
% 初始值是 \tn{CJKrmdefault}。如果没有在导言区中修改它,\pkg{xeCJK} 会在导言区
% 结束的时候根据西文字体的情况自动更新 \tn{CJKfamilydefault}。因此,在导言区里使用
% \begin{frameverb}
% \renewcommand\familydefault{\sfdefault}
% \end{frameverb}
% 就可以将全文的 CJK 和西文默认字体都改为无衬线字体族。
% \end{function}
%
% \begin{function}[EXP,updated=2016-11-18]{\setCJKmathfont}
% \begin{syntax}
% \tn{setCJKmathfont} \Arg{font name}\oarg{font features} 或\\
% \tn{setCJKmathfont} \oarg{font features} \Arg{font name}
% \end{syntax}
% 设置数学公式中的 CJK 字体族。如果使用了 |CJKmath| 选项,但是没有使用
% \tn{setCJKmathfont} 设置数学公式中的 CJK 字体,那么将使用 \tn{CJKfamilydefault}
% 作为数学公式中的 CJK 字体。
% \end{function}
%
% \begin{function}[EXP, label=, updated=2016-11-18]{\setCJKfallbackfamilyfont}
% \begin{syntax}
% \tn{setCJKfallbackfamilyfont} \Arg{family} \Arg{font name}\oarg{font features} 或\\
% \tn{setCJKfallbackfamilyfont} \Arg{family} \oarg{font features} \Arg{font name}
% \end{syntax}
% 设置 CJK 字体族 \meta{family} 的备用字体。例如,使用
% \begin{ctexexam}
% \setCJKmainfont{SimSun}
% \setCJKfallbackfamilyfont{\CJKrmdefault}{SimSun-ExtB}
% \end{ctexexam}
% 可以将 |SimSun-ExtB| 作为 |SimSun| 的备用字体。
% \end{function}
%
% \begin{function}{FallBack}
% \begin{syntax}
% FallBack = \{\oarg{font features}\Arg{font name}\}
% \end{syntax}
% \pkg{xeCJK} 在 \meta{font features} 里增加了 |FallBack| 这个选项。用来在声明主
% 字体的时候,同时设置备用字体。例如,上面的例子等价于:
% \begin{ctexexam}
% \setCJKmainfont[FallBack=SimSun-ExtB]{SimSun}
% \end{ctexexam}
% 如果 |FallBack| 的值为空,将设置的是备用字体。例如,
% \begin{ctexexam}
% \setCJKmainfont[FallBack,AutoFakeBold,Scale=.97]{SimSun-ExtB}
% \end{ctexexam}
% 等价于
% \begin{ctexexam}
% \setCJKfallbackfamilyfont{\CJKrmdefault}[AutoFakeBold,Scale=.97]{SimSun-ExtB}
% \end{ctexexam}
% \end{function}
%
% \begin{function}[EXP,updated=2013-06-30]{\setCJKfallbackfamilyfont}
% \begin{syntax}
% \tn{setCJKfallbackfamilyfont} \Arg{family}
% \ \{
% \ \{\oarg{font features_1} \Arg{font name_1}\} ,
% \ \{\oarg{font features_2} \Arg{font name_2}\} ,
% \ ......
% \ \}\oarg{common font features} 或\\
% \tn{setCJKfallbackfamilyfont} \Arg{family} \oarg{common font features}
% \ \{
% \ \{\oarg{font features_1} \Arg{font name_1}\} ,
% \ \{\oarg{font features_2} \Arg{font name_2}\} ,
% \ ......
% \ \}
% \end{syntax}
% \tn{setCJKfallbackfamilyfont} 还可以用于设置多层的备用字体。例如,使用
% \begin{ctexexam}
% \setCJKmainfont[AutoFakeBold,AutoFakeSlant]{KaiTi_GB2312}
% \setCJKfallbackfamilyfont{\CJKrmdefault}[AutoFakeSlant]
% { [BoldFont=SimHei]{SimSun} ,
% [AutoFakeBold] {SimSun-ExtB} }
% \end{ctexexam}
% 之后,就设置了 |SimSun| 是 |KaiTi_GB2312| 的备用字体,而 |SimSun-ExtB| 是
% |SimSun| 的备用字体。若当前字体族缺字,并没有备用字体,则尝试使用
% \tn{CJKfamilydefault} 的备用字体。
% \end{function}
%
% \subsubsection{\XeTeX 的字体名查找}
% \label{subsubsec:fontsearch}
%
% 由于在 \pkg{fontspec} 宏包文档中缺少关于如何查看 \XeTeX{} 可用字体名的说明,
% 这里略作说明。
%
% \XeTeX{} 通常使用 fontconfig 库查找和调用字体,因此,可以用 |fc-list| 命令显
% 示可用的字体。在命令行(Windows 的“命令提示符”,Linux 的 Console)下运行以
% 下命令:
% \begin{frameverb}
% fc-list > fontlist.txt
% \end{frameverb}
% 可以将系统中所有安装的字体列表存入 \file{fontlist.txt} 文件中(可能很长)。
%
% |fc-list| 命令列出的信息很多,而且在安装字体较多的 Windows 系统上的输出将非
% 常庞大,如其中可能包含:
% \begin{frameverb}
% Times New Roman:style=cursiva,kurzíva,kursiv,Πλάγια,Italic,
% Kursivoitu,Italique,Dőlt,Corsivo,Cursief,kursywa,Itálico,Курсив,
% İtalik,Poševno,nghiêng,Etzana
% Times New Roman:style=Negreta cursiva,tučné kurzíva,fed kursiv,
% Fett Kursiv,Έντονα Πλάγια,Bold Italic,Negrita Cursiva,
% Lihavoitu Kursivoi,Gras Italique,Félkövér dőlt,Grassetto Corsivo,
% Vet Cursief,Halvfet Kursiv,Pogrubiona kursywa,Negrito Itálico,
% Полужирный Курсив,Tučná kurzíva,Fet Kursiv,Kalın İtalik,
% Krepko poševno,nghiêng đậm,Lodi etzana
% Times New Roman:style=Negreta,tučné,fed,Fett,Έντονα,Bold,Negrita,
% Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiona,Negrito,
% Полужирный,Fet,Kalın,Krepko,đậm,Lodia
% Times New Roman:style=Normal,obyčejné,Standard,Κανονικά,Regular,
% Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,
% thường,Arrunta
% 宋体,SimSun:style=Regular
% 黑体,SimHei:style=Normal,obyčejné,Standard,Κανονικά,Regular,Normaali,
% Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
% \end{frameverb}
% 在 \pkg{fontspec} 或 \pkg{xeCJK} 中使用的字体族名是上面列表中冒号前的部分。
% 例如可以使用
% \begin{ctexexam}
% \setmainfont{Times New Roman}
% \setCJKmainfont{SimSun} % 或者 \setCJKmainfont{宋体}
% \end{ctexexam}
% 来设置字体。
%
% 为了方便起见,|fc-list| 命令也可以加上各种选项控制输出格式,例如如果只要列出
% 所有的中文字体的字体族名,可以用命令:
% \begin{frameverb}
% fc-list -f "%{family}\n" :lang=zh > zhfont.txt
% \end{frameverb}
% 这样就把字体列表保存在文件 \file{zhfont.txt} 中\footnote{由于汉字编码原因,
% Windows 下总需要把字体列表输出的文件中防止乱码。}。这样列出的字体列表就比较
% 简明易用,如 Windows 下预装的中文字体:
% \begin{frameverb}
% Arial Unicode MS
% FangSong,仿宋
% KaiTi,楷体
% Microsoft YaHei,微软雅黑
% MingLiU,細明體
% NSimSun,新宋体
% PMingLiU,新細明體
% SimHei,黑体
% SimSun,宋体
% \end{frameverb}
% 要列出日文和韩文的字体,可以把 |:lang=zh| 选项中的 |zh| 改成 |ja| 或 |ko|。
%
% \pkg{fontspec} 和 \pkg{xeCJK} 也可以使用字体的文件名访问字体。例如 Windows
% 下的宋体也可以使用命令:
% \begin{frameverb}
% \setCJKmainfont{simsun.ttc}
% \end{frameverb}
% 来设置。设置字体文件名的相关选项和语法在 \pkg{fontspec} 宏包手册中叙述甚详,
% 这里不再赘述。有个别字体名不规范的中文字体,\pkg{xeCJK} 宏包可能无法正确地通
% 过字体名访问,那么也可以使用这种方式设置。
%
% \subsection{CJK 分区字体设置}
% \label{subsec:block}
%
% 众所周知,CJK 文字数量极其庞大,单一的字体不可能涵盖所有的 CJK 文字。\pkg{xeCJK} 可
% 以在同一 CJK 字体族下,自动使用不同的字体输出 CJK 字符范围内不同区块里的文字。首先要
% 声明 CJK 子分区。
%
% \begin{function}[EXP]{\xeCJKDeclareSubCJKBlock}
% \begin{syntax}
% \tn{xeCJKDeclareSubCJKBlock} \Arg{block} \Arg{block range}
% \tn{xeCJKDeclareSubCJKBlock} * \Arg{block} \Arg{block range}
% \end{syntax}
% 其中 \meta{block range} 是逗号列表,可以是 CJK 字符的 |Unicode| 范围,也可以是单个字符
% 的 |Unicode|。例如
% \end{function}
% \begin{ctexexam}
% { `中 -> `文 , "3400 -> "4DBF , "5000 -> "7000 , `汉 , `字 , "3500 }
% \end{ctexexam}
% 的形式。需要注意的是,这里设置的 \meta{block range} 除非确实需要(例如某些特殊字体使用
% 了 |Unicode| 中的私人使用区的情况),否则不要超出源代码中预设的
% \hyperlink{CJKcharclass}{CJK 文字范围}。使用
% \begin{ctexexam}