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/pawpict/README | 37 + macros/latex/contrib/pawpict/pawpict.dtx | 1105 ++++++++++++++++++++++++++++++ macros/latex/contrib/pawpict/pawpict.ins | 57 ++ 3 files changed, 1199 insertions(+) create mode 100644 macros/latex/contrib/pawpict/README create mode 100644 macros/latex/contrib/pawpict/pawpict.dtx create mode 100644 macros/latex/contrib/pawpict/pawpict.ins (limited to 'macros/latex/contrib/pawpict') diff --git a/macros/latex/contrib/pawpict/README b/macros/latex/contrib/pawpict/README new file mode 100644 index 0000000000..1ebf9230d7 --- /dev/null +++ b/macros/latex/contrib/pawpict/README @@ -0,0 +1,37 @@ + pawpict package for LaTeX2e + +This is a distribution of my pawpict package for easy inclusion +of graphics made by PAW (Physics Analysis Workstation). You need +to have PAW installed on yor system to bennefiet from this package. + +The distribution file are: + + README this file. + pawpict.dtx documentation and source file + pawpict.ins bacth file for docstrip + +To install this package, do in a temporary directory: + + 1) + latex pawpict.ins + 2) + move the files + pawpict.sty + to some diretory seached by LaTeX, e.g. in teTeX: + /usr/lib/texmf/local/tex/latex/pawpict/, or %TEXINPUTS% + in DOS. + 3) + do + latex pawpict.dtx + latex pawpict.dtx + makeindex -s gind -o pawpict.ind pwpict.idx + makeindex -s gglo -o pawpict.gls pawpict.glo + latex pawpict.dtx + to produce the documentation. + +This package is copyright of Christian Holm, but is distributed +under the GNU General Public Lisence. + +Happy typesetting :-) + +Christian Holm diff --git a/macros/latex/contrib/pawpict/pawpict.dtx b/macros/latex/contrib/pawpict/pawpict.dtx new file mode 100644 index 0000000000..65aedf1954 --- /dev/null +++ b/macros/latex/contrib/pawpict/pawpict.dtx @@ -0,0 +1,1105 @@ +% \iffalse +%<*copyright> +% pawpict macros for use with LaTeX and PAW +% $Header: pawpict.dtx,v 1.0 97/12/24 14:43:14 sdc Exp $ +%$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright (C) 1997 Christian Holm. +% +% The pawpict package is free software; you can redistribute it +% and/or modify it under the terms of the GNU General Public License +% as published by the Free Software Foundation; either version 2 of +% the License, or (at your option) any later version. +% +% The pawpict package 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. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% @LaTeX-style-file{ +%% Author = "Christian Holm", +%% Version = "1.0", +%% Date = "1997/12/24", +%% Time = "14:43:14", +%% Filename = "pawpict.sty", +%% Address = "Niels Bohr Institute of Physics +%% University of Copenhagen +%% Denmark", +%% Email = "cholm@fys.ku.dk (Internet)", +%% CodeTable = "ISO/ASCII", +%% Keywords = "LaTeX2e, PAW, graphics", +%% Supported = "yes", +%% Abstract = "LaTeX package for providing easy inclusion of +%% graphics made in PAW" +%% } +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +%<*driver> +\documentclass{ltxdoc} +\EnableCrossrefs +\RecordChanges +\CodelineIndex +\typeout{Expect some Under- and overfull boxes} +\begin{document} + \DocInput{pawpict.dtx} +\end{document} +% \fi +% +%\newcommand{\CERNLIB}{\textsc{cernlib}\index{CERNLIB}} +%\newcommand{\CMZ}{\textsc{cmz}\index{CMZ}} +%\newcommand{\COMIS}{\textsc{comis}\index{COMIS}} +%\newcommand{\CSPACK}{\textsc{cspack}\index{CSPACK}} +%\newcommand{\FATMEN}{\textsc{fatmen}\index{FATMEN}} +%\newcommand{\GEANT}{\textsc{geant}\index{GEANT}} +%\newcommand{\GKS}{\textsc{gks}\index{GKS}} +%\newcommand{\HBOOK}{\textsc{hbook}\index{HBOOK}} +%\newcommand{\HEPDB}{\textsc{hepdb}\index{HEPDB}} +%\newcommand{\HIGZ}{\textsc{higz}\index{HIGZ}} +%\newcommand{\HPLOT}{\textsc{hplot}\index{HPLOT}} +%\newcommand{\KUIP}{\textsc{kuip}\index{KUIP}} +%\newcommand{\MINUIT}{\textsc{minuit}\index{MINUIT}} +%\newcommand{\PATCHY}{\textsc{patchy}\index{PATCHY}} +%\newcommand{\PAW}{\textsc{paw}\index{PAW}} +%\newcommand{\SIGMA}{\textsc{sigma}\index{SIGMA}} +%\newcommand{\PAWPP}{\textsc{paw++}\index{PAW++}} +%\newcommand{\WWW}{\textsc{www}\index{WWW}} +%\newcommand{\VAXTAP}{\textsc{vaxtap}\index{VAXTAP}} +%\newcommand{\ZEBRA}{\textsc{zebra}\index{ZEBRA}} +% +%\def\fileversion{v1.0} +%\def\filedate{97/12/24} +%\def\docdate {97/12/24} +%\def\bs{{\tt\char'134}} +%\newcommand{\Lcs}[1]{{\bs\tt#1}} +% +%\def\SpecialOptIndex#1{% +% \index{#1\actualchar{\protect\ttfamily#1} +% (option)\encapchar usage}% +% \index{options:\levelchar{\protect\ttfamily#1}\encapchar +% usage}} +%\def\DescribeOption{\leavevmode +% \begingroup\MakePrivateLetters\DescribeOPT} +%\def\DescribeOPT#1{\endgroup +% \marginpar{\raggedleft\PrintDescribeMacro{#1}}% +% \SpecialOptIndex{#1}\ignorespaces} +%\def\SpecialPawIndex#1{% +% \index{#1\actualchar{\protect\ttfamily#1} +% (\textsc{paw} command)\encapchar usage}% +% \index{paw\actualchar{\protect\textsc{paw} command:}% +% \levelchar{\protect\ttfamily#1}\encapchar +% usage}} +%\def\DescribePaw{\leavevmode +% \begingroup\MakePrivateLetters\Describe@Paw} +%\def\Describe@Paw#1{\endgroup +% \marginpar{\raggedleft\PrintDescribeMacro{#1}}% +% \SpecialPawIndex{#1}\ignorespaces} +% +% \DoNotIndex{\@ne,\advance,\begin,\char,\closein,\def,\DeclareOption} +% \DoNotIndex{\divide,\docdate,\else,\end,\fi,\filedate,\fileversion} +% \DoNotIndex{\framebox,\global,\ifdim,\ifeof,\ifnum,\ifx,\let,\loop} +% \DoNotIndex{\makebox,\mbox,\mutliply,\NeedsTeXFormat,\newcommand} +% \DoNotIndex{\newcount,\newdim,\newenvironment,\newif,\newsavebox} +% \DoNotIndex{\noindent,\openin,\PackageWarning,\par,\ProcessOptions} +% \DoNotIndex{\ProvidesPackage,\put,\relax,\repeat,\RequirePackage} +% \DoNotIndex{\rule,\savebox,\space,\tempa,\textsc,\tt,\undefined} +% \DoNotIndex{\usebox} +% +% \changes{v1.0}{97/12/24}{The creation of \textsf{pawpict}} +% +% \title{The \textsf{pawpict}--package\thanks{% +% This package is based on output from \textsc{paw}. +% This file has version number \fileversion{} dated \filedate{}. +% The documentation was last revised on \docdate. +% }} +% \author{Christian Holm\thanks{Due thancks to the creators of \textsc{paw}}} +% +% \date{\docdate} +% +% \maketitle +% \begin{abstract} +% This package is for use with \textsc{paw} as distributed from the +% \textsc{cernlib}. It is intended to make it easier to include +% pictures made in \textsc{paw} in \LaTeX{} documents. However, this +% package is really only usefull if more then one such picture is +% included in the document. +% \end{abstract} +% +% \tableofcontents +% +% \section{Motivation for use of \texttt{pawpict}} +% +% When you in \PAW{} create a picture for use in \LaTeX{}, you have +% the option of either making a (Encapsulated) Postscript file, and +% include this in your document by doing something like: +% \begin{verbatim} +% \begin{figure} +% \epsffile{example.eps} +% \caption{Example of Encapsulated PostScript in \LaTeX{}.} +% \label{EXAMPLE_EPS} +% \end{figure} +% \end{verbatim} +% or you can create a Encapsulated \LaTeX{} file and include it with +% something like: +% \begin{verbatim} +% \begin{figure} +% \include{example.tex} +% \caption{Example of Encapsulated \LaTeX{} in \LaTeX{}.} +% \label{EXAMPLE_TEX} +% \end{figure} +% \end{verbatim} +% +% Now the \LaTeX{} version has the obvoius advantage, that they take +% up less disk space\footnote{Postscript Files are notriously big}, +% and also, % you can view these files on \textit{any} +% \texttt{dvi}--previewer\footnote{Some \texttt{dvi}--previewers do +% not understand the \Lcs{special} command needed for Postscript +% files}. +% +% However, the \LaTeX{} generated by \PAW{} tends to be rather long +% and hard to read, making it diffecult to make changes, or just get a +% clear picture of what is going on. Therefore, it would be nice to +% \textit{reduce} the size of these files, and make them easier to +% understand, as well as saving disk space. +% +% This package realizes this, by making the common commands needed for +% pictures generated by \PAW{} (actually \HIGZ{}) avaliable in one +% style file to be included by \Lcs{usepackage\{pawpict\}} +% +% \DescribeEnv{noborder} +% The option \texttt{noborder} is avaliable for the \texttt{pawpict} +% package. Pass the option \texttt{noborder} to pawpict, if you in +% \PAW{} have created the pictures without borders. Else do nothing. +% +% \section{How to use \texttt{pawpict}} +% +% \subsection{Things to do in \PAW{}} +% To create a \LaTeX{} file containing a picture produced by \HIGZ{}, +% do the following in \PAW{}: +% \begin{enumerate} +% \item First you must open a file (in the current directory), and +% assign it a Logical Unit Number (LUN). This is done by: +% \DescribePaw{FORTRAN/FILE} +% \begin{quote} +% \texttt{FORTRAN/FILE} \textsl{LUN~FNAME} \texttt{[} +% \textsl{STATUS} \texttt{]} +% \end{quote} +% where \textsl{LUN} is any integer\footnote{LUN 10 is used by +% \PAW{} as \texttt{paw.metafile}}, \textsl{FNAME} is a valid file +% name and \textsl{STATUS} can be any of: +% \begin{description} +% \item{OLD} Open existing file for reading. +% \item{APPEND} Open existing file and position at EOF. +% \item{NEW} Create new file; error if already existing. +% \item{UNKNOWN} Open existing or create new file. +% \item{DONTKNOW} Like UNKNOWN except on VMS opens highest cycle. +% \end{description} +% Default is UNKNOWN. +% \item Second, you should tell \HIGZ{} that it should create output +% on a file and this is to be in the \LaTeX{} format. This is +% accompliced in \PAW{} by: +% \DescribePaw{GRAPHICS/METAFILE} +% \begin{quote} +% \texttt{GRAPHICS/METAFILE} [$\pm$]\textsl{LUN} -777 +% \textsl{FNAME} +% \end{quote} +% where \textsl{LUN} is the Logical Unit Number, and \textsl{FNAME} +% is the filename, used in 1. If \textsl{LUN} is provided negative, +% then the picyures will \emph{not} be output on the display, but +% only in the file. +% \item Now create what ever picture you may need, using zones, +% superimpose, etc. However, do \emph{only} create one picture. +% \item Lastly, you \emph{must} close the file: +% \DescribePaw{FORTRAN/CLOSE} +% \begin{quote} +% \texttt{FORTRAN/CLOSE} \textsl{LUN} +% \end{quote} +% still using the \textsl{LUN} created in 1. +% \end{enumerate} +% +% Now you have a file in your current directory, containing \LaTeX{} +% commands to draw the picture created by \HIGZ{}. +% +% There is an example of what might be in such a file (a lot is left +% out) in Figure~\ref{exa:higzfile} +% \begin{figure}[htbp]\label{exa:higzfile} +% \begin{verbatim} +% HIGZ version 1.23/07 LaTeX metafile created 97/12/11 23.58 +% \ifx\higzunit\undefined\unitlength=0pt{} +% \else\unitlength=\higzunit\fi +% \ifdim\unitlength=0pt\unitlength=\textwidth +% \divide\unitlength 2000\fi\par\noindent +% \begin{picture}(2000,2000)(0,0) +% \ifx\higzdraft\undefined\newcount +% \higzdraft\higzdraft=0{}\fi\ifnum\higzdraft>0 +% \put(0,0){\framebox(2000,2000){}} +% \else\ifx\higzstep\undefined\newcount\higzstep\higzstep=0{}\fi +% \ifnum\higzstep<1\higzstep=2\fi +% ... +% \def\higzstroke#1,#2,#3,#4;{ +% \advance\higzloffs\higzllen +% \ifnum\higzloffs>#1\advance\higzloffs-\higzllen\advance\higzloffs-#1 +% \higzloffs=-\higzloffs\ifnum#2>0 +% \put(\higzlx,\higzly){\line(#3,#4){\higzloffs}}\fi\ +% ifnum#2<0\put(\higzlx,\higzly){\circle*{0}}\fi +% \higztemp=\higzloffs\multiply\higztemp#3 +% \advance\higzlx\higztemp\higztemp=\higzloffs +% \multiply\higztemp#4\advance\higzly\higztemp +% \advance\higzllen-\higzloffs\higzloffs=#1 +% \else\ifnum#2>0 +% \put(\higzlx,\higzly){\line(#3,#4){\higzllen}} +% \fi\ifnum#2<0\put(\higzlx,\higzly){\circle*{0}} +% \fi\higzllen=0\fi} +% ... +% % End of Initialisation +% \let\higzline=\higzsolid +% \put(0,0){\framebox(2268,2268){}} +% \put(227,227){\framebox(1814,1814){}} +% \m1058,76;\s-1,3;\s-5,1;\r4;\s-5,-1; +% \s-1,-3;\s1,-3;\s3,-2;\s8,-1;\s3,-2;\s1,-3; +% \D1;\s-1,-4;\s-5,-1;\r4;\s-5,1;\s-1,4; +% \m1067,91;\s2,-2;\s1,2;\s-1,1;\s-2,-1;\m1069,80; +% ... +% \fi\end{picture} +% \end{verbatim} +% \caption{Example of a picture created by \HIGZ{}} +% \end{figure} +% +% \subsection{Things to do in an editor} +% +% The file created by \HIGZ{} contains +% \emph{all} the commands needed, but since a lot of these commands +% are also in style file \texttt{pawpict}, you need to take some of +% the definitions out of the file, created by \HIGZ{}. +% +% Open the newly created file in you favorite ASCII editor, and then +% delete up to the line saying +% \texttt{\% End of Initialisation}, and then save the file. +% +% The next step needed, is to edit your \LaTeX{} document, making +% paragraphs, text, tables, figures, etc and include the picture made +% by \HIGZ{}. More on this in the next section. +% +% \subsection{Things to do in document} +% +% The picture should be included in some \textsc{figure} +% enviroment. To do this easely, \DescribeEnv{pawfig} use the +% \texttt{pawfig} enviroment. It takes one mandatory argument, the +% caption to put under the figure. It also has a optional +% argument. The optional argument is the width of the figure (defaults +% amounts to full page width). +% +% In any case, the \texttt{pawfig} environment, should be used as: +% \begin{quote} +% \Lcs{begin\{pawfig\}[}\textsl{option}\texttt{]\{}\textsl{caption}\texttt{\}}\\ +% \Lcs{input\{}\textsl{filename}\texttt{\}}\\ +% \Lcs{end\{pawfig\}}\\ +% \end{quote} +% +% \DescribeEnv{pawpict} +% Also, if you like, you can provide the figure enironment yourself, +% but then you should use the \texttt{pawpict} enviroment, wich takes +% no arguments. It is used like this: +% \begin{quote} +% \Lcs{begin\{pawpict\}}\\ +% \Lcs{input\{}\textsl{filename}\texttt{\}}\\ +% \Lcs{end\{pawfig\}}\\ +% \end{quote} +% +% \DescribeEnv{pawfigure} +% This is a simple environment, that takes two mandatory arguments: +% the width and the caption. Optional argument is the placement. +% +% \section{The User Commands} +% +% In this part we describe the commands, +% which you have at your disposal in the present style. +% +% \DescribeMacro{\pawdraft} +% You can use the command \Lcs{pawdraft} to control the output +% of the pictures made by \HIGZ{}. If this is set, no picture +% will be drawn, instead, a frame of the size of the picture +% is produced, at the place where the picture would go. +% +% \DescribeMacro{\pawfigplacement} +% This macro takes one argument, the placement of the figure +% floats. Notice this is meaningless if you use the \texttt{floatflt} +% package. The placement parameters are in the standard \LaTeX{} form. +% (\texttt{h}ere, \texttt{t}op, \texttt{b}ottom, +% or \texttt{p}age, in any combination. Default is \texttt{htbp}.) +% +% \DescribeMacro{\pawincludepict} +% This macro includes a file, putting it in a \texttt{pawpict} +% environment. The mandaory argument is the filename, the optional is +% the width of the picture. +% +% \DescribeMacro{\pawincludefig} +% Much like above, only it is put in a \texttt{pawfig} environment, +% with to mandatory arguments, the filename, and the +% caption. Optionally the width of the figure may be specified. +% +% \DescribeMacro{\pawincludefigure} +% Much like above, only it is put in a \texttt{pawfigure} environment, +% with three mandatory arguments, the filename, the width, and the +% caption. Optionally the placement of the figure may be specified. +% +% There are also some commands for producing simple text +% inserts. These are listed in Table~\ref{tab:short}. They are +% basically convinient shorthand macroes for various text inserts, +% but also makes and index entry to that keyword. +% +% \begin{table}[htbp] +% \label{tab:short} +% \begin{tabular}{l l} +% \textbf{Command}&\textbf{Resault}\\ +% \Lcs{CERNLIB}& \textsc{cernlib}\\ +% \Lcs{CMZ}& \textsc{cmz}\\ +% \Lcs{COMIS}& \textsc{comis} \\ +% \Lcs{CSPACK}& \textsc{cspack} \\ +% \Lcs{FATMEN}& \textsc{fatmen} \\ +% \Lcs{GEANT}& \textsc{geant} \\ +% \Lcs{GKS}& \textsc{gks} \\ +% \Lcs{HBOOK}& \textsc{hbook} \\ +% \Lcs{HEPDB}& \textsc{hepdb} \\ +% \Lcs{HIGZ}& \textsc{higz} \\ +% \Lcs{HPLOT}& \textsc{hplot} \\ +% \Lcs{KUIP}& \textsc{kuip} \\ +% \Lcs{MINUIT}& \textsc{minuit} \\ +% \Lcs{PATCHY}& \textsc{patchy} \\ +% \Lcs{PAW}& \textsc{paw} \\ +% \Lcs{SIGMA}& \textsc{sigma} \\ +% \Lcs{PAWPP}& \textsc{paw++} \\ +% \Lcs{WWW}& \textsc{www} \\ +% \Lcs{VAXTAP}& \textsc{vaxtap} \\ +% \Lcs{ZEBRA}& \textsc{zebra} \\ +% \end{tabular} +% \caption{Shorthand macroes} +% \end{table} +% +% \DescribeMacro{\bs}\DescribeMacro{\Lcs} +% Also defined are the macroes \Lcs{bs} and \Lcs{Lcs}. +% type, preceded by a backslash. \Lcs{bs} takes no argument, and produce +% a backslash \bs{}. \Lcs{Lcs} takes one argument, and typesets this +% argument in typewriter font, preceded by a backslash. This is usefull +% for macro descriptions etc. In fact \Lcs{Lcs} is produced by the +% sequence \bs\texttt{Lcs\{Lcs\}}. These commands where actaully defined +% to ease the writing of this documentation, but left in the style, since +% I find them generally usefull. +% +% \iffalse +%<*package> +% \fi +% +% \section{Implementation} +% +% In this section, the implementation of the \texttt{pawpict} package +% will be described. +% +% \subsection{Style definitions} +% +% These definitions serve basically to say something about the style +% and not much else. +% +% \begin{macrocode} +\def\fileversion{v1.0} +\def\filedate{97/12/12} +\def\docdate {97/12/12} +\ProvidesPackage{pawpict}[\filedate\space\fileversion\space pawpict + package.] +\NeedsTeXFormat{LaTeX2e} +\def\bs{{\tt\char'134}} +\newcommand{\Lcs}[1]{{\bs\tt#1}} +% \end{macrocode} +% +% \subsection{Options} +% +% \DescribeOption{noborder} +% \DescribeOption{border} +% The Following is the avaliable options to the \texttt{pawpict} +% package. +% \begin{macrocode} +\DeclareOption{border}{} +\DeclareOption{noborder}{\def\noborder{}} +\DeclareOption*{\PackageWarning{pawpict}{Unkown option: `\CurrentOption'}} +\ProcessOptions\relax +% \end{macrocode} +% Pass the option \texttt{noborder} to pawpict, if you in \PAW{} have +% created the pictures without borders. Else do nothing. +% +% \subsection{Control Commands} +% +% \begin{macro}{\pawdraft} +% This command controls wether \LaTeX{} should draw the picture, +% or a box, the size of the picture. +% \begin{macrocode} +\def\pawdraft{\def\higzdraft{}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\pawfigplacement} +% This command tells \LaTeX{} how to place the figures, using normal +% \LaTeX{} placement syntax. It defaults to \texttt{htbp}. +% \begin{macrocode} +\newcommand{\pawfigplacement}[1]{\def\tempa{#1}} +\ifx\tempa\undefined + \def\figplacement{htbp} +\else + \def\figplacement{\tempa{}} +\fi +% \end{macrocode} +% \end{macro} +% +% \subsection{The enviroments} +% +% Next the environments are defined. +% +% \paragraph*{Notice:} No definitions are +% present in the environment definitions. This is not possible because +% of the way \TeX{} interpreds argumments. It would have been nice to +% limit the use of the definitions to the enviroments, but I just don't +% know a way to do that. The reason why \TeX{} will not allow it, is +% because \TeX{} expands the possible arguments of an environment, in +% \emph{all} subseguent uses of that argument, also in macro definitions. +% So if you have an enviroment that takes an argument, then \emph{every} +% occurence of \texttt{\#1}\footnote{\texttt{\#1} is the \textit{token} +% \TeX{} uses for the \textit{type}: ``\textit{the first argument of a +% macro}''.} is concidered an argument to the environment. That means, +% if you have a macro definition in the definition of the environment +% of the form \Lcs{def}\Lcs{foo\#1\{...\#1...\}}, then, the argument +% the user gave to the environment, will be passed to the macro, +% which doesn't make sense, because you will create a new macro every +% time you use the enviroment. For exapmle, if you gave the +% environment the argument `\texttt{foo}', then the above macro would +% be \Lcs{foobar\{...\#1...\}} wich is strictly forbidden. +% +% \begin{macro}{pawpict} +% This is the simple enviroment, that takes no arguments, and merely +% provide the neccesary dimensions. +% \begin{macrocode} +\newenvironment{pawpict}[1][\textwidth]{ + \ifx\higzunit\undefined + \newdimen\higzunit + \fi + \higzunit#1 +% \end{macrocode} +% Test to see if dimension \Lcs{higzunit} is defined, then define +% it. In any case, set it to the (optional) argument of +% \texttt{pawpict} which defaults to width of page +% \begin{macrocode} + \ifx\noborder\undefined + \divide\higzunit2268 + \else + \divide\higzunit2045 + \fi + \unitlength\higzunit +% \end{macrocode} +% First we check to see, if the dimension \Lcs{higzunit} is set. This +% should be set by \HIGZ{}, when it writes out the \LaTeX{} file, or +% by some other style (maybe \texttt{cernman}?). If it isn't set, then +% it becomes the size of the text width. In any case +% the unit lenght (\Lcs{unitlenght}) becomes one $2000^\mbox{\small th}{}$ or +% one $2268^\mbox{\small th}{}$ part of \Lcs{higzwidth} depending on wether +% the picture was created with a border or not. \Lcs{textwidth} is +% usally defined in either a class (such as \texttt{article}) or a +% style (such as \texttt{a4wide}). This is done to make the picture +% come out right relative to the text. +% \begin{macrocode} + \ifx\higzdraft\undefined + \else + \begin{picture}(2000,2000) + \put(0,0){\framebox(2000,2000){}} + \put(500,500){\mbox{Here will be a picture made by \PAW{}}} + \end{picture} + \unitlength=0pt{} + \fi +% \end{macrocode} +% This is a check to see, if the picture should be draw. This is +% usefull if you don't want \LaTeX{} to produce the final picture, for +% example if you are preparing a draft of your document, and only want +% to see if the picture has the right size, and comes out the right +% place. If \Lcs{higzdraft} is set, then \LaTeX will only produce a +% frame in the size of the right size. You can control this by the +% command \Lcs{pawdraft}. +% \begin{macrocode} + \ifx\higzstep\undefined + \newcount\higzstep\higzstep=0{} + \fi + \ifnum\higzstep<1 + \higzstep=2 + \fi +% \end{macrocode} +% The dimension \Lcs{higzstep} determinds in how many steps, a curve, +% line, etc should be drawn. The should \emph{not} be extarnally +% defined, unless in some very rare cases. +% \begin{macrocode} + \ifx\higzxx\undefined + \newcount\higzxx + \newcount\higzyy + \newcount\higzx + \newcount\higzy + \newcount\higzdx + \newcount\higzdy + \newcount\higzlx + \newcount\higzly + \newcount\higzslope + \newcount\higzlen + \newcount\higzllen + \newcount\higzoffs + \newcount\higzloffs + \newcount\higzadash + \newcount\higzbdash + \newcount\higzcdash + \newcount\higzddash + \newcount\higzmsize + \newcount\higztemp + \fi +% \end{macrocode} +% Define all the counters needed to draw the pictures, if they are +% not defined\footnote{Actually, they should not be defined any where +% else, then via the \texttt{pawpict} environment.} +% \begin{macrocode} + \par + \noindent + \ifx\noborder\undefined + \begin{picture}(2268,2268)(0,0) + \else + \begin{picture}(2000,2000)(0,0) + \fi +} +{ + \end{picture} +} +% \end{macrocode} +% Finally, start a \texttt{picture} environment, to put the drawing +% macroes inside. +% \end{macro} +% +% \begin{macro}{pawfig} +% This is the more complex environment, with one mandatory and one +% optional argument. It is set in a \texttt{floatingfigure} or +% in a \texttt{figure} environment, depending on wether the +% \texttt{floatflt} style is avaliable. +% +% By default the figures are treated as normal floats, but if the +% \texttt{floatflt} style is avaliable, it makes a nicer output, to +% use this package for floats (i.e.\ for figures) +% So that {\sf pawpict} can be run independently of {\tt floatflt.sty} +% we first check for its existence and set the "have@floatflt" flag +% appropriately for use below. +% \begin{macrocode} +\newif\ifhave@floatflt +\openin\@ne floatflt.sty +\ifeof\@ne \else \have@floatflttrue \fi +\closein\@ne \relax +% \end{macrocode} +% If we found {\tt floatflt.sty} we use it. +% \begin{macrocode} +\ifhave@floatflt + \RequirePackage{floatflt} +\fi +% \end{macrocode} +% Now the conditinal definition of the \texttt{pawfig} environment +% \begin{macrocode} +\newsavebox{\pawfigcaption} +% \end{macrocode} +% Savebox for the caption of the figure. +% \begin{macrocode} +\ifhave@floatflt + \newenvironment{pawfig}[2][\textwidth]{ + \savebox{\pawfigcaption}{#2} +% \end{macrocode} +% Save the second (mandatory) argument in the save box for the +% caption. +% \begin{macrocode} + \ifx\pawfigwidth\undefined + \newdimen\pawfigwidth + \fi + \pawfigwidth#1 + \ifdim\pawfigwidth>\textwidth + \pawfigwidth\textwidth + \fi +% \end{macrocode} +% Define the dimension \Lcs{pawfigwidth}, and set it to the first +% (optional) argument. Then test to see if this is bigger then the +% dimension \Lcs{textwidth}, if it is, then set it to that +% dimension. +% \begin{macrocode} + \begin{floatingfigure}{\pawfigwidth} + \begin{pawpict}[\pawfigwidth] + } + { + \end{pawpict} + \caption{\usebox{\pawfigcaption}} + \end{floatingfigure} + } +% \end{macrocode} +% Using the \texttt{floatingfigure} environment, we make a figure in +% the width of the text, if no optional argument is given, and then +% start the primitive \texttt{pawpict} environment. Finally the +% caption is put under the figure. +% \begin{macrocode} +\else + \newenvironment{pawfig}[2][\textwidth]{ + \savebox{\pawfigcaption}{#2} + \ifx\pawfigwidth\undefined + \newdimen\pawfigwidth + \fi + \pawfigwidth#1 + \begin{figure}[\figplacement] + \begin{pawpict}[\pawfigwidth] + } + { + \end{pawpict} + \caption{\usebox{\pawfigcaption}} + \end{figure} + } +\fi +% \end{macrocode} +% End of the conditional definition of \texttt{pawfig} environmanent. +% \end{macro} +% +% \begin{macro}{pawfigure} +% This is a simple environment, that takes two mandatory arguments: +% the width and the caption. Optional argument is the placement. +% \begin{macrocode} +\newenvironment{pawfigure}[3][htbp]{% + \savebox{\pawfigcaption}{#3} + \ifx\pawfigwidth\undefined + \newdimen\pawfigwidth + \fi + \pawfigwidth#2 + \begin{figure}[#1] + \begin{pawpict}[\pawfigwidth] +} +{ + \end{pawpict} + \caption{\usebox{\pawfigcaption}} + \end{figure} +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Picture include commands} +% +% \begin{macro}{\pawincludepict} +% This macro includes a file, putting it in a \texttt{pawpict} +% environment. The mandaory argument is the filename, the optional is +% the width of the picture. +% \begin{macrocode} +\newcommand{\pawincludepict}[2][\textwidth]{% + \begin{pawpict}% + \input{#2}% + \end{pawpict}% +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\pawincludefig} +% Much like above, only it is put in a \texttt{pawfig} environment, +% with to mandatory arguments, the filename, and the +% caption. Optionally the width of the figure may be specified. +% \begin{macrocode} +\newcommand{\pawincludefig}[3][\textwidth]{% + \begin{pawfig}[#1]{#3}% + \input{#2} % + \end{pawfig}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\pawincludefigure} +% Much like above, only it is put in a \texttt{pawfigure} environment, +% with three mandatory arguments, the filename, the width, and the +% caption. Optionally the placement of the figure may be specified. +% \begin{macrocode} +\newcommand{\pawincludefigure}[4][htbp]{% + \begin{pawfigure}[#1]{#3}{#4}% + \input{#2} % + \end{pawfigure}% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{The Drawing macroes} +% +% These macroes are not well documentated, I'm sorry \verb+:-(+. +% +% All the lines, curves, characters, etc.\ made by \HIGZ{} is made of +% horizontal and vertical lines, or dots. +% +% In time, these maybe substuted with more efficient macros. Since the +% number of command needed to draw a picture is large, it takes some +% time to process the picture. +% +% \begin{macro}{\higzstroke} +% This defines the basic stroke of \HIGZ{}, an either vertical or +% horizontal line. +% \begin{macrocode} +\def\higzstroke#1,#2,#3,#4;{ + \advance\higzloffs\higzllen + \ifnum\higzloffs>#1 + \advance\higzloffs-\higzllen + \advance\higzloffs-#1 + \higzloffs=-\higzloffs + \ifnum#2>0 + \put(\higzlx,\higzly){\line(#3,#4){\higzloffs}} + \fi + \ifnum#2<0 + \put(\higzlx,\higzly){\circle*{0}} + \fi + \higztemp=\higzloffs + \multiply\higztemp#3 + \advance\higzlx\higztemp + \higztemp=\higzloffs + \multiply\higztemp#4 + \advance\higzly\higztemp + \advance\higzllen-\higzloffs + \higzloffs=#1 + \else + \ifnum#2>0 + \put(\higzlx,\higzly){\line(#3,#4){\higzllen}} + \fi + \ifnum#2<0 + \put(\higzlx,\higzly){\circle*{0}} + \fi + \higzllen=0 + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\higzdased} +% Like above, only with spaces between the lines, to make dashed and +% punctured lines, curves etc. +% \begin{macrocode} +\def\higzdashed#1,#2,#3,#4,#5;{{ + \higzlx=#1 + \higzly=#2 + \higzllen=#5 + \higzloffs=\higzoffs + \loop + \ifnum\higzloffs<\higzadash + \ifnum\higzadash>1 + \higzstroke\higzadash,1,#3,#4; + \else + \higzstroke\higzadash,-1,#3,#4; + \fi + \else + \ifnum\higzloffs<\higzbdash + \higzstroke + \higzbdash,0,#3,#4; + \else + \ifnum\higzloffs<\higzcdash + \higztemp=\higzcdash + \advance\higztemp-\higzbdash + \ifnum\higztemp>1 + \higzstroke\higzcdash,1,#3,#4; + \else + \higzstroke\higzcdash,-1,#3,#4; + \fi + \else + \ifnum\higzloffs<\higzddash + \higzstroke\higzddash,0,#3,#4; + \else + \higzloffs=0 + \fi + \fi + \fi + \fi + \ifnum\higzllen>0 + \repeat + \global\higzoffs=\higzloffs +}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\higzsolid} +% This macro draws a solid line! +% \begin{macrocode} +\def\higzsolid#1,#2,#3,#4,#5;{ + \put(#1,#2){\line(#3,#4){#5}} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\higzhslant} +% This macro draws a slanted line made from small horizontal lines. +% \begin{macrocode} +\def\higzhslant#1,#2,#3;{ + \higzslope=#1 + \multiply\higzslope1000 + \advance\higzslope500 + \divide\higzslope#2 + \higzlen=\higzslope + \multiply\higzlen\higzstep + \divide\higzlen1000 + \higzdy=0 + \loop + \ifnum\higzdy<#2 + \higzx=\higzxx + \higzy=\higzyy + \higzdx=\higzslope + \multiply\higzdx\higzdy + \advance\higzdx500 + \divide\higzdx1000 + \advance\higzy\higzdy + \multiply\higzdx#3 + \advance\higzx\higzdx + \multiply\higzdx#3 + \advance\higzdx\higzlen + \ifnum\higzdx>#1 + \advance\higzlen#1 + \advance\higzlen-\higzdx + \fi + \higzline\higzx,\higzy,#3,0,\higzlen; + \advance\higzdy\higzstep + \repeat +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\higzvslant} +% This macro draws a slanted line made from small vertical lines. +% \begin{macrocode} +\def\higzvslant#1,#2,#3;{ + \higzslope=#2 + \multiply\higzslope1000 + \advance\higzslope500 + \divide\higzslope#1 + \higzlen=\higzslope + \multiply\higzlen\higzstep + \divide\higzlen1000 + \higzdx=0 + \loop + \ifnum\higzdx<#1 + \higzx=\higzxx + \higzy=\higzyy + \higzdy=\higzslope + \multiply\higzdy\higzdx + \advance\higzdy500 + \divide\higzdy1000 + \advance\higzx\higzdx + \multiply\higzdy#3 + \advance\higzy\higzdy + \multiply\higzdy#3 + \advance\higzdy\higzlen + \ifnum\higzdy>#2 + \advance\higzlen#2 + \advance\higzlen-\higzdy + \fi + \higzline\higzx,\higzy,0,#3,\higzlen; + \advance\higzdx\higzstep + \repeat + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\s} +% Draws a slanted line. This calls either \Lcs{higzhslant} or +% \Lcs{higzvslant} depending on the slope of the line. +% \begin{macrocode} +\def\s#1,#2;{ + \higzdx=#1{} + \ifnum\higzdx<0 + \higzdx=-\higzdx + \fi + \higzdy=#2{} + \ifnum\higzdy<0 + \higzdy=-\higzdy + \fi + \ifnum\higzdx<\higzdy + \ifnum#1<0 + \advance\higzxx#1 + \advance\higzyy#2 + \ifnum#2<0 + \higzvslant-#1,-#2,1; + \else + \higzvslant-#1,#2,-1; + \fi + \else + \ifnum#2<0 + \higzvslant#1,-#2,-1; + \else + \higzvslant#1,#2,1; + \fi + \advance\higzxx#1 + \advance\higzyy#2 + \fi + \else + \ifnum#2<0 + \advance\higzxx#1 + \advance\higzyy#2 + \ifnum#1<0 + \higzhslant-#1,-#2,1; + \else + \higzhslant#1,-#2,-1; + \fi + \else + \ifnum#1<0 + \higzhslant-#1,#2,-1; + \else + \higzhslant#1,#2,1; + \fi + \advance\higzxx#1 + \advance\higzyy#2 + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\h} +% Draws a horizontal line. +% \begin{macrocode} +\def\h#1;{ + \higzline\higzxx,\higzyy,1,0,#1; + \advance\higzxx#1 +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\r} +% Draws a horizontal line (reversed). +% \begin{macrocode} +\def\r#1;{ + \higzline\higzxx,\higzyy,-1,0,#1; + \advance\higzxx-#1 +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\U} +% Draw an upward line. +% \begin{macrocode} +\def\U#1;{ + \higzline\higzxx,\higzyy,0,1,#1; + \advance\higzyy#1 +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\D} +% Draws a downward line. +% \begin{macrocode} +\def\D#1;{ + \higzline\higzxx,\higzyy,0,-1,#1; + \advance\higzyy-#1 +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\m} +% Move to the point \texttt{(\#1,\#2)}. +% \begin{macrocode} +\def\m#1,#2;{ + \higzxx=#1 + \higzyy=#2 +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\higzdot} +% Draws a dot. +% \begin{macrocode} +\def\higzdot#1,#2;{ + \put(#1,#2){\circle*{\higzmsize}} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\higzplus} +% A plus (+) sign. +% \begin{macrocode} +\def\higzplus#1,#2;{ + \higzx=#1 + \multiply\higzx2 + \advance\higzx-\higzmsize + \divide\higzx2 + \put(\higzx,#2){\line(1,0){\higzmsize}} + \higzy=#2 + \multiply\higzy2 + \advance\higzy-\higzmsize + \divide\higzy2 + \put(#1,\higzy){\line(0,1){\higzmsize}} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\higzstar} +% Draws a star (an ``x'' on top of a ``+''). +% \begin{macrocode} +\def\higzstar#1,#2;{ + \higzplus#1,#2;\higzcross#1,#2; +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\higzcircle} +% A circle. +% \begin{macrocode} +\def\higzcircle#1,#2;{ + \put(#1,#2){\circle{\higzmsize}} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\higzcross} +% Draws an ``x'' +% \begin{macrocode} +\def\higzcross#1,#2;{ + \let\higzsave\higzline + \let\higzline\higzsolid + \higzlx=#1 + \multiply\higzlx2 + \advance\higzlx-\higzmsize + \divide\higzlx2\higzly=#2 + \multiply\higzly2 + \advance\higzly-\higzmsize + \divide\higzly2 + \m\higzlx,\higzly; + \s\higzmsize,\higzmsize; + \higzly=#2 + \multiply\higzly2 + \advance\higzly\higzmsize + \divide\higzly2 + \m\higzlx,\higzly; + \s\higzmsize,-\higzmsize; + \let\higzline\higzsave +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\p} +% Sets a point. \Lcs{higzmarker} is set by \HIGZ{}, to eihter +% \Lcs{higzplus}, \Lcs{higzcross}, \Lcs{higzstar}, etc.. +% \begin{macrocode} +\def\p#1,#2;{ + \higzmarker#1,#2; +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\f} +% Draws a frame. +% \begin{macrocode} +\def\f#1,#2;{ + \put(\higzxx,\higzyy){ + \makebox(#1,#2)[lb]{\rule{#1\unitlength}{#2\unitlength}}} +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Simple Text Producing Macroes} +% +% \begin{macrocode} +\newcommand{\CERNLIB}{\textsc{cernlib}\index{CERNLIB}} +\newcommand{\CMZ}{\textsc{cmz}\index{CMZ}} +\newcommand{\COMIS}{\textsc{comis}\index{COMIS}} +\newcommand{\CSPACK}{\textsc{cspack}\index{CSPACK}} +\newcommand{\FATMEN}{\textsc{fatmen}\index{FATMEN}} +\newcommand{\GEANT}{\textsc{geant}\index{GEANT}} +\newcommand{\GKS}{\textsc{gks}\index{GKS}} +\newcommand{\HBOOK}{\textsc{hbook}\index{HBOOK}} +\newcommand{\HEPDB}{\textsc{hepdb}\index{HEPDB}} +\newcommand{\HIGZ}{\textsc{higz}\index{HIGZ}} +\newcommand{\HPLOT}{\textsc{hplot}\index{HPLOT}} +\newcommand{\KUIP}{\textsc{kuip}\index{KUIP}} +\newcommand{\MINUIT}{\textsc{minuit}\index{MINUIT}} +\newcommand{\PATCHY}{\textsc{patchy}\index{PATCHY}} +\newcommand{\PAW}{\textsc{paw}\index{PAW}} +\newcommand{\SIGMA}{\textsc{sigma}\index{SIGMA}} +\newcommand{\PAWPP}{\textsc{paw++}\index{PAW++}} +\newcommand{\WWW}{\textsc{www}\index{WWW}} +\newcommand{\VAXTAP}{\textsc{vaxtap}\index{VAXTAP}} +\newcommand{\ZEBRA}{\textsc{zebra}\index{ZEBRA}} +% \end{macrocode} +% \iffalse +% +% \fi +% +% \Finale +% \PrintIndex \PrintChanges +\endinput diff --git a/macros/latex/contrib/pawpict/pawpict.ins b/macros/latex/contrib/pawpict/pawpict.ins new file mode 100644 index 0000000000..63ff25d762 --- /dev/null +++ b/macros/latex/contrib/pawpict/pawpict.ins @@ -0,0 +1,57 @@ +%% +%% This is file `pawpict.ins', the installation file for the +%% `pawpict' package. +%% +%% Copyright (C) 1997 Christian Holm. +%% +%% The pawpict package is free software; you can redistribute it +%% and/or modify it under the terms of the GNU General Public License +%% as published by the Free Software Foundation; either version 2 of +%% the License, or (at your option) any later version. +%% +%% The pawpict package 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. See the +%% GNU General Public License for more details. +%% +%% You should have received a copy of the GNU General Public License +%% along with this program; if not, write to the Free Software +%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +%% +\def\batchfile{pawpict.ins} +\input docstrip.tex + +\keepsilent +\preamble + +Copyright (C) 1997 Christian Holm. + +This file is NOT the source for pawpict, because almost all comments +have been stripped from it. It is NOT the preferred form of pawpict +for making modifications to it. + +Therefore you can NOT redistribute and/or modify THIS file. You can +however redistribute the complete source (pawpict.dtx and +pawpict.ins) and/or modify it under the terms of the GNU General +Public License as published by the Free Software Foundation; either +version 2, or (at your option) any later version. + +The pawpict package 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. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +\endpreamble +\generateFile{pawpict.sty}{f}{\from{pawpict.dtx}{package}} + +\Msg{***********************************************************} +\Msg{* To finish the installation you have to move the file} +\Msg{* `pawpict.sty' into a directory searched by TeX.} +\Msg{*} +\Msg{* To produce the documentation run the file `pawpict.dtx'} +\Msg{* through LaTeX and Makeindex as said in the README file.} +\Msg{***********************************************************} -- cgit v1.2.3