├── 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 | Example 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 | Example 1.1 41 | 42 |
43 | 字号:思源宋体 Regular 16 bp,STIX Regular 16 bp。 44 |
45 | 46 |
47 | 48 | 不难看出,当我们读到「typography」、「τύπος」这些西文单词时,会有一种「西文矮了一截、就像掉下去了」的感觉。为了解决这个「搭配不协调」的问题,我们可以从西文字母的形状出发,探讨解决方法。 49 | 50 |
51 | Example 1.2 52 |
53 | 54 | 因为西文的大写字母「等高」与汉字相似,所以我们可以将**大写字母的中线与汉字的中线对齐**,以此作为指导。 55 | 56 |
57 | Example 1.3 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 | ![Example](SVG/Example.svg) 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 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /SVG/Example-1-3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | -------------------------------------------------------------------------------- /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} --------------------------------------------------------------------------------