% % \iffalse % % The first part is a comment to the reader(s) of `dropping.dtx'. % % dropping.dtx Version 0.12a, June 12, 1997 % (c) 1997-98 by Mats Dahlgren (matsd@sssk.se) % % Please see the information in file `dropping.ins' on how you % may use and (re-)distribute this file. Run LaTeX on the file % `dropping.ins' to get a .sty-file and then on `dropping.dtx' % to obtain instructions. % % This file may NOT be distributed if not accompanied by 'dropping.ins'. % %<*driver> \documentclass[a4paper]{ltxdoc} \usepackage{dropping} \textwidth=150mm \textheight=210mm \topmargin=0mm \oddsidemargin=5mm \evensidemargin=5mm \DocInput{dropping.dtx} % \PrintChanges \end{document} % % \fi % % \CheckSum{286} % % \def\filename{dropping.dtx} % \def\fileversion{1.0} % \def\filedate{1997/07/12}\def\docdate{1998/06/05} % \MakeShortVerb{\|} % \date{\docdate} % \title{\textsf{dropping} -- a \LaTeX{} Macro for Dropping the % First Character(s) of a Paragraph\thanks{This document describes % \textsf{dropping} version % \fileversion , and was last updated \docdate .}} % \author{Mats Dahlgren\footnote{Email:\ \texttt{matsd@sssk.se}\ \ \ % Web:\ \texttt{http://www.homenet.se/matsd/}}} % \begin{document} % \maketitle % \begin{abstract} % This document describes the \textsf{dropping} package, which % defines a command, |\dropping|, to drop the first character(s) of % a paragraph. It is based on Fred~J.\ Lauwers's % \texttt{dropcaps.sty}. In short, \textsf{dropping} is an % automatization of |dropcaps| in that the user does not need to % know the internal name of the font file (the |.tfm|-file) but can % control this via the ordinary \LaTeXe{} commands `|\rmfamily|' % \textit{etc.} % \\ This file and the package:\ % Copyright \copyright\ 1996-1998 by Mats Dahlgren. All rights % reserved. % \end{abstract} % % \section{Introduction} % \textsf{dropping} is a \LaTeX{} package which makes it easy to % start a new paragraph with a dropped letter or letters. The lines % following the dropped letter are indented so no over-writing is to % occur. % % This userguide is also available in \texttt{.pdf}-format % on the internet. It is found from my \LaTeX\ web page: % \texttt{http://www.homenet.se/matsd/latex/} % % \section{Userguide} % \subsection{Requirements} % The file |dropping.sty| must be available in the user's % |TEXINPUTS| directories. % It requires \LaTeXe{} of 1996/12/01 (or newer). % \textsf{dropping} works best with |dvips| and |MakeTeXPK| % installed, although not formally needed. Without these, the % output may not be as good as expected. % % \textsf{dropping} v.\fileversion{} has been tested using % MiK\TeX{} 1.07, including \LaTeXe{} of 1997/06/01 % and \TeX{} 3.14159, under Win95. Only change relative previous % version is a bug/typo fix. % % \subsection{Usage} % The package is included by stating\\ % | \usepackage{dropping}| \\ % In the document preamble. The package recognizes the same % options as the \textsf{graphics} package v.1.0 (1996/05/29) by % D.~P.\ Carlisle and S.~P.~Q.\ Rahtz. Which is used is assumed to % be controlled via the existence of a % |graphics.cfg| file in the \LaTeX{} installation. % % \newpage % \subsection{Commands} % % \DescribeMacro{\dropping} % The command |\dropping| is the main feature of the package. This % command takes two mandatory and one optional argument:\\ % | \dropping[|\textit{len}|]{|\textit{numb}|}{|\textit{text}|}|\\ % The \textit{len} argument is a \LaTeX{} length (with unit) which % states how far from the left margin the dropped text should start. % A positive number corresponds to an indentation rightwards, a % negative number will force the dropped text to start to the left % of the paragraph. The default value is |0pt|, meaning the dropped % text will be aligned with the rest of the paragraph. The % mandatory \textit{numb} argument should be an integer number which % states how many lines tall the dropped text should be. The last % argument, \textit{text}, is the text which should be dropped. % This argument may either be a single letter or several letters % without any formatting information, or the argument may start with % a font-changing command of the type |\rmfamily|. In the former % case, there are no special things to think about, and the dropped % text will be type-set in the document's default font. However, if % a font-changing command is used, there are two things to be aware % of: \textbf{1.} You can only use the font-changing commands % |\rmfamily|, |\sffamily|, |\ttfamily|, |\mdseries|, |\bfseries|, % |\upshape|, |\itshape|, |\slshape|, or |\scshape| (\textit{i.~e.} % \emph{not} the |\text|\textit{xx} commands). \textbf{2.} The % font-changing command(s) must be followed by a pair of braces, |{}|, % and a blank space % for the internal stripping routines to work. Several % font-changing commands may be used in series. Thus, both % |{This}|, |{\bfseries{} this}|, and |{\ttfamily\itshape{} this}| % are examples of valid \textit{text} arguments to |\dropping|. % Note that the construct % |\textit{\dropping[|\textit{len}|]{|\textit{numb}|}{|\textit{text}|}}| % does \emph{not} work properly. % % \DescribeMacro{\bigdrop} % Fred~J.~Lauwers's command |\bigdrop| is also available if the % \textsf{dropping} package is loaded. It has exactly the same % syntax as if \textsf{dropcaps} is loaded, that is:\\ % | \bigdrop{|\textit{len}|}{|\textit{numb}|}{|\textit{font}|}{|\textit{text}|}|\\ % where the arguments \textit{len} and \textit{numb} are exactly the % same as for |\dropping| (in fact, these two arguments are passed % directly from |\dropping| to |\bigdrop|). The \textit{font} % argument is the internal font name to be used for the dropped % text, \textit{i.~e.\ } the |.tfm|-file name (|cmsl10| is an example % of a valid \textit{font} argument). The fourth argument, % \textit{text}, is the text to be dropped (only plain text is valid % here!). For further details, please see the \textsf{dropcaps} % documentation. % % \section{Examples} % % \dropping{3}{\itshape{} This}section gives some simple examples % of the use of \textsf{dropping}. As a first example, this very % paragraph was started by stating the command\linebreak % `|\dropping{3}{\itshape{} This}|' % in the beginning. Notice the braces (`|{}|') and the space before % `This'! % % \dropping[-6pt]{2}{\slshape\sffamily{} I}n addition, this % paragraph gives an example where the optional first argument of % |\dropping| is used. The paragraph was started by % `|\dropping[-6pt]{2}{\slshape\sffamily{} I}n|', and as you % (hopefully!) can see, it works fine to have several font-changing % commands in one |\dropping| command. % % \dropping{4}{T}he third example is an example where the default % document font is being used. By now, you probably have figured % out that this paragraph is started with `|\dropping{4}{T}he|'. For % you to see the full effect of the dropping, there has to be at % least four complete lines in the paragraph, and so this text % with not so much to say the \LaTeX{} user is going on and % on and on and on and on and on\ldots % % \section{Known Problems} % % \begin{itemize} % \item % If |\dropping| is used to start a paragraph which itself % starts close to the bottom of a page, the % dropped text will hang down into the footer and give a rather weird % impression. Avoid this by some (unfortunately manual) % page-breaking. % \item % Really large (more than two lines tall) dropped text is not % very beautiful unless the |graphics.cfg| files specifies |dvips| % as the default graphics' driver (or an option which in turn % calls the |dvips| option). % \end{itemize} % % \section{Acknowledgements} % % First and most of all, I want to acknowledge Fred~J.\ Lauwers for % providing the \textsf{dropcaps} package and letting me use the % code thereof (according to the copyright notice in the % |dropcaps.sty| file; see also |dropping.ins|). % \textsf{dropping} would of course not be % what it is today without Fred's work. (Unfortunately, I do not % have any current e-mail address of Fred's.) % % I also want to thank Donald Arsenau (|asnd@reg.triumf.ca|) % and Robin Fairbairns\linebreak (|Robin.Fairbairns@cl.cam.ac.uk|) for % answering my question to |comp.text.tex| about conditional % stripping of strings, as well as Piet van Oostrum (|piet@cs.ruu.nl|) % and Alain Ketterlin (|alain@ia1.u-strasbg.fr|) for % answering my ``splitting of a string'' question. % % \section{Sending a Bug Report} % \textsf{dropping} is likely to contain bugs. Although, I do % not consider this to be a ``supported'' package, % reports of bugs in the package are most welcome. % Before filing a bug report, % please take the following actions: % \begin{enumerate} % \item Ensure your problem is not due to your own input file, % package(s), or class(es); % \item Ensure your problem is not covered in the section % ``Known Problems'' above; % \item Try to locate the problem by writing a minimal % \LaTeX{} input file which reproduces the problem. % Include the command\\ % | \setcounter{errorcontextlines}{999}|\\ % in your input; % \item Run your file through \LaTeX ; % \item Send a description of your problem, the input file % and the log file via e-mail to:\\ % \hspace*{5mm} \texttt{matsd@sssk.se}. % \end{enumerate}\bigskip % % \noindent{\itshape Enjoy your % \LaTeX!\raisebox{-\baselineskip}{mats d.}} % \StopEventually{\vfill\hfill\scriptsize Copyright \copyright % 1997-98 by Mats Dahlgren} % \newpage % % \section{The Code} % For the interested reader(s), here is a short description % of the code. % \iffalse %<*paketkod> % \fi % First, the package is to identify itself: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesPackage{dropping}[1997/06/12 v.0.12] % \end{macrocode} % Then, some counters, dimensions and a boolean are set: % \begin{macrocode} \newcount\bigscale \newcount\down \newdimen\saveunitlength \newdimen\wantedheight \newif\ifstrtcmmnd \strtcmmndfalse % \end{macrocode} % % The differences between the different graphics' drivers are taken % care of by means of options to the package. First, the |dvips| % option is declared (code greatefully taken from |dropcaps.sty|). % \begin{macrocode} \DeclareOption{dvips}{% \newcount\wantedcount \newcount\actualcount% \newdimen\actualheight% \def\findsize#1#2{% \bigscale=1000% \font\BIG=#1 scaled \bigscale% \setbox0=\hbox{\BIG #2\/}% \actualheight=\ht0% \wantedcount=\wantedheight \actualcount=\actualheight% \advance\actualcount by 50% \divide\actualcount by 100% \multiply\wantedcount by 10% \divide\wantedcount by \actualcount% \font\BIG=#1 scaled \wantedcount% \setbox0=\hbox{\BIG #2\/}% \bigscale=\wantedcount}} % \end{macrocode} % Next, the ``non-|dvips|-users'{}'' code from |dropcaps.sty| is % declared to be an option, ``|other|'': % \begin{macrocode} \DeclareOption{other}{% \def\nextmagstep#1#2#3{% \bigscale=#3% \font\BIG=#1 scaled \bigscale% \setbox0=\hbox{\BIG #2\/}}% \def\findsize#1#2{% \nextmagstep{#1}{#2}{\magstep0}% \ifdim\ht0<\wantedheight% \nextmagstep{#1}{#2}{\magstephalf}% \ifdim\ht0<\wantedheight% \nextmagstep{#1}{#2}{\magstep1}% \ifdim\ht0<\wantedheight% \nextmagstep{#1}{#2}{\magstep2}% \ifdim\ht0<\wantedheight% \nextmagstep{#1}{#2}{\magstep3}% \ifdim\ht0<\wantedheight% \nextmagstep{#1}{#2}{\magstep4}% \ifdim\ht0<\wantedheight% \nextmagstep{#1}{#2}{\magstep5}% \fi\fi\fi\fi\fi\fi}} % \end{macrocode} % Following this, the various other graphics' drivers as recognized % by the \textsf{graphics} package are declared. The |xdvi| option % just calls |dvips| (as in \textsf{graphics}), and so does the % |oztex| option\footnote{Thanks to Johan Fr\"oberg % (\texttt{emgion@physchem.kth.se}) for testing \textsf{dropping} on % his Macintosh.} (a recent release of Oz\TeX{} contains a % |graphics.cfg| which calls the |dvips|-option of % \textsf{graphics}). All other options % call the |other| option. \textbf{Note} if some user(s) find that % an option should use |dvips| instead of |other|, please feel free % to change in your local |dropping.sty| file as long as you also % inform me (via e-mail to |matsd@sssk.se|) of the % appropriate change! % \begin{macrocode} \DeclareOption{xdvi}{\ExecuteOptions{dvips}} \DeclareOption{dvipsone}{\ExecuteOptions{other}} \DeclareOption{dviwindo}{\ExecuteOptions{other}} \DeclareOption{emtex}{\ExecuteOptions{other}} \DeclareOption{dviwin}{\ExecuteOptions{other}} \DeclareOption{oztex}{\ExecuteOptions{dvips}} \DeclareOption{textures}{\ExecuteOptions{other}} \DeclareOption{pctexps}{\ExecuteOptions{other}} \DeclareOption{pctexwin}{\ExecuteOptions{other}} \DeclareOption{pctexhp}{\ExecuteOptions{other}} \DeclareOption{dvi2ps}{\ExecuteOptions{other}} \DeclareOption{dvialw}{\ExecuteOptions{other}} \DeclareOption{dvilaser}{\ExecuteOptions{other}} \DeclareOption{dvitops}{\ExecuteOptions{other}} \DeclareOption{psprint}{\ExecuteOptions{other}} \DeclareOption{pubps}{\ExecuteOptions{other}} \DeclareOption{ln}{\ExecuteOptions{other}} \DeclareOption*{\ExecuteOptions{other}} % \end{macrocode} % Now it is time to load the |graphics.cfg| file, and if it is not % found send a warning to the user and assume |dvips| is % around\ldots{} Then in order to free some memory, any remaining % option is processed. % \begin{macrocode} \InputIfFileExists{graphics.cfg}{}{% \PackageWarningNoLine{dropping}{% You have no `graphics.cfg' file installed.\MessageBreak I will assume you are using `dvips'} \ExecuteOptions{dvips}} \ProcessOptions % \end{macrocode} % % \DescribeMacro{\bigdrop} % Next follows Fred~J.\ Lauwers's original command |\bigdrop| except % that the |\typeout| statements have been removed. % \begin{macrocode} \def\bigdrop#1#2#3#4{% \saveunitlength=\unitlength% \unitlength=\baselineskip% \setbox1=\hbox{\the\font I}% \wantedheight=#2\baselineskip \advance\wantedheight by -\baselineskip% \advance\wantedheight by \ht1% \findsize{#3}{#4}% \hangindent=\wd0 \advance\hangindent by #1% \hangafter=-#2% \ifdim\dp0>0.25\baselineskip% \loop\ifdim\dp0>\baselineskip \advance\baselineskip by \baselineskip \advance\hangafter by -1 \repeat \advance\hangafter by -1 \baselineskip=\unitlength \fi% \noindent% \down=-#2 \advance\down by 1% \begin{picture}(0,0)% \put(0,\down){\makebox(0,0)[br]{\box0}}% \end{picture}% \unitlength=\saveunitlength} % \end{macrocode} % Now we define some internal macros to be able to automize the use % of |\bigdrop|. (Thanks to Donald Arsenau, Robin Fairbairns, Piet van % Oostrum, and Alain Ketterlin!) % \begin{macrocode} \def\spltatspc#1 #2\spltatspc{#1} \def\spltstrng#1{\expandafter\@split#1\end} \def\@split#1 #2\end{\def\strngn{#1}\def\strngtw{#2}} \def\isit#1{\expandafter\@isit\string#1\@null} \def\@isit#1#2\@null{% \ifnum`#1=`\\ \global\strtcmmndtrue \else \global\strtcmmndfalse \fi } % \end{macrocode} % % \DescribeMacro{\dropping} % Finally, the macro |\dropping| is defined: % \begin{macrocode} \newcommand{\dropping}[3][0pt]{% \get@external@font% \edef\n@vf@nt{\expandafter\spltatspc\external@font \spltatspc}% \setbox8=\hbox{#3\get@external@font% \global\let\external@font@export\external@font% \edef\n@vf@ntb@x{\expandafter\spltatspc\external@font \spltatspc}% \global\let\n@vf@nt\n@vf@ntb@x}% \let\external@font\external@font@export% \edef\xprt@rgtr{\expandafter\spltatspc\external@font\expandafter{} \spltatspc} \def\spltslsk{#3}% \isit{#3}% \ifstrtcmmnd \spltstrng\spltslsk% \let\xprt@rgfr\strngtw \else \def\xprt@rgfr{#3} \fi \protect\bigdrop{#1}{#2}{\xprt@rgtr}{\xprt@rgfr}% } % \end{macrocode} % This brings us to the end of \textsf{dropping}. Hope you'll % enjoy it! % \iffalse % % \fi % \Finale % \endinput