diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-09 00:56:57 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-09 00:56:57 +0000 |
commit | f07bb53970ee2ecc53f81a206a3d3a67ef665e4a (patch) | |
tree | 6f57a1d62971db79e5ff023bdfd83b22cb971dc9 /Master/texmf-dist/doc/generic/pst-infixplot | |
parent | 007f67a693e4d031fd3d792df8e4d5f43e2cb2e7 (diff) |
doc 6
git-svn-id: svn://tug.org/texlive/trunk@85 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/generic/pst-infixplot')
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-infixplot/README | 5 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-infixplot/infix-RPN.sty | 3 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-infixplot/infix-RPN.tex | 524 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-infixplot/pst-infixplot-doc.tex | 216 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-infixplot/pst-infixplot.pdf | bin | 0 -> 140655 bytes |
5 files changed, 748 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-infixplot/README b/Master/texmf-dist/doc/generic/pst-infixplot/README new file mode 100644 index 00000000000..4074d933719 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-infixplot/README @@ -0,0 +1,5 @@ +Plotting functions with pst-plot is very powerful but sometimes difficult +to learn since the syntax of \psplot and \parametricplot requires some +PostScript knowledge. What infix-RPN and pst-infixplot styles intend to +do is to simplify the usage of pst-plot for the beginner, providing macro +commands that convert natural mathematical expressions to PS syntax. diff --git a/Master/texmf-dist/doc/generic/pst-infixplot/infix-RPN.sty b/Master/texmf-dist/doc/generic/pst-infixplot/infix-RPN.sty new file mode 100644 index 00000000000..e7553e8db8b --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-infixplot/infix-RPN.sty @@ -0,0 +1,3 @@ +\ProvidesPackage{infix-RPN}[2004/02/25 package wrapper for infix-RPN.tex] +\input infix-RPN.tex +\endinput diff --git a/Master/texmf-dist/doc/generic/pst-infixplot/infix-RPN.tex b/Master/texmf-dist/doc/generic/pst-infixplot/infix-RPN.tex new file mode 100644 index 00000000000..d9ef93a816a --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-infixplot/infix-RPN.tex @@ -0,0 +1,524 @@ +%% +%% This is file `infix-RPN.tex', +%% +%% IMPORTANT NOTICE: +%% +%% Package `infix-RPN.tex' +%% +%% Main code: +%% Jean-Côme Charpentier <jean-come.charpentier@wanadoo.fr> +%% +%% Contributions by +%% Christophe Jorssen <christophe.jorssen@libre.fr.invalid> +%% `libre' is the french word for `free' :-) +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory CTAN:/macros/latex/base/lppl.txt. +%% +%% DESCRIPTION: +%% `infix-RPN' is a package to convert infix expressions to +%% Reverse Polish Notation +%% +%% +\def\RCS$#1: #2 ${\expandafter\def\csname RCS#1\endcsname{#2}} +\RCS$Revision: 1.7 $ +\RCS$Date: 2004-07-06 23:41:52+02 $ + +\def\fileversion{0.1} +\csname infixRPNLoaded\endcsname +\let\infixRPNLoaded\endinput +\message{`infix-RPN' v\fileversion\space (Rev \RCSRevision, \RCSDate), J.-C.Charpentier/C.Jorssen} + +\edef\opAtCode{\the\catcode`\@} +\edef\opHatCode{\the\catcode`\^} +\edef\opUnderscoreCode{\the\catcode`\_} +\catcode`\@=11\relax +\catcode`\^=12\relax +\catcode`\_=11\relax + +\def\s@pow{exp} +\def\s@lpar{(} +\def\s@rpar{)} +\def\s@comma{,} + +\def\DeclareNewPSOperator{% + \bgroup + \catcode`\_=11\relax + \DeclareNewPSOperator@i +} + +\def\DeclareNewPSOperator@i#1{% + \expandafter\ifx\csname PS@operator@list\endcsname\relax + \gdef\PS@operator@list{#1}% + \else + \xdef\PS@operator@list{#1,\PS@operator@list}% + \fi + \expandafter\gdef\csname s@#1\endcsname{#1}% + \egroup +} + +\DeclareNewPSOperator{add} +\DeclareNewPSOperator{sub} +\DeclareNewPSOperator{mul} +\DeclareNewPSOperator{div} +\DeclareNewPSOperator{exp} +\DeclareNewPSOperator{abs} +\DeclareNewPSOperator{sin} +\DeclareNewPSOperator{cos} +\DeclareNewPSOperator{atan} +\DeclareNewPSOperator{neg} +\DeclareNewPSOperator{ceiling} +\DeclareNewPSOperator{floor} +\DeclareNewPSOperator{truncate} +\DeclareNewPSOperator{sqrt} +\DeclareNewPSOperator{ln} +\DeclareNewPSOperator{log} + + +\newcount\@parenthesis +\newcount\token@cpt +\newif\if@begin@token +\newif\if@in@number +\newif\if@in@decimal +\newif\if@in@name +\newif\if@sign +\def\@tokencreate#1{% + \expandafter\xdef\csname op@token\the\token@cpt\endcsname{#1}% + \global\advance\token@cpt\@ne + \expandafter\global + \expandafter\let\csname op@token\the\token@cpt\endcsname\relax + \global\advance\token@cpt\m@ne +} +\def\@tokenappend#1{% + \expandafter\xdef\csname op@token\the\token@cpt\endcsname + {\csname op@token\the\token@cpt\endcsname#1}% +} +\def\@tokensingle#1{% + \edef\@arg{#1}% + \if@in@name + \global\advance\token@cpt\@ne + \@in@namefalse + \fi + \if@in@number + \global\advance\token@cpt\@ne + \@in@numberfalse + \@in@decimalfalse + \fi + \ifx\@arg\s@add + \if@sign + % ignore + sign + \global\advance\token@cpt\m@ne + \else + \@tokencreate{#1}% + \fi + \else\ifx\@arg\s@sub + \if@sign + \@tokencreate{\s@neg}% + \else + \@tokencreate{#1}% + \fi + \else + \@tokencreate{#1}% + \fi\fi + \global\advance\token@cpt\@ne +} +\def\@tokenuse#1{% + \expandafter\ifx\csname op@token#1\endcsname\s@comma% + \else + \xdef\RPN{\RPN\space\csname op@token#1\endcsname}% + \fi +} + +\let\endscanline\relax +\def\scan@line{% + \begingroup + \catcode`\ =12 + \@parenthesis=\z@ + \@in@numberfalse + \@in@decimalfalse + \@in@namefalse + \global\token@cpt=\@ne + \global\@signfalse + \scan@@line +} +\def\scan@@line#1{\scan@@@line#1\endscanline\endgroup} +\def\scan@@@line#1#2\endscanline{% + \op@testchar{#1}% + \ifop@isdigit + \global\@signfalse + \if@in@number + \@tokenappend{#1}% + \else \if@in@name + \@in@namefalse + \@in@numbertrue +% \global\advance\token@cpt\@ne +% \@tokencreate{#1}% + \@tokenappend{#1}% + \else + \@in@numbertrue + \@tokencreate{#1}% + \fi\fi + \fi + \ifop@isplus + \@tokensingle{\s@add}% + \global\@signtrue + \fi + \ifop@isminus + \@tokensingle{\s@sub}% + \global\@signtrue + \fi + \ifop@ismultiply + \@tokensingle{\s@mul}% + \global\@signtrue + \fi + \ifop@isdivide + \@tokensingle{\s@div}% + \global\@signtrue + \fi + \ifop@ispower + \@tokensingle{\s@pow}% + \global\@signtrue + \fi + \ifop@isdecimalsep + \global\@signfalse + \if@in@decimal + \errmessage{Syntax error: number with multiple separators!}% + \else \if@in@number + \@in@decimaltrue + \@tokenappend{.}% + \else + \@tokencreate{.}% + \@in@numbertrue + \@in@decimaltrue + \fi\fi + \fi + \ifop@iscomma + \@tokensingle{,}% + \global\@signtrue + \fi + \ifop@islparenthesis + \@tokensingle{(}% + \global\@signtrue + \fi + \ifop@isrparenthesis + \global\@signfalse + \@tokensingle{)}% + \fi + \ifop@isspace +% \if@in@number +% \@in@numberfalse +% \@in@decimalfalse +% \global\advance\token@cpt\@ne +% \else \if@in@name +% \@in@namefalse +% \global\advance\token@cpt\@ne +% \fi\fi + \fi + \ifop@isother + \global\@signfalse + \if@in@name + \@tokenappend{#1}% + \else \if@in@number + \@in@numberfalse + \@in@decimalfalse + \@in@nametrue +% \global\advance\token@cpt\@ne +% \@tokencreate{#1}% + \@tokenappend{#1}% +% \errmessage{Syntax error: an operator is missing! You can NOT use implicit operation.}% + \else + \@in@nametrue + \@tokencreate{#1}% + \fi\fi + \fi + \def\arg{#2}% + \ifx\empty\arg + \let\next\relax + \else + \let\next\scan@@@line + \fi + \expandafter\next\arg\endscanline +} +\count255=`\0 \edef\op@numbegin{\the\count255} +\count255=`\9 \edef\op@numend{\the\count255} +\count255=`\+ \edef\op@plus{\the\count255} +\count255=`\- \edef\op@minus{\the\count255} +\count255=`\* \edef\op@multiply{\the\count255} +\count255=`\/ \edef\op@divide{\the\count255} +\count255=`\^ \edef\op@power{\the\count255} +\count255=`\. \edef\op@dot{\the\count255} +\count255=`\, \edef\op@comma{\the\count255} +\count255=`\( \edef\op@lparenthesis{\the\count255} +\count255=`\) \edef\op@rparenthesis{\the\count255} +\edef\op@space{32} +\newif\ifop@isdigit +\newif\ifop@isplus +\newif\ifop@isminus +\newif\ifop@ismultiply +\newif\ifop@isdivide +\newif\ifop@ispower +\newif\ifop@isdecimalsep +\newif\ifop@iscomma +\newif\ifop@islparenthesis +\newif\ifop@isrparenthesis +\newif\ifop@isspace +\newif\ifop@isother +\def\op@testchar#1{% + \op@isdigitfalse + \op@isplusfalse + \op@isminusfalse + \op@ismultiplyfalse + \op@isdividefalse + \op@ispowerfalse + \op@isdecimalsepfalse + \op@iscommafalse + \op@islparenthesisfalse + \op@isrparenthesisfalse + \op@isspacefalse + \op@isotherfalse + \count255=`#1\relax + \ifnum\count255=\op@plus \relax + \op@isplustrue + \else \ifnum\count255=\op@minus \relax + \op@isminustrue + \else \ifnum\count255=\op@multiply \relax + \op@ismultiplytrue + \else \ifnum\count255=\op@divide \relax + \op@isdividetrue + \else \ifnum\count255=\op@power \relax + \op@ispowertrue + \else \ifnum\count255=\op@dot \relax + \op@isdecimalseptrue + \else \ifnum\count255=\op@comma \relax + \op@iscommatrue + \else \ifnum\count255=\op@lparenthesis \relax + \op@islparenthesistrue + \else \ifnum\count255=\op@rparenthesis \relax + \op@isrparenthesistrue + \else \ifnum\count255=\op@space \relax + \op@isspacetrue + \else \ifnum\count255<\op@numbegin \relax + \op@isothertrue + \else \ifnum\count255>\op@numend \relax + \op@isothertrue + \else \op@isdigittrue + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +} + +\def\search@term#1#2{% + \begingroup + \count1=#1\relax + \count255=#2\relax + \ifnum\count1=\count255 + \@tokenuse{#1}% + \else + \count5=\count255 + \count7=\count1 + \advance\count7\m@ne + \count3=\z@ + \loop + \ifnum\count5>\count7 + \expandafter\ifx\csname op@token\the\count5\endcsname\s@rpar\relax + \advance\@parenthesis\@ne + \fi + \expandafter\ifx\csname op@token\the\count5\endcsname\s@lpar\relax + \advance\@parenthesis\m@ne + \fi + \expandafter\ifx\csname op@token\the\count5\endcsname\s@add\relax + \ifnum\@parenthesis=\z@ + \count3=\count5 + \count5=\z@ + \fi + \fi + \expandafter\ifx\csname op@token\the\count5\endcsname\s@sub\relax + \ifnum\@parenthesis=\z@ + \count3=\count5 + \count5=\z@ + \fi + \fi + \expandafter\ifx\csname op@token\the\count5\endcsname\s@comma\relax + \ifnum\@parenthesis=\z@ + \count3=\count5 + \count5=\z@ + \fi + \fi + \advance\count5\m@ne + \repeat + \ifnum\count3=\z@ + \ifnum\@parenthesis=\z@ + \search@factor{\the\count1}{\the\count255}% + \else + \errmessage{Syntax error: unbalanced parenthesis!}% + \fi + \else + \advance\count3\m@ne + \search@term{\the\count1}{\the\count3}% + \advance\count3\tw@ + \search@term{\the\count3}{\the\count255}% + \advance\count3\m@ne + \@tokenuse{\the\count3}% + \fi + \fi + \endgroup +} +\def\search@factor#1#2{% + \begingroup + \count1=#1\relax + \count255=#2\relax + \ifnum\count1=\count255 + \@tokenuse{\the\count1}% + \else + \count5=\count255 + \count7=\count1 + \advance\count7\m@ne + \count3=\z@ + \loop + \ifnum\count5>\count7 + \expandafter\ifx\csname op@token\the\count5\endcsname\s@rpar\relax + \advance\@parenthesis\@ne + \fi + \expandafter\ifx\csname op@token\the\count5\endcsname\s@lpar\relax + \advance\@parenthesis\m@ne + \fi + \expandafter\ifx\csname op@token\the\count5\endcsname\s@mul\relax + \ifnum\@parenthesis=\z@ + \count3=\count5 + \count5=\z@ + \fi + \fi + \expandafter\ifx\csname op@token\the\count5\endcsname\s@div\relax + \ifnum\@parenthesis=\z@ + \count3=\count5 + \count5=\z@ + \fi + \fi + \advance\count5\m@ne + \repeat + \ifnum\count3=\z@ + \ifnum\@parenthesis=\z@ + \search@power{\the\count1}{\the\count255}% + \else + \errmessage{! Syntax error: unbalanced parenthesis}% + \fi + \else + \advance\count3\m@ne + \search@factor{\the\count1}{\the\count3}% + \advance\count3\tw@ + \search@factor{\the\count3}{\the\count255}% + \advance\count3\m@ne + \@tokenuse{\the\count3}% + \fi + \fi + \endgroup +} +\def\search@power#1#2{% + \begingroup + \count1=#1\relax + \count255=#2\relax + \ifnum\count1=\count255 + \@tokenuse{#1}% + \else + \count5=\count255 + \count7=\count1 + \advance\count7\m@ne + \count3=\z@ + \loop + \ifnum\count5>\count7 + \expandafter\ifx\csname op@token\the\count5\endcsname\s@rpar\relax + \advance\@parenthesis\@ne + \fi + \expandafter\ifx\csname op@token\the\count5\endcsname\s@lpar\relax + \advance\@parenthesis\m@ne + \fi + \expandafter\ifx\csname op@token\the\count5\endcsname\s@pow\relax + \ifnum\@parenthesis=\z@ + \count3=\count5 + \count5=\z@ + \fi + \fi + \advance\count5\m@ne + \repeat + \ifnum\count3=\z@ + \ifnum\@parenthesis=\z@ + \search@primary{\the\count1}{\the\count255}% + \else + \errmessage{! Syntax error: unbalanced parenthesis}% + \fi + \else + \advance\count3\m@ne + \search@power{\the\count1}{\the\count3}% + \advance\count3\tw@ + \search@power{\the\count3}{\the\count255}% + \advance\count3\m@ne + \@tokenuse{\the\count3}% + \fi + \fi + \endgroup +} +\def\search@primary#1#2{% + \begingroup + \count1=#1\relax + \count255=#2\relax + \ifnum\count1=\count255 + \@tokenuse{#1}% + \else + \edef\current@cnt{#1}% + \expandafter\compare@PS@operator\PS@operator@list,\@nil + \expandafter\ifx\csname op@token#1\endcsname\s@lpar\relax + \expandafter\ifx\csname op@token#2\endcsname\s@rpar\relax + \advance\count1\@ne + \advance\count255\m@ne + \search@term{\the\count1}{\the\count255}% + \else + \errmessage{Syntax error: Garbage after parenthesis + (tokens '#1' to '#2')}% + \fi + \fi + \fi + \endgroup +} + +\let\@nil\relax + +\def\compare@PS@operator#1,#2\@nil{% + \def\@tempa{#1}% + \def\@tempb{#2}% + \expandafter\ifx\csname op@token\current@cnt\endcsname\@tempa% + \advance\count1\@ne + \search@primary{\the\count1}{\the\count255}% + \advance\count1\m@ne + \@tokenuse{\the\count1}% + \fi + \ifx\@tempb\empty + \let\next\relax + \let\@tempb\relax + \else + \let\next\compare@PS@operator + \fi + \expandafter\next\@tempb\@nil +} + + +\def\infixtoRPN{% + \begingroup + \catcode`\ =12 + \catcode`\^=12 + \catcode`\_=11 + \infixt@RPN +} +\def\infixt@RPN#1{% + \xdef\@expression{#1}% + \endgroup + \def\RPN{}% + \expandafter\scan@line\expandafter{\@expression}% + \expandafter\ifx\csname op@token\the\token@cpt\endcsname\relax + \advance\token@cpt\m@ne + \fi + \search@term{1}{\the\token@cpt}% +} + +\catcode`\@=\opAtCode\relax +\catcode`\^=\opHatCode\relax +\catcode`\_=\opUnderscoreCode\relax +\endinput diff --git a/Master/texmf-dist/doc/generic/pst-infixplot/pst-infixplot-doc.tex b/Master/texmf-dist/doc/generic/pst-infixplot/pst-infixplot-doc.tex new file mode 100644 index 00000000000..022ec07f0dc --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-infixplot/pst-infixplot-doc.tex @@ -0,0 +1,216 @@ +\documentclass{article} + +\usepackage[T1]{fontenc} +\usepackage[ansinew]{inputenc} + +\usepackage[a4paper,dvips,margin=1.5cm,includeheadfoot]{geometry} + +\usepackage{pst-infixplot,fancyhdr} + +\usepackage[pstricks,baw]{fvrb-ex} + +\makeatletter +\renewcommand{\Begin@Example}{% +\parindent=0pt +\multiply\topsep by 2 \VerbatimEnvironment +\begin{VerbatimOut}[codes={\catcode`\£=12\catcode`\?=12\catcode`\&=12% + \catcode`\"=12}]{\jobname.tmp}} + +\renewcommand{\Below@Example}[1]{% +\VerbatimInput[gobble=0,commentchar=£,commandchars=?&",numbersep=3pt]% + {\jobname.tmp} +\catcode`\£=9\relax% +\NoHighlight@Attributes % To suppress possible highlighting +\ifFvrbEx@Grid\vspace{5pt}\fi +#1% +\ifFvrbEx@Grid\vspace{5pt}\fi +\par} + +\renewcommand{\SideBySide@Example}[1]{% +\@tempdimb=\FV@XRightMargin \advance\@tempdimb -5mm +\begin{minipage}[c]{\@tempdimb} + \fvset{xrightmargin=0pt} + \catcode`\£=9\relax% + \NoHighlight@Attributes % To suppress possible highlighting + #1 +\end{minipage}% +\@tempdimb=\textwidth \advance\@tempdimb -\FV@XRightMargin \advance\@tempdimb 5mm +\begin{minipage}[c]{\@tempdimb} + \VerbatimInput[gobble=0,commentchar=£,commandchars=?&",numbersep=3pt, + xleftmargin=5mm,xrightmargin=0pt]{\jobname.tmp} +\end{minipage}} +% The \NoHighlight@Attributes from `hbaw' and `hcolors' packages +% must be modified too +\def\NoHighlight@Attributes{% +\catcode`\?=0\relax% +\catcode`\&=1\relax% +\catcode`\"=2\relax% +\def\HLa##1{##1}% +\def\HLb##1{##1}% +\def\HLc##1{##1}% +\def\HLd##1{##1}% +\def\HLe##1{##1}% +\def\HLf##1{##1}% +\def\HLBFa##1{##1}% +\def\HLBFb##1{##1}% +\def\HLBFc##1{##1}% +\def\HLBFd##1{##1}% +\def\HLBFe##1{##1}% +\def\HLBFf##1{##1}% +\def\HLITa##1{##1}% +\def\HLITb##1{##1}% +\def\HLITc##1{##1}% +\def\HLITd##1{##1}% +\def\HLITe##1{##1}% +\def\HLITf##1{##1}% +\def\HLCBBa##1{##1}% +\def\HLCBBb##1{##1}% +\def\HLCBBc##1{##1}% +\def\HLCBBd##1{##1}% +\def\HLCBBe##1{##1}% +\def\HLCBBf##1{##1}% +\def\HLCBBz##1{##1}% +\def\HLCBWa##1{##1}% +\def\HLCBWb##1{##1}% +\def\HLCBWc##1{##1}% +\def\HLCBWd##1{##1}% +\def\HLCBWe##1{##1}% +\def\HLCBWf##1{##1}% +\def\HLCBWz##1{##1}% +} + +\makeatother + +\fvset{numbers=none,frame=single,labelposition=topline,gobble=2} + +\DefineShortVerb{\|} + +\newcommand{\pstInfixplotPackage}{\textbf{`pst-infixplot'}} +\newcommand{\InfixRPNPackage}{\textbf{`infix-RPN'}} + +\lhead{\InfixRPNPackage{} -- \pstInfixplotPackage}\rhead{From infix expressions to Reverse Polish +Notation} \pagestyle{fancy} + +\begin{document} +\VerbatimFootnotes + +\title{\InfixRPNPackage{} -- \pstInfixplotPackage \\ \normalsize ver. 0.1} +\author{% + Jean-Côme \textsc{Charpentier} \texttt{<jean-côme.charpentier@wanadoo.fr>}\\ + Christophe \textsc{Jorssen} \texttt{<christophe.jorssen@libre.fr.invalid>}\\ + \footnotesize `libre' is the french word for `free' +} +\date{2004/07/14} +\maketitle + +\begin{abstract} +Plotting functions with \texttt{pst-plot} is very powerful but sometimes difficult to learn since +the syntax of |\psplot| and |\parametricplot| requires some PostScript knowledge. What +\InfixRPNPackage{} and \pstInfixplotPackage{} intend to do is to simplify the usage of +\texttt{pst-plot} for the beginner, providing macro commands that convert natural mathematical +expressions to PS syntax. +\end{abstract} + +\section{Basic examples: usage of \InfixRPNPackage} + +|\usepackage{infix-RPN}| for \LaTeX{} users or |\input infix-RPN.tex| for \TeX{} users gives access +to three macros: |\infixtoRPN|, |\RPN| and |\DeclareNewPSOperator|. + +The macro |\infixtoRPN| takes an infix expression as argument and converts it to Reverse Polish +Notation. The result of the conversion is put in the macro |\RPN|. + +\begin{SideBySideExample}[xrightmargin=6cm] + ?HLCBWz&\infixtoRPN"{2+3-4*x}?HLCBWz&\RPN" + + \infixtoRPN{log(-x)}\RPN + + \infixtoRPN{2*sin(x/y)}\RPN +\end{SideBySideExample} + +\bigskip\bigskip + +Multiple signs are OK: + +\begin{SideBySideExample}[xrightmargin=6cm] + \infixtoRPN{3?HLCBWz&+-+--"0.5}\RPN +\end{SideBySideExample} + +\bigskip\bigskip + +For operators that require more than one argument, arguments must be separated with commas: + +\begin{SideBySideExample}[xrightmargin=6cm] + \infixtoRPN{atan(x?HLCBWz&,"y)}\RPN +\end{SideBySideExample} + +\bigskip\bigskip + +There is a difference between variables and operators. There are 11 pre-defined +operators\footnote{Actually, there are five more operators defined : \texttt{add}, \texttt{sub}, +\texttt{mul}, \texttt{div} and \texttt{exp}. Those ones should \emph{not} be used direclty. Use +|+|, |-|, |*|, |/| and |^| instead, which is, by the way, the main interest of using infix +notation.}$^{,}$\footnote{If you use \texttt{pst-math} with \texttt{infix-RPN}, PS operators added +by \texttt{pst-math} are declared by |\DeclareNewPSOperator| and are therefore directly accessible +in any infix expression.} which are basically those of PostScript: \texttt{abs}, \texttt{sin}, +\texttt{cos}, \texttt{atan}, \texttt{neg}, \texttt{ceiling}, \texttt{floor}, \texttt{truncate}, +\texttt{sqrt}, \texttt{ln}, \texttt{log}. You can define more operators with the +|\DeclareNewPSOperator| macro: + +\begin{SideBySideExample}[xrightmargin=6cm,label={Div is a PS operator defined by pstricks}] + ?HLCBWz&\DeclareNewPSOperator"{Div} + \infixtoRPN{Div(x,y)}\RPN +\end{SideBySideExample} + +\section{Plot examples with \InfixRPNPackage} + +\begin{PSideBySideExample}[xrightmargin=10.5cm](0,-2)(10,3) + \psset{plotpoints=1000} + \psaxes{->}(0,0)(0,-2)(10,3) + \infixtoRPN{sqrt(x)} + \psplot[linecolor=green]{0}{10}{\RPN} + \infixtoRPN{x^0.4} + \psplot[linecolor=red]{0}{10}{\RPN} + \infixtoRPN{sin(-x*180/3.1415)} + \psplot[linecolor=blue]{0}{10}{\RPN} +\end{PSideBySideExample} + +\section{Plot examples with \pstInfixplotPackage} + +If you don't want the limitation of having to invoke two macro calls (namely |\infixtoRPN| and +|\RPN|) for plotting, then use the \pstInfixplotPackage{} package! \LaTeX{} users should type +|\usepackage{pst-infixplot}| in the preamble when \TeX{} users should type % +|\input pst-infixplot.tex|. + +\pstInfixplotPackage{} automatically loads \texttt{pstricks}, \texttt{pst-plot} and +\texttt{infix-RPN}. \pstInfixplotPackage{} defines two macro commands: |\psPlot| and +|\parametricPlot|. + +The syntax of |\psPlot| is: +\texttt{\char`\\psPlot[\textit{<parameters>}]\{\textit{x\_begin}\}\{\textit{x\_end}\}\{\textit{infix\_expression}\}} +where the optional \texttt{\textit{parameters}} are any pstricks valid parameter. + +\begin{PSideBySideExample}[xrightmargin=7.5cm](0,-2)(7,3) + \psset{plotpoints=1000} + \psaxes{->}(0,0)(0,-2)(7,3) + ?HLCBWz&\psPlot"[linecolor=green]{0}{7}{sqrt(x)} + \psPlot[linecolor=red]{0}{7}{x^0.4} + \psPlot[linecolor=blue]{0}{7}{sin(-x*180/3.1415)} + \psplot{0}{7}{x neg 180 mul 3.1415 div cos} +\end{PSideBySideExample} + +The syntax of |\parametricPlot| is: + +\texttt{\char`\\parametricPlot[\textit{<parameters>}]\{\textit{x\_begin}\}\{\textit{x\_end}\}\{\textit{infix\_x\_expression}\}% +\{\textit{infix\_y\_expression}\}} where the optional \texttt{\textit{parameters}} are any pstricks +valid parameter. + +\begin{PSideBySideExample}[xrightmargin=4cm](0,-2)(3.8,3) + \psset{plotpoints=1000} + \psaxes{->}(0,0)(0,-2)(3.8,3) + ?HLCBWz&\parametricPlot"[linecolor=red]{-30}{70}{3.5*cos(t)}{2.3*sqrt(abs(sin(t)))} + \parametricPlot[linecolor=green]{-30}{60}{4*sqrt(abs(floor(t)))/10}{t/20} + \parametricplot{-30}{60}{2 t cos mul 3 t sin mul} +\end{PSideBySideExample} + + +\end{document} diff --git a/Master/texmf-dist/doc/generic/pst-infixplot/pst-infixplot.pdf b/Master/texmf-dist/doc/generic/pst-infixplot/pst-infixplot.pdf Binary files differnew file mode 100644 index 00000000000..b655aed1d2f --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-infixplot/pst-infixplot.pdf |