diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/base/fixltx2e.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/base/fixltx2e.dtx | 1791 |
1 files changed, 1791 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/base/fixltx2e.dtx b/Master/texmf-dist/source/latex/base/fixltx2e.dtx new file mode 100644 index 00000000000..a55e295fcac --- /dev/null +++ b/Master/texmf-dist/source/latex/base/fixltx2e.dtx @@ -0,0 +1,1791 @@ +% \iffalse meta-comment +% +% Copyright 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 +% The LaTeX3 Project and any individual authors listed elsewhere +% in this file. +% +% This file is part of the LaTeX base system. +% ------------------------------------------- +% +% It may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2003/12/01 or later. +% +% This file has the LPPL maintenance status "maintained". +% +% The list of all files belonging to the LaTeX base distribution is +% given in the file `manifest.txt'. See also `legal.txt' for additional +% information. +% +% The list of derived (unpacked) files belonging to the distribution +% and covered by LPPL is defined by the unpacking scripts (with +% extension .ins) which are part of the distribution. +% +% \fi +% +% \iffalse +% +%<*dtx> + \ProvidesFile{fixltx2e.dtx} +%</dtx> +%<fixltx2e,fix-cm>\NeedsTeXFormat{LaTeX2e} +%<fixltx2e>\ProvidesPackage{fixltx2e} +%<fix-cm>\ProvidesPackage{fix-cm} +%<driver>\ProvidesFile{fixltx2e.drv} +% \fi +% \ProvidesFile{fixltx2e.dtx} + [2004/02/13 v1.1h fixes to LaTeX] +% +% \iffalse +%<*driver> + \documentclass{ltxdoc} + \newcommand\Lopt[1]{\textsf{#1}} + \let\Lpack\Lopt + \providecommand{\file}[1]{\texttt{#1}} + \providecommand{\MF}{\textsf{Metafont}} + \providecommand{\danger}{\marginpar[\hfill\protect\Huge!!]{\protect\Huge!!\hfill}} + \begin{document} + \DocInput{fixltx2e.dtx} + \end{document} +%</driver> +% \fi +% +% \CheckSum{896} +% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% +% +% \let\package\textsf +% +% +% \GetFileInfo{fixltx2e.dtx} +% +% \title{The \Lpack{fixltx2e} and \Lpack{fix-cm} packages\thanks{This file +% has version number \fileversion, last +% revised \filedate.}} +% \author{Frank Mittelbach, David Carlisle, Chris Rowley, Walter +% Schmidt\thanks{Walter wrote \Lpack{fix-cm}}} +% \date{\filedate} +% \maketitle +% +% \begin{abstract} +% These packages provides fixes to \LaTeXe{} which are desirable +% but cannot be integrated into the \LaTeXe{} kernel or the +% font definition files directly as they would produce a version +% incompatible to earlier releases (either in formatting or +% functionality). +% +% By providing these fixes in the form of packages, users can benefit +% from them without the danger that their documents will fail or +% produce unexpected results at other sites since the documents +% contain a clear indication (the |\usepackage| line, preferably +% with a required date) that the fixes are needed. +% \end{abstract} +% +% \tableofcontents +% +% \newpage +% +% \section{Introduction} +% +% In the newsletter \texttt{ltnews07.tex}, which accompanied the +% \LaTeXe{} maintenance release of June 1997, we wrote: +% \begin{quote} +% Many of the problem reports we receive concerning the standard +% classes are not concerned with bugs but are suggesting, more or +% less politely, that the design decisions embodied in them are +% `not optimal' and asking us to modify them. +% +% There are several reasons why we have decided not to make such +% changes to these files. +% \begin{itemize} +% \item However misguided, the current behaviour is clearly what +% was intended when these classes were designed. \item It is not +% good practice to change such aspects of `standard classes' +% because many people will be relying on them. +% \end{itemize} +% +% We have therefore decided not to even consider making such +% modifications, nor to spend time justifying that decision. This +% does not mean that we do not agree that there are many +% deficiencies in the design of these classes, but we have many +% tasks with higher priority than continually explaining why the +% standard classes for \LaTeX{} cannot be changed. +% \end{quote} +% +% Back then we probably should have said that this decision also +% covers changes to the \LaTeX{} kernel and font definitions, +% if the change results in +% noticeable differences in the formatting of documents or otherwise +% produces severe incompatibilities between releases. The important +% point to stress here is that ``people rely on the fact that a +% document formatted at one site produces identical output at a +% different site''. By fixing a certain problem in version +% \meta{date}, people making use of the fix will get incorrectly +% formatted documents if they send them to others who still run on a +% version prior to \meta{date}. +% +% In theory one could get around this by adding a line like +% \begin{quote} +% |\NeedsTeXFormat{latex2e}[|\meta{date}|]| +% \end{quote} +% on top of the document. However, this fails for two reasons. Firstly, +% most people will not be aware that they make use of a feature or fix +% that is only available in their version of \LaTeX{}; and thus do not +% add such a line in their documents. Secondly, even if there is such a +% line the receiving site might not be able to upgrade their \LaTeX{} +% in time to process the document properly (the latter is a sad fact +% of life). +% +% By providing the \Lpack{fixltx2e} and \Lpack{fix-cm} packages +% we hope to help people in this respect since, when they +% are used, a document will contain a clear +% indication that special features/fixes are needed and if the +% receiving site does not have the packages available (or not available +% with the right version) it is far easier to download and install them +% from some archive than to upgrade \LaTeX{} in a rush. +% +% The packages are independent from each other and deal with different +% subjects: +% \Lpack{fixltx2e} provides general changes to the \LaTeX{} kernel, +% while \Lpack{fix-cm} improves the definitions of the Computer Modern +% font families. +% +% We will try to maintain the packages in such a way that they can be used +% with all maintenance releases of \LaTeXe{} so that, if urgently +% needed, people can simply add them to the current directory in case +% they cannot upgrade their \LaTeX{} for whatever reason. +% +% The packages are \textbf{NOT} provided so that people can stop +% upgrading their \LaTeX{} system. They will contain only fixes of a +% certain nature, others will still go into the kernel and extensions +% in form of packages, and support files will still be added to the +% base system at regular intervals. +% +% +% \subsection{Using \Lpack{fixltx2e}} +% +% To use the \Lpack{fixltx2e} package include the line +% \begin{quote} +% |\usepackage{fixltx2e}[|\meta{date}|]| +% \end{quote} +% into the preamble of your document, where \meta{date} is the date of +% the \Lpack{fixltx2e} package that you are using. +% This way your document will produce a warning if processed at a site +% that only has an older version of of this package. +% +% \subsection{Using \Lpack{fix-cm}} +% +% \begin{sloppypar} +% To use the \Lpack{fix-cm} package, +% load \danger it \emph{before} \cmd{\documentclass}, +% and use the command \cmd{\RequirePackage} to do so, rather than the +% normal \cmd{\usepackage}: +% \end{sloppypar} +% \begin{verse} +% |\RequirePackage{fix-cm}|\\ +% |\documentclass| \dots +% \end{verse} +% \textbf{Do not to load any other package before the document class}, +% unless you have a thorough understanding of the \LaTeX{} internals +% and know exactly what you are doing! +% +% +% \section{Fixes added} +% +% This section describes all the fixes/features that have been added +% to the initial release of the package. If applicable the bug report +% info (see \texttt{bugs.txt}) is given. +% +% +% +% +% \subsection{2-col: 1-col fig can come before earlier 2-col fig +% (pr/2346)} +% +%\begin{verbatim} +% >Number: 2346 +% >Category: latex +% >Synopsis: 2-col: 1-col fig can come before earlier 2-col fig +% >Arrival-Date: Wed Dec 18 15:41:07 1996 +% >Originator: w.l.kleb@larc.nasa.gov (bil kleb) +% >Description: +% as documented in lamport's book, p. 198, concerning figure +% placement, "a figure will not be printed before an earlier +% figure, and a table will not be printed before an earlier +% table." however, there is a footnote stating, "However, +% in two-column page style, a single-column figure can come before +% an earlier double-column figure, and vice versa." +% +% this twocolumn behavior is undesireable---at least by me and +% most professional organizations i publish in. ed snyzter developed +% a hack fix for 2.09 several years ago which links the two +% counters, but i have not run across a similar "fix" for 2e... +% \end{verbatim} +% +% Originally fixed in package \Lpack{fix2col} which was merged into +% this package. Documentation and code from this package have been +% merged into this file. +% +% \subsubsection{Notes on the Implementation Strategy} +% +% The standard output routine maintains two lists of floats that have +% been `deferred' for later consideration. One list for single column +% floats, and one for double column floats (which are always +% immediately put onto their deferred list). This mechanism means +% that \LaTeX\ `knows' which type of float is contained in each box +% by the list that it is processing, but having two lists means +% that there is no mechanism for preserving the order between the +% floats in each list. +% +% The solution to this problem consists of two small changes to +% the output routine. +% +% Firstly, abandon the `double column float list' |\@dbldeferlist| +% and change every command where it is used so that instead the +% same |\@deferlist| is used as for single column floats. +% That one change ensures that double and single column floats +% stay in the same sequence, but as \LaTeX\ no longer `knows' +% whether a float is double or single column, it will happily +% insert a double float into a single column, overprinting the +% other column, or the margin. +% +% The second change is to provide an alternative mechanism for +% recording the two column floats. \LaTeX\ already has a compact +% mechanism for recording float information, an integer count register +% assigned to each float records information about the `type' of float +% `figure', `table' and the position information `htp' etc. +% +% The type information is stored in the `high' bits, one bit position +% (above `32') allocated to each float type. The `low' bits store +% information about the allowed positions, one bit each allocated for +% |h t b p|. In the \LaTeX2.09 system, the bit corresponding to `16' +% formed a `boundary' between these two sets of information, and it +% was never actually used by the system. Ed Sznyter's +% \package{fixfloats} package not unreasonably used this position to +% store the double column information, setting the bit for double +% column floats. Then at each point in the output routine at which a +% float is committed to a certain region, an additional check must be +% made to check that the float is (or is not) double column. If it +% spans the wrong number of columns it is deferred rather than being +% added. +% +% Unfortunately the bit `16' is not available in \LaTeXe. It is used +% to encode the extra float position possibility `|!|' that was added +% in that system. It would be possible to use position `32' and to +% move the flags for `table', `figure',\ldots\ up one position, to +% start at 64, but this would mean that in principle one less float +% type would be supported, and more importantly is likely to break +% any other packages that assume anything about the output routine +% internals. So here I instead use another mechanism for flagging +% double column floats: By default all floats have depth 0pt. +% This package arranges that double column ones have depth 1sp. +% This information may then be used in the same manner as in +% the \package{fixfloats} package, to defer any floats that are not of +% the correct column spanning type. +% +% +% +% \subsection{Wrong header for twocolumn (pr/2613)} +% +%\begin{verbatim} +% >Number: 2613 +% >Category: latex +% >Synopsis: wrong headline for twocolumn +% >Arrival-Date: Mon Sep 22 16:41:09 1997 +% >Originator: daniel@cs.uni-bonn.de (Daniel Reischert) +% >Description: +% When setting the document in two columns +% the headline shows the top mark of the second column, +% but it should show the top mark of the first column. +% \end{verbatim} +% +% Originally fixed in package \Lpack{fix2col} which was merged into +% this package. Documentation and code from this package have been +% merged into this file. +% +% \subsubsection{Notes on the Implementation Strategy} +% +% The standard \LaTeX\ twocolumn system works internally by making +% each column a separate `page' that is passed independently to \TeX's +% pagebreaker. (Unlike say the \package{multicol} package, where all +% columns are gathered together and then split into columns later, +% using |\vsplit|.) This means that the primitive \TeX\ marks that are +% normally used for header information, are globally reset after the +% first column. By default \LaTeX\ does nothing about this. +% A good solution is provided by Piet van Oostrum (building on earlier +% work of Joe Pallas) in his \package{fixmarks} package. +% +% After the first column box has been collected the mark information +% for that box is saved, so that any |\firstmark| can be +% `artificially' used to set the page-level marks after the second +% column has been collected. (The second column |\firstmark| is not +% normally required.) Unfortunately \TeX\ does not provide a direct +% way of knowing if any marks are in the page, |\firstmark| always has a +% value from previous pages, even if there is no mark in this page. +% The solution is to make a copy of the box and then |\vsplit| it +% so that any marks show up as |\splitfirstmark|. +% +% The use of |\vsplit| does mean that the output routine will globally +% change the value of |\splitfirstmark| and +% |\splitbotmark|. The \package{fixmarks} package goes to some trouble +% to save and restore these values so that the output routine does +% \emph{not} change the values. This part of \package{fixmarks} is not +% copied here as it is quite costly (having to be run on every page) and +% there is no reason why anyone writing code using |\vsplit| should +% allow the output routine to be triggered before the split marks have +% been accessed. +% +% +% \subsection{\texttt{\textbackslash @} discards spaces when moving +% (pr/3039)} +% +%\begin{verbatim} +% >Number: 3039 +% >Category: latex +% >Synopsis: \@ discards spaces when moving +% >Arrival-Date: Sat May 22 09:01:06 1999 +% >Originator: asnd@triumf.ca (Donald Arseneau) +% >Description: +% The \@ command expands to \spacefactor\@m in auxiliary files, +% which then ignores following spaces when it is reprocessed. +%\end{verbatim} +% +% \subsection{\texttt{\textbackslash setlength} produces error if +% used with registers like \texttt{\textbackslash dimen0} (pr/3066)} +% +%\begin{verbatim} +% >Number: 3066 +% >Category: latex +% >Synopsis: \setlength{\dimen0}{10pt} +% >Arrival-Date: Tue Jul 6 15:01:06 1999 +% >Originator: oberdiek@ruf.uni-freiburg.de (Heiko Oberdiek) +% >Description: +% The current implementation of \setlength causes an error, +% because the length specification isn't terminated properly. +% More safe: +% \def\setlength#1#2{#1=#2\relax} +%\end{verbatim} +% +% \subsection{\texttt{\textbackslash addpenalty} ruins flush-bottom (pr/3073)} +% +%\begin{verbatim} +% >Number: 3073 +% >Category: latex +% >Synopsis: \addpenalty ruins flush-bottom +% >Arrival-Date: Sat Jul 17 05:11:05 1999 +% >Originator: asnd@triumf.ca (Donald Arseneau) +% >Description: +% Just to keep in mind for further development eh? +% A page break at an \addpenalty after \vspace does *not* +% give a flush-bottom page. (The intent of \addpenalty is +% apparently just to preserve the flush bottom by putting +% the breakpoint `above' the skip.) +%\end{verbatim} +% +% +% +% \section{Fixes added for 2003/06/01} +% +% \subsection{\texttt{\textbackslash fnsymbol} should use text symbols +% if possible (pr/3400)} +% +%\begin{verbatim} +% >Number: 3400 +% >Category: latex +% >Synopsis: \fnsymbol should use text symbols if possible +% >Arrival-Date: Fri Jan 04 20:41:00 CET 2002 +% >Originator: was@VR-Web.de ( Walter Schmidt ) +% +% The \fnsymbol command can be used in both text and math +% mode. The symbols produced are, however, always taken from +% the math fonts. As a result, they may not match the text +% fonts, even if the symbols are actually available, for +% instance from the TS1 encoding. Since \fnsymbol is +% primarily used for footnotes in text, this should be fixed, +% IMO. +%\end{verbatim} +% +% +% \subsection{No hyphenation in first word after float environment(pr/3498)} +% +%\begin{verbatim} +% >Number: 3498 +% >Category: latex +% >Synopsis: No hyphenation in first word after float environment +% >Arrival-Date: Thu Jan 30 13:21:00 CET 2003 +% >Originator: h.harders@tu-bs.de (Harald Harders) +% +% If a float environment (figure, table) is written within a paragraph, +% the first word after the environment is not hyphenated. +%\end{verbatim} +% +% +% +% \subsection{Allowing \texttt{\textbackslash emph} to produce small +% caps, etc} +% +% By default |\em| or |\emph| switches to roman in an italic +% context but some designers prefer a switch to small caps in that +% case. This can be achieved by setting |\eminnershape|, e.g., +% +%\begin{verbatim} +%\renewcommand\eminnershape{\scshape} +%\end{verbatim} +% +% +% \subsection{Using EC fonts (T1 encoding) makes my documents look +% bl**dy horrible (from c.t.t.)\\ +% I can't use arbitrary sizes with CM fonts (from c.t.t.)} +% +% No I'm not trying to collect any cites from the news group +% discussion on this topic. In a nutshell, if one adds +%\begin{verbatim} +%\usepackage[T1]{fontenc} +%\end{verbatim} +% to a document that uses the Computer Modern typefaces, +% then not only the T1 encoding is used but the fonts +% used in the document look noticeably different. This is due to the fact +% that the EC fonts have more font series designs, e.g.\ a 14.4\,pt bold +% etc and those get used in the standard \texttt{.fd} files, while +% with Computer Modern (in OT1 encoding) such sizes were scaled +% versions of smaller sizes---with a noticeable different look and +% feel. +% +% So we provide a package \Lpack{fix-cm} to ensure that comparable +% definitions are used. In addition to that, the package +% \Lpack{fix-cm} also enables continuous scaling of the CM fonts. +% This package was written by Walter Schmidt. +% +% +% +%^^A \section{The macro package \textsf{fix-cm} for \LaTeXe} +% +%^^A The documentation in this section was prepared by Walter Schmidt. +% +% +% +% \subsubsection{What \Lpack{fix-cm} does} +% +% ^^A Are you bothered by the T1 and TS1 encoded Computer Modern fonts, +% ^^A which look partially worse than the traditional ones? Would you +% ^^A like to use the CM fonts with arbitrary sizes? If so, the macro +% ^^A package \Lpack{fix-cm} can help you. +% +% Loading the package \Lpack{fix-cm} changes the font definitions of the +% Computer Modern fonts, in order to achieve the following effects: +% \begin{itemize} +% \item +% The appearance of the T1 and TS1 encoded CM fonts (aka `EC') is +% made as similar as possible to the traditional (OT1 encoded) ones. +% Particularly, a number of broken or ugly design sizes are no +% longer used, the look of the bold sans serif typeface at large +% sizes is considerably improved, and mismatches between the text +% fonts and the corresponding math fonts are avoided. As a side +% effect, PostScript and PDF documents may become smaller, because +% fewer fonts need to be embedded. +% \item +% The Computer Modern fonts are made available with arbitrary sizes. +% \item +% Only those design sizes of the fonts will be used, that are +% normally available in Type1 format, too. You need not load the +% extra package \Lpack{cmmib57} for this purpose. +% \end{itemize} +% The package acts on the following font families: +% \begin{itemize} +% \item +% The text font families \file{cmr}, \file{cmss}, \file{cmtt} and +% \file{cmvtt} with OT1, T1 and TS1 encoding. +% \item +% The default math fonts used by \LaTeX, i.e., the font families +% \file{cmm} with encoding OML and \file{cms} with encoding OMS. +% \item +% The symbols used by the package \Lpack{latexsym}, i.e., the font +% family \file{lasy}. +% \end{itemize} +% Note that the package does \emph{not} act on: +% \begin{itemize} +% \item Font families such as CM~Fibonacci, CM~Dunhill etc., +% which are provided for experimental purposes or for fun only. +% \item +% CM text fonts with character sets other than Latin, e.g., +% Cyrillic. Loading of the required font and encoding definitions +% while the fonts are not actually used, would not be a good idea. +% This should be addressed by particular packages or by changing the +% standard FDs of these fonts. +% \item +% Extra math fonts such as the AMS symbol fonts. While +% they match the style of Computer Modern, they are frequently used +% in conjunction with other font families, too. Thus, +% \Lpack{fix-cm} is obviously not the right place to make sure that +% they can be scaled continuously. Ask the maintainers of these +% fonts to provide this feature, which is badly needed! +% \item +% The math extension font \file{cmex}. Whether or not this font +% should be scaled is a question of its own, and there are other +% packages (\Lpack{exscale}, \Lpack{amsmath}, \Lpack{amsfonts}) to +% take care of it. +% \end{itemize} +% +% \subsubsection{How to load the package} +% \begin{sloppypar} +% The package should be loaded \danger \emph{before} \cmd{\documentclass}, +% using the command |\RequirePackage{fix-cm}|, rather than the +% normal \cmd{\usepackage}. +% Rationale: +% If the package is loaded in the preamble, a preceding package or +% even the code of the document class may have used any of the CM +% fonts already. However, the definitions of those fonts, that are +% already in use, cannot be changed any more. +% \end{sloppypar} +% +% \subsubsection{Usage notes} +% In contrast to what you may expect, \Lpack{fix-cm} does \emph{not} +% ensure that line and page breaks stay the same, when you switch an +% existing document from OT1 to T1 encoding. The package does not +% turn off all of the additional design sizes in the EC fonts +% collection: Those, that contribute considerably to the typographical +% quality and do not conflict with the math fonts, +% are---indeed---used. +% +% Be careful when using arbitrary, non-standard font sizes with +% applications that need bitmap fonts: You may end up \danger with +% lots of possibly huge \file{.pk} files. Also, \MF{} chokes +% sometimes on extremely small or large sizes, because of arithmetic +% problems. +% +% \Lpack{fix-cm} supersedes the experimental packages \Lpack{cmsd} and +% \Lpack{fix-ec}, which are no longer distributed. +% +% The packages \Lpack{type1cm} and \Lpack{type1ec} must not be loaded +% additionally; they enable only continuous scaling. +% +% \StopEventually{} +% +% \section{Implementation} +% +% We require at least a somewhat sane version of \LaTeXe{}. Earlier +% ones where really quite different from one another. +% \begin{macrocode} +%<*fixltx2e> +\NeedsTeXFormat{LaTeX2e}[1996/06/01] +% \end{macrocode} +% +% +% +% \subsection{2-col: 1-col fig can come before earlier 2-col fig +% (pr/2346) \\ +% Wrong headline for twocolumn (pr/2613)} +% +% Originally fixed in package \Lpack{fix2col} which was merged into +% this package. Code and documentation are straight copies from that +% package. +% +% \subsubsection{Preserving Marks} +% +% This is just a change to the single command |\@outputdblcol| +% so that it saves mark information for the first column and restores +% it in the second column. +% \begin{macrocode} +\def\@outputdblcol{% + \if@firstcolumn + \global\@firstcolumnfalse +% \end{macrocode} +% Save the left column +% \begin{macrocode} + \global\setbox\@leftcolumn\copy\@outputbox +% \end{macrocode} +% +% Remember the marks from the first column +% \begin{macrocode} + \splitmaxdepth\maxdimen + \vbadness\maxdimen + \setbox\@outputbox\vsplit\@outputbox to\maxdimen +% \end{macrocode} +% +% One minor difference from the current \package{fixmarks}, pass the +% marks through a token register to stop any |#| tokens causing an +% error in a |\def|. +% \begin{macrocode} + \toks@\expandafter{\topmark}% + \xdef\@firstcoltopmark{\the\toks@}% + \toks@\expandafter{\splitfirstmark}% + \xdef\@firstcolfirstmark{\the\toks@}% +% \end{macrocode} +% +% This test does not work if truly empty marks have been inserted, but +% \LaTeX\ marks should always have (at least) two brace groups. +% (Except before the first mark is used, when the marks are empty, +% but that is OK here.) +% \begin{macrocode} + \ifx\@firstcolfirstmark\@empty + \global\let\@setmarks\relax + \else + \gdef\@setmarks{% + \let\firstmark\@firstcolfirstmark + \let\topmark\@firstcoltopmark}% + \fi +% \end{macrocode} +% +% End of change +% \begin{macrocode} + \else + \global\@firstcolumntrue + \setbox\@outputbox\vbox{% + \hb@xt@\textwidth{% + \hb@xt@\columnwidth{\box\@leftcolumn \hss}% + \hfil + \vrule \@width\columnseprule + \hfil + \hb@xt@\columnwidth{\box\@outputbox \hss}}}% + \@combinedblfloats +% \end{macrocode} +% Override current first and top with those of first column if necessary +% \begin{macrocode} + \@setmarks +% \end{macrocode} +% End of change +% \begin{macrocode} + \@outputpage + \begingroup + \@dblfloatplacement + \@startdblcolumn + \@whilesw\if@fcolmade \fi{\@outputpage\@startdblcolumn}% + \endgroup + \fi} +% \end{macrocode} +% +% \subsubsection{Preserving Float Order} +% +% Changes |\@dbldeferlist| to |\@deferlist| are not explicitly noted +% but are flagged by blank comment lines around the changed line. +% +% +% \begin{macrocode} +\def\end@dblfloat{% +\if@twocolumn + \@endfloatbox + \ifnum\@floatpenalty <\z@ + \@largefloatcheck +% \end{macrocode} +% +% Force the depth of two column float boxes. +% \begin{macrocode} + \global\dp\@currbox1sp % +% \end{macrocode} +% +% \changes{v1.1d}{2000/09/24}{FMi: use output routine to +% defer float} +% Next line assumes that first token of |\end@float| is +% |\@endfloatbox| so we gobble that. +% \begin{macrocode} +% \@cons\@deferlist\@currbox + \expandafter\@gobble\end@float +% \end{macrocode} +% |\@Esphack| is then added by |\@endfloat| above. +% \begin{macrocode} + \fi +% \ifnum \@floatpenalty =-\@Mii \@Esphack\fi +\else + \end@float +\fi +} +% \end{macrocode} +% +% Test if the float box has the wrong width. (Actually as noted above +% the test is for a conventional depth setting rather than for the +% width of the float). +% \begin{macrocode} +\def\@testwrongwidth #1{% + \ifdim\dp#1=\f@depth + \else + \global\@testtrue + \fi} +% \end{macrocode} +% +% Normally looking for single column floats, which have zero depth. +% \begin{macrocode} +\let\f@depth\z@ +% \end{macrocode} +% +% but when making two column float area, look for floats with 1sp +% depth. +% \begin{macrocode} +\def\@dblfloatplacement{\global\@dbltopnum\c@dbltopnumber + \global\@dbltoproom \dbltopfraction\@colht + \@textmin \@colht + \advance \@textmin -\@dbltoproom + \@fpmin \dblfloatpagefraction\textheight + \@fptop \@dblfptop + \@fpsep \@dblfpsep + \@fpbot \@dblfpbot +% \end{macrocode} +% +% \begin{macrocode} + \def\f@depth{1sp}} +% \end{macrocode} +% +% All the remaining changes are replacing the double column defer list +% or insering the extra test |\@testwrongwidth|\marg{box} at suitable +% places. That is at plces where a box is taken off the deferlist. +% \begin{macrocode} +\def \@doclearpage {% + \ifvoid\footins + \setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa + \setbox\@tempboxa\box\@cclv + \xdef\@deferlist{\@toplist\@botlist\@deferlist}% + \global \let \@toplist \@empty + \global \let \@botlist \@empty + \global \@colroom \@colht + \ifx \@currlist\@empty + \else + \@latexerr{Float(s) lost}\@ehb + \global \let \@currlist \@empty + \fi + \@makefcolumn\@deferlist + \@whilesw\if@fcolmade \fi{\@opcol\@makefcolumn\@deferlist}% + \if@twocolumn + \if@firstcolumn +% \end{macrocode} +% +% \begin{macrocode} + \xdef\@deferlist{\@dbltoplist\@deferlist}% +% \end{macrocode} +% +% \begin{macrocode} + \global \let \@dbltoplist \@empty + \global \@colht \textheight + \begingroup + \@dblfloatplacement +% \end{macrocode} +% +% \begin{macrocode} + \@makefcolumn\@deferlist + \@whilesw\if@fcolmade \fi{\@outputpage + \@makefcolumn\@deferlist}% +% \end{macrocode} +% +% \begin{macrocode} + \endgroup + \else + \vbox{}\clearpage + \fi + \fi +% \end{macrocode} +% the next line is needed to avoid loosing floats in certain +% circumstances a single call to the original |\doclearpage| +% will now no longer output all floats. +% \changes{v1.1d}{2000/09/24}{FMi: ensure \cs{doclearpage} +% is called again until all floats are output.} +% \begin{macrocode} + \ifx\@deferlist\@empty \else\clearpage \fi + \else + \setbox\@cclv\vbox{\box\@cclv\vfil}% + \@makecol\@opcol + \clearpage + \fi +} +% \end{macrocode} +% +% \begin{macrocode} +\def \@startdblcolumn {% + \@tryfcolumn \@deferlist + \if@fcolmade + \else + \begingroup + \let \reserved@b \@deferlist + \global \let \@deferlist \@empty + \let \@elt \@sdblcolelt + \reserved@b + \endgroup + \fi +} +% \end{macrocode} +% +% \begin{macrocode} +\def\@addtonextcol{% + \begingroup + \@insertfalse + \@setfloattypecounts + \ifnum \@fpstype=8 + \else + \ifnum \@fpstype=24 + \else + \@flsettextmin + \@reqcolroom \ht\@currbox + \advance \@reqcolroom \@textmin + \ifdim \@colroom>\@reqcolroom + \@flsetnum \@colnum + \ifnum\@colnum>\z@ + \@bitor\@currtype\@deferlist + \@testwrongwidth\@currbox + \if@test + \else + \@addtotoporbot + \fi + \fi + \fi + \fi + \fi + \if@insert + \else + \@cons\@deferlist\@currbox + \fi + \endgroup +} +% \end{macrocode} +% +% \begin{macrocode} +\def\@addtodblcol{% + \begingroup + \@insertfalse + \@setfloattypecounts + \@getfpsbit \tw@ + \ifodd\@tempcnta + \@flsetnum \@dbltopnum + \ifnum \@dbltopnum>\z@ + \@tempswafalse + \ifdim \@dbltoproom>\ht\@currbox + \@tempswatrue + \else + \ifnum \@fpstype<\sixt@@n + \advance \@dbltoproom \@textmin + \ifdim \@dbltoproom>\ht\@currbox + \@tempswatrue + \fi + \advance \@dbltoproom -\@textmin + \fi + \fi + \if@tempswa + \@bitor \@currtype \@deferlist +% \end{macrocode} +% +% not in fixfloats? +% \begin{macrocode} + \@testwrongwidth\@currbox +% \end{macrocode} +% +% \begin{macrocode} + \if@test + \else + \@tempdima -\ht\@currbox + \advance\@tempdima + -\ifx \@dbltoplist\@empty \dbltextfloatsep \else + \dblfloatsep \fi + \global \advance \@dbltoproom \@tempdima + \global \advance \@colht \@tempdima + \global \advance \@dbltopnum \m@ne + \@cons \@dbltoplist \@currbox + \@inserttrue + \fi + \fi + \fi + \fi + \if@insert + \else + \@cons\@deferlist\@currbox + \fi + \endgroup +} +% \end{macrocode} +% +% \begin{macrocode} +\def \@addtocurcol {% + \@insertfalse + \@setfloattypecounts + \ifnum \@fpstype=8 + \else + \ifnum \@fpstype=24 + \else + \@flsettextmin + \advance \@textmin \@textfloatsheight + \@reqcolroom \@pageht + \ifdim \@textmin>\@reqcolroom + \@reqcolroom \@textmin + \fi + \advance \@reqcolroom \ht\@currbox + \ifdim \@colroom>\@reqcolroom + \@flsetnum \@colnum + \ifnum \@colnum>\z@ + \@bitor\@currtype\@deferlist +% \end{macrocode} +% We need to defer the float also if its width +% doesn't fit. +% \changes{v1.1d}{2000/09/24}{FMi: test for wide float was +% in wrong place} +% \begin{macrocode} + \@testwrongwidth\@currbox +% \end{macrocode} +% +% \begin{macrocode} + \if@test + \else + \@bitor\@currtype\@botlist + \if@test + \@addtobot + \else + \ifodd \count\@currbox + \advance \@reqcolroom \intextsep + \ifdim \@colroom>\@reqcolroom + \global \advance \@colnum \m@ne + \global \advance \@textfloatsheight \ht\@currbox + \global \advance \@textfloatsheight 2\intextsep + \@cons \@midlist \@currbox + \if@nobreak + \nobreak + \@nobreakfalse + \everypar{}% + \else + \addpenalty \interlinepenalty + \fi + \vskip \intextsep + \box\@currbox + \penalty\interlinepenalty + \vskip\intextsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty \z@ + \@inserttrue + \fi + \fi + \if@insert + \else + \@addtotoporbot + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \if@insert + \else + \@resethfps + \@cons\@deferlist\@currbox + \fi +} +% \end{macrocode} +% +% \begin{macrocode} +\def\@xtryfc #1{% + \@next\reserved@a\@trylist{}{}% + \@currtype \count #1% + \divide\@currtype\@xxxii + \multiply\@currtype\@xxxii + \@bitor \@currtype \@failedlist + \@testfp #1% +% \end{macrocode} +% +% \begin{macrocode} + \@testwrongwidth #1% +% \end{macrocode} +% +% \begin{macrocode} + \ifdim \ht #1>\@colht + \@testtrue + \fi + \if@test + \@cons\@failedlist #1% + \else + \@ytryfc #1% + \fi} +% \end{macrocode} +% +% \begin{macrocode} +\def\@ztryfc #1{% + \@tempcnta\count #1% + \divide\@tempcnta\@xxxii + \multiply\@tempcnta\@xxxii + \@bitor \@tempcnta {\@failedlist \@flfail}% + \@testfp #1% +% \end{macrocode} +% +% not in fixfloats? +% \begin{macrocode} + \@testwrongwidth #1% +% \end{macrocode} +% +% \begin{macrocode} + \@tempdimb\@tempdima + \advance\@tempdimb\ht #1% + \advance\@tempdimb\@fpsep + \ifdim \@tempdimb >\@colht + \@testtrue + \fi + \if@test + \@cons\@flfail #1% + \else + \@cons\@flsucceed #1% + \@tempdima\@tempdimb + \fi} +% \end{macrocode} +% +% +% +% +% +% +% \subsection{\texttt{\textbackslash @} discards spaces when moving +% (pr3039)} +% +% \begin{macro}{\@} +% Ensure that |\@m| can't eat spaces. Alternative would be to make +% |\@| robust but that takes more space. +% \begin{macrocode} +\def\@{\spacefactor\@m{}} +% \end{macrocode} +% \end{macro} +% +% +% \subsection{\texttt{\textbackslash setlength} produces error if +% used with registers like \texttt{\textbackslash dimen0} (pr/3066)} +% +% \begin{macro}{\setlength} +% Add space after register (|#1|) but only if this is still the +% original definition. When, for example, \Lpack{calc} was already +% loaded this wouldn't be a good idea any more. +% \changes{v1.0c}{2000/09/21}{Don't change if definition was +% modified already} +% \begin{macrocode} +\def\@tempa#1#2{#1#2\relax} +\ifx\setlength\@tempa + \def\setlength#1#2{#1 #2\relax} +\fi +% \end{macrocode} +% \end{macro} +% +% +% \subsection{\texttt{\textbackslash addpenalty} ruins flush-bottom +% (pr/3073)} +% +% \begin{macro}{\addpenalty} +% Fix provided by Donald (though the original fix was not good enough). +% \begin{macrocode} +\def\addpenalty#1{% + \ifvmode + \if@minipage + \else + \if@nobreak + \else + \ifdim\lastskip=\z@ + \penalty#1\relax + \else + \@tempskipb\lastskip + \advance \@tempskipb + \ifdim\prevdepth>\maxdepth\maxdepth\else +% \end{macrocode} +% If |\prevdepth| is -1000pt due to |\nointerlineskip| we better +% not add it! +% \changes{v1.0c}{2000/09/21}{Don't add \cs{prevdepth} if it is a +% senile value!} +% \begin{macrocode} + \ifdim \prevdepth = -\@m\p@ \z@ \else \prevdepth \fi + \fi + \vskip -\@tempskipb + \penalty#1% + \vskip\@tempskipb + \fi + \fi + \fi + \else + \@noitemerr + \fi} +% \end{macrocode} +% \end{macro} +% +% +% +% \subsection{\texttt{\textbackslash fnsymbol} should use text symbols +% if possible (pr/3400)} +% +% \begin{macrocode} +\DeclareRobustCommand{\@fnsymbol}[1]{% + \ifmmode + \ifcase#1\or *\or\dagger\or \ddagger\or + \mathsection\or \mathparagraph\or \|\or **\or + \dagger\dagger + \or \ddagger\ddagger \else\@ctrerr\fi + \else + \ifcase#1\or \textasteriskcentered\or \textdagger\or + \textdaggerdbl\or \textsection\or \textparagraph\or + \textbardbl\or \textasteriskcentered\textasteriskcentered\or + \textdagger\textdagger\or \textdaggerdbl\textdaggerdbl + \else\@ctrerr\fi + \fi} +% \end{macrocode} +% +% \subsection{No hyphenation in first word after float environment(pr/3498)} +% +% Fix suggested by Donald Arseneau. +% \changes{v1.1g}{2003/09/19}{Fix for \cs{@esphack} (pr/3498)} +% \changes{v1.1h}{2004/02/13}{Fix for \cs{@Esphack} (pr/3498)} +% \begin{macrocode} +\def\@esphack{% + \relax + \ifhmode + \spacefactor\@savsf + \ifdim\@savsk>\z@ + \nobreak \hskip\z@skip % <------ + \ignorespaces + \fi + \fi} +% \end{macrocode} +% +% \begin{macrocode} +\def\@Esphack{% + \relax + \ifhmode + \spacefactor\@savsf + \ifdim\@savsk>\z@ + \nobreak \hskip\z@skip % <------ + \@ignoretrue + \ignorespaces + \fi + \fi} +% \end{macrocode} +% +% +% \subsection{Allowing \texttt{\textbackslash emph} to produce small +% caps, etc} +% +% \changes{v1.1g}{2003/09/19}{Allow \cs{emph} to produce small caps} +% \begin{macrocode} +\DeclareRobustCommand\em + {\@nomath\em \ifdim \fontdimen\@ne\font >\z@ + \eminnershape \else \itshape \fi} +\def\eminnershape{\upshape} +% \end{macrocode} +% +% \begin{macrocode} +%</fixltx2e> +% \end{macrocode} +% +% \subsection{Using EC fonts (T1 encoding) makes my documents look +% bl**dy horrible} +% +% \subsubsection{Preliminaries} +% The \LaTeX{} kernel does not declare the font encoding TS1. +% However, we are going to set up font definitions for this encoding, +% so we have to declare it now. +% \begin{macrocode} +%<*fix-cm> +\input{ts1enc.def} +% \end{macrocode} +% +% In case the package is loaded in the preamble, any of the CM fonts may +% have been used already and cannot be redefined. Yet we try to +% intercept at least the problem that is most likely to occur, i.e., +% a hidden \cmd{\normalfont}. Most of the standard definitions +% are ok, but those for T1 encoding and 10.95\,pt need to be removed: +% \begin{macrocode} +\expandafter \let \csname T1/cmr/m/n/10.95\endcsname \relax +\expandafter \let \csname T1/cmss/m/n/10.95\endcsname \relax +\expandafter \let \csname T1/cmtt/m/n/10.95\endcsname \relax +\expandafter \let \csname T1/cmvtt/m/n/10.95\endcsname \relax +% \end{macrocode} +% +% \Lpack{fix-cm} may still fail, if the EC fonts are preloaded in the +% \LaTeX{} format file. This situation is, however, very unlikely and could occur +% only with a customized format. +% +% The remainder of the package is enclosed in a group, where the catcodes +% are guaranteed to be appropriate for the processing of font definitions. +% \begin{macrocode} +\begingroup +\nfss@catcodes +% \end{macrocode} +% +% \subsubsection{T1 encoding} +% +% \paragraph{CM Roman} +% \begin{macrocode} +\DeclareFontFamily{T1}{cmr}{} +\DeclareFontShape{T1}{cmr}{m}{n}{ + <-6> ecrm0500 + <6-7> ecrm0600 + <7-8> ecrm0700 + <8-9> ecrm0800 + <9-10> ecrm0900 + <10-12> ecrm1000 + <12-17> ecrm1200 + <17-> ecrm1728 + }{} +\DeclareFontShape{T1}{cmr}{m}{sl}{ + <-6> ecsl0500 + <6-7> ecsl0600 + <7-8> ecsl0700 + <8-9> ecsl0800 + <9-10> ecsl0900 + <10-12> ecsl1000 + <12-17> ecsl1200 + <17-> ecsl1728 + }{} +\DeclareFontShape{T1}{cmr}{m}{it}{ + <-8> ecti0700 + <8-9> ecti0800 + <9-10> ecti0900 + <10-12> ecti1000 + <12-17> ecti1200 + <17-> ecti1728 + }{} +\DeclareFontShape{T1}{cmr}{m}{sc}{ + <-6> eccc0500 + <6-7> eccc0600 + <7-8> eccc0700 + <8-9> eccc0800 + <9-10> eccc0900 + <10-12> eccc1000 + <12-17> eccc1200 + <17-> eccc1728 + }{} +\DeclareFontShape{T1}{cmr}{m}{ui}{ + <-8> ecui0700 + <8-9> ecui0800 + <9-10> ecui0900 + <10-12> ecui1000 + <12-17> ecui1200 + <17-> ecui1728 + }{} +\DeclareFontShape{T1}{cmr}{b}{n}{ + <-6> ecrb0500 + <6-7> ecrb0600 + <7-8> ecrb0700 + <8-9> ecrb0800 + <9-10> ecrb0900 + <10-12> ecrb1000 + <12-17> ecrb1200 + <17-> ecrb1728 + }{} +\DeclareFontShape{T1}{cmr}{bx}{n}{ + <-6> ecbx0500 + <6-7> ecbx0600 + <7-8> ecbx0700 + <8-9> ecbx0800 + <9-10> ecbx0900 + <10-12> ecbx1000 + <12-> ecbx1200 + }{} +\DeclareFontShape{T1}{cmr}{bx}{sl}{ + <-6> ecbl0500 + <6-7> ecbl0600 + <7-8> ecbl0700 + <8-9> ecbl0800 + <9-10> ecbl0900 + <10-12> ecbl1000 + <12-> ecbl1200 + }{} +\DeclareFontShape{T1}{cmr}{bx}{it}{ + <-8> ecbi0700 + <8-9> ecbi0800 + <9-10> ecbi0900 + <10-12> ecbi1000 + <12-> ecbi1200 + }{} +\DeclareFontShape{T1}{cmr}{bx}{sc}{ + <-6> ecxc0500 + <6-7> ecxc0600 + <7-8> ecxc0700 + <8-9> ecxc0800 + <9-10> ecxc0900 + <10-12> ecxc1000 + <12-> ecxc1200 + }{} +% +% \end{macrocode} +% +% \paragraph{CM Sans} +% \begin{macrocode} +\DeclareFontFamily{T1}{cmss}{} +\DeclareFontShape{T1}{cmss}{m}{n}{ + <-9> ecss0800 + <9-10> ecss0900 + <10-12> ecss1000 + <12-17> ecss1200 + <17-> ecss1728 + }{} +\DeclareFontShape{T1}{cmss}{m}{sl}{ + <-9> ecsi0800 + <9-10> ecsi0900 + <10-12> ecsi1000 + <12-17> ecsi1200 + <17-> ecsi1728 + }{} +\DeclareFontShape{T1}{cmss}{m}{it} + {<->ssub*cmss/m/sl}{} +\DeclareFontShape{T1}{cmss}{m}{sc} + {<->sub*cmr/m/sc}{} +\DeclareFontShape{T1}{cmss}{sbc}{n}{ + <-> ecssdc10 + }{} +\DeclareFontShape{T1}{cmss}{bx}{n}{ + <-10> ecsx0900 + <10-> ecsx1000 + }{} +\DeclareFontShape{T1}{cmss}{bx}{sl}{ + <-10> ecso0900 + <10-> ecso1000 + }{} +\DeclareFontShape{T1}{cmss}{bx}{it} + {<->ssub*cmss/bx/sl}{} +% \end{macrocode} +% The following substitutions are not provided in the default +% \file{.fd} files. I have included them, so that you can +% easily use the EC fonts with the default bold series being +% \file{b} rather than \file{bx}. +% \begin{macrocode} +\DeclareFontShape{T1}{cmss}{b}{n} + {<->ssub*cmss/bx/n}{} +\DeclareFontShape{T1}{cmss}{b}{sl} + {<->ssub*cmss/bx/sl}{} +\DeclareFontShape{T1}{cmss}{b}{it} + {<->ssub*cmss/bx/sl}{} +% \end{macrocode} +% +% \paragraph{CM Typewriter} +% \begin{macrocode} +\DeclareFontFamily{T1}{cmtt}{\hyphenchar \font\m@ne} +\DeclareFontShape{T1}{cmtt}{m}{n}{ + <-9> ectt0800 + <9-10> ectt0900 + <10-12> ectt1000 + <12-17> ectt1200 + <17-> ectt1728 + }{} +\DeclareFontShape{T1}{cmtt}{m}{it}{ + <-9> ecit0800 + <9-10> ecit0900 + <10-12> ecit1000 + <12-17> ecit1200 + <17-> ecit1728 + }{} +\DeclareFontShape{T1}{cmtt}{m}{sl}{ + <-9> ecst0800 + <9-10> ecst0900 + <10-12> ecst1000 + <12-17> ecst1200 + <17-> ecst1728 + }{} +\DeclareFontShape{T1}{cmtt}{m}{sc}{ + <-9> ectc0800 + <9-10> ectc0900 + <10-12> ectc1000 + <12-17> ectc1200 + <17-> ectc1728 + }{} +\DeclareFontShape{T1}{cmtt}{bx}{n} + {<->sub * cmtt/m/n}{} +\DeclareFontShape{T1}{cmtt}{bx}{it} + {<->sub * cmtt/m/it}{} +\DeclareFontShape{T1}{cmtt}{bx}{sl} + {<->sub * cmtt/m/sl}{} +% \end{macrocode} +% Substitutions not provided in the default \file{.fd} files: +% \begin{macrocode} +\DeclareFontShape{T1}{cmtt}{b}{n} + {<->sub * cmtt/m/n}{} +\DeclareFontShape{T1}{cmtt}{b}{it} + {<->sub * cmtt/m/it}{} +\DeclareFontShape{T1}{cmtt}{b}{sl} + {<->sub * cmtt/m/sl}{} +% \end{macrocode} +% +% \paragraph{CM Typewiter (var.)} +% \begin{macrocode} +\DeclareFontFamily{T1}{cmvtt}{} +\DeclareFontShape{T1}{cmvtt}{m}{n}{ + <-9> ecvt0800 + <9-10> ecvt0900 + <10-12> ecvt1000 + <12-17> ecvt1200 + <17-> ecvt1728 + }{} +\DeclareFontShape{T1}{cmvtt}{m}{it}{ + <-9> ecvi0800 + <9-10> ecvi0900 + <10-12> ecvi1000 + <12-17> ecvi1200 + <17-> ecvi1728 + }{} +% \end{macrocode} +% +% \subsubsection{TS1 encoding} +% +% \paragraph{CM Roman} +% \begin{macrocode} +\DeclareFontFamily{TS1}{cmr}{\hyphenchar\font\m@ne} +\DeclareFontShape{TS1}{cmr}{m}{n}{ + <-6> tcrm0500 + <6-7> tcrm0600 + <7-8> tcrm0700 + <8-9> tcrm0800 + <9-10> tcrm0900 + <10-12> tcrm1000 + <12-17> tcrm1200 + <17-> tcrm1728 + }{} +\DeclareFontShape{TS1}{cmr}{m}{sl}{ + <-6> tcsl0500 + <6-7> tcsl0600 + <7-8> tcsl0700 + <8-9> tcsl0800 + <9-10> tcsl0900 + <10-12> tcsl1000 + <12-17> tcsl1200 + <17-> tcsl1728 + }{} +\DeclareFontShape{TS1}{cmr}{m}{it}{ + <-8> tcti0700 + <8-9> tcti0800 + <9-10> tcti0900 + <10-12> tcti1000 + <12-17> tcti1200 + <17-> tcti1728 + }{} +\DeclareFontShape{TS1}{cmr}{m}{ui}{ + <-8> tcui0700 + <8-9> tcui0800 + <9-10> tcui0900 + <10-12> tcui1000 + <12-17> tcui1200 + <17-> tcui1728 + }{} +\DeclareFontShape{TS1}{cmr}{b}{n}{ + <-6> tcrb0500 + <6-7> tcrb0600 + <7-8> tcrb0700 + <8-9> tcrb0800 + <9-10> tcrb0900 + <10-12> tcrb1000 + <12-17> tcrb1200 + <17-> tcrb1728 + }{} +\DeclareFontShape{TS1}{cmr}{bx}{n}{ + <-6> tcbx0500 + <6-7> tcbx0600 + <7-8> tcbx0700 + <8-9> tcbx0800 + <9-10> tcbx0900 + <10-12> tcbx1000 + <12-> tcbx1200 + }{} +\DeclareFontShape{TS1}{cmr}{bx}{sl}{ + <-6> tcbl0500 + <6-7> tcbl0600 + <7-8> tcbl0700 + <8-9> tcbl0800 + <9-10> tcbl0900 + <10-12> tcbl1000 + <12-> tcbl1200 + }{} +\DeclareFontShape{TS1}{cmr}{bx}{it}{ + <-8> tcbi0700 + <8-9> tcbi0800 + <9-10> tcbi0900 + <10-12> tcbi1000 + <12-> tcbi1200 + }{} +% \end{macrocode} +% +% \paragraph{CM Sans} +% \begin{macrocode} +\DeclareFontFamily{TS1}{cmss}{\hyphenchar\font\m@ne} +\DeclareFontShape{TS1}{cmss}{m}{n}{ + <-9> tcss0800 + <9-10> tcss0900 + <10-12> tcss1000 + <12-17> tcss1200 + <17-> tcss1728 + }{} +\DeclareFontShape{TS1}{cmss}{m}{it} + {<->ssub*cmss/m/sl}{} +\DeclareFontShape{TS1}{cmss}{m}{sl}{ + <-9> tcsi0800 + <9-10> tcsi0900 + <10-12> tcsi1000 + <12-17> tcsi1200 + <17-> tcsi1728 + }{} +\DeclareFontShape{TS1}{cmss}{sbc}{n}{ + <-> tcssdc10 + }{} +\DeclareFontShape{TS1}{cmss}{bx}{n}{ + <-10> tcsx0900 + <10-> tcsx1000 + }{} +\DeclareFontShape{TS1}{cmss}{bx}{sl}{ + <-10> tcso0900 + <10-> tcso1000 + }{} +\DeclareFontShape{TS1}{cmss}{bx}{it} + {<->ssub*cmss/bx/sl}{} +% \end{macrocode} +% Substitutions not provided in the default \file{.fd} files: +% \begin{macrocode} +\DeclareFontShape{TS1}{cmss}{b}{n} + {<->ssub*cmss/bx/n}{} +\DeclareFontShape{TS1}{cmss}{b}{sl} + {<->ssub*cmss/bx/sl}{} +\DeclareFontShape{TS1}{cmss}{b}{it} + {<->ssub*cmss/bx/sl}{} +% \end{macrocode} +% +% \paragraph{CM Typewriter} +% \begin{macrocode} +\DeclareFontFamily{TS1}{cmtt}{\hyphenchar \font\m@ne} +\DeclareFontShape{TS1}{cmtt}{m}{n}{ + <-9> tctt0800 + <9-10> tctt0900 + <10-12> tctt1000 + <12-17> tctt1200 + <17-> tctt1728 + }{} +\DeclareFontShape{TS1}{cmtt}{m}{it}{ + <-9> tcit0800 + <9-10> tcit0900 + <10-12> tcit1000 + <12-17> tcit1200 + <17-> tcit1728 + }{} +\DeclareFontShape{TS1}{cmtt}{m}{sl}{ + <-9> tcst0800 + <9-10> tcst0900 + <10-12> tcst1000 + <12-17> tcst1200 + <17-> tcst1728 + }{} +\DeclareFontShape{TS1}{cmtt}{bx}{n} + {<->sub * cmtt/m/n}{} +\DeclareFontShape{TS1}{cmtt}{bx}{it} + {<->sub * cmtt/m/it}{} +\DeclareFontShape{TS1}{cmtt}{bx}{sl} + {<->sub * cmtt/m/sl}{} +% \end{macrocode} +% Substitutions not provided in the default \file{.fd} files: +% \begin{macrocode} +\DeclareFontShape{TS1}{cmtt}{b}{n} + {<->sub * cmtt/m/n}{} +\DeclareFontShape{TS1}{cmtt}{b}{it} + {<->sub * cmtt/m/it}{} +\DeclareFontShape{TS1}{cmtt}{b}{sl} + {<->sub * cmtt/m/sl}{} +% \end{macrocode} +% +% \paragraph{CM Typewriter (var.)} +% \begin{macrocode} +\DeclareFontFamily{TS1}{cmvtt}{} +\DeclareFontShape{TS1}{cmvtt}{m}{n}{ + <-9> tcvt0800 + <9-10> tcvt0900 + <10-12> tcvt1000 + <12-17> tcvt1200 + <17-> tcvi1728 + }{} +\DeclareFontShape{TS1}{cmvtt}{m}{it}{ + <-9> tcvi0800 + <9-10> tcvi0900 + <10-12> tcvi1000 + <12-17> tcvi1200 + <17-> tcvi1728 + }{} +% \end{macrocode} +% +% \subsubsection{OT1 encoding} +% +% \paragraph{CM Roman} +% \begin{macrocode} +\DeclareFontFamily{OT1}{cmr}{\hyphenchar\font45 } +\DeclareFontShape{OT1}{cmr}{m}{n}{ + <-6> cmr5 + <6-7> cmr6 + <7-8> cmr7 + <8-9> cmr8 + <9-10> cmr9 + <10-12> cmr10 + <12-17> cmr12 + <17-> cmr17 + }{} +\DeclareFontShape{OT1}{cmr}{m}{sl}{ + <-9> cmsl8 + <9-10> cmsl9 + <10-12> cmsl10 + <12-> cmsl12 + }{} +\DeclareFontShape{OT1}{cmr}{m}{it}{ + <-8> cmti7 + <8-9> cmti8 + <9-10> cmti9 + <10-12> cmti10 + <12-> cmti12 + }{} +\DeclareFontShape{OT1}{cmr}{m}{sc}{ + <-> cmcsc10 + }{} +\DeclareFontShape{OT1}{cmr}{m}{ui}{ + <-> cmu10 + }{} +\DeclareFontShape{OT1}{cmr}{b}{n}{ + <-> cmb10 + }{} +\DeclareFontShape{OT1}{cmr}{bx}{n}{ + <-6> cmbx5 + <6-7> cmbx6 + <7-8> cmbx7 + <8-9> cmbx8 + <9-10> cmbx9 + <10-12> cmbx10 + <12-> cmbx12 + }{} +\DeclareFontShape{OT1}{cmr}{bx}{sl}{ + <-> cmbxsl10 + }{} +\DeclareFontShape{OT1}{cmr}{bx}{it}{ + <-> cmbxti10 + }{} +\DeclareFontShape{OT1}{cmr}{bx}{ui} + {<->sub*cmr/m/ui}{} +% \end{macrocode} +% +% \paragraph{CM Sans} +% \begin{macrocode} +\DeclareFontFamily{OT1}{cmss}{\hyphenchar\font45 } +\DeclareFontShape{OT1}{cmss}{m}{n}{ + <-9> cmss8 + <9-10> cmss9 + <10-12> cmss10 + <12-17> cmss12 + <17-> cmss17 + }{} +\DeclareFontShape{OT1}{cmss}{m}{it} + {<->sub*cmss/m/sl}{} +\DeclareFontShape{OT1}{cmss}{m}{sl}{ + <-9> cmssi8 + <9-10> cmssi9 + <10-12> cmssi10 + <12-17> cmssi12 + <17-> cmssi17 + }{} +\DeclareFontShape{OT1}{cmss}{m}{sc} + {<->sub*cmr/m/sc}{} +\DeclareFontShape{OT1}{cmss}{m}{ui} + {<->sub*cmr/m/ui}{} +\DeclareFontShape{OT1}{cmss}{sbc}{n}{ + <-> cmssdc10 + }{} +\DeclareFontShape{OT1}{cmss}{bx}{n}{ + <-> cmssbx10 + }{} +\DeclareFontShape{OT1}{cmss}{bx}{ui} + {<->sub*cmr/bx/ui}{} +% \end{macrocode} +% +% \paragraph{CM Typewriter} +% \begin{macrocode} +\DeclareFontFamily{OT1}{cmtt}{\hyphenchar \font\m@ne} +\DeclareFontShape{OT1}{cmtt}{m}{n}{ + <-9> cmtt8 + <9-10> cmtt9 + <10-12> cmtt10 + <12-> cmtt12 + }{} +\DeclareFontShape{OT1}{cmtt}{m}{it}{ + <-> cmitt10 + }{} +\DeclareFontShape{OT1}{cmtt}{m}{sl}{ + <-> cmsltt10 + }{} +\DeclareFontShape{OT1}{cmtt}{m}{sc}{ + <-> cmtcsc10 + }{} +\DeclareFontShape{OT1}{cmtt}{m}{ui} + {<->ssub*cmtt/m/it}{} +\DeclareFontShape{OT1}{cmtt}{bx}{n} + {<->ssub*cmtt/m/n}{} +\DeclareFontShape{OT1}{cmtt}{bx}{it} + {<->ssub*cmtt/m/it}{} +\DeclareFontShape{OT1}{cmtt}{bx}{ui} + {<->ssub*cmtt/m/it}{} +% \end{macrocode} +% +% \paragraph{CM Typewriter (var.)} +% \begin{macrocode} +\DeclareFontFamily{OT1}{cmvtt}{\hyphenchar\font45 } +\DeclareFontShape{OT1}{cmvtt}{m}{n}{ + <-> cmvtt10 + }{} +\DeclareFontShape{OT1}{cmvtt}{m}{it}{ + <-> cmvtti10 + }{} +% \end{macrocode} +% +% \subsubsection{OML and OMS encoded math fonts} +% \begin{macrocode} +\DeclareFontFamily{OML}{cmm}{\skewchar\font127 } +\DeclareFontShape{OML}{cmm}{m}{it}{ + <-6> cmmi5 + <6-7> cmmi6 + <7-8> cmmi7 + <8-9> cmmi8 + <9-10> cmmi9 + <10-12> cmmi10 + <12-> cmmi12 + }{} +\DeclareFontShape{OML}{cmm}{b}{it}{<-6>cmmib5<6-8>cmmib7<8->cmmib10}{} +\DeclareFontShape{OML}{cmm}{bx}{it} + {<->ssub*cmm/b/it}{} +% \end{macrocode} +% \begin{macrocode} +\DeclareFontFamily{OMS}{cmsy}{\skewchar\font48 } +\DeclareFontShape{OMS}{cmsy}{m}{n}{ + <-6> cmsy5 + <6-7> cmsy6 + <7-8> cmsy7 + <8-9> cmsy8 + <9-10> cmsy9 + <10-> cmsy10 + }{} +\DeclareFontShape{OMS}{cmsy}{b}{n}{<-6>cmbsy5<6-8>cmbsy7<8->cmbsy10}{} +% \end{macrocode} +% +% \subsubsection{\LaTeX{} symbols} +% \begin{macrocode} +\DeclareFontFamily{U}{lasy}{} +\DeclareFontShape{U}{lasy}{m}{n}{ + <-6> lasy5 + <6-7> lasy6 + <7-8> lasy7 + <8-9> lasy8 + <9-10> lasy9 + <10-> lasy10 + }{} +\DeclareFontShape{U}{lasy}{b}{n}{ + <-10> ssub * lasy/m/n + <10-> lasyb10 + }{} +% \end{macrocode} +% \begin{macrocode} +\endgroup +%</fix-cm> +% \end{macrocode} +% +% +% \Finale +% +\endinput |