The L^{A}TEX 2ε package ccfonts

Walter Schmidt^{∗} (v0.992 – 1999/02/22)

1 Loading the package

The L^{A}TEX macro package ccfonts supports typesetting with the font family ‘Concrete’. Loading this package through

\usepackage{ccfonts}

will effect the following:

• The default roman font family will be ccr, i. e. Concrete.

• The default leading (\baselineskip) for the font sizes 8–12 pt will be increased slightly.

• The ‘Concrete’ fonts are used in math mode, too.

• The packages amsfonts or amssymb, if loaded additionally, will use the Concrete versions of the AMS symbol fonts.

2 Options

standard-baselineskips disables the increased leading. This can be use-

ful e. g. when typesetting in narrow columns. exscale implements scaling of the math extension font. For a discussion

of this feature see the file exscale.dtx. slantedGreek makes uppercase Greek letters slanted by default. Regard-

less of this option, the new commands \upDelta and \upOmega will always produce an upright Δ and Ω.

∗wschmi@ibm.net

3 Implementation

3.1 Font setup for text mode

We make ccr the default font family:

1 ⟨∗package⟩

 2 \renewcommand{\rmdefault}{ccr}

The \baselineskip should be larger than with CM Roman. In order to overwrite the \baselineskip defined in the commands like \normalsize, \small, etc., we use a trick from Frank Jensen’s package beton. First we set up a table containing our \baselineskip values:

 3 \def\cc@baselineskip@table
 4 {<\@viiipt>10<\@ixpt>11.5<\@xpt>13<\@xipt>14.5<\@xiipt>16}

All the standard L^{A}TEX size-changing commands (\small, \large, etc.) are defined in terms of the \@setfontsize macro. This macro is called with the following three arguments: #1 is the size-changing command; #2 is the font size; #3 is the \baselineskip value. We modify this macro to check the

above \cc@baselineskip@table for an alternative \baselineskip value:
 5 \def\cc@setfontsize#1#2#3%
 6 {\edef\@tempa{\def\noexpand\@tempb####1<#2}%
 7  \@tempa>##2<##3\@nil{\def\cc@baselineskip@value{##2}}%
 8  \edef\@tempa{\noexpand\@tempb\cc@baselineskip@table<#2}%
 9  \@tempa><\@nil
10  \ifx\cc@baselineskip@value\@empty
11  \def\cc@baselineskip@value{#3}%
12  \fi
13  \old@setfontsize{#1}{#2}\cc@baselineskip@value}
Now we redefine \@setfontsize:
14 \let\old@setfontsize=\@setfontsize
15 \let\@setfontsize=\cc@setfontsize

3.2 Old-style numerals

Old-style numerals are to be taken from the Concrete fonts, too:

16 \def\oldstylenums#1{%
17 \begingroup
18  \spaceskip\fontdimen\tw@\font
19  \usefont{OML}{xcm}{\f@series}{it}%
20  \m2athgroup\symletters #1%
21 \endgroup

22 }

In the future this may change; old-style numerals could be taken from the ‘text companion font’ by default.

3.3 Options

3.3.1 Standard leading

The \baselineskip values specified in the above table should be appropriate for most purposes, i. e., for one-column material in the normal article/report/book formats. However, it is sometimes desirable to use a smaller value for \baselineskip, e. g. in two-column material. We therefore provide an option to turn off the above automatic mechanism for

\baselineskip settings:
23 \DeclareOption{standard-baselineskips}{%
24 \let\@setfontsize=\old@setfontsize}

3.3.2 The option exscale

The code is simply copied from exscale.sty, with xccex instead of cmex.

25 \DeclareOption{exscale}{
26 \DeclareFontFamily{OMX}{xcex}{}
27 \DeclareFontShape{OMX}{xcex}{m}{n}{%
28 <-8>sfixed*xccex7%
29 <8>xccex8%
30 <9>xccex9%
31 <10><10.95><12><14.4><17.28><20.74><24.88>xccex10%
32 }{}
33 \newdimen\big@size
34 \addto@hook\every@math@size{\setbox\z@\vbox{\hbox{$($}\kern\z@}%
35 \global\big@size 1.2\ht\z@}
36 \def\bBigg@#1#2{%
37 {\hbox{$\left#2\vcenter to#1\big@size{}\right.\n@space$}}}
38 \def\big{\bBigg@\@ne}
39 \def\Big{\bBigg@{1.5}}
40 \def\bigg{\bBigg@\tw@}
41 \def\Bigg{\bBigg@{2.5}}

42 }

3.3.3 The option slantedGreek

43 \let\upDelta\Delta
44 \let\upOmega\Omega
45 \DeclareOption{slantedGreek}{%
46 \DeclareMathSymbol{\Gamma}{\mathalpha}{letters}{0}
47 \DeclareMathSymbol{\Delta}{\mathalpha}{letters}{1}
48 \DeclareMathSymbol{\Theta}{\mathalpha}{letters}{2}
49 \DeclareMathSymbol{\Lambda}{\mathalpha}{letters}{3}
50 \DeclareMathSymbol{\Xi}{\mathalpha}{letters}{4}
51 \DeclareMathSymbol{\Pi}{\mathalpha}{letters}{5}
52 \DeclareMathSymbol{\Sigma}{\mathalpha}{letters}{6}
53 \DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{7}
54 \DeclareMathSymbol{\Phi}{\mathalpha}{letters}{8}

55 \DeclareMathSymbol{\Psi}{\mathalpha}{letters}{9}
56 \DeclareMathSymbol{\Omega}{\mathalpha}{letters}{10}

57 }

3.3.4 Processing options

Note that \old@setfontsize must have been definded before!

58 \ProcessOptions\relax

3.4 Font setup for math mode

59 \DeclareSymbolFont  {operators}   {OT1}{ccr} {m}{n}
60 \DeclareSymbolFont  {letters}     {OML}{xcm} {m}{it}
61 \DeclareSymbolFont  {symbols}     {OMS}{xcsy}{m}{n}
62 \DeclareSymbolFont  {largesymbols}{OMX}{xcex}{m}{n}
63 \DeclareMathAlphabet{\mathit}     {OT1}{ccr} {m}{it}

In case the package amsfonts is loaded additionally, we must ensure that the Concrete versions of the AMS symbol fonts are used:

64 \DeclareFontFamily{U}{msa}{}
65 \DeclareFontShape{U}{msa}{m}{n}{%
66 <5><6><7><8><9><10>gen*xccam%
67 <10.95><12><14.4><17.28><20.74><24.88>xccam10}{}
68 \DeclareFontFamily{U}{msb}{}
69 \DeclareFontShape{U}{msb}{m}{n}{%
70 <5><6><7><8><9><10>gen*xccbm%
71 <10.95><12><14.4><17.28><20.74><24.88>xccbm10}{}

3.5 Initialization

We ensure that any package loaded after ccfonts will find the new value

of \baselineskip.
72 \normalsize

73 ⟨/package⟩

The next line of code prevents DocStrip from adding the character table to all modules:

74 \endinput