The L^{A}TEX 2ε package ccfonts

Walter Schmidt^{∗}

(v1.1 – 2000/06/30)

Contents

1 Prerequisites 1

2 Using the package 2 2.1 Package options . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.2 Font encoding . . . . . . . . . . . . . . . . . . . . . . . . . . 3

3 Known problems 3

4 NFSS classification of the Concrete typefaces 3

5 Implementation 4 5.1 Font setup for text mode . . . . . . . . . . . . . . . . . . . . 4 5.2 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

5.2.1 Standard leading . . . . . . . . . . . . . . . . . . . . 4 5.2.2 The option exscale . . . . . . . . . . . . . . . . . . 5 5.2.3 The option slantedGreek . . . . . . . . . . . . . . . 5

5.3 The option boldsans . . . . . . . . . . . . . . . . . . . . . . 5

5.3.1 Processing options . . . . . . . . . . . . . . . . . . . 6 5.4 Font setup for math mode . . . . . . . . . . . . . . . . . . . 6 5.5 Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1 Prerequisites

In order to make use of the package ccfonts, the following fonts and .fd files are required:

• The Concrete text fonts with traditional encoding (CTAN: fonts/

  concrete/)

∗walter.schmidt@arcormail.de

• The Concrete text fonts with European encoding (CTAN: fonts/

ecc/)

• The mathematical Concrete fonts (CTAN: fonts/concmath/)

• The .fd files for the traditional and mathematical Concrete fonts

(CTAN: macros/latex/contrib/supported/concmath/)

• The .fd files for the European Concrete fonts, which are distributed and installed in conjunction with the ccfonts package

On CTAN the fonts are available in format. The Concrete typefaces are also provided in Type1 format from Micropress Inc, see

<http://www.micropress-inc.com>.

2 Using 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 is changed to ccr, i.e. Concrete.

• The default leading (\baselineskip) for the font sizes 8–12 pt is 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.

Notice that you may still have to specify the option psamsfonts for these packages, so as to prevent them from using design sizes of the Euler Fraktur fonts, which may be unavailable within your TeX system; this works flawlessly with version 1.1 of the ccfonts package now. (You need not care for this subject, unless Euler Fraktur is actually used.)

2.1 Package options

boldsans The semibold series of CM Sans is used as a replacement for the missing bold series of Concrete. (The default behaviour is to use the bold extended version of CM Roman.)

standard-baselineskips disables the increased leading. This can be useful, 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. Regardless of this option, the new commands \upDelta and \upOmega will always produce an upright Δ and Ω.

2.2 Font encoding

The package does not change the default output font encoding from OT1. Switching to the extended T1 and TS1 encodings needs the following additional commands:

\usepackage[T1]{fontenc}
\usepackage{textcomp}

3 Known problems

• There are no bold math fonts available.

• In order to enlarge the default \baselineskip, the size-changing macros have been redefined, and they are no longer as robust as the original definitions. This may result in L^{A}TEX errors with ‘moving arguments’. As a workaround, you may protect any font-related commands in moving arguments with a \protect command. In case this does not help, the package should be loaded with the option standardbaselineskips which will prevent the commands from being redefined; you will, however, have to care for an appropriate line spacing by other means then.

4 NFSS classification of the Concrete typefaces

encoding  family series shape(s)

Concrete

OT1, T1, TS1 ccr  m  n, sl, it, sc
OT1  ccr  c  sl

Concrete Math

OML  ccm  m  it
OMS  ccsy  m  n
OMX  ccex  m  n

Concrete AMS A, B

U  msa  m  n
U  msb  m  n

Notice, that

• the series c (condensed) is available as slanted and with a font size of 9 pt only;

• the Concrete AMS fonts are only defined through the package ccfonts, i.e., there are no related .fd files.

5 Implementation

5.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

5.2 Options

5.2.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:
16 \DeclareOption{standard-baselineskips}{%
17 \let\@setfontsize=\old@setfontsize}

5.2.2 The option exscale

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

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

35 }

5.2.3 The option slantedGreek

36 \let\upDelta\Delta
37 \let\upOmega\Omega
38 \DeclareOption{slantedGreek}{%
39 \DeclareMathSymbol{\Gamma}{\mathalpha}{letters}{0}
40 \DeclareMathSymbol{\Delta}{\mathalpha}{letters}{1}
41 \DeclareMathSymbol{\Theta}{\mathalpha}{letters}{2}
42 \DeclareMathSymbol{\Lambda}{\mathalpha}{letters}{3}
43 \DeclareMathSymbol{\Xi}{\mathalpha}{letters}{4}
44 \DeclareMathSymbol{\Pi}{\mathalpha}{letters}{5}
45 \DeclareMathSymbol{\Sigma}{\mathalpha}{letters}{6}
46 \DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{7}
47 \DeclareMathSymbol{\Phi}{\mathalpha}{letters}{8}
48 \DeclareMathSymbol{\Psi}{\mathalpha}{letters}{9}
49 \DeclareMathSymbol{\Omega}{\mathalpha}{letters}{10}

50 }

5.3 The option boldsans

51 \DeclareOption{boldsans}{%

52 \renewcommand{\bfdefault}{sbc}}

5.3.1 Processing options

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

53 \ProcessOptions\relax

5.4 Font setup for math mode

54 \DeclareSymbolFont  {operators}   {OT1}{ccr} {m}{n}
55 \DeclareSymbolFont  {letters}     {OML}{ccm} {m}{it}
56 \DeclareSymbolFont  {symbols}     {OMS}{ccsy}{m}{n}
57 \DeclareSymbolFont  {largesymbols}{OMX}{ccex}{m}{n}
58 \DeclareMathAlphabet{\mathbf}     {OT1}{ccr}{bx}{n}
59 \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. We execute the font definitions AtBeginDocument, so that loading amsfonts with the option psamsfonts cannot do any harm. Notice that the option may be required for getting the Euler Fraktur fonts right.

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

69 }

5.5 Initialization

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

of \baselineskip.
70 \normalsize

71 ⟨/package⟩

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

72 \endinput