From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/concmath/CATALOGUE | 30 ++ macros/latex/contrib/concmath/Makefile | 129 ++++++ macros/latex/contrib/concmath/README | 114 +++++ macros/latex/contrib/concmath/concmath | 1 + macros/latex/contrib/concmath/concmath.dtx | 689 +++++++++++++++++++++++++++++ macros/latex/contrib/concmath/concmath.ins | 38 ++ macros/latex/contrib/concmath/concmath.pdf | Bin 0 -> 282515 bytes 7 files changed, 1001 insertions(+) create mode 100644 macros/latex/contrib/concmath/CATALOGUE create mode 100644 macros/latex/contrib/concmath/Makefile create mode 100644 macros/latex/contrib/concmath/README create mode 120000 macros/latex/contrib/concmath/concmath create mode 100644 macros/latex/contrib/concmath/concmath.dtx create mode 100644 macros/latex/contrib/concmath/concmath.ins create mode 100644 macros/latex/contrib/concmath/concmath.pdf (limited to 'macros/latex/contrib/concmath') diff --git a/macros/latex/contrib/concmath/CATALOGUE b/macros/latex/contrib/concmath/CATALOGUE new file mode 100644 index 0000000000..37e9c6ca2d --- /dev/null +++ b/macros/latex/contrib/concmath/CATALOGUE @@ -0,0 +1,30 @@ + + + concmath + Concrete Math fonts + + Ulrik Vieth + vieth@thphy.uni-duesseldorf.de + + + + + 1999/03/18 + + + + + + LaTeX package and font definition files to access the Concrete + math fonts, which were derived from Computer Modern math fonts + using parameters from Concrete Roman text fonts. + + + + macros/latex/contrib/other/concmath + fonts/concmath + fonts3 + + diff --git a/macros/latex/contrib/concmath/Makefile b/macros/latex/contrib/concmath/Makefile new file mode 100644 index 0000000000..7b89e16d94 --- /dev/null +++ b/macros/latex/contrib/concmath/Makefile @@ -0,0 +1,129 @@ +## Makefile for the installation of the `concmath' package: +## +## 1999-03-10, Ulrik Vieth +## + +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +## Usage: +## +## say 'make' or 'make all' to unpack the macros and typeset +## the documentation +## +## say 'make install' to install the macros and documentation +## + + +### package specifics (don't change!): + +# package name, used in directories +FORMAT = latex +PACKAGE = concmath + +# file names, used in dependencies + +SRCFILES = \ + $(PACKAGE).dtx \ + $(PACKAGE).ins +TEXFILES = \ + ot1ccr.fd \ + omlccr.fd \ + omsccr.fd \ + omlccm.fd \ + omsccsy.fd \ + omxccex.fd \ + ucca.fd \ + uccb.fd \ + $(PACKAGE).sty +DOCFILES = \ + $(PACKAGE).dvi + + +### customizable variables: + +# Where the TeX installation resides: +TEXMF = `kpsewhich --expand-path='$$TEXMFMAIN'` +#TEXMF = /usr/local/teTeX/share/texmf + +# standard directories +SRCDIR = $(TEXMF)/source/$(FORMAT)/$(PACKAGE) +TEXDIR = $(TEXMF)/tex/$(FORMAT)/$(PACKAGE) +DOCDIR = $(TEXMF)/doc/$(FORMAT)/$(PACKAGE) + +# How to install the files: +INSTALL = cp -p +#INSTALL = install -c + +# How to cleanup the files: +CLEAN = rm -f + +# How to update the directory database: +TEXHASH = mktexlsr +#TEXHASH = texhash + +# How to run LaTeX(2e) for docstrip'ing sources: +DOCSTRIP = yes | latex + +# How to run LaTeX(2e) for documentation: +LATEX = latex + + +### unpack targets: + +default: all +all: make-tex make-doc + +make-tex: $(TEXFILES) +make-doc: $(DOCFILES) +.PHONY: make-tex make-doc + +$(TEXFILES): $(SRCFILES) + $(DOCSTRIP) $(PACKAGE).ins + +$(DOCFILES): $(SRCFILES) $(TEXFILES) + $(LATEX) $(PACKAGE).dtx + $(LATEX) $(PACKAGE).dtx + + +### install targets: + +install: install-tex install-doc post-install +.PHONY: install + +install-tex: $(TEXFILES) + test -d $(TEXDIR) || mkdir $(TEXDIR) + (for f in $(TEXFILES); \ + do $(INSTALL) $$f $(TEXDIR); done) +.PHONY: install-tex + +install-doc: $(DOCFILES) + test -d $(DOCDIR) || mkdir $(DOCDIR) + (for f in $(DOCFILES); \ + do $(INSTALL) $$f $(DOCDIR); done) +.PHONY: install-doc + +# uninstall target: + +uninstall: + (for f in $(TEXFILES); \ + do $(CLEAN) $(TEXDIR)/$$f; done) + (for f in $(DOCFILES); \ + do $(CLEAN) $(DOCDIR)/$$f; done) +.PHONY: uninstall + + +# Update the directory database: +post-install: + $(TEXHASH) +.PHONY: post-install + + +### clean targets: +clean: + rm -f *.log *.aux *.toc *.lof *.lot *.bbl *.blg + rm -f *.idx *.ind *.ilg *.glo *.gls + +distclean: clean + rm -f $(TEXFILES) $(DOCFILES) diff --git a/macros/latex/contrib/concmath/README b/macros/latex/contrib/concmath/README new file mode 100644 index 0000000000..d1c0db6a9d --- /dev/null +++ b/macros/latex/contrib/concmath/README @@ -0,0 +1,114 @@ +concmath --- LaTeX support for Concrete Math fonts. + +Copyright (C) 1995--99 Ulrik Vieth + +This software is free software; you can redistribute it and/or +modify it under the terms of the LaTeX Project Public License +as described in lppl.txt in the base LaTeX distribution; either +version 1 of the License, or (at your option) any later version. + +This software is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + +DESCRIPTION: + +This directory contains the documented sources of the `concmath' +package for LaTeX(2e) that provides access to the Concrete Math +typefaces, which were derived from the Concrete Roman typefaces +designed by Donald E. Knuth. + +The Concrete Math fonts provide a collection of math italics, +math symbol, and math extension fonts that complement the +Concrete Roman fonts, so that the Concrete family of typefaces +may be used as a complete replacement for Computer Modern. +(Orginally, Concrete Roman was designed as a text font for use +with the Euler math font, designed by Hermann Zapf.) + +Since Concrete is considerably darker than Computer Modern, this +variant may be of particular interest for use in low-resolution +printing or in display-oriented applications such as posters, +transparencies, or online documents. + +To use this package, you will need the following sets of fonts: + +* Concrete Roman (located in CTAN:fonts/concrete) +* Concrete Math (located in CTAN:fonts/concmath) + +To facilitate the installation, the Concrete Math fonts are made +available through a symbolic link, so that the contents of +CTAN:fonts/concmath is automatically included as a subdirectory +if you download this directory as a `.zip' or `.tar.gz' archive. + + +OVERVIEW: + +The `concmath' distribution consists of the following files: + + README - some notes on the `concmath' package + Makefile - Makefile to install the `concmath' package + concmath.dtx - documented source of the `concmath' package + concmath.ins - LaTeX installation script + +Subdirectory `fonts': + + README - some notes on the Concrete Math fonts + Makefile - Makefile to install the `concmath' fonts + +Subdirectory `fonts/mf': + + xcc*.mf - Metafont drivers for various sizes and shapes + +Subdirectory `fonts/tfm': + + xcc*.tfm - TeX font metrics for various sizes and shapes + + +INSTALLATION: + +(1) Before installing the `concmath' package and typesetting the +documentation, make sure that you have the Concrete Roman and +Concrete Math fonts installed. + +If you are lucky, both sets may have already been provided as +part of your TeX distribution. Otherwise, if you have to +install the Concrete Math fonts yourself, proceed by changing to +the `fonts' subdirectory and installing the fonts from there. + +- If you have a TDS-compatible TeX installation, you may try to + use the `Makefile' in the `fonts' subdirectory by calling: + + cd fonts ; make install + +- For manual installation of the font sources and font metric + files, please consult the instructions in `fonts/README'. + +(2) After the fonts have been installed, return to this directory. +To unpack the `concmath' package and to typeset the documentation, + proceed as follows: + +- If you have a TDS-compatible TeX installation, you may try to + use the enclosed `Makefile' by calling: + + make ; make install + +- For manual installation, run + + latex concmath.ins + + to unpack the package file `concmath.sty' and the corresponding + font definition files (*.fd) from the source file `concmath.dtx'. + + To typeset the documentation, run + + latex concmath.dtx + + twice to generate `concmath.dvi'. + + Finally, to install the `concmath' package, copy the files + `concmath.sty' and all `*.fd' to TEXMF/tex/latex/concmath or + wherever else your installation keeps LaTeX(2e) `.sty' files. + + +Happy TeXing! diff --git a/macros/latex/contrib/concmath/concmath b/macros/latex/contrib/concmath/concmath new file mode 120000 index 0000000000..170ae1b086 --- /dev/null +++ b/macros/latex/contrib/concmath/concmath @@ -0,0 +1 @@ +../../../../fonts/concmath \ No newline at end of file diff --git a/macros/latex/contrib/concmath/concmath.dtx b/macros/latex/contrib/concmath/concmath.dtx new file mode 100644 index 0000000000..c24897dde2 --- /dev/null +++ b/macros/latex/contrib/concmath/concmath.dtx @@ -0,0 +1,689 @@ +% \CheckSum{115} +% \iffalse +% +% concmath.dtx --- LaTeX package for Concrete Math fonts. +% +% Copyright (C) 1995--99 Ulrik Vieth +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the LaTeX Project Public License +% as described in lppl.txt in the base LaTeX distribution; either +% version 1 of the License, or (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +% +% \fi +% +% \iffalse +%<*driver> +\documentclass[fleqn]{ltxdoc} +\usepackage[amssymb]{concmath} +\usepackage{mflogo} +\renewcommand\baselinestretch{1.1} +\begin{document} + \DocInput{concmath.dtx} +\end{document} +% +% \fi +% +% +% \title{The \texttt{concmath} package} +% \author{Ulrik Vieth} +% \date{1999-03-10 v2.0} +% +% \maketitle +% +% \section{About this package} +% +% The \texttt{concmath} package for \LaTeXe{} provides access to +% the Concrete Math fonts that were derived from the Concrete Roman +% fonts designed by Don Knuth \cite{DEK:Concrete,DEK:TUB-Concrete}. +% While the Concrete Roman fonts were originally developed as a +% text fonts to be used in combination with the AMS Euler fonts in +% math mode, the Concrete Math fonts provides a complementary set +% of math fonts, so that the Concrete typefaces may be used as a +% complete replacement for Computer Modern \cite{DEK:VolumeE}. +% +% Loading the \texttt{concmath} package without any options has the +% effect of switching the default text font family to Concrete +% Roman and redeclaring the default math symbol fonts and math +% alphabets to use Concrete Math. In addition, the +% \texttt{concmath} package also provides the following package +% options that may be used to activate some extra features: +% +% \textbf{The `\textsf{exscale}' option:} This option provides +% the functionality of the `\textsf{exscale}' package from the +% \LaTeX{} base distribution, but using scaled sizes of the +% Concrete version of the math extension font instead of Computer +% Modern. +% +% \textbf{The `\textsf{amsfonts}' and `\textsf{amssymb}' options:} +% These options provide the functionality of the standard +% `\textsf{amsfonts}' and `\textsf{amssymb}' packages, but using +% the Concrete versions of the AMS symbol fonts and math alphabets. +% +% \textbf{The `\textsf{sansbold}' option:} This option redefines +% the default bold series to use semibold condensed, thereby +% replacing the bold extended version of Computer Modern Roman by +% the semibold condensed version of Computer Modern Sans Serif in +% bold material such as titles and section headings. Since there +% are different opinions among package writers as to which of these +% choices is better suited for use in combination with Concrete +% Roman, both have been used in various \LaTeX{} packages +% \cite{latex-beton, latex-euler, latex-ccfonts} and both are +% supported in this package as well. +% +% Before we eventually get to the implementation of the +% \texttt{concmath} package and the corresponding font definition +% files, we shall first review the history of the Concrete Roman +% and Concrete Math font families. In particular, we shall discuss +% the procedure how the Concrete Math fonts were derived from the +% Concrete Roman fonts by applying systematic changes to the \MF{} +% parameter files. +% +% +% \section{History of the `Concrete Roman' fonts} +% +% When Don Knuth and his co-authors wrote \textit{Concrete +% Mathematics} \cite{DEK:Concrete,DEK:TUB-Concrete}, they decided +% to make their book typographically interesting by making it the +% first one to use a new family of typefaces. The book was to be +% set using the AMS Euler fonts designed by Hermann Zapf, replacing +% the usual Computer Modern fonts in math mode. As for the text +% font, the original intention was to use Computer Modern Roman as +% usual. However, the combination of Computer Modern in text mode +% and Euler in math mode soon turned out to be unsatisfactory, and +% Don Knuth eventually set out to develop a heavier variant of +% Computer Modern Roman that was better suited to match the +% somewhat darker color of the Euler fonts. +% +% The result was a square-serif style typeface named Concrete +% Roman, along with \textit{italics}, \textsl{slanted}, and +% \textsc{small-caps} variants for emphasis and various mark-up +% elements. Unlike Computer Modern Roman, Concrete Roman features +% a relatively uniform stroke thickness and does not exhibit strong +% contrasts between hairlines and stems, making it particularly +% robust for use in low-resolution printing, but also in +% display-oriented applications such as transparencies or posters. +% +% The original distribution of Knuth's Concrete fonts consisted +% exclusively of text fonts. There was no bold series, nor were +% there any math fonts, since the latter were to be taken from the +% Euler fonts (or Computer Modern for the geometric math symbols). +% While there does exists a Concrete Math Italics font shape, +% \texttt{ccmi10}, this does not actually represent a math font and +% was not designed to be used as such. It only serves as an extra +% text font that provides access to the oldstyle numerals +% \oldstylenums{0123456789} and miscellaneous text symbols, such as +% the tie accent. However, given the meta-ness inherent in the +% designs of the Computer Modern typefaces \cite{DEK:VolumeE}, it +% is relatively easy to develop a complete set of Concrete math +% fonts by applying some simple heuristics, as we shall see in the +% following section. +% +% +% \section{Design of the `Concrete Math' fonts} +% +% The Concrete Math fonts (also known as `\texttt{concmath}' fonts) +% were developed by the author in early 1995, originally for use in +% a poster presentation. When the use of magnified sizes of +% Computer Modern math fonts printed at low resolution turned out +% to be unsatisfactory for comfortable reading in poster sizes, the +% need for a somewhat darker alternative became apparent. Since +% the only existing alternative would have been to use the AMS +% Euler fonts in math mode, which were deemed a little too exotic +% for the intended application, the author set out to investigate +% the possibilities of generating a complete set of Concrete Math +% fonts by applying systematic changes to the \MF{} parameter +% files. +% +% An initial comparison of the existing parameter files for +% \texttt{ccr10} and \texttt{ccmi10} revealed that they were almost +% identical except for the font identifier, the slant parameter, +% several boolean variables, and the call to the \MF{} driver file. +% Unlike in the case of \texttt{cmr10} and \texttt{cmmi10}, there +% were no differences in the design parameters governing the +% appearance of the character shapes, so it became almost trivial +% to generate a full set of Concrete Math Italics fonts in the +% usual range of sizes between 5\,pt and 10\,pt by starting from +% the \texttt{ccr} parameter files and applying the necessary +% systematic changes listed in Table~\ref{tab:cc-parameters} to +% produce a math font. +% +% \begin{table}[tb] +% \small +% \begin{tabular}{lllllll} +% font encoding: +% & OT1 & OML & OMS & OMX +% & U+msa & U+msb \\ +% font name: +% & \texttt{ccr10} & \texttt{xccmi10} & \texttt{xccsy10} & \texttt{xccex10} +% & \texttt{xccam10} & \texttt{xccbm10} \\ +% font identifier: +% & \texttt{"CCR"} & \texttt{"CCMI"} & \texttt{"CCSY"} & \texttt{"CCEX"} +% & \texttt{"CCAM"} & \texttt{"CCBM"} \\ +% parameters: +% & --- & \texttt{ccr10} & \texttt{ccr10} & \texttt{ccr10} +% & \texttt{ccr10} & \texttt{ccr10} \\ +% fontdimens: +% & --- & --- & \texttt{cmsy10} & \texttt{cmex10} +% & \texttt{cmsy10} & \texttt{cmsy10} \\ +% \textit{slant}: & 0 & 0.25 & 0.25 & 0 & 0 & 0.25 \\ +% \textit{variant\_g}: +% & \textbf{false} & \textbf{true} & irrelevant & irrelevant +% & irrelevant & irrelevant \\ +% \textit{math\_fitting}: +% & \textbf{false} & \textbf{true} & \textbf{true} & \textbf{false} +% & \textbf{true} & \textbf{true} \\ +% \textbf{generate}: +% & \texttt{roman} & \texttt{mathit} & \texttt{mathsy} & \texttt{mathex} +% & \texttt{amsya} & \texttt{amsyb} \\ +% \end{tabular} +% \bigskip +% \caption{\label{tab:cc-parameters} +% Comparison of the parameters for the Concrete Math typefaces.} +% \end{table} +% +% The resulting font shapes were called \texttt{xccmi} where the +% prefix `\texttt{x}' was used to avoid any potential name +% conflicts with font shapes from Don Knuth's distribution of the +% Concrete fonts, particularly in the case of \texttt{ccmi10}, +% which despite its name is not a real math font, as discussed +% earlier. +% +% After the Concrete Math Italics fonts were in place, the next +% step was to create suitable math symbol and math extension fonts. +% Once again, the author started with a comparison of the parameter +% files of the corresponding Computer Modern fonts, which revealed +% that \texttt{cmmi} and \texttt{cmsy} were identical except for +% the font identifier, the driver file, and the extra |\fontdimen| +% parameters in \texttt{cmsy} that are required for use as a math +% symbol font in |\textfont2|. Similarly, the parameters of +% \texttt{cmex} matched those of \texttt{cmr} except for the font +% identifier, the driver file, and the |\fontdimen|s in +% \texttt{cmex} for a math extension font in |\textfont3|. +% +% In both cases, the corresponding Concrete versions, named +% \texttt{xccsy} and \texttt{xccex}, could be derived easily by +% starting from \texttt{xccmi}, applying some systematic changes, +% and merging in the code for the |\fontdimen| parameters from +% \texttt{cmsy} or~\texttt{cmex}. Since the details of these +% parameter calculations weren't documented anywhere, not even in +% Knuth's \textit{Computer Modern Typefaces} \cite{DEK:VolumeE}, +% the author unfortunately had to rely on adapting whatever was +% there and hoping that it would somehow work for Concrete Math +% just as well. +% +% Finally, to round off the collection, the author also generated +% Concrete versions of the AMS math symbol fonts \texttt{msam} and +% \texttt{msbm}, which were called \texttt{xccam} and +% \texttt{xccbm}. As in the previous cases, the \MF{} parameter +% files of the fonts in question were compared to those of the +% Computer Modern math fonts, and it was found that both AMS symbol +% fonts were based on the \texttt{cmsy} parameters. The +% corresponding Concrete versions were then generated by starting +% from \texttt{xccsy} and applying the usual systematic changes. +% In the case of \texttt{xccam}, which also contains some text +% symbols `$\circledR$' and `$\circledS$' based on small-caps +% parameters, the ``lower'' parameters were taken from +% \texttt{cccsc10} in the 10\,pt version, but from \texttt{msam} +% in the smaller sizes for lack of any other alternatives. While +% this may not give optimal results for the circled letters, it +% shouldn't have any adverse effect on the math symbols. +% +% +% \StopEventually { +% \section*{Acknowledgement} +% +% Many features implemented in this package have been influenced by +% several other \LaTeX{} packages \cite{latex-beton, latex-euler, +% latex-ccfonts} that provide a more or less similar functionality. +% The author has tried to remain compatible with these packages +% wherever possible, although some design decisions have been taken +% that may lead to subtle differences. Potential users are invited +% to analyze and compare these packages, and to choose whatever +% suits them best. We hope that even if you found that another +% package provides a better solution for your needs, you may have +% still learned something interesting about the background of the +% Concrete Roman and Concrete Math fonts from reading this +% documentation. +% +% \begin{thebibliography}{1} +% \bibitem{DEK:Concrete} +% \textsc{Ronald L. Graham}, \textsc{Donald E. Knuth}, and +% \textsc{Oren Patashnik}. +% \newblock \textit{Concrete Mathematics}. +% \newblock Addison-Wesley, 1989. +% \bibitem{DEK:TUB-Concrete} +% \textsc{Donald E. Knuth}. +% \newblock \textit{Typesetting Concrete Mathematics}. +% \newblock \textsl{TUGboat} 10\#1, 31--36, 1989. +% \bibitem{DEK:VolumeE} +% \textsc{Donald E. Knuth}. +% \newblock \textit{Computer Mordern Typefaces}. +% \newblock Volume~E of \textit{Computers \& Typesetting}. +% \newblock Addison-Wesley, 1986. +% \bibitem{latex-beton} +% \textsc{Frank Jensen}. +% \newblock The \texttt{beton} package.\\ +% \newblock \texttt{CTAN:macros/latex/contrib/supported/beton/}. +% \bibitem{latex-euler} +% \textsc{Frank Jensen}. +% \newblock The \texttt{euler} package.\\ +% \newblock \texttt{CTAN:macros/latex/contrib/supported/euler/}. +% \bibitem{latex-ccfonts} +% \textsc{Walter Schmidt}. +% \newblock The \texttt{ccfonts} package.\\ +% \newblock \texttt{CTAN:macros/latex/contrib/supported/ccfonts/}. +% \end{thebibliography} +% } +% +% +% \section{The implementation} +% +% After having reviewed the history of the Concrete Roman and +% Concrete Math fonts, we now turn to the implementation of the +% \texttt{concmath} \LaTeX{} package and the corresponding font +% definition files. +% +% +% \subsection{Hello, World!} +% +% First, we announce the package and the font definition files. +% +% \begin{macrocode} +%\NeedsTeXFormat{LaTeX2e}[1996/12/01] +%\ProvidesPackage{concmath} +%\ProvidesFile{ot1ccr.fd} +%\ProvidesFile{omlccr.fd} +%\ProvidesFile{omsccr.fd} +%\ProvidesFile{omlccm.fd} +%\ProvidesFile{omsccsy.fd} +%\ProvidesFile{omxccex.fd} +%\ProvidesFile{ucca.fd} +%\ProvidesFile{uccb.fd} +%<+package>[1999/03/10 v2.0b LaTeX package for Concrete math fonts] +%<-package>[1999/03/10 v2.0b LaTeX font defs for Concrete math fonts] +% \end{macrocode} +% +% +% \subsection{Font definition files} +% +% \subsubsection{Concrete Roman} +% +% Here are the standard font definitions for Concrete Roman, +% including the \textit{italics}, \textsl{slanted}, and +% \textsc{small-caps} variants, which are usually only available +% in~10\,pt size. While it would be a trivial exercise to create a +% full set of slanted fonts by taking the \texttt{ccr} parameter +% files and setting the slant parameter to~$1/6$ in the +% \texttt{ccsl} parameter files, we shall only use the sizes +% provided in Knuth's official distribution. As for the italics +% and small-caps versions, there is no way to generate appropriate +% smaller sizes without extensive tuning and testing to derive new +% parameter sets. +% +% \begin{macrocode} +%<*OT1ccr> +\DeclareFontFamily{OT1}{ccr}{\hyphenchar\font45 } +\DeclareFontShape{OT1}{ccr}{m}{n}{ + <5> <6> <7> <8> <9> gen * ccr + <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> ccr10}{} +\DeclareFontShape{OT1}{ccr}{m}{sl}{ + <5> <6> <7> <8> <9> ccsl9 + <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> ccsl10}{} +\DeclareFontShape{OT1}{ccr}{m}{it}{ + <5> <6> <7> <8> <9> + <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> ccti10}{} +\DeclareFontShape{OT1}{ccr}{m}{sc}{ + <5> <6> <7> <8> <9> + <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> cccsc10}{} +% \end{macrocode} +% +% Next, here are the font substitutions for the bold series. Since +% there is no bold series in Concrete, we will use the +% corresponding Computer Modern fonts. +% +% \begin{macrocode} +\DeclareFontShape{OT1}{ccr}{bx}{n} {<-> ssub * cmr/bx/n}{} +\DeclareFontShape{OT1}{ccr}{bx}{sl}{<-> ssub * cmr/bx/sl}{} +\DeclareFontShape{OT1}{ccr}{bx}{it}{<-> ssub * cmr/bx/it}{} +% \end{macrocode} +% +% Next, here are the font substitutions for the semibold series. +% As we shall see below, the \texttt{concmath} package provides a +% `\textsf{boldsans}' option which redefines |\bfdefault| and thus +% turns all bold material into semibold condensed (which will then +% be substituted by semibold condensed sans serif). Since some +% people prefer to use semibold condensed Computer Modern Sans +% Serif in combination with Concrete Roman, this unusual +% substitution allows to switch between both choices by selecting +% or omitting a package option. +% +% \begin{macrocode} +\DeclareFontShape{OT1}{ccr}{sbc}{n} {<-> ssub * cmss/sbc/n}{} +\DeclareFontShape{OT1}{ccr}{sbc}{sl}{<-> ssub * cmss/sbc/n}{} +\DeclareFontShape{OT1}{ccr}{sbc}{it}{<-> ssub * cmss/sbc/n}{} +% \end{macrocode} +% +% Finally, here is the font shape declaration for the special +% purpose condensed slanted font that was used in \textit{Concrete +% Mathematics} for so-called `graffiti'. The \texttt{concmath} +% package does not bother to provide macros for such kinds of +% marginal notes, thus users who want to use this feature will have +% to develop their own. +% +% \begin{macrocode} +\DeclareFontShape{OT1}{ccr}{c}{sl}{<9> ccslc9}{} +% +% \end{macrocode} +% +% +% \subsubsection{Concrete Roman Font Substitutions} +% +% For technical reasons it necessary to provide font substitutions +% for Concrete Roman text symbols in the `OML' and `OMS' encodings. +% Any references to \texttt{ccr} in these encodings will be +% substituted by references to the corresponding Concrete math +% italics and math symbol fonts. +% +% \begin{macrocode} +%<*OMLccr> +\DeclareFontFamily{OML}{ccr}{\skewchar\font127 } +\DeclareFontShape{OML}{ccr}{m}{it} {<->ssub * ccm/m/it}{} +\DeclareFontShape{OML}{ccr}{bx}{it} {<->ssub * ccm/b/it}{} +\DeclareFontShape{OML}{ccr}{sbc}{it}{<->ssub * ccm/m/it}{} +% +% \end{macrocode} +% \begin{macrocode} +%<*OMSccr> +\DeclareFontFamily{OMS}{ccr}{\skewchar\font48 } +\DeclareFontShape{OMS}{ccr}{m}{n} {<->ssub * ccsy/m/n}{} +\DeclareFontShape{OMS}{ccr}{bx}{n} {<->ssub * ccsy/b/n}{} +\DeclareFontShape{OMS}{ccr}{sbc}{n}{<->ssub * ccsy/m/n}{} +% +% \end{macrocode} +% +% +% \subsubsection{Concrete Math Italics} +% +% Now, we turn to the font definitions for Concrete Math Italics. +% Since the \texttt{xccmi} parameters were derived from +% \texttt{ccr} with some systematic changes, these fonts are +% available in the same range of sizes, i.e.\ between 5\,pt and +% 10\,pt. +% +% \begin{macrocode} +%<*OMLccm> +\DeclareFontFamily{OML}{ccm}{\skewchar\font127 } +\DeclareFontShape{OML}{ccm}{m}{it}{ + <5> <6> <7> <8> <9> gen * xccmi + <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> xccmi10}{} +\DeclareFontShape{OML}{ccm}{b}{it}{<-> ssub * cmm/b/it}{} +% \end{macrocode} +% +% Similar to the 9\,pt slanted condensed text font for use in +% `graffiti', there also exists a 9\,pt slanted condensed version +% of Concrete Math Italics, stripped down to the oldstyle numerals +% only. This font shape is included here only for completeness, +% and users should be aware that it won't be usable as a math font. +% +% \begin{macrocode} +\DeclareFontShape{OML}{ccm}{c}{it}{<9> ccmic9}{} +% +% \end{macrocode} +% +% +% \subsubsection{Concrete Math Symbols} +% +% Here are the font definitions for the Concrete Math Symbol fonts. +% Since the \texttt{xccsy} parameters are identical to those of +% \texttt{xccmi} except for the extra |\fontdimen| parameters +% (which were adapted from \texttt{cmsy}), these fonts are +% available in the same range of sizes as Concrete Roman and +% Concrete Math Italics. +% +% Most of the geometric math symbols that depend only on the rule +% thickness will probably turn out to be identical to their +% Computer Modern counterparts. However, since the `OMS' encoding +% also contains a few greek-like symbols such as `$\nabla$' and +% `$\amalg$' that are clearly affected by the parameter changes, a +% Concrete version of the math symbol font is obviously necessary. +% +% \begin{macrocode} +%<*OMSccsy> +\DeclareFontFamily{OMS}{ccsy}{\skewchar\font48 } +\DeclareFontShape{OMS}{ccsy}{m}{n}{ + <5> <6> <7> <8> <9> gen * xccsy + <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> xccsy10}{} +\DeclareFontShape{OMS}{ccsy}{b}{n}{<-> ssub * cmsy/b/n}{} +% +% \end{macrocode} +% +% +% \subsubsection{Concrete Math Extension} +% +% Here are the font definitions for the Concrete Math Extension +% fonts. Since the \texttt{xccex} parameters are identical to +% those of \texttt{ccr} except for the extra |\fontdimen| +% parameters (which are adapted from \texttt{cmex}), these fonts +% are available in the same range of sizes as Computer Modern Math +% Extension, i.e.\ between 7\,pt and 10\,pt. By default, the math +% extension font is loaded only in a fixed size at 10\,pt. +% However, the \texttt{concmath} package also provides an +% `\textsf{exscale}' option to load the math extension font in +% scaled sizes. +% +% \begin{macrocode} +%<*OMXccex> +\DeclareFontFamily{OMX}{ccex}{} +\DeclareFontShape{OMX}{ccex}{m}{n}{<-> sfixed * xccex10}{} +% +% \end{macrocode} +% +% +% \subsubsection{Concrete AMS Symbols} +% +% Finally, here are the font definitions for the Concrete versions +% of the AMS symbol fonts, \texttt{msam} and \texttt{msbm}. Since +% the parameters of \texttt{xccam} and \texttt{xccbm} are directly +% derived from \texttt{xccsy}, these fonts are provided in the full +% range of sizes between 5\,pt and 10\,pt. +% +% As in the case of the Concrete Math Symbol font, most of the +% geometric math symbols will probably remain unchanged from the +% Computer Modern version, but letter-like symbols such as +% `$\yen$', `$\mho$', `$\eth$' or `$\backepsilon$' will obviously +% be subject to the parameter changes in the Concrete version, +% making it necessary to have Concrete versions of the AMS symbol +% fonts in the first place. +% +% Unfortunately, it appears that some of the characters in the AMS +% symbol fonts do not work out very well in the Concrete version or +% suffer from undesirable side-effects. One such problem is that +% wide accents are getting much heavier than usual: +% $$ \tilde{i} \quad \widetilde{ii} \quad \widetilde{iii} +% \quad \widetilde{iiii} \quad \widetilde{iiiiii} +% \quad \widetilde{iiiiiiii} +% $$ +% Another problem is that some characters, such as `$\varkappa$' or +% `$\digamma$', do not reflect the parameter changes for a Concrete +% version and still exhibit noticeable contrasts between stems and +% hairlines typical of Computer Modern fonts. It is possible that +% this behavior may be due to sub-optimal or inappropriate \MF{} +% coding. However, the author decided to refrain from changes to +% the AMS font sources for the sake of compatibility. +% +% +% \begin{macrocode} +%<*Ucca> +\DeclareFontFamily{U}{cca}{} +\DeclareFontShape{U}{cca}{m}{n}{ + <5> <6> <7> <8> <9> gen * xccam + <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> xccam10}{} +% +% \end{macrocode} +% \begin{macrocode} +%<*Uccb> +\DeclareFontFamily{U}{ccb}{} +\DeclareFontShape{U}{ccb}{m}{n}{ + <5> <6> <7> <8> <9> gen * xccbm + <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> xccbm10}{} +% +% \end{macrocode} +% +% +% \subsection{The \texttt{concmath} package} +% +% After we have discussed the font definition files, we now turn to +% the \texttt{concmath} package itself, starting with the +% declaration of package options. +% +% +% \subsubsection{Declaring package options} +% +% As mentioned in the introduction, the \texttt{concmath} package +% provides an `\textsf{exscale}' option that provides the +% functionality of the `\textsf{exscale}' package from the \LaTeX{} +% base distribution, but using the Concrete version of the math +% extension font. +% +% Since it doesn't seem to be possible to nest a +% |\DeclareFontShape| declaration within the |\AtBeginDocument| +% hook, we have to make use of a global switch |\ifcc@exscale| and +% put the relevant code directly into the package file to be +% executed immediately after |\ProcessOptions|. Apart from this +% minor complication, the code for this option is relatively +% simple. We just load the default \LaTeX{} `\textsf{exscale}' +% package and redeclare the |largesymbols| symbol font afterwards. +% +% \begin{macrocode} +%<*package> +\newif\ifcc@exscale \cc@exscalefalse +\DeclareOption{exscale}{% + \cc@exscaletrue % something to do after \ProcessOptions + \AtBeginDocument{\RequirePackage{exscale} + \DeclareSymbolFont{largesymbols}{OMX}{ccex}{m}{n}}} +% \end{macrocode} +% +% The declaration of `\textsf{amsfonts}' and `\textsf{amssymb}' +% options is similar, but slightly easier. Here, wee simply load +% the relevant \LaTeX{} package files and redeclare the AMS Symbol +% fonts afterwards using the Concrete versions. +% +% \begin{macrocode} +\DeclareOption{amsfonts}{% + \AtBeginDocument{\RequirePackage{amsfonts} + \DeclareSymbolFont{AMSa}{U}{cca}{m}{n} + \DeclareSymbolFont{AMSb}{U}{ccb}{m}{n} + \DeclareSymbolFontAlphabet{\mathbb}{AMSb}}} +\DeclareOption{amssymb}{% + \AtBeginDocument{\RequirePackage{amssymb} + \DeclareSymbolFont{AMSa}{U}{cca}{m}{n} + \DeclareSymbolFont{AMSb}{U}{ccb}{m}{n} + \DeclareSymbolFontAlphabet{\mathbb}{AMSb}}} +% \end{macrocode} +% +% Finally, here is the declaration of the `\textsf{boldsans}' +% option that allows to globally turn bold titles and headings into +% sans serif semibold condensed, if that is what you prefer to use +% in combination with a Concrete Roman text font. +% +% \begin{macrocode} +\DeclareOption{boldsans}{% + \renewcommand{\bfdefault}{sbc}} +% \end{macrocode} +% +% +% \subsubsection{Setting up defaults for text and math mode} +% +% Now, let's finish off the package file with the code to set up +% the defaults to use Concrete Roman and Concrete Math. For the +% text, we begin by setting the default text font family to +% Concrete Roman. +% +% \begin{macrocode} +\renewcommand{\rmdefault}{ccr} +% \end{macrocode} +% +% For the math, we redeclare all the standard symbol fonts using +% the Concrete versions. Since the encodings of these fonts are +% exactly the same as those of their Computer Modern counterparts, +% there is fortunately no need to repeat all the tedious +% |\DeclareMathSymbol| commands from \texttt{fontmath.ltx}. +% +% \begin{macrocode} +\DeclareSymbolFont{operators} {OT1}{ccr} {m}{n} +\DeclareSymbolFont{letters} {OML}{ccm} {m}{it} +\DeclareSymbolFont{symbols} {OMS}{ccsy}{m}{n} +\DeclareSymbolFont{largesymbols}{OMX}{ccex}{m}{n} +% \end{macrocode} +% \begin{macrocode} +\SetSymbolFont{operators} {bold}{OT1}{ccr} {bx}{n} +\SetSymbolFont{letters} {bold}{OML}{ccm} {b}{it} +\SetSymbolFont{symbols} {bold}{OMS}{ccsy}{b}{n} +% \end{macrocode} +% +% After the math symbol fonts have been set up, we also have to +% redeclare the math alphabets to use the newly defined Concrete +% versions. +% +% \begin{macrocode} +\DeclareSymbolFontAlphabet{\mathrm} {operators} +\DeclareSymbolFontAlphabet{\mathnormal}{letters} +\DeclareSymbolFontAlphabet{\mathcal} {symbols} +\DeclareMathAlphabet {\mathbf}{OT1}{ccr}{bx}{n} +\DeclareMathAlphabet {\mathit}{OT1}{ccr}{m}{it} +% \end{macrocode} +% +% Finally, we have to adapt the definition of |\oldstylenums| from +% the \LaTeX{} format to use the Concrete version of the oldstyle +% numerals \oldstylenums{0123456789}. It is a little unfortunate +% that there is still one last remaining hard-wired reference to +% Computer Modern fonts in \texttt{latex.ltx}, making it necessary +% to repeat the whole definition with trivial changes, but there's +% little we can do about it. +% +% Since this package does not try to imitate the look and feel of +% Knuth's \textit{Concrete Mathematics}, we don't bother about +% setting up equation numbers to be printed using oldstyle numbers. +% The latter is a design decision independent of the choice of +% fonts that's probably better left to the individual application. +% +% \begin{macrocode} +\def\oldstylenums#1{% + \begingroup + \spaceskip\fontdimen\tw@\font + \usefont{OML}{ccm}{\f@series}{it}% + \mathgroup\symletters #1% + \endgroup} +% \end{macrocode} +% +% +% \subsubsection{Executing options} +% +% After all the default values have been set up for Concrete Roman +% and Concrete Math, all that's left to do is to process the +% options and take special care of the `\textsf{exscale}' option. +% The font shape declarations for the scaled version of the +% Concrete Math Extension font are embedded directly in the package +% file rather than an external font definition file, but they will +% be executed only if the |\ifcc@exscale| flag has been set true +% during the option processing. +% +% \begin{macrocode} +\ProcessOptions +\ifcc@exscale + \DeclareFontFamily{OMX}{ccex}{} + \DeclareFontShape{OMX}{ccex}{m}{n}{ + <-8> sfixed * xccex7 <8> xccex8 <9> xccex9 + <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> xccex10}{} +\fi +% +% \end{macrocode} +% This concludes the implementation of the \texttt{concmath} package. +% +% \Finale +\endinput diff --git a/macros/latex/contrib/concmath/concmath.ins b/macros/latex/contrib/concmath/concmath.ins new file mode 100644 index 0000000000..981ae5d195 --- /dev/null +++ b/macros/latex/contrib/concmath/concmath.ins @@ -0,0 +1,38 @@ +\input docstrip.tex + +\keepsilent +\askonceonly + +\preamble + +Copyright (C) 1995--1999 Ulrik Vieth + +This file is part of the `concmath' package. + +This program is free software; you can redistribute it and/or +modify it under the terms of the LaTeX Project Public License +as described in lppl.txt in the base LaTeX distribution; either +version 1 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +\endpreamble + +\usedir{tex/latex/concmath} + +\generate{% + \file{concmath.sty}{\from{concmath.dtx}{package}} + \file{ot1ccr.fd} {\from{concmath.dtx}{OT1ccr}} + \file{omlccr.fd} {\from{concmath.dtx}{OMLccr}} + \file{omsccr.fd} {\from{concmath.dtx}{OMSccr}} + \file{omlccm.fd} {\from{concmath.dtx}{OMLccm}} + \file{omsccsy.fd} {\from{concmath.dtx}{OMSccsy}} + \file{omxccex.fd} {\from{concmath.dtx}{OMXccex}} + \file{ucca.fd} {\from{concmath.dtx}{Ucca}} + \file{uccb.fd} {\from{concmath.dtx}{Uccb}} +} + +\endbatchfile +\endinput diff --git a/macros/latex/contrib/concmath/concmath.pdf b/macros/latex/contrib/concmath/concmath.pdf new file mode 100644 index 0000000000..ea30e51389 Binary files /dev/null and b/macros/latex/contrib/concmath/concmath.pdf differ -- cgit v1.2.3