texlive[42857] Master: pstring (3jan17)

commits+karl at tug.org commits+karl at tug.org
Tue Jan 3 23:13:50 CET 2017


Revision: 42857
          http://tug.org/svn/texlive?view=revision&revision=42857
Author:   karl
Date:     2017-01-03 23:13:50 +0100 (Tue, 03 Jan 2017)
Log Message:
-----------
pstring (3jan17)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/pstring/
    trunk/Master/texmf-dist/doc/latex/pstring/README.md
    trunk/Master/texmf-dist/doc/latex/pstring/pgfmanual-en-macros.tex
    trunk/Master/texmf-dist/doc/latex/pstring/pstring-doc.pdf
    trunk/Master/texmf-dist/doc/latex/pstring/pstring-doc.pre
    trunk/Master/texmf-dist/doc/latex/pstring/pstring-doc.tex
    trunk/Master/texmf-dist/tex/latex/pstring/
    trunk/Master/texmf-dist/tex/latex/pstring/pstring.sty
    trunk/Master/tlpkg/tlpsrc/pstring.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/pstring/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pstring/README.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pstring/README.md	2017-01-03 22:13:50 UTC (rev 42857)
@@ -0,0 +1,36 @@
+The pstring LaTeX package
+=========================
+
+This package lets you typeset justified sequences, also called pointing strings.
+It's used for instance, in research papers about Game Semantics to represent sequence of game moves
+with their associated justification pointers.
+
+See [http://william.famille-blum.org/software/latex/]() for latest information about this package.
+
+Author
+------
+
+William Blum (william.blum at gmail.com)
+
+Platform
+--------
+
+Tested with MikTeX on Windows. It was reported to work on other platform as well but I have not tested it myself.
+
+Package dependencies
+--------------------
+
+The following packages are required when compiling with `latex` to postscript:
+
+    pstricks
+    pst-node
+
+If compiling to PDF using `pdflatex` then the `PGF`/`tikz` packages are used instead to render
+the pointers:
+
+    pgfcore
+
+License
+-------
+
+This material is released in the Public domain.
\ No newline at end of file

Added: trunk/Master/texmf-dist/doc/latex/pstring/pgfmanual-en-macros.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pstring/pgfmanual-en-macros.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pstring/pgfmanual-en-macros.tex	2017-01-03 22:13:50 UTC (rev 42857)
@@ -0,0 +1,559 @@
+% This is file comes from the documentation of the PGF package by Till Tantau.
+% I have only commented out some code that is unnecessary for my purpose here (I just want to use the
+% codeexample environment) I hope that I do not break PGF license by releasing the file like this. William Blum
+
+
+% Copyright 2006 by Till Tantau
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Free Documentation License.
+%
+% See the file doc/generic/pgf/licenses/LICENSE for more details.
+
+% $Header: /cvsroot/pgf/pgf/doc/generic/pgf/macros/pgfmanual-en-macros.tex,v 1.8 2006/10/11 15:00:27 tantau Exp $
+
+\providecommand\href[2]{\texttt{#1}}
+
+\colorlet{examplefill}{yellow!80!black}
+\definecolor{graphicbackground}{rgb}{0.96,0.96,0.8}
+\definecolor{codebackground}{rgb}{0.8,0.8,1}
+
+\newenvironment{pgfmanualentry}{\list{}{\leftmargin=2em\itemindent-\leftmargin\def\makelabel##1{\hss##1}}}{\endlist}
+\newcommand\pgfmanualentryheadline[1]{\itemsep=0pt\parskip=0pt\item\strut#1\par\topsep=0pt}
+\newcommand\pgfmanualbody{\parskip3pt}
+
+
+
+\newenvironment{pgflayout}[1]{
+  \begin{pgfmanualentry}
+    \pgfmanualentryheadline{\texttt{\string\pgfpagesuselayout\char`\{\declare{#1}\char`\}}\oarg{options}}
+    \index{#1@\protect\texttt{#1} layout}%
+    \index{Page layouts!#1@\protect\texttt{#1}}%
+    \pgfmanualbody
+}
+{
+  \end{pgfmanualentry}
+}
+
+
+\newenvironment{command}[1]{
+  \begin{pgfmanualentry}
+    \extractcommand#1\@@
+    \pgfmanualbody
+}
+{
+  \end{pgfmanualentry}
+}
+
+\def\extractcommand#1#2\@@{%
+  \pgfmanualentryheadline{\declare{\texttt{\string#1}}#2}%
+  \removeats{#1}%
+  \index{\strippedat @\protect\myprintocmmand{\strippedat}}}
+
+
+\newenvironment{environment}[1]{
+  \begin{pgfmanualentry}
+    \extractenvironement#1\@@
+    \pgfmanualbody
+}
+{
+  \end{pgfmanualentry}
+}
+
+\def\extractenvironement#1#2\@@{%
+  \pgfmanualentryheadline{{\ttfamily\char`\\begin\char`\{\declare{#1}\char`\}}#2}%
+  \pgfmanualentryheadline{{\ttfamily\ \ }\meta{environment contents}}%
+  \pgfmanualentryheadline{{\ttfamily\char`\\end\char`\{\declare{#1}\char`\}}}%
+  \index{#1@\protect\texttt{#1} environment}%
+  \index{Environments!#1@\protect\texttt{#1}}}
+
+
+\newenvironment{plainenvironment}[1]{
+  \begin{pgfmanualentry}
+    \extractplainenvironement#1\@@
+    \pgfmanualbody
+}
+{
+  \end{pgfmanualentry}
+}
+
+\def\extractplainenvironement#1#2\@@{%
+  \pgfmanualentryheadline{{\ttfamily\declare{\char`\\#1}}#2}%
+  \pgfmanualentryheadline{{\ttfamily\ \ }\meta{environment contents}}%
+  \pgfmanualentryheadline{{\ttfamily\declare{\char`\\end#1}}}%
+  \index{#1@\protect\texttt{#1} environment}%
+  \index{Environments!#1@\protect\texttt{#1}}}
+
+
+\newenvironment{contextenvironment}[1]{
+  \begin{pgfmanualentry}
+    \extractcontextenvironement#1\@@
+    \pgfmanualbody
+}
+{
+  \end{pgfmanualentry}
+}
+
+\def\extractcontextenvironement#1#2\@@{%
+  \pgfmanualentryheadline{{\ttfamily\declare{\char`\\start#1}}#2}%
+  \pgfmanualentryheadline{{\ttfamily\ \ }\meta{environment contents}}%
+  \pgfmanualentryheadline{{\ttfamily\declare{\char`\\stop#1}}}%
+  \index{#1@\protect\texttt{#1} environment}%
+  \index{Environments!#1@\protect\texttt{#1}}}
+
+
+\newenvironment{shape}[1]{
+  \begin{pgfmanualentry}
+    \pgfmanualentryheadline{Shape {\ttfamily\declare{#1}}}%
+    \index{#1@\protect\texttt{#1} shape}%
+    \index{Shapes!#1@\protect\texttt{#1}}
+    \pgfmanualbody
+}
+{
+  \end{pgfmanualentry}
+}
+
+\newenvironment{predefinednode}[1]{
+  \begin{pgfmanualentry}
+    \pgfmanualentryheadline{Predefined node {\ttfamily\declare{#1}}}%
+    \index{#1@\protect\texttt{#1} node}%
+    \index{Predefined node!#1@\protect\texttt{#1}}
+    \pgfmanualbody
+}
+{
+  \end{pgfmanualentry}
+}
+
+\newenvironment{coordinatesystem}[1]{
+  \begin{pgfmanualentry}
+    \pgfmanualentryheadline{Coordinate system {\ttfamily\declare{#1}}}%
+    \index{#1@\protect\texttt{#1} coordinate system}%
+    \index{Coordinate systems!#1@\protect\texttt{#1}}
+    \pgfmanualbody
+}
+{
+  \end{pgfmanualentry}
+}
+
+\newenvironment{snake}[1]{
+  \begin{pgfmanualentry}
+    \pgfmanualentryheadline{Snake {\ttfamily\declare{#1}}}%
+    \index{#1@\protect\texttt{#1} snake}%
+    \index{Snakes!#1@\protect\texttt{#1}}
+    \pgfmanualbody
+}
+{
+  \end{pgfmanualentry}
+}
+
+\def\pgfmanualbar{\char`\|}
+\makeatletter
+\newenvironment{pathoperation}[3][]{
+  \begin{pgfmanualentry}
+    \pgfmanualentryheadline{\textcolor{gray}{{\ttfamily\char`\\path}\
+        \ \dots}
+      \declare{\texttt{#2}}#3\ \textcolor{gray}{\dots\texttt{;}}}%
+    \def\pgfmanualtest{#1}%
+    \ifx\pgfmanualtest\@empty%
+      \index{#2@\protect\texttt{#2} path operation}%
+      \index{Path operations!#2@\protect\texttt{#2}}%
+    \fi%
+    \pgfmanualbody
+}
+{
+  \end{pgfmanualentry}
+}
+\makeatother
+
+\def\extractcommand#1#2\@@{%
+  \pgfmanualentryheadline{\declare{\texttt{\string#1}}#2}%
+  \removeats{#1}%
+  \index{\strippedat @\protect\myprintocmmand{\strippedat}}}
+
+
+\newenvironment{package}[1]{
+  \begin{pgfmanualentry}
+    \pgfmanualentryheadline{{\ttfamily\char`\\usepackage\char`\{\declare{#1}\char`\}\space\space \char`\%\space\space  \LaTeX}}
+    \index{#1@\protect\texttt{#1} package}%
+    \index{Packages and files!#1@\protect\texttt{#1}}%
+    \pgfmanualentryheadline{{\ttfamily\char`\\input \declare{#1}.tex\space\space\space \char`\%\space\space  plain \TeX}}
+    \pgfmanualentryheadline{{\ttfamily\char`\\usemodule[\declare{#1}]\space\space \char`\%\space\space  Con\TeX t}}
+    \pgfmanualbody
+}
+{
+  \end{pgfmanualentry}
+}
+
+
+\newenvironment{pgflibrary}[1]{
+  \begin{pgfmanualentry}
+    \pgfmanualentryheadline{{\ttfamily\char`\\usepgflibrary\char`\{\declare{#1}\char`\}\space\space\space
+        \char`\%\space\space  \LaTeX\space and plain \TeX\space and pure pgf}}
+    \index{#1@\protect\texttt{#1} library}%
+    \index{Libraries!#1@\protect\texttt{#1}}%
+    \pgfmanualentryheadline{{\ttfamily\char`\\usepgflibrary[\declare{#1}]\space\space \char`\%\space\space  Con\TeX t\space and pure pgf}}
+    \pgfmanualentryheadline{{\ttfamily\char`\\usetikzlibrary\char`\{\declare{#1}\char`\}\space\space
+        \char`\%\space\space  \LaTeX\space and plain \TeX\space when using \tikzname}}
+    \pgfmanualentryheadline{{\ttfamily\char`\\usetikzlibrary[\declare{#1}]\space
+        \char`\%\space\space  Con\TeX t\space when using \tikzname}}
+    \pgfmanualbody
+}
+{
+  \end{pgfmanualentry}
+}
+
+\newenvironment{tikzlibrary}[1]{
+  \begin{pgfmanualentry}
+    \pgfmanualentryheadline{{\ttfamily\char`\\usetikzlibrary\char`\{\declare{#1}\char`\}\space\space \char`\%\space\space  \LaTeX\space and plain \TeX}}
+    \index{#1@\protect\texttt{#1} library}%
+    \index{Libraries!#1@\protect\texttt{#1}}%
+    \pgfmanualentryheadline{{\ttfamily\char`\\usetikzlibrary[\declare{#1}]\space \char`\%\space\space Con\TeX t}}
+    \pgfmanualbody
+}
+{
+  \end{pgfmanualentry}
+}
+
+
+
+\newenvironment{filedescription}[1]{
+  \begin{pgfmanualentry}
+    \pgfmanualentryheadline{File {\ttfamily\declare{#1}}}%
+    \index{#1@\protect\texttt{#1} file}%
+    \index{Packages and files!#1@\protect\texttt{#1}}%
+    \pgfmanualbody
+}
+{
+  \end{pgfmanualentry}
+}
+
+
+\newenvironment{packageoption}[1]{
+  \begin{pgfmanualentry}
+    \pgfmanualentryheadline{{\ttfamily\char`\\usepackage[\declare{#1}]\char`\{pgf\char`\}}}
+    \index{#1@\protect\texttt{#1} package option}%
+    \index{Package options for \textsc{pgf}!#1@\protect\texttt{#1}}%
+    \pgfmanualbody
+}
+{
+  \end{pgfmanualentry}
+}
+
+
+
+\newcommand\opt[1]{{\color{black!50!green}#1}}
+\newcommand\ooarg[1]{{\ttfamily[}\meta{#1}{\ttfamily]}}
+
+\def\opt{\afterassignment\pgfmanualopt\let\next=}
+\def\pgfmanualopt{\ifx\next\bgroup\bgroup\color{black!50!green}\else{\color{black!50!green}\next}\fi}
+
+
+
+\def\beamer{\textsc{beamer}}
+\def\pdf{\textsc{pdf}}
+\def\pgfname{\textsc{pgf}}
+\def\tikzname{Ti\emph{k}Z}
+\def\pstricks{\textsc{pstricks}}
+\def\prosper{\textsc{prosper}}
+\def\seminar{\textsc{seminar}}
+\def\texpower{\textsc{texpower}}
+\def\foils{\textsc{foils}}
+
+{
+  \makeatletter
+  \global\let\myempty=\@empty
+  \global\let\mygobble=\@gobble
+  \catcode`\@=12
+  \gdef\getridofats#1@#2\relax{%
+    \def\getridtest{#2}%
+    \ifx\getridtest\myempty%
+      \expandafter\def\expandafter\strippedat\expandafter{\strippedat#1}
+    \else%
+      \expandafter\def\expandafter\strippedat\expandafter{\strippedat#1\protect\printanat}
+      \getridofats#2\relax%
+    \fi%
+  }
+
+  \gdef\removeats#1{%
+    \let\strippedat\myempty%
+    \edef\strippedtext{\stripcommand#1}%
+    \expandafter\getridofats\strippedtext @\relax%
+  }
+
+  \gdef\stripcommand#1{\expandafter\mygobble\string#1}
+}
+
+\def\printanat{\char`\@}
+
+\def\declare{\afterassignment\pgfmanualdeclare\let\next=}
+\def\pgfmanualdeclare{\ifx\next\bgroup\bgroup\color{red!75!black}\else{\color{red!75!black}\next}\fi}
+
+
+\let\textoken=\command
+\let\endtextoken=\endcommand
+
+\def\myprintocmmand#1{\texttt{\char`\\#1}}
+
+\def\example{\par\smallskip\noindent\textit{Example: }}
+\def\themeauthor{\par\smallskip\noindent\textit{Theme author: }}
+
+\def\itemoption#1{\item \declare{\texttt{#1}}%
+  \indexoption{#1}%
+}
+
+\def\indexoption#1{%
+  \index{#1@\protect\texttt{#1} option}%
+  \index{Graphic options!#1@\protect\texttt{#1}}%
+}
+
+\def\itemstyle#1{\item \texttt{style=}\declare{\texttt{#1}}%
+  \index{#1@\protect\texttt{#1} style}%
+  \index{Styles!#1@\protect\texttt{#1}}%
+}
+
+
+
+\def\class#1{\list{}{\leftmargin=2em\itemindent-\leftmargin\def\makelabel##1{\hss##1}}%
+\extractclass#1@\par\topsep=0pt}
+\def\endclass{\endlist}
+\def\extractclass#1#2@{%
+\item{{{\ttfamily\char`\\documentclass}#2{\ttfamily\char`\{\declare{#1}\char`\}}}}%
+  \index{#1@\protect\texttt{#1} class}%
+  \index{Classes!#1@\protect\texttt{#1}}}
+
+\def\partname{Part}
+
+\makeatletter
+%\def\index at prologue{\section*{Index}\addcontentsline{toc}{section}{Index}
+%  This index only contains automatically generated entries. A good
+%  index should also contain carefully selected keywords. This index is
+%  not a good index.
+%  \bigskip
+%}
+%\c at IndexColumns=2
+%  \def\theindex{\@restonecoltrue
+%    \columnseprule \z@  \columnsep 35\p@
+%    \twocolumn[\index at prologue]%
+%       \parindent -30pt
+%       \columnsep 15pt
+%       \parskip 0pt plus 1pt
+%       \leftskip 30pt
+%       \rightskip 0pt plus 2cm
+%       \small
+%       \def\@idxitem{\par}%
+%    \let\item\@idxitem \ignorespaces}
+%  \def\endtheindex{\onecolumn}
+%\def\noindexing{\let\index=\@gobble}
+
+
+%\newcommand\patternindex[1]{
+%  \index{#1@\protect\texttt{#1} pattern}%
+%  \index{Patterns!#1@\protect\texttt{#1}}
+%  \texttt{#1}&
+%  \begin{tikzpicture}
+%    \path[draw=black!50,very thin,pattern=#1,rounded corners]
+%    (0pt,0pt) rectangle (1cm,1.5em);
+%  \end{tikzpicture}
+%}
+%
+%
+%\newcommand\symarrow[1]{
+%  \index{#1@\protect\texttt{#1} arrow tip}%
+%  \index{Arrow tips!#1@\protect\texttt{#1}}
+%  \texttt{#1}& yields thick
+%  \begin{tikzpicture}[arrows={#1-#1},thick,baseline]
+%    \useasboundingbox (0pt,-0.5ex) rectangle (1cm,2ex);
+%    \draw (0pt,.5ex) -- (1cm,.5ex);
+%  \end{tikzpicture} and thin
+%  \begin{tikzpicture}[arrows={#1-#1},thin,baseline]
+%    \useasboundingbox (0pt,-0.5ex) rectangle (1cm,2ex);
+%    \draw (0pt,.5ex) -- (1cm,.5ex);
+%  \end{tikzpicture}
+%}
+%
+%\newcommand\sarrow[2]{
+%  \index{#1@\protect\texttt{#1} arrow tip}%
+%  \index{Arrow tips!#1@\protect\texttt{#1}}
+%  \index{#2@\protect\texttt{#2} arrow tip}%
+%  \index{Arrow tips!#2@\protect\texttt{#2}}
+%  \texttt{#1-#2}& yields thick
+%  \begin{tikzpicture}[arrows={#1-#2},thick,baseline]
+%    \useasboundingbox (0pt,-0.5ex) rectangle (1cm,2ex);
+%    \draw (0pt,.5ex) -- (1cm,.5ex);
+%  \end{tikzpicture} and thin
+%  \begin{tikzpicture}[arrows={#1-#2},thin,baseline]
+%    \useasboundingbox (0pt,-0.5ex) rectangle (1cm,2ex);
+%    \draw (0pt,.5ex) -- (1cm,.5ex);
+%  \end{tikzpicture}
+%}
+%
+%\newcommand\carrow[1]{
+%  \index{#1@\protect\texttt{#1} arrow tip}%
+%  \index{Arrow tips!#1@\protect\texttt{#1}}
+%  \texttt{#1}& yields for line width 1ex
+%  \begin{tikzpicture}[arrows={#1-#1},line width=1ex,baseline]
+%    \useasboundingbox (0pt,-0.5ex) rectangle (1.5cm,2ex);
+%    \draw (0pt,.5ex) -- (1.5cm,.5ex);
+%  \end{tikzpicture}
+%}
+%\def\myvbar{\char`\|}
+%\newcommand\plotmarkentry[1]{%
+%  \index{#1@\protect\texttt{#1} plot mark}%
+%  \index{Plot marks!#1@\protect\texttt{#1}}
+%  \texttt{\char`\\pgfuseplotmark\char`\{\declare{#1}\char`\}} &
+%  \tikz\draw[color=black!25] plot[mark=#1,mark options={fill=examplefill,draw=black}] coordinates{(0,0) (.5,0.2) (1,0) (1.5,0.2)};\\
+%}
+%\newcommand\plotmarkentrytikz[1]{%
+%  \index{#1@\protect\texttt{#1} plot mark}%
+%  \index{Plot marks!#1@\protect\texttt{#1}}
+%  \texttt{mark=\declare{#1}} & \tikz\draw[color=black!25]
+%  plot[mark=#1,mark options={fill=examplefill,draw=black}]
+%    coordinates {(0,0) (.5,0.2) (1,0) (1.5,0.2)};\\
+%}
+%
+
+
+\ifx\scantokens\@undefined
+  \PackageError{pgfmanual-macros}{You need to use extended latex
+    (elatex) or (pdfelatex) to process this document}{}
+\fi
+
+\begingroup
+\catcode`|=0
+\catcode`[= 1
+\catcode`]=2
+\catcode`\{=12
+\catcode `\}=12
+\catcode`\\=12 |gdef|find at example#1\end{codeexample}[|endofcodeexample[#1]]
+|endgroup
+
+\begingroup
+\catcode`\^=7
+\catcode`\^^M=13
+\catcode`\ =13%
+\gdef\returntospace{\catcode`\ =13\def {\space}\catcode`\^^M=13\def^^M{}}%
+\endgroup
+
+\begingroup
+\catcode`\%=13
+\catcode`\^^M=13
+\gdef\commenthandler{\catcode`\%=13\def%{\@gobble at till@return}}
+\gdef\@gobble at till@return#1^^M{}
+\gdef\typesetcomment{\catcode`\%=13\def%{\@typeset at till@return}}
+\gdef\@typeset at till@return#1^^M{{\def%{\char`\%}\textsl{\char`\%#1}}\par}
+\endgroup
+
+\define at key{codeexample}{width}{\setlength\codeexamplewidth{#1}}
+\define at key{codeexample}{graphic}{\colorlet{graphicbackground}{#1}}
+\define at key{codeexample}{code}{\colorlet{codebackground}{#1}}
+\define at key{codeexample}{execute code}{\csname code at execute#1\endcsname}
+\define at key{codeexample}{code only}[]{\code at executefalse}
+\define at key{codeexample}{pre}{\def\code at pre{#1}}
+\define at key{codeexample}{post}{\def\code at post{#1}}
+
+\def\code at pre{}
+\def\code at post{}
+
+\newdimen\codeexamplewidth
+\newif\ifcode at execute
+\newbox\codeexamplebox
+\def\codeexample[#1]{%
+  \code at executetrue
+  \setlength\codeexamplewidth{4cm+7pt}
+  \setkeys{codeexample}{#1}%
+  \parindent0pt
+  \begingroup%
+  \par%
+  \medskip%
+  \let\do\@makeother%
+  \dospecials%
+  \obeylines%
+  \@vobeyspaces%
+  \catcode`\%=13%
+  \catcode`\^^M=13%
+  \find at example}
+\def\endofcodeexample#1{%
+  \endgroup%
+  \ifcode at execute%
+    \setbox\codeexamplebox=\hbox{%
+      {%
+        {%
+          \returntospace%
+          \commenthandler%
+          \xdef\code at temp{#1}% removes returns and comments
+        }%
+        \colorbox{graphicbackground}{\color{black}\ignorespaces%
+          \code at pre\expandafter\scantokens\expandafter{\code at temp\ignorespaces}\code at post\ignorespaces}%
+      }%
+    }%
+    \ifdim\wd\codeexamplebox>\codeexamplewidth%
+      \def\code at start{\par}%
+      \def\code at flushstart{}\def\code at flushend{}%
+      \def\code at mid{\parskip2pt\par\noindent}%
+      \def\code at width{\linewidth-6pt}%
+      \def\code at end{}%
+    \else%
+      \def\code at start{%
+        \linewidth=\textwidth%
+        \parshape \@ne 0pt \linewidth
+        \leavevmode%
+        \hbox\bgroup}%
+      \def\code at flushstart{\hfill}%
+      \def\code at flushend{\hbox{}}%
+      \def\code at mid{\hskip6pt}%
+      \def\code at width{\linewidth-12pt-\codeexamplewidth}%
+      \def\code at end{\egroup}%
+    \fi%
+    \code at start%
+    \noindent%
+    \begin{minipage}[t]{\codeexamplewidth}\raggedright
+      \hrule width0pt%
+      \footnotesize\vskip-1em%
+      \code at flushstart\box\codeexamplebox\code at flushend%
+      \vskip-1ex
+      \leavevmode%
+    \end{minipage}%
+  \else%
+    \def\code at mid{\par}
+    \def\code at width{\linewidth-6pt}
+    \def\code at end{}
+  \fi%
+  \code at mid%
+  \colorbox{codebackground}{%
+    \begin{minipage}[t]{\code at width}%
+      {%
+        \let\do\@makeother
+        \dospecials
+        \frenchspacing\@vobeyspaces
+        \normalfont\ttfamily\footnotesize
+        \typesetcomment%
+        \@tempswafalse
+        \def\par{%
+          \if at tempswa
+          \leavevmode \null \@@par\penalty\interlinepenalty
+          \else
+          \@tempswatrue
+          \ifhmode\@@par\penalty\interlinepenalty\fi
+          \fi}%
+        \obeylines
+        \everypar \expandafter{\the\everypar \unpenalty}%
+        #1}
+    \end{minipage}}%
+  \code at end%
+  \par%
+  \medskip
+  \end{codeexample}
+}
+
+\def\endcodeexample{}
+
+
+\makeatother
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "beameruserguide"
+%%% End:

Added: trunk/Master/texmf-dist/doc/latex/pstring/pstring-doc.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/pstring/pstring-doc.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pstring/pstring-doc.pdf	2017-01-03 22:13:07 UTC (rev 42856)
+++ trunk/Master/texmf-dist/doc/latex/pstring/pstring-doc.pdf	2017-01-03 22:13:50 UTC (rev 42857)

Property changes on: trunk/Master/texmf-dist/doc/latex/pstring/pstring-doc.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pstring/pstring-doc.pre
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pstring/pstring-doc.pre	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pstring/pstring-doc.pre	2017-01-03 22:13:50 UTC (rev 42857)
@@ -0,0 +1,11 @@
+\documentclass{article}
+\usepackage{pstring}
+\usepackage{amssymb}
+\usepackage{calc} 
+\usepackage{a4wide}   
+\usepackage{url}
+
+\usepackage{pgfcore}
+\input{pgfmanual-en-macros}
+     
+  

Added: trunk/Master/texmf-dist/doc/latex/pstring/pstring-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pstring/pstring-doc.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pstring/pstring-doc.tex	2017-01-03 22:13:50 UTC (rev 42857)
@@ -0,0 +1,241 @@
+% Speed-up the compilation with LatexDaemon!!! (http://william.famille-blum.org/software/latexdaemon)
+\input{pstring-doc.pre}
+%
+
+\author{William Blum}
+\title{The pstring package}
+\begin{document}
+\maketitle
+\begin{abstract}
+This is a short documentation for the pstring package for Latex. This package allows you to
+typeset justified sequences, also called pointing strings.
+The latest version of the package can be downloaded from \url{http://william.famille-blum.org/software/latex/index.html}.
+
+\begin{codeexample}[width=5cm]
+\Pstr[0.65cm]{ \psi = (n){q^0} \ (n4-n,60){q^1} \ (n5-n4){q^2}
+\ (n8-n){q^1} \ (n9-n8){q^2} \ (n10-n){q^3} }.
+\end{codeexample}
+\end{abstract}
+
+\section{Use and syntax}
+
+From version 0.3, pstring can use either PSTricks or PGF as a rendering engine. To specify which one
+you want, use the option \verb|pstricks| or \verb|pgf| when you load the pstring package. For instance to use PGF you must type:
+\begin{codeexample}[code only]
+\usepackage{pstring}[pgf]
+\end{codeexample}
+If no option is specified then by default \verb|pgf| is selected if you are running pdflatex
+and \verb|pstricks| is selected if you are running latex.
+
+You can specifies other options with the following commands:
+\begin{command}{\pstrSetLabelStyle\{style\}}
+Change the style used to typeset labels on arrows.
+\end{command}
+\begin{command}{\pstrSetArrowColor\{color\}}
+Change the color used to typeset arrows.
+\end{command}
+\begin{command}{\pstrSetArrowLineWidth\{size\}}
+Change the arrows line width.
+\end{command}
+\begin{command}{\pstrSetArrowLineStyle\{style\}}
+Change the arrows line style. Valid styles are: \verb|none|, \verb|dashed|, \verb|dotted| and \verb|solid|.
+\end{command}
+The default options are as follows:
+\begin{codeexample}[code only]
+\pstrSetLabelStyle{\color{blue} \tiny}
+\pstrSetArrowColor{orange}
+\pstrSetArrowLineWidth{0.3pt}
+\pstrSetArrowLineStyle{solid}
+\end{codeexample}
+
+\subsection{The succinct syntax}
+The syntax for creating a pointing string is as follows:
+\begin{command}{\Pstr[raiseamount][nodesep]\{stringspecification\}}
+\begin{itemize}
+\item  \verb|raiseamount| (optional) is the size by which you want
+to raise the box containing the sequence. In
+PSTricks mode, the bounding box is not computed automatically therefore
+it is necessary to specify this value by hand. Using the PGF mode
+ however, this value is ignored since the bounding box
+is computed automatically,
+\item  \verb|nodesep| (optional) is the vertical distance between
+the nodes and the links.
+\item  \verb|stringspecification| contains commands describing the nodes
+of the string.
+This parameter can contain normal text and latex commands (with some restriction, see section \ref{subsec:altsyntax}).
+Nodes that have link associated to them, or which have a link pointing to them
+must be specified with the node specification syntax described hereunder.\end{itemize}
+\end{command}
+
+The syntax for creating nodes is as follows.
+If the node has no link associated to it then you just use
+the syntax \verb|(nodename){content of the node}| where \verb|nodename| is a name that you give to the node and \verb|content| is the text you want to write inside the node.
+
+If there is a link attached to the node then you use
+the syntax
+\begin{verbatim}
+(targetnode-nodename,angle:label){content}
+\end{verbatim}
+where
+\begin{itemize}
+\item \verb|nodename| is a name that you give to the node,
+\item \verb|targetnode| is the name of the node where the link must point to,
+\item \verb|angle| (optional) specifies the angle between the horizontal line and the line
+tangent to the arrow representing the link at the top of the node,
+\item  \verb|label| (optional) is a text to be printed out on top of the link,
+\item \verb|content| is the content of the node.
+\end{itemize}
+
+The arguments  \verb|angle| and \verb|label| are optional. When the angle is not specified it is set to a default value of 45 (degrees).
+
+Here is an example:
+\begin{codeexample}[width=7cm]
+\Pstr[20pt]{
+t = \lambda\cdot (app){@} \cdot (ly){\lambda y}
+\ldots (y-ly,35:1){y} \cdot
+(lx-app,38:1){\lambda \overline{x}}
+\ldots (x-lx,30:i){x_i} \cdot
+(leta-y,40:i){\lambda \overline{\eta_i}} {\ldots}
+}.
+\end{codeexample}
+
+
+\subsection{Alternative syntax}
+\label{subsec:altsyntax}
+You can use an alternative syntax to specify sequences. For instance the previous example
+can also be defined as follows:
+\begin{codeexample}[width=7cm]
+\pstr[0.7cm]{
+\nd t = \lambda \cdot (app){@}
+\nd \cdot (ly){\lambda y}
+\nd \ldots (y-ly,35:1) {y}
+\nd \cdot (lx-app,38:1){\lambda \overline{x}}
+\nd \ldots (x-lx,30:i){x_i}
+\nd \cdot (letay-y,40:i){\lambda \overline{\eta_i}}
+\txt{\ldots} }.
+\end{codeexample}
+Although this syntax is more cumbersome than the succinct one, it permits to typeset sequences that are not definable with the succinct syntax. The following example is such an example:
+\ifLoadPSengine
+\begin{codeexample}[width=6cm]
+$\pstr[0.7cm][1pt]{ s = \underbrace{\cdots\ \nd(r){r^O}
+\cdots }_{s'}\ \nd(n){n^P}
+\ \underbrace{\cdots\ \nd(a-r,35){a}^P \cdots }_{u}
+\ \nd(m-n,30){m}^O }$.
+\end{codeexample}
+\else
+\vskip 10pt
+[Sorry, you need to compile the documentation with latex in order to view this example]
+\vskip 10pt
+\fi
+
+{\bf Important note:}
+The previous example can only be done using the pstricks engine and using the long syntax. This is due to the use of the
+latex command \verb|\overbrace| which embraces several nodes inside the sequence.
+This cannot be handled in the PGF rendering mode due to the impossibility to create nodes outside of a PGF environment.
+It may be possible to fix this problem by using the overlay feature of PGF/Tikz, however overlays seem to work only
+within Tikz environment and not in standard PGF ones. Also overlays have the disadvantage to require two latex compilations in order to resolve node name references, and moreover they work only with pdflatex (not with latex).
+
+\subsubsection{Adding more links}
+It is possible to create additional links starting from a same node:
+\begin{codeexample}[width=6cm]
+\pstr[0.6cm]{\ldots  \nd(r){r}
+  \nd\ldots (l1){\lambda \overline{\xi}_1}
+  \nd\ldots (l2){\lambda \overline{\xi}_2 }
+  \nd\ldots (n-r,45){n}
+  \arrow{n}{l1}{45}{}{blue}{dotted}
+  \arrow{n}{l2}{45}{}{blue}{dotted}
+ }.
+ \end{codeexample}
+The syntax for arrow creation is:
+\begin{command}{\arrow\{source\}\{target\}\{angle\}\{label\}\{linecolor\}\{linestyle\}}
+\begin{itemize}
+\item \verb|source| is the name of the source node,
+\item \verb|target| is the name of the target node,
+\item \verb|angle| is the arrow angle,
+\item \verb|label| is a text to be printed out on top of the link,
+\item \verb|linecolor| is the color to be used to draw the link,
+\item \verb|linestyle| is a line style used to draw the arrow. Valid styles are: \verb|none|, \verb|dashed|, \verb|dotted| and \verb|solid|.
+\end{itemize}
+\end{command}
+
+
+
+\section{Examples}
+
+\subsection{A sequence with more links}
+\begin{codeexample}[width=7cm]
+\Pstr[1cm][2pt]{
+t_2 = (n){\lambda f z}      \ (n2){@}
+\ (n3-n2,60){\lambda g x}   \ (n4-n){f^{[1]}}
+\ (n5-n4){\lambda^{[2]}}    \ (n6-n3){x}
+\ (n7-n2,35){\lambda^{[3]}} \ (n8-n,35){f^{[4]}}
+\ (n9-n8,45){\lambda^{[5]}} \ (n10-n,35){z} }.
+\end{codeexample}
+
+
+\subsection{Elevation of the links}
+A second optional parameter can be passed to \verb|\pstr| in order to elevate the links in the sequence as follows:
+\begin{codeexample}[width=5cm]
+$\begin{array}{rclrcl}
+\mbox{First line} &=& \parbox[t]{8cm}{there should be enough space between the
+                        bottom of this line and the arc of the next line.} \\
+                s &=& \Pstr[28pt][10pt]{ s \cdot (m){m} \cdot \ldots \cdot (lmd-m,40)
+                         {\lambda\overline{\xi}} }
+    \quad \mbox{ the arc is elevated using the raise option of pstr.}
+\end{array}$
+\end{codeexample}
+
+\subsection{Two sequences on the same line}
+\begin{codeexample}[width=7cm]
+\Pstr[0.8cm]{
+t = (n){\lambda f z}\ (n2){@} \ (n3-n2,60){\lambda g x} \ (n4-n,45){f^{[1]}}
+\ (n5-n4,45){\lambda^{[2]}} \ (n6-n3,45){x} \ (n7-n2,35){\lambda^{[3]}}
+\ (n8-n,35){f^{[4]}} \ (n9-n8,45){\lambda^{[5]}} \ (n10-n,35){z}
+}
+\qquad
+\Pstr[0.9cm]{
+t\upharpoonright r = (n){\lambda f z} \ (n4-n,50){f}^{[1]}
+\ (n5-n4,60){\lambda}^{[2]} \ (n8-n,45){f}^{[4]}
+\ (n9-n8,60){\lambda}^{[5]} \ (n10-n,40){z}}
+\end{codeexample}
+
+\subsection{Sequences containing parenthesis}
+If you insert text containing parenthesis '(' and ')' between two nodes then you must surround
+the text with curly braces otherwise \verb|pstr| will interpret it as a node specification:
+\begin{codeexample}[width=7.1cm]
+\Pstr[0.8cm]{ {\psi_M(t\upharpoonright r) =\ }
+(n){q^0}\ (n4-n,60){q^1}\ (n5-n4,60){q^2}
+\ (n8-n,45){q^1}\ (n9-n8,60){q^2}
+\ (n10-n,38){q^3} \in [\![ M ]\!] \ .}
+\end{codeexample}
+
+\subsection{Example taken from an article}
+%\begin{codeexample}[width=4cm]
+\newcommand{\oview}[1]{\llcorner #1 \lrcorner}
+{\bf (InputVar)} If $t_1 \cdot x \cdot t_2$ is a traversal with
+  $x \in N_{var}^{\upharpoonright r}$ and $?(t_1 \cdot x \cdot
+  t_2)=?(t_1) \cdot x$ then so is \Pstr[0.4cm]{t_1 \cdot (m){x} \cdot t_2 \cdot (n-m,38:i){n}} for all
+  $\lambda$-node $n$ whose parent occurs in $\oview{t_1 \cdot x}$, $n$
+  pointing to some occurrence of its parent node in $\oview{t_1 \cdot x}$.
+
+\noindent {\bf (Copycat$^@$)}
+  If \Pstr{t \cdot (app){@} \cdot (lz-app,60:0){\lambda \overline{z}}  \ldots  (lzv-lz,60:v){v}_{\lambda \overline{z}} } is a traversal then so is
+\Pstr[0.6cm]{t \cdot (app){@} \cdot (lz-app,60){\lambda
+\overline{z}} \ldots  (lzv-lz,60:v){v}_{\lambda \overline{z}} \cdot
+(appv-app,45:v){v}_@}.
+
+\noindent {\bf (Copycat$^\lambda$)}
+ If \Pstr[0.4cm]{t \cdot \lambda \overline{\xi} \cdot (x){x}  \ldots   (xv-x,50:v){v}_x}
+is a traversal then so is \Pstr[0.6cm]{t \cdot (lmd){\lambda
+\overline{\xi}} \cdot (x){x}  \ldots  (xv-x,50:v){v}_x  \cdot
+(lmdv-lmd,30:v){v}_{\lambda \overline{\xi}} }.
+
+\noindent {\bf (Copycat$^{var}$)}
+If \Pstr[0.4cm]{t \cdot y \cdot (lmd){\lambda \overline{\xi}}
+\ldots (lmdv-lmd,50:v){v}_{\lambda \overline{\xi}} } is a traversal
+for some variable $y$ not in $N_{var}^{\upharpoonright r}$ then so
+is \Pstr[0.6cm]{t \cdot (y){y} \cdot (lmd){\lambda \overline{\xi}}
+\ldots (lmdv-lmd,30:v){v}_{\lambda \overline{\xi}}  \cdot
+(vy-y,50:v){v}_y }.
+%\end{codeexample}
+\end{document}

Added: trunk/Master/texmf-dist/tex/latex/pstring/pstring.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pstring/pstring.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/pstring/pstring.sty	2017-01-03 22:13:50 UTC (rev 42857)
@@ -0,0 +1,729 @@
+% Copyright 2007 by William Blum (http://william.famille-blum.org/software/latex/index.html)
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{pstring}[2008/04/29 Package for representing strings with pointers]
+
+\newif\ifRequestPSengine
+\newif\ifRequestPGFengine
+\newif\ifLoadPSengine
+\newif\ifLoadPGFengine
+\newif\ifwriteprologuefile
+
+
+\DeclareOption{pstricks}{\RequestPSenginetrue}
+\DeclareOption{pgf}{\RequestPGFenginetrue}
+\ProcessOptions
+
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11
+
+
+\RequirePackage{ifpdf}
+
+\ifRequestPSengine
+    \ifpdf
+        \errmessage{You have requested to use the pstricks engine when you have loaded the pstring package,
+        moreover you seem to be running pdflatex to produce a pdf file. Since pstricks is not compatible with pdflatex,
+        I automatically switch to the pgf engine.}
+        \LoadPGFenginetrue
+        \LoadPSenginefalse
+    \else
+        \LoadPSenginetrue
+    \fi
+\fi
+
+\ifRequestPGFengine
+    \LoadPGFenginetrue
+\fi
+
+% If no engine is selected then take PStricks if latex is running and PGF if it is pdflatex
+\ifRequestPGFengine \else\ifRequestPSengine \else
+\ifpdf
+    \LoadPGFenginetrue
+\else
+    \LoadPSenginetrue
+\fi
+\fi\fi
+
+
+\ifLoadPSengine
+    % Implement pointing string using pstricks
+    \RequirePackage{pstricks}
+    \RequirePackage{pst-node}
+
+    % Declare the use of the prologue file (for dvips)
+    \pstheader{pstring.pro} %\@addtofilelist{pstring.pro} \special{header=pstring.pro}
+
+    % Set the default drawing engine to pstricks
+    \gdef\@engine{PS}
+\fi
+
+\ifLoadPGFengine
+    % Implement pointing string using pgf
+    \RequirePackage{pgfcore}
+    \usepgfmodule{shapes}
+
+    % Set the default drawing engine to PGF
+    \gdef\@engine{PGF}
+\fi
+
+
+% routines used to draw the nodes and arrow
+\gdef\pstr at drawArrow{\csname pstr@\@engine @drawArrow\endcsname}
+\gdef\pstr at drawNode{\csname pstr@\@engine @drawNode\endcsname}
+\gdef\pstr at createNodeAndArrow{\csname pstr@\@engine @createNodeAndArrow\endcsname}
+\gdef\pstr at printText{\csname pstr@\@engine @printText\endcsname}
+
+% external commands available to the package user (in pgf and pstricks mode)
+\gdef\pstr{\csname pstr@\@engine\endcsname}
+\gdef\Pstr{\csname Pstr@\@engine\endcsname}
+\gdef\pstrSetLabelStyle#1{\gdef\pstr at LabelStyle{#1}}
+\gdef\pstrSetArrowColor#1{\gdef\pstr at DefaultArrowColor{#1}}
+\gdef\pstrSetArrowAngle#1{\gdef\pstr at DefaultArrowAngle{#1}}
+\gdef\pstrSetArrowLabel#1{\gdef\pstr at DefaultArrowLabel{#1}}
+\gdef\pstrSetArrowLineWidth#1{\gdef\pstr at ArrowLineWidth{#1}}
+\gdef\pstrSetArrowLineStyle#1{\gdef\pstr at DefaultArrowLineStyle{#1}}
+\gdef\pstr at linestyledashed{dashed}
+\gdef\pstr at linestyledotted{dotted}
+\gdef\pstr at linestylesolid{solid}
+\gdef\pstr at linestylenone{none}
+
+
+% Default styles and arrow parameters
+\pstrSetLabelStyle{\color{blue} \tiny}
+\pstrSetArrowLabel{}
+\pstrSetArrowColor{orange}
+\pstrSetArrowAngle{45}
+\pstrSetArrowLineWidth{0.3pt}
+\pstrSetArrowLineStyle{\pstr at linestylesolid} % none, solid, dashed or dotted
+
+\def\@nil{}
+
+
+% define a command \percentchar which can be used to write the percent symbol '%' in the .pro file
+\chardef\letter = 11 \chardef\other = 12
+{\catcode`\% = \other \gdef\percentchar{%}}%
+\def^^L{\par
+}%
+
+
+
+\ifLoadPSengine
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Version of the package relying on PSTRICKS
+
+% If the postscript prologue file does not exist then it needs to be created.
+\IfFileExists{pstring.pro}{\writeprologuefilefalse}{\writeprologuefiletrue}
+
+\ifwriteprologuefile
+  \newwrite\prologuefile
+  \immediate\openout\prologuefile = pstring.pro
+  \newlinechar = `\^^J
+  \immediate\write\prologuefile{\percentchar }
+  \immediate\write\prologuefile{\percentchar PostScript prologue for pstring.sty.}
+  \immediate\write\prologuefile{\percentchar For distribution, see pstring.^^J}
+\fi
+
+
+% Calling the following macro with \pstr at def{PROCNAME}<PSCODE> will:
+%    - create a ps procedure with name PROCNAME and code PSCODE and writes it to the prologue file,
+%    - define a latex macro with name \PROCNAME containing PROCNAME (the name of the ps procedure).
+%
+% We could have chosen to include the definitions of our custom Postscript procedures in the dvi file itself
+% but as a drawback the postscript code would be copied for each use of the procedure and the
+% resulting ps file would be huge.
+\def\pstr at def#1<#2>{%
+    \ifwriteprologuefile%
+        % Add the code to the postscript prologue  file
+        \immediate\write\prologuefile{/#1 { #2 } def}
+    \fi
+    % prologue present: just dump the name of the postscript command (the code being already defined in the .pro file)
+    \@namedef{#1}{#1 }
+}
+
+
+
+\pstr at def{pstr at GetEdge}< dup 0 eq { pop begin
+%%%%% WB: the cosinus and the sinus are set to 1 and 0 which correspond to a direction going toward the top of the page. This way, the node position computed by the procedure NodePos will correspond exactly to the middle of the top line of the node box (the coordinates returned by NodePos are relative to the center of the node box).
+  %1 0 NodeMtrx dtransform CM idtransform
+  %exch atan sub dup sin /Sin ED cos /Cos ED /NodeSep ED NodePos
+%%%%% BECOMES
+ pop 1 /Sin ED 0 /Cos ED /NodeSep ED NodePos
+%%%%%
+NodeMtrx dtransform CM idtransform
+end }
+{ 1 eq {{exch}} {{}} ifelse /Do ED pop XYPos } ifelse >
+
+
+\pstr at def{pstr at GetEdgeA}< NodeSepA AngleA NodeA NodeSepTypeA \pstr at GetEdge
+%%%% WB: The offset is not computed the same way as in pst-node: it is an horizontal offset instead of an offset along the line (AB). Thus the line
+%   OffsetA AngleA AddOffset yA add /yA1 ED xA add /xA1 ED
+%%%% becomes:
+yA add /yA1 ED xA add OffsetA add /xA1 ED
+% This last line computes the absolute position of the connector ending by adding up its relative position to the position of the center of the node box plus the horizontal offset.
+%%%%
+>
+
+\pstr at def{pstr at GetEdgeB}< NodeSepB AngleB NodeB NodeSepTypeB \pstr at GetEdge
+% OffsetB AngleB AddOffset yB add /yB1 ED xB add /xB1 ED
+ yB add /yB1 ED xB add OffsetB sub /xB1 ED
+>
+
+
+\pstr at def{pstr at NCCurve}<%
+%%%%%% Redirect the call to \pstr at GetEdgeA  and \pstr at GetEdgeB instead of \tx at GetEdgeA and \tx at GetEdgeB
+\pstr at GetEdgeA \pstr at GetEdgeB
+xA1 xB1 sub yA1 yB1 sub Pyth
+2 div dup
+3 -1 roll mul /ArmA ED mul /ArmB ED
+/ArmTypeA 0 def /ArmTypeB 0 def GetArmA GetArmB
+xA2 yA2 xA1 yA1 tx at Dict begin ArrowA end
+xB2 yB2 xB1 yB1 tx at Dict begin ArrowB end
+curveto
+/LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ] cvx def
+/LPutPos { t LPutVar BezierMidpoint } def
+/HPutPos { { HPutLines } HPutCurve } def
+/VPutPos { { VPutLines } HPutCurve } def>
+
+
+\ifwriteprologuefile
+  \immediate\write\prologuefile{^^J\percentchar END pstring.pro^^J}
+  \immediate\closeout\prologuefile
+\fi
+
+
+
+% We define a new pstricks command: ncHarc.
+% The H is for "horizontal". It acts as ncarc
+% except that the angle parameter
+% angleA (resp. angleB) specifies the angle between the X axis
+% and the tangent to the arrow at point A (resp B) instead
+% of the angle between the line (AB) and the tangent of the arrow  at A (or B).
+%
+% This kind of arc is not really usefull for graphs however it is easier to specify angles like this for links in justified sequences.
+\def\ncHarc{\pst at object{ncHarc}}
+\def\ncHarc at i{\check at arrow{\ncHarc at ii}}
+\def\ncHarc at ii#1#2{\nc at object{Open}{#1}{#2}{.5}{%
+%yB yA sub xB xA sub \tx at Atan
+  180
+\psk at arcangleA\space sub /AngleA ED
+\psk at arcangleB\space %sub 180 add
+/AngleB ED
+\psk at ncurvB\space \psk at ncurvA\space \pstr at NCCurve
+%\tx at NCCurve
+}}
+
+% Create a link using psttricks
+\newcommand{\link}{\@ifstar
+                     \linkStar%
+                     \linkNoStar%
+}
+\newcommand{\linkNoStar}[2][]{
+\edef\options{#1}
+\ifx\options\@empty
+\def\opt{[linecolor=\pstr at DefaultArrowColor,linestyle=\pstr at DefaultArrowLineStyle,linewidth=\pstr at ArrowLineWidth,offset=-2pt,nodesep=0pt,arcangleA=-#2, arcangleB=-#2]}
+\else
+\def\opt{[linecolor=\pstr at DefaultArrowColor,linestyle=\pstr at DefaultArrowLineStyle,linewidth=\pstr at ArrowLineWidth,offset=-2pt,nodesep=0pt,arcangleA=-#2, arcangleB=-#2,#1]}
+\fi
+\expandafter\ncarc\opt{->}
+}
+
+% the starred version uses ncHarc instead of ncarc.
+\newcommand{\linkStar}[2][]{
+\edef\options{#1}
+\ifx\options\@empty
+\def\opt{[linecolor=\pstr at DefaultArrowColor,linestyle=\pstr at DefaultArrowLineStyle,linewidth=\pstr at ArrowLineWidth,offsetA=0pt,offsetB=2pt,nodesep=1pt,arcangleA=#2, arcangleB=#2]}
+\else
+\def\opt{[linecolor=\pstr at DefaultArrowColor,linestyle=\pstr at DefaultArrowLineStyle,linewidth=\pstr at ArrowLineWidth,offsetA=0pt,offsetB=2pt,nodesep=1pt,arcangleA=#2, arcangleB=#2, #1]}
+\fi
+\expandafter\ncHarc\opt{->}
+}
+
+% Label the last link created
+\newcommand{\lnklabel}{\@ifstar
+                     \lnklabelStar%
+                     \lnklabelNoStar%
+}
+\newcommand{\lnklabelStar}[1]{\mput*{\mbox{\pstr at LabelStyle $#1$}}}
+\newcommand{\lnklabelNoStar}[1]{\Bput[1pt]{\mbox{\pstr at LabelStyle $#1$}}}
+
+
+
+
+\newbox\pstr at tempbox
+\newdimen\pstr at tempdim
+
+
+%%%%%%%%%%%%%%%%
+%% First way of creating a pointing string: user command \Pstr
+%  \Pstr[0.4cm][1pt]{ (b) this (a-b,45) that }
+
+\gdef\Pstr at PS{\@ifnextchar[{\Pstr at PS@i}{\Pstr at PS@ii[0cm][1pt]}}
+% Pstr with one optional parameter
+\gdef\Pstr at PS@i[#1]{\@ifnextchar[{\Pstr at PS@ii[#1]}{\Pstr at PS@ii[#1][1pt]}}
+% Pstr with two optional parameters
+% [#1] specifies the amount of vertical space to add to the box
+% containing the pointing string.
+% [#2] specifies the distance between the node and the arc
+% #3 contains the specification of the nodes and pointers of the sequence.
+\gdef\Pstr at PS@ii[#1][#2]#3{%
+\begingroup%
+ \setlength\pstr at tempdim{#1}%
+ \def\pstr at arcoptions{#2}%
+ \setbox\pstr at tempbox=\hbox{$\Pstr at ParseSpecification#3(@-@){}\@nil$}%
+ \ht\pstr at tempbox\pstr at tempdim%
+ \leavevmode\box\pstr at tempbox%
+\endgroup%
+}
+
+% Prints some text in the sequence (using PSTricks)
+\gdef\pstr at PS@printText#1{#1}%
+
+% Draw a node with PStricks:
+%   #1 text preceding the node (ignored)
+%   #2 name of the node
+%   #3 content of the node
+\def\pstr at PS@drawNode#1#2#3{%
+  \rnode{#2}{#3}%
+}
+
+% Draw an arrow with PStricks
+%    #1 source node name
+%    #2 target node name
+%    #3 angle
+%    #4 label
+%    #5 arc color
+%    #6 line style
+\def\pstr at PS@drawArrow#1#2#3#4#5#6{%
+  \link*[linecolor=#5,linestyle=#6,nodesep=\pstr at arcoptions]{#3}{#1}{#2} \lnklabel{#4}%
+}
+
+% Create the node and store the commands for the creation of the link in the list of tokens tok0
+%  (to be executed when the sequence specification is completely parsed)
+%
+%  #1 text to be printed out before the node content
+%  #2 source node name
+%  #3 target node name
+%  #4 arrow angle
+%  #5 link label
+%  #6 link color
+%  #7 node content
+\gdef\pstr at PS@createNodeAndArrow#1#2#3#4#5#6#7{%
+    \pstr at drawNode{#1}{#2}{#7}%
+    \pstr at drawArrow{#2}{#3}{#4}{#5}{#6}{\pstr at DefaultArrowLineStyle}%
+}
+
+
+%%%%%%%%%%%%%%%%
+%%Second way of creating a pointing string: user command \pstr
+%  \pstr[raiseamount][nodesep]{ sequencespecification }
+% example:
+%  \pstr[0.4cm][1pt]{ \nd(b) this \nd(a-b,45) that }
+
+\gdef\pstr at PS{\@ifnextchar[{\pstr at PS@i}{\pstr at PS@ii[0cm][1pt]}}
+% pstr with one optional parameter
+\gdef\pstr at PS@i[#1]{\@ifnextchar[{\pstr at PS@ii[#1]}{\pstr at PS@ii[#1][1pt]}}
+% pstr with two optional parameters
+\gdef\pstr at PS@ii[#1][#2]#3{%
+\begingroup%
+ \setlength\pstr at tempdim{#1}%
+ \def\pstr at arcoptions{#2}%
+ \pstr at defineUserCommands% define the command \nd and \txt that the package user can use to define the sequence
+ \setbox\pstr at tempbox\hbox{$#3$}%
+ \ht\pstr at tempbox\pstr at tempdim%
+ \leavevmode\box\pstr at tempbox%
+\endgroup%
+}
+\fi
+
+
+\ifLoadPGFengine
+
+\newdimen\pstr at mydimA
+\newdimen\pstr at mydimB
+\newdimen\pstr at mydimC
+\newtoks\pstr at ptrlist
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Version of the package relying on PGF (the Tikz interface is not used)
+
+% Draw a node with PGF:
+%   #1 text preceding the node
+%   #2 name of the node
+%   #3 content of the node
+\def\pstr at PGF@drawNode#1#2#3{%
+  \pgfsetfillcolor{white!100}%
+  \pgfset{inner xsep=1pt}%
+  \pgfset{inner ysep=0.6pt}%
+%  \pgfnode{rectangle}{base west}{\color{black}${}#1{}$}{#2 at Next}{\pgfusepath{discard}}%
+%  \pgftransformshift{\pgfpointanchor{#2 at Next}{base east}}%
+  \pgfnode{rectangle}{base west}{\color{black}${}#3{}$}{#2}{\pgfusepath{discard}}%
+  \pgftransformshift{\pgfpointanchor{#2}{base east}}%
+}
+
+% Prints some text in the sequence (using PGF)
+\gdef\pstr at PGF@printText#1{%
+    \def\text{#1}%
+    \ifx\text\empty%
+    \else%
+      \pgfsetfillcolor{white!100}%
+      \pgfset{inner xsep=1pt}%
+      \pgfset{inner ysep=0pt}%
+      \pgfnode{rectangle}{base west}{\color{black}${}#1{}$}{dummy}{\pgfusepath{discard}}%
+      \pgftransformshift{\pgfpointanchor{dummy}{base east}}%
+    \fi%
+}
+
+
+% Draw an arrow with PGF
+%    #1 source node name
+%    #2 target node name
+%    #3 angle
+%    #4 label
+%    #5 line color
+%    #6 line style
+\def\pstr at PGF@drawArrow#1#2#3#4#5#6{%
+    \def\angleB{#3}%
+    \count255=180 \advance \count255 by -\angleB%
+    \def\angleA{\number\count255}%
+    \def\ptA{\pgfpointdiff{\pgfpoint{0.5pt}{-\pstr at arcoptions}}{\pgfpointanchor{#1}{north}}}% shift the end of the arrow a bit to the right
+    \def\ptB{\pgfpointdiff{\pgfpoint{0pt}{-\pstr at arcoptions}}{\pgfpointanchor{#2}{north}}}%
+    \def\bendpt{ \pgfpointintersectionoflines%
+    {\ptA}{\pgfpointadd{\ptA}{\pgfpointpolar{\angleA}{1cm}}}%
+    {\ptB}{\pgfpointadd{\ptB}{\pgfpointpolar{\angleB}{1cm}}}}%
+
+    \pgfextracty{\pstr at mydimA}{\ptA}%
+    \pgfextracty{\pstr at mydimB}{\ptB}%
+    \pgfextracty{\pstr at mydimC}{\bendpt}%
+    \def\maxdim{\ifdim\pstr at mydimA>\pstr at mydimB \pstr at mydimA \else \pstr at mydimB \fi}%
+    \advance \pstr at mydimC by \maxdim%
+    \divide \pstr at mydimC by 2 % mydimC now contains (max(y_A, y_B) + y_C)/2
+
+    % control points
+    \def\cptC{ \pgfpointintersectionoflines{\ptA}{\bendpt}%
+    {\pgfpoint{0pt}{\pstr at mydimC}}{\pgfpoint{16pt}{\pstr at mydimC}}}%
+    \def\cptD{ \pgfpointintersectionoflines{\ptB}{\bendpt}%
+    {\pgfpoint{0pt}{\pstr at mydimC}}{\pgfpoint{16pt}{\pstr at mydimC}}}%
+
+
+    %%%% draw using two halves of parabolas
+      %\pgfpathmoveto{\ptA}\pgfpathparabola{\pgfpointdiff{\ptA}{\bendpt}}{\pgfpointdiff{\bendpt}{\ptB}}%
+    %%%%
+    %%%% draw using lines
+      %\pgfpathmoveto{\ptA}\pgflineto{\bendpt}\pgflineto{\ptB}%
+    %%%%
+    %%%% draw using bezier curves
+      \pgfpathmoveto{\ptA}\pgfpathcurveto{\cptC}{\cptD}{\ptB}%
+    %%%%
+    \pgfsetcolor{#5}%
+
+    \def\linestyle{#6}
+    \ifx\linestyle\pstr at linestyledashed
+        \pgfsetdash{{3pt}{3pt}}{0cm}%
+        \pgfusepath{stroke}%
+    \else
+        \ifx\linestyle\pstr at linestyledotted
+            \pgfsetdash{{1pt}{3pt}}{0cm}%
+            \pgfusepath{stroke}%
+        \else
+            \ifx\linestyle\pstr at linestylenone
+
+            \else%solid
+                \pgfsetdash{}{0pt}%
+                \pgfusepath{stroke}%
+            \fi
+        \fi
+    \fi
+
+
+   %%% Put the label on the link if there is one
+    \def\label{#4}%
+    \ifx\label\empty%
+    \else%
+%      \pgfsetfillcolor{white!100}%
+%      \pgfset{inner xsep=1pt}%
+      \pgfset{inner ysep=1pt}%
+      %\pgftransformshift{\bendpt} % position the label at the bendpoint
+      \pgftransformshift{\pgfpointcurveattime{0.5}{\ptA}{\cptC}{\cptD}{\ptB}} % position the label at half-way on the curve
+      \pgfnode{rectangle}{south}{\color{black} {\pstr at LabelStyle $\label$}}{}{\pgfusepath{discard}}%
+    \fi%
+}
+
+
+
+
+
+%%%%%%% First way of creating a pointing string: user command \Pstr
+%%%%%%% (version for the PGF engine mode)
+%%%%
+%%%%  Examples of use:
+%%%%        \Pstr[0.4cm][1pt]{ (b) this (a-b,45:label) that }
+%%%%        \Pstr[0.4cm][1pt]{ (b) this (a-b,45) that }
+%%%%        \Pstr[0.4cm][1pt]{ (b) this (a-b) that }
+%%%%        \Pstr[0.4cm][1pt]{ (b) this (a) that }
+
+\gdef\Pstr at PGF{\@ifnextchar[{\Pstr at PGF@i}{\Pstr at PGF@ii[0cm][1pt]}}
+% Pstr with one optional parameter
+\gdef\Pstr at PGF@i[#1]{\@ifnextchar[{\Pstr at PGF@ii[#1]}{\Pstr at PGF@ii[#1][1pt]}}
+% Pstr with two optional parameters
+% [#1] ignored in the PGF mode
+% [#2] ignored in the PGF mode
+\gdef\Pstr at PGF@ii[#1][#2]#3{%
+\begin{pgfpicture}%
+  \def\pstr at arcoptions{#2}%
+  \pgfsetbaseline{0pt}%
+  \pgfset{minimum width=0cm}%
+  \pgfset{minimum height=0pt}%
+  \pgfset{inner xsep=0pt}%
+  \pgfset{inner ysep=0.3pt}%
+  \pgfsetarrows{-stealth}%
+  \pgfsetlinewidth{\pstr at ArrowLineWidth}%
+  \pstr at ptrlist={}% Create an empty list of links.
+  \Pstr at ParseSpecification#3(@-@){}\@nil%
+  \the\pstr at ptrlist% dump the list of links.
+\end{pgfpicture}%
+}
+
+% Create the node and store the commands for the creation of the link in the list of tokens tok0
+%  (to be executed when the sequence specification is completely parsed)
+%
+%  #1 text to be printed out before the node content
+%  #2 source node name
+%  #3 target node name
+%  #4 arrow angle
+%  #5 link label
+%  #6 line color
+%  #7 node content
+\gdef\pstr at PGF@createNodeAndArrow#1#2#3#4#5#6#7{
+    %\pstr at createpgfnode{s}{s}{\mbox{C[1($#1$)  2($#2$) 3($#3$) 4(#4) 5(#5) 6(#6)]} }
+    \pstr at drawNode{#1}{#2}{#7}%
+    % add the arrow to the list of arrows
+    \toks0={\pstr at drawArrow{#2}{#3}{#4}{#5}{#6}{\pstr at DefaultArrowLineStyle}}%
+    \edef\act{\noexpand\pstr at ptrlist={\the\pstr at ptrlist \the\toks0}}%
+    \act%
+}
+
+
+%%%%%%% Second way of creating a pointing string: user command \pstr
+%%%%%%% (version for the PGF engine mode)
+%%%%
+%%%% Syntax:
+%%%%  \pstr[raiseamount][nodesep]{ sequencespecification }
+%%%% Examples of use:
+%%%%  \pstr[IGNORED][IGNORED]{ \nd(b) this \nd(a-b,45) that }
+%%%%
+
+% Note that raiseamount is ignored in PGF mode since the bounding box is computed automatically.
+\gdef\pstr at PGF{\@ifnextchar[{\pstr at PGF@i}{\pstr at PGF@ii[0cm][1pt]}}
+% pstr with one optional parameter
+\gdef\pstr at PGF@i[#1]{\@ifnextchar[{\pstr at PGF@ii[#1]}{\pstr at PGF@ii[#1][1pt]}}
+% pstr with two optional parameters
+\gdef\pstr at PGF@ii[#1][#2]#3{%
+\begin{pgfpicture}%
+  \def\pstr at arcoptions{#2}%
+  \pgfsetbaseline{0pt}%
+  \pgfset{minimum width=0cm}%
+  \pgfset{minimum height=0pt}%
+  \pgfset{inner xsep=0pt}%
+  \pgfset{inner ysep=0.3pt}%
+  \pgfsetarrows{-stealth}%
+  \pgfsetlinewidth{\pstr at ArrowLineWidth}%
+  \pstr at ptrlist={}% Create an empty list of links.
+  \pstr at defineUserCommands% define the command \nd and \txt that the package user can use to define the sequence
+  #3%
+  \the\pstr at ptrlist% dump the list of links.
+\end{pgfpicture}%
+}
+
+\fi %%% \ifpstricks  ... \else ...
+
+%%%% End of definition of commands specific to the PSTricks mode
+%%%%%%%%%%%%%%%%%%%%%
+
+
+
+%%%%%%%%%%%%%%%%%%%%%
+%%%% Functions common to all rendering modes
+
+% When executed, the following macro will define two commands which will become available to the package user
+% for the definition of the sequence within a \pstr{ } command.
+%
+% It is called in the \pstr at PS and \pstr at PGF macros.
+\gdef\pstr at defineUserCommands{%
+    % node/link creation
+    \def\nd##1(##2)##3{%
+     % print out the text preceding the node specification
+     \pstr at printText{##1}%
+     % parse the node specification
+     \Pstr at ParseNodeSpecif{##1}{##2}{##3}\@nil%
+    }%
+    \def\txt##1{%
+     % print out text
+     \pstr at printText{##1}%
+    }%
+    % creation of an additional arrow
+    \def\arrow{\pstr at drawArrow}%
+}
+
+%%%%
+%%%%%%%%%%%%%%%%%%%%%
+
+
+
+%%%%%%%%%%%%%%%%%%%%%
+%%%% Code for the succint syntax parser. Used in all modes (pgf and pstricks)
+%%%%
+
+% Parse the specification of the pointing string.
+% #1 stuff to be printed in the sequence before the node
+% #2 node name and link specification
+% #3 node content
+\gdef\Pstr at ParseSpecification#1(#2)#3{%
+ % print out the text preceding the node specification
+ \pstr at printText{#1}
+ % parse the node specification
+ \Pstr at ParseNodeSpecif{#1}{#2}{#3}\@nil
+ % proceeds to the rest of the specification.
+ \@ifnextchar\@nil{\@gobble}{\Pstr at ParseSpecification}
+}
+
+\gdef\Pstr at ParseNodeSpecif#1#2#3{%
+ \Pstr at parselinkparam@Target{#1}(#2-){#3}%
+}
+
+% Parse a node specification
+% #1 stuff to be dumped (not part of the node specification)
+% #2 source
+% #3 link parameters (target,angle:label)
+\gdef\Pstr at parselinkparam@Target#1(#2-#3){%
+% if it is the the dummy node (@-@){} then skip it
+\if#2@
+  \def\suite{\Pstr at skipcontent}
+\else
+  % if a target node is specified then create the link for it.
+  \def\linkparam{#3}
+  \ifx\linkparam\empty
+    \def\suite{\Pstr at skiplinkparam{#1}{#2}}
+  \else
+    \def\suite{\Pstr at parselinkparam@Target at i{#1}{#2}#3\@nil} % #3 contains an extra '-' at the end that will be removed by this command
+  \fi
+\fi
+\suite
+}
+
+\gdef\Pstr at skipcontent#1\@nil{}
+
+% Parameters #1 and #2 have been parsed already
+%  #1 dump   #2 source node  #3 node content
+\gdef\Pstr at skiplinkparam#1#2#3\@nil{\pstr at drawNode{#1}{#2}{#3}}
+
+% remove the extra '-' (which was appended before), adds an extra ',' at the end and look for the next ','
+\gdef\Pstr at parselinkparam@Target at i#1#2#3-\@nil{\Pstr at parselinkparam@Angle{#1}{#2}#3,\@nil}
+
+\gdef\Pstr at parselinkparam@Angle#1#2#3,#4\@nil{
+  \def\reste{#4}
+  \ifx\reste\empty
+    \def\suite{\Pstr at parseNodeContent{#1}{#2}{#3}{\pstr at DefaultArrowAngle}{\pstr at DefaultArrowLabel}{\pstr at DefaultArrowColor}}
+  \else
+    \def\suite{\Pstr at parselinkparam@Angle at i{#1}{#2}{#3}#4\@nil} % #4 contains an extra ',' at the end that will be removed by this command
+  \fi
+  \suite
+}
+% remove the extra ',' (which was appended before), add an extra ':' at the end and look for the next ':'
+\gdef\Pstr at parselinkparam@Angle at i#1#2#3#4,\@nil{\Pstr at parselinkparam@Label{#1}{#2}{#3}#4:\@nil}
+
+\gdef\Pstr at parselinkparam@Label#1#2#3#4:#5\@nil{
+  \def\reste{#5}
+  \ifx\reste\empty
+    \def\suite{\Pstr at parseNodeContent{#1}{#2}{#3}{#4}{\pstr at DefaultArrowLabel}{\pstr at DefaultArrowColor}}
+  \else
+    \def\suite{\Pstr at parselinkparam@Label at i{#1}{#2}{#3}{#4}#5\@nil} % #5 contains an extra ':' at the end that will be removed by this command
+  \fi
+  \suite
+}
+% remove the extra ':' (which was appended before) add an extra ',' at the end and look for the next ','
+\gdef\Pstr at parselinkparam@Label at i#1#2#3#4#5:\@nil{\Pstr at parselinkparam@Color{#1}{#2}{#3}{#4}#5,\@nil}
+
+\gdef\Pstr at parselinkparam@Color#1#2#3#4#5,#6\@nil{
+  \def\reste{#6}
+  \ifx\reste\empty
+    \def\suite{\Pstr at parseNodeContent{#1}{#2}{#3}{#4}{#5}{\pstr at DefaultArrowColor}}
+  \else
+    \def\suite{\Pstr at parselinkparam@Color at i{#1}{#2}{#3}{#4}{#5}#6\@nil} % #6 contains an extra ',' at the end that will be removed by this command
+  \fi
+  \suite
+}
+% remove the extra ',' (which was appended before) and then goes on with the parsing
+\gdef\Pstr at parselinkparam@Color at i#1#2#3#4#5#6,\@nil{\Pstr at parseNodeContent{#1}{#2}{#3}{#4}{#5}{#6}}
+
+
+% End of the parsing of the link parameter, we just need to parse the node content (#7)
+% and we have all the parameters necessary to create the node and the link.
+\gdef\Pstr at parseNodeContent#1#2#3#4#5#6#7\@nil{%
+\pstr at createNodeAndArrow{#1}{#2}{#3}{#4}{#5}{#6}{#7}%
+}
+
+%%%%
+%%%% END OF THE CODE FOR THE PARSER
+%%%%%%%%%%%%%%%%%%%%%
+
+
+
+
+
+\catcode`\@=\TheAtCode\relax
+
+\endinput
+
+Change log:
+-----------
+Version 0.3.4 29 Oct 2007:
+- updated for use with the latest version of the pgf package
+Version 0.3.3 12 Oct 2007:
+- it is possible to specify the line style with the option \pstrSetArrowLineStyle
+- additional arrows can be created with \arrow in the \pstr syntax mode (but not in \Pstr)
+
+Version 0.3.2 24 Sep 2007:
+- the file pstring.pro was not created when the preamble was precompiled using latexdaemon
+Version 0.3.1, 3 May 2007:
+- It is now possible to specify the link color individually with the following link specification syntax:
+    (src-dst,80:label,green)
+Version 0.3, 1 Mar 2007:
+- added support for pgf as a drawing engine instead of the (hacked) pstricks
+- incompatibility with LatexDaemon fixed: before when loading the pstring package from a precompiled
+preamble, the prologue file was not included properly during the dvips conversion.
+
+Version 0.1, 28 Jan 2007 First version
+
+
+Examples:
+---------
+
+First way of creating a pointing string: user command \Pstr
+Examples of use:
+        \Pstr[0.4cm][1pt]{ (b) this (a-b,45:label) that }
+        \Pstr[0.4cm][1pt]{ (b) this (a-b,45) that }
+        \Pstr[0.4cm][1pt]{ (b) this (a-b) that }
+        \Pstr[0.4cm][1pt]{ (b) this (a) that }
+
+
+Second way of creating a pointing string: user command \pstr
+Syntax:
+    \pstr[raiseamount][nodesep]{ sequencespecification }
+Examples of use:
+    \pstr[10pt][1pt]{ \nd(b) this \nd(a-b,45) that }
+
+Note: in PGF mode, the 'raiseamount' is ignored, this is because the bounding-box is computed automatically by PGF so the box is already raised appropriately.
+
+
+TODO:
+----
+
+- Compute the bounding box automatically in PSTricks mode.
+- Change the \nd user command so that (optional) extra horizontal space is added
+before each node except the first one. This would avoid to have to write '\ ' after each node specification.
+- Change the \nd user command so that it looks after the node specification for extra text to be printed out. Then the \txt user command becomes unecessary and can be removed.
+- Implement a mode "PGF with overlays" which can be activated with the "overlay"  package option. In this mode, each node would be typeset within a seperate PGF environment and using the commands \pgfrememberpicturepositiononpage and
+\pgfrememberpicturepositiononpage appropriately so that PGF
+remembers the node names across different PGF environments.
+The bounding box would need to be computed by ourselves in that case.

Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2017-01-03 22:13:07 UTC (rev 42856)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2017-01-03 22:13:50 UTC (rev 42857)
@@ -500,7 +500,7 @@
     pst-spectra pst-spirograph
     pst-stru pst-support pst-text pst-thick pst-tools pst-tree pst-tvz pst-uml
     pst-vectorian pst-vowel pst-vue3d
-    pst2pdf pstool pstricks pstricks-add pstricks_calcnotes
+    pst2pdf pstool pstricks pstricks-add pstricks_calcnotes pstring
     psu-thesis ptex-base ptex-fonts ptex2pdf ptext ptptex
     punk punk-latex punknova purifyeps pxbase
     pxchfon pxcjkcat pxfonts pxgreeks pxjahyper

Modified: trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc	2017-01-03 22:13:07 UTC (rev 42856)
+++ trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc	2017-01-03 22:13:50 UTC (rev 42857)
@@ -819,6 +819,7 @@
 depend psfragx
 depend pst-pdf
 depend pstool
+depend pstring
 depend pxgreeks
 depend python
 depend qcm

Added: trunk/Master/tlpkg/tlpsrc/pstring.tlpsrc
===================================================================


More information about the tex-live-commits mailing list