From bbba45fb7abce41b92f7a75e34873d6387dc2e11 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 24 Mar 2020 20:51:28 +0000 Subject: pst-tools (24mar20) git-svn-id: svn://tug.org/texlive/trunk@54518 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/generic/pst-tools/Changes | 3 + Master/texmf-dist/doc/generic/pst-tools/README | 1 + .../doc/generic/pst-tools/pst-tools-doc.pdf | Bin 116833 -> 128099 bytes .../doc/generic/pst-tools/pst-tools-doc.tex | 62 +++++++++++-- .../texmf-dist/tex/generic/pst-tools/pst-tools.tex | 100 ++++++++++++++++++++- .../texmf-dist/tex/latex/pst-tools/pst-tools.sty | 2 +- 6 files changed, 159 insertions(+), 9 deletions(-) (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/generic/pst-tools/Changes b/Master/texmf-dist/doc/generic/pst-tools/Changes index 0b2745e9985..e5c3d947273 100644 --- a/Master/texmf-dist/doc/generic/pst-tools/Changes +++ b/Master/texmf-dist/doc/generic/pst-tools/Changes @@ -1,4 +1,6 @@ ..... pst-tools.tex +0.10 2020-03-24 - added the random macros from random.tex which is no more + on TeXLive 0.09b 2017-12-03 - modified pro file - added PostScript function list to the documentation 0.09a 2017-11-29 - modified pro file @@ -20,6 +22,7 @@ 2012-01-01 first version + ---- pst-tools.pro 0.06 2017-11-30 - added function concatarray 0.05 2017-11-29 - added function concatstrings diff --git a/Master/texmf-dist/doc/generic/pst-tools/README b/Master/texmf-dist/doc/generic/pst-tools/README index eea7ff0347c..b1266c5b7fc 100644 --- a/Master/texmf-dist/doc/generic/pst-tools/README +++ b/Master/texmf-dist/doc/generic/pst-tools/README @@ -23,3 +23,4 @@ with pdftex, use the sequence latex->dvips->ps2pdf. %% $Id: README 286 2010-02-11 09:40:41Z herbert $ +hvoss@tug.org \ No newline at end of file diff --git a/Master/texmf-dist/doc/generic/pst-tools/pst-tools-doc.pdf b/Master/texmf-dist/doc/generic/pst-tools/pst-tools-doc.pdf index 299cc4ad38c..15cd40da5c4 100644 Binary files a/Master/texmf-dist/doc/generic/pst-tools/pst-tools-doc.pdf and b/Master/texmf-dist/doc/generic/pst-tools/pst-tools-doc.pdf differ diff --git a/Master/texmf-dist/doc/generic/pst-tools/pst-tools-doc.tex b/Master/texmf-dist/doc/generic/pst-tools/pst-tools-doc.tex index 2473feb2fed..9296568bc34 100644 --- a/Master/texmf-dist/doc/generic/pst-tools/pst-tools-doc.tex +++ b/Master/texmf-dist/doc/generic/pst-tools/pst-tools-doc.tex @@ -1,6 +1,6 @@ -%% $Id: pst-tools-doc.tex 675 2017-12-03 08:39:12Z herbert $ +%% $Id: pst-tools-doc.tex 1163 2020-03-24 09:47:58Z herbert $ \documentclass[11pt,english,BCOR=10mm,DIV=13,toc=bibliography,parskip=false, - headings=small, headinclude=false,footinclude=false,oneside]{pst-doc} + headings=small,headinclude=false,footinclude=false,oneside]{pst-doc} \usepackage[utf8]{inputenc} \usepackage{pst-tools} \let\pstToolsFV\fileversion @@ -24,7 +24,7 @@ \begin{abstract} This package defines some tools which are useful for all packages not only the PSTricks like packages. - +Since the version 0.10 it includes the macros from \texttt{random.tex}. \vfill \noindent Thanks to: @@ -188,7 +188,7 @@ It must be a comma separated list. \begin{lstlisting} -\psRegisterList{Color}{violet,blue,green,red}% defines macro \Color +\psRegisterList{Color}{yellow,blue,green,red}% defines macro \Color \begin{pspicture}(-7,-4.5)(7,5.5) \psaxes{->}(0,0)(-6.5,-4.5)(6.75,5) \psset{plotpoints=400,algebraic,linewidth=1pt,fillstyle=solid,opacity=0.4} @@ -201,7 +201,7 @@ It must be a comma separated list. \end{pspicture} \end{lstlisting} -\psRegisterList{Color}{violet,blue,green,red}% defines macro \Color +\psRegisterList{Color}{yellow,blue,green,red}% defines macro \Color \begin{pspicture}(-7,-4.5)(7,5.5) \psaxes{->}(0,0)(-6.5,-4.5)(6.75,5) \psset{plotpoints=400,algebraic,linewidth=1pt,fillstyle=solid,opacity=0.4} @@ -213,6 +213,58 @@ It must be a comma separated list. \end{pspicture} + +\section{Random numbers} +The file \LFile{random.tex} from Donald Arseneau is no more part of CTAN due to a missing licence statement. +\LFile{pst-tools} at version 0.10 includes the code. The documentation was inside the package otself: + +Random integers are generated in the range 1 to 2147483646 by the +macro \Lcs{nextrandom}. The result is returned in the counter \Lcs{randomi}. +Do not change \Lcs{randomi} except, perhaps, to initialize it at some +random value. If you do not initialize it, it will be initialized +using the time and date. (This is a sparse initialization, giving +fewer than a million different starting values, but you should use +other sources of numbers if they are available--just remember that +most of the numbers available to TeX are not at all random.) + +The \Lcs{nextrandom} command is not very useful by itself, unless you +have exactly 2147483646 things to choose from. Much more useful +is the \Lcs{setrannum} command which sets a given counter to a random +value within a specified range. There are three parameters: + +\Lcs{setrannum\{\}\{\}\{\}} + +For example, to +simulate a die-roll: + +\verb|\setrannum{\die}{1}{6}| \verb|\ifcase\die...| . + +If you need random numbers that are not integers, you will have to +use dimen registers and \Lcs{setrandimen}. For example, to set a random +page width: + +\Lcs{setrandimen} \Lcs{hsize\{3in\}\{6.5in\}} + + The »\Lcs{pointless}« macro +will remove the »pt« that TeX gives so you can use the dimensions +as pure `real' numbers. In that case, specify the range in pt units. +For example, + + \verb|\setrandimen\answer{2.71828pt}{3.14159pt}| + + The answer is \verb|\pointless\answer|. + +The random number generator is the one by Lewis, Goodman, and Miller +(1969) and used as \texttt{ran0} in »Numerical Recipies« using Schrage's +method for avoiding overflows. The multiplier is $16807 (7^5)$, the +added constant is 0, and the modulus is $2147483647 (2^{31}-1)$. The +range of integers generated is $1 - 2147483646$. A smaller range would +reduce the complexity of the macros a bit, but not much--most of the +code deals with initialization and type-conversion. On the other hand, +the large range may be wasted due to the sparse seed initialization. + + + \section{List of the defined PostScript functions} \footnotesize diff --git a/Master/texmf-dist/tex/generic/pst-tools/pst-tools.tex b/Master/texmf-dist/tex/generic/pst-tools/pst-tools.tex index fa54097db48..3b25402ba8d 100644 --- a/Master/texmf-dist/tex/generic/pst-tools/pst-tools.tex +++ b/Master/texmf-dist/tex/generic/pst-tools/pst-tools.tex @@ -1,4 +1,4 @@ -%% $Id: pst-tools.tex 674 2017-12-02 22:04:53Z herbert $ +%% $Id: pst-tools.tex 1163 2020-03-24 09:47:58Z herbert $ %% %% This is file `pst-tools.tex', %% @@ -26,8 +26,8 @@ % interface to the `xkeyval' package \pst@addfams{pst-tools} % -\def\fileversion{0.09b} -\def\filedate{2017/12/03} +\def\fileversion{0.10} +\def\filedate{2020/03/24} \message{`PST-tools' v\fileversion, \filedate\space (hv)} % \define@key[psset]{pst-tools}{decimalSeparator}[.]{\def\psk@decimalSeparator{#1}}% @@ -131,6 +131,100 @@ \advance\pst@cnto by 1 }% } +% RANDOM.TEX v.1 (Donald Arseneau) +% Generating "random" numbers in TeX. +% +% Random integers are generated in the range 1 to 2147483646 by the +% macro \nextrandom. The result is returned in the counter \randomi. +% Do not change \randomi except, perhaps, to initialize it at some +% random value. If you do not initialize it, it will be initialized +% using the time and date. (This is a sparse initialization, giving +% fewer than a million different starting values, but you should use +% other sources of numbers if they are available--just remember that +% most of the numbers available to TeX are not at all random.) +% +% The \nextrandom command is not very useful by itself, unless you +% have exactly 2147483646 things to choose from. Much more useful +% is the \setrannum command which sets a given counter to a random +% value within a specified range. There are three parameters: +% \setrannum {} {} {}. For example, to +% simulate a die-roll: \setrannum{\die}{1}{6} \ifcase\die... . +% +% If you need random numbers that are not integers, you will have to +% use dimen registers and \setrandimen. For example, to set a random +% page width: \setrandimen \hsize{3in}{6.5in}. The "\pointless" macro +% will remove the "pt" that TeX gives so you can use the dimensions +% as pure `real' numbers. In that case, specify the range in pt units. +% For example, +% \setrandimen\answer{2.71828pt}{3.14159pt} +% The answer is \pointless\answer. +% +% The random number generator is the one by Lewis, Goodman, and Miller +% (1969) and used as "ran0" in "Numerical Recipies" using Schrage's +% method for avoiding overflows. The multiplier is 16807 (7^5), the +% added constant is 0, and the modulus is 2147483647 (2^{31}-1). The +% range of integers generated is 1 - 2147483646. A smaller range would +% reduce the complexity of the macros a bit, but not much--most of the +% code deals with initialization and type-conversion. On the other hand, +% the large range may be wasted due to the sparse seed initialization. + +\newcount\randomi % the random number seed (while executing) +\global\randomi\catcode`\@ % scratch variable during definitions +\catcode`\@=11 + +\def\nextrandom{\begingroup + \ifnum\randomi<\@ne % then initialize with time + \global\randomi\time + \global\multiply\randomi388 \global\advance\randomi\year + \global\multiply\randomi31 \global\advance\randomi\day + \global\multiply\randomi97 \global\advance\randomi\month + \message{Randomizer initialized to \the\randomi.}% + \nextrandom \nextrandom \nextrandom + \fi + \count@ii\randomi + \divide\count@ii 127773 % modulus = multiplier * 127773 + 2836 + \count@\count@ii + \multiply\count@ii 127773 + \global\advance\randomi-\count@ii % random mod 127773 + \global\multiply\randomi 16807 + \multiply\count@ 2836 + \global\advance\randomi-\count@ + \ifnum\randomi<\z@ \global\advance\randomi 2147483647\relax\fi + \endgroup +} + +\countdef\count@ii=2 % use only in boxes! +\ifx\@tempcnta\undefined \csname newcount\endcsname \@tempcnta \fi +\ifx\@tempcntb\undefined \csname newcount\endcsname \@tempcntb \fi + +\def\setrannum#1#2#3{% count register, minimum, maximum + \@tempcnta#3\advance\@tempcnta-#2\advance\@tempcnta\@ne + \@tempcntb 2147483645 % = m - 2 = 2^{31} - 3 + \divide\@tempcntb\@tempcnta + \getr@nval + \advance\ranval#2\relax + #1\ranval +} + +\def\setrandim#1#2#3{% dimen register, minimum length, maximum length + \dimen@#2\dimen@ii#3\relax + \setrannum\ranval\dimen@\dimen@ii + #1\ranval sp\relax +} + +\def\getr@nval{% The values in \@tempcnta and \@tempcntb are parameters + \nextrandom + \ranval\randomi \advance\ranval\m@ne \divide\ranval\@tempcntb + \ifnum\ranval<\@tempcnta\else \expandafter\getr@nval \fi +} + +\def\pointless{\expandafter\PoinTless\the} +{\catcode`p=12 \catcode`t=12 +\gdef\PoinTless#1pt{#1}} + +\catcode`\@=\randomi +\global\randomi=0 +\newcount\ranval \catcode`\@=\PstAtCode\relax % diff --git a/Master/texmf-dist/tex/latex/pst-tools/pst-tools.sty b/Master/texmf-dist/tex/latex/pst-tools/pst-tools.sty index bdab72893d1..92dbf411c4e 100644 --- a/Master/texmf-dist/tex/latex/pst-tools/pst-tools.sty +++ b/Master/texmf-dist/tex/latex/pst-tools/pst-tools.sty @@ -9,4 +9,4 @@ \@addtofilelist{pst-tools.pro}}{}% \endinput -%% $Id: pst-tools.sty 606 2017-10-02 17:34:18Z herbert $ +%% $Id: pst-tools.sty 680 2017-12-05 12:22:55Z herbert $ -- cgit v1.2.3