summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-13 00:03:45 +0000
committerKarl Berry <karl@freefriends.org>2006-01-13 00:03:45 +0000
commit2f97632fbab3d8b5d3be0f7f14aaff77a5fb6db2 (patch)
tree1176e8cd922267798e6956c132b0bab4660c0898
parent42b23d14529347f13dc3bee278f53018fd5dba6f (diff)
psgo
git-svn-id: svn://tug.org/texlive/trunk@1229 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/tex/latex/psgo/psgo.sty304
1 files changed, 304 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/psgo/psgo.sty b/Master/texmf-dist/tex/latex/psgo/psgo.sty
new file mode 100644
index 00000000000..93d71470332
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/psgo/psgo.sty
@@ -0,0 +1,304 @@
+%% psgo.sty
+%% Copyright 2004, 2003,2001 V. Bos
+%
+% This program may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.2
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.2 or later is part of all distributions of LaTeX
+% version 1999/12/01 or later.
+%
+% This program consists of the files:
+%
+% psgo.sty
+% psgomanual.tex
+% psgomanual.ps
+%
+% RCS-ID: $Id: psgo.sty,v 1.7 2004/02/24 10:20:11 vbos Exp $
+%
+\NeedsTeXFormat{LaTeX2e}%
+\ProvidesPackage{psgo}[2003/10/06, v0.16]
+\message{`PSGO', <2004/02/24>, v0.16}
+\RequirePackage{pstricks,pstcol,pst-node,calc,ifthen}
+
+\newcommand{\psgo}{\textsf{psgo}}
+\newsavebox{\stmarkbox}
+\newcounter{gomove}
+\setcounter{gomove}{-1}
+\newcounter{boardsize}
+\newboolean{blackmove}
+\setboolean{blackmove}{true}
+\newcommand{\toggleblackmove}{%
+ \ifthenelse{\boolean{blackmove}}{\setboolean{blackmove}{false}}{\setboolean{blackmove}{true}}%
+}
+\newlength{\goxunit}
+\newlength{\goyunit}
+\newcommand{\setgounit}[1]{\setlength{\goxunit}{#1}\setlength{\goyunit}{1.115\goxunit}}
+\setgounit{0.6cm}
+\newcommand{\hatchangle}{-42.5}
+\newlength{\tmplx}
+\newlength{\tmply}
+\newlength{\tmpxa}%
+\newlength{\tmpxb}%
+\newlength{\tmpya}%
+\newlength{\tmpyb}%
+\newcounter{gotmpc}
+\newcommand{\pointbox}[1]{\raisebox{-0.5\height+0.5\depth}[0pt][0pt]{\makebox[0pt]{#1}}}
+\newcommand{\golabelformat}[1]{{\sffamily #1}}
+\newcommand{\goxposition}[1]{%
+ \ifx#1a 0\else%
+ \ifx#1b 1\else%
+ \ifx#1c 2\else%
+ \ifx#1d 3\else%
+ \ifx#1e 4\else%
+ \ifx#1f 5\else%
+ \ifx#1g 6\else%
+ \ifx#1h 7\else%
+ \ifx#1j 8\else%
+ \ifx#1k 9\else%
+ \ifx#1l 10\else%
+ \ifx#1m 11\else%
+ \ifx#1n 12\else%
+ \ifx#1o 13\else%
+ \ifx#1p 14\else%
+ \ifx#1q 15\else%
+ \ifx#1r 16\else%
+ \ifx#1s 17\else%
+ \ifx#1t 18\else%
+ \relax%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}%
+\newcommand{\goyposition}[1]{%
+ \ifnum#1=1 0\else%
+ \ifnum#1=2 1\else%
+ \ifnum#1=3 2\else%
+ \ifnum#1=4 3\else%
+ \ifnum#1=5 4\else%
+ \ifnum#1=6 5\else%
+ \ifnum#1=7 6\else%
+ \ifnum#1=8 7\else%
+ \ifnum#1=9 8\else%
+ \ifnum#1=10 9\else%
+ \ifnum#1=11 10\else%
+ \ifnum#1=12 11\else%
+ \ifnum#1=13 12\else%
+ \ifnum#1=14 13\else%
+ \ifnum#1=15 14\else%
+ \ifnum#1=16 15\else%
+ \ifnum#1=17 16\else%
+ \ifnum#1=18 17\else%
+ \ifnum#1=19 18\else%
+ \relax%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}%
+
+\newenvironment{gomoves}{%
+ \newcommand{\mdd}[4]{%
+ \setlength{\tmpxa}{\goxposition{##1}\goxunit}\addtolength{\tmpxa}{-0.5\goxunit}%
+ \setlength{\tmpxb}{\goxposition{##3}\goxunit}\addtolength{\tmpxb}{0.5\goxunit}%
+ \setlength{\tmpya}{\goyposition{##2}\goyunit}\addtolength{\tmpya}{-0.5\goyunit}%
+ \setlength{\tmpyb}{\goyposition{##4}\goyunit}\addtolength{\tmpyb}{0.5\goyunit}%
+ \psframe[dimen=middle,fillstyle=vlines,hatchsep=2pt,hatchwidth=0.2pt,hatchangle=\hatchangle,linestyle=none]%
+ (\tmpxa,\tmpya)(\tmpxb,\tmpyb)%
+ }%
+ \newcommand{\placesymbol}[3]{%
+ \ifthenelse{\value{boardsize} > \goxposition{##2}%
+ \and \value{boardsize} > \goyposition{##3}}{%
+ \rput(\goxposition{##2},\goyposition{##3}){##1}%
+ }{}%
+ }%
+ \newcommand{\markpos}[3]{\placesymbol{\psframebox[dimen=inner,fillcolor=white,fillstyle=solid,linestyle=none,boxsep=false,framesep=0.3\goxunit]{##1}}{##2}{##3}}%
+ \newcommand{\blackstone}[3][\relax]{%
+ \placesymbol{\pscircle[linewidth=0.4pt,fillstyle=solid,fillcolor=black](0,0){0.5\goxunit}%
+ {\psset{linecolor=white,fillcolor=white,hatchcolor=gray}\color{white}##1}}{##2}{##3}%
+ }%
+ \newcommand{\whitestone}[3][\relax]{%
+ \placesymbol{\pscircle[linewidth=0.4pt,fillstyle=solid,fillcolor=white](0,0){0.5\goxunit}%
+ {\psset{linecolor=black,fillcolor=black,hatchcolor=gray}\color{black}##1}}{##2}{##3}%
+ }%
+ \renewcommand{\stone}[4][\nomark{\relax}]{%
+% \def\stmark{\raisebox{-0.5\height+0.5\depth}[0.5\totalheight][0.5\totalheight]{\makebox[0pt]{##1}}}%
+ \def\stmark{\pointbox{##1}}
+ \ifthenelse{\equal{##2}{black}}%
+ {\blackstone[\stmark]{##3}{##4}}%
+ {\whitestone[\stmark]{##3}{##4}}%
+ }%
+ \newcommand{\move}{\@ifstar{\movestar}{\movenostar}}%
+ \newcommand{\movestar}[3][\nomark]{%
+ \ifthenelse{\boolean{blackmove}}%
+ {\stone[##1]{black}{##2}{##3}}%
+ {\stone[##1]{white}{##2}{##3}}%
+ \toggleblackmove%
+ }%
+ \newcommand{\movenostar}[3][\nomark]{%
+ \refstepcounter{gomove}%
+ \ifthenelse{\boolean{blackmove}}%
+ {\stone[##1\rput(0,0){\golabelformat{\thegomove}}]{black}{##2}{##3}}%
+ {\stone[##1\rput(0,0){\golabelformat{\thegomove}}]{white}{##2}{##3}}%
+ \toggleblackmove%
+ }%
+ \newcommand{\pass}{\@ifstar{\passstar}{\passnostar}}%
+ \newcommand{\passstar}{\toggleblackmove}%
+ \newcommand{\passnostar}{\refstepcounter{gomove}\toggleblackmove}%
+ \newcommand{\goline}[4]{\psline[linewidth=1.4pt,linecolor=black,linestyle=solid]%
+ (\goxposition{##1},\goyposition{##2})(\goxposition{##3},\goyposition{##4})%
+ }%
+ \newcommand{\goarrow}[4]{\psline[linewidth=1.4pt,linecolor=black,linestyle=solid,arrowscale=1.5]%
+ {->}%
+ (\goxposition{##1},\goyposition{##2})(\goxposition{##3},\goyposition{##4})%
+ }%
+ }{}%
+\newcommand{\xpositionmarks}[2]{%
+ \whiledo{\value{#1} < #2}{%
+ \rput[t](\value{#1},-\goyunit){%
+ \addtocounter{#1}{1}%
+ \ifthenelse{\value{#1} > 8}%
+ {\addtocounter{#1}{1}\golabelformat{\Alph{#1}}\addtocounter{#1}{-1}}%
+ {\golabelformat{\Alph{#1}}}%
+ \addtocounter{#1}{-1}}%
+ \setlength{\tmply}{#2\goyunit}%
+ \rput[B](\value{#1},\tmply){%
+ \addtocounter{#1}{1}%
+ \ifthenelse{\value{#1} > 8}%
+ {\addtocounter{#1}{1}\golabelformat{\Alph{#1}}\addtocounter{#1}{-1}}%
+ {\golabelformat{\Alph{#1}}}%
+ \addtocounter{#1}{-1}}%
+ \stepcounter{#1}%
+ }%
+ }%
+\newcommand{\ypositionmarks}[2]{%
+ \whiledo{\value{#1} < #2}{%
+ \addtocounter{#1}{1}%
+ \edef\ypos{\arabic{#1}}%
+ \addtocounter{#1}{-1}%
+ \rput[r](-\goxunit,\value{#1}){\golabelformat{\ypos}}%
+ \setlength{\tmplx}{#2\goxunit}%
+ \rput[l](\tmplx,\value{#1}){\golabelformat{\ypos}}%
+ \stepcounter{#1}%
+ }%
+ }%
+
+\def\psgosetboardsizes(#1,#2)(#3,#4){%
+ \def\psgollx{#1}%
+ \def\psgolly{#2}%
+ \ifthenelse{#3 > \value{boardsize}}{\def\psgourx{\value{boardsize}}}{\def\psgourx{#3}}%
+ \ifthenelse{#4 > \value{boardsize}}{\def\psgoury{\value{boardsize}}}{\def\psgoury{#4}}%
+}
+\newboolean{withindices}%
+\setboolean{withindices}{true}%
+\newenvironment{psgopartialboard}[2][19]{%
+ \setcounter{boardsize}{#1}%
+ \psgosetboardsizes#2%
+ \psset{xunit=\goxunit,yunit=\goyunit}%
+ \ifthenelse{\boolean{withindices}}%
+ {\def\xoffset{2\goxunit}\def\yoffset{2\goyunit}}%
+ {\def\xoffset{.5\goxunit}\def\yoffset{.5\goyunit}}%
+ \ifthenelse{\psgollx = 1 \or \psgollx < 1}%
+ {\def\psgollxval{-\xoffset}}%
+ {\setlength{\tmplx}{\psgollx\goxunit - 1\goxunit}\edef\psgollxval{\the\tmplx}}%
+ \ifthenelse{\psgolly = 1 \or \psgolly < 1}%
+ {\def\psgollyval{-\yoffset}}%
+ {\setlength{\tmply}{\psgolly\goyunit - 1\goyunit}\edef\psgollyval{\the\tmply}}%
+ \ifthenelse{\psgourx = \value{boardsize} \or \psgourx > \value{boardsize}}%
+ {\setlength{\tmplx}{\value{boardsize}\goxunit - \goxunit + \xoffset}%
+ \edef\psgourxval{\the\tmplx}}%
+ {\def\psgourxval{\psgourx\goxunit}}%
+ \ifthenelse{\psgoury = \value{boardsize} \or \psgoury > \value{boardsize}}%
+ {\setlength{\tmply}{\value{boardsize}\goyunit - \goyunit + \yoffset}%
+ \edef\psgouryval{\the\tmply}}%
+ {\def\psgouryval{\psgoury\goyunit}}%
+ \begin{pspicture}(\psgollxval,\psgollyval)(\psgourxval,\psgouryval)%
+ \ifthenelse{\psgollx = 1 \or \psgollx < 1}%
+ {\def\psgollxval{-\xoffset}}%
+ {\setlength{\tmplx}{\psgollx\goxunit - 1.5\goxunit}\edef\psgollxval{\the\tmplx}}%
+ \ifthenelse{\psgolly = 1 \or \psgolly < 1}%
+ {\def\psgollyval{-\yoffset}}%
+ {\setlength{\tmply}{\psgolly\goyunit - 1.5\goyunit}\edef\psgollyval{\the\tmply}}%
+ \ifthenelse{\psgourx = \value{boardsize} \or \psgourx > \value{boardsize}}%
+ {\setlength{\tmplx}{\value{boardsize}\goxunit - \goxunit + \xoffset}%
+ \edef\psgourxval{\the\tmplx}}%
+ {\setlength{\tmplx}{\psgourx\goxunit - .5\goxunit}%
+ \edef\psgourxval{\the\tmplx}}%
+ \ifthenelse{\psgoury = \value{boardsize} \or \psgoury > \value{boardsize}}%
+ {\setlength{\tmply}{\value{boardsize}\goyunit - \goyunit + \yoffset}%
+ \edef\psgouryval{\the\tmply}}%
+ {\setlength{\tmply}{\psgoury\goyunit - .5\goyunit}%
+ \edef\psgouryval{\the\tmply}}%
+ %% uncomment the following line to get a visual bounding box
+ %% \psframe[linecolor=green,linewidth=0.4pt](\psgollxval,\psgollyval)(\psgourxval,\psgouryval)
+ \psclip{\psframe[linecolor=white,linewidth=0](\psgollxval,\psgollyval)(\psgourxval,\psgouryval)}%
+ \setlength{\tmply}{\value{boardsize}\goyunit + 0.5\goyunit}%
+ \setlength{\tmplx}{\value{boardsize}\goxunit + 0.5\goxunit}%
+ \addtolength{\tmply}{-1.5\goyunit}%
+ \addtolength{\tmplx}{-1.5\goxunit}%
+ \multips(0,0)(1,0){\value{boardsize}}{\psline[linewidth=0.2pt](0,0)(0,\tmply)}%
+ \multips(0,0)(0,1){\value{boardsize}}{\psline[linewidth=0.2pt](0,0)(\tmplx,0)}%
+ \psframe[linewidth=1pt](0,0)(\tmplx,\tmply)%
+ \ifthenelse{\boolean{withindices}}{%
+ \setcounter{gotmpc}{0}%
+ \xpositionmarks{gotmpc}{\value{boardsize}}%
+ \setcounter{gotmpc}{0}%
+ \ypositionmarks{gotmpc}{\value{boardsize}}%
+ }{\relax}%
+ \ifthenelse{\equal{\value{boardsize}}{19}}{%
+ \multips(3,3)(0,6){3}{\pscircle[fillstyle=solid,fillcolor=black](0,0){.15\goxunit}}%
+ \multips(9,3)(0,6){3}{\pscircle[fillstyle=solid,fillcolor=black](0,0){.15\goxunit}}%
+ \multips(15,3)(0,6){3}{\pscircle[fillstyle=solid,fillcolor=black](0,0){.15\goxunit}}%
+ }{\relax}%
+ \begin{gomoves}%
+ }%
+ {\end{gomoves}%
+ \endpsclip%
+ \end{pspicture}%
+ }%
+\newenvironment{psgoboard}[1][19]{%
+ \begin{psgopartialboard}[#1]{(0,0)(#1,#1)}%
+}{%
+ \end{psgopartialboard}%
+}
+
+\newenvironment{psgopartialboard*}[2][19]{%
+ \setboolean{withindices}{false}%
+ \begin{psgopartialboard}[#1]{#2}%
+}{\end{psgopartialboard}}
+
+\newenvironment{psgoboard*}[1][19]{%
+ \begin{psgopartialboard*}[#1]{(0,0)(#1,#1)}%
+}{%
+ \end{psgopartialboard*}%
+}
+
+\newcommand{\nomark}{\relax}%
+\newcommand{\factor}{0.28284271247461901}% = 2/5 * sin(1/4 * pi)
+\newcommand{\markma}{%
+ \psline[linewidth=1.4pt](-\factor,-\factor)(\factor,\factor)%
+ \psline[linewidth=1.4pt](-\factor,\factor)(\factor,-\factor)%
+ }
+\newcommand{\marktr}{%
+ \rput(0,-0.3\goxunit){\pstriangle(-0.66\goxunit,0.66\goxunit)}%
+ }%
+\newcommand{\markcr}{%
+ \pscircle(0,0){0.33\goxunit}%
+ }
+\newcommand{\marksq}{%
+ \psframe(-0.33\goxunit,-0.33\goxunit)(0.33\goxunit,0.33\goxunit)%
+ }
+\newcommand{\marklb}[1]{%
+ \rput(0,0){\golabelformat{#1}}%
+ }%
+\newcommand{\marksl}{%
+ \psframe[fillstyle=solid,fillcolor=gray,linecolor=gray](-0.22\goxunit,-0.22\goxunit)(0.22\goxunit,0.22\goxunit)%
+ }%
+\newcommand{\markdd}{%
+ \psframe[dimen=middle,fillstyle=vlines,hatchsep=2pt,hatchwidth=0.2pt,hatchangle=\hatchangle,linestyle=none]%
+ (-0.5\goxunit,-0.5\goyunit)(0.5\goxunit,0.5\goyunit)%
+ }%
+\newcommand{\stone}[2][\relax]{%
+ \setlength{\tmply}{-0.5\goxunit + 0.5ex}%
+ \raisebox{\tmply}{\psset{unit=\goxunit}\begin{pspicture}(-0.5,-0)(0.5,1)%
+ \pscircle[fillstyle=solid,fillcolor=#2](0,0.5){0.5}%
+ \ifthenelse{\equal{#2}{black}}%
+ {\rput(0,0.5){{\psset{linecolor=white}\color{white}\golabelformat{#1}}}}%
+ {\rput(0,0.5){{\psset{linecolor=black}\color{black}\golabelformat{#1}}}}%
+ \end{pspicture}}}