/
nfssext.sty
106 lines (106 loc) · 3.77 KB
/
nfssext.sty
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
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{nfssext}[2003/03/14 v1.2 Experimental NFSS Extensions]
\newcommand*{\exfs@tempa}{}
\newcommand*{\exfs@tempb}{}
\newcommand*{\exfs@try@family}[2][]{%
\let\exfs@tempa\relax
\begingroup
\fontfamily{#2}\try@load@fontshape
\expandafter\ifx\csname\curr@fontshape\endcsname\relax
\edef\exfs@tempa{#1}%
\ifx\exfs@tempa\@empty
\PackageWarning{nfssext}{%
Font family '\f@encoding/#2' not available\MessageBreak
Ignoring font switch}%
\else
\PackageInfo{nfssext}{%
Font family '\f@encoding/#2' not available\MessageBreak
Font family '\f@encoding/#1' tried instead}%
\exfs@try@family{#1}%
\fi
\else
\gdef\exfs@tempa{\fontfamily{#2}\selectfont}%
\fi
\endgroup
\exfs@tempa}
\def\exfs@get@base#1#2#3#4\@nil{#1#2#3}
\DeclareRobustCommand{\lnstyle}{%
\not@math@alphabet\lnstyle\relax
\exfs@try@family[\expandafter\exfs@get@base\f@family\@nil]%
{\expandafter\exfs@get@base\f@family\@nil x}}
\DeclareRobustCommand{\osstyle}{%
\not@math@alphabet\osstyle\relax
\exfs@try@family{\expandafter\exfs@get@base\f@family\@nil j}}
\DeclareRobustCommand{\instyle}{%
\not@math@alphabet\instyle\relax
\exfs@try@family{\expandafter\exfs@get@base\f@family\@nil 0}}
\DeclareRobustCommand{\sustyle}{%
\not@math@alphabet\sustyle\relax
\exfs@try@family{\expandafter\exfs@get@base\f@family\@nil 1}}
\DeclareRobustCommand{\swstyle}{%
\not@math@alphabet\swstyle\relax
\exfs@try@family{\expandafter\exfs@get@base\f@family\@nil w}}
\newcommand*{\sidefault}{si}
\DeclareRobustCommand{\sishape}{%
\not@math@alphabet\sishape\relax
\fontshape\sidefault\selectfont}
\newcommand*{\exfs@merge@shape}[3]{%
\edef\exfs@tempa{#1}%
\edef\exfs@tempb{#2}%
\ifx\f@shape\exfs@tempb
\expandafter\ifx\csname\f@encoding/\f@family/\f@series/#3\endcsname\relax
\else
\edef\exfs@tempa{#3}%
\fi
\fi
\fontshape{\exfs@tempa}\selectfont}
\DeclareRobustCommand{\itshape}{%
\not@math@alphabet\itshape\mathit
\exfs@merge@shape{\itdefault}{\scdefault}{\sidefault}}
\DeclareRobustCommand{\scshape}{%
\not@math@alphabet\scshape\relax
\exfs@merge@shape{\scdefault}{\itdefault}{\sidefault}}
\DeclareRobustCommand{\upshape}{%
\not@math@alphabet\upshape\relax
\exfs@merge@shape{\updefault}{\sidefault}{\scdefault}}
\DeclareRobustCommand{\dfshape}{%
\not@math@alphabet\dfshape\relax
\fontshape\shapedefault\selectfont}
\newcommand*{\swshapedefault}{\itdefault}
\DeclareRobustCommand{\swshape}{%
\not@math@alphabet\swshape\relax
\swstyle\fontshape\swshapedefault\selectfont}
\DeclareTextFontCommand{\textln}{\lnstyle}
\DeclareTextFontCommand{\textos}{\osstyle}
\DeclareTextFontCommand{\textin}{\instyle}
\DeclareTextFontCommand{\textsu}{\sustyle}
\DeclareTextFontCommand{\textsi}{\sishape}
\DeclareTextFontCommand{\textdf}{\dfshape}
\DeclareTextFontCommand{\textsw}{\swshape}
\newcommand*{\DeclareTextOrnament}[7]{%
\expandafter\def\csname#1@orn\@roman#2\endcsname{#3/#4/#5/#6/#7}}
\begingroup
\catcode`\/=12
\gdef\exfs@split@orndef#1/#2/#3/#4/#5\@nil{%
\def\f@encoding{#1}%
\def\f@family{#2}%
\def\f@series{#3}%
\def\f@shape{#4}%
\def\exfs@tempa{#5}}
\endgroup
\def\exfs@base@family{\expandafter\exfs@get@base\f@family\@nil}
\DeclareRobustCommand{\ornament}[1]{%
\expandafter\ifx\csname\exfs@base@family @orn\@roman#1\endcsname\relax
\PackageWarning{nfssext}{%
Ornament #1 undefined for font family '\exfs@base@family'\MessageBreak
Setting debug mark}%
\rule{1ex}{1ex}%
\else
\begingroup
\edef\exfs@tempb{\csname\exfs@base@family @orn\@roman#1\endcsname}%
\expandafter\expandafter\expandafter\exfs@split@orndef
\expandafter\string\exfs@tempb\@nil
\selectfont\char\exfs@tempa
\endgroup
\fi}
\endinput