bzr branch
http://gegoxaren.bato24.eu/bzr/%2Bjunk/CV
49
by Gustav Hartvigsson
* Fixed SmallCaps with a costum package |
1 |
% FixSmallCaps.sty
|
2 |
%%%%%%%%%%%%%%
|
|
3 |
% FROM: http://tex.stackexchange.com/a/262596
|
|
4 |
%
|
|
5 |
% Additional: http://tex.stackexchange.com/a/70240
|
|
6 |
%%%%%%%%%%%%%%
|
|
7 |
||
8 |
||
9 |
\ProvidesPackage{FixSmallCaps} |
|
10 |
%[2017-03-23, Provides fake smallcaps ]
|
|
11 |
%%%%%%%%%%%%%%
|
|
12 |
% Fix Smallcaps in fonts that does not have it.
|
|
13 |
%%%%%%%%%%%%%%
|
|
14 |
% Usage:
|
|
15 |
% \usepackage{FixSmallCaps}
|
|
16 |
%%%%%%%%%%%%%%
|
|
17 |
% Qirks:
|
|
18 |
% * Problem with using other enviorments inside this.
|
|
19 |
% * teletext (textt) does not work as it should. (it is not
|
|
20 |
% mono-spaced).
|
|
21 |
%%%%%%%%%%%%%%
|
|
22 |
% Background:
|
|
23 |
% When dealing with fonts that do not have small caps
|
|
24 |
% it can be a hassle to use different text sizes for
|
|
25 |
% at different points in words to mimic small caps.
|
|
26 |
%
|
|
27 |
% This package redefines the behaviour of \textsc{}
|
|
28 |
% to mimic the small caps in fonts that do not have
|
|
29 |
% it, by scaling the lower case letters by to a factor
|
|
30 |
% of 0.75 of the original size and applys \uppercase.
|
|
31 |
%%%%%%%%%%%%%%
|
|
32 |
% NO COPYRIGHT
|
|
33 |
%%%%%%%%%%%%%%
|
|
34 |
||
35 |
\RequirePackage{xstring} |
|
36 |
\RequirePackage{forloop} |
|
37 |
\RequirePackage{relsize} |
|
38 |
||
39 |
\newcounter{sccounter} |
|
40 |
\newcounter{tempStringLength} |
|
41 |
||
42 |
||
43 |
\renewcommand{\textsc}[1]{% |
|
44 |
% this \betterfakesc command requires these two packages: |
|
45 |
% xstring |
|
46 |
% forloop |
|
47 |
% |
|
48 |
% First, we obtain the length of the input string. |
|
49 |
\StrLen{#1}[\stringLength]% |
|
50 |
% |
|
51 |
% Our main forloop will be using a condition of “while less than \stringLength”, |
|
52 |
% so we’ll need to increase \stringLength by 1 so the forloop will be able to iterate |
|
53 |
% over the entire string. we’ll use a temporary counter tempStringLength to make |
|
54 |
% this increase. That’s what the next three lines are about. |
|
55 |
\setcounter{tempStringLength}{\stringLength}% |
|
56 |
\addtocounter{tempStringLength}{1}% |
|
57 |
\def\stringLength{\arabic{tempStringLength}}% |
|
58 |
% |
|
59 |
% Here is our main loop. We iterate over the characters in the input string, |
|
60 |
% and the currentLetter is compared to the case rules we have defined. Basically |
|
61 |
% if the currentLetter is any of the lowercase a-z letters, then we apply a |
|
62 |
% “fake small caps” effect to it and output it. |
|
63 |
\forloop[1]{sccounter}{1}{\value{sccounter}<\stringLength}{% |
|
64 |
\StrChar{#1}{\value{sccounter}}[\currentLetter]% |
|
65 |
% |
|
66 |
\IfEqCase*{\currentLetter}{% |
|
67 |
% The lines below are the rules. Obviously more could be added. |
|
68 |
{a}{{\uppercase{\relscale{0.75}a}}}% |
|
69 |
{b}{{\uppercase{\relscale{0.75}b}}}% |
|
70 |
{c}{{\uppercase{\relscale{0.75}c}}}% |
|
71 |
{d}{{\uppercase{\relscale{0.75}d}}}% |
|
72 |
{e}{{\uppercase{\relscale{0.75}e}}}% |
|
73 |
{f}{{\uppercase{\relscale{0.75}f}}}% |
|
74 |
{g}{{\uppercase{\relscale{0.75}g}}}% |
|
75 |
{h}{{\uppercase{\relscale{0.75}h}}}% |
|
76 |
{i}{{\uppercase{\relscale{0.75}i}}}% |
|
77 |
{j}{{\uppercase{\relscale{0.75}j}}}% |
|
78 |
{k}{{\uppercase{\relscale{0.75}k}}}% |
|
79 |
{l}{{\uppercase{\relscale{0.75}l}}}% |
|
80 |
{m}{{\uppercase{\relscale{0.75}m}}}% |
|
81 |
{n}{{\uppercase{\relscale{0.75}n}}}% |
|
82 |
{o}{{\uppercase{\relscale{0.75}o}}}% |
|
83 |
{p}{{\uppercase{\relscale{0.75}p}}}% |
|
84 |
{q}{{\uppercase{\relscale{0.75}q}}}% |
|
85 |
{r}{{\uppercase{\relscale{0.75}r}}}% |
|
86 |
{s}{{\uppercase{\relscale{0.75}s}}}% |
|
87 |
{t}{{\uppercase{\relscale{0.75}t}}}% |
|
88 |
{u}{{\uppercase{\relscale{0.75}u}}}% |
|
89 |
{v}{{\uppercase{\relscale{0.75}v}}}% |
|
90 |
{w}{{\uppercase{\relscale{0.75}w}}}% |
|
91 |
{x}{{\uppercase{\relscale{0.75}x}}}% |
|
92 |
{y}{{\uppercase{\relscale{0.75}y}}}% |
|
93 |
{z}{{\uppercase{\relscale{0.75}z}}}% |
|
94 |
{å}{{\uppercase{\relscale{0.75}å}}}% |
|
95 |
{ä}{{\uppercase{\relscale{0.75}ä}}}% |
|
96 |
{ö}{{\uppercase{\relscale{0.75}ö}}}% |
|
97 |
{ü}{{\uppercase{\relscale{0.75}ü}}}% |
|
98 |
}% |
|
99 |
% if our \currentLetter isn’t any of the letters we have rules for, |
|
100 |
% then just output it now |
|
101 |
[{\currentLetter}]% |
|
102 |
}% |
|
103 |
}% |
|
104 |
||
105 |
||
106 |