%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % diagram.4ht 2009-05-21-09:32 % % Copyright (C) 2008--2009 Eitan M. Gurari % % % % This work may be distributed and/or modified under the % % conditions of the LaTeX Project Public License, either % % version 1.3c 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.3c or later is part of all distributions % % of LaTeX version 2005/12/01 or later. % % % % This work has the LPPL maintenance status "maintained".% % % % This Current Maintainer of this work % % is Eitan M. Gurari. % % % % If you modify this program your changing its signature % % with a directive of the following form will be % % appreciated. % % \message{signature} % % % % gurari@cse.ohio-state.edu % % http://www.cse.ohio-state.edu/~gurari % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \immediate\write-1{version 2009-05-21-09:32} \inner@frame = 0pt \outer@frame = 0pt \NewConfigure{diagram}{6} \NewConfigure{stipulation}{4} \NewConfigure{piececounter}{2} \pend:def\@dia@authors{\ifauth@r \a:authors\fi} \append:def\@dia@authors{\ifauth@r \b:authors \fi} \NewConfigure{authors}{2} \pend:def\@dia@condition{\if@condition \a:condition\fi} \append:def\@dia@condition{\if@condition \b:condition \fi} \NewConfigure{condition}{2} \pend:def\@dia@solution{\a:solution} \append:def\@dia@solution{\b:solution } \NewConfigure{solution}{2} \pend:def\@dia@award{\if@award\a:award\fi} \append:def\@dia@award{\if@award\b:award\fi } \NewConfigure{award}{2} \pend:def\@dia@dedic{\if@dedication\a:dedic\fi} \append:def\@dia@dedic{\if@dedication\b:dedic \fi} \NewConfigure{dedic}{2} \pend:def\@dia@number{\ifdi@no\a:number\fi} \append:def\@dia@number{\ifdi@no\b:number\fi} \NewConfigure{number}{2} \pend:def\@dia@twins{\ifauth@r \a:twins\fi} \append:def\@dia@twins{\ifauth@r \b:twins\fi} \NewConfigure{twins}{2} \pend:def\@dia@remark{\ifauth@r \a:remark\fi} \append:def\@dia@remark{\ifauth@r \b:remark \fi} \NewConfigure{remark}{2} \pend:def\dia@above{\a:above} \append:def\dia@above{\b:above } \NewConfigure{above}{2} \pend:def\dia@below{\a:below} \append:def\dia@below{\b:below } \NewConfigure{below}{2} \pend:def\@dia@correction{\if@correction\a:correction\fi} \append:def\@dia@correction{\if@correction\b:correction\fi } \NewConfigure{correction}{2} \def\putsol{\immediate\closeout\s@lfd\input\jobname.sol}%\cl@arsol} \pend:def\putsol{\HAssign\solNum=0} \def\showlabel#1{\if@develop\a:showlabel\hbox{\labelfont#1}\b:showlabel\fi} \NewConfigure{showlabel}{2} \def\@dia@solution{% \bgroup% \parindent\z@% \csname a:sol-title\endcsname {\bf \noindent\if@label\showlabel{\the\label@tk}\fi \csname a:sol-number\endcsname \the\number@tk \csname b:sol-number\endcsname) % \ifauth@r% \csname a:sol-author\endcsname \ifnormal@names% \the\aut@tk% \else% {\@notfirstfalse% We are the first one \let\@action=\@solname% \@parseTokenlist\aut@tk;}:% \fi% \csname b:sol-author\endcsname \fi% }% \if@develop\if@judgement\a:judgement\the\judgement@tk\b:judgement\fi\fi% \csname b:sol-title\endcsname \par% \the\sol@tk\par% \if@comment\the\comment@tk\par\fi% \egroup% } \NewConfigure{judgement}{2} \NewConfigure{sol-number}{2} \NewConfigure{sol-author}{2} \NewConfigure{sol-title}{2} \def\@dia@source{% {\if@source% \a:source \sourcefont% \if@sourcenr\the\sourcenr@tk\ \fi \the\source@tk% \a:date \ifnum\from@month>\z@% \if@day% \ \ \the\day@tk .\write@month\from@month% \else% \ \ \write@month\from@month% \fi% \ifnum\to@month>\z@ -\write@month\to@month\fi% \if@day .\else /\fi% \else% \ \ % \fi% \if@year\the\year@tk\fi% \b:date \if@issue /\a:issue\the\issue@tk\b:issue\fi% \if@pages ,\ \a:pages\the\pages@tk\b:pages\fi% \par% \b:source \fi}% } \NewConfigure{source}{2} \NewConfigure{source}{2} \NewConfigure{date}{2} \NewConfigure{issue}{2} \NewConfigure{pages}{2} \let\:EndIgnore\relax \def\:Ignore{\bgroup \catcode`\\=12 \long\def\:temp##1:EndIgnore{\egroup}\:temp } \ifx \setboardwidth\:UnDef \expandafter\:Ignore\fi \def\@dia@stipulation{% \if@stipulation% \a:stipulation \bgroup% \stipfont% \c:stipulation \the\stipulation@tk \d:stipulation \ifx@twins% \let\below@newline\@twinskip% \@dia@twins% \else\ifx@cond% \let\below@newline\@twinskip% \@dia@condition% \fi\fi% \egroup% \b:stipulation \let\below@newline\newline% \else% \x@twinsfalse% \x@condfalse% \let\below@newline\relax% \fi% } \def\put@count{% % First we build the box with the figure count \ifthenelse{\boolean{piececounter}}{% \a:piececounter \if@show@computer% C\if@computer +\else --\fi \ \ \fi% (\arabic{cpd@whitePieces}+\arabic{cpd@blackPieces}% \ifthenelse{\value{cpd@neutralPieces}>0}{+\arabic{cpd@neutralPieces}}{})% \b:piececounter }{}% } \def\put@plane{% % We might want gridchess \if@stdgrid% \@stdgrid% \fi% % Let us first set the fieldframes \if@fieldframe% \let\@action\read@square% \let\plane@job\set@frame% \@addToPlane\fieldframe@tk% \fi% % Now we set text to all squares which are given using \fieldtext \if@fieldtext% \let\@action\p@rsetext% \let\plane@job\set@text% \@addToPlane\fieldtext@tk% \fi% % Then we should add the gridlines \if@gridlines% \let\@action\read@plane% \let\plane@job\@selGrid% \@addToPlane\gridlines@tk% \else% \if@stereo% \stereo@center% \fi% \fi% % Now we should clear the board \clear@board% % Let us now parse the list of pieces \if@pieces% \let\@action\p@rsepieces% \let\piece@job\l@@k\let\plane@job\set@piece% \@parseTokenlist\pieces@tk,% \fi% % Now we clear all fields, which are given using \nofields \if@nofields% \let\@action\read@square% \let\plane@job\set@nofield% \@parseTokenlist\nofields@tk,% \fi% % Now we can put the pieces to the board \global\setbox\plane@box=\hbox{% \vbox{\rlap{\box\plane@box}}% \vbox{% \a:diagram \chessfont% \baselineskip=\z@\lineskip=\z@% \@rows=\rows@max% % \multiply\@rows by \lines@max% \loop% % \advance\@rows -\lines@max% % \put@line\@rows% % Remove \put@line in future versions \advance\@rows \m@ne% \tmp:cnt=\@rows \advance\tmp:cnt by 1 \edef\HRow{\the\tmp:cnt}% \c:diagram \put@row\@rows \d:diagram \ifnum\@rows>\z@\repeat% \b:diagram }% }% } \def\put@row#1{% \lin@\z@% \help@b=#1% \advance\help@b\brd@ff% \hbox{% \if@stereo% \ifnum\current@plane>\z@% \ifnum\@rows=12% \llap{\raise .5\sq@width\hbox{\boardfont c6\ }}% \fi% \fi% \fi% \hbox to \z@{\vbox to \sq@width{}}% \set@current@square@index{\lin@}{#1}% \loop% \tmp:cnt=\lin@ \advance\tmp:cnt by 1\relax \edef\HCol{\the\tmp:cnt}% \e:diagram \get@current@square@value% \ifthenelse{\value{cpd@current@square@value}=\m@ne}% {\wF}% {\char\value{cpd@current@square@value}}% % \ifnum\count\help@b=\m@ne\wF% % \else\char\count\help@b\fi% \advance\lin@\@ne% \addtocounter{cpd@current@square@index}{1}% % \advance\help@b\@ne% \f:diagram \ifnum\lin@<\lines@max\repeat% }% } \:EndIgnore \ifx \setboardwidth\:UnDef \else \expandafter\:Ignore\fi \def\@dia@stipulation{% \a:stipulation \bgroup% \stipfont% \hbox{% \a:piececounter \if@show@computer% C\if@computer +\else --\fi \fi% \iffigcnt% \if@show@computer\ \ \fi{} (\the\w@cnt+\the\b@cnt \ifnum\z@<\n@cnt+\the\n@cnt\fi)% \fi% \b:piececounter \if@stipulation \c:stipulation\the \stipulation@tk \d:stipulation\fi \ifx@twins \@dia@twins\fi% \ifx@cond \@dia@condition\fi% }% \egroup% \b:stipulation } \def\put@plane{% % We might want gridchess \if@stdgrid% \@stdgrid% \fi% % Let us first set the fieldframes \if@fieldframe% \let\@action\read@square% \let\plane@job\set@frame% \@addToPlane\fieldframe@tk% \fi% % Then we should add the gridlines \if@gridlines% \let\@action\read@plane% \let\plane@job\@selGrid% \@addToPlane\gridlines@tk% \else% \if@stereo% \stereo@center% \fi% \fi% % Now we should clear the board \clear@board% % Let us now parse the list of pieces \if@pieces% \let\@action\p@rsepieces% \let\piece@job\l@@k\let\plane@job\set@piece% \@parseTokenlist\pieces@tk,% \fi% % Now we clear all fields, which are given using \nofields \if@nofields% \let\@action\read@square% \let\plane@job\set@nofield% \@parseTokenlist\nofields@tk,% \fi% \global\setbox\plane@box=\hbox{ % Now we can put the pieces to the board \vbox{\IgnorePar\box\plane@box}% \vbox{% \a:diagram \chessfont% \baselineskip=\z@\lineskip=\z@% \@rows=\rows@max% \multiply\@rows by \lines@max% \loop% \advance\@rows -\lines@max% \tmp:cnt=\@rows \divide\tmp:cnt by 8 \advance\tmp:cnt by 1 \edef\HRow{\the\tmp:cnt}% \c:diagram \put@line\@rows \d:diagram \ifnum\@rows>\z@\repeat% \b:diagram }% }% } \def\put@line#1{% \lin@\z@% \help@b=#1\advance\help@b\brd@ff% \hbox{% \if@stereo% \ifnum\current@plane>\z@% \ifnum\@rows=12% \llap{\raise .5\sq@width\hbox{\boardfont c6\ }}% \fi% \fi% \fi% \hbox to \z@{\vbox to \sq@width{}}% \loop% \tmp:cnt=\lin@ \advance\tmp:cnt by 1\relax \edef\HCol{\the\tmp:cnt}% \e:diagram \ifnum\count\help@b=\m@ne\wF% \else \char\count\help@b\fi% \advance\lin@\@ne\advance\help@b\@ne% \f:diagram \ifnum\lin@<\lines@max\repeat% }% } \:EndIgnore \Hinput{diagram} \endinput