diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:46:03 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:46:03 +0000 |
commit | 873660d1a83ece926fe7206288dda9c36b349c1b (patch) | |
tree | a48f77125c309a355b5d0eb58d6b24446abe9d62 /Master/texmf-dist/tex/generic/genmisc/chessmin.tex | |
parent | 2939242967231097459df0fc3150fabc2f639111 (diff) |
generic 1
git-svn-id: svn://tug.org/texlive/trunk@613 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/genmisc/chessmin.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/genmisc/chessmin.tex | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/genmisc/chessmin.tex b/Master/texmf-dist/tex/generic/genmisc/chessmin.tex new file mode 100644 index 00000000000..49b03d31b42 --- /dev/null +++ b/Master/texmf-dist/tex/generic/genmisc/chessmin.tex @@ -0,0 +1,171 @@ +% These are two TeX macros which may be useful for writing about +% chess. \bore creates a chess diagram from Forsyth notation, with +% Z used as a terminator. For example, +% +% $$\bore r1bqkbnr pppp1ppp 2n5 1B2p3 4P3 5N2 PPPP1PPP RNBQK2R Z$$ +% +% shows the Ruy Lopez after white's third move. +% +% \VAR (number) (moves separated by spaces) Z may be used to write +% a variation. The macro inserts the move numbers, starting with +% (number). For example, +% +% Continuing from the diagram above, \VAR 3 \dots{} a6 Ba4 Nf6 O--O +% Be7 Re1 b5 Bb3 O-O c3 d5 Z is the Marshall gambit. +% +% Note the \dots{} to indicate that Black made the first move. +% +% The diagrams created by \bore have pieces made up of a small number +% of rectangles. Much nicer diagrams and more powerful macros were +% created by Piet Tutelaers, available by anonymous ftp +% at sol.cs.ruu.nl (131.211.80.5). However, the ones offered here +% do not require additional fonts, and may be easier to use. +% +% I authorize circulation of these macros by ftp sites and similar +% nonprofit media. Improvements are welcome. An earlier version of +% the macros (with letters for pieces) was done several years ago, +% with substantial modifications by Steve Cochran. +% +% Charles Blair (ceblair@ux1.cso.uiuc.edu) +% macros start below--- you may cut here -------------------------- +% +% \fun is the fundamental length unit for the diagrams. If you +% replace 1.2pt by something else, the scale is changed. +% The box rf is not used, except to provide something with which to +% refer to \fun. +% +\newdimen\fun \dimen\fun=1.2pt +\newbox\rf \setbox\rf=\vbox to \dimen\fun{ +\hrule height \dimen\fun width \dimen\fun} +% +\def\oil{\offinterlineskip} % I needed to use this in all my vboxes +% +% Black pieces are made from solid boxes of specified height and +% width (the \filbox macro). For White pieces, \filbox is replaced by a +% macro (\blbox) which draws the lines around the border of such a box. +% (the white knight is an exception to this) +% The macro \tbo is defined as \blbox or \filbox as needed. +% +\def\filbox#1#2{\vbox{\oil \hrule height #1\ht\rf width #2\ht\rf}} +% +\newdimen\adjust +\def\blbox#1#2{\dimen\adjust=#1\ht\rf \advance\dimen\adjust by-0.4\ht\rf +\vbox{\oil \hrule height 0.2\ht\rf width #2\wd\rf +\hbox to #2\wd\rf{\vrule height \dimen\adjust width 0.2\wd\rf\hfil +\vrule height \dimen\adjust width 0.2\wd\rf} +\hrule height 0.2\ht\rf width #2\wd\rf}} +% +% Each piece is 12 units wide. \scen produces an hbox with this width +% and either a \blbox or a \filbox in the center. +% +\def\scen#1#2{\hbox to 12\wd\rf{\hfil\tbo{#1}{#2}\hfil}} +% +% Definitions (color independent) of each piece +% +\def\pawn{\vbox{\oil \scen{2.5}{4}\scen{3}{8}\scen{4.5}{4}\scen{3}{10}}} +% +\def\bishop{\vbox{\oil \scen{2}{2.5}\scen{3}{8}\scen{4}{10}% +\scen{3}{6}\scen{1.5}{12}}} +% +\def\rook{\vbox{\oil +\hbox to 12\wd\rf{\tbo2{2.5}\hfil\tbo2{2.5}\hfil\tbo2{2.5}} +\scen{3}{12}\scen{5.5}{7}\scen{3}{12}}} +% +\def\queen{\vbox{\oil \hbox to 12\wd\rf{\tbo{6}{2}\hfil\tbo{8}{2}% +\hfil\tbo{8}{2}\hfil\tbo{6}{2}}\scen{4}{10}}} +% +\def\king{\vbox{\oil% Next 4 lines are the cross part (improvement wanted) +\hbox to 12\wd\rf{\rlap% +{\hbox to 12\wd\rf{\hfil\vrule height 3\ht\rf width 0.2\wd\rf\hfil}}% +\hfil\raise 1.5\ht\rf% +\hbox{\vrule width 3\ht\rf height 0.2\ht\rf}\hfil} +\hbox to 12\wd\rf{\tbo{6}{4.5}\hfil\tbo{6}{4.5}} +\scen{4}{10}}} +% +\def\knight{\vbox{\oil \hbox{\hskip 7\wd\rf\tbo{1}{1}} +\hbox{\hskip2\wd\rf\tbo{2.5}{7}}\hbox{\hskip 2\wd\rf +\vbox to 3\ht\rf{\tbo{1}{1.5}\vfil}\hskip3\wd\rf\tbo{3}{2.5}} +\hbox{\hskip 3.4\wd\rf\tbo{4}{5.6}} +\tbo{2.5}{12}}} +% +% Creation of the boxes for the pieces +% +\newbox\WP \def\tbo#1#2{\blbox{#1}{#2}} \setbox\WP=\pawn +\newbox\BP \def\tbo#1#2{\filbox{#1}{#2}} \setbox\BP=\pawn +\newbox\WB \def\tbo#1#2{\blbox{#1}{#2}} \setbox\WB=\bishop +\newbox\BB \def\tbo#1#2{\filbox{#1}{#2}} \setbox\BB=\bishop +\newbox\WR \def\tbo#1#2{\blbox{#1}{#2}} \setbox\WR=\rook +\newbox\BR \def\tbo#1#2{\filbox{#1}{#2}} \setbox\BR=\rook +\newbox\WQ \def\tbo#1#2{\blbox{#1}{#2}} \setbox\WQ=\queen +\newbox\BQ \def\tbo#1#2{\filbox{#1}{#2}} \setbox\BQ=\queen +\newbox\WK \def\tbo#1#2{\blbox{#1}{#2}} \setbox\WK=\king +\newbox\BK \def\tbo#1#2{\filbox{#1}{#2}} \setbox\BK=\king +\newbox\BN \def\tbo#1#2{\filbox{#1}{#2}} \setbox\BN=\knight +% +% The exceptional white knight (a lot of work to avoid a line at neck!) +% +\newbox\WN \def\tbo#1#2{\blbox{#1}{#2}} \setbox\WN= +\vbox{\oil \hbox{\hskip 7\wd\rf\tbo{1}{1}} +\hbox{\hskip2\wd\rf\vrule height 2.5\ht\rf width 0.2\ht\rf +\vbox to 2.5\ht\rf{\hrule height 0.2\ht\rf width 6.6\wd\rf\vfil +\hrule height 0.2\ht\rf width 4.5\wd\rf}% +\vrule height 2.5\ht\rf width 0.2\wd\rf} +\hbox{\hskip 2\wd\rf +\vbox to 3\ht\rf{\tbo{1}{1.5}\vfil}\hskip3\wd\rf +\hbox to 2.5\wd\rf{\vrule height 3\ht\rf width 0.2\wd\rf\hfil +\vrule height 3\ht\rf width 0.2\wd\rf}} +\hbox{\hskip 3.4\wd\rf\tbo{4}{5.6}} +\tbo{2.5}{12}} +% +% \ver is the line used for square boundaries on the board +% \nver is thinner line used to shade dark squares (if no piece on them) +% \hor draws horizontal lines for each rank +% +\def\ver{\vrule height 15\ht\rf width 0.4\wd\rf} +\def\nver{\vrule height 15\ht\rf width 0.1\wd\rf} +\def\hor{\hrule height 0.4\wd\rf width 120\wd\rf} +% + \newcount\color \newcount\blanks +\def\blanksquare{\ifodd\color \hbox to 15\wd\rf{\hfil\nver% +\hfil\nver\hfil\ver}\else\hbox to 15\wd\rf{\hfil\ver}\fi +\advance\color by 1} +% +% Each piece is centered inside a 15-unit square +% +\def\cen#1{\hbox to 15\wd\rf{\hfil\vbox to 15\ht\rf{\vfil\copy#1\vfil}% +\hfil\ver}} +% +% This processes the characters specifying a row of the diagram. It +% is patterned after the \length example at the end of chapter 20 +% of The TeXbook +\def\nextchar#1{\let\nex=\nextchar% +\ifcat7#1% +\blanks=#1\loop\ifnum\blanks>0 \blanksquare% +\advance\blanks by -1\repeat\else +\advance\color by 1% +\ifx#1P\cen{\WP}\else\ifx#1p\cen{\BP}\else% +\ifx#1N\cen{\WN}\else\ifx#1n\cen{\BN}\else% +\ifx#1B\cen{\WB}\else\ifx#1b\cen{\BB}\else% +\ifx#1Q\cen{\WQ}\else\ifx#1q\cen{\BQ}\else% +\ifx#1R\cen{\WR}\else\ifx#1r\cen{\BR}% +\else\ifx#1K\cen{\WK}\else\ifx#1k\cen{\BK}\else\let\nex=\relax% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\nex} +% +% \bore carries out preliminary steps for making the diagram. +% \rgc reads in a string of non-blank characters, checks that the +% first character is not the terminator Z, gives the string to \nextchar, +% and then processes the next string. (again patterned after \length) +% +\def\bore#1Z{\color=1\vbox{\oil \hor\rgc#1 Z }} +\def\rgc#1#2 {\advance\color by 1\let\nx=\rgc\ifx#1Z\let\nx=\relax +\else\hbox{\ver\nextchar#1#2Z}\hor\fi\nx} +% +% This macro prints a variation. It is supposed to use the ideas of +% \length and seems to work, but there is something I don't understand: +% if the {} following the \else is deleted, something goes wrong. Why? +% +\newcount\move \newcount\iswhite +\def\VAR#1 #2Z{\move=#1\iswhite=1\listem #2 Z } +\def\listem#1#2 {\ifx#1Z\let\nx=\relax\else{}% +\ifodd\iswhite{} \number\move~#1#2\else% +~#1#2\advance\move by 1\fi\advance\iswhite by 1\let\nx=\listem\fi\nx} |