The L^{A}TEX 2ε package ccfonts

Walter Schmidt^{∗} (v0.991 – 1998/05/08)

1 Description

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

\usepackage{ccfonts}

will effect the following:

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

• The roman font family will be the default for the whole document, both in text and math mode.

• The packages amsfonts or amssymb, if loaded additionally, will use the Concrete versions of the AMS symbol fonts. Note that these packages should be loaded after ccfonts!

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

In case you do not want the enlarged leading, e. g. with a twocolumn layout, you must load the package with the option standard-baselineskips:

\usepackage[standard-baselineskips]{ccfonts}

In order to use T1 encoded textfonts as the default, request

\usepackage[T1]{fontenc}

∗wschmi@ibm.net

after loading the ccfonts package.

Since version 0.98 the ccfonts package provides an option exscale, which implements scaling of the math extension font. For a discussion of this feature see the file exscale.dtx. I recommend the use of this option if formulae are to be typeset at large sizes, i. e. \large and above.

2 Implementation

2.1 The exscale option

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

 1 \DeclareOption{exscale}{%
 2 \DeclareFontFamily{OMX}{xcex}{}
 3 \DeclareFontShape{OMX}{xcex}{m}{n}{%
 4 <-8>sfixed*xccex7%
 5 <8>xccex8%
 6 <9>xccex9%
 7 <10><10.95><12><14.4><17.28><20.74><24.88>xccex10%
 8 }{}
 9 \newdimen\big@size
10 \addto@hook\every@math@size{\setbox\z@\vbox{\hbox{$($}\kern\z@}%
11 \global\big@size 1.2\ht\z@}
12 \def\bBigg@#1#2{%
13 {\hbox{$\left#2\vcenter to#1\big@size{}\right.\n@space$}}}
14 \def\big{\bBigg@\@ne}
15 \def\Big{\bBigg@{1.5}}
16 \def\bigg{\bBigg@\tw@}
17 \def\Bigg{\bBigg@{2.5}}}

2.2 Additional font definitions

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

18 ⟨∗package⟩

19 \DeclareFontFamily{U}{msa}{}
20 \DeclareFontShape{U}{msa}{m}{n}{%
21 <5><6><7><8><9><10>gen*xccam%
22 <10.95><12><14.4><17.28><20.74><24.88>xccam10}{}
23 \DeclareFontFamily{U}{msb}{}
24 \DeclareFontShape{U}{msb}{m}{n}{%
25 <5><6><7><8><9><10>gen*xccbm%
26 <10.95><12><14.4><17.28><20.74><24.88>xccbm10}{}

2.3 Font setup for text mode

We make ccr the default font family:

27 \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:

28 \def\cc@baselineskip@table
29 {<\@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:
30 \def\cc@setfontsize#1#2#3%
31 {\edef\@tempa{\def\noexpand\@tempb####1<#2}%
32  \@tempa>##2<##3\@nil{\def\cc@baselineskip@value{##2}}%
33  \edef\@tempa{\noexpand\@tempb\cc@baselineskip@table<#2}%
34  \@tempa><\@nil
35  \ifx\cc@baselineskip@value\@empty
36  \def\cc@baselineskip@value{#3}%
37  \fi
38  \old@setfontsize{#1}{#2}\cc@baselineskip@value}
Now we redefine \@setfontsize:
39 \let\old@setfontsize=\@setfontsize
40 \let\@setfontsize=\cc@setfontsize

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:
41 \DeclareOption{standard-baselineskips}{%
42 \let\@setfontsize=\old@setfontsize}

2.4 Processing options

Note that \let\@setfontsize=\old@setfontsize must have been exe-

cuted before!

43 \ProcessOptions\relax

2.5 Old-style numerals

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

44 \def\oldstylenums#1{%
45 \begingroup
46  \spaceskip\fontdimen\tw@\font
47  \usefont{OML}{xcm}{\f@series}{it}%
48  \mathgroup\symletters #1%
49 \endgroup

50 }

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

2.6 Font setup for math mode

51 \DeclareSymbolFont  {operators}   {OT1}{ccr} {m}{n}
52 \DeclareSymbolFont  {letters}     {OML}{xcm} {m}{it}
53 \DeclareSymbolFont  {symbols}     {OMS}{xcsy}{m}{n}
54 \DeclareSymbolFont  {largesymbols}{OMX}{xcex}{m}{n}
55 \DeclareMathAlphabet{\mathit}     {OT1}{ccr} {m}{it}

2.7 Initialization

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

of \baselineskip.
56 \normalsize

57 ⟨/package⟩

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

58 \endinput