From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 2 Sep 2019 13:46:59 +0900
Subject: Initial commit

---
 fonts/igo/igo.sty | 731 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 731 insertions(+)
 create mode 100644 fonts/igo/igo.sty

(limited to 'fonts/igo/igo.sty')

diff --git a/fonts/igo/igo.sty b/fonts/igo/igo.sty
new file mode 100644
index 0000000000..cbdf116592
--- /dev/null
+++ b/fonts/igo/igo.sty
@@ -0,0 +1,731 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% File          : igo.sty
+%% Version       : 0.62
+%% Date          : Latest release January 2007. Major releases in April 2003 and February 2006
+%% Authors       : �tienne Dupuis (igo@lestourtereaux.fr)
+%%               : Improvements by Nikolay Nemov (nine@che.nsk.su)
+%% Purpose       : A TeX package to manipulate Go games and positions.
+%% Documentation : igo.tex
+%% Credits       : Based on Hanna Kolodziejska's go.sty version 0.05, 11/1991
+%%               : Uses Victor Eijkhout's ultimate loop macro (repeat.tex).
+%% Requires      : <repeat.tex>, version 0.93, 05/2003.
+%% History       : April 2003 - Version 0.50 - Initial release by �. Dupuis
+%%               : January 2004 - Version 0.51 - Added a '%', thanks to P. Chalmoviansky
+%%               : February 2006 - Version 0.60 - Improvements by N. Nemov and �. Dupuis, thanks to F. Mittelbach
+%%               : April 2006 - Version 0.61 - Fixed \igo@char so that \clearstonesymbols works correctly
+%%               : January 2007 - Version 0.62 - Improvements by N. Nemov (command \gobansymbols)
+%% License       : This work may be distributed and/or modified under the
+%%               : conditions of the LaTeX Project Public License, either version 1.3
+%%               : of this license or (at your option) any later version.
+%%               : The latest version of this license is available at
+%%               : http://www.latex-project.org and version 1.3 or later is part
+%%               : of all distributions of LaTeX since December 2005.
+%%               : This package has the LPPL maintenance status �maintained�, the
+%%               : current maintainer being the original author, �. Dupuis.
+%%               : This package consists of the stylesheet igo.sty, the documentation
+%%               : igo.tex and the related font files.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\typeout{%
+^^J++++++++++++++++++++++++++++++++++++++++++++++++++++++
+^^J++++++++++++ igo.sty - January 2007 - 0.62 +++++++++++
+^^J+ A TeX package to manipulate Go games and positions +
+^^J++++++++++++++++++++++++++++++++++++++++++++++++++++++^^J}%
+
+\input{repeat.tex}
+
+\catcode`@=11
+\catcode`|=11
+\catcode`;=11
+
+\newcount\igo@count
+\newcount\igo@endwhile
+
+\newcount\igo@fontsize
+
+\newcount\igo@minrow
+\newcount\igo@maxrow
+\newcount\igo@mincol
+\newcount\igo@maxcol
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Copied from latex.ltx
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\long\def\igo@first#1#2{#1}
+\long\def\igo@second#1#2{#2}
+\def\igo@ifundefined#1{%
+	\expandafter\ifx\csname#1\endcsname\relax%
+		\expandafter\igo@first%
+	\else%
+		\expandafter\igo@second%
+	\fi%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Drawing fonts (Copied from go.sty)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newbox\igo@box
+\newdimen\igo@dimen
+
+\def\igo@fonts#1{%
+	\global\font\igo@font=igo#1 at #1truept%
+	\global\font\igo@blackfonti=igoblacki#1 at #1truept%
+	\global\font\igo@whitefonti=igowhitei#1 at #1truept%
+	\global\font\igo@blackfontii=igoblackii#1 at #1truept%
+	\global\font\igo@whitefontii=igowhiteii#1 at #1truept%
+	\global\font\igo@blackfontiii=igoblackiii#1 at #1truept%
+	\global\font\igo@whitefontiii=igowhiteiii#1 at #1truept%
+	\global\setbox\igo@box=\hbox{\igo@font\char0}%
+	\global\igo@dimen=\wd\igo@box%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Characters
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\igonone{999}
+
+\def\igotriangle{-1}
+\def\igosquare{-2}
+\def\igocircle{-3}
+\def\igocross{-4}
+
+\def\igo@char#1#2{%
+	\ifnum #2=\igotriangle\relax%
+		\csname igo@#1fontiii\endcsname\char127\relax%
+	\else%
+	\ifnum #2=\igosquare\relax%
+		\csname igo@#1fontiii\endcsname\char126\relax%
+	\else%
+	\ifnum #2=\igocircle\relax%
+		\csname igo@#1fontiii\endcsname\char125\relax%
+	\else%
+	\ifnum #2=\igocross\relax%
+		\csname igo@#1fontiii\endcsname\char124\relax%
+	\else%
+	\ifnum #2<0\relax%
+		\errmessage{Stone number must be positive.}%
+	\else%
+	\ifnum #2<128\relax%
+		\csname igo@#1fonti\endcsname\char#2\relax%
+	\else%
+	\ifnum #2<256\relax%
+		\csname igo@#1fontii\endcsname%
+		\igo@count=#2\advance\igo@count by -128%
+		\char\igo@count\relax%
+	\else%
+	\ifnum #2<380\relax%
+		\csname igo@#1fontiii\endcsname%
+		\igo@count=#2\advance\igo@count by -256%
+		\char\igo@count\relax%
+	\else%
+	\ifnum #2<\igonone\relax%
+		\errmessage{Stone number is too large.}%
+	\else\relax%
+		\csname igo@#1fonti\endcsname\char0\relax% 
+	\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}
+
+\def\igo@wchar#1{\igo@char{white}{#1}}
+\def\igo@bchar#1{\igo@char{black}{#1}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Display sizes
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\igofontsize#1{%
+	\ifnum #1>17\relax%
+		\global\igo@fontsize=20\relax%
+		\igo@fonts{20}\relax%
+	\else%
+	\ifnum #1>13\relax%
+	\global\igo@fontsize=15\relax%
+		\igo@fonts{15}\relax%
+	\else%  
+	\ifnum #1>12\relax% 
+		\global\igo@fontsize=12\relax%
+		\igo@fonts{12}\relax%
+	\else%
+	\ifnum #1<5\relax%
+		\global\igo@fontsize=5\relax%
+		\igo@fonts{5}\relax%
+	\else%
+		\global\igo@fontsize=#1\relax%
+		\igo@fonts{#1}\relax%
+	\fi\fi\fi\fi%
+}  
+
+\def\smallgoban{%
+	\global\igo@fontsize=10%
+	\igo@fonts{10}%
+}
+
+\def\normalgoban{%
+	\global\igo@fontsize=15%
+	\igo@fonts{15}%
+}
+
+\def\largegoban{%
+	\global\igo@fontsize=20%
+	\igo@fonts{20}%
+}
+
+\smallgoban
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Support for multiple boards
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcount\igo@board
+
+\def\usegoban#1{%
+	\ifnum #1<0 \errmessage{Positive number expected.} \fi%
+	\global\igo@board=#1%
+}
+
+\usegoban{1}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Support for various board sizes
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\igo@size{\csname igo@size|\number0\endcsname}
+
+\def\gobansize#1{%
+	\ifnum #1<2 \errmessage{Goban size must be between 2 and 50.} \fi%
+	\ifnum #1>50 \errmessage{Goban size must be between 2 and 50.} \fi%
+	\expandafter\gdef\csname igo@size|\number0\endcsname{#1}%
+}
+
+\gobansize{19}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Coordinate system
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\igo@rowlabel#1{\number#1}
+\def\igo@columnlabel#1{\ifcase #1i\or a\or b\or c\or d\or e\or f\or g\or h\or j\or k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\or A\or B\or C\or D\or E\or F\or G\or H\or J\or K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else I\fi}
+
+\def\igo@intersectionlabel#1#2{\igo@columnlabel{#1}\igo@rowlabel{#2}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Hoshi points
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\expandafter\def\csname igo@hoshi;e5;9\endcsname{1}
+\expandafter\def\csname igo@hoshi;c3;9\endcsname{1}
+\expandafter\def\csname igo@hoshi;c7;9\endcsname{1}
+\expandafter\def\csname igo@hoshi;g3;9\endcsname{1}
+\expandafter\def\csname igo@hoshi;g7;9\endcsname{1}
+
+\expandafter\def\csname igo@hoshi;d4;13\endcsname{1}
+\expandafter\def\csname igo@hoshi;g7;13\endcsname{1}
+\expandafter\def\csname igo@hoshi;d10;13\endcsname{1}
+\expandafter\def\csname igo@hoshi;k4;13\endcsname{1}
+\expandafter\def\csname igo@hoshi;k10;13\endcsname{1}
+
+\expandafter\def\csname igo@hoshi;k10;19\endcsname{1}
+\expandafter\def\csname igo@hoshi;d4;19\endcsname{1}
+\expandafter\def\csname igo@hoshi;d16;19\endcsname{1}
+\expandafter\def\csname igo@hoshi;q4;19\endcsname{1}
+\expandafter\def\csname igo@hoshi;q16;19\endcsname{1}
+\expandafter\def\csname igo@hoshi;d10;19\endcsname{1}
+\expandafter\def\csname igo@hoshi;k4;19\endcsname{1}
+\expandafter\def\csname igo@hoshi;k16;19\endcsname{1}
+\expandafter\def\csname igo@hoshi;q10;19\endcsname{1}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Stones on board.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\igo@supergoban#1#2#3{\expandafter\xdef\csname igo@stone;#1|\number#3\endcsname{#2}}
+\def\igo@goban#1#2{\igo@supergoban{#1}{#2}{\igo@board}}
+
+\def\igo@superstone#1#2#3{\csname igo@stone;\igo@intersectionlabel{#1}{#2}|\number#3\endcsname\relax}
+\def\igo@stone#1#2{\igo@superstone{#1}{#2}{\igo@board}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Adding white or stones
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\igo@eatbrackets[#1]{}
+
+\def\white{\futurelet\igo@nextchar\igo@optionalwhite}
+\def\igo@optionalwhite{\ifx[\igo@nextchar\let\igo@newmacro\igo@manywhiten\else\let\igo@newmacro\igo@manywhite\fi\igo@newmacro}
+
+\def\igo@whiten[#1]#2{\igo@goban{#2}{\igo@wchar{#1}}}
+\def\igo@white#1{\igo@whiten[0]{#1}}
+
+\def\igo@manywhite#1{\igo@recursivewhite#1,,}
+\def\igo@recursivewhite#1,{\def\igo@end{}\def\igo@arg{#1}\ifx\igo@arg\igo@end\else\igo@white{#1}\expandafter\igo@recursivewhite\fi}
+
+\def\igo@manywhiten[#1]#2{\igo@recursivewhiten[#1]#2,,}
+\def\igo@recursivewhiten[#1]#2,{%
+	\edef\igo@one{#1}%
+	\igo@count=\igo@one%
+	\advance\igo@count by 1%
+	\edef\igo@option{\number\igo@count}%
+	\def\igo@end{}%
+	\def\igo@two{#2}%
+	\ifx\igo@two\igo@end{}\relax%
+		\let\igo@next\igo@eatbrackets%
+	\else%
+		\igo@whiten[\igo@one]{\igo@two}%
+		\ifnum \igo@one<1\relax%
+			\let\igo@option=\igo@one%
+			\let\igo@next\igo@recursivewhiten%
+		\else%
+			\let\igo@next\igo@recursiveblackn%
+		\fi%
+	\fi%
+	\igo@next[\igo@option]%
+}
+
+%%
+
+\def\black{\futurelet\igo@nextchar\igo@optionalblack}
+\def\igo@optionalblack{\ifx[\igo@nextchar\let\igo@newmacro\igo@manyblackn\else\let\igo@newmacro\igo@manyblack\fi\igo@newmacro}
+
+\def\igo@blackn[#1]#2{\igo@goban{#2}{\igo@bchar{#1}}}
+\def\igo@black#1{\igo@blackn[0]{#1}}
+
+\def\igo@manyblack#1{\igo@recursiveblack#1,,}
+\def\igo@recursiveblack#1,{\def\igo@end{}\def\igo@arg{#1}\ifx\igo@arg\igo@end\else\igo@black{#1}\expandafter\igo@recursiveblack\fi}
+
+\def\igo@manyblackn[#1]#2{\igo@recursiveblackn[#1]#2,,}
+\def\igo@recursiveblackn[#1]#2,{%
+	\edef\igo@one{#1}%
+	\igo@count=\igo@one%
+	\advance\igo@count by 1%
+	\edef\igo@option{\number\igo@count}%
+	\def\igo@end{}%
+	\def\igo@two{#2}%
+	\ifx\igo@two\igo@end{}\relax%
+		\let\igo@next\igo@eatbrackets%
+	\else%
+		\igo@blackn[\igo@one]{\igo@two}%
+		\ifnum \igo@one<1\relax%
+			\let\igo@option=\igo@one%
+			\let\igo@next\igo@recursiveblackn%
+		\else%
+			\let\igo@next\igo@recursivewhiten%
+		\fi%
+	\fi%
+	\igo@next[\igo@option]%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Removing stones from board
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\igo@superclear#1#2{\global\expandafter\let\csname igo@stone;#1|\number#2\endcsname=\relax}
+\def\igo@clear#1{\igo@superclear{#1}{\igo@board}}
+
+\def\clear#1{\igo@recursiveclear#1,,}
+\def\igo@recursiveclear#1,{\def\igo@end{}\def\igo@arg{#1}\ifx\igo@arg\igo@end\else\igo@clear{#1}\expandafter\igo@recursiveclear\fi}
+
+\def\igo@cleargoban#1#2#3#4{%
+	\igo@endwhile=#2%
+	\advance\igo@endwhile by -1%
+	\repeat\for{row} \from{#4} \while{\ifnum \row>\igo@endwhile} \do{%
+		\repeat\for{col} \from{#1} \to{#3} \do{%
+			\igo@clear{\igo@intersectionlabel{\col}{\row}}%
+		}%
+		\advance\row by -2%
+	}%
+}
+
+\def\cleargoban{\futurelet\igo@nextchar\igo@optionalcleargoban}
+\def\igo@optionalcleargoban{\ifx[\igo@nextchar\let\igo@newmacro\igo@clearpartgoban\else\let\igo@newmacro\igo@clearallgoban\fi\igo@newmacro}
+
+\def\igo@clearallgoban{\igo@cleargoban{1}{1}{\igo@size}{\igo@size}}
+\def\igo@clearpartgoban[#1#2,#3#4]{%
+	\igo@minrow=#2%
+	\igo@maxrow=#4%
+	\igo@mincol=1%
+	\igo@maxcol=\igo@size%
+	\repeat\for{col} \to{\igo@size} \do {%
+		\if #1\igo@columnlabel{\col}\relax\igo@mincol=\col\fi%
+		\if #3\igo@columnlabel{\col}\relax\igo@maxcol=\col\fi%
+	}%
+	\igo@cleargoban{\igo@mincol}{\igo@minrow}{\igo@maxcol}{\igo@maxrow}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Symbols on the board
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\gobansymbol#1#2{%
+	\ifcat a#2\relax \else\ifcat 0#2\relax \else%
+		\errmessage{Invalid goban symbol.}%
+	\fi\fi%
+	\def\igo@symbol{\igo@font#2}\igo@recursivesymbol#1,,%
+}
+		
+\def\igo@recursivesymbol#1,{\def\igo@end{}\def\igo@arg{#1}\ifx\igo@arg\igo@end\else\igo@goban{#1}{\igo@symbol}\expandafter\igo@recursivesymbol\fi}
+
+\def\igo@boardlabel#1{\ifcase #1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\or A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\or 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or 9\fi}
+\newcount\igo@boardlabelnum
+
+\def\gobansymbols#1#2{%
+	\ifcat a#2\relax \else\ifcat 0#2\relax \else%
+		\errmessage{Invalid goban symbol.}%
+	\fi\fi%
+	\igo@boardlabelnum=0%
+	\repeat \for{symbol} \from{1} \to{62} \do{%
+		\if #2\igo@boardlabel{\symbol} \expandafter\breakrepeat \fi%
+		\igo@boardlabelnum=\symbol%
+	}%
+	\igo@recursivesymbols#1,,%
+}
+
+\def\igo@recursivesymbols#1,{\advance\igo@boardlabelnum by 1\def\igo@end{}\def\igo@arg{#1}\ifx\igo@arg\igo@end\else \igo@goban{#1}{\igo@font\igo@boardlabel{\igo@boardlabelnum}}\expandafter\igo@recursivesymbols\fi}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Characters needed to draw the board
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\igo@ishoshi#1#2{\csname igo@hoshi;\igo@intersectionlabel{#1}{#2};\number\igo@size\endcsname}
+
+\def\igo@gobanchar#1#2{%
+	\ifnum 1=#1%
+		\ifnum 1=#2%
+			\igo@font\char8%                           % Bottom left corner
+		\else\ifnum \igo@size=#2%                 
+			\igo@font\char6%                           % Top left corner
+		\else%
+			\igo@font\char2%                           % Left border
+		\fi\fi%
+	\else\ifnum \igo@size=#1%
+		\ifnum 1=#2%
+			\igo@font\char9%                           % Bottom right corner
+		\else\ifnum \igo@size=#2%
+			\igo@font\char7%                           % Top right corner
+		\else%
+			\igo@font\char3%                           % Right border
+		\fi\fi%
+	\else\ifnum 1=#2%
+		\igo@font\char5%                             % Bottom border
+	\else\ifnum \igo@size=#2%
+		\igo@font\char4%                             % Top border
+	\else\if 1\igo@ishoshi{#1}{#2}\relax%
+		\igo@font\char0%                             % Hoshi point
+	\else%
+		\igo@font\char1%                             % Empty interior square
+	\fi\fi\fi\fi\fi%
+}
+
+\def\igo@gobanbgrdchar#1#2{%
+	\ifnum 1=#1%
+		\ifnum 1=#2%
+			\igo@font\char17%                          % Bottom left corner
+		\else\ifnum \igo@size=#2%                 
+			\igo@font\char15%                          % Top left corner
+		\else%
+			\igo@font\char11%                          % Left border
+		\fi\fi%
+	\else\ifnum \igo@size=#1%
+		\ifnum 1=#2%
+			\igo@font\char18%                          % Bottom right corner
+		\else\ifnum \igo@size=#2%
+			\igo@font\char16%                          % Top right corner
+		\else%
+			\igo@font\char12%                          % Right border
+		\fi\fi%
+	\else\ifnum 1=#2%
+		\igo@font\char14%                            % Bottom border
+	\else\ifnum \igo@size=#2%
+		\igo@font\char13%                            % Top border
+	\else%
+		\igo@font\char10%                            % Empty interior square
+	\fi\fi\fi\fi%
+}
+
+\def\igo@backspace{%
+	\hskip -\wd\igo@box%
+}
+
+\def\igo@getchar#1#2{%
+	\igo@ifundefined%
+		{igo@stone;\igo@intersectionlabel{#1}{#2}|\number\igo@board}%
+		{\rlap{\igo@gobanchar{#1}{#2}}\hskip\wd\igo@box}%
+		{\rlap{\igo@gobanbgrdchar{#1}{#2}\igo@backspace\igo@stone{#1}{#2}}\hskip\wd\igo@box}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Define size of stones in text (Nikolai Nemov, from size10.clo)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\renewcommand\normalsize{%
+	\@setfontsize\normalsize\@xpt\@xiipt
+	\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
+	\abovedisplayshortskip \z@ \@plus3\p@
+	\belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
+	\belowdisplayskip \abovedisplayskip
+	\let\@listi\@listI
+	\def\stonesize{\igo@fonts{9}}%
+}
+
+\renewcommand\small{%
+	\@setfontsize\small\@ixpt{11}%
+	\abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
+	\abovedisplayshortskip \z@ \@plus2\p@
+	\belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
+	\def\@listi{\leftmargin\leftmargini
+		\topsep 4\p@ \@plus2\p@ \@minus2\p@
+		\parsep 2\p@ \@plus\p@ \@minus\p@
+		\itemsep \parsep}%
+	\belowdisplayskip \abovedisplayskip
+	\def\stonesize{\igo@fonts{8}}%
+}
+
+\renewcommand\footnotesize{%
+	\@setfontsize\footnotesize\@viiipt{9.5}%
+	\abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
+	\abovedisplayshortskip \z@ \@plus\p@
+	\belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
+	\def\@listi{\leftmargin\leftmargini
+		\topsep 3\p@ \@plus\p@ \@minus\p@
+		\parsep 2\p@ \@plus\p@ \@minus\p@
+		\itemsep \parsep}%
+	\belowdisplayskip \abovedisplayskip
+	\def\stonesize{\igo@fonts{7}}%
+}
+
+\renewcommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt
+	\def\stonesize{\igo@fonts{6}}}%
+\renewcommand\tiny{\@setfontsize\tiny\@vpt\@vipt
+	\def\stonesize{\igo@fonts{5}}}%
+\renewcommand\large{\@setfontsize\large\@xiipt{14}
+	\def\stonesize{\igo@fonts{10}}}%
+\renewcommand\Large{\@setfontsize\Large\@xivpt{18}
+	\def\stonesize{\igo@fonts{11}}}%
+\renewcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}
+	\def\stonesize{\igo@fonts{12}}}%
+\renewcommand\huge{\@setfontsize\huge\@xxpt{25}
+	\def\stonesize{\igo@fonts{15}}}%
+\renewcommand\Huge{\@setfontsize\Huge\@xxvpt{30}
+	\def\stonesize{\igo@fonts{20}}}%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Displaying stones within normal text
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\blackstone{\leavevmode\futurelet\igo@nextchar\igo@optionalblackstone}
+\def\igo@optionalblackstone{\ifx[\igo@nextchar\let\igo@newmacro\igo@blackstonen\else\let\igo@newmacro\igo@blackstone\fi\igo@newmacro}
+
+\def\igo@blackstone{\igo@blackstonen[0]}
+\def\igo@blackstonen[#1]{\stonesize\lower0.2\wd\igo@box\hbox{\igo@bchar{#1}}\igo@fonts{\number\igo@fontsize}}
+
+%%
+
+\def\whitestone{\leavevmode\futurelet\igo@nextchar\igo@optionalwhitestone}
+\def\igo@optionalwhitestone{\ifx[\igo@nextchar\let\igo@newmacro\igo@whitestonen\else\let\igo@newmacro\igo@whitestone\fi\igo@newmacro}
+
+\def\igo@whitestone{\igo@whitestonen[0]}
+\def\igo@whitestonen[#1]{\stonesize\lower0.2\ht\igo@box\hbox{\igo@wchar{#1}}\igo@fonts{\number\igo@fontsize}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Display a board
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%\let\igobreakafterdiagram=\break
+\let\igobreakafterdiagram\empty
+
+\def\igo@showgoban#1#2#3#4{%
+	\igo@endwhile=#2%
+	\advance\igo@endwhile by -1%
+	\igo@count=1%
+	\advance\igo@count by #3%
+	\advance\igo@count by -#1%
+	\leavevmode\hbox{%
+		\vbox{\offinterlineskip\noindent%
+			\hsize=\igo@dimen%
+			\multiply\hsize\igo@count%
+			\break%    
+			\repeat\for{row} \from{#4} \while{\ifnum \row>\igo@endwhile} \do{%
+				\repeat\for{col} \from{#1} \to{#3} \do{%
+					\igo@getchar{\col}{\row}%
+				}%
+				\advance\row by -2%
+				\break%
+			}%
+			\break%
+		}%
+	}%
+	\igobreakafterdiagram%
+}
+
+\def\showgoban{\futurelet\igo@nextchar\igo@optionalshowgoban}
+\def\igo@optionalshowgoban{\ifx[\igo@nextchar\let\igo@newmacro\igo@showmygoban\else\let\igo@newmacro\igo@autoshowgoban\fi\igo@newmacro}
+
+\def\igo@autoshowgoban{%
+	\igo@mincol=\igo@size%
+	\igo@minrow=\igo@size%
+	\igo@maxcol=1%
+	\igo@maxrow=1%
+	\repeat\for{row} \from{1} \to{\igo@size} \do{%
+		\repeat\for{col} \from{1} \to{\igo@size} \do{%
+			\igo@ifundefined%
+				{igo@stone;\igo@intersectionlabel{\col}{\row}|\number\igo@board}%
+				{\relax}%
+				{%
+					\ifnum\col<\igo@mincol\relax\igo@mincol=\col\fi%
+					\ifnum\col>\igo@maxcol\relax\igo@maxcol=\col\fi%
+					\ifnum\row<\igo@minrow\relax\igo@minrow=\row\fi%
+					\ifnum\row>\igo@maxrow\relax\igo@maxrow=\row\fi%
+				}%
+		}%
+	}%
+	\ifnum\igo@mincol>1\relax\advance\igo@mincol by -1\fi%
+	\ifnum\igo@minrow>1\relax\advance\igo@minrow by -1\fi%
+	\ifnum\igo@maxcol<\igo@size\relax\advance\igo@maxcol by 1\fi%
+	\ifnum\igo@maxrow<\igo@size\relax\advance\igo@maxrow by 1\fi%
+	\ifnum\igo@mincol=2\relax\igo@mincol=1\fi%
+	\ifnum\igo@minrow=2\relax\igo@minrow=1\fi%
+	\advance\igo@maxcol by 1%
+	\advance\igo@maxrow by 1%
+	\ifnum\igo@maxcol=\igo@size\relax\else\advance\igo@maxcol by -1\fi%
+	\ifnum\igo@maxrow=\igo@size\relax\else\advance\igo@maxrow by -1\fi%
+	\ifnum\igo@minrow>\igo@maxrow\relax\igo@minrow=1\igo@maxrow=\igo@size\fi%
+	\ifnum\igo@mincol>\igo@maxcol\relax\igo@mincol=1\igo@maxcol=\igo@size\fi%
+	\igo@showgoban{\igo@mincol}{\igo@minrow}{\igo@maxcol}{\igo@maxrow}%
+}
+
+\def\igo@showmygoban[#1#2,#3#4]{%
+	\igo@minrow=#2%
+	\igo@maxrow=#4%
+	\igo@mincol=1%
+	\igo@maxcol=\igo@size%
+	\repeat\for{col} \to{\igo@size} \do{%
+		\if #1\igo@columnlabel{\col}\relax\igo@mincol=\col\fi%
+		\if #3\igo@columnlabel{\col}\relax\igo@maxcol=\col\fi%
+	}%
+	\igo@showgoban{\igo@mincol}{\igo@minrow}{\igo@maxcol}{\igo@maxrow}%
+}
+
+\def\showfullgoban{\igo@showgoban{1}{1}{\igo@size}{\igo@size}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Copying boards
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\igo@copygoban#1#2{%
+	\repeat\for{row} \from{1} \to{\igo@size} \do {%
+		\repeat\for{col} \from{1} \to{\igo@size} \do {%
+			\igo@ifundefined%
+				{igo@stone;\igo@intersectionlabel{\col}{\row}|\number#1}%
+				{\igo@superclear{\igo@intersectionlabel{\col}{\row}}{#2}}%
+				{\igo@supergoban{\igo@intersectionlabel{\col}{\row}}{\igo@superstone{\col}{\row}{#1}}{#2}}%
+		}%
+	}%
+}
+
+\def\copyfromgoban#1{\igo@copygoban{#1}{\igo@board}}
+\def\copytogoban#1{\igo@copygoban{\igo@board}{#1}}
+
+\def\copygoban#1{\copyfromgoban{#1}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Removing goban symbols (Frank Mittelbach)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\igo@getplainstone#1#2#3#4#5#6#7\igo@getplainstone#8{%
+	\xdef#8{%
+		\relax%
+		\if #6b%
+			\igo@blackfonti%
+		\else%
+			\igo@whitefonti%
+		\fi%
+		\char 0\relax%
+	}%
+}
+
+\def\igo@getplainstoneornothing#1#2#3\igo@getplainstoneornothing#4{%
+	\ifx#1\igo@font%
+		\global\let#4\relax%
+	\else%
+		\expandafter\igo@getplainstone\string#2\igo@getplainstone#4%
+	\fi%
+}
+
+\def\igo@clearsymbolx#1{%
+	\expandafter\igo@getplainstoneornothing #1\igo@getplainstoneornothing#1%
+}
+
+\def\igo@clearsymbol#1#2#3{%
+	\expandafter\igo@clearsymbolx%
+	\csname igo@stone;\igo@intersectionlabel{#1}{#2}|\number#3\endcsname%
+}
+
+\def\igo@cleargobansymbols#1{%
+	\repeat\for{row} \from{1} \to{\igo@size} \do {%
+		\repeat\for{col} \from{1} \to{\igo@size} \do {%
+			\igo@ifundefined%
+				{igo@stone;\igo@intersectionlabel{\col}{\row}|\number#1}%
+				{\igo@superclear{\igo@intersectionlabel{\col}{\row}}{#1}}%
+				{\igo@clearsymbol{\col}{\row}{#1}}%
+		}%
+	}%
+}
+			
+\def\cleargobansymbols{\igo@cleargobansymbols{\igo@board}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Geometric transformations
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\mirrorgoban{%
+	\copytogoban{0}%
+	\repeat\for{row} \from{1} \to{\igo@size} \do{%
+		\repeat\for{col} \from{1} \to{\igo@size} \do{%
+			\igo@ifundefined%
+				{igo@stone;\igo@intersectionlabel{\row}{\col}|0}%
+				{\igo@clear{\igo@intersectionlabel{\col}{\row}}}%
+				{\igo@goban{\igo@intersectionlabel{\col}{\row}}{\igo@superstone{\row}{\col}{0}}}%
+		}%
+	}%
+}
+
+\def\vflipgoban{%
+	\copytogoban{0}%
+	\repeat\for{row} \from{1} \to{\igo@size} \do{%
+		\repeat\for{col} \from{1} \to{\igo@size} \do{%
+			\igo@count=1%
+			\advance\igo@count by \igo@size%
+			\advance\igo@count by -\row%
+			\igo@ifundefined%
+				{igo@stone;\igo@intersectionlabel{\col}{\igo@count}|0}%
+				{\igo@clear{\igo@intersectionlabel{\col}{\row}}}%
+				{\igo@goban{\igo@intersectionlabel{\col}{\row}}{\igo@superstone{\col}{\igo@count}{0}}}%
+		}%
+	}%
+}
+
+\def\hflipgoban{%
+	\copytogoban{0}%
+	\repeat\for{row} \from{1} \to{\igo@size} \do{%
+		\repeat\for{col} \from{1} \to{\igo@size} \do{%
+			\igo@count=1%
+			\advance\igo@count by \igo@size%
+			\advance\igo@count by -\col%
+			\igo@ifundefined%
+				{igo@stone;\igo@intersectionlabel{\igo@count}{\row}|0}%
+				{\igo@clear{\igo@intersectionlabel{\col}{\row}}}%
+				{\igo@goban{\igo@intersectionlabel{\col}{\row}}{\igo@superstone{\igo@count}{\row}{0}}}%
+		}%
+	}%
+}
+
+\def\rotategobanright{\mirrorgoban\vflipgoban}
+\def\rotategobanleft{\mirrorgoban\hflipgoban}
+\def\rotategoban{\hflipgoban\vflipgoban}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\catcode`;=12
+\catcode`|=12
+\catcode`@=12
-- 
cgit v1.2.3

