The L^{A}TEX 2ε package ccfonts

Walter Schmidt (v0.95 – 1997/04/01)

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]{cmbright}

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

\usepackage[T1]{fontenc}

after loading the ccfonts package.

2 Implementation

2.1 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:

1 ⟨∗package⟩

 2 \DeclareFontFamily{U}{msa}{}
 3 \DeclareFontShape{U}{msa}{m}{n}{
 4 <5> <6> <7> <8> <9>
 5 <10> <10.95>
 6 <12> <14.4> <17.28> <20.74> <24.88> xccam10}{}
 7 \DeclareFontFamily{U}{msb}{}
 8 \DeclareFontShape{U}{msb}{m}{n}{
 9 <5> <6> <7> <8> <9>
10 <10> <10.95>
11 <12> <14.4> <17.28> <20.74> <24.88> xccbm10}{}

2.2 Font setup for math mode

12 \DeclareSymbolFont  {operators}   {OT1}{ccr} {m}{n}
13 \DeclareSymbolFont  {letters}     {OML}{xcm} {m}{it}
14 \DeclareSymbolFont  {symbols}     {OMS}{xcsy}{m}{n}
15 \DeclareSymbolFont  {largesymbols}{OMX}{xcex}{m}{n}
16 \DeclareMathAlphabet{\mathit}     {OT1}{ccr} {m}{it}

2.3 Font setup for text mode

We make ccr the default font family:

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

18 \def\cc@baselineskip@table
19 {<\@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:
20 \def\cc@setfontsize#1#2#3%
21 {\edef\@tempa{\def\noexpand\@tempb####1<#2}%
22  \@tempa>##2<##3\@nil{\def\cc@baselineskip@value{##2}}%
23  \edef\@tempa{\noexpand\@tempb\cc@baselineskip@table<#2}%
24  \@tempa><\@nil
25  \ifx\cc@baselineskip@value\@empty

26  \def\cc@baselineskip@value{#3}%
27  \fi
28  \old@setfontsize{#1}{#2}\cc@baselineskip@value}
Now we redefine \@setfontsize:
29 \let\old@setfontsize=\@setfontsize
30 \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 vaue for \baselineskip, e. g. in two-column material. We therefore provide an option to turn off the above automatic mechanism for

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

Note that the \let-assignment has to be executed after \old@setfontsize has been defined; this is ensured by the fact that options are processed at the end of the package.

2.4 Old-style numerals

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

33 \def\oldstylenums#1{%
34 \begingroup
35  \spaceskip\fontdimen\tw@\font
36  \usefont{OML}{xcm}{\f@series}{it}%
37  \mathgroup\symletters #1%
38 \endgroup

39 }

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

2.5 Processing options

40 \ProcessOptions

2.6 Initialization

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

of \baselineskip.
41 \normalsize

42 ⟨/package⟩

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

43 \endinput