games@tekred.TEK.COM (07/06/88)
Submitted by: Charles Blair <ceblair%uxe.cso.uiuc.edu@uxc.cso.uiuc.edu> Comp.sources.games: Volume 5, Issue 1 Archive-name: chess-bd [I don't have a TeX system, so you're on your own. -br] #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of shell archive." # Contents: chess_bd.tex # Wrapped by billr@saab on Tue Jul 5 16:03:16 1988 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f chess_bd.tex -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"chess_bd.tex\" else echo shar: Extracting \"chess_bd.tex\" \(3646 characters\) sed "s/^X//" >chess_bd.tex <<'END_OF_chess_bd.tex' X% X% This is a set of macros to be used with plain TeX to print out X% a diagram of a chess position. The control sequence \bone X% takes as input the Forsyth notation for a position, followed by X% EEZ as a terminator. Forsyth notation describes the position X% one row at a time, with capital letters for white pieces, small X% letters for black pieces, and uses numbers for empty squares. X% For example, to print the diagram after Black's third move in Ruy: X% X% \bone r1bqkbnr 1ppp1ppp p1n5 1B2p3 4P3 5N2 PPPP1PPP RNBQK2R EEZ X% X% Similarly, \btwo can be used to print two adjacent diagrams--- X% you give the Forsyth for one position, then EEZ, then the Forsyth X% for the other followed by a second EEZ. X% X% To run these macros on your system you may have to modify the X% \font instruction indicated below. X% X% The bad thing is that this program seems to be a memory hog. If X% I try to print more than three or four diagrams in a letter, I X% start getting "memory capacity exceeded" messages. I'm using X% PCTEX and have gotten around the problem by using the /m=65000 X% option described on pages I-18 and I-19 of the installation guide. X% X% Improvements for the memory problem or the appearance of the X% diagrams are welcome. X% X% As a bonus, the macro \VAR can be used to number the moves of X% a variation. Suppose, for example, you want to list moves from X% the Schliemann defence to the Ruy, starting with move 3. Type X% X% \VAR 3 B--N5 P--B4 N-B3! N-B3 PxP B-B4 O-O O-O Z [Z=terminator] X% X% and you get 3 B-N5 P-B4 4 N-B3! N-B3 and so forth. [also works X% with algebraic notation. Sequence of moves from Fine's Practical X% Chess Openings.] Unfortunately, this also has memory problems--- X% my machine complains if the variation is longer than ten moves. X% X% ---Charles Blair [BITNET:CEBLAIR@UIUCVMD] X\magnification=1200 X\newcount\empty \newcount\color% empty keeps track of number of empty X %squares, color tells if shading needed X\def\ver{\vrule height 15pt} \font\eightrm=amr8 X% IF YOU ARE NOT USING PCTEX, YOU WILL PROBABLY HAVE TO MODIFY X% THE \font INSTRUCTION ABOVE TO WHATEVER PRODUCES EIGHT-POINT X% ROMAN ON YOUR SYSTEM X\def\hv{\hfil\ver} \def\shade{\hbox to 15pt{\hv\hv\hv\hfil}} X%shade is a dark square with no piece on it, pshad (below) with piece X\def\hmv{\hfil\vbox to 15pt{\hrule height 2.6pt width 0.4pt\vfil X\hrule height 3.0pt width 0.4pt}} X\def\pshad{\hbox to 15pt{\hmv\hmv\hv\hfil}} X\def\lett#1{\if #1p{\vbox to 15pt{\vfil\hbox{\eightrm p}\vfil}}% X\else{\vbox to 15pt{\vfil \hbox{#1} \vfil}}\fi} X\def\lbt{\ifodd\number\color\hbox to 15pt{\hfil\ver}% X\else{\rlap{\shade}\hbox to 15pt{\hfil\ver}}\fi} X\def\lettl#1{\hbox to 15pt{\hfil\lett{#1}\hfil\ver}} X\def\llt#1{\ifodd\number\color {\lettl#1}\else {\rlap% X{\pshad}\lettl#1}\fi\advance\color by 1} X\def\lsr#1#2E{\ifcat 8#1\if 0#1\lsr#2DE\else{\empty=#1 X\advance\empty by -1 X\hbox{\lbt\advance\color by1\lsr{\number\empty}#2E}}\fi% X\else\if #1D{}\else{\hbox{\llt#1\lsr#2E}}\fi\fi} X\def\board#1#2Z{\if E#1{{}}\else{\bord#1#2Z}\fi} X\def\bord#1 #2Z{\vbox{{\hbox{\ver\lsr #1DE}}% X\hrule width 120.4pt\advance\color by 1\board#2Z}} X\def\bone#1Z{\color=1\medskip\hbox to \hsize{\hfil\vbox% X{\hrule width 120.4pt\board#1Z}\hfil}\medskip\color=0} X\def\btwo#1Z#2Z{\color=1\medskip\hbox to \hsize% X{\hfil\vbox{\hrule width 120.4pt\board#1Z}\count2=1\hfil\vbox% X{\hrule width 120.4pt\board#2Z}\hfil}\medskip\count2=0} X\newcount\move \def\wump#1 #2U{{\number\move}~#1~#2\ } X\def\VR#1 #2 #3Z{\wump#1 #2U\advance\move by 1\VFIN#3Z} X\def\VFIN#1#2Z{\if W#1 \move=0 \else \VR#1#2Z\fi} X\def\VAR#1 #2Z{\move=#1 \VR#2 W W Z} X END_OF_chess_bd.tex if test 3646 -ne `wc -c <chess_bd.tex`; then echo shar: \"chess_bd.tex\" unpacked with wrong size! fi # end of overwriting check fi echo shar: End of shell archive. exit 0