/usr/share/texlive/texmf-dist/tex/generic/genmisc/chessmin.tex is in texlive-generic-recommended 2013.20140215-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 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}
|