├── adjustment-parameters.tex
├── SourceHanSerifSCSupplementA.tex
├── README.md
├── allow-frac-scale.tex
├── fix-mathoperator-equity.tex
├── spaces.tex
├── fix-mathoperator-concourse.tex
├── Example.tex
├── README-EN.md
├── punct-and-digits.tex
├── SourceHanSerifSCSupplementB.tex
├── LICENSE
├── SVG
├── Example.svg
└── Example-1-3.svg
├── mtpro2-patch.tex
└── mtpro2-glyph-set.tex
/adjustment-parameters.tex:
--------------------------------------------------------------------------------
1 | %
2 | % This is file `adjustment-parameters.tex'.
3 | %
4 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5 | %
6 | \expandafter\edef\csname current@catcode\endcsname{\the\catcode`\@}
7 | \catcode`\@=11 %
8 | \def\setCJKecglue@frac#1{%
9 | \xeCJKsetup
10 | {xCJKecglue={\hskip\glueexpr6em plus3em minus2em*#1\relax}}%
11 | }
12 | \newcommand*\setCJKecglue{%
13 | \ifnum\strcmp{\f@family}{\rmdefault}=0 %
14 | % Code for the roman family
15 | % \ifnum\strcmp{\f@series}{\mddefault}=0 %
16 | % \ifnum\strcmp{\f@shape}{\updefault}=0 %
17 | % % Code for roman regular
18 | % \else
19 | % % Code for roman italic
20 | % \fi
21 | % \else
22 | % \ifnum\strcmp{\f@shape}{\updefault}=0 %
23 | % % Code for roman bold
24 | % \else
25 | % % Code for roman bolditalic
26 | % \fi
27 | % \fi
28 | \else
29 | \ifnum\strcmp{\f@family}{\sfdefault}=0 %
30 | % Code for the sans-serif family
31 | \else
32 | % Code for the mono-spaced family
33 | \fi
34 | \fi
35 | }
36 | \catcode`\@=\current@catcode\relax
37 | \endinput
--------------------------------------------------------------------------------
/SourceHanSerifSCSupplementA.tex:
--------------------------------------------------------------------------------
1 | %
2 | % Code points NOT covered by Source Han Serif SC 1.001
3 | %
4 | % Basic Multilingual Plane
5 | % - CJK Unified Ideographs
6 | % - CJK Compatibility Ideographs
7 | %
8 | % Supplementary Ideographic Plane
9 | % - CJK Compatibility Ideographs Supplement
10 | %
11 | \xeCJKDeclareSubCJKBlock{UI-CI-CIS}{
12 | % CJK Unified Ideographs
13 | "9FEB -> "9FFF,
14 | % CJK Compatibility Ideographs
15 | "FACF -> "FAD0,
16 | "FAD5 -> "FAD7,
17 | "FADA -> "FAFF,
18 | % CJK Compatibility Ideographs Supplement
19 | "2F803,
20 | "2F80D,
21 | "2F812,
22 | "2F816,
23 | "2F81C,
24 | "2F834,
25 | "2F838,
26 | "2F859,
27 | "2F860 -> "2F861,
28 | "2F86C,
29 | "2F871,
30 | "2F87B,
31 | "2F87D,
32 | "2F889,
33 | "2F88F,
34 | "2F891 -> "2F892,
35 | "2F897 -> "2F898,
36 | "2F8A4,
37 | "2F8B8,
38 | "2F8BE,
39 | "2F8CA,
40 | "2F8DD,
41 | "2F8E3,
42 | "2F8EC,
43 | "2F8F0,
44 | "2F8F7 -> "2F8F9,
45 | "2F8FB,
46 | "2F906,
47 | "2F90D,
48 | "2F910 -> "2F911,
49 | "2F91B,
50 | "2F91D,
51 | "2F91F,
52 | "2F923,
53 | "2F926 -> "2F927,
54 | "2F935,
55 | "2F937,
56 | "2F939,
57 | "2F93B -> "2F93D,
58 | "2F941 -> "2F944,
59 | "2F94D,
60 | "2F952,
61 | "2F954 -> "2F955,
62 | "2F95C -> "2F95E,
63 | "2F961,
64 | "2F965,
65 | "2F96B,
66 | "2F972 -> "2F973,
67 | "2F975,
68 | "2F977,
69 | "2F97B -> "2F97C,
70 | "2F97E,
71 | "2F980,
72 | "2F987 -> "2F98A,
73 | "2F997,
74 | "2F9A4 -> "2F9A6,
75 | "2F9AB,
76 | "2F9AD,
77 | "2F9B0 -> "2F9B1,
78 | "2F9C5,
79 | "2F9CB -> "2F9CC,
80 | "2F9D3,
81 | "2F9D8 -> "2F9D9,
82 | "2F9DD,
83 | "2F9E0 -> "2F9E1,
84 | "2F9E5,
85 | "2F9ED,
86 | "2F9F1,
87 | "2F9F6 -> "2F9F7,
88 | "2F9FB,
89 | "2F9FD,
90 | "2FA01,
91 | "2FA09,
92 | "2FA10,
93 | "2FA12 -> "2FA14,
94 | "2FA1D -> "2FA1F
95 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [简体中文](https://github.com/RuixiZhang42/font-pairing-guide)
2 | /
3 | [English](README-EN.md)
4 |
5 | # 字体搭配指南
6 |
7 | 针对中文与西文的混合排版,本指南着重讨论以下三个需要注意的问题:
8 |
9 | 1. 中西文不同字体之间相对字号大小(relative font size)的调整;
10 | 2. 字重(weight)的搭配;
11 | 3. 中文汉字与西文字母、数字之间空白间距的设定。
12 |
13 | 本指南不涉及「哪种西文字体与中文字体搭配起来比较好看」这类「审美」的问题,而是侧重讨论上述三个「技术性」问题。
14 |
15 | 对于在这里讨论出来的排版思路,我们以「XeLaTeX 排版系统」为例,提供具体的实现方法。
16 |
17 | ---
18 |
19 |
20 |
21 |
22 |
23 | 字号:思源宋体 Heavy 42 bp,TeX Gyre Termes Bold 46.41 bp。
24 | 行距:56 bp / 行间距:14 bp。*
25 |
26 |
27 |
28 |
29 | *在 TeX 中,1 bp = 1⁄72 in ≈ 0.35278 mm——即
30 | Adobe 软件与 Microsoft Office 中的「1 磅」, 而
31 | 1 pt = 100⁄7227 in ≈ 0.35146 mm。
32 |
33 | ---
34 |
35 | ## 相对字号大小的调整
36 |
37 | 我们先来看看下面这段话:
38 |
39 |
40 |
41 |
42 |
43 | 字号:思源宋体 Regular 16 bp,STIX Regular 16 bp。
44 |
45 |
46 |
47 |
48 | 不难看出,当我们读到「typography」、「τύπος」这些西文单词时,会有一种「西文矮了一截、就像掉下去了」的感觉。为了解决这个「搭配不协调」的问题,我们可以从西文字母的形状出发,探讨解决方法。
49 |
50 |
51 |
52 |
53 |
54 | 因为西文的大写字母「等高」与汉字相似,所以我们可以将**大写字母的中线与汉字的中线对齐**,以此作为指导。
55 |
56 |
57 |
58 |
59 |
60 | 上图:通过「上调西文的基线」来对齐大写字母与汉字的中线;
61 | 下图:通过「放大西文的字号」来对齐大写字母与汉字的中线。
62 |
63 |
64 |
65 |
66 | 事实上,由奥村晴彦开发的 [jsclasses](https://ctan.org/pkg/jsclasses) 文档类就搭配了
67 | 13 Q(3.25 mm)的日文与
68 | 10 pt(3.5146 mm)的西文,这意味着西文字号大约是日文字号的
69 | 1.08 倍。在直排时,jsclasses 会使用 [pLaTeX2e](https://ctan.org/pkg/platex)
70 | 提供的 `\adjustbaseline` 机制,对齐大写字母「M」与汉字的中线。
71 |
72 | 当然了,排版里讲究的是「视觉对齐」而非「数学严格对齐」。
--------------------------------------------------------------------------------
/allow-frac-scale.tex:
--------------------------------------------------------------------------------
1 | %
2 | % This is file `allow-frac-scale.tex'.
3 | %
4 | % The following code tries to hack into the LaTeX2e's NFSS!!!
5 | % In particular, the macro \empty@sfcnt, which is used by size
6 | % functions , s, gen, sgen, genb, sgenb, subf and ssubf,
7 | % is extended to support font scaling via fraction expressions.
8 | % For example, s*[6/5] in addition to s*[1.2]. Of course, this
9 | % requires eTeX's extensions of `expressions'.
10 | %
11 | % It should be input immediately before \documentclass:
12 | %
13 | % \input{allow-frac-scale}
14 | % \documentclass[]{}
15 | %
16 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17 | %
18 | \expandafter\edef\csname current@catcode\endcsname{\the\catcode`\@}
19 | \catcode`\@=11 %
20 | % Look ahead for a decimal or a fraction
21 | \ifx\detect@decimal@or@frac\@undefined
22 | \def\detect@decimal@or@frac#1/#2\@nil{%
23 | \def\@tempa{#2}%
24 | }
25 | \fi
26 | % A general-purpose macro \AssignScaledResult{#1}{#2}{#3}{#4}
27 | % #1: One of \numexpr, \dimexpr, \glueexpr or \muexpr
28 | % #2: The target register to hold the scaled result
29 | % #3: Scale factor, either a decimal or a fraction
30 | % #4: The original pre-scaled register
31 | \newcommand*\AssignScaledResult[4]{%
32 | \edef\@tempa{#3}%
33 | \expandafter\detect@decimal@or@frac\@tempa/\@nil
34 | \ifx\@tempa\@empty
35 | \expandafter\@firstoftwo
36 | \else
37 | \expandafter\@secondoftwo
38 | \fi
39 | {#2=#3#4}% scale by decimal
40 | {#2=#1#4*#3\relax}% scale by fraction
41 | }
42 | \RequirePackage{etoolbox}
43 | % Redefine \set@fontsize
44 | \patchcmd\set@fontsize
45 | {\baselineskip\f@linespread\baselineskip}
46 | {\AssignScaledResult\glueexpr\baselineskip\f@linespread\baselineskip}
47 | {\typeout{Support line spreading with fractions}}
48 | {\typeout{Couldn't patch \string\set@fontsize}}
49 | % Redefine \empty@sfcnt
50 | \patchcmd\empty@sfcnt
51 | {\@tempdimb \optional@arg\@tempdimb}
52 | {\AssignScaledResult\dimexpr\@tempdimb\optional@arg\@tempdimb}
53 | {\typeout{Support font scaling with fractions}}
54 | {\typeout{Couldn't patch \string\empty@sfcnt}}
55 | \catcode`\@=\current@catcode\relax
56 | \endinput
--------------------------------------------------------------------------------
/fix-mathoperator-equity.tex:
--------------------------------------------------------------------------------
1 | %
2 | % This is file `fix-mathoperator-equity.tex'.
3 | %
4 | % This file manually kerns operator names when using Equity.
5 | %
6 | % It should be input as late as possible:
7 | %
8 | % \input{fix-mathoperator-equity}
9 | %
10 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11 | %
12 | \expandafter\edef\csname current@catcode\endcsname{\the\catcode`\@}
13 | \catcode`\@=11 %
14 | % Make sure that amsopn is loaded
15 | \RequirePackage{amsopn}
16 | % Manual kerning
17 | \def\max{\qopname\relax m{max}}
18 | \def\min{\qopname\relax m{min}}
19 | \def\sup{\qopname\relax m{sup}}
20 | \def\inf{\qopname\relax m{inf}}
21 | \def\lim{\qopname\relax m{lim}}
22 | \def\limsup{\qopname\relax m{lim\,sup}}
23 | \def\liminf{\qopname\relax m{lim\,inf}}
24 | \def\argmax{\qopname\relax m{arg\,max}}
25 | \def\argmin{\qopname\relax m{arg\,min}}
26 | \def\esssup{\qopname\relax m{es\kern-0.010em s\,sup}}
27 | \def\essinf{\qopname\relax m{es\kern-0.010em s\,inf}}
28 | \def\exp{\qopname\relax o{e\kern-0.020em xp}}
29 | \def\log{\qopname\relax o{log}}
30 | \def\ln{\qopname\relax o{ln}}
31 | \def\lg{\qopname\relax o{lg}}
32 | \def\sin{\qopname\relax o{sin}}
33 | \def\cos{\qopname\relax o{cos}}
34 | \def\tan{\qopname\relax o{tan}}
35 | \def\cot{\qopname\relax o{cot}}
36 | \def\sec{\qopname\relax o{sec}}
37 | \def\csc{\qopname\relax o{csc}}
38 | \def\arcsin{\qopname\relax o{ar\kern-0.010em csin}}
39 | \def\arccos{\qopname\relax o{ar\kern-0.010em ccos}}
40 | \def\arctan{\qopname\relax o{ar\kern-0.010em ctan}}
41 | \def\arccot{\qopname\relax o{ar\kern-0.010em ccot}}
42 | \def\arcsec{\qopname\relax o{ar\kern-0.010em csec}}
43 | \def\arccsc{\qopname\relax o{ar\kern-0.010em ccsc}}
44 | \def\sinh{\qopname\relax o{sinh}}
45 | \def\cosh{\qopname\relax o{cosh}}
46 | \def\tanh{\qopname\relax o{tanh}}
47 | \def\coth{\qopname\relax o{coth}}
48 | \def\sech{\qopname\relax o{sech}}
49 | \def\csch{\qopname\relax o{csch}}
50 | \def\arsinh{\qopname\relax o{arsinh}}
51 | \def\arcosh{\qopname\relax o{ar\kern-0.010em cosh}}
52 | \def\artanh{\qopname\relax o{ar\kern 0.005em tanh}}
53 | \def\arcoth{\qopname\relax o{ar\kern-0.010em coth}}
54 | \def\arsech{\qopname\relax o{arsech}}
55 | \def\arcsch{\qopname\relax o{ar\kern-0.010em csch}}
56 | \def\arg{\qopname\relax o{arg}}
57 | \def\Re{\qopname\relax o{R\kern-0.020em e}}
58 | \def\Im{\qopname\relax o{Im}}
59 | \def\Arg{\qopname\relax o{Arg}}
60 | \def\Log{\qopname\relax o{Log}}
61 | \def\Ln{\qopname\relax o{Ln}}
62 | \def\Lg{\qopname\relax o{Lg}}
63 | \def\Res{\qopname\relax m{R\kern-0.020em es}}
64 | \def\deg{\qopname\relax o{deg}}
65 | \def\gcd{\qopname\relax m{gcd}}
66 | \def\lcm{\qopname\relax m{lcm}}
67 | \def\det{\qopname\relax m{det}}
68 | \def\dim{\qopname\relax o{dim}}
69 | \def\ker{\qopname\relax o{k\kern-0.020em er}}
70 | \def\hom{\qopname\relax o{hom}}
71 | \def\injlim{\qopname\relax m{inj\,lim}}
72 | \def\projlim{\qopname\relax m{pr\kern-0.010em oj\,lim}}
73 | \def\Pr{\qopname\relax m{Pr}}
74 | \def\var{\qopname\relax o{var}}
75 | \def\Var{\qopname\relax o{V\kern-0.060em ar}}
76 | \def\cov{\qopname\relax o{co\kern-0.010em v}}
77 | \def\Cov{\qopname\relax o{Co\kern-0.010em v}}
78 | \def\VaR{\qopname\relax o{V\kern-0.060em aR}}
79 | \def\TVaR{\qopname\relax o{TV\kern-0.060em aR}}
80 | \catcode`\@=\current@catcode\relax
81 | \endinput
--------------------------------------------------------------------------------
/spaces.tex:
--------------------------------------------------------------------------------
1 | %
2 | % This is file `spaces.tex'.
3 | %
4 | % The standard usage is:
5 | %
6 | % \newcommand*\mathscalefractioninverse{25/26}
7 | % \input{spaces}
8 | % % Note:
9 | % % If not specified, then \mathscalefractioninverse
10 | % % will be set to 1.
11 | %
12 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13 | %
14 | \expandafter\edef\csname current@catcode\endcsname{\the\catcode`\@}
15 | \catcode`\@=11 %
16 | % Math scale fraction inverse
17 | \ifx\mathscalefractioninverse\@undefined
18 | \def\mathscalefractioninverse{1}
19 | \fi
20 | % Math spaces
21 | \thinmuskip =\muexpr\thinmuskip *\mathscalefractioninverse\relax
22 | \medmuskip =\muexpr\medmuskip *\mathscalefractioninverse\relax
23 | \thickmuskip=\muexpr\thickmuskip*\mathscalefractioninverse\relax
24 | % Text spaces
25 | \def\enspace{\kern\dimexpr\unexpanded{\f@size}\p@/2\relax}
26 | \def\enskip{\hskip\dimexpr\unexpanded{\f@size}\p@/2\relax\relax}
27 | \def\quad{\hskip\dimexpr\unexpanded{\f@size}\p@\relax\relax}
28 | \def\qquad{\hskip\dimexpr\unexpanded{\f@size}\p@*2\relax\relax}
29 | % \, and friends need extra care
30 | \AtBeginDocument{%
31 | \@ifpackageloaded{amsmath}{%
32 | \renewcommand\,%
33 | {\tmspace+\thinmuskip{\dimexpr\unexpanded{\f@size}\p@/6}}%
34 | \let\thinspace\,%
35 | \renewcommand\!%
36 | {\tmspace-\thinmuskip{\dimexpr\unexpanded{\f@size}\p@/6}}%
37 | \let\negthinspace\!%
38 | \renewcommand\:%
39 | {\tmspace+\medmuskip{\dimexpr\unexpanded{\f@size}\p@*2/9}}%
40 | \let\medspace\:%
41 | \renewcommand\negmedspace
42 | {\tmspace-\medmuskip{\dimexpr\unexpanded{\f@size}\p@*2/9}}%
43 | \renewcommand\;%
44 | {\tmspace+\thickmuskip{\dimexpr\unexpanded{\f@size}\p@*5/18}}%
45 | \let\thickspace\;%
46 | \renewcommand\negthickspace
47 | {\tmspace-\thickmuskip{\dimexpr\unexpanded{\f@size}\p@*5/18}}%
48 | \renewcommand\bmod{\nonscript\mskip-\medmuskip\mkern\thickmuskip\mathbin
49 | {\operator@font mod}\penalty900
50 | \mkern\thickmuskip\nonscript\mskip-\medmuskip}%
51 | \renewcommand\pod[1]{\allowbreak
52 | \if@display\mkern\muexpr18mu*\mathscalefractioninverse\relax
53 | \else\mkern\muexpr8mu*\mathscalefractioninverse\relax\fi(#1)}%
54 | \renewcommand\pmod[1]{\pod{{\operator@font mod}\,\,#1}}%
55 | \renewcommand\mod[1]{\allowbreak
56 | \if@display\mkern\muexpr18mu*\mathscalefractioninverse\relax
57 | \else\mkern\muexpr12mu*\mathscalefractioninverse\relax\fi
58 | {\operator@font mod}\,\,#1}%
59 | \renewcommand\minalignsep{\dimexpr\unexpanded{\f@size}\p@\relax}%
60 | \renewcommand\mintagsep{0.5\dimexpr\unexpanded{\f@size}\p@\relax}%
61 | \multlinegap\f@size\p@\relax
62 | \multlinetaggap\f@size\p@\relax
63 | }{%
64 | \def\thinspace{\kern\dimexpr\unexpanded{\f@size}\p@/6\relax}%
65 | \def\negthinspace{\kern-\dimexpr\unexpanded{\f@size}\p@/6\relax}%
66 | \def\bmod{%
67 | \nonscript\mskip-\medmuskip\mkern\thickmuskip
68 | \mathbin{\operator@font mod}\penalty900\mkern\thickmuskip
69 | \nonscript\mskip-\medmuskip}%
70 | \def\pmod#1{%
71 | \allowbreak\mkern\muexpr18mu*\mathscalefractioninverse\relax
72 | ({\operator@font mod}\,\,#1)}%
73 | }%
74 | }
75 | \catcode`\@=\current@catcode\relax
76 | \endinput
--------------------------------------------------------------------------------
/fix-mathoperator-concourse.tex:
--------------------------------------------------------------------------------
1 | %
2 | % This is file `fix-mathoperator-concourse.tex'.
3 | %
4 | % This file manually kerns operator names when using Concourse.
5 | %
6 | % It should be input as late as possible:
7 | %
8 | % \input{fix-mathoperator-concourse}
9 | %
10 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11 | %
12 | \expandafter\edef\csname current@catcode\endcsname{\the\catcode`\@}
13 | \catcode`\@=11 %
14 | % Make sure that amsopn is loaded
15 | \RequirePackage{amsopn}
16 | % Manual kerning
17 | \def\max{\qopname\relax m{max}}
18 | \def\min{\qopname\relax m{min}}
19 | \def\sup{\qopname\relax m{sup}}
20 | \def\inf{\qopname\relax m{in\kern-0.010em f}}
21 | \def\lim{\qopname\relax m{lim}}
22 | \def\limsup{\qopname\relax m{lim\,sup}}
23 | \def\liminf{\qopname\relax m{lim\,in\kern-0.010em f}}
24 | \def\argmax{\qopname\relax m{ar\kern-0.010em g\,max}}
25 | \def\argmin{\qopname\relax m{ar\kern-0.010em g\,min}}
26 | \def\esssup{\qopname\relax m{ess\,sup}}
27 | \def\essinf{\qopname\relax m{ess\,in\kern-0.010em f}}
28 | \def\exp{\qopname\relax o{e\kern-0.010em xp}}
29 | \def\log{\qopname\relax o{log}}
30 | \def\ln{\qopname\relax o{ln}}
31 | \def\lg{\qopname\relax o{lg}}
32 | \def\sin{\qopname\relax o{sin}}
33 | \def\cos{\qopname\relax o{cos}}
34 | \def\tan{\qopname\relax o{tan}}
35 | \def\cot{\qopname\relax o{cot}}
36 | \def\sec{\qopname\relax o{sec}}
37 | \def\csc{\qopname\relax o{csc}}
38 | \def\arcsin{\qopname\relax o{ar\kern-0.010em csin}}
39 | \def\arccos{\qopname\relax o{ar\kern-0.010em ccos}}
40 | \def\arctan{\qopname\relax o{ar\kern-0.010em c\kern 0.010em tan}}
41 | \def\arccot{\qopname\relax o{ar\kern-0.010em ccot}}
42 | \def\arcsec{\qopname\relax o{ar\kern-0.010em csec}}
43 | \def\arccsc{\qopname\relax o{ar\kern-0.010em ccsc}}
44 | \def\sinh{\qopname\relax o{sinh}}
45 | \def\cosh{\qopname\relax o{cosh}}
46 | \def\tanh{\qopname\relax o{tanh}}
47 | \def\coth{\qopname\relax o{coth}}
48 | \def\sech{\qopname\relax o{sech}}
49 | \def\csch{\qopname\relax o{csch}}
50 | \def\arsinh{\qopname\relax o{arsinh}}
51 | \def\arcosh{\qopname\relax o{ar\kern-0.010em cosh}}
52 | \def\artanh{\qopname\relax o{ar\kern 0.020em tanh}}
53 | \def\arcoth{\qopname\relax o{ar\kern-0.010em coth}}
54 | \def\arsech{\qopname\relax o{arsech}}
55 | \def\arcsch{\qopname\relax o{ar\kern-0.010em csch}}
56 | \def\arg{\qopname\relax o{ar\kern-0.010em g}}
57 | \def\Re{\qopname\relax o{R\kern-0.010em e}}
58 | \def\Im{\qopname\relax o{Im}}
59 | \def\Arg{\qopname\relax o{Ar\kern-0.010em g}}
60 | \def\Log{\qopname\relax o{Log}}
61 | \def\Ln{\qopname\relax o{Ln}}
62 | \def\Lg{\qopname\relax o{Lg}}
63 | \def\Res{\qopname\relax m{R\kern-0.010em es}}
64 | \def\deg{\qopname\relax o{deg}}
65 | \def\gcd{\qopname\relax m{g\kern-0.010em cd}}
66 | \def\lcm{\qopname\relax m{lcm}}
67 | \def\det{\qopname\relax m{det}}
68 | \def\dim{\qopname\relax o{dim}}
69 | \def\ker{\qopname\relax o{k\kern-0.010em er}}
70 | \def\hom{\qopname\relax o{hom}}
71 | \def\injlim{\qopname\relax m{inj\,lim}}
72 | \def\projlim{\qopname\relax m{pr\kern-0.010em oj\,lim}}
73 | \def\Pr{\qopname\relax m{Pr}}
74 | \def\var{\qopname\relax o{v\kern-0.010em ar}}
75 | \def\Var{\qopname\relax o{V\kern-0.050em ar}}
76 | \def\cov{\qopname\relax o{co\kern-0.010em v}}
77 | \def\Cov{\qopname\relax o{Co\kern-0.010em v}}
78 | \def\VaR{\qopname\relax o{V\kern-0.050em aR}}
79 | \def\TVaR{\qopname\relax o{T\kern 0.020em V\kern-0.050em aR}}
80 | \catcode`\@=\current@catcode\relax
81 | \endinput
--------------------------------------------------------------------------------
/Example.tex:
--------------------------------------------------------------------------------
1 | % !TeX program = XeLaTeX
2 | % !TeX encoding = UTF-8 Unicode
3 | \documentclass[
4 | varwidth=24884759sp,
5 | convert=pdf2svg
6 | ]{standalone}
7 | \input{allow-frac-scale}
8 | \usepackage{xcolor}
9 | \definecolor{ImperialRed}{HTML}{ED2939}
10 | \definecolor{PaleBlue}{HTML}{C1E9F2}
11 | \definecolor{CyanBlue}{HTML}{1EACEC}
12 | \usepackage{xeCJK}
13 | \newlength\ccwd
14 | \setlength\ccwd{2762834sp}
15 | \setmainfont{TeX Gyre Termes}[
16 | Scale=747/676,
17 | SmallCapsFeatures={LetterSpace=5}
18 | ]
19 | \setCJKmainfont{Source Han Serif SC Medium}[
20 | BoldFont=Source Han Serif SC Heavy,
21 | Language=Chinese Simplified
22 | ]
23 | \xeCJKsetup{
24 | xCJKecglue={\hskip\glueexpr6em plus3em minus2em*605/17928\relax}
25 | }
26 | \newcommand*\sampletext{汉字示例 Example}
27 | \newcommand*\ideographicbaseline{-0.120}
28 | \newcommand*\xheight{0.461}
29 | \newcommand*\capheight{0.676}
30 | \newcommand*\spacewidth{605/2988}
31 | \newlength\totalwidth
32 | \setlength\totalwidth{4\ccwd}
33 | \newcommand*\drawbox[8]{%
34 | \leavevmode
35 | \addtolength\totalwidth{\dimexpr1em*\spacewidth\relax}%
36 | \addtolength\totalwidth{#1em}%
37 | \addtolength\totalwidth{#2em}%
38 | \addtolength\totalwidth{#3em}%
39 | \addtolength\totalwidth{#4em}%
40 | \addtolength\totalwidth{#5em}%
41 | \addtolength\totalwidth{#6em}%
42 | \addtolength\totalwidth{#7em}%
43 | \addtolength\totalwidth{#8em}%
44 | \rlap{%
45 | \color{ImperialRed}%
46 | \rule[-0.1pt]{\totalwidth}{0.2pt}%
47 | }%
48 | \rlap{%
49 | \color{PaleBlue}%
50 | \rule[\dimexpr\xheight em-0.1pt]{\totalwidth}{0.2pt}%
51 | \kern-\totalwidth
52 | \rule[\dimexpr\capheight em-0.1pt]{\totalwidth}{0.2pt}%
53 | }%
54 | \rlap{%
55 | \color{CyanBlue}%
56 | \rule[\ideographicbaseline\ccwd]{\totalwidth}{0.2pt}%
57 | \kern-\totalwidth
58 | \rule[\dimexpr\ideographicbaseline\ccwd+\ccwd-0.2pt]{\totalwidth}{0.2pt}%
59 | \kern-\totalwidth
60 | \rule[\ideographicbaseline\ccwd]{0.2pt}{\ccwd}%
61 | \kern-0.2pt%
62 | \kern\ccwd
63 | \kern-0.1pt%
64 | \rule[\ideographicbaseline\ccwd]{0.2pt}{\ccwd}%
65 | \kern-0.1pt%
66 | \kern\ccwd
67 | \kern-0.1pt%
68 | \rule[\ideographicbaseline\ccwd]{0.2pt}{\ccwd}%
69 | \kern-0.1pt%
70 | \kern\ccwd
71 | \kern-0.1pt%
72 | \rule[\ideographicbaseline\ccwd]{0.2pt}{\ccwd}%
73 | \kern-0.1pt%
74 | \kern\ccwd
75 | \kern-0.1pt%
76 | \rule[\ideographicbaseline\ccwd]{0.2pt}{\ccwd}%
77 | \kern-0.1pt%
78 | \kern\dimexpr1em*\spacewidth\relax
79 | \kern-0.1pt%
80 | \rule[\ideographicbaseline\ccwd]{0.2pt}{\ccwd}%
81 | \kern-0.1pt%
82 | \kern#1em%
83 | \kern-0.1pt%
84 | \rule[\ideographicbaseline\ccwd]{0.2pt}{\ccwd}%
85 | \kern-0.1pt%
86 | \kern#2em%
87 | \kern-0.1pt%
88 | \rule[\ideographicbaseline\ccwd]{0.2pt}{\ccwd}%
89 | \kern-0.1pt%
90 | \kern#3em%
91 | \kern-0.1pt%
92 | \rule[\ideographicbaseline\ccwd]{0.2pt}{\ccwd}%
93 | \kern-0.1pt%
94 | \kern#4em%
95 | \kern-0.1pt%
96 | \rule[\ideographicbaseline\ccwd]{0.2pt}{\ccwd}%
97 | \kern-0.1pt%
98 | \kern#5em%
99 | \kern-0.1pt%
100 | \rule[\ideographicbaseline\ccwd]{0.2pt}{\ccwd}%
101 | \kern-0.1pt%
102 | \kern#6em%
103 | \kern-0.1pt%
104 | \rule[\ideographicbaseline\ccwd]{0.2pt}{\ccwd}%
105 | \kern-0.1pt%
106 | \kern#7em%
107 | \kern-0.1pt%
108 | \rule[\ideographicbaseline\ccwd]{0.2pt}{\ccwd}%
109 | \kern-0.1pt%
110 | \kern#8em%
111 | \kern-0.2pt%
112 | \rule[\ideographicbaseline\ccwd]{0.2pt}{\ccwd}%
113 | }%
114 | }
115 | \begin{document}
116 | \fontsize{2762834sp}{3683779sp}\selectfont
117 | \bfseries
118 | \rule{0pt}{3294679sp}%
119 | \rule{863386sp}{0pt}%
120 | \sampletext
121 | \rule{863386sp}{0pt}%
122 | \par
123 | \rule[-1194926sp]{0pt}{1194926sp}%
124 | \rule{863386sp}{0pt}%
125 | \drawbox
126 | {0.667}% E
127 | {0.500}% x
128 | {0.500}% a
129 | {0.833}% m
130 | {-0.015}% kern
131 | {0.556}% p
132 | {0.278}% l
133 | {0.444}% e
134 | \sampletext
135 | \end{document}
--------------------------------------------------------------------------------
/README-EN.md:
--------------------------------------------------------------------------------
1 | [简体中文](https://github.com/RuixiZhang42/font-pairing-guide)
2 | /
3 | [English](README-EN.md)
4 |
5 | # Font pairing guide
6 |
7 | 
8 |
9 | ## Introduction
10 |
11 | When creating a document that consists of both Latin and CJK (Chinese, Japanese,
12 | Korean) scripts, I often find that the Latin typefaces do not blend well
13 | with the CJK ones in terms of their relative proportions: The Latin typefaces
14 | often look too small compared with the CJK typefaces.
15 |
16 | To solve this problem in LaTeX, one approach is to scale up the Latin typefaces.
17 | For example, suppose that we want to use Times (or its clone) for Latin text and
18 | for math, but scaled to 108%. We can write
19 | ```latex
20 | \documentclass{article}% default font size for body text is 10pt
21 | \usepackage[no-math]{fontspec}
22 | \setmainfont{TeX Gyre Termes}[Scale=1.08]
23 | \usepackage[scaled=1.08]{newtxmath}
24 | \begin{document}
25 | Nominal font size for body text: \csname f@size\endcsname pt
26 |
27 | Times clone font size: \the\fontdimen6 \font
28 |
29 | Math font size: $\the\fontdimen6\space\textfont1\space$
30 | \end{document}
31 | ```
32 | Do you see the problems?
33 | 1. We have asked for a scale factor of 1.08, but LaTeX gives us Times
34 | scaled to 10.80002pt. What’s up with the extra 0.00002pt?
35 | 2. The `newtxmath` package has an option to scale math fonts. But what about
36 | other math font packages? For example, the (commercial) math font package
37 | [`mtpro2`](https://www.pctex.com/mtpro2.html) does not have a `scaled` option.
38 | To someone who purchases the “Complete” license,
39 | this can be very frustrating.
40 |
41 | ## [`allow-frac-scale.tex`](allow-frac-scale.tex)
42 |
43 | To address the first problem (the inaccurate scaling), I offer the file
44 | [`allow-frac-scale.tex`](allow-frac-scale.tex). This file takes advantage of
45 | eTeX’s “expressions”, so you can write your scale factors in
46 | *fractions* to get more accurate scaling results:
47 | ```latex
48 | \input{allow-frac-scale}
49 | \documentclass{article}% default font size for body text is 10pt
50 | \usepackage[no-math]{fontspec}
51 | \setmainfont{TeX Gyre Termes}[Scale=108/100]
52 | \usepackage[scaled=108/100]{newtxmath}
53 | \begin{document}
54 | Nominal font size for body text: \csname f@size\endcsname pt
55 |
56 | Times clone font size: \the\fontdimen6 \font
57 |
58 | Math font size: $\the\fontdimen6\space\textfont1\space$
59 | \end{document}
60 | ```
61 |
62 | ## [`mtpro2-patch.tex`](mtpro2-patch.tex)
63 |
64 | For those who have licensed [`mtpro2`](https://www.pctex.com/mtpro2.html),
65 | I offer the file [`mtpro2-patch.tex`](mtpro2-patch.tex). But first, you
66 | need to manually fix 14 bugs in your `mtpro2.sty` file (please let me know if
67 | you find more). Otherwise my patch file may produce errors. The instructions are
68 | outlined at the beginning of the file.
69 |
70 | This file started as a tool to scale the MathTime Pro 2 fonts, but over the
71 | years it grew to something much more. To use it, you write in your preamble:
72 | ```latex
73 | \usepackage[]{mtpro2}
74 | \newcommand*\mtpscale{}% optional
75 | \newcommand*\mtpscriptscale{}% optional
76 | \newcommand*\mtpscriptscriptscale{}% optional
77 | \input{mtpro2-patch}
78 | ```
79 | Here are the features:
80 | - Scale the entire MathTime Pro 2 family according to your scale factor(s),
81 | for both “Lite” and “Complete” versions.
82 | - Some font bugs are fixed too: The parentheses of your binomial coefficients
83 | are no longer overly large.
84 | - Provide a `\mtp@bBigg@` command to help you create `\biggg`, `\Biggg`, etc.
85 | - Fix the sizing of `\undercbrace` and `\overcbrace` when your font size is no
86 | longer 10pt.
87 | - Redefine `pmatrix` to always use large round parentheses, so you don’t
88 | need to write `\PARENS{\begin{matrix}...\end{matrix}}` anymore.
89 | - Redefine `Bmatrix` and `cases` to always use the appropriate braces (they know
90 | about curly, morphed, and straight braces).
91 | - Provide `\tabularbin` and `\tabularrel` in case (pun intended) you want to
92 | align your binary and relation symbols in `cases` or any stacked expressions.
93 | - Provide `\cramped`, with an implementation slightly different from (and less
94 | buggy than) the [`mathtools`](https://github.com/latex3/mathtools) version.
95 | - Provide `\subalign` if you want alignment points in your subscript stacks.
96 | - Finally, there are various fixes to the bugs I’ve found in the
97 | [`amsmath`](https://github.com/latex3/latex2e/tree/master/required/amsmath)
98 | package and in the LaTeX2e kernel. These bugs were reported to the LaTeX team,
99 | but they might never get fixed due to backward compatibility concerns.
--------------------------------------------------------------------------------
/punct-and-digits.tex:
--------------------------------------------------------------------------------
1 | %
2 | % This is file `punct-and-digits.tex'.
3 | %
4 | % The standard usage is:
5 | %
6 | % \usepackage{mtpro2}
7 | % \input{mtpro2-patch}
8 | % \input{punct-and-digits}
9 | %
10 | % The punctuation symbols , ; . \ldotp : \colon ! ? will
11 | % now come from family 0.
12 | %
13 | % The digits, in \displaystyle and \textstyle, will also
14 | % come from family 0. However, they will no longer respond
15 | % to font changing commands such as \mathbb. To get around
16 | % this, use, e.g., $\mathbb{\mtpdigit1}$.
17 | %
18 | % The kerning between math letters and comma/period will
19 | % be lost. If things looked wrong, say in $f,g$, you could
20 | % try $f\fpmk,g$. The `pmk' stands for `post mkern'.
21 | %
22 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
23 | %
24 | \expandafter\edef\csname current@catcode\endcsname{\the\catcode`\@}
25 | \catcode`\@=11 %
26 | \DeclareMathSymbol{,}{\mathpunct}{operators}{`,}
27 | \DeclareMathSymbol{;}{\mathpunct}{operators}{`;}
28 | \DeclareMathSymbol{.}{\mathord}{operators}{`.}
29 | \DeclareMathSymbol{\ldotp}{\mathpunct}{operators}{`.}
30 | \DeclareMathSymbol{:}{\mathrel}{operators}{`:}
31 | \let\colon\@undefined
32 | \DeclareMathSymbol{\colon}{\mathpunct}{operators}{`:}
33 | \DeclareMathSymbol{!}{\mathclose}{operators}{`!}
34 | \DeclareMathSymbol{?}{\mathclose}{operators}{`?}
35 | \begingroup
36 | \newcommand*\adjust@digit[1]{%
37 | \begingroup\lccode`\~`#1 \lowercase{\endgroup
38 | \expandafter\xdef\csname digit \romannumeral#1code\endcsname
39 | {\the\mathcode`#1\relax}%
40 | \gdef~{\csname digit \romannumeral#1\endcsname}%
41 | }%
42 | \expandafter\gdef\csname digit \romannumeral#1\endcsname{{%
43 | \mathchoice
44 | {\operator@font
45 | \mathchar\csname digit \romannumeral#1code\endcsname}%
46 | {\operator@font
47 | \mathchar\csname digit \romannumeral#1code\endcsname}%
48 | {\mathchar\csname digit \romannumeral#1code\endcsname}%
49 | {\mathchar\csname digit \romannumeral#1code\endcsname}%
50 | }}%
51 | \AtBeginDocument{\mathcode`#1="8000 }%
52 | }
53 | \adjust@digit{0}
54 | \adjust@digit{1}
55 | \adjust@digit{2}
56 | \adjust@digit{3}
57 | \adjust@digit{4}
58 | \adjust@digit{5}
59 | \adjust@digit{6}
60 | \adjust@digit{7}
61 | \adjust@digit{8}
62 | \adjust@digit{9}
63 | \newcommand*\generate@post@mkern[2]{%
64 | \expandafter\ifx\csname#1pmk\endcsname\relax
65 | \expandafter\gdef\csname#1pmk\endcsname{\mkern#2mu}%
66 | \fi
67 | }
68 | \generate@post@mkern{A} {0.180}
69 | \generate@post@mkern{B} {-0.927}
70 | \generate@post@mkern{C} {-1.620}
71 | \generate@post@mkern{D} {-0.900}
72 | \generate@post@mkern{E} {-0.360}
73 | \generate@post@mkern{F} {-1.845}
74 | \generate@post@mkern{G} {-0.927}
75 | \generate@post@mkern{H} {-1.710}
76 | \generate@post@mkern{I} {-1.260}
77 | \generate@post@mkern{J} {-1.530}
78 | \generate@post@mkern{K} {-0.846}
79 | \generate@post@mkern{L} {0.360}
80 | \generate@post@mkern{M} {-1.980}
81 | \generate@post@mkern{N} {-2.340}
82 | \generate@post@mkern{O} {-0.720}
83 | \generate@post@mkern{P} {-1.980}
84 | \generate@post@mkern{Q} {-0.180}
85 | \generate@post@mkern{R} {0.450}
86 | \generate@post@mkern{S} {-0.900}
87 | \generate@post@mkern{T} {-2.880}
88 | \generate@post@mkern{U} {-2.700}
89 | \generate@post@mkern{V} {-3.240}
90 | \generate@post@mkern{W} {-3.240}
91 | \generate@post@mkern{X} {-1.440}
92 | \generate@post@mkern{Y} {-3.060}
93 | \generate@post@mkern{Z} {-0.360}
94 | \generate@post@mkern{a} {0.180}
95 | \generate@post@mkern{b} {-0.360}
96 | \generate@post@mkern{d} {-0.720}
97 | \generate@post@mkern{f} {-4.500}
98 | \generate@post@mkern{g} {-0.360}
99 | \generate@post@mkern{i} {-0.990}
100 | \generate@post@mkern{j} {-2.700}
101 | \generate@post@mkern{k} {-0.360}
102 | \generate@post@mkern{l} {-0.540}
103 | \generate@post@mkern{m} {0.360}
104 | \generate@post@mkern{n} {0.360}
105 | \generate@post@mkern{p} {-0.360}
106 | \generate@post@mkern{q} {-0.360}
107 | \generate@post@mkern{r} {-1.980}
108 | \generate@post@mkern{s} {-0.360}
109 | \generate@post@mkern{t} {-0.540}
110 | \generate@post@mkern{v} {-0.180}
111 | \generate@post@mkern{y} {-0.360}
112 | \generate@post@mkern{dbar} {-0.720}
113 | \generate@post@mkern{ell} {0.540}
114 | \generate@post@mkern{Gamma} {-3.600}
115 | \generate@post@mkern{Delta} {0.540}
116 | \generate@post@mkern{Theta} {-0.900}
117 | \generate@post@mkern{Lambda} {0.990}
118 | \generate@post@mkern{Xi} {-0.900}
119 | \generate@post@mkern{Pi} {-1.260}
120 | \generate@post@mkern{Sigma} {-0.900}
121 | \generate@post@mkern{Upsilon} {-3.240}
122 | \generate@post@mkern{Phi} {-1.080}
123 | \generate@post@mkern{Psi} {-2.520}
124 | \generate@post@mkern{alpha} {-0.360}
125 | \generate@post@mkern{beta} {-0.486}
126 | \generate@post@mkern{varbeta} {-0.486}
127 | \generate@post@mkern{gamma} {-2.160}
128 | \generate@post@mkern{varepsilon}{-0.360}
129 | \generate@post@mkern{zeta} {-0.990}
130 | \generate@post@mkern{theta} {-0.720}
131 | \generate@post@mkern{vartheta} {-1.980}
132 | \generate@post@mkern{iota} {0.360}
133 | \generate@post@mkern{kappa} {-0.360}
134 | \generate@post@mkern{lambda} {0.900}
135 | \generate@post@mkern{mu} {0.234}
136 | \generate@post@mkern{nu} {-0.486}
137 | \generate@post@mkern{xi} {-0.486}
138 | \generate@post@mkern{pi} {-1.188}
139 | \generate@post@mkern{varpi} {-1.440}
140 | \generate@post@mkern{varrho} {0.180}
141 | \generate@post@mkern{sigma} {-1.980}
142 | \generate@post@mkern{varsigma} {-1.980}
143 | \generate@post@mkern{tau} {-0.990}
144 | \generate@post@mkern{upsilon} {-0.486}
145 | \generate@post@mkern{psi} {-1.800}
146 | \generate@post@mkern{omega} {0.360}
147 | \generate@post@mkern{upGamma} {-1.710}
148 | \generate@post@mkern{upDelta} {0.720}
149 | \generate@post@mkern{upTheta} {0.315}
150 | \generate@post@mkern{upSigma} {0.720}
151 | \generate@post@mkern{upUpsilon} {-0.990}
152 | \generate@post@mkern{upPhi} {-0.486}
153 | \generate@post@mkern{upPsi} {-0.990}
154 | \generate@post@mkern{upOmega} {0.990}
155 | \generate@post@mkern{upgamma} {-1.440}
156 | \generate@post@mkern{upvartheta}{-1.080}
157 | \generate@post@mkern{upvarpi} {-1.440}
158 | \generate@post@mkern{upsigma} {-1.440}
159 | \generate@post@mkern{upchi} {-0.720}
160 | \generate@post@mkern{uppsi} {-1.080}
161 | \endgroup
162 | \newcommand*\mtpdigit[1]{%
163 | \mathchar\csname digit \romannumeral#1code\endcsname
164 | }
165 | \AtBeginDocument{%
166 | \edef\@tempa{\csname opt@mtpro2.sty\endcsname}%
167 | \def\@tempb{{slantedGreek}}%
168 | \expandafter\expandafter\expandafter
169 | \in@\expandafter\@tempb\expandafter{\@tempa}%
170 | \ifin@\else
171 | \let\Gammapmk\upGammapmk
172 | \let\Deltapmk\upDeltapmk
173 | \let\Thetapmk\upThetapmk
174 | \let\Lambdapmk\relax
175 | \let\Xipmk\relax
176 | \let\Pipmk\relax
177 | \let\Sigmapmk\upSigmapmk
178 | \let\Upsilonpmk\upUpsilonpmk
179 | \let\Phipmk\upPhipmk
180 | \let\Psipmk\upPsipmk
181 | \let\Omegapmk\upOmegapmk
182 | \fi
183 | }
184 | \catcode`\@=\current@catcode\relax
185 | \endinput
--------------------------------------------------------------------------------
/SourceHanSerifSCSupplementB.tex:
--------------------------------------------------------------------------------
1 | %
2 | % Code points NOT covered by Source Han Serif SC 1.001
3 | %
4 | % Supplementary Ideographic Plane
5 | % - CJK Unified Ideographs Extensions B through F
6 | % Data source:
7 | % https://github.com/adobe-fonts/source-han-serif/blob/master/UniSourceHanSerifCN-UTF32-H
8 | %
9 | \xeCJKDeclareSubCJKBlock{Ext-BCDEF}{
10 | % CJK Unified Ideographs Extension B
11 | "20000 -> "2000A,
12 | "2000C -> "20086,
13 | "20088,
14 | "2008B -> "200A1,
15 | "200A3,
16 | "200A5 -> "200AF,
17 | "200B1 -> "200CB,
18 | "200CD -> "200F4,
19 | "200F6 -> "20157,
20 | "20159 -> "20163,
21 | "20165 -> "201A1,
22 | "201A3 -> "20212,
23 | "20214 -> "2032A,
24 | "2032C -> "20370,
25 | "20372 -> "20380,
26 | "20382 -> "203F8,
27 | "203FA -> "20449,
28 | "2044B -> "20508,
29 | "2050A -> "2053E,
30 | "20540 -> "205B0,
31 | "205B2 -> "205D5,
32 | "205D7 -> "20610,
33 | "20612 -> "20627,
34 | "20629 -> "20675,
35 | "20677 -> "206EB,
36 | "206ED -> "2074E,
37 | "20750 -> "207C7,
38 | "207C9 -> "20806,
39 | "20808 -> "20839,
40 | "2083B -> "208B8,
41 | "208BA -> "2090D,
42 | "2090F -> "2097B,
43 | "2097D -> "20983,
44 | "20985 -> "2099C,
45 | "2099E -> "20A63,
46 | "20A65 -> "20AD2,
47 | "20AD4 -> "20B1C,
48 | "20B1E -> "20B9E,
49 | "20BA0 -> "20BB6,
50 | "20BB8 -> "20CCF,
51 | "20CD1 -> "20D44,
52 | "20D46 -> "20D57,
53 | "20D59 -> "20DE0,
54 | "20DE2 -> "20E63,
55 | "20E65 -> "20E6C,
56 | "20E6E -> "20E94,
57 | "20E96 -> "20F5E,
58 | "20F60 -> "21200,
59 | "21202 -> "2123C,
60 | "2123E -> "21254,
61 | "21256 -> "21273,
62 | "21275 -> "2127A,
63 | "2127C -> "212D6,
64 | "212D8 -> "212E3,
65 | "212E5 -> "212FC,
66 | "212FE -> "2131A,
67 | "2131C -> "21335,
68 | "21337 -> "21343,
69 | "21345 -> "21399,
70 | "2139B -> "213C3,
71 | "213C5 -> "21412,
72 | "21414 -> "2146C,
73 | "2146F -> "215D6,
74 | "215D8 -> "21646,
75 | "21648 -> "216B3,
76 | "216B5 -> "21705,
77 | "21707 -> "21741,
78 | "21743 -> "218BC,
79 | "218BE -> "219C2,
80 | "219C4 -> "21A19,
81 | "21A1B -> "21C55,
82 | "21C57 -> "21D2C,
83 | "21D2E -> "21D44,
84 | "21D46 -> "21D61,
85 | "21D63 -> "21D77,
86 | "21D79 -> "21D91,
87 | "21D93 -> "21D9B,
88 | "21D9D -> "21DA0,
89 | "21DA2 -> "21DB6,
90 | "21DB8 -> "21DDF,
91 | "21DE1 -> "21E32,
92 | "21E35 -> "21F1D,
93 | "21F1F -> "21F75,
94 | "21F77 -> "21FF9,
95 | "21FFB -> "2217A,
96 | "2217C -> "22217,
97 | "22219 -> "2231D,
98 | "2231F -> "223AC,
99 | "223AE -> "22608,
100 | "2260A -> "226F2,
101 | "226F4 -> "2285A,
102 | "2285C -> "228AA,
103 | "228AC -> "2298E,
104 | "22990 -> "22AB7,
105 | "22AB9 -> "22B45,
106 | "22B47 -> "22B4E,
107 | "22B51 -> "22BA5,
108 | "22BA7 -> "22C1C,
109 | "22C1E -> "22C23,
110 | "22C25 -> "22DE0,
111 | "22DE2 -> "22E41,
112 | "22E43 -> "22FEA,
113 | "22FEC -> "231B5,
114 | "231B7 -> "231C2,
115 | "231C5 -> "231F4,
116 | "231F6 -> "23371,
117 | "23373 -> "233CB,
118 | "233CD -> "233CF,
119 | "233D1,
120 | "233D4,
121 | "233D6 -> "233D9,
122 | "233DB -> "233DE,
123 | "233E0 -> "233E3,
124 | "233E5 -> "233FD,
125 | "233FF -> "23449,
126 | "2344C -> "23450,
127 | "23452 -> "23464,
128 | "23466 -> "234E3,
129 | "234E5 -> "23559,
130 | "2355B -> "23593,
131 | "23595 -> "235C3,
132 | "235C5 -> "235CA,
133 | "235CC -> "23637,
134 | "2363B -> "23646,
135 | "23648 -> "2370B,
136 | "2370D -> "2371B,
137 | "2371D -> "2373E,
138 | "23740 -> "23762,
139 | "23765 -> "237E6,
140 | "237E8 -> "237F0,
141 | "237F2 -> "237FE,
142 | "23800 -> "23823,
143 | "23825 -> "2383C,
144 | "2383E -> "23A97,
145 | "23A99 -> "23C7E,
146 | "23C80 -> "23C96,
147 | "23C99 -> "23CBD,
148 | "23CBF -> "23CFD,
149 | "23CFF,
150 | "23D01 -> "23D0D,
151 | "23D0F -> "23D3F,
152 | "23D41 -> "23DD2,
153 | "23DD4 -> "23DF8,
154 | "23DFB -> "23E22,
155 | "23E24 -> "23F7D,
156 | "23F7F -> "2404A,
157 | "2404C -> "24095,
158 | "24097 -> "24102,
159 | "24104 -> "241C5,
160 | "241C7 -> "241FD,
161 | "241FF -> "242ED,
162 | "242EF -> "243BB,
163 | "243BD -> "243CF,
164 | "243D1 -> "24628,
165 | "2462A -> "246A4,
166 | "246A6 -> "247F0,
167 | "247F2 -> "24895,
168 | "24897 -> "248E8,
169 | "248EA -> "249DA,
170 | "249DC -> "24A4C,
171 | "24A4E -> "24A7C,
172 | "24A7E -> "24AC8,
173 | "24ACA -> "24B55,
174 | "24B57 -> "24B6E,
175 | "24B70 -> "24C15,
176 | "24C17 -> "24D13,
177 | "24D15 -> "24E03,
178 | "24E05 -> "24E0D,
179 | "24E0F -> "24E36,
180 | "24E38 -> "24E69,
181 | "24E6B -> "24E8A,
182 | "24E8C -> "24FF1,
183 | "24FF3 -> "25049,
184 | "2504B -> "25054,
185 | "25056 -> "25121,
186 | "25123 -> "251A8,
187 | "251AA -> "251CC,
188 | "251CE -> "251E4,
189 | "251E6 -> "2521D,
190 | "2521F -> "2524B,
191 | "2524D -> "2542D,
192 | "2542F -> "2548D,
193 | "2548F -> "254D8,
194 | "254DA -> "2550D,
195 | "2550F -> "25531,
196 | "25533 -> "25561,
197 | "25563 -> "255A6,
198 | "255A9 -> "2567E,
199 | "25680 -> "25770,
200 | "25772 -> "257A8,
201 | "257AA -> "257B3,
202 | "257B5 -> "25873,
203 | "25875 -> "259C3,
204 | "259C5 -> "259CB,
205 | "259CD -> "259D3,
206 | "259D5 -> "25AD6,
207 | "25AD8 -> "25AE2,
208 | "25AE5 -> "25AF0,
209 | "25AF2 -> "25BB1,
210 | "25BB3 -> "25C4A,
211 | "25C4C -> "25C63,
212 | "25C65 -> "25DA0,
213 | "25DA2 -> "25E2D,
214 | "25E2F -> "25E55,
215 | "25E57 -> "25E61,
216 | "25E63 -> "25E64,
217 | "25E66 -> "25EC1,
218 | "25EC3 -> "25ED6,
219 | "25ED9 -> "25EE7,
220 | "25EE9 -> "25F22,
221 | "25F24 -> "25F5B,
222 | "25F5D -> "25FD3,
223 | "25FD5 -> "25FDF,
224 | "25FE1 -> "25FFA,
225 | "25FFC -> "2600B,
226 | "2600D -> "26016,
227 | "26018 -> "2605F,
228 | "26061 -> "260EC,
229 | "260EE -> "26220,
230 | "26223 -> "26269,
231 | "2626B -> "2626F,
232 | "26271 -> "26285,
233 | "26287 -> "2634B,
234 | "2634D -> "26401,
235 | "26403 -> "2648C,
236 | "2648E -> "26675,
237 | "26677 -> "2667D,
238 | "2667F -> "266AF,
239 | "266B1 -> "2671C,
240 | "2671E -> "2677B,
241 | "2677D -> "268DC,
242 | "268DE -> "268E9,
243 | "268EB -> "26950,
244 | "26952 -> "2696E,
245 | "26970 -> "26998,
246 | "2699A -> "269DC,
247 | "269DE -> "26A1D,
248 | "26A1F -> "26A57,
249 | "26A59 -> "26A8B,
250 | "26A8D -> "26AB6,
251 | "26AB8 -> "26AFE,
252 | "26B00 -> "26B5B,
253 | "26B5D -> "26C20,
254 | "26C22 -> "26C28,
255 | "26C2A -> "26C72,
256 | "26C74 -> "26C9D,
257 | "26C9F -> "26CDC,
258 | "26CDE -> "26E3F,
259 | "26E41 -> "26E64,
260 | "26E66 -> "26F93,
261 | "26F95 -> "26FF5,
262 | "26FF9 -> "270F3,
263 | "270F5 -> "2710C,
264 | "2710E -> "27138,
265 | "2713A -> "273D9,
266 | "273DC -> "273FD,
267 | "273FF -> "2740F,
268 | "27411 -> "27448,
269 | "2744A -> "27613,
270 | "27616 -> "27630,
271 | "27632 -> "27683,
272 | "27685 -> "27692,
273 | "27694 -> "2770D,
274 | "2770F -> "27722,
275 | "27724 -> "27751,
276 | "27753 -> "278B1,
277 | "278B3 -> "27984,
278 | "27986 -> "279B3,
279 | "279B5 -> "27A83,
280 | "27A85 -> "27BB2,
281 | "27BB4 -> "27BBD,
282 | "27BBF -> "27BC6,
283 | "27BC8 -> "27C3B,
284 | "27C3D -> "27CB7,
285 | "27CB9 -> "27D72,
286 | "27D74 -> "27D9F,
287 | "27DA1 -> "27E0F,
288 | "27E11 -> "27FB6,
289 | "27FB8 -> "27FF8,
290 | "27FFA -> "28089,
291 | "2808B -> "280BA,
292 | "280BC -> "28276,
293 | "28278 -> "28281,
294 | "28283 -> "282F2,
295 | "282F4 -> "283CC,
296 | "283CE -> "28407,
297 | "28409 -> "2840B,
298 | "2840D -> "28454,
299 | "28456 -> "2856A,
300 | "2856C -> "285C7,
301 | "285CA -> "28677,
302 | "28679 -> "28694,
303 | "28696 -> "286D6,
304 | "286D8 -> "286F9,
305 | "286FB -> "287DF,
306 | "287E1 -> "28945,
307 | "28947 -> "28948,
308 | "2894A -> "2896A,
309 | "2896C -> "28986,
310 | "28989 -> "289B9,
311 | "289BC -> "28A1D,
312 | "28A1F -> "28A28,
313 | "28A2A -> "28A42,
314 | "28A44 -> "28A70,
315 | "28A72 -> "28A98,
316 | "28A9A -> "28ACC,
317 | "28ACE -> "28ADC,
318 | "28ADE -> "28AE3,
319 | "28AE5 -> "28B48,
320 | "28B4A -> "28BC0,
321 | "28BC2 -> "28BEE,
322 | "28BF0 -> "28C46,
323 | "28C48 -> "28C4E,
324 | "28C50,
325 | "28C52 -> "28C53,
326 | "28C55 -> "28CDC,
327 | "28CDE -> "28D0F,
328 | "28D11 -> "28D70,
329 | "28D72 -> "28DFA,
330 | "28DFC -> "28E0E,
331 | "28E10 -> "28E16,
332 | "28E18 -> "28E1E,
333 | "28E20 -> "28E35,
334 | "28E37 -> "28E88,
335 | "28E8A -> "28E98,
336 | "28E9A -> "28EEA,
337 | "28EEC -> "28EF5,
338 | "28EF7 -> "28F31,
339 | "28F33 -> "28FF7,
340 | "28FF9 -> "2929F,
341 | "292A1 -> "292B0,
342 | "292B2 -> "2948F,
343 | "29491 -> "295CE,
344 | "295D0 -> "2967E,
345 | "29680 -> "296EF,
346 | "296F1 -> "29718,
347 | "2971A -> "2974F,
348 | "29751 -> "2980F,
349 | "29811 -> "298C5,
350 | "298C7 -> "29A71,
351 | "29A73 -> "29D4A,
352 | "29D4C -> "29DDA,
353 | "29DDC -> "29E14,
354 | "29E16 -> "29E3C,
355 | "29E3E -> "29E48,
356 | "29E4A -> "29E89,
357 | "29E8B -> "29EC3,
358 | "29EC5 -> "29EDA,
359 | "29EDC -> "29EE8,
360 | "29EEA -> "29F7D,
361 | "29F7F -> "29F82,
362 | "29F84 -> "29F8B,
363 | "29F8D -> "29FCD,
364 | "29FCF -> "29FD6,
365 | "29FD8 -> "2A019,
366 | "2A01B -> "2A02E,
367 | "2A030 -> "2A081,
368 | "2A083 -> "2A0F8,
369 | "2A0FA -> "2A18F,
370 | "2A191 -> "2A2B1,
371 | "2A2B3 -> "2A38B,
372 | "2A38D -> "2A436,
373 | "2A438 -> "2A5F0,
374 | "2A5F2 -> "2A601,
375 | "2A603 -> "2A619,
376 | "2A61B -> "2A6B1,
377 | "2A6B3 -> "2A6DF,
378 | % CJK Unified Ideographs Extension C
379 | "2A700 -> "2A7DC,
380 | "2A7DE -> "2A8FA,
381 | "2A8FC -> "2A916,
382 | "2A918 -> "2A9E5,
383 | "2A9E7 -> "2AA2F,
384 | "2AA31 -> "2AA35,
385 | "2AA37 -> "2AA57,
386 | "2AA59 -> "2AFA1,
387 | "2AFA3 -> "2B126,
388 | "2B129 -> "2B136,
389 | "2B139 -> "2B1EC,
390 | "2B1EE -> "2B2FF,
391 | "2B301 -> "2B362,
392 | "2B364 -> "2B36E,
393 | "2B370 -> "2B371,
394 | "2B373 -> "2B37C,
395 | "2B37E -> "2B403,
396 | "2B405 -> "2B40F,
397 | "2B411 -> "2B412,
398 | "2B414 -> "2B460,
399 | "2B462 -> "2B4E6,
400 | "2B4E8 -> "2B4EE,
401 | "2B4F0 -> "2B4F5,
402 | "2B4F7 -> "2B4F8,
403 | "2B4FA -> "2B50C,
404 | "2B50F -> "2B535,
405 | "2B537 -> "2B5AD,
406 | "2B5B0 -> "2B5B2,
407 | "2B5B4 -> "2B5E6,
408 | "2B5E8 -> "2B5F3,
409 | "2B5F5 -> "2B61B,
410 | "2B61E -> "2B625,
411 | "2B629,
412 | "2B62B,
413 | "2B62D -> "2B694,
414 | "2B697 -> "2B6AC,
415 | "2B6AE -> "2B6EC,
416 | "2B6EE -> "2B73F,
417 | % CJK Unified Ideographs Extension D
418 | "2B740 -> "2B745,
419 | "2B747 -> "2B750,
420 | "2B752,
421 | "2B754 -> "2B759,
422 | "2B75B,
423 | "2B75D -> "2B764,
424 | "2B766 -> "2B775,
425 | "2B778 -> "2B77B,
426 | "2B77D -> "2B781,
427 | "2B783 -> "2B788,
428 | "2B78A,
429 | "2B78C -> "2B78D,
430 | "2B78F -> "2B793,
431 | "2B795 -> "2B7A8,
432 | "2B7AA -> "2B7AB,
433 | "2B7AD -> "2B7AE,
434 | "2B7B0 -> "2B7BC,
435 | "2B7BE -> "2B7C4,
436 | "2B7C6 -> "2B7C8,
437 | "2B7CA -> "2B7CE,
438 | "2B7D0 -> "2B7D1,
439 | "2B7D3 -> "2B7D7,
440 | "2B7D9 -> "2B7E5,
441 | "2B7E7 -> "2B7EF,
442 | "2B7F1 -> "2B7F8,
443 | "2B7FA -> "2B7FB,
444 | "2B7FD -> "2B805,
445 | "2B807 -> "2B809,
446 | "2B80B -> "2B80C,
447 | "2B80E -> "2B816,
448 | "2B818 -> "2B819,
449 | "2B81B,
450 | "2B81D -> "2B81F,
451 | % CJK Unified Ideographs Extension E
452 | "2B820 -> "2B8B7,
453 | "2B8B9 -> "2BAC6,
454 | "2BAC8 -> "2BB5E,
455 | "2BB60 -> "2BB61,
456 | "2BB63 -> "2BB7B,
457 | "2BB7D -> "2BB82,
458 | "2BB84 -> "2BC1A,
459 | "2BC1C -> "2BD76,
460 | "2BD78 -> "2BD86,
461 | "2BD88 -> "2BDF6,
462 | "2BDF8 -> "2BE28,
463 | "2BE2A -> "2C028,
464 | "2C02B -> "2C0A8,
465 | "2C0AA -> "2C0C9,
466 | "2C0CB -> "2C1D4,
467 | "2C1D6 -> "2C1D8,
468 | "2C1DA -> "2C1F8,
469 | "2C1FA -> "2C27B,
470 | "2C27D -> "2C287,
471 | "2C289 -> "2C2A3,
472 | "2C2A5 -> "2C316,
473 | "2C318 -> "2C35A,
474 | "2C35C -> "2C360,
475 | "2C362 -> "2C363,
476 | "2C365 -> "2C487,
477 | "2C489 -> "2C493,
478 | "2C495 -> "2C496,
479 | "2C498 -> "2C541,
480 | "2C543 -> "2C612,
481 | "2C614 -> "2C617,
482 | "2C619 -> "2C620,
483 | "2C622 -> "2C628,
484 | "2C62A,
485 | "2C62E,
486 | "2C630 -> "2C641,
487 | "2C643 -> "2C649,
488 | "2C64C -> "2C72B,
489 | "2C72D -> "2C72E,
490 | "2C730 -> "2C79E,
491 | "2C7A0 -> "2C7C0,
492 | "2C7C2 -> "2C7FC,
493 | "2C7FE -> "2C8D8,
494 | "2C8DA -> "2C8DD,
495 | "2C8DF -> "2C8E0,
496 | "2C8E2 -> "2C8F2,
497 | "2C8F4 -> "2C906,
498 | "2C908 -> "2C909,
499 | "2C90B -> "2C91C,
500 | "2C91E -> "2CA01,
501 | "2CA03 -> "2CA0D,
502 | "2CA0F -> "2CA7C,
503 | "2CA7E -> "2CAA8,
504 | "2CAAA -> "2CB28,
505 | "2CB2A -> "2CB2C,
506 | "2CB2F -> "2CB30,
507 | "2CB32 -> "2CB37,
508 | "2CB3A,
509 | "2CB3C -> "2CB3E,
510 | "2CB40,
511 | "2CB42 -> "2CB49,
512 | "2CB4B -> "2CB4D,
513 | "2CB4F -> "2CB59,
514 | "2CB5C -> "2CB63,
515 | "2CB65 -> "2CB68,
516 | "2CB6A -> "2CB6B,
517 | "2CB6D -> "2CB6E,
518 | "2CB70 -> "2CB72,
519 | "2CB74 -> "2CB75,
520 | "2CB77,
521 | "2CB79 -> "2CB7B,
522 | "2CB7D -> "2CBB0,
523 | "2CBB2 -> "2CBBE,
524 | "2CBC1 -> "2CBCD,
525 | "2CBCF -> "2CC55,
526 | "2CC57 -> "2CC5E,
527 | "2CC60 -> "2CCF4,
528 | "2CCF7 -> "2CCFC,
529 | "2CCFE,
530 | "2CD00 -> "2CD01,
531 | "2CD04 -> "2CD09,
532 | "2CD0B -> "2CD8A,
533 | "2CD8C,
534 | "2CD8E,
535 | "2CD91 -> "2CD9E,
536 | "2CDA1 -> "2CDA7,
537 | "2CDA9 -> "2CDAC,
538 | "2CDAF -> "2CDD4,
539 | "2CDD6 -> "2CE17,
540 | "2CE19,
541 | "2CE1B -> "2CE22,
542 | "2CE24 -> "2CE25,
543 | "2CE27 -> "2CE29,
544 | "2CE2B -> "2CE7B,
545 | "2CE7D -> "2CE87,
546 | "2CE89 -> "2CE92,
547 | "2CE94 -> "2CEAF,
548 | % CJK Unified Ideographs Extension F
549 | "2CEB0 -> "2D543,
550 | "2D545 -> "2E277,
551 | "2E279 -> "2E6E9,
552 | "2E6EB -> "2EBEF
553 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The LaTeX Project Public License
2 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
3 |
4 | LPPL Version 1.3c 2008-05-04
5 |
6 | Copyright 1999 2002-2008 LaTeX3 Project
7 | Everyone is allowed to distribute verbatim copies of this
8 | license document, but modification of it is not allowed.
9 |
10 |
11 | PREAMBLE
12 | ========
13 |
14 | The LaTeX Project Public License (LPPL) is the primary license under
15 | which the LaTeX kernel and the base LaTeX packages are distributed.
16 |
17 | You may use this license for any work of which you hold the copyright
18 | and which you wish to distribute. This license may be particularly
19 | suitable if your work is TeX-related (such as a LaTeX package), but
20 | it is written in such a way that you can use it even if your work is
21 | unrelated to TeX.
22 |
23 | The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
24 | below, gives instructions, examples, and recommendations for authors
25 | who are considering distributing their works under this license.
26 |
27 | This license gives conditions under which a work may be distributed
28 | and modified, as well as conditions under which modified versions of
29 | that work may be distributed.
30 |
31 | We, the LaTeX3 Project, believe that the conditions below give you
32 | the freedom to make and distribute modified versions of your work
33 | that conform with whatever technical specifications you wish while
34 | maintaining the availability, integrity, and reliability of
35 | that work. If you do not see how to achieve your goal while
36 | meeting these conditions, then read the document `cfgguide.tex'
37 | and `modguide.tex' in the base LaTeX distribution for suggestions.
38 |
39 |
40 | DEFINITIONS
41 | ===========
42 |
43 | In this license document the following terms are used:
44 |
45 | `Work'
46 | Any work being distributed under this License.
47 |
48 | `Derived Work'
49 | Any work that under any applicable law is derived from the Work.
50 |
51 | `Modification'
52 | Any procedure that produces a Derived Work under any applicable
53 | law -- for example, the production of a file containing an
54 | original file associated with the Work or a significant portion of
55 | such a file, either verbatim or with modifications and/or
56 | translated into another language.
57 |
58 | `Modify'
59 | To apply any procedure that produces a Derived Work under any
60 | applicable law.
61 |
62 | `Distribution'
63 | Making copies of the Work available from one person to another, in
64 | whole or in part. Distribution includes (but is not limited to)
65 | making any electronic components of the Work accessible by
66 | file transfer protocols such as FTP or HTTP or by shared file
67 | systems such as Sun's Network File System (NFS).
68 |
69 | `Compiled Work'
70 | A version of the Work that has been processed into a form where it
71 | is directly usable on a computer system. This processing may
72 | include using installation facilities provided by the Work,
73 | transformations of the Work, copying of components of the Work, or
74 | other activities. Note that modification of any installation
75 | facilities provided by the Work constitutes modification of the Work.
76 |
77 | `Current Maintainer'
78 | A person or persons nominated as such within the Work. If there is
79 | no such explicit nomination then it is the `Copyright Holder' under
80 | any applicable law.
81 |
82 | `Base Interpreter'
83 | A program or process that is normally needed for running or
84 | interpreting a part or the whole of the Work.
85 |
86 | A Base Interpreter may depend on external components but these
87 | are not considered part of the Base Interpreter provided that each
88 | external component clearly identifies itself whenever it is used
89 | interactively. Unless explicitly specified when applying the
90 | license to the Work, the only applicable Base Interpreter is a
91 | `LaTeX-Format' or in the case of files belonging to the
92 | `LaTeX-format' a program implementing the `TeX language'.
93 |
94 |
95 |
96 | CONDITIONS ON DISTRIBUTION AND MODIFICATION
97 | ===========================================
98 |
99 | 1. Activities other than distribution and/or modification of the Work
100 | are not covered by this license; they are outside its scope. In
101 | particular, the act of running the Work is not restricted and no
102 | requirements are made concerning any offers of support for the Work.
103 |
104 | 2. You may distribute a complete, unmodified copy of the Work as you
105 | received it. Distribution of only part of the Work is considered
106 | modification of the Work, and no right to distribute such a Derived
107 | Work may be assumed under the terms of this clause.
108 |
109 | 3. You may distribute a Compiled Work that has been generated from a
110 | complete, unmodified copy of the Work as distributed under Clause 2
111 | above, as long as that Compiled Work is distributed in such a way that
112 | the recipients may install the Compiled Work on their system exactly
113 | as it would have been installed if they generated a Compiled Work
114 | directly from the Work.
115 |
116 | 4. If you are the Current Maintainer of the Work, you may, without
117 | restriction, modify the Work, thus creating a Derived Work. You may
118 | also distribute the Derived Work without restriction, including
119 | Compiled Works generated from the Derived Work. Derived Works
120 | distributed in this manner by the Current Maintainer are considered to
121 | be updated versions of the Work.
122 |
123 | 5. If you are not the Current Maintainer of the Work, you may modify
124 | your copy of the Work, thus creating a Derived Work based on the Work,
125 | and compile this Derived Work, thus creating a Compiled Work based on
126 | the Derived Work.
127 |
128 | 6. If you are not the Current Maintainer of the Work, you may
129 | distribute a Derived Work provided the following conditions are met
130 | for every component of the Work unless that component clearly states
131 | in the copyright notice that it is exempt from that condition. Only
132 | the Current Maintainer is allowed to add such statements of exemption
133 | to a component of the Work.
134 |
135 | a. If a component of this Derived Work can be a direct replacement
136 | for a component of the Work when that component is used with the
137 | Base Interpreter, then, wherever this component of the Work
138 | identifies itself to the user when used interactively with that
139 | Base Interpreter, the replacement component of this Derived Work
140 | clearly and unambiguously identifies itself as a modified version
141 | of this component to the user when used interactively with that
142 | Base Interpreter.
143 |
144 | b. Every component of the Derived Work contains prominent notices
145 | detailing the nature of the changes to that component, or a
146 | prominent reference to another file that is distributed as part
147 | of the Derived Work and that contains a complete and accurate log
148 | of the changes.
149 |
150 | c. No information in the Derived Work implies that any persons,
151 | including (but not limited to) the authors of the original version
152 | of the Work, provide any support, including (but not limited to)
153 | the reporting and handling of errors, to recipients of the
154 | Derived Work unless those persons have stated explicitly that
155 | they do provide such support for the Derived Work.
156 |
157 | d. You distribute at least one of the following with the Derived Work:
158 |
159 | 1. A complete, unmodified copy of the Work;
160 | if your distribution of a modified component is made by
161 | offering access to copy the modified component from a
162 | designated place, then offering equivalent access to copy
163 | the Work from the same or some similar place meets this
164 | condition, even though third parties are not compelled to
165 | copy the Work along with the modified component;
166 |
167 | 2. Information that is sufficient to obtain a complete,
168 | unmodified copy of the Work.
169 |
170 | 7. If you are not the Current Maintainer of the Work, you may
171 | distribute a Compiled Work generated from a Derived Work, as long as
172 | the Derived Work is distributed to all recipients of the Compiled
173 | Work, and as long as the conditions of Clause 6, above, are met with
174 | regard to the Derived Work.
175 |
176 | 8. The conditions above are not intended to prohibit, and hence do not
177 | apply to, the modification, by any method, of any component so that it
178 | becomes identical to an updated version of that component of the Work as
179 | it is distributed by the Current Maintainer under Clause 4, above.
180 |
181 | 9. Distribution of the Work or any Derived Work in an alternative
182 | format, where the Work or that Derived Work (in whole or in part) is
183 | then produced by applying some process to that format, does not relax or
184 | nullify any sections of this license as they pertain to the results of
185 | applying that process.
186 |
187 | 10. a. A Derived Work may be distributed under a different license
188 | provided that license itself honors the conditions listed in
189 | Clause 6 above, in regard to the Work, though it does not have
190 | to honor the rest of the conditions in this license.
191 |
192 | b. If a Derived Work is distributed under a different license, that
193 | Derived Work must provide sufficient documentation as part of
194 | itself to allow each recipient of that Derived Work to honor the
195 | restrictions in Clause 6 above, concerning changes from the Work.
196 |
197 | 11. This license places no restrictions on works that are unrelated to
198 | the Work, nor does this license place any restrictions on aggregating
199 | such works with the Work by any means.
200 |
201 | 12. Nothing in this license is intended to, or may be used to, prevent
202 | complete compliance by all parties with all applicable laws.
203 |
204 |
205 | NO WARRANTY
206 | ===========
207 |
208 | There is no warranty for the Work. Except when otherwise stated in
209 | writing, the Copyright Holder provides the Work `as is', without
210 | warranty of any kind, either expressed or implied, including, but not
211 | limited to, the implied warranties of merchantability and fitness for a
212 | particular purpose. The entire risk as to the quality and performance
213 | of the Work is with you. Should the Work prove defective, you assume
214 | the cost of all necessary servicing, repair, or correction.
215 |
216 | In no event unless required by applicable law or agreed to in writing
217 | will The Copyright Holder, or any author named in the components of the
218 | Work, or any other party who may distribute and/or modify the Work as
219 | permitted above, be liable to you for damages, including any general,
220 | special, incidental or consequential damages arising out of any use of
221 | the Work or out of inability to use the Work (including, but not limited
222 | to, loss of data, data being rendered inaccurate, or losses sustained by
223 | anyone as a result of any failure of the Work to operate with any other
224 | programs), even if the Copyright Holder or said author or said other
225 | party has been advised of the possibility of such damages.
226 |
227 |
228 | MAINTENANCE OF THE WORK
229 | =======================
230 |
231 | The Work has the status `author-maintained' if the Copyright Holder
232 | explicitly and prominently states near the primary copyright notice in
233 | the Work that the Work can only be maintained by the Copyright Holder
234 | or simply that it is `author-maintained'.
235 |
236 | The Work has the status `maintained' if there is a Current Maintainer
237 | who has indicated in the Work that they are willing to receive error
238 | reports for the Work (for example, by supplying a valid e-mail
239 | address). It is not required for the Current Maintainer to acknowledge
240 | or act upon these error reports.
241 |
242 | The Work changes from status `maintained' to `unmaintained' if there
243 | is no Current Maintainer, or the person stated to be Current
244 | Maintainer of the work cannot be reached through the indicated means
245 | of communication for a period of six months, and there are no other
246 | significant signs of active maintenance.
247 |
248 | You can become the Current Maintainer of the Work by agreement with
249 | any existing Current Maintainer to take over this role.
250 |
251 | If the Work is unmaintained, you can become the Current Maintainer of
252 | the Work through the following steps:
253 |
254 | 1. Make a reasonable attempt to trace the Current Maintainer (and
255 | the Copyright Holder, if the two differ) through the means of
256 | an Internet or similar search.
257 |
258 | 2. If this search is successful, then enquire whether the Work
259 | is still maintained.
260 |
261 | a. If it is being maintained, then ask the Current Maintainer
262 | to update their communication data within one month.
263 |
264 | b. If the search is unsuccessful or no action to resume active
265 | maintenance is taken by the Current Maintainer, then announce
266 | within the pertinent community your intention to take over
267 | maintenance. (If the Work is a LaTeX work, this could be
268 | done, for example, by posting to comp.text.tex.)
269 |
270 | 3a. If the Current Maintainer is reachable and agrees to pass
271 | maintenance of the Work to you, then this takes effect
272 | immediately upon announcement.
273 |
274 | b. If the Current Maintainer is not reachable and the Copyright
275 | Holder agrees that maintenance of the Work be passed to you,
276 | then this takes effect immediately upon announcement.
277 |
278 | 4. If you make an `intention announcement' as described in 2b. above
279 | and after three months your intention is challenged neither by
280 | the Current Maintainer nor by the Copyright Holder nor by other
281 | people, then you may arrange for the Work to be changed so as
282 | to name you as the (new) Current Maintainer.
283 |
284 | 5. If the previously unreachable Current Maintainer becomes
285 | reachable once more within three months of a change completed
286 | under the terms of 3b) or 4), then that Current Maintainer must
287 | become or remain the Current Maintainer upon request provided
288 | they then update their communication data within one month.
289 |
290 | A change in the Current Maintainer does not, of itself, alter the fact
291 | that the Work is distributed under the LPPL license.
292 |
293 | If you become the Current Maintainer of the Work, you should
294 | immediately provide, within the Work, a prominent and unambiguous
295 | statement of your status as Current Maintainer. You should also
296 | announce your new status to the same pertinent community as
297 | in 2b) above.
298 |
299 |
300 | WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
301 | ======================================================
302 |
303 | This section contains important instructions, examples, and
304 | recommendations for authors who are considering distributing their
305 | works under this license. These authors are addressed as `you' in
306 | this section.
307 |
308 | Choosing This License or Another License
309 | ----------------------------------------
310 |
311 | If for any part of your work you want or need to use *distribution*
312 | conditions that differ significantly from those in this license, then
313 | do not refer to this license anywhere in your work but, instead,
314 | distribute your work under a different license. You may use the text
315 | of this license as a model for your own license, but your license
316 | should not refer to the LPPL or otherwise give the impression that
317 | your work is distributed under the LPPL.
318 |
319 | The document `modguide.tex' in the base LaTeX distribution explains
320 | the motivation behind the conditions of this license. It explains,
321 | for example, why distributing LaTeX under the GNU General Public
322 | License (GPL) was considered inappropriate. Even if your work is
323 | unrelated to LaTeX, the discussion in `modguide.tex' may still be
324 | relevant, and authors intending to distribute their works under any
325 | license are encouraged to read it.
326 |
327 | A Recommendation on Modification Without Distribution
328 | -----------------------------------------------------
329 |
330 | It is wise never to modify a component of the Work, even for your own
331 | personal use, without also meeting the above conditions for
332 | distributing the modified component. While you might intend that such
333 | modifications will never be distributed, often this will happen by
334 | accident -- you may forget that you have modified that component; or
335 | it may not occur to you when allowing others to access the modified
336 | version that you are thus distributing it and violating the conditions
337 | of this license in ways that could have legal implications and, worse,
338 | cause problems for the community. It is therefore usually in your
339 | best interest to keep your copy of the Work identical with the public
340 | one. Many works provide ways to control the behavior of that work
341 | without altering any of its licensed components.
342 |
343 | How to Use This License
344 | -----------------------
345 |
346 | To use this license, place in each of the components of your work both
347 | an explicit copyright notice including your name and the year the work
348 | was authored and/or last substantially modified. Include also a
349 | statement that the distribution and/or modification of that
350 | component is constrained by the conditions in this license.
351 |
352 | Here is an example of such a notice and statement:
353 |
354 | %% pig.dtx
355 | %% Copyright 2005 M. Y. Name
356 | %
357 | % This work may be distributed and/or modified under the
358 | % conditions of the LaTeX Project Public License, either version 1.3
359 | % of this license or (at your option) any later version.
360 | % The latest version of this license is in
361 | % http://www.latex-project.org/lppl.txt
362 | % and version 1.3 or later is part of all distributions of LaTeX
363 | % version 2005/12/01 or later.
364 | %
365 | % This work has the LPPL maintenance status `maintained'.
366 | %
367 | % The Current Maintainer of this work is M. Y. Name.
368 | %
369 | % This work consists of the files pig.dtx and pig.ins
370 | % and the derived file pig.sty.
371 |
372 | Given such a notice and statement in a file, the conditions
373 | given in this license document would apply, with the `Work' referring
374 | to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
375 | generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
376 | referring to any `LaTeX-Format', and both `Copyright Holder' and
377 | `Current Maintainer' referring to the person `M. Y. Name'.
378 |
379 | If you do not want the Maintenance section of LPPL to apply to your
380 | Work, change `maintained' above into `author-maintained'.
381 | However, we recommend that you use `maintained', as the Maintenance
382 | section was added in order to ensure that your Work remains useful to
383 | the community even when you can no longer maintain and support it
384 | yourself.
385 |
386 | Derived Works That Are Not Replacements
387 | ---------------------------------------
388 |
389 | Several clauses of the LPPL specify means to provide reliability and
390 | stability for the user community. They therefore concern themselves
391 | with the case that a Derived Work is intended to be used as a
392 | (compatible or incompatible) replacement of the original Work. If
393 | this is not the case (e.g., if a few lines of code are reused for a
394 | completely different task), then clauses 6b and 6d shall not apply.
395 |
396 |
397 | Important Recommendations
398 | -------------------------
399 |
400 | Defining What Constitutes the Work
401 |
402 | The LPPL requires that distributions of the Work contain all the
403 | files of the Work. It is therefore important that you provide a
404 | way for the licensee to determine which files constitute the Work.
405 | This could, for example, be achieved by explicitly listing all the
406 | files of the Work near the copyright notice of each file or by
407 | using a line such as:
408 |
409 | % This work consists of all files listed in manifest.txt.
410 |
411 | in that place. In the absence of an unequivocal list it might be
412 | impossible for the licensee to determine what is considered by you
413 | to comprise the Work and, in such a case, the licensee would be
414 | entitled to make reasonable conjectures as to which files comprise
415 | the Work.
416 |
417 |
--------------------------------------------------------------------------------
/SVG/Example.svg:
--------------------------------------------------------------------------------
1 |
2 |
102 |
--------------------------------------------------------------------------------
/SVG/Example-1-3.svg:
--------------------------------------------------------------------------------
1 |
2 |
137 |
--------------------------------------------------------------------------------
/mtpro2-patch.tex:
--------------------------------------------------------------------------------
1 | %
2 | % This is file `mtpro2-patch.tex'.
3 | %
4 | % The standard usage is:
5 | %
6 | % \usepackage[]{mtpro2}
7 | % \newcommand*\mtpscale{0.910}
8 | % \newcommand*\mtpscriptscale{0.847}
9 | % \newcommand*\mtpscriptscriptscale{0.794}
10 | % \input{mtpro2-patch}
11 | % % Note:
12 | % % If not specified, then \mtpscale will be set to 1.
13 | % % If not specified, then each of \mtpscriptscale and
14 | % % \mtpscriptscriptscale will be set to \mtpscale.
15 | %
16 | % There are 14 bugs needed to be fixed by hand.
17 | %
18 | % Warning: The \arc, \Arc and \widearc math accents are
19 | % incomplete in the Complete font set!!!
20 | % Use the Lite font set (e.g., from CTAN) to
21 | % get full glyph coverage.
22 | %
23 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
24 | %
25 | % In `mtpro2.sty', replace the following line
26 | %
27 | % \alloc@0\count\countdef\insc@unt\pointcount@
28 | %
29 | % with
30 | %
31 | % \newcount\pointcount@
32 | %
33 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
34 | %
35 | % In `mtpro2.sty', remove all the occurrences of
36 | %
37 | % \let\{=\lbrace % 3 times
38 | %
39 | % and
40 | %
41 | % \let\}=\rbrace % 3 times
42 | %
43 | % in \curlybraces, \straightbraces and \morphedbraces
44 | %
45 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
46 | %
47 | % In `mtpro2.sty', remove the pair
48 | %
49 | % \@ifpackageloaded{amsmath}{}{%
50 | % }
51 | %
52 | % containing
53 | %
54 | % \let\doteq\@undefined ...
55 | %
56 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
57 | %
58 | % In `mtpro2.sty', replace the following 2 occurrences of
59 | %
60 | % \char12
61 | %
62 | % in \EXtest@ (twice) with
63 | %
64 | % \char28
65 | %
66 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
67 | %
68 | % In `mtpro2.sty', replace the definition of \specdelim@ with
69 | %
70 | % \def\specdelim@#1{\ifx#1(\specdelim@true
71 | % \else\ifx#1)\specdelim@true
72 | % \else\ifx#1<\specdelim@true
73 | % \else\ifx#1\langle\specdelim@true
74 | % \else\ifx#1>\specdelim@true
75 | % \else\ifx#1\rangle\specdelim@true
76 | % \else\ifx#1/\specdelim@true
77 | % \else\ifx#1\backslash\specdelim@true
78 | % \else\ifx#1\{\specdelim@true
79 | % \else\ifx#1\}\specdelim@true
80 | % \else\ifx#1\lbrace\specdelim@true
81 | % \else\ifx#1\rbrace\specdelim@true
82 | % \else\ifx#1\lcbrace\specdelim@true
83 | % \else\ifx#1\rcbrace\specdelim@true
84 | % \else\specdelim@false\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
85 | %
86 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
87 | %
88 | % In `mtpro2.sty', replace the following line
89 | %
90 | % \left#1
91 | %
92 | % in \LEFTRIGHT with
93 | %
94 | % \left#1%
95 | %
96 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
97 | %
98 | % In `mtpro2.sty', replace the following line
99 | %
100 | % \kern-2\nulldelimiterspace\mskip-\thinmuskip
101 | %
102 | % in \LEFTRIGHT with
103 | %
104 | % \kern-2\nulldelimiterspace
105 | %
106 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
107 | %
108 | % In `mtpro2.sty', replace the following 2 occurrences of
109 | %
110 | % \MTEXA@ d
111 | %
112 | % in \@widetilde (once) and \widetildedown (once) with
113 | %
114 | % \MTEXA@ g
115 | %
116 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
117 | %
118 | % In `mtpro2.sty', replace the following 2 occurrences of
119 | %
120 | % \MTEXA@ z
121 | %
122 | % in \@widecheck (once) and \widecheckdown (once) with
123 | %
124 | % \MTEXA@|
125 | %
126 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
127 | %
128 | % In `mtpro2.sty', replace the following occurrence of
129 | %
130 | % \mathaccent"03D0
131 | %
132 | % in \widearc with
133 | %
134 | % \mathaccent"03CF
135 | %
136 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
137 | %
138 | % In `mtpro2.sty', replace the following line
139 | %
140 | % \mkern-1mu\kern-.13\dimen@\mkern\LEFTROOT@ mu\box\z@\kern-\wd\rootbox
141 | %
142 | % in \R@@T with
143 | %
144 | % \mkern-1mu\kern-.13\dimen@\mkern\LEFTROOT@ mu\box\z@
145 | %
146 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
147 | %
148 | % In `mtpro2.sty', replace the following 2 lines
149 | %
150 | % \ifx\next\uprod\xlposition@10\else
151 | % \ifx\next\ucoprod\xlposition@11\else
152 | %
153 | % in \XXXL@ with
154 | %
155 | % \ifx\next\upprod\xlposition@10\else
156 | % \ifx\next\upcoprod\xlposition@11\else
157 | %
158 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
159 | %
160 | % In `mtpro2.sty', insert the following 9 lines
161 | %
162 | % \DeclareMathSymbol{\nleq} {\mathrel}{AMSa}{"82}
163 | % \DeclareMathSymbol{\ngeq} {\mathrel}{AMSa}{"83}
164 | % \DeclareMathSymbol{\nless} {\mathrel}{AMSa}{"84}
165 | % \DeclareMathSymbol{\ngtr} {\mathrel}{AMSa}{"85}
166 | % \DeclareMathSymbol{\nprec} {\mathrel}{AMSa}{"86}
167 | % \DeclareMathSymbol{\nsucc} {\mathrel}{AMSa}{"87}
168 | % \DeclareMathSymbol{\ncong} {\mathrel}{AMSa}{"9D}
169 | % \DeclareMathSymbol{\nsqsubseteq} {\mathrel}{AMSa}{217}
170 | % \DeclareMathSymbol{\nsqsupseteq} {\mathrel}{AMSa}{218}
171 | %
172 | % in order according to `mtpro2.dtx'
173 | %
174 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
175 | %
176 | % In `mtpro2.sty', remove the pair
177 | %
178 | % \@ifpackageloaded{textcomp}{}{%
179 | % }
180 | %
181 | % containing
182 | %
183 | % \DeclareTextSymbolDefault{\textdagger}{LMP1} ...
184 | %
185 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
186 | %
187 | \expandafter\edef\csname current@catcode\endcsname{\the\catcode`\@}
188 | \catcode`\@=11 %
189 | % Scale factors
190 | \ifx\mtpscale\@undefined
191 | \def\mtpscale{1}
192 | \fi
193 | \ifx\mtpscriptscale\@undefined
194 | \let\mtpscriptscale\mtpscale
195 | \fi
196 | \ifx\mtpscriptscriptscale\@undefined
197 | \let\mtpscriptscriptscale\mtpscale
198 | \fi
199 | % MathTime Professional 2 Lite
200 | \DeclareFontShape{LMP1}{mtt}{m}{it}{%
201 | <-7> s*[\mtpscriptscriptscale] mt2mif
202 | <7-9> s*[\mtpscriptscale] mt2mis
203 | <9-> s*[\mtpscale] mt2mit}{}
204 | \DeclareFontShape{LMP2}{mtt}{m}{n}{%
205 | <-7> s*[\mtpscriptscriptscale] mt2syf
206 | <7-9> s*[\mtpscriptscale] mt2sys
207 | <9-> s*[\mtpscale] mt2syt}{%
208 | % A TFM file allows only 16 different height specifications
209 | % and 16 different depth specifications. If the file has more,
210 | % then these `supposed' heights and depths will be changed.
211 | % In mt2exa.tfm, each `\bigg'-variant delimiter has a total
212 | % height of 0.046+2.337999=2.383999, although it is `supposed'
213 | % to be 2-line tall (0.046+2.354=2.4=2*1.2).
214 | % The \fontdimen20 in mt2syt.tfm is 2.39. So TeX in display
215 | % styles will construct \atopwithdelims using `\Bigg'-variant
216 | % delimiters, since the `\bigg'-variants are not `big enough'.
217 | % To fix this, we set \fontdimen20 to 2.383 in all three math
218 | % symbol fonts.
219 | \fontdimen20\font=\dimexpr\fontdimen6\font*2383/1000\relax}
220 | \DeclareFontShape{LMP3}{mtt}{m}{n}{%
221 | <-7> s*[\mtpscriptscriptscale] mt2exa
222 | <7-9> s*[\mtpscriptscale] mt2exa
223 | <9-> s*[\mtpscale] mt2exa}{}
224 | \DeclareFontShape{U}{mtt}{b}{n}{%
225 | <-7> s*[\mtpscriptscriptscale] mt2mbf
226 | <7-9> s*[\mtpscriptscale] mt2mbs
227 | <9-> s*[\mtpscale] mt2mbt}{}
228 | \normalsize
229 | \dimen@\f@size\p@
230 | \ifx\AssignScaledResult\@undefined
231 | \dimen@\mtpscale\dimen@
232 | \else
233 | \AssignScaledResult\dimexpr\dimen@\mtpscale\dimen@
234 | \fi
235 | \newdimen\tMTPscalesize
236 | \tMTPscalesize\dimen@
237 | \font\MTEXA@=mt2exa at \dimen@
238 | \font\MTXL@=mt2xl at \dimen@
239 | \multiply\dimen@\tw@
240 | \font\MTEXE@=mt2exe at \dimen@
241 | \font\MTXXXL@=mt2xxxl at \dimen@
242 | \multiply\dimen@\tw@
243 | \font\MTEXF@=mt2exf at \dimen@
244 | \multiply\dimen@\tw@
245 | \font\MTEXG@=mt2exg at \dimen@
246 | % MathTime Professional 2 Complete
247 | \ifmtp@full
248 | \DeclareFontShape{LMP1}{mtt}{b}{it}{%
249 | <-7> s*[\mtpscriptscriptscale] mt2bmif
250 | <7-9> s*[\mtpscriptscale] mt2bmis
251 | <9-> s*[\mtpscale] mt2bmit}{}
252 | \DeclareFontShape{LMP2}{mtt}{b}{n}{%
253 | <-7> s*[\mtpscriptscriptscale] mt2bsyf
254 | <7-9> s*[\mtpscriptscale] mt2bsys
255 | <9-> s*[\mtpscale] mt2bsyt}{}
256 | \DeclareFontShape{LMP2}{mtt}{eb}{n}{%
257 | <-7> s*[\mtpscriptscriptscale] mt2hsyf
258 | <7-9> s*[\mtpscriptscale] mt2hsys
259 | <9-> s*[\mtpscale] mt2hsyt}{}
260 | \DeclareFontShape{LMP3}{mtt}{b}{n}{%
261 | <-7> s*[\mtpscriptscriptscale] mt2bexa
262 | <7-9> s*[\mtpscriptscale] mt2bexa
263 | <9-> s*[\mtpscale] mt2bexa}{}
264 | \DeclareFontShape{LMP3}{mtt}{eb}{n}{%
265 | <-7> s*[\mtpscriptscriptscale] mt2hexa
266 | <7-9> s*[\mtpscriptscale] mt2hexa
267 | <9-> s*[\mtpscale] mt2hexa}{}
268 | \DeclareFontShape{U}{mt2sya}{m}{n}{%
269 | <-7> s*[\mtpscriptscriptscale] mt2syaf
270 | <7-9> s*[\mtpscriptscale] mt2syas
271 | <9-> s*[\mtpscale] mt2syat}{}
272 | \DeclareFontShape{U}{mt2sya}{b}{n}{%
273 | <-7> s*[\mtpscriptscriptscale] mt2bsyaf
274 | <7-9> s*[\mtpscriptscale] mt2bsyas
275 | <9-> s*[\mtpscale] mt2bsyat}{}
276 | \DeclareFontShape{U}{mt2sya}{eb}{n}{%
277 | <-7> s*[\mtpscriptscriptscale] mt2hsyaf
278 | <7-9> s*[\mtpscriptscale] mt2hsyas
279 | <9-> s*[\mtpscale] mt2hsyat}{}
280 | % umt2ms.fd
281 | \DeclareFontFamily{U}{mt2ms}{\skewchar\font42}
282 | \DeclareFontShape{U}{mt2ms}{m}{n}{%
283 | <-7> s*[\mtpscriptscriptscale] mt2mcf
284 | <7-9> s*[\mtpscriptscale] mt2mcs
285 | <9-> s*[\mtpscale] mt2mct}{}
286 | \DeclareFontShape{U}{mt2ms}{m}{it}{%
287 | <-7> s*[\mtpscriptscriptscale] mt2msf
288 | <7-9> s*[\mtpscriptscale] mt2mss
289 | <9-> s*[\mtpscale] mt2mst}{}
290 | \DeclareFontShape{U}{mt2ms}{b}{it}{%
291 | <-7> s*[\mtpscriptscriptscale] mt2bmsf
292 | <7-9> s*[\mtpscriptscale] mt2bmss
293 | <9-> s*[\mtpscale] mt2bmst}{}
294 | % umt2mf.fd
295 | \DeclareFontFamily{U}{mt2mf}{}
296 | \DeclareFontShape{U}{mt2mf}{m}{n}{%
297 | <-7> s*[\mtpscriptscriptscale] mt2mff
298 | <7-9> s*[\mtpscriptscale] mt2mfs
299 | <9-> s*[\mtpscale] mt2mft}{}
300 | \DeclareFontShape{U}{mt2mf}{b}{n}{%
301 | <-7> s*[\mtpscriptscriptscale] mt2bmff
302 | <7-9> s*[\mtpscriptscale] mt2bmfs
303 | <9-> s*[\mtpscale] mt2bmft}{}
304 | % umt2bb.fd
305 | \DeclareFontFamily{U}{mt2bb}{}
306 | \DeclareFontShape{U}{mt2bb}{m}{n}{%
307 | <-7> s*[\mtpscriptscriptscale] mt2bbf
308 | <7-9> s*[\mtpscriptscale] mt2bbs
309 | <9-> s*[\mtpscale] mt2bbt}{}
310 | \DeclareFontShape{U}{mt2bb}{m}{it}{%
311 | <-7> s*[\mtpscriptscriptscale] mt2bbif
312 | <7-9> s*[\mtpscriptscale] mt2bbis
313 | <9-> s*[\mtpscale] mt2bbit}{\skewchar\font45}
314 | \DeclareFontShape{U}{mt2bb}{b}{n}{%
315 | <-7> s*[\mtpscriptscriptscale] mt2bbdf
316 | <7-9> s*[\mtpscriptscale] mt2bbds
317 | <9-> s*[\mtpscale] mt2bbdt}{}
318 | % umt2hrb.fd
319 | \DeclareFontFamily{U}{mt2hrb}{}
320 | \DeclareFontShape{U}{mt2hrb}{m}{n}{%
321 | <-7> s*[\mtpscriptscriptscale] mt2hrbf
322 | <7-9> s*[\mtpscriptscale] mt2hrbs
323 | <9-> s*[\mtpscale] mt2hrbt}{}
324 | \DeclareFontShape{U}{mt2hrb}{m}{it}{%
325 | <-7> s*[\mtpscriptscriptscale] mt2hbif
326 | <7-9> s*[\mtpscriptscale] mt2hbis
327 | <9-> s*[\mtpscale] mt2hbit}{\skewchar\font45}
328 | \DeclareFontShape{U}{mt2hrb}{b}{n}{%
329 | <-7> s*[\mtpscriptscriptscale] mt2hrbdf
330 | <7-9> s*[\mtpscriptscale] mt2hrbds
331 | <9-> s*[\mtpscale] mt2hrbdt}{}
332 | \fi
333 | % \bBiggg support
334 | % Example definitions:
335 | % \mtp@bBigg@\MTEXE@\thr@@, \mtp@bBigg@\MTEXE@{3.5}, ..., \mtp@bBigg@\MTEXE@{5.5};
336 | % \mtp@bBigg@\MTEXF@6, \mtp@bBigg@\MTEXF@7, ..., \mtp@bBigg@\MTEXF@{11};
337 | % \mtp@bBigg@\MTEXG@{12}, \mtp@bBigg@\MTEXG@{14}, ..., \mtp@bBigg@\MTEXG@{24}.
338 | \ifcsname lbrace \endcsname
339 | % Since ltfssdcl.dtx 2019/08/27 v3.0s, the LaTeX2e kernel
340 | % makes math delimiters robust (including \lbrace, \rbrace).
341 | % Between 2019/08/27 v3.0s and 2020/01/20 v3.0t, the `curly'
342 | % definition `\delimiter"4266308 ' is in the space-appended
343 | % \csname lbrace\space\endcsname.
344 | % In this case, the mtpro2 package first lets \lcbrace to
345 | % the robust \lbrace. Then, it redefines \lbrace to be non-
346 | % robust (specifically, to be one of `\delimiter"4266308 ',
347 | % `\delimiter"42B93AE ' and `\delimiter"42663B6 ').
348 | % So, to test if \curlybraces is in force, we compare the
349 | % definitions of \csname lbrace\space\endcsname and \lbrace.
350 | \newcommand*\@ifcurlybraces{%
351 | \expandafter\ifx\csname lbrace \endcsname\lbrace
352 | \expandafter\@firstoftwo
353 | \else
354 | \expandafter\@secondoftwo
355 | \fi
356 | }
357 | \else
358 | % Prior to ltfssdcl.dtx 2019/08/27 v3.0s, \lcbrace pointed
359 | % to the non-robust \lbrace (\let\lcbrace=\lbrace by mtpro2).
360 | % So it suffices to use the test \ifx\lcbrace\lbrace.
361 | % But after ltfssdcl.dtx 2020/01/20 v3.0t, \lcbrace points
362 | % to the `protected' \lbrace (and there is no space-appended
363 | % \csname lbrace\space\endcsname defined). In this case, the
364 | % test \ifx\lcbrace\lbrace will always be false.
365 | % To resolve this awkward situation, we can define our own
366 | % left curly brace.
367 | \begingroup
368 | \curlybraces % redefines \lbrace to `\delimiter"4266308 '
369 | \ifx\lcbrace\lbrace\else % \lcbrace is `protected' \lbrace
370 | \expandafter\gdef\csname mtp2@lcbrace\endcsname
371 | {\delimiter"4266308 }% define our own left curly brace
372 | \fi
373 | \endgroup
374 | \ifcsname mtp2@lcbrace\endcsname
375 | % For ltfssdcl.dtx 2020/01/20 v3.0t, or later.
376 | \newcommand*\@ifcurlybraces{%
377 | \expandafter\ifx\csname mtp2@lcbrace\endcsname\lbrace
378 | \expandafter\@firstoftwo
379 | \else
380 | \expandafter\@secondoftwo
381 | \fi
382 | }
383 | \else
384 | % For ltfssdcl.dtx before 2019/08/27 v3.0s.
385 | \newcommand*\@ifcurlybraces{%
386 | \ifx\lcbrace\lbrace
387 | \expandafter\@firstoftwo
388 | \else
389 | \expandafter\@secondoftwo
390 | \fi
391 | }
392 | \fi
393 | \fi
394 | \newcommand*\mtp@bBigg@[3]{%
395 | {\hbox{%
396 | \specdelim@#3%
397 | \ifspecdelim@
398 | \textfont\thr@@=#1%
399 | \ifnum
400 | \ifx#3\{1\else\ifx#3\}1\else
401 | \ifx#3\lbrace 1\else\ifx#3\rbrace 1\else 0\fi\fi\fi\fi
402 | =1 %
403 | \@ifcurlybraces{}{\textfont\thr@@=\MTEXA@}%
404 | \fi
405 | \fi
406 | $\left#3\vcenter to#2\big@size{}\right.\n@space$%
407 | }}%
408 | }
409 | % Fix \undercbrace and \overcbrace
410 | \def\undercbrace#1{\setbox\z@\hbox{$\displaystyle#1$}%
411 | \dimen@\wd\z@
412 | \pointcount@\numexpr(\dimen@-\tMTPscalesize/2)/\tMTPscalesize\relax
413 | \ifnum\pointcount@<4
414 | \ifdim\wd\z@<1.35\tMTPscalesize
415 | \def\thebrace@{\hbox{\MTEXE@\char144}}%
416 | \else\ifdim\wd\z@<1.65\tMTPscalesize
417 | \def\thebrace@{\hbox{\MTEXE@\char145}}%
418 | \else\ifdim\wd\z@<1.95\tMTPscalesize
419 | \def\thebrace@{\hbox{\MTEXE@\char146}}%
420 | \else\ifdim\wd\z@<2.25\tMTPscalesize
421 | \def\thebrace@{\hbox{\MTEXE@\char147}}%
422 | \else\ifdim\wd\z@<2.55\tMTPscalesize
423 | \def\thebrace@{\hbox{\MTEXE@\char148}}%
424 | \else\ifdim\wd\z@<2.85\tMTPscalesize
425 | \def\thebrace@{\hbox{\MTEXE@\char149}}%
426 | \else\ifdim\wd\z@<3.15\tMTPscalesize
427 | \def\thebrace@{\hbox{\MTEXE@\char150}}%
428 | \else\ifdim\wd\z@<3.45\tMTPscalesize
429 | \def\thebrace@{\hbox{\MTEXE@\char151}}%
430 | \else
431 | \def\thebrace@{\hbox{\MTEXE@\char152}}%
432 | \fi\fi\fi\fi\fi\fi\fi\fi
433 | \else
434 | \ifnum\pointcount@<12
435 | \advance\pointcount@149
436 | \def\thebrace@{\hbox{\MTEXE@\char\pointcount@}}%
437 | \else
438 | \ifnum\pointcount@<24
439 | \advance\pointcount@132
440 | \def\thebrace@{\hbox{\MTEXF@\char\pointcount@}}%
441 | \else
442 | \advance\pointcount@120
443 | \ifnum\pointcount@>149 \pointcount@149 \fi
444 | \def\thebrace@{\hbox{\MTEXG@\char\pointcount@}}%
445 | \fi
446 | \fi
447 | \fi
448 | \mathop{\vtop{\ialign{\hfil##\hfil\cr$\displaystyle#1$\crcr\noalign
449 | {\vskip3pt\nointerlineskip}\thebrace@\cr\noalign{\kern3pt}}}}\limits}%
450 | \def\overcbrace#1{\setbox\z@\hbox{$\displaystyle#1$}%
451 | \dimen@\wd\z@
452 | \pointcount@\numexpr(\dimen@-\tMTPscalesize/2)/\tMTPscalesize\relax
453 | \ifnum\pointcount@<4
454 | \ifdim\wd\z@<1.35\tMTPscalesize
455 | \def\thebrace@{\hbox{\MTEXE@\char176}}%
456 | \else\ifdim\wd\z@<1.65\tMTPscalesize
457 | \def\thebrace@{\hbox{\MTEXE@\char177}}%
458 | \else\ifdim\wd\z@<1.95\tMTPscalesize
459 | \def\thebrace@{\hbox{\MTEXE@\char178}}%
460 | \else\ifdim\wd\z@<2.25\tMTPscalesize
461 | \def\thebrace@{\hbox{\MTEXE@\char179}}%
462 | \else\ifdim\wd\z@<2.55\tMTPscalesize
463 | \def\thebrace@{\hbox{\MTEXE@\char180}}%
464 | \else\ifdim\wd\z@<2.85\tMTPscalesize
465 | \def\thebrace@{\hbox{\MTEXE@\char181}}%
466 | \else\ifdim\wd\z@<3.15\tMTPscalesize
467 | \def\thebrace@{\hbox{\MTEXE@\char182}}%
468 | \else\ifdim\wd\z@<3.45\tMTPscalesize
469 | \def\thebrace@{\hbox{\MTEXE@\char183}}%
470 | \else
471 | \def\thebrace@{\hbox{\MTEXE@\char184}}%
472 | \fi\fi\fi\fi\fi\fi\fi\fi
473 | \else
474 | \ifnum\pointcount@<12
475 | \advance\pointcount@181
476 | \def\thebrace@{\hbox{\MTEXE@\char\pointcount@}}%
477 | \else
478 | \ifnum\pointcount@<24
479 | \advance\pointcount@148
480 | \def\thebrace@{\hbox{\MTEXF@\char\pointcount@}}%
481 | \else
482 | \advance\pointcount@136
483 | \ifnum\pointcount@>165 \pointcount@165 \fi
484 | \def\thebrace@{\hbox{\MTEXG@\char\pointcount@}}%
485 | \fi
486 | \fi
487 | \fi
488 | \mathop{\vbox{\ialign{\hfil##\hfil\cr\noalign{\kern3\p@}\thebrace@\crcr
489 | \noalign{\kern3\p@\nointerlineskip}$\displaystyle#1$\crcr}}}\limits}%
490 | % Add \textbardbl and \textbigcircle; Redeclare \textcircled
491 | \DeclareTextSymbolDefault{\textbardbl}{LMP2}
492 | \DeclareTextSymbol{\textbardbl}{LMP2}{107}
493 | \DeclareTextSymbol{\textbigcircle}{LMP2}{13}
494 | \DeclareTextCommand{\textcircled}{LMP2}[1]{\hmode@bgroup
495 | \ooalign{%
496 | \hfil \raise .07ex\hbox {\upshape#1}\hfil \crcr
497 | \char 13 % "0D
498 | }%
499 | \egroup}
500 | \RequirePackage{etoolbox}
501 | % MathTime Professional 2 sets math axis at 252/1000
502 | % Use \redistributestruthtdp to adjust text strut if necessary,
503 | % e.g., \redistributestruthtdp{71/100}{29/100} (one-time-only!).
504 | \newcommand*\redistributestruthtdp[2]{%
505 | \patchcmd\set@fontsize
506 | {.7\baselineskip}
507 | {\dimexpr\baselineskip*#1\relax}
508 | {\typeout{Redistribute strut height}}
509 | {\typeout{Couldn't patch \string\set@fontsize}}%
510 | \patchcmd\set@fontsize
511 | {.3\baselineskip}
512 | {\dimexpr\baselineskip-\baselineskip*#1\relax}
513 | {\typeout{Redistribute strut depth}}
514 | {\typeout{Couldn't patch \string\set@fontsize}}%
515 | \renewcommand*\redistributestruthtdp[2]{%
516 | \typeout{\string\redistributestruthtdp\space has already been
517 | used. So ##1 and ##2 will be gobbled and have no effect.}%
518 | }%
519 | }
520 | % amsmath unfortunately codes \AtBeginDocument{\reset@strutbox@},
521 | % therefore any fix for \strutbox@ using \fontdimen22 must occur
522 | % after this. One must load amsmath prior and we make sure of it.
523 | % We also need \new@ifnextchar for \redistributestrutht.
524 | \RequirePackage{amsmath}
525 | \newcommand*\redistributestrutht[1]{%
526 | \new@ifnextchar\bgroup
527 | {\redistributestrutht@t@s{#1}}%
528 | {\redistributestrutht@t@s{#1}{#1}}%
529 | }
530 | \newcommand*\redistributestrutht@t@s[2]{%
531 | \new@ifnextchar\bgroup
532 | {\redistributestrutht@t@s@ss{#1}{#2}}%
533 | {\redistributestrutht@t@s@ss{#1}{#2}{#1}}%
534 | }
535 | \newcommand*\redistributestrutht@t@s@ss[3]{%
536 | \patchcmd\set@fontsize
537 | {.7\baselineskip}
538 | {\dimexpr\baselineskip
539 | *\ifdim\f@size\p@<7\p@ #3\else
540 | \ifdim\f@size\p@<9\p@ #2\else #1\fi\fi\relax}
541 | {\typeout{Redistribute strut height}}
542 | {\typeout{Couldn't patch \string\set@fontsize}}%
543 | \patchcmd\set@fontsize
544 | {.3\baselineskip}
545 | {\dimexpr\baselineskip-\baselineskip
546 | *\ifdim\f@size\p@<7\p@ #3\else
547 | \ifdim\f@size\p@<9\p@ #2\else #1\fi\fi\relax}
548 | {\typeout{Redistribute strut depth}}
549 | {\typeout{Couldn't patch \string\set@fontsize}}%
550 | \renewcommand*\redistributestrutht@t@s@ss[3]{%
551 | \typeout{\string\redistributestrutht\space has already been
552 | used. So ##1 and so on will be gobbled and have no effect.}%
553 | }%
554 | }
555 | % Since mtpro2 is TFM-based, we should force \genfrac to be the
556 | % classical version to avoid (a) bugs across different mathstyles
557 | % (see https://github.com/latex3/latex2e/issues/432) and (b) slow
558 | % processing (see https://github.com/latex3/latex2e/issues/433).
559 | \DeclareRobustCommand{\genfrac}[4]{%
560 | \def\@tempa{#1#2}%
561 | \edef\@tempb{\@nx\@genfrac\@mathstyle{#4}%
562 | \csname @@\ifx @#3@over\else above\fi
563 | \ifx\@tempa\@empty \else withdelims\fi\endcsname}
564 | \@tempb{#1#2#3}}
565 | % We can also hard code \binom for speed.
566 | \ifx\directlua\@undefined
567 | \DeclareRobustCommand{\binom}[2]{{\begingroup#1\endgroup\@@atopwithdelims()#2}}
568 | \else
569 | \DeclareRobustCommand{\binom}[2]{{\Ustack{\begingroup#1\endgroup\@@atopwithdelims()#2}}}
570 | \fi
571 | % https://github.com/latex3/latex2e/issues/160
572 | \patchcmd\math@cr@@@aligned
573 | {\next@ \cr}
574 | {\next@ \global\column@\z@ \cr}
575 | {\typeout{Reset \string\column@\space for each row in `aligned'}}
576 | {\typeout{Couldn't patch \string\math@cr@@@aligned}}
577 | % https://github.com/latex3/latex2e/issues/161
578 | \patchcmd\measure@
579 | {%
580 | \global\column@\z@
581 | \add@amps\maxfields@\cr
582 | }
583 | {%
584 | \advance\maxfields@\m@ne
585 | \add@amps\maxfields@\cr
586 | }
587 | {\typeout{Remove excessive column in `align'}}
588 | {\typeout{Couldn't patch \string\measure@}}
589 | % https://github.com/latex3/latex2e/issues/162
590 | \iftagsleft@\else\if@fleqn
591 | \patchcmd\x@calc@shift@rf
592 | {%
593 | \ifdim\dimen@<\minalignsep\relax
594 | \global\alignsep@\minalignsep\relax
595 | \else
596 | \global\alignsep@\dimen@
597 | \fi
598 | }
599 | {%
600 | \ifdim\dimen@<\minalignsep\relax
601 | \global\alignsep@\minalignsep\relax
602 | \else
603 | \ifdim\dimen@<\alignsep@
604 | \global\alignsep@\dimen@
605 | \fi
606 | \fi
607 | }
608 | {\typeout{Allow decreasing \string\alignsep@\space only}}
609 | {\typeout{Couldn't patch \string\x@calc@shift@rf}}
610 | \fi\fi
611 | % https://github.com/latex3/latex2e/issues/136
612 | \iftagsleft@\else\if@fleqn\else
613 | \patchcmd\x@calc@shift@rc
614 | {%
615 | \ifdim\dimen@<\minalignsep\relax
616 | \global\alignsep@\minalignsep\relax
617 | \eqnshift@\displaywidth
618 | \advance\eqnshift@-\@tempdima
619 | \advance\eqnshift@-\@tempcntb\alignsep@
620 | \global\divide\eqnshift@\tw@
621 | \else
622 | \ifdim\dimen@<\eqnshift@
623 | \ifdim\dimen@<\z@
624 | \global\eqnshift@\z@
625 | \else
626 | \global\eqnshift@\dimen@
627 | \fi
628 | \fi
629 | \ifdim\dimen@<\alignsep@
630 | \global\alignsep@\dimen@
631 | \fi
632 | \fi
633 | }
634 | {%
635 | \ifdim\dimen@<\minalignsep\relax
636 | \global\alignsep@\minalignsep\relax
637 | \dimen@\displaywidth
638 | \advance\dimen@-\@tempdima
639 | \advance\dimen@-\@tempcntb\alignsep@
640 | \divide\dimen@\tw@
641 | \else
642 | \ifdim\dimen@<\alignsep@
643 | \global\alignsep@\dimen@
644 | \fi
645 | \fi
646 | \ifdim\dimen@<\eqnshift@
647 | \ifdim\dimen@<\z@
648 | \global\eqnshift@\z@
649 | \else
650 | \global\eqnshift@\dimen@
651 | \fi
652 | \fi
653 | }
654 | {\typeout{Allow decreasing \string\eqnshift@\space only}}
655 | {\typeout{Couldn't patch \string\x@calc@shift@rc}}
656 | \fi\fi
657 | % https://github.com/latex3/latex2e/issues/156
658 | % This is an experimental fix
659 | \iftagsleft@\if@fleqn
660 | \def\calc@shift@align{%
661 | \global\let\tag@shifts\@empty
662 | \begingroup
663 | \loop
664 | \ifnum\row@>0
665 | \ifdim\tag@width\row@>\z@
666 | \x@calc@shift@lf
667 | \else
668 | \saveshift@0%
669 | \fi
670 | \advance\row@\m@ne
671 | \repeat
672 | \endgroup
673 | }
674 | \def\x@calc@shift@lf{%
675 | \column@\z@
676 | \@tempdima\z@
677 | \@tempdimb\z@
678 | \edef\@tempb{\fieldlengths@\row@}%
679 | \@for\@tempa:=\@tempb\do{%
680 | \advance\column@\@ne
681 | \x@lcalc@width
682 | }%
683 | \advance\@tempdimb\eqnshift@
684 | \advance\@tempdimb\count@\alignsep@
685 | \advance\@tempdimb-\mintagsep\relax
686 | \ifdim\tag@width\row@>\@tempdimb
687 | \saveshift@1%
688 | \else
689 | \saveshift@0%
690 | \fi
691 | }
692 | \def\x@lcalc@width{%
693 | \ifdim\@tempdima = \z@
694 | \ifdim\@tempa > \z@
695 | \@tempdima\p@
696 | \ifodd\column@
697 | \advance\@tempdimb \maxcol@width\column@
698 | \advance\@tempdimb-\@tempa
699 | \fi
700 | \count@\column@
701 | \advance\count@\m@ne
702 | \divide\count@\tw@
703 | \advance\@tempcnta-\count@
704 | \advance\@tempcntb-\count@
705 | \else
706 | \advance\@tempdimb \maxcol@width\column@\relax
707 | \fi
708 | \fi
709 | }
710 | \fi\fi
711 | \newsavebox\mtp@matrix@cases
712 | \renewenvironment{pmatrix}{%
713 | \matrix@check\pmatrix
714 | \setbox\mtp@matrix@cases\hbox\bgroup$%
715 | \env@matrix
716 | }{%
717 | \endmatrix
718 | \m@th$\egroup
719 | \PARENS{\,\copy\mtp@matrix@cases\,}%
720 | }
721 | \renewenvironment{Bmatrix}{%
722 | \setbox\mtp@matrix@cases\hbox\bgroup$%
723 | \env@matrix
724 | }{%
725 | \endmatrix
726 | \m@th$\egroup
727 | \@ifcurlybraces{%
728 | \LEFTRIGHT@\lbrace\rbrace{\,\copy\mtp@matrix@cases\,}%
729 | }{%
730 | \left\lbrace\copy\mtp@matrix@cases\right\rbrace
731 | }%
732 | }
733 | \renewenvironment{cases}{%
734 | \matrix@check\cases
735 | \setbox\mtp@matrix@cases\hbox\bgroup$%
736 | \let\@ifnextchar\new@ifnextchar
737 | \def\arraystretch{1.1}% less than 1000/\delimiterfactor
738 | \array{@{}l@{\quad}l@{}}%
739 | }{%
740 | \endarray
741 | \m@th$\egroup
742 | \@ifcurlybraces{%
743 | \LEFTRIGHT@\lbrace.{\,\copy\mtp@matrix@cases}%
744 | }{%
745 | \left\lbrace\copy\mtp@matrix@cases\right.%
746 | }%
747 | }
748 | % Fix mathtools environments?
749 | \newcommand*\standardbin{+}
750 | \newcommand*\tabularbin[1]{%
751 | \mathbin{\mathpalette{\@tabularsym\standardbin}{#1}}%
752 | }
753 | \newcommand*\standardrel{=}
754 | \newcommand*\tabularrel[1]{%
755 | \mathrel{\mathpalette{\@tabularsym\standardrel}{#1}}%
756 | }
757 | \newcommand*\@tabularsym[3]{%
758 | \setbox\z@\hbox{$#2#1\m@th$}%
759 | \hbox to\wd\z@{\hss$#2#3\m@th$\hss}%
760 | }
761 | % Fix mathtools' \cramped
762 | \DeclareRobustCommand*\cramped[1][\@empty]{%
763 | \relax
764 | \ifx\@empty#1\@empty
765 | \expandafter\mathpalette\expandafter\@cramped
766 | \else
767 | \expandafter\@cramped\expandafter#1%
768 | \fi
769 | }
770 | \newcommand*\@cramped[2]{%
771 | \setbox\z@\hbox{$\m@th#1\kern-\nulldelimiterspace\radical\z@{#2}$}%
772 | \ifx#1\displaystyle
773 | \dimen@\fontdimen8 \textfont\thr@@
774 | \advance\dimen@0.25\fontdimen5 \textfont\tw@
775 | \else
776 | \dimen@1.25\fontdimen8 %
777 | \ifx#1\textstyle
778 | \textfont
779 | \else
780 | \ifx#1\scriptstyle
781 | \scriptfont
782 | \else
783 | \scriptscriptfont
784 | \fi
785 | \fi
786 | \thr@@
787 | \fi
788 | \advance\dimen@-\ht\z@
789 | \ht\z@-\dimen@
790 | \ifvmode\leavevmode\fi
791 | {}\box\z@
792 | }
793 | \newcommand*\subalign[2][t]{%
794 | \if#1t\vtop\else\if#1b\vbox\else\vcenter\fi\fi{%
795 | \let\centry\@centry
796 | \Let@ \restore@math@cr \default@tag
797 | \baselineskip\fontdimen10 \scriptfont\tw@
798 | \advance\baselineskip\fontdimen12 \scriptfont\tw@
799 | \lineskip\thr@@\fontdimen8 \scriptfont\thr@@
800 | \lineskiplimit\lineskip
801 | \ialign{%
802 | &\hfil\span\@cramped\scriptstyle{##}%
803 | &\span\@cramped\scriptstyle{{}##}\hfil\crcr
804 | #2\crcr
805 | }%
806 | }%
807 | }
808 | \newcommand*\centry[1]{#1}
809 | \newcommand*\@centry[1]{%
810 | \omit
811 | \hfil\@cramped\scriptstyle{#1}\hfil
812 | }
813 | % The 2020/10/01 release of LaTeX2e introduces a new hook
814 | % management system. Consequently, different chunks of code
815 | % in the \AtBeginDocument hook (added by different packages
816 | % and/or classes) will be sorted at \begin{document}. Hence,
817 | % even though we've loaded amsmath prior to this point, the
818 | % amsmath code chunk can be sorted so it is executed `after'
819 | % our patch for \reset@strutbox@.
820 | % We patch \reset@strutbox@ to use \fontdimen22\textfont2.
821 | % If amsmath's code is executed after ours, then we get the
822 | % `Font \nullfont has only 7 fontdimen parameters' error.
823 | % To accommodate this new hook management system, we need
824 | % to explicitly declare the execution order.
825 | \ifx\DeclareHookRule\@undefined
826 | \expandafter\@firstoftwo
827 | \else
828 | \expandafter\@secondoftwo
829 | \fi
830 | {%
831 | \AtBeginDocument
832 | }{%
833 | \DeclareHookRule{begindocument}{amsmath}{before}{mtpro2-patch}%
834 | \AtBeginDocument[mtpro2-patch]%
835 | }{%
836 | % Fix \big@size calculation
837 | \addto@hook\every@math@size{%
838 | \global\big@size\dimexpr\fontdimen6\textfont\thr@@*6/5\relax}%
839 | % Fix \strutbox@ setup
840 | \patchcmd\reset@strutbox@
841 | {\copy\strutbox}
842 | {\hbox{\vrule\@height\dimexpr\baselineskip/2
843 | +\fontdimen22\textfont\tw@\relax
844 | \@depth \dimexpr\baselineskip
845 | -\baselineskip/2
846 | -\fontdimen22\textfont\tw@\relax
847 | \@width \z@}}
848 | {\typeout{Fixed strut setup for amsmath.sty}}
849 | {\typeout{Couldn't patch \string\reset@strutbox@}}%
850 | % Fix \@arstrutbox setup
851 | \@ifpackageloaded{array}{%
852 | \patchcmd\@array
853 | {\arraystretch \@tempdima}
854 | {\dimexpr\arraystretch\baselineskip/2
855 | +\arraystretch\extrarowheight
856 | +\fontdimen22\textfont\tw@\relax}
857 | {\typeout{Fixed array strut height for array.sty}}
858 | {\typeout{Couldn't patch \string\@array}}%
859 | \patchcmd\@array
860 | {\arraystretch \dp \strutbox}
861 | {\dimexpr\arraystretch\baselineskip
862 | -\arraystretch\baselineskip/2
863 | -\fontdimen22\textfont\tw@\relax}
864 | {\typeout{Fixed array strut depth for array.sty}}
865 | {\typeout{Couldn't patch \string\@array}}%
866 | \let\@@array\@array
867 | }{%
868 | \patchcmd\@array
869 | {\arraystretch\ht\strutbox}
870 | {\dimexpr\arraystretch\baselineskip/2
871 | +\fontdimen22\textfont\tw@\relax}
872 | {\typeout{Fixed array strut height}}
873 | {\typeout{Couldn't patch \string\@array}}%
874 | \patchcmd\@array
875 | {\arraystretch \dp\strutbox}
876 | {\dimexpr\arraystretch\baselineskip
877 | -\arraystretch\baselineskip/2
878 | -\fontdimen22\textfont\tw@\relax}
879 | {\typeout{Fixed array strut depth}}
880 | {\typeout{Couldn't patch \string\@array}}%
881 | }%
882 | \@ifpackageloaded{delarray}{%
883 | \def\@@array[#1]{\@ifnextchar\bgroup
884 | {\let\@arrayleft\relax\let\@arrayright\relax\@array[#1]}%
885 | {\@del@array[#1]}}%
886 | }{}%
887 | \@ifpackageloaded{longtable}{%
888 | \ifx\extrarowheight\@undefined
889 | \patchcmd\LT@array
890 | {\arraystretch \@tempdima}
891 | {\dimexpr\arraystretch\baselineskip/2
892 | +\fontdimen22\textfont\tw@\relax}
893 | {\typeout{Fixed array strut height for longtable.sty}}
894 | {\typeout{Couldn't patch \string\LT@array}}%
895 | \else
896 | \patchcmd\LT@array
897 | {\arraystretch \@tempdima}
898 | {\dimexpr\arraystretch\baselineskip/2
899 | +\arraystretch\extrarowheight
900 | +\fontdimen22\textfont\tw@\relax}
901 | {\typeout{Fixed array strut height for longtable.sty}}
902 | {\typeout{Couldn't patch \string\LT@array}}%
903 | \fi
904 | \patchcmd\LT@array
905 | {\arraystretch \dp \strutbox}
906 | {\dimexpr\arraystretch\baselineskip
907 | -\arraystretch\baselineskip/2
908 | -\fontdimen22\textfont\tw@\relax}
909 | {\typeout{Fixed array strut depth for longtable.sty}}
910 | {\typeout{Couldn't patch \string\LT@array}}%
911 | }{}%
912 | % Fix \mathsterling and \mathunderscore for OpenType text fonts
913 | \@ifpackageloaded{fontspec}{%
914 | \DeclareMathSymbol{\mathsterling}{\mathord}{operators}{"A3}%
915 | \let\mathunderscore\@undefined
916 | \DeclareMathSymbol{\mathunderscore}{\mathord}{operators}{95}%
917 | % These should be fixed by fontspec, I think...
918 | \DeclareSymbolFont{operators}{\encodingdefault}{\rmdefault}{\mddefault}{\updefault}%
919 | \SetSymbolFont{operators}{bold}{\encodingdefault}{\rmdefault}{\bfdefault}{\updefault}%
920 | \DeclareMathAlphabet{\mathbf}{\encodingdefault}{\rmdefault}{\bfdefault}{\updefault}%
921 | \DeclareMathAlphabet{\mathit}{\encodingdefault}{\rmdefault}{\mddefault}{\itdefault}%
922 | \DeclareMathAlphabet{\mathsf}{\encodingdefault}{\sfdefault}{\mddefault}{\updefault}%
923 | \DeclareMathAlphabet{\mathtt}{\encodingdefault}{\ttdefault}{\mddefault}{\updefault}%
924 | \SetMathAlphabet{\mathit}{bold}{\encodingdefault}{\rmdefault}{\bfdefault}{\itdefault}%
925 | \SetMathAlphabet{\mathsf}{bold}{\encodingdefault}{\sfdefault}{\bfdefault}{\updefault}%
926 | \SetMathAlphabet{\mathtt}{bold}{\encodingdefault}{\ttdefault}{\bfdefault}{\updefault}%
927 | }{}%
928 | % Troubles with U+00B7 (\char'267, \char183) being CJK punctuation
929 | \@ifpackageloaded{xeCJK}{%
930 | \def\widearc#1{\setbox\ARCbox@\hbox{$\displaystyle{#1}$}%
931 | \setbox\z@\hbox{\makexeCJKinactive\MTEXF@\char'267}%
932 | \ifdim\wd\ARCbox@>\wd\z@
933 | \hbox{\textfont3=\MTEXG@ $\mathaccent"03B1 {\box\ARCbox@}$}%
934 | \else
935 | \setbox\z@\hbox{\MTEXE@\char'326}%
936 | \ifdim\wd\ARCbox@>\wd\z@
937 | \hbox{\textfont3=\MTEXF@ $\mathaccent"03B1 {\box\ARCbox@}$}%
938 | \else
939 | \setbox\z@\hbox{\MTEXA@ \char'302}%
940 | \ifdim\wd\ARCbox@>\wd\z@
941 | \hbox{\textfont3=\MTEXE@ $\mathaccent"03CF {\box\ARCbox@}$}%
942 | \else
943 | \hbox{\textfont3=\MTEXA@ $\mathaccent"03BF {\box\ARCbox@}$}%
944 | \fi
945 | \fi
946 | \fi}%
947 | \def\overcbrace#1{\setbox\z@\hbox{$\displaystyle#1$}%
948 | \dimen@\wd\z@
949 | \pointcount@\numexpr(\dimen@-\tMTPscalesize/2)/\tMTPscalesize\relax
950 | \ifnum\pointcount@<4
951 | \ifdim\wd\z@<1.35\tMTPscalesize
952 | \def\thebrace@{\hbox{\MTEXE@\char176}}%
953 | \else\ifdim\wd\z@<1.65\tMTPscalesize
954 | \def\thebrace@{\hbox{\MTEXE@\char177}}%
955 | \else\ifdim\wd\z@<1.95\tMTPscalesize
956 | \def\thebrace@{\hbox{\MTEXE@\char178}}%
957 | \else\ifdim\wd\z@<2.25\tMTPscalesize
958 | \def\thebrace@{\hbox{\MTEXE@\char179}}%
959 | \else\ifdim\wd\z@<2.55\tMTPscalesize
960 | \def\thebrace@{\hbox{\MTEXE@\char180}}%
961 | \else\ifdim\wd\z@<2.85\tMTPscalesize
962 | \def\thebrace@{\hbox{\MTEXE@\char181}}%
963 | \else\ifdim\wd\z@<3.15\tMTPscalesize
964 | \def\thebrace@{\hbox{\MTEXE@\char182}}%
965 | \else\ifdim\wd\z@<3.45\tMTPscalesize
966 | \def\thebrace@{\hbox{\makexeCJKinactive\MTEXE@\char183}}%
967 | \else
968 | \def\thebrace@{\hbox{\MTEXE@\char184}}%
969 | \fi\fi\fi\fi\fi\fi\fi\fi
970 | \else
971 | \ifnum\pointcount@<12
972 | \advance\pointcount@181
973 | \def\thebrace@{\hbox{\MTEXE@\char\pointcount@}}%
974 | \else
975 | \ifnum\pointcount@<24
976 | \advance\pointcount@148
977 | \def\thebrace@{\hbox{\MTEXF@\char\pointcount@}}%
978 | \else
979 | \advance\pointcount@136
980 | \ifnum\pointcount@>165 \pointcount@165 \fi
981 | \def\thebrace@{\hbox{\MTEXG@\char\pointcount@}}%
982 | \fi
983 | \fi
984 | \fi
985 | \mathop{\vbox{\ialign{\hfil##\hfil\cr\noalign{\kern3\p@}\thebrace@\crcr
986 | \noalign{\kern3\p@\nointerlineskip}$\displaystyle#1$\crcr}}}\limits}%
987 | }{}%
988 | }
989 | \catcode`\@=\current@catcode\relax
990 | \endinput
--------------------------------------------------------------------------------
/mtpro2-glyph-set.tex:
--------------------------------------------------------------------------------
1 | % !TeX program = XeLaTeX
2 | % !TeX encoding = UTF-8 Unicode
3 | %
4 | % This is file `mtpro2-glyph-set.tex'.
5 | %
6 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7 | %
8 | % !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
9 | %
10 | % Transferring the generated files (including the DVI and
11 | % the PDF files) from this file is explicitly prohibited.
12 | %
13 | % 严禁传播通过此文件生成的文件,包括 DVI 与 PDF 文件。
14 | %
15 | % !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
16 | %
17 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18 | %
19 | \documentclass[
20 | linespread=1.10502958579881657
21 | ]{ctexart}
22 | \input{allow-frac-scale}
23 | \ctexset{
24 | section={
25 | name={第,节},
26 | aftername=\hskip\ccwd\relax,
27 | format=\Large\bfseries
28 | }
29 | }
30 | \setmainfont{TeX Gyre Termes}[
31 | Scale=747/676,
32 | SmallCapsFeatures={LetterSpace=5}
33 | ]
34 | \setCJKmainfont{Source Han Serif SC Medium}[
35 | BoldFont=Source Han Serif SC Heavy,
36 | Language=Chinese Simplified
37 | ]
38 | \xeCJKsetup{
39 | xCJKecglue={\hskip\glueexpr6em plus3em minus2em*605/17928\relax}
40 | }
41 | \usepackage{mathtools}
42 | \usepackage[
43 | slantedGreek,
44 | mtpccal,mtpscr,mtpfrak,mtphrb
45 | ]{mtpro2}
46 | \newcommand*\mtpscale{747/676}
47 | \newcommand*\mtpscriptscale{504225/488072}
48 | \newcommand*\mtpscriptscriptscale{168075/164944}
49 | \input{mtpro2-patch}
50 | % CTeX setup
51 | % Assuming \mtpscale = 1.10502958579881657
52 | % \mtpscriptscale = 1.03309552688947532
53 | % \mtpscriptscriptscale = 1.01898220001940052
54 | % \defaultscriptratio = 0.7
55 | % \defaultscriptscriptratio = 0.55
56 | \DeclareMathSizes{7.5bp}{7.5bp}{350138sp}{5pt}
57 | \DeclareMathSizes{9bp}{9bp}{449421sp}{353116sp}
58 | \DeclareMathSizes{10.5bp}{10.5bp}{517162sp}{411969sp}
59 | \DeclareMathSizes{12bp}{12bp}{589823sp}{458751sp}% Sub-optimal
60 | \DeclareMathSymbol{\upGamma}{\mathalpha}{letters}{"80}
61 | \DeclareMathSymbol{\upDelta}{\mathalpha}{letters}{"81}
62 | \DeclareMathSymbol{\upTheta}{\mathalpha}{letters}{"82}
63 | \DeclareMathSymbol{\upLambda}{\mathalpha}{letters}{"83}
64 | \DeclareMathSymbol{\upXi}{\mathalpha}{letters}{"84}
65 | \DeclareMathSymbol{\upPi}{\mathalpha}{letters}{"85}
66 | \DeclareMathSymbol{\upSigma}{\mathalpha}{letters}{"86}
67 | \DeclareMathSymbol{\upUpsilon}{\mathalpha}{letters}{"87}
68 | \DeclareMathSymbol{\upPhi}{\mathalpha}{letters}{"88}
69 | \DeclareMathSymbol{\upPsi}{\mathalpha}{letters}{"89}
70 | \DeclareMathSymbol{\upOmega}{\mathalpha}{letters}{"7F}
71 | \DeclareMathSymbol{\upalpha}{\mathalpha}{letters}{"92}
72 | \DeclareMathSymbol{\upbeta}{\mathalpha}{letters}{"93}
73 | \DeclareMathSymbol{\upgamma}{\mathalpha}{letters}{"94}
74 | \DeclareMathSymbol{\updelta}{\mathalpha}{letters}{"95}
75 | \DeclareMathSymbol{\upepsilon}{\mathalpha}{letters}{"96}
76 | \DeclareMathSymbol{\upzeta}{\mathalpha}{letters}{"97}
77 | \DeclareMathSymbol{\upeta}{\mathalpha}{letters}{"98}
78 | \DeclareMathSymbol{\uptheta}{\mathalpha}{letters}{"99}
79 | \DeclareMathSymbol{\upiota}{\mathalpha}{letters}{"9A}
80 | \DeclareMathSymbol{\upkappa}{\mathalpha}{letters}{"9B}
81 | \DeclareMathSymbol{\uplambda}{\mathalpha}{letters}{"9C}
82 | \DeclareMathSymbol{\upmu}{\mathalpha}{letters}{"9D}
83 | \DeclareMathSymbol{\upnu}{\mathalpha}{letters}{"9E}
84 | \DeclareMathSymbol{\upxi}{\mathalpha}{letters}{"9F}
85 | \DeclareMathSymbol{\uppi}{\mathalpha}{letters}{160}
86 | \DeclareMathSymbol{\uprho}{\mathalpha}{letters}{161}
87 | \DeclareMathSymbol{\upsigma}{\mathalpha}{letters}{162}
88 | \DeclareMathSymbol{\uptau}{\mathalpha}{letters}{163}
89 | \DeclareMathSymbol{\upupsilon}{\mathalpha}{letters}{164}
90 | \DeclareMathSymbol{\upphi}{\mathalpha}{letters}{165}
91 | \DeclareMathSymbol{\upchi}{\mathalpha}{letters}{166}
92 | \DeclareMathSymbol{\uppsi}{\mathalpha}{letters}{167}
93 | \DeclareMathSymbol{\upomega}{\mathalpha}{letters}{168}
94 | \DeclareMathSymbol{\upvarepsilon}{\mathalpha}{letters}{169}
95 | \DeclareMathSymbol{\upvartheta}{\mathalpha}{letters}{170}
96 | \DeclareMathSymbol{\upvarpi}{\mathalpha}{letters}{171}
97 | \DeclareMathSymbol{\upvarrho}{\mathalpha}{letters}{172}
98 | \DeclareMathSymbol{\upvarsigma}{\mathalpha}{letters}{173}
99 | \DeclareMathSymbol{\upvarphi}{\mathalpha}{letters}{174}
100 | \DeclareMathSymbol{\upvarkappa}{\mathalpha}{letters}{175}
101 | \DeclareMathSymbol{\upvarbeta}{\mathalpha}{letters}{177}
102 | \DeclareMathSymbol{\upvardelta}{\mathalpha}{letters}{179}
103 | \DeclareMathAlphabet{\mathbbit}{U}{mt2hrb}{m}{it}
104 | \DeclareMathAlphabet{\mathbbb} {U}{mt2bb}{m}{n}
105 | \SetMathAlphabet{\mathbbb}{bold}{U}{mt2bb}{b}{n}
106 | \DeclareMathAlphabet{\mathbbbit}{U}{mt2bb}{m}{it}
107 | \DeclareMathSymbol{\zswash} {\mathalpha}{letters}{"B4}
108 | \DeclareMathSymbol{\mbfimath}{\mathalpha}{letters}{"10}
109 | \DeclareMathSymbol{\mbfjmath}{\mathalpha}{letters}{"11}
110 | \DeclareMathSymbol{\mbfgrave}{\mathalpha}{letters}{"12}
111 | \DeclareMathSymbol{\mbfacute}{\mathalpha}{letters}{"13}
112 | \DeclareMathSymbol{\mbfcheck}{\mathalpha}{letters}{"14}
113 | \DeclareMathSymbol{\mbfbreve}{\mathalpha}{letters}{"15}
114 | \DeclareMathSymbol{\mbfbar} {\mathalpha}{letters}{"16}
115 | \DeclareMathSymbol{\mbfhat} {\mathalpha}{letters}{94}
116 | \DeclareMathSymbol{\mbfdot} {\mathalpha}{letters}{95}
117 | \DeclareMathSymbol{\mbftilde}{\mathalpha}{letters}{126}
118 | \DeclareMathSymbol{\mbfddot} {\mathalpha}{letters}{127}
119 | \DeclareMathSymbol{\mbfldot} {\mathalpha}{letters}{46}
120 | %\DeclareMathSymbol{\calMi} {\mathalpha}{letters}{'075}
121 | %\DeclareMathSymbol{\calMii} {\mathalpha}{letters}{'076}
122 | \DeclareMathSymbol{\bmhmtie} {\mathord} {symbols}{65}
123 | \expandafter\DeclareMathSymbol\csname hm!\endcsname
124 | {\mathclose}{symbols}{246}
125 | \expandafter\DeclareMathSymbol\csname hm,\endcsname
126 | {\mathpunct}{symbols}{233}
127 | \expandafter\DeclareMathSymbol\csname hm.\endcsname
128 | {\mathord}{symbols}{232}
129 | \expandafter\DeclareMathSymbol\csname hm?\endcsname
130 | {\mathclose}{symbols}{247}
131 | \expandafter\DeclareMathSymbol\csname hm(\endcsname
132 | {\mathopen}{symbols}{230}
133 | \expandafter\DeclareMathSymbol\csname hm)\endcsname
134 | {\mathclose}{symbols}{231}
135 | \expandafter\DeclareMathSymbol\csname hm[\endcsname
136 | {\mathopen}{symbols}{248}
137 | \expandafter\DeclareMathSymbol\csname hm]\endcsname
138 | {\mathclose}{symbols}{249}
139 | \expandafter\DeclareMathSymbol\csname hm<\endcsname
140 | {\mathrel}{symbols}{234}
141 | \expandafter\DeclareMathSymbol\csname hm>\endcsname
142 | {\mathrel}{symbols}{236}
143 | \expandafter\DeclareMathSymbol\csname hm/\endcsname
144 | {\mathord}{symbols}{235}
145 | \DeclareMathSymbol{\hmpartial}{\mathord}{symbols}{238}
146 | \DeclareMathSymbol{\hmflat}{\mathord}{symbols}{239}
147 | \DeclareMathSymbol{\hmnatural}{\mathord}{symbols}{240}
148 | \DeclareMathSymbol{\hmsharp}{\mathord}{symbols}{241}
149 | \DeclareMathSymbol{\hmstar}{\mathbin}{symbols}{237}
150 | \DeclareMathSymbol{\hmsmile}{\mathrel}{symbols}{242}
151 | \DeclareMathSymbol{\hmfrown}{\mathrel}{symbols}{243}
152 | \DeclareMathSymbol{\hmleftharpoonup}{\mathrel}{symbols}{224}
153 | \DeclareMathSymbol{\hmleftharpoondown}{\mathrel}{symbols}{225}
154 | \DeclareMathSymbol{\hmrightharpoonup}{\mathrel}{symbols}{226}
155 | \DeclareMathSymbol{\hmrightharpoondown}{\mathrel}{symbols}{227}
156 | \DeclareMathSymbol{\hmlhook}{\mathrel}{symbols}{228}
157 | \DeclareMathSymbol{\hmrhook}{\mathrel}{symbols}{229}
158 | \DeclareMathSymbol{\hmdagger}{\mathbin}{symbols}{250}
159 | \DeclareMathSymbol{\hmddagger}{\mathbin}{symbols}{251}
160 | \DeclareMathSymbol{\hmell}{\mathord}{symbols}{244}
161 | \DeclareMathSymbol{\hmwp}{\mathord}{symbols}{245}
162 | \DeclareMathSymbol{\bmulcorner}{\mathopen} {AMSa}{"70}
163 | \DeclareMathSymbol{\bmurcorner}{\mathclose}{AMSa}{"71}
164 | \DeclareMathSymbol{\bmllcorner}{\mathopen} {AMSa}{"78}
165 | \DeclareMathSymbol{\bmlrcorner}{\mathclose}{AMSa}{"79}
166 | \DeclareMathSymbol{\bracemd}{\mathord}{largesymbols}{"86}
167 | \DeclareMathSymbol{\bracemu}{\mathord}{largesymbols}{"87}
168 | \DeclareMathDelimiter{\regularlmoustache}
169 | {\mathopen}{largesymbols}{"89}{largesymbols}{"89}
170 | \DeclareMathDelimiter{\regularrmoustache}
171 | {\mathclose}{largesymbols}{"8A}{largesymbols}{"8A}
172 | \DeclareMathAccent{\extwidehat}{\mathord}{largesymbols}{"62}
173 | \DeclareMathAccent{\extwidetilde}{\mathord}{largesymbols}{"65}
174 | \DeclareMathAccent{\extwidecheck}{\mathord}{largesymbols}{"7A}
175 | \usepackage{bm}
176 | \usepackage[text={430.5bp,609bp},centering]{geometry}
177 | \newcommand\test[1]{%
178 | $#1$\par
179 | \smallskip\par
180 | $\scriptstyle#1$\par
181 | \smallskip\par
182 | $\scriptscriptstyle#1$\par
183 | \medskip\par
184 | }
185 | \newcommand\testext[1]{%
186 | $#1$\par
187 | \medskip\par
188 | }
189 | \newcommand*\digits{%
190 | 0123456789%
191 | }
192 | \newcommand*\latinalphabet{%
193 | abcdefghi[\imath]j[\jmath]kl[\ell]mnop[\wp]qrstuvwxyz[\zswash]%
194 | }
195 | \newcommand*\ordinarylatinalphabet{%
196 | abcdefghijklmnopqrstuvwxyz%
197 | }
198 | \newcommand*\calandbblatinalphabet{%
199 | abcdefghi[\imath]j[\jmath]klmnopqrstuvwxyz%
200 | }
201 | \newcommand*\scrlatinalphabet{%
202 | abcdefghi[\imath]j[\jmath]klmnopqr[\altr]stuvwxyz[\altz]%
203 | }
204 | \newcommand*\fraklatinalphabet{%
205 | abcdefghi[\imath]j[\jmath]klmnopqrstuvwx[\altx]y[\alty]z%
206 | }
207 | \newcommand*\Latinalphabet{%
208 | ABCDEFGHIJKLMNOPQRSTUVWXYZ%
209 | }
210 | \newcommand*\calLatinalphabet{%
211 | ABCDEFG[\altG]HIJKLM[\altM]N[\altN]OPQ[\altQ]RSTUVWXY[\altY]Z%
212 | }
213 | \newcommand*\scrLatinalphabet{%
214 | ABC[\altC]DEFG[\altG]HI[\altI]JKL[\altL]MN%
215 | OPQ[\altQ]RS[\altS]TUVWXY[\altY]Z[\altZ]%
216 | }
217 | \newcommand*\frakLatinalphabet{%
218 | ABCDEFGHIJKLMNOPQRSTUVWXY[\altY]Z%
219 | }
220 | \newcommand*\greekalphabet{%
221 | \alpha\beta[\varbeta]\gamma\delta[\vardelta]\epsilon[\varepsilon]%
222 | \zeta\eta\theta[\vartheta]\iota\kappa[\varkappa]\lambda\mu\nu\xi
223 | \pi[\varpi]\rho[\varrho]\sigma[\varsigma]\tau\upsilon\phi[\varphi]%
224 | \chi\psi\omega
225 | }
226 | \newcommand*\Greekalphabet{%
227 | \Gamma\Delta\Theta\Lambda\Xi\Pi\Sigma\Upsilon\Phi\Psi\Omega
228 | }
229 | \newcommand*\upgreekalphabet{%
230 | \upalpha\upbeta[\upvarbeta]\upgamma\updelta[\upvardelta]%
231 | \upepsilon[\upvarepsilon]\upzeta\upeta\uptheta[\upvartheta]%
232 | \upiota\upkappa[\upvarkappa]\uplambda\upmu\upnu\upxi
233 | \uppi[\upvarpi]\uprho[\upvarrho]\upsigma[\upvarsigma]%
234 | \uptau\upupsilon\upphi[\upvarphi]\upchi\uppsi\upomega
235 | }
236 | \newcommand*\upGreekalphabet{%
237 | \upGamma\upDelta\upTheta\upLambda\upXi\upPi
238 | \upSigma\upUpsilon\upPhi\upPsi\upOmega
239 | }
240 | \newcommand*\punctuationandothers{%
241 | !,.?()[]<>/\partial\flat\natural\sharp\star\smile\frown
242 | \leftharpoonup\leftharpoondown\rightharpoonup\rightharpoondown
243 | \lhook\rhook\dagger\ddagger\mathsection\mathparagraph\dbar\updbar
244 | }
245 | \newcommand*\mbfothers{%
246 | \mbfimath\mbfjmath
247 | \mbfgrave\mbfacute\mbfcheck\mbfbreve\mbfbar
248 | \mbfhat\mbfdot\mbftilde\mbfddot\mbfldot
249 | }
250 | \newcommand*\bmpunctuationandothers{%
251 | !,.?()[]<>/\partial\flat\natural\sharp\star\smile\frown
252 | \leftharpoonup\leftharpoondown\rightharpoonup\rightharpoondown
253 | \lhook\rhook\dagger\ddagger\dbar\updbar
254 | }
255 | \newcommand*\hmpunctuationandothers{%
256 | \csname hm!\endcsname\csname hm,\endcsname
257 | \csname hm.\endcsname\csname hm?\endcsname
258 | \csname hm(\endcsname\csname hm)\endcsname
259 | \csname hm[\endcsname\csname hm]\endcsname
260 | \csname hm<\endcsname\csname hm>\endcsname
261 | \csname hm/\endcsname
262 | \hmpartial\hmflat\hmnatural\hmsharp\hmstar\hmsmile\hmfrown
263 | \hmleftharpoonup\hmleftharpoondown\hmrightharpoonup\hmrightharpoondown
264 | \hmlhook\hmrhook\hmdagger\hmddagger\hmell\hmwp
265 | }
266 | \newcommand*\mathem{\mskip18mu\relax}
267 | \newcommand*\mathen{\mskip9mu\relax}
268 | \newcommand*\basicsymbolsi{%
269 | *+-:;=\langle\rangle|\backslash % 10
270 | \aleph\Re\Im\infty\prime\emptyset\nabla\surd\top\bot % 10
271 | \forall\exists\neg\clubsuit\diamondsuit\heartsuit\spadesuit % 7
272 | \smallint\triangleleft\triangleright\bigtriangleup\bigtriangledown % 5
273 | \wedge\vee\cap\cup\sqcap\sqcup\uplus\amalg\diamond\bullet % 10
274 | \wr\div\odot\oslash\otimes\ominus\oplus % 7
275 | } % 49
276 | \newcommand*\basicsymbolsii{%
277 | \mp\pm\circ\bigcirc\cdot\times\propto\sqsubseteq\sqsupseteq % 9
278 | \parallel\dashv\vdash\nearrow\searrow\nwarrow\swarrow % 7
279 | \Leftrightarrow\Leftarrow\Rightarrow\leq\geq\approx % 6
280 | \succ\prec\succeq\preceq\supset\subset\supseteq\subseteq % 8
281 | \in\ni\gg\ll\not\mathem % 5
282 | \leftrightarrow\leftarrow\rightarrow\mapstochar % 4
283 | } % 39
284 | \newcommand*\basicsymbolsiii{%
285 | \sim\simeq\equiv\asymp\Relbar\vec*% 6
286 | \grave*\acute*\check*\breve*\bar*\hat*\dot*\tilde*\ddot*\mathring*% 10
287 | \uparrow\downarrow\updownarrow\Uparrow\Downarrow\Updownarrow % 6
288 | \lbrace\rbrace\lceil\rceil\lfloor\rfloor % 6
289 | \openclubsuit\shadedclubsuit\openspadesuit\shadedspadesuit % 4
290 | \hbar\hslash\digamma\comp\setdif\cupprod\capprod\simarrow\varland % 9
291 | \contraction\coloneq\eqcolon\hateq\circdashbullet\bulletdashcirc % 6
292 | } % 47
293 | \newcommand*\basicsymbolsiv{%
294 | \dddot*\mathen\ddddot*\mathen % 2
295 | \dotup*\mathen\ddotup*\mathen\dddotup*\mathen\ddddotup*\mathen % 4
296 | \what*\mathen\wtilde*\mathen\wcheck*\mathen\wbar*\mathen\wwbar*% 5
297 | \angle\models\bowtie\cong\Longleftrightarrow\rightleftharpoons\notin % 7
298 | \notless\notleq\notprec\notpreceq\notsubset\notsubseteq\notsqsubseteq % 7
299 | \notgr\notgeq\notsucc\notsucceq\notsupset\notsupseteq\notsqsupseteq % 7
300 | \neq\notequiv\notsim\notsimeq\notapprox\notcong\notasymp % 7
301 | } % 39
302 | \newcommand*\basicsymbolsv{%
303 | \doteq\hookleftarrow\hookrightarrow\longleftarrow\longrightarrow % 5
304 | \Longleftarrow\Longrightarrow\mapsto\longmapsto\longleftrightarrow % 5
305 | } % 10
306 | \newcommand*\amssymbolsi{%
307 | \boxdot\boxplus\boxtimes\square\blacksquare\centerdot % 6
308 | \lozenge\blacklozenge\circlearrowright\circlearrowleft % 4
309 | \leftrightharpoons\boxminus\Vdash\Vvdash\vDash % 5
310 | \twoheadrightarrow\twoheadleftarrow % 2
311 | \leftleftarrows\rightrightarrows\upuparrows\downdownarrows % 4
312 | \upharpoonright\downharpoonright\upharpoonleft\downharpoonleft % 4
313 | \rightarrowtail\leftarrowtail\leftrightarrows\rightleftarrows % 4
314 | \Lsh\Rsh\rightsquigarrow\leftrightsquigarrow % 4
315 | } % 33
316 | \newcommand*\amssymbolsii{%
317 | \looparrowleft\looparrowright\circeq % 3
318 | \succsim\gtrsim\gtrapprox\multimap % 4
319 | \therefore\because\doteqdot\triangleq % 4
320 | \precsim\lesssim\lessapprox\eqslantless\eqslantgtr % 5
321 | \curlyeqprec\curlyeqsucc\preccurlyeq\leqq\leqslant\lessgtr % 6
322 | \backprime\midshaft\risingdotseq\fallingdotseq % 4
323 | \succcurlyeq\geqq\geqslant\gtrless\sqsubset\sqsupset % 6
324 | \vartriangleright\vartriangleleft % 2
325 | \trianglerighteq\trianglelefteq\bigstar\between % 4
326 | } % 38
327 | \newcommand*\amssymbolsiii{%
328 | \blacktriangledown\blacktriangleright\blacktriangleleft % 3
329 | \rarrowhead\larrowhead\vartriangle\blacktriangle\triangledown % 5
330 | \eqcirc\lesseqgtr\gtreqless\lesseqqgtr\gtreqqless\yen % 6
331 | \Rrightarrow\Lleftarrow\checkmark % 3
332 | \veebar\barwedge\doublebarwedge % 3
333 | \measuredangle\sphericalangle\varpropto\smallsmile\smallfrown % 5
334 | \Subset\Supset\Cup\Cap\curlywedge\curlyvee % 6
335 | \leftthreetimes\rightthreetimes\subseteqq\supseteqq % 4
336 | \bumpeq\Bumpeq\lll\ggg % 4
337 | } % 39
338 | \newcommand*\amssymbolsiv{%
339 | \bmulcorner\bmurcorner\circledR\circledS\pitchfork\dotplus % 6
340 | \backsim\backsimeq\bmllcorner\bmlrcorner\maltese % 5
341 | \complement\intercal\circledcirc\circledast\circleddash % 5
342 | \lvertneqq\gvertneqq\nleq\ngeq\nless\ngtr\nprec\nsucc % 8
343 | \lneqq\gneqq\nleqslant\ngeqslant\lneq\gneq\npreceq\nsucceq % 8
344 | \precnsim\succnsim\lnsim\gnsim\nleqq\ngeqq % 6
345 | \precneqq\succneqq\precnapprox\succnapprox % 4
346 | } % 42
347 | \newcommand*\amssymbolsv{%
348 | \lnapprox\gnapprox\nsim\ncong\diagup\diagdown % 6
349 | \varsubsetneq\varsupsetneq\nsubseteqq\nsupseteqq % 4
350 | \subsetneqq\supsetneqq\varsubsetneqq\varsupsetneqq % 4
351 | \subsetneq\supsetneq\nsubseteq\nsupseteq\nparallel\nmid % 6
352 | \nshortmid\nshortparallel\nvdash\nVdash\nvDash\nVDash % 6
353 | \ntrianglerighteq\ntrianglelefteq\ntriangleleft\ntriangleright % 4
354 | \nleftarrow\nrightarrow\nLeftarrow\nRightarrow % 4
355 | \nLeftrightarrow\nleftrightarrow\divideontimes % 3
356 | } % 37
357 | \newcommand*\amssymbolsvi{%
358 | \varnothing\nexists\Finv\Game\mho\eth\eqsim\beth\gimel\daleth % 10
359 | \lessdot\gtrdot\ltimes\rtimes\shortmid\shortparallel % 6
360 | \thicksim\thickapprox\approxeq\succapprox\precapprox % 5
361 | \curvearrowleft\curvearrowright\backepsilon % 3
362 | \nsqsubset\nsqsupset\nsqsubseteq\nsqsupseteq % 4
363 | \dashleftarrow\dashrightarrow\leadsto\Diamond % 4
364 | \updownarrows\downuparrows\updownharpoons\downupharpoons % 4
365 | \upupharpoons\downdownharpoons % 2
366 | \undercurvearrowleft\undercurvearrowright % 2
367 | } % 40
368 | \newcommand*\mathneg[1]{\mskip-#1mu\relax}
369 | \newcommand*\td[1]{#1{\displaystyle#1}}
370 | \newcommand*\tdneg[1]{#1\mskip-4.5mu\relax
371 | {\displaystyle#1}\mskip-4.5mu\relax}
372 | \newcommand*\vastl{\mathopen\vast}
373 | \newcommand*\vastm{\mathrel\vast}
374 | \newcommand*\vastr{\mathclose\vast}
375 | \newcommand*\Vastl{\mathopen\Vast}
376 | \newcommand*\Vastm{\mathrel\Vast}
377 | \newcommand*\Vastr{\mathclose\Vast}
378 | \newcommand*\extwideaccent[1]{%
379 | #1{\mskip15mu\relax}%
380 | #1{\mskip21mu\relax}%
381 | #1{\mskip27mu\relax}%
382 | }
383 | \newcommand*\extsymbolsi{%
384 | \bigl(\Bigl(\biggl(\Biggl(\Biggr)\biggr)\Bigr)\bigr)%
385 | \bigl[\Bigl[\biggl[\Biggl[\Biggr]\biggr]\Bigr]\bigr]%
386 | \bigl\{\Bigl\{\biggl\{\Biggl\{\Biggr\}\biggr\}\Bigr\}\bigr\}%
387 | \bigl\langle\Bigl\langle\biggl\langle\Biggl\langle
388 | \Biggr\rangle\biggr\rangle\Bigr\rangle\bigr\rangle
389 | \bigl\lfloor\Bigl\lfloor\biggl\lfloor\Biggl\lfloor
390 | \Biggr\rfloor\biggr\rfloor\Bigr\rfloor\bigr\rfloor
391 | \bigl\lceil\Bigl\lceil\biggl\lceil\Biggl\lceil
392 | \Biggr\rceil\biggr\rceil\Bigr\rceil\bigr\rceil
393 | \bigl/\mathneg6\Bigl/\mathneg9\biggl/\mathneg{12}\Biggl/%
394 | \Biggr\backslash\mathneg{12}\biggr\backslash\mathneg9%
395 | \Bigr\backslash\mathneg6\bigr\backslash
396 | } % 56
397 | \newcommand*\extsymbolsii{%
398 | \td\upsumop\td\upprodop\td\upcoprodop
399 | \td\bigcup\td\bigcap\td\biguplus
400 | \td\bigwedge\td\bigvee\td\bigsqcup
401 | \td\bigodot\td\bigoplus\td\bigotimes
402 | \tdneg\slsumop\tdneg\slprodop\tdneg\slcoprodop
403 | } % 30
404 | \newcommand*\extsymbolsiii{%
405 | \td\intop\td\iintop\td\iiintop
406 | \td\ointop\td\oiintop\td\oiiintop
407 | \td\cwointop\td\awointop\td\cwintop
408 | \td\barintop\td\slashintop
409 | \sqrtsign{\vphantom{|^*}}\sqrtsign{\vphantom{\big|}}%
410 | \sqrtsign{\vphantom{\Big|}}\sqrtsign{\vphantom{\bigg|}}%
411 | \sqrtsign{\vphantom{\Bigg|}}%
412 | } % 29
413 | \newcommand*\extsymbolsiv{%
414 | \vastl(\Vastl(\Vastr)\vastr)%
415 | \vastl[\Vastl[\Vastr]\vastr]%
416 | \vastl\{\Vastl\{\Vastr\}\vastr\}%
417 | \vastl\lfloor\Vastl\lfloor\Vastr\rfloor\vastr\rfloor
418 | \vastl\lceil\Vastl\lceil\Vastr\rceil\vastr\rceil
419 | \mathen
420 | \braceld\mathen\bracemu\mathen\bracerd\mathen
421 | \bracelu\mathen\bracemd\mathen\braceru\mathen
422 | \big\vert\big\Vert
423 | \Big\updownarrow\Big\Updownarrow
424 | \biggl\lgroup\biggr\rgroup
425 | } % 34 (regular) or 33 (bm, hm)
426 | \newcommand*\extsymbolsv{%
427 | \td\bigcupprod\td\bigcapprod\td\bigvarland\td\bigast
428 | \extwideaccent\extwidehat
429 | \extwideaccent\extwidetilde
430 | \extwideaccent\extwidecheck
431 | } % 17
432 | \newcommand*\zerodel{.\kern-\nulldelimiterspace}
433 | \newcommand*\xloperator[1]{%
434 | \leavevmode
435 | \hbox to 2462526sp{\hss$\xl #1$\hss}%
436 | \hbox to 3693789sp{\hss$\XL #1$\hss}%
437 | \hbox to 7387577sp{\hss$\XXL #1$\hss}%
438 | \hbox to 14775155sp{\hss$\XXXL#1$\hss}%
439 | }
440 | \newcommand\testextbrace[1]{%
441 | \newpage
442 | $#1{\hcontent{ 1}}$\par % EXE
443 | $#1{\hcontent{ 2}}$\par
444 | $#1{\hcontent{ 3}}$\par
445 | $#1{\hcontent{ 4}}$\par
446 | $#1{\hcontent{ 5}}$\par
447 | $#1{\hcontent{ 6}}$\par
448 | $#1{\hcontent{ 7}}$\par
449 | $#1{\hcontent{ 8}}$\par
450 | $#1{\hcontent{ 9}}$\par
451 | $#1{\hcontent{10}}$\par
452 | $#1{\hcontent{11}}$\par
453 | $#1{\hcontent{12}}$\par
454 | $#1{\hcontent{13}}$\par
455 | $#1{\hcontent{14}}$\par
456 | $#1{\hcontent{15}}$\par
457 | $#1{\hcontent{16}}$\par
458 | $#1{\hcontent{17}}$\par
459 | $#1{\hcontent{18}}$\par % EXF
460 | $#1{\hcontent{19}}$\par
461 | $#1{\hcontent{20}}$\par
462 | $#1{\hcontent{21}}$\par
463 | $#1{\hcontent{22}}$\par
464 | $#1{\hcontent{23}}$\par
465 | $#1{\hcontent{24}}$\par
466 | $#1{\hcontent{25}}$\par
467 | $#1{\hcontent{26}}$\par
468 | $#1{\hcontent{27}}$\par
469 | $#1{\hcontent{28}}$\par
470 | $#1{\hcontent{29}}$\par
471 | $#1{\hcontent{30}}$\par % EXG
472 | $#1{\hcontent{31}}$\par
473 | $#1{\hcontent{32}}$\par
474 | $#1{\hcontent{33}}$\par
475 | $#1{\hcontent{34}}$\par
476 | $#1{\hcontent{35}}$%
477 | }
478 | \newcommand\testextaccent[1]{%
479 | \newpage
480 | $#1{\hcontent{39}}$\par % EXE
481 | $#1{\hcontent{40}}$\par
482 | $#1{\hcontent{41}}$\par
483 | $#1{\hcontent{42}}$\par
484 | $#1{\hcontent{43}}$\par
485 | $#1{\hcontent{44}}$\par
486 | $#1{\hcontent{45}}$\par
487 | $#1{\hcontent{46}}$\par
488 | $#1{\hcontent{47}}$\par
489 | $#1{\hcontent{48}}$\par % EXF
490 | $#1{\hcontent{49}}$\par
491 | $#1{\hcontent{50}}$\par
492 | $#1{\hcontent{51}}$\par
493 | $#1{\hcontent{52}}$\par
494 | $#1{\hcontent{53}}$\par
495 | $#1{\hcontent{54}}$\par
496 | $#1{\hcontent{55}}$\par
497 | $#1{\hcontent{56}}$\par
498 | $#1{\hcontent{57}}$\par
499 | $#1{\hcontent{58}}$\par
500 | $#1{\hcontent{59}}$\par % EXG
501 | $#1{\hcontent{60}}$\par
502 | $#1{\hcontent{61}}$\par
503 | $#1{\hcontent{62}}$\par
504 | $#1{\hcontent{63}}$\par
505 | $#1{\hcontent{64}}$\par
506 | $#1{\hcontent{65}}$\par
507 | $#1{\hcontent{66}}$\par
508 | $#1{\hcontent{67}}$\par
509 | $#1{\hcontent{68}}$\par
510 | $#1{\hcontent{69}}$\par
511 | $#1{\hcontent{70}}$%
512 | }
513 | \makeatletter
514 | \newcommand*\vast{\bBigg@\thr@@}
515 | \newcommand*\Vast{\bBigg@{3.5}}
516 | \newcommand*\vcontent[1]{%
517 | \vrule\@height
518 | \ifcase#1 1.0em%
519 | \or 1.2em%
520 | \or 1.8em%
521 | \or 2.4em%
522 | \or 3.0em%
523 | \or 3.6em%
524 | \or 4.2em%
525 | \or 4.8em%
526 | \or 5.4em%
527 | \or 6.0em%
528 | \or 6.6em%
529 | \or 7.2em%
530 | \or 8.4em%
531 | \or 9.6em%
532 | \or 10.8em%
533 | \or 12.0em%
534 | \or 13.2em%
535 | \or 14.4em%
536 | \or 16.8em%
537 | \or 19.2em%
538 | \or 21.6em%
539 | \or 24.0em%
540 | \or 26.4em%
541 | \or 28.8em%
542 | \else \z@
543 | \fi
544 | \@width\z@\relax
545 | }
546 | \newcommand*\hcontent[1]{%
547 | \vrule\@width
548 | \ifcase#1 1.0em% \undercbrace and \overcbrace
549 | \or 1.2em%
550 | \or 1.5em%
551 | \or 1.8em%
552 | \or 2.1em%
553 | \or 2.4em%
554 | \or 2.7em%
555 | \or 3.0em%
556 | \or 3.3em%
557 | \or 3.6em%
558 | \or 4.6em%
559 | \or 5.6em%
560 | \or 6.6em%
561 | \or 7.6em%
562 | \or 8.6em%
563 | \or 9.6em%
564 | \or 10.6em%
565 | \or 11.6em%
566 | \or 12.6em%
567 | \or 13.6em%
568 | \or 14.6em%
569 | \or 15.6em%
570 | \or 16.6em%
571 | \or 17.6em%
572 | \or 18.6em%
573 | \or 19.6em%
574 | \or 20.6em%
575 | \or 21.6em%
576 | \or 22.6em%
577 | \or 23.6em%
578 | \or 24.6em%
579 | \or 25.6em%
580 | \or 26.6em%
581 | \or 27.6em%
582 | \or 28.6em%
583 | \or 29.6em%
584 | \or 0.512em% \widehat, \widetilde and \widecheck
585 | \or 0.743em%
586 | \or 1.076em%
587 | \or 1.409em%
588 | \or 2.073em%
589 | \or 2.737em%
590 | \or 3.401em%
591 | \or 4.065em%
592 | \or 4.729em%
593 | \or 5.393em%
594 | \or 6.057em%
595 | \or 6.721em%
596 | \or 7.385em%
597 | \or 8.049em%
598 | \or 8.713em%
599 | \or 9.377em%
600 | \or 10.041em%
601 | \or 10.705em%
602 | \or 11.369em%
603 | \or 12.033em%
604 | \or 12.697em%
605 | \or 13.361em%
606 | \or 14.025em%
607 | \or 14.689em%
608 | \or 16.017em%
609 | \or 17.345em%
610 | \or 18.673em%
611 | \or 20.001em%
612 | \or 21.329em%
613 | \or 22.657em%
614 | \or 23.985em%
615 | \or 25.313em%
616 | \or 26.641em%
617 | \or 27.969em%
618 | \or 29.297em%
619 | \else \z@
620 | \fi
621 | \@height\z@\relax
622 | }
623 | \newcommand*\hcontentarc[1]{%
624 | \vrule\@width
625 | \ifcase#1 0.512em%
626 | \or 0.743em%
627 | \or 1.201em%
628 | \or 1.801em%
629 | \or 2.401em%
630 | \or 3.001em%
631 | \or 3.601em%
632 | \or 4.201em%
633 | \or 4.801em%
634 | \or 5.401em%
635 | \or 6.001em%
636 | \or 6.601em%
637 | \or 7.201em%
638 | \or 8.401em%
639 | \or 9.601em%
640 | \or 10.801em%
641 | \or 12.001em%
642 | \or 13.201em%
643 | \or 14.401em%
644 | \or 16.801em%
645 | \or 19.201em%
646 | \or 21.601em%
647 | \or 24.001em%
648 | \or 26.401em%
649 | \or 28.801em%
650 | \else \z@
651 | \fi
652 | \@height\z@\relax
653 | }
654 | \makeatother
655 | \parindent 0pt\relax
656 | \thinmuskip 0mu\relax
657 | \medmuskip 0mu\relax
658 | \thickmuskip0mu\relax
659 | \pagestyle{plain}
660 | \begin{document}
661 | \section{Math italic, 183}
662 | \test\digits
663 | \test\latinalphabet
664 | \test\Latinalphabet
665 | \test\greekalphabet
666 | \test\Greekalphabet
667 | \test\upgreekalphabet
668 | \test\upGreekalphabet
669 | \test\punctuationandothers
670 | \section{Math bold, 74 \& space}
671 | \test{\mbf\digits}%
672 | \test{\mbf\ordinarylatinalphabet}%
673 | \test{\mbf\Latinalphabet}%
674 | \test{\mbf\mbfothers}%
675 | \section{Bold math italic, 181}
676 | \test{\bm\digits}%
677 | \test{\bm\latinalphabet}%
678 | \test{\bm\Latinalphabet}%
679 | \test{\bm\greekalphabet}%
680 | \test{\bm\Greekalphabet}%
681 | \test{\bm\upgreekalphabet}%
682 | \test{\bm\upGreekalphabet}%
683 | \test{\bm\bmpunctuationandothers}%
684 | \section{Math curly, 59 \& space}
685 | \test{\mathcal\calandbblatinalphabet}%
686 | \test{\mathcal\calLatinalphabet}%
687 | \section{Math script, 64 \& space}
688 | \test{\mathscr\scrlatinalphabet}%
689 | \test{\mathscr\scrLatinalphabet}%
690 | \section{Bold math script, 64 \& space}
691 | \test{\bm{\mathscr\scrlatinalphabet}}%
692 | \test{\bm{\mathscr\scrLatinalphabet}}%
693 | \section{Math fraktur, 57 \& space}
694 | \test{\mathfrak\fraklatinalphabet}%
695 | \test{\mathfrak\frakLatinalphabet}%
696 | \section{Bold math fraktur, 57 \& space}
697 | \test{\bm{\mathfrak\fraklatinalphabet}}%
698 | \test{\bm{\mathfrak\frakLatinalphabet}}%
699 | \section{Math holey roman bold, 64 \& space}
700 | \test{\mathbb\digits}%
701 | \test{\mathbb\calandbblatinalphabet}%
702 | \test{\mathbb\Latinalphabet}%
703 | \section{Math holey roman dark, 64 \& space}
704 | \test{\bm{\mathbb\digits}}%
705 | \test{\bm{\mathbb\calandbblatinalphabet}}%
706 | \test{\bm{\mathbb\Latinalphabet}}%
707 | \section{Math holey bold italic, 150 \& space}
708 | \test{\mathbbit\digits}%
709 | \test{\mathbbit\calandbblatinalphabet}%
710 | \test{\mathbbit\Latinalphabet}%
711 | \test{\mathbbit\greekalphabet}%
712 | \test{\mathbbit\Greekalphabet}%
713 | \test{\mathbbit\upgreekalphabet}%
714 | \test{\mathbbit\upGreekalphabet}%
715 | \section{Math blackboard bold, 64 \& space}
716 | \test{\mathbbb\digits}%
717 | \test{\mathbbb\calandbblatinalphabet}%
718 | \test{\mathbbb\Latinalphabet}%
719 | \section{Math blackboard dark, 64 \& space}
720 | \test{\bm{\mathbbb\digits}}%
721 | \test{\bm{\mathbbb\calandbblatinalphabet}}%
722 | \test{\bm{\mathbbb\Latinalphabet}}%
723 | \section{Math blackboard italic, 150 \& space}
724 | \test{\mathbbbit\digits}%
725 | \test{\mathbbbit\calandbblatinalphabet}%
726 | \test{\mathbbbit\Latinalphabet}%
727 | \test{\mathbbbit\greekalphabet}%
728 | \test{\mathbbbit\Greekalphabet}%
729 | \test{\mathbbbit\upgreekalphabet}%
730 | \test{\mathbbbit\upGreekalphabet}%
731 | \section{Basic symbols, 187}
732 | \test{%
733 | \basicsymbolsi \hfill\mathstrut\penalty0 %
734 | \basicsymbolsii \hfill\mathstrut\penalty0 %
735 | \basicsymbolsiii \hfill\mathstrut\penalty0 %
736 | \basicsymbolsiv \hfill\mathstrut\penalty0 %
737 | \basicsymbolsv
738 | \text{~Serge\u\i~\t Iur'ev~}% 1
739 | \straightbraces\lbrace\rbrace % 2
740 | }%
741 | \section{Bold basic symbols, 187}
742 | \test{%
743 | \bm\basicsymbolsi \hfill\mathstrut\penalty0 %
744 | \bm\basicsymbolsii \hfill\mathstrut\penalty0 %
745 | \bm\basicsymbolsiii \hfill\mathstrut\penalty0 %
746 | \bm\basicsymbolsiv \hfill\mathstrut\penalty0 %
747 | \bm\basicsymbolsv
748 | \textbf{~Serge\u\i~I$\bm\bmhmtie$ur'ev~}% 1
749 | \straightbraces\bm{\lbrace\rbrace}% 2
750 | }%
751 | \section{Heavy basic symbols, 215}
752 | \test{%
753 | \hm\basicsymbolsi \hfill\mathstrut\penalty0 %
754 | \hm\basicsymbolsii \hfill\mathstrut\penalty0 %
755 | \hm\basicsymbolsiii \hfill\mathstrut\penalty0 %
756 | \hm\basicsymbolsiv \hfill\mathstrut\penalty0 %
757 | \hm\basicsymbolsv
758 | \textbf{~Serge\u\i~I$\hm\bmhmtie$ur'ev~}% 1
759 | \straightbraces\hm{\lbrace\rbrace}% 2
760 | \hfill\mathstrut\penalty0 %
761 | \textbf{\qquad\qquad\qquad28 punctuation and others:\quad}%
762 | \hm\hmpunctuationandothers
763 | }%
764 | \section{AMS symbols, 229 (13 duplicates)}
765 | \test{%
766 | \amssymbolsi \hfill\mathstrut\penalty0 %
767 | \amssymbolsii \hfill\mathstrut\penalty0 %
768 | \amssymbolsiii \hfill\mathstrut\penalty0 %
769 | \amssymbolsiv \hfill\mathstrut\penalty0 %
770 | \amssymbolsv \hfill\mathstrut\penalty0 %
771 | \amssymbolsvi
772 | }%
773 | \section{Bold AMS symbols, 229 (13 duplicates)}
774 | \test{%
775 | \bm\amssymbolsi \hfill\mathstrut\penalty0 %
776 | \bm\amssymbolsii \hfill\mathstrut\penalty0 %
777 | \bm\amssymbolsiii \hfill\mathstrut\penalty0 %
778 | \bm\amssymbolsiv \hfill\mathstrut\penalty0 %
779 | \bm\amssymbolsv \hfill\mathstrut\penalty0 %
780 | \bm\amssymbolsvi
781 | }%
782 | \section{Heavy AMS symbols, 229 (13 duplicates)}
783 | \test{%
784 | \hm\amssymbolsi \hfill\mathstrut\penalty0 %
785 | \hm\amssymbolsii \hfill\mathstrut\penalty0 %
786 | \hm\amssymbolsiii \hfill\mathstrut\penalty0 %
787 | \hm\amssymbolsiv \hfill\mathstrut\penalty0 %
788 | \hm\amssymbolsv \hfill\mathstrut\penalty0 %
789 | \hm\amssymbolsvi
790 | }%
791 | \section{Extensible symbols, 190}
792 | \testext{%
793 | \extsymbolsi \hfill\mathstrut\penalty0 %
794 | \extsymbolsii \hfill\mathstrut\penalty0 %
795 | \extsymbolsiii \hfill\mathstrut\penalty0 %
796 | \extsymbolsiv
797 | \biggl\regularlmoustache\biggr\regularrmoustache
798 | \wwhat\mathem\wwtilde\mathem\wwcheck\mathem
799 | \hfill\mathstrut\penalty0 %
800 | \extsymbolsv
801 | \straightbraces
802 | \bigl\{\Bigl\{\biggl\{\Biggl\{\Biggr\}\biggr\}\Bigr\}\bigr\}%
803 | \morphedbraces
804 | \bigl\{\Bigl\{\biggl\{\Biggl\{\Biggr\}\biggr\}\Bigr\}\bigr\}%
805 | }%
806 | \section{Bold extensible symbols, 181}
807 | \testext{%
808 | \bm\extsymbolsi \hfill\mathstrut\penalty0 %
809 | \bm\extsymbolsii \hfill\mathstrut\penalty0 %
810 | \bm\extsymbolsiii \hfill\mathstrut\penalty0 %
811 | \bm\extsymbolsiv
812 | \bm{\biggl\lmoustache\biggr\rmoustache}%
813 | \hfill\mathstrut\penalty0 %
814 | \bm\extsymbolsv
815 | \straightbraces
816 | \bm{\bigl\{\Bigl\{\biggl\{\Biggl\{\Biggr\}\biggr\}\Bigr\}\bigr\}}%
817 | \morphedbraces
818 | \bm{\bigl\{\Bigl\{\biggl\{\Biggl\{\Biggr\}\biggr\}\Bigr\}\bigr\}}%
819 | }%
820 | \section{Heavy extensible symbols, 181}
821 | \testext{%
822 | \hm\extsymbolsi \hfill\mathstrut\penalty0 %
823 | \hm\extsymbolsii \hfill\mathstrut\penalty0 %
824 | \hm\extsymbolsiii \hfill\mathstrut\penalty0 %
825 | \hm\extsymbolsiv
826 | \hm{\biggl\lmoustache\biggr\rmoustache}%
827 | \hfill\mathstrut\penalty0 %
828 | \hm\extsymbolsv
829 | \straightbraces
830 | \hm{\bigl\{\Bigl\{\biggl\{\Biggl\{\Biggr\}\biggr\}\Bigr\}\bigr\}}%
831 | \morphedbraces
832 | \hm{\bigl\{\Bigl\{\biggl\{\Biggl\{\Biggr\}\biggr\}\Bigr\}\bigr\}}%
833 | }%
834 | \section{Extra large symbols}
835 | \hbox to\textwidth{\hss$%
836 | \LEFTRIGHT(\zerodel{\vcontent{ 5}}\mathneg{ 7.246}% EXE
837 | \LEFTRIGHT(\zerodel{\vcontent{ 6}}\mathneg{ 8.074}%
838 | \LEFTRIGHT(\zerodel{\vcontent{ 7}}\mathneg{ 8.866}%
839 | \LEFTRIGHT(\zerodel{\vcontent{ 8}}\mathneg{ 9.694}%
840 | \LEFTRIGHT(\zerodel{\vcontent{ 9}}\mathneg{11.386}%
841 | \LEFTRIGHT(\zerodel{\vcontent{10}}\mathneg{12.214}%
842 | \LEFTRIGHT(\zerodel{\vcontent{11}}\mathneg{ 6.284}% EXF
843 | \LEFTRIGHT(\zerodel{\vcontent{12}}\mathneg{ 7.940}%
844 | \LEFTRIGHT(\zerodel{\vcontent{13}}\mathneg{ 9.668}%
845 | \LEFTRIGHT(\zerodel{\vcontent{14}}\mathneg{11.252}%
846 | \LEFTRIGHT(\zerodel{\vcontent{15}}\mathneg{12.836}%
847 | \LEFTRIGHT(\zerodel{\vcontent{16}}\mathneg{14.492}%
848 | \LEFTRIGHT(\zerodel{\vcontent{17}}\mathneg{ 3.929}% EXG
849 | \LEFTRIGHT(\zerodel{\vcontent{18}}\mathneg{ 8.969}%
850 | \LEFTRIGHT(\zerodel{\vcontent{19}}\mathneg{13.865}%
851 | \LEFTRIGHT(\zerodel{\vcontent{20}}\mathneg{18.761}%
852 | \LEFTRIGHT(\zerodel{\vcontent{21}}\mathneg{23.801}%
853 | \LEFTRIGHT(\zerodel{\vcontent{22}}\mathneg{28.697}%
854 | \LEFTRIGHT() {\vcontent{23}}\mathneg{28.697}%
855 | \LEFTRIGHT\zerodel){\vcontent{22}}\mathneg{23.801}%
856 | \LEFTRIGHT\zerodel){\vcontent{21}}\mathneg{18.761}%
857 | \LEFTRIGHT\zerodel){\vcontent{20}}\mathneg{13.865}%
858 | \LEFTRIGHT\zerodel){\vcontent{19}}\mathneg{ 8.969}%
859 | \LEFTRIGHT\zerodel){\vcontent{18}}\mathneg{ 3.929}%
860 | \LEFTRIGHT\zerodel){\vcontent{17}}\mathneg{14.492}%
861 | \LEFTRIGHT\zerodel){\vcontent{16}}\mathneg{12.836}% EXF
862 | \LEFTRIGHT\zerodel){\vcontent{15}}\mathneg{11.252}%
863 | \LEFTRIGHT\zerodel){\vcontent{14}}\mathneg{ 9.668}%
864 | \LEFTRIGHT\zerodel){\vcontent{13}}\mathneg{ 7.940}%
865 | \LEFTRIGHT\zerodel){\vcontent{12}}\mathneg{ 6.284}%
866 | \LEFTRIGHT\zerodel){\vcontent{11}}\mathneg{12.214}%
867 | \LEFTRIGHT\zerodel){\vcontent{10}}\mathneg{11.386}% EXE
868 | \LEFTRIGHT\zerodel){\vcontent{ 9}}\mathneg{ 9.694}%
869 | \LEFTRIGHT\zerodel){\vcontent{ 8}}\mathneg{ 8.866}%
870 | \LEFTRIGHT\zerodel){\vcontent{ 7}}\mathneg{ 8.074}%
871 | \LEFTRIGHT\zerodel){\vcontent{ 6}}\mathneg{ 7.246}%
872 | \LEFTRIGHT\zerodel){\vcontent{ 5}}$\hss}\par
873 | \lineskip-63bp\relax
874 | \hbox to\textwidth{\hss$%
875 | \LEFTRIGHT\{\zerodel{\vcontent{23}}\mkern 2.983mu% EXG
876 | \LEFTRIGHT\{\zerodel{\vcontent{22}}\mkern 4.279mu%
877 | \LEFTRIGHT\{\zerodel{\vcontent{21}}\mkern 5.575mu%
878 | \LEFTRIGHT\{\zerodel{\vcontent{20}}\mkern 6.727mu%
879 | \LEFTRIGHT\{\zerodel{\vcontent{19}}\mkern 7.879mu%
880 | \LEFTRIGHT\{\zerodel{\vcontent{18}}\mkern 9.031mu%
881 | \LEFTRIGHT\{\zerodel{\vcontent{17}}\mathneg{5.420}%
882 | \LEFTRIGHT\{\zerodel{\vcontent{16}}\mathneg{4.484}% EXF
883 | \LEFTRIGHT\{\zerodel{\vcontent{15}}\mathneg{3.548}%
884 | \LEFTRIGHT\{\zerodel{\vcontent{14}}\mathneg{2.612}%
885 | \LEFTRIGHT\{\zerodel{\vcontent{13}}\mathneg{1.892}%
886 | \LEFTRIGHT\{\zerodel{\vcontent{12}}\mathneg{0.956}%
887 | \LEFTRIGHT\{\zerodel{\vcontent{11}}\mathneg{7.894}%
888 | \LEFTRIGHT\{\zerodel{\vcontent{10}}\mathneg{6.994}% EXE
889 | \LEFTRIGHT\{\zerodel{\vcontent{ 9}}\mathneg{6.130}%
890 | \LEFTRIGHT\{\zerodel{\vcontent{ 8}}\mathneg{5.302}%
891 | \LEFTRIGHT\{\zerodel{\vcontent{ 7}}\mathneg{4.510}%
892 | \LEFTRIGHT\{\zerodel{\vcontent{ 6}}\mathneg{3.754}%
893 | \LEFTRIGHT\{\} {\vcontent{ 5}}\mathneg{3.754}%
894 | \LEFTRIGHT\zerodel\}{\vcontent{ 6}}\mathneg{4.510}%
895 | \LEFTRIGHT\zerodel\}{\vcontent{ 7}}\mathneg{5.302}%
896 | \LEFTRIGHT\zerodel\}{\vcontent{ 8}}\mathneg{6.130}%
897 | \LEFTRIGHT\zerodel\}{\vcontent{ 9}}\mathneg{6.994}%
898 | \LEFTRIGHT\zerodel\}{\vcontent{10}}\mathneg{7.894}%
899 | \LEFTRIGHT\zerodel\}{\vcontent{11}}\mathneg{0.956}% EXF
900 | \LEFTRIGHT\zerodel\}{\vcontent{12}}\mathneg{1.892}%
901 | \LEFTRIGHT\zerodel\}{\vcontent{13}}\mathneg{2.612}%
902 | \LEFTRIGHT\zerodel\}{\vcontent{14}}\mathneg{3.548}%
903 | \LEFTRIGHT\zerodel\}{\vcontent{15}}\mathneg{4.484}%
904 | \LEFTRIGHT\zerodel\}{\vcontent{16}}\mathneg{5.420}%
905 | \LEFTRIGHT\zerodel\}{\vcontent{17}}\mkern 9.031mu% EXG
906 | \LEFTRIGHT\zerodel\}{\vcontent{18}}\mkern 7.879mu%
907 | \LEFTRIGHT\zerodel\}{\vcontent{19}}\mkern 6.727mu%
908 | \LEFTRIGHT\zerodel\}{\vcontent{20}}\mkern 5.575mu%
909 | \LEFTRIGHT\zerodel\}{\vcontent{21}}\mkern 4.279mu%
910 | \LEFTRIGHT\zerodel\}{\vcontent{22}}\mkern 2.983mu%
911 | \LEFTRIGHT\zerodel\}{\vcontent{23}}$\hss}\par
912 | \hbox to\textwidth{\hss$%
913 | \LEFTRIGHT<\zerodel{\vcontent{ 5}}\mathneg{ 5.374}% EXE
914 | \LEFTRIGHT<\zerodel{\vcontent{ 6}}\mathneg{ 7.138}%
915 | \LEFTRIGHT<\zerodel{\vcontent{ 7}}\mathneg{ 8.938}%
916 | \LEFTRIGHT<\zerodel{\vcontent{ 8}}\mathneg{10.702}%
917 | \LEFTRIGHT<\zerodel{\vcontent{ 9}}\mathneg{12.466}%
918 | \LEFTRIGHT<\zerodel{\vcontent{10}}\mathneg{14.230}%
919 | \LEFTRIGHT<\zerodel{\vcontent{11}}\mathneg{ 9.524}% EXF
920 | \LEFTRIGHT<\zerodel{\vcontent{12}}\mathneg{12.764}%
921 | \LEFTRIGHT<\zerodel{\vcontent{13}}\mathneg{16.076}%
922 | \LEFTRIGHT<\zerodel{\vcontent{14}}\mathneg{19.316}%
923 | \LEFTRIGHT<\zerodel{\vcontent{15}}\mathneg{22.556}%
924 | \LEFTRIGHT<\zerodel{\vcontent{16}}\mathneg{25.868}%
925 | \LEFTRIGHT<\zerodel{\vcontent{17}}\mathneg{16.457}% EXG
926 | \LEFTRIGHT<\zerodel{\vcontent{18}}\mathneg{22.937}%
927 | \LEFTRIGHT<\zerodel{\vcontent{19}}\mathneg{29.561}%
928 | \LEFTRIGHT<\zerodel{\vcontent{20}}\mathneg{36.041}%
929 | \LEFTRIGHT<\zerodel{\vcontent{21}}\mathneg{42.521}%
930 | \LEFTRIGHT<\zerodel{\vcontent{22}}\mathneg{49.001}%
931 | \LEFTRIGHT<> {\vcontent{23}}\mathneg{49.001}%
932 | \LEFTRIGHT\zerodel>{\vcontent{22}}\mathneg{42.521}%
933 | \LEFTRIGHT\zerodel>{\vcontent{21}}\mathneg{36.041}%
934 | \LEFTRIGHT\zerodel>{\vcontent{20}}\mathneg{29.561}%
935 | \LEFTRIGHT\zerodel>{\vcontent{19}}\mathneg{22.937}%
936 | \LEFTRIGHT\zerodel>{\vcontent{18}}\mathneg{16.457}%
937 | \LEFTRIGHT\zerodel>{\vcontent{17}}\mathneg{25.868}%
938 | \LEFTRIGHT\zerodel>{\vcontent{16}}\mathneg{22.556}% EXF
939 | \LEFTRIGHT\zerodel>{\vcontent{15}}\mathneg{19.316}%
940 | \LEFTRIGHT\zerodel>{\vcontent{14}}\mathneg{16.076}%
941 | \LEFTRIGHT\zerodel>{\vcontent{13}}\mathneg{12.764}%
942 | \LEFTRIGHT\zerodel>{\vcontent{12}}\mathneg{ 9.524}%
943 | \LEFTRIGHT\zerodel>{\vcontent{11}}\mathneg{14.230}%
944 | \LEFTRIGHT\zerodel>{\vcontent{10}}\mathneg{12.466}% EXE
945 | \LEFTRIGHT\zerodel>{\vcontent{ 9}}\mathneg{10.702}%
946 | \LEFTRIGHT\zerodel>{\vcontent{ 8}}\mathneg{ 8.938}%
947 | \LEFTRIGHT\zerodel>{\vcontent{ 7}}\mathneg{ 7.138}%
948 | \LEFTRIGHT\zerodel>{\vcontent{ 6}}\mathneg{ 5.374}%
949 | \LEFTRIGHT\zerodel>{\vcontent{ 5}}$\hss}\par
950 | \hbox to\textwidth{\hss$%
951 | \LEFTRIGHT/\zerodel {\vcontent{23}}\mathneg{149.657}% EXG
952 | \LEFTRIGHT/\zerodel {\vcontent{22}}\mathneg{133.673}%
953 | \LEFTRIGHT/\zerodel {\vcontent{21}}\mathneg{117.689}%
954 | \LEFTRIGHT/\zerodel {\vcontent{20}}\mathneg{101.705}%
955 | \LEFTRIGHT/\zerodel {\vcontent{19}}\mathneg{ 85.721}%
956 | \LEFTRIGHT/\zerodel {\vcontent{18}}\mathneg{ 69.737}%
957 | \LEFTRIGHT/\zerodel {\vcontent{17}}\mathneg{ 77.276}%
958 | \LEFTRIGHT/\zerodel {\vcontent{16}}\mathneg{ 69.284}% EXF
959 | \LEFTRIGHT/\zerodel {\vcontent{15}}\mathneg{ 61.292}%
960 | \LEFTRIGHT/\zerodel {\vcontent{14}}\mathneg{ 53.300}%
961 | \LEFTRIGHT/\zerodel {\vcontent{13}}\mathneg{ 45.308}%
962 | \LEFTRIGHT/\zerodel {\vcontent{12}}\mathneg{ 36.596}%
963 | \LEFTRIGHT/\zerodel {\vcontent{11}}\mathneg{ 41.086}%
964 | \LEFTRIGHT/\zerodel {\vcontent{10}}\mathneg{ 37.054}% EXE
965 | \LEFTRIGHT/\zerodel {\vcontent{ 9}}\mathneg{ 32.878}%
966 | \LEFTRIGHT/\zerodel {\vcontent{ 8}}\mathneg{ 28.774}%
967 | \LEFTRIGHT/\zerodel {\vcontent{ 7}}\mathneg{ 24.994}%
968 | \LEFTRIGHT/\zerodel {\vcontent{ 6}}\mathneg{ 20.494}%
969 | \LEFTRIGHT/\backslash {\vcontent{ 5}}\mathneg{ 24.377}%
970 | \LEFTRIGHT\zerodel\backslash{\vcontent{ 6}}\mathneg{ 28.877}%
971 | \LEFTRIGHT\zerodel\backslash{\vcontent{ 7}}\mathneg{ 32.657}%
972 | \LEFTRIGHT\zerodel\backslash{\vcontent{ 8}}\mathneg{ 36.761}%
973 | \LEFTRIGHT\zerodel\backslash{\vcontent{ 9}}\mathneg{ 40.937}%
974 | \LEFTRIGHT\zerodel\backslash{\vcontent{10}}\mathneg{ 44.969}%
975 | \LEFTRIGHT\zerodel\backslash{\vcontent{11}}\mathneg{ 44.362}% EXF
976 | \LEFTRIGHT\zerodel\backslash{\vcontent{12}}\mathneg{ 53.074}%
977 | \LEFTRIGHT\zerodel\backslash{\vcontent{13}}\mathneg{ 61.066}%
978 | \LEFTRIGHT\zerodel\backslash{\vcontent{14}}\mathneg{ 69.058}%
979 | \LEFTRIGHT\zerodel\backslash{\vcontent{15}}\mathneg{ 77.050}%
980 | \LEFTRIGHT\zerodel\backslash{\vcontent{16}}\mathneg{ 85.042}%
981 | \LEFTRIGHT\zerodel\backslash{\vcontent{17}}\mathneg{ 85.268}% EXG
982 | \LEFTRIGHT\zerodel\backslash{\vcontent{18}}\mathneg{101.252}%
983 | \LEFTRIGHT\zerodel\backslash{\vcontent{19}}\mathneg{117.236}%
984 | \LEFTRIGHT\zerodel\backslash{\vcontent{20}}\mathneg{133.220}%
985 | \LEFTRIGHT\zerodel\backslash{\vcontent{21}}\mathneg{149.204}%
986 | \LEFTRIGHT\zerodel\backslash{\vcontent{22}}\mathneg{165.188}%
987 | \LEFTRIGHT\zerodel\backslash{\vcontent{23}}$\hss}\par
988 | \hbox to\textwidth{\hss$%
989 | \vcenter{\SQRT{\vcontent{ 4}}}\mathneg{ 7.760}% EXE
990 | \vcenter{\SQRT{\vcontent{ 5}}}\mathneg{ 8.588}%
991 | \vcenter{\SQRT{\vcontent{ 6}}}\mathneg{10.388}%
992 | \vcenter{\SQRT{\vcontent{ 7}}}\mathneg{12.188}%
993 | \vcenter{\SQRT{\vcontent{ 8}}}\mathneg{16.508}%
994 | \vcenter{\SQRT{\vcontent{ 9}}}\mathneg{17.948}%
995 | \vcenter{\SQRT{\vcontent{10}}}\mathneg{ 8.177}% EXF
996 | \vcenter{\SQRT{\vcontent{11}}}\mathneg{14.369}%
997 | \vcenter{\SQRT{\vcontent{12}}}\mathneg{20.561}%
998 | \vcenter{\SQRT{\vcontent{13}}}\mathneg{26.681}%
999 | \vcenter{\SQRT{\vcontent{14}}}\mathneg{32.873}%
1000 | \vcenter{\SQRT{\vcontent{15}}}\mathneg{39.137}%
1001 | \vcenter{\SQRT{\vcontent{16}}}\mathneg{19.810}% EXG
1002 | \vcenter{\SQRT{\vcontent{17}}}\mathneg{31.330}%
1003 | \vcenter{\SQRT{\vcontent{18}}}\mathneg{43.138}%
1004 | \vcenter{\SQRT{\vcontent{19}}}\mathneg{54.946}%
1005 | \vcenter{\SQRT{\vcontent{20}}}\mathneg{66.466}%
1006 | \vcenter{\SQRT{\vcontent{21}}}\mathneg{78.274}%
1007 | \vcenter{\SQRT{\vcontent{22}}}$\hss}\par
1008 | \lineskip0pt\relax
1009 | \xloperator\upsum \par\vfill
1010 | \xloperator\upprod \par\vfill
1011 | \xloperator\upcoprod \par\vfill
1012 | \xloperator\bigcup \par\vfill
1013 | \xloperator\bigcap \par\vfill
1014 | \xloperator\biguplus \par\vfill
1015 | \xloperator\bigwedge \par\vfill
1016 | \xloperator\bigvee \par\vfill
1017 | \xloperator\bigsqcup \par\vfill
1018 | \xloperator\bigodot \par\vfill
1019 | \xloperator\bigoplus \par\vfill
1020 | \xloperator\bigotimes \par\vfill
1021 | \xloperator\slsum \par\vfill
1022 | \xloperator\slprod \par\vfill
1023 | \xloperator\slcoprod \par\vfill
1024 | \xloperator\bigcupprod \par\vfill
1025 | \xloperator\bigcapprod \par\vfill
1026 | \xloperator\bigvarland \par\vfill
1027 | \xloperator\bigast \par\vfill
1028 | \xloperator\int \par\vfill
1029 | \xloperator\iint \par\vfill
1030 | \xloperator\iiint \par\vfill
1031 | \xloperator\oint \par\vfill
1032 | \xloperator\oiint \par\vfill
1033 | \xloperator\oiiint \par\vfill
1034 | \xloperator\cwoint \par\vfill
1035 | \xloperator\awoint \par\vfill
1036 | \xloperator\cwint \par\vfill
1037 | \xloperator\barint \par\vfill
1038 | \xloperator\slashint \par
1039 | \linespread{1.375}\selectfont
1040 | \testextbrace\undercbrace
1041 | \testextbrace\overcbrace
1042 | \testextaccent\widehat
1043 | \testextaccent\widetilde
1044 | \testextaccent\widecheck
1045 | \newpage
1046 | \section{The arc accents}
1047 | $\arc {\hcontentarc{ 0}}$\par % EXA
1048 | $\Arc {\hcontentarc{ 1}}$\par
1049 | $\widearc{\hcontentarc{ 2}}$\par
1050 | $\widearc{\hcontentarc{ 3}}$\par
1051 | $\widearc{\hcontentarc{ 4}}$\par
1052 | $\widearc{\hcontentarc{ 5}}$\par % EXE
1053 | $\widearc{\hcontentarc{ 6}}$\par
1054 | $\widearc{\hcontentarc{ 7}}$\par
1055 | $\widearc{\hcontentarc{ 8}}$\par
1056 | $\widearc{\hcontentarc{ 9}}$\par
1057 | $\widearc{\hcontentarc{10}}$\par
1058 | $\widearc{\hcontentarc{11}}$\par
1059 | $\widearc{\hcontentarc{12}}$\par % EXF
1060 | $\widearc{\hcontentarc{13}}$\par
1061 | $\widearc{\hcontentarc{14}}$\par
1062 | $\widearc{\hcontentarc{15}}$\par
1063 | $\widearc{\hcontentarc{16}}$\par
1064 | $\widearc{\hcontentarc{17}}$\par
1065 | $\widearc{\hcontentarc{18}}$\par % EXG
1066 | $\widearc{\hcontentarc{19}}$\par
1067 | $\widearc{\hcontentarc{20}}$\par
1068 | $\widearc{\hcontentarc{21}}$\par
1069 | $\widearc{\hcontentarc{22}}$\par
1070 | $\widearc{\hcontentarc{23}}$\par
1071 | $\widearc{\hcontentarc{24}}$%
1072 | \end{document}
--------------------------------------------------------------------------------