% DROPDOC.TEX -- 13-09-1993 % \documentstyle[dropcaps]{ttn2n1a} \begin{document} \Section{{\huge {\tt dropcaps.sty}}\\ a style file for dropping caps (\fred)} \bigdrop{-10pt}{3}{cmsl10}{I}n a previous issue of \TTN\ (vol. 1, No. 4, 1992), Peter Flynn dedicates a subsection of {\sl Typographer's Inn\/} to the problem of dropped capitals. This is my answer to some of his questions. Basically, I don't start with the capital, but I let the capital's size depend on the chosen design. I wrote a dropped caps macro for use with \LaTeX, and took these design decisions: \begin{itemize} \item First, let the writer choose her favourite design, within certain limitations though, and let the macro do the dirty work: adjusting the cap to the optimal size. \item Let the writer decide how many lines she wants to dropindent. Let her also decide in which font the cap should appear, whether to start the cap {\em at\/} the left margin, or somewhat to the left (into the white space) or to the right (into text direction). Let her decide what she puts into dropped caps: a single character, or even one or more whole words, or without caps at all. \item The limitations: Let the cap's baseline be aligned with the baseline of the lowest of the indenting lines. Let the cap's top line be aligned with the top line of the first of the indenting lines. Don't let the writer mess with this! \end{itemize} \Subsection{Usage} \bigdrop{-10pt}{3}{cmsl10}{M}y {\tt dropcaps.sty} is a \LaTeX\ style file, that defines a macro command \verb+\bigdrop+ that enables you to drop capitals at the beginning of a paragraph. The layout can be controlled in various ways, with four parameters (not optional). For instance, the current paragraph started with\\ [2pt] \verb+\bigdrop{-10pt}{3}{cmsl10}{M}y ...+\\ [2pt] The required parameters are: \begin{enumerate} \item a {\em length}, that denotes the distance from the left margin (to the left or to the right) at which the dropped capital starts, in this case 10pt into the left margin: {\tt -10pt}. \item an integer value, that denotes the number of lines to be indented, in this case {\tt 3} lines. \item the font to be used for the dropped capital, in this case {\tt cmsl10}. \item the character or text to be dropped, in this case a single {\tt M}. \end{enumerate} \Subsection{The messy details} \bigdrop{-10pt}{3}{cmsl10}{W}hen the macro \verb+\bigdrop+ is called (with four parameters), this is what happens. First, a capital "I" is typeset in the current text font and put in a box (\verb+box1+). The desired font height (\verb+\wantedheight+) is then computed from \verb|(n-1)*\baselineskip+\ht1|, where {\tt n} is the number of lines to indent. Then the procedure differs, depending on the choice for DVIPS or not.\\ [8pt] % {\fredfont DVIPS users}\\ % In this case the text to be capitalized, typeset in the chosen font (at scale \verb+1000+), is put in a box (\verb+box0+), with height \verb+\actualheight+ $=$ \verb+\ht0+. Now, the scaling factor for this font can be computed from dividing \verb+\wantedheight+ by \verb+\actualheight+ and multiplying this by \verb+1000+. Because divisions are integer, the heights are first put in count registers, and then, to prevent from rounding errors and overflow, \verb+\wantedheight*10+ is divided by \verb+\actualheight/100+. The outcome of this is the scale at which the chosen font is typeset.\\ [8pt] % {\fredfont non-DVIPS users}\\ % Without DVIPS things are less elegant, for only the standard magsteps are available for scaling fonts\footnote{The \verb+magstep+'s {\tt 0}, {\tt half}, {\tt 1}, {\tt 2}, {\tt 3}, {\tt 4}, and {\tt 5}.}. The text to be capitalized in the chosen font, is first typeset at \verb|\magstep 0| and put in a box (\verb+box0+), with height \verb+\ht0+. If \verb+\wantedheight+ is bigger then \verb+\ht0+, the text is typeset at \verb|\magstephalf|, and put in \verb+box0+ again. If \verb+\wantedheight+ is still bigger then \verb+\ht0+, again the \verb|\magstep| is increased one step, et cetera. This process is repeated until \verb+\wantedheight+ is smaller then \verb+\ht0+.\\ [8pt] % {\fredfont both}\\ % The result of the computation can be observed on the screen and in the {\tt .log} file. Each time a capital is dropped, two lines like\\ [2pt] \verb|*** Needed height: 30.83331pt, Unscaled height: 6.83331pt|\\ \verb|*** cmsl10 scaled 4512 ==> height: 30.83195pt (error: 0.00136pt).|\\ [2pt] appear. This example is from processing this document with {\tt n = 3} and font {\tt cmsl10}. At the end of the computation {\tt box0} contains the text, typeset in the desired font and scaled such that \verb+\ht0+ equals the height of the indenting lines. Then, \verb+\hangindent+ and \verb+\hangafter+ are set according to {\tt box0} and the parameter values: \verb|\hangindent:=\wd0+#1|, and \verb|\hangafter:=-#2|. Precautions are taken for the case that \verb+\dp0+ is not equal to zero\footnote{An extra line is indented, if overlap occurs, the test file {\tt droptest.tex} shows an example of this.}. Finally, in a \LaTeX\ picture environment, the text is placed where we want it. \Subsection{Requirements} \bigdrop{-10pt}{3}{cmsl10}{I}n order to use this style file, a big version of \LaTeX\ is needed, because almost always fonts have to be generated, and already from 4 indenting lines, they tend to become very large. I tested this with em\TeX's \TeX386 (with emx) on a 486DX33 PC, and with em\TeX's b\TeX186 on a AT286 PC. Also needed is a version of {\bf DVIPS} by Tomas Rokicki with {\bf MakeTeXPK} running, so the generation of fonts will be done automatically. For me the recently uploaded {\bf DVIPS 5.518} works great on both machines. All this is necessary because the implemented procedure in this macro automatically leads to non-standard fonts. So, for optimal pleasure, use a big \TeX\ and Rokicki's {\bf DVIPS}. \Subsection{Alternatives} \bigdrop{-10pt}{3}{cmsl10}{O}nly one style file that does something similar is listed in \TeX--index v1.06 by David M. Jones, namely {\tt drop.sty} by David G. Cantor. The latest version is dated 17--02--1988. This style file also defines a macro to drop capitals, but has no possibilities to accept controlling parameters, except for the choice of font. You are not able to choose the desired height by supplying the number of lines to be indented. The dropped capital has a fixed size, namely \verb+\magstep5+, and always two lines are indented. This font height is somewhat smaller than the height of two indenting lines, so the vertical placement of the dropped capital's baseline lies not at the same height as the vertical placement of the baseline of the second indenting line (next to it). The advantage of this is that everyone has this font. \vspace{2cm} \leftline{Fred J. Lauwers ({\sl \fred\/})} \leftline{\tt fred@dutspf.tudelft.nl} \end{document}