diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex209/contrib/textfit |
Initial commit
Diffstat (limited to 'macros/latex209/contrib/textfit')
-rw-r--r-- | macros/latex209/contrib/textfit/textfit.ctn | 10 | ||||
-rw-r--r-- | macros/latex209/contrib/textfit/textfit.dtx | 299 | ||||
-rw-r--r-- | macros/latex209/contrib/textfit/textfit.ins | 53 |
3 files changed, 362 insertions, 0 deletions
diff --git a/macros/latex209/contrib/textfit/textfit.ctn b/macros/latex209/contrib/textfit/textfit.ctn new file mode 100644 index 0000000000..f0fada900d --- /dev/null +++ b/macros/latex209/contrib/textfit/textfit.ctn @@ -0,0 +1,10 @@ +Name=textfit +Author=Sebastian Rahtz <spqr@ftp.tex.ac.uk> and Philip Taylor +Date=1994/01/15 +Version=3 +Supported=yes +Checked=1994/01/15 +Summary= LaTeX package for scaling up text to a desired size. + + + diff --git a/macros/latex209/contrib/textfit/textfit.dtx b/macros/latex209/contrib/textfit/textfit.dtx new file mode 100644 index 0000000000..1e59c3247b --- /dev/null +++ b/macros/latex209/contrib/textfit/textfit.dtx @@ -0,0 +1,299 @@ +% \iffalse meta-comment +% File `textfit.dtx'. +% +% Copyright (C) 1994 by Sebastian Rahtz and Phil Taylor +% All rights reserved. +% +% @LaTeX-style-file{ +% author = "Sebastian Rahtz and Phil Taylor", +% version = "3", +% date = "10th January 1994", +% filename = "textfit.sty", +% email = "spqr@ftp.tex.ac.uk (Internet)", +% keywords = "LaTeX, scaling", +% supported = "yes", +% docstring = " +% +% textfit.sty +% +% LaTeX style option for scaling up text to a desired size. Requires LaTeX2e +% "} +% You are not allowed to change this file. You may however copy +% this file to a file with a different name and then change the copy. +% +% \fi +\def\fileversion{3} +\def\filedate{1994/01/10} +\def\docdate{1994/01/10} +% \CheckSum{310} +% +% \iffalse This is a META comment +% +% Copying of this file is authorized only if either +% (1) you make absolutely no changes to your copy, including name, or +% (2) if you do make changes, you name it something other than +% textfit.dtx. +% Please send bug reports to: +% +% S Rahtz +% 12 Cygnet Street +% York Y02 1AG +% UK +% email: spqr@ftp.tex.ac.uk +% \fi +% +% +% \title{The \texttt{textfit.dtx} file\thanks +% {This file has version number \fileversion, dated \filedate. +% The documentation was last revised on \docdate}\\ +% } +% \author{Sebastian Rahtz and Phil Taylor} +% +% \MakeShortVerb{\|} +% \def\dst{{\csname mediumseries\endcsname\sc docstrip}} +% \setcounter{StandardModuleDepth}{1} +% +% \maketitle +% +% \section{Introduction} +% +% The user needs to be able to specify the width or height for text, and +% use the largest size necessary to fill that width or height. You +% can choose whether to have the size increased by simple points, or +% by using magsteps. +% Usage: +% \verb|\scaletowidth{3in}{This is the way of the world}| +% \verb|\scaletoheight{7mm}{This is the way of the world}| +% Details are controlled by two options: `magstep' will +% make the system use magsteps, not points, and `noisy' +% will produce useful messages. +% \changes{1}{5/2/93}{Worked out point size by trial and error, increasing +% it in increments of 1pt until result reached desired size} +% \changes{2}{9/2/93}{Final point size calculated by comparison of size at +% 10pt. faster, and takes less TeX memory for intermediate fonts} +% \changes{3}{10/1/94}{Revised to make it a \LaTeXe\ package} +% +%Examples; note that the base font is taken from the current state when +%you enter the macros. so if you start off with a large font (eg +%cmr17), it will give a different result from that obtained by scaling +%up cmr5. +% +%\scaletowidth{1in}{This is the way of the world} +% +%{\Huge \scaletowidth{1in}{This is the way of the world}} +% +%{\Huge \scaletowidth{5in}{This is the way of the world}} +% +%\scaletowidth{5in}{This is the way of the world} +% +%{\Huge \scaletoheight{1.3in}{Cowabunga!} } +% +% \scaletowidth{5in}{Gloucestershire Warwickshire Railway} +% +%\ScalebyMagstepstrue +% +%\scaletowidth{1in}{This is the way of the world} +% +%{\Huge \scaletowidth{1in}{This is the way of the world}} +% +%{\Huge \scaletowidth{5in}{This is the way of the world}} +% +%\scaletowidth{5in}{This is the way of the world} +% +%{\Huge \scaletoheight{1.3in}{Cowabunga!} } +% \StopEventually{} +% \begin{macrocode} +%<*textfit> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{textfit}[\filedate] +\newif\ifScalebyMagsteps +\newif\ifNoisyFitting +\NoisyFittingfalse +\ScalebyMagstepsfalse +\DeclareOption{noisy}{\NoisyFittingtrue} +\DeclareOption{magstep}{\ScalebyMagstepstrue} +\ProcessOptions +\newcount \mags@f@r +\newdimen \desired@size +\newcount \r@mainder +\newcount \m@gstepcount +\newcount \m@gsteplimit +\newcount \m@gstepvalue +\newdimen \m@gstepdimen +% \end{macrocode} +% Code for working out the right magstep (this is Phil's bit). +% \begin{macrocode} +\def \magsteps {\afterassignment \m@gsteps \m@gsteplimit = } +\def \m@gsteps + {\let \@r = \or + \def \or {\noexpand \or}% + \m@gstepdimen = 0.166667 \maxdimen + \m@gstepvalue = 1000 + \m@gstepcount = 0 + \def \magstep {}% + \loop + \ifnum \m@gstepcount < \m@gsteplimit + \advance \m@gstepcount by 1 + \ifnum \m@gstepvalue > \m@gstepdimen + \advance \m@gstepcount by -1 + \message {Sorry --- integer overflow would occur if + I went any further; stopped at + \the \m@gstepcount.} + \m@gsteplimit = \m@gstepcount + \else + \multiply \m@gstepvalue by 12 + \multiply \r@mainder by 12 + \divide \r@mainder by 10 + \advance \m@gstepvalue by \r@mainder + \r@mainder = \m@gstepvalue + \divide \m@gstepvalue by 10 + \multiply \m@gstepvalue by 10 + \advance \r@mainder by -\m@gstepvalue + \divide \m@gstepvalue by 10 + \ifnum \r@mainder < 5 + \edef \magstep {\magstep \or \the \m@gstepvalue}% + \else + \advance \m@gstepvalue by 1 + \edef \magstep {\magstep \or \the \m@gstepvalue}% + \advance \m@gstepvalue by -1 + \fi + \fi + \repeat + \edef \magstep ##1% + {\noexpand \ifcase ##1 + 1000\magstep + \noexpand \else 0% + \noexpand \message + {Sorry --- \string \magstep \space ##1 + is not in range 0 .. \the \m@gsteplimit}% + \noexpand \fi + \noexpand \relax + }% + \let \or = \@r + } +\magsteps 63 +\def \Fontname #1{\expandafter \strip@size \fontname #1 } +\def \strip@size #1 #2#{#1\void@@@} +\def \void@@@ #1{} +\gdef\n@d#1.#2:{#1} +\def \@scaletofit[#1]#2#3{% + \def\Hb@x{h}\def\H@rV{#1}% + \ifx\H@rV\Hb@x\def\C@mpare{\wd}\else\def\C@mpare{\ht}\fi + \desired@size #2 + \def\curr@fontname{\Fontname \font {} }% + \ifScalebyMagsteps + \mags@f@r \z@ + \setbox 0 = \hbox{#3}% + \def\@increment{1}% + \def\@test{<}% + \ifdim \C@mpare 0 > \desired@size + \message{When scaling by Magsteps, you cannot go downwards!}% + \fi + \loop + \font \temp@font = \curr@fontname scaled \magstep \mags@f@r + \setbox 0 = \hbox{{\temp@font #3}}% + \ifNoisyFitting + \message {Trying \noexpand \magstep \the \mags@f@r...}% + \fi + \ifdim \C@mpare 0 \@test \desired@size + \advance \mags@f@r by \@increment + \repeat + \ifnum \mags@f@r=\z@ + \mags@f@r1 + \fi + \advance \mags@f@r by -\@increment + \else + \font\temp@font=\curr@fontname at1pt + \setbox 0 = \hbox{{\temp@font #3}}% + \@tempdima\C@mpare0 + \multiply\@tempdima by 500 %\@m + \def\foo@@{\expandafter\n@d\the\@tempdima:}% + \@tempdimb\desired@size + \divide\@tempdimb by \foo@@ + \multiply\@tempdimb by 500 %\@m + \fi + \ifNoisyFitting + \ifScalebyMagsteps + \message {The calculated font is \curr@fontname + scaled \noexpand \magstep \the \mags@f@r}% + \font \temp@font = \curr@fontname scaled \magstep \mags@f@r + \else + \message {The calculated font is \curr@fontname ->\the\@tempdimb}% + \font\temp@font=\curr@fontname at \the\@tempdimb + \fi + \fi + \ifx\H@rV\Hb@x + \hbox to \desired@size {\hss{\temp@font #3}\hss}% + \else + \hbox {{\temp@font #3}}% + \fi + } +% user interface +\def\scaletowidth{\@scaletofit[h]} +\def\scaletoheight{\@scaletofit[v]} +%</textfit> +% \Finale +% \end{macrocode} +% \section{A driver for this document} +% +% The next bit of code contains the documentation driver file for +% \TeX{}, i.e., the file that will produce the documentation you are +% currently reading. It will be extracted from this file by the +% \dst{} program. +% \begin{macrocode} +%<*driver> +\documentclass{article} +\usepackage{doc} +\usepackage[noisy]{textfit} +% dimensions from ltugboat.sty: +\setlength\textwidth{31pc} +\setlength\textheight{54pc} +\setlength{\parindent}{0pt} +\setlength{\parskip}{2pt plus 1pt minus 1pt} +\setlength{\oddsidemargin}{8pc} +\setlength{\marginparwidth}{8pc} +\setlength{\topmargin}{-2.5pc} +\setlength{\headsep}{20pt} +\setlength{\columnsep}{1.5pc} +\setlength{\columnwidth}{18.75pc} + +\DisableCrossrefs + +\CodelineIndex % Index code by line number + +%\OnlyDescription % comment out for implementation details + +\begin{document} + \DocInput{textfit.dtx} +\end{document} +%</driver> +% \end{macrocode} +% +% +% The next line goes into all files and in addition prevents \dst{} +% from adding any further code from the main source file (such as a +% character table. +% \begin{macrocode} +\endinput +% \end{macrocode} +% +% \DeleteShortVerb{\|} +% +% \Finale +% +%% \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 \~} + diff --git a/macros/latex209/contrib/textfit/textfit.ins b/macros/latex209/contrib/textfit/textfit.ins new file mode 100644 index 0000000000..d4ff816dfd --- /dev/null +++ b/macros/latex209/contrib/textfit/textfit.ins @@ -0,0 +1,53 @@ +\def\fileversion{1} +\def\filedate{1994/01/10} +% +% \StopEventually{} +% +% As always we begin by identifying the latest version of this file +% on the VDU and in the {\sf log} file. +% \begin{macrocode} +\def\batchfile{textfit.ins} +\input docstrip.tex +\preamble + +Copyright (C) 1993,94 by Sebastian Rahtz, Phil Taylor +All rights reserved. + +\endpreamble + +\def\batchfile{textfit.dst} % ignored in distribution +\input docstrip.tex % ignored in distribution + +\keepsilent + +\preamble +Copyright (C) 1993,94 Sebastian Rahtz and Phil Taylor. +All rights reserved. Permission is granted to to +customize the declarations in this file to serve the needs of your +installation. However, no permission is granted to distribute a +modified version of this file under its original name. + +\endpreamble + +\Msg{*** Generating style file for Textfit ***} + +\generateFile{textfit.sty}{f}{ + \from{textfit.dtx}{textfit}} + +\Msg{*** Generating driver file to print code ***} + +\generateFile{textfit.drv}{f}{ + \from{textfit.dtx}{driver}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the} +\Msg{* file textfit.sty into a directory searched by TeX} +\Msg{*} +\Msg{***********************************************************} + + +\endinput + + + |