diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:53:00 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:53:00 +0000 |
commit | 8d1fca7ebd497342658b1df326e930b14ec42864 (patch) | |
tree | 30abc621178710f96cb4b8a8c2f6a6fd6ea25a03 /Master/texmf-dist/tex/latex/chess/chessmg.sty | |
parent | 43bd11e0e6d534e3bde778f6e02a1de5375dbcbc (diff) |
chess
git-svn-id: svn://tug.org/texlive/trunk@755 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/chess/chessmg.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/chess/chessmg.sty | 567 |
1 files changed, 567 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/chess/chessmg.sty b/Master/texmf-dist/tex/latex/chess/chessmg.sty new file mode 100644 index 00000000000..a7e53edea26 --- /dev/null +++ b/Master/texmf-dist/tex/latex/chess/chessmg.sty @@ -0,0 +1,567 @@ +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +\ProvidesPackage{chessmg} + [1995/08/23 v1.3 Version only for LaTeX2e (MG)] +\RequirePackage{ifthen} +% +% chess.sty +% --------- +% Style file for writing about chess games +% Author : Piet Tutelaers (internet: rcpt@urc.tue.nl) +% Version: 1.3 (Aug. 1995) M. Goossens (goossens@cern.ch) +% - Declare languages via LaTeX2e options +% - Style will now only work with LaTeX2e +% Version: 1.2 (Febr. 1992) +% Improvements over version 1.1 +% - added `\v{S}ahovski Informator' symbols +% -`en passant capture' bug fixed (reported by Jonathan Mestel) +% -change {--} into \hbox{--} to prevent hyphenation within move +% -\move's lined up on last row (or digit in case of castling) +% -handling of promotion improved +% * Black promotion problem solved (plain TeX) +% * comment allowed also with promotion +% * if no promotion piece is provided a default Q(ueen) is supposed +% Thanks to: Jan Jaap Spreij (puls@cs.rug.nl) +% -improved interface to plain TeX +% -language support using the babel package from Johannes Braams +% (currently support for english, dutch, german and french but you +% can add an extra language `foreign' by: +% 1. creating `foreign.sty' for cooperating with `babel' +% 2. search for FOREIGN and follow the instructions in the comments) +% - \begin{nochess} ... \end{nochess} +% -chessfig10 renamed to chessf10 (service to MSDOS users) +% Version: 1.1 (17 Nov 1990) +% Improvements over version 1.0: +% -TeX code cleaned up (thanks to TeX-wizzard Victor Eijkhout) +% -moving a King does not generate a castling move when this +% King already moved +% -renamed internal macro `\\' because LaTeX uses that +% -better hooks for foreign languages (look for lines marked with +% %%FOREIGN%%) +% Torture test: +% If you change something in the chess.sty style check if everything +% else is still working with torture-test.ltx (LaTeX) or +% torture-test.tex (plain TeX). +% Known problems: +% -The analysis mode can not be used within arguments of macros +% not: \centerline{|21.N5*f3|} but: |\centerline{21.N5*f3}| +% Version: 1.0 (5 Jan 1990) +% + +% +% Macro specific initialisations +% +\gdef\line#1{\hbox to \textwidth{#1}} + +% +% Default language is English +% + +\def\DWP{\define@White@pieces{K}{Q}{R}{B}{N}{P}} +\def\DBP{\define@Black@pieces{k}{q}{r}{b}{n}{p}} +\def\LPC{\let@pieces{K}{Q}{R}{B}{N}} +\DeclareOption{dutch}{\def\DWP{\define@White@pieces{K}{D}{T}{L}{P}{I}} + \def\DBP{\define@Black@pieces{k}{d}{t}{l}{p}{i}} + \def\LPC{\let@pieces{K}{D}{T}{L}{P}}} +\DeclareOption{german}{\def\DWP{\define@White@pieces{K}{D}{T}{L}{S}{B}} + \def\DBP{\define@Black@pieces{k}{d}{t}{l}{s}{b}} + \def\LPC{\let@pieces{K}{D}{T}{L}{S}}} +\DeclareOption{french}{\def\DWP{\define@White@pieces{R}{D}{T}{F}{C}{P}} + \def\DBP{\define@Black@pieces{r}{d}{t}{f}{c}{p}} + \def\LPC{\let@pieces{R}{D}{T}{F}{C}}} +% Fill in your language and the uppercase letters for KING, QUEEN, etc. +% \ifcurrentlanguage{FOREIGN}{\let@pieces{KING}{QUEEN}{ROOK}{BISHOP}{KNIGHT}}% +% Your language will be activated by FOREIGN.sty. +\ProcessOptions + +\def\@set[#1#2](#3){%arguments: [a-h1-8](<letter>) + \expandafter\xdef\csname#1#2\endcsname{#3}} + +\def\@get#1[#2#3]{%arguments:\cs[a-h1-8] + \edef#1{\csname#2#3\endcsname}} + +\font\Chess=chess20 + +\newcount\@c % column +\newcount\@r % row +\newcount\@sum % row+column + +\def\@col{\ifcase\@c\or a\or b\or c\or d\or e\or f\or g\or h\fi} + +\def\@showchar{ + \@get\piece[\@col\the\@r] + \if\piece E \ifodd\@sum 0\else Z\fi\else + \if\piece P \ifodd\@sum P\else O\fi\else + \if\piece p \ifodd\@sum p\else o\fi\else + \if\piece R \ifodd\@sum R\else S\fi\else + \if\piece B \ifodd\@sum B\else A\fi\else + \if\piece N \ifodd\@sum N\else M\fi\else + \if\piece r \ifodd\@sum r\else s\fi\else + \if\piece b \ifodd\@sum b\else a\fi\else + \if\piece n \ifodd\@sum n\else m\fi\else + \if\piece K \ifodd\@sum K\else J\fi\else + \if\piece Q \ifodd\@sum Q\else L\fi\else + \if\piece k \ifodd\@sum k\else j\fi\else + \if\piece q \ifodd\@sum q\else l\fi\else + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} + +\def\@showrow#1{ + \@r=#1\@c=1 + \@sum=\@r\advance\@sum by\@c + \loop + \@showchar + \ifnum\@c<8 \advance\@c by1\advance\@sum by1 + \repeat +} + +\def\showboard{ +\vbox{\offinterlineskip + \hrule height1pt + \hbox{\vrule width1pt\Chess + \vbox{\hbox{\@showrow8} + \hbox{\@showrow7} + \hbox{\@showrow6} + \hbox{\@showrow5} + \hbox{\@showrow4} + \hbox{\@showrow3} + \hbox{\@showrow2} + \hbox{\@showrow1}}% + \vrule width1pt} + \hrule height1pt} +} + +% inner loop needs extra { ... } + +\def\@emptyboard{ + \@r=1 + \loop + {\@c=1 + \loop + \@set[\@col\the\@r](E) + \ifnum\@c<8 \advance\@c by1 + \repeat} + \ifnum\@r<8 \advance\@r by 1 + \repeat +} + +\def\@initboard{ +% empty squares + \@r=3 + \loop + {\@c=1 + \loop + \@set[\@col\the\@r](E) + \ifnum\@c<8 \advance\@c by1 + \repeat} + \ifnum\@r<6 \advance\@r by 1 + \repeat +% pawns + \@c=1 + \loop + \@set[\@col2](P)\@set[\@col7](p) + \ifnum\@c<8 \advance\@c by1 + \repeat +% pieces + \@set[a1](R)\@set[h1](R) + \@set[a8](r)\@set[h8](r) + \@set[b1](N)\@set[g1](N) + \@set[b8](n)\@set[g8](n) + \@set[c1](B)\@set[f1](B) + \@set[c8](b)\@set[f8](b) + \@set[d1](Q)\@set[e1](K) + \@set[d8](q)\@set[e8](k) +} + +% +% The next part defines a user friendly notation for chess moves. +% Some examples: |21. Nf3-e5, Ke8*f8 22. 0-0-0+, Bh8*a1| +% : |21.: Ke8*f8 22. Bh8*a1, 0-0| +% : |21 Nfe5 K*f8 22 0-0-0! B*a1| +% : |21: K*f8 22 B*a1 0-0| +% + +\font\Fig=chessf10 + +\gdef\@king{{\Fig K}} +\gdef\@queen{{\Fig Q}} +\gdef\@rook{{\Fig R}} +\gdef\@bishop{{\Fig B}} +\gdef\@knight{{\Fig N}} +\gdef\@dash{\hbox{--}} +\gdef\@capt{$\times$} +\gdef\@dots{~$\ldots$,} +\gdef\@dot{\char46 } + +% +% Make character codes for pieces depending on current language. +% (I cann't derive the Black values from the White using `\lowercase'!) +% + +\def\define@White@pieces#1#2#3#4#5#6{% define character codes for White pieces + \chardef\king@=`#1 \def\uc@king{#1} + \chardef\queen@=`#2 \def\uc@queen{#2} + \chardef\rook@=`#3 \def\uc@rook{#3} + \chardef\bishop@=`#4\def\uc@bishop{#4} + \chardef\knight@=`#5\def\uc@knight{#5} + \chardef\pawn@=`#6 \def\uc@pawn{#6}} +\def\define@Black@pieces#1#2#3#4#5#6{% and now the Black pieces + \def\lc@king{#1}\def\lc@queen{#2}\def\lc@rook{#3} + \def\lc@bishop{#4}\def\lc@knight{#5}\def\lc@pawn{#6}} +\def\activate@pieces{% make them active + \catcode\king@=\active\catcode\queen@=\active\catcode\rook@=\active% + \catcode\bishop@=\active\catcode\knight@=\active} +\def\deactivate@pieces{% make them inactive + \catcode\king@=11\catcode\queen@=11\catcode\rook@=11% + \catcode\bishop@=11\catcode\knight@=11} +\def\ifcurrentlanguage#1#2{%if language defined then compare with \language + \expandafter\ifx\csname l@#1\endcsname\relax% + \else\ifnum\language=\expandafter\csname l@#1\endcsname\relax#2\fi\fi} +\def\select@pieces{% select pieces depending on language + \DWP\DBP +% Define here your language and choose an unique set of uppercase letters +% for the White pieces (KING, QUEEN, etc.) and the corresponding lowercase +% letters for the Black pieces (king, queen, etc.). +% \ifcurrentlanguage{FOREIGN}{% +% \define@White@pieces{KING}{QUEEN}{ROOK}{BISHOP}{KNIGHT}{PAWN} +% \define@Black@pieces{king}{queen}{rook}{bishop}{knight}{pawn}} + } +\def\let@pieces#1#2#3#4#5{% let character codes be macros + \let#1=\@king\let#2=\@queen\let#3=\@rook% + \let#4=\@bishop\let#5=\@knight} + +\catcode`|=\active\select@pieces +{\catcode`:=\active\catcode`.=\active\catcode`*=\active\catcode`-=\active + \activate@pieces + \gdef\trigger@pieces{ + \catcode`:=\active\catcode`.=\active\catcode`*=\active\catcode`-=\active + \activate@pieces\LPC + % I would like to say ``\let\king@=\@king'' but how? + \let-=\@dash\let*=\@capt\let:=\@dots\let.=\@dot}% + \gdef\@notation{\begingroup\let|=\endgroup\trigger@pieces}% +% +% Provide a `nochess' environment in which the `|' character becomes +% inactive for situations where the `|' is already in use (like in +% the LaTeX `tabular' environment for example). +% + \gdef\nochess{\begingroup\let|=\relax\catcode`\|=12\relax + \catcode`:=12 \catcode`.=12 \catcode`*=12 \catcode`-=12 + \deactivate@pieces\let\endnochess=\endgroup} + \gdef\chess{\begingroup\let\endchess=\endgroup\trigger@pieces} +} +\let|=\@notation + +% +% Next part provides a ply (half move) generator +% + +\newif\ifWhite \newif\ifFigure \newif\ifcapture + +% +% next newif's needed for castling +% +\newif\ifKnotmoved \newif\ifknotmoved +\newif\ifcastling \newif\ifoo + +% +% Globals for special pawn moves (en passant capture and promotion) +% + +\newif\ifenpassant \newif\ifpromotion + +\def\@color#1{ % Color of a piece 0: none, -1: black, 1: white + \if #1E0\else + \ifnum`#1=\uccode`#11\else-1\fi\fi} + +% +% No checking is done for validity of moves, only legal moves behave well!! +% + +\def\@ply#1#2#3#4#5 {% Syntax: [a-h][1-8][a-h][1-8]{Q|R|B|N}{Comment} + \@get\piece[#1#2]\@get\capture[#3#4]\Figuretrue + \if\capture E\capturefalse\else\capturetrue\fi + \ifWhite + \if\piece P\Figurefalse + \if#46 + \if\eprow#3\capturetrue\enpassanttrue\fi + \xdef\eprow{x}% + \else + \xdef\eprow{x}% + \if#22 + \if#44\xdef\eprow{#3}\fi + \else + \if#48\promotiontrue\fi + \fi + \fi + \else\xdef\eprow{x} + \if\piece K% check for possible castling + \ifKnotmoved + \if#3g\if#41\castlingtrue\ootrue\fi + \else\if#3c\if#41\castlingtrue\oofalse\fi\fi + \fi + \global\Knotmovedfalse + \fi + \fi + \fi + \ifcastling + \@set[#1#2](E)\@set[#3#4](K)% + \ifoo 0\@dash0\rlap{#5}\@set[f1](R)\@set[h1](E)% + \else 0\@dash0\@dash0\rlap{#5}\@set[d1](R)\@set[a1](E)\fi + \castlingfalse + \else + \ifFigure{\Fig\piece}\fi + #1#2\ifcapture\@capt\else\@dash\fi#3#4% + \rlap{\ifpromotion\expandafter\promovendus#5XYZ\else#5\fi}% + \@set[#1#2](E)% + \ifpromotion\@set[#3#4](\PROM)\else\@set[#3#4](\piece)\fi + \ifenpassant\@set[#3#2](E)\enpassantfalse\fi + \fi + \global\Whitefalse + \else % ``same'' for Black + \if\piece p\Figurefalse + \if#43 + \if\eprow#3\capturetrue\enpassanttrue\fi + \xdef\eprow{x}% + \else + \xdef\eprow{x}% + \if#27 + \if#45\xdef\eprow{#3}\fi + \else + \if#41\promotiontrue\fi + \fi + \fi + \else\xdef\eprow{x} + \if\piece k + \ifknotmoved + \if#3g\if#48\castlingtrue\ootrue\fi + \else\if#3c\if#48\castlingtrue\oofalse\fi\fi + \fi + \global\knotmovedfalse + \fi + \fi + \fi + \ifcastling + \@set[#1#2](E)\@set[#3#4](k)% + \ifoo 0\@dash0\rlap{#5}\@set[f8](r)\@set[h8](E)% + \else 0\@dash0\@dash0\rlap{#5}\@set[d8](r)\@set[a8](E)\fi% + \castlingfalse + \else + \ifFigure{\Fig\if\piece rR\else\if\piece bB\else\if\piece nN\else + \if\piece qQ\else K\fi\fi\fi\fi}\fi + #1#2\ifcapture\@capt\else\@dash\fi#3#4% + \rlap{\ifpromotion\expandafter\promovendus#5XYZ\else#5\fi}% + \@set[#1#2](E)% + \ifpromotion\@set[#3#4](\prom)\else\@set[#3#4](\piece)\fi + \ifenpassant\@set[#3#2](E)\enpassantfalse\fi + \fi + \global\Whitetrue + \fi} + +% +% Promovendus: treat first char of argument as promotion piece if queen, +% rook, knight or bishop; otherwise consider it as comment and take queen +% as default promotion. Leave in \PROM White promoting piece (Q|R|B|N) +% and in \prom Black's version (q|r|b|n). +% + +\def\promovendus#1#2Z{% + \if#1X\def\C{}\gdef\PROM{Q}\gdef\prom{q}% + \else + \ifnum`#1=\queen@ \gdef\PROM{Q}\gdef\prom{q}\def\C{\@comment#2}\else + \ifnum`#1=\rook@ \gdef\PROM{R}\gdef\prom{r}\def\C{\@comment#2}\else + \ifnum`#1=\bishop@\gdef\PROM{B}\gdef\prom{b}\def\C{\@comment#2}\else + \ifnum`#1=\knight@\gdef\PROM{N}\gdef\prom{n}\def\C{\@comment#2}\else + \gdef\PROM{Q}\gdef\prom{q}\def\C{\comment#1#2}% + \fi\fi\fi\fi\fi% + {\Fig\PROM}{\C}} +\def\@comment#1XY{#1} + +\newcount\movecount \movecount=0 + +\def\showmove#1#2{\par + \line{\strut\hbox to1cm{\hfil\the\movecount.}% + \hbox to2.8cm{\hfil#1}\hbox to2.8cm{\hfil#2}\hfil}\par} + +\def\move#1 #2 { + \advance\movecount by 1 + \showmove{\@ply#1 }{\@ply#2 }} + +\def\ply#1 { + \ifWhite + \advance\movecount by 1 + \showmove{\@ply#1 }{} + \else + \showmove{$\ldots$}{\@ply#1 } + \fi} + +\def\newgame{\vskip0pt\movecount=0 \@initboard + \Whitetrue\castlingfalse\xdef\eprow{x} + \Knotmovedtrue\knotmovedtrue + \promotionfalse\enpassantfalse} + +\def\@dolist{\afterassignment\@dodolist\let\@@next= } % Answer 11.5 TeXbook +\def\@dodolist{\ifx\@@next\@endlist \let\@@next\relax % adapted to generate + \else \@nextitem\let\@@next\@dolist \fi % chess diagrams + \@@next} + +\def\@endlist{\@endlist} + +\def\@nextitem{% + \if\@@next\space \@set[\@col\the\@r](E)\else + \if\@@next * \@set[\@col\the\@r](E)\else + \if\@@next\uc@pawn \@set[\@col\the\@r](P)\else + \if\@@next\lc@pawn \@set[\@col\the\@r](p)\else + \if\@@next\uc@rook \@set[\@col\the\@r](R)\else + \if\@@next\lc@rook \@set[\@col\the\@r](r)\else + \if\@@next\uc@bishop \@set[\@col\the\@r](B)\else + \if\@@next\lc@bishop \@set[\@col\the\@r](b)\else + \if\@@next\uc@knight \@set[\@col\the\@r](N)\else + \if\@@next\lc@knight \@set[\@col\the\@r](n)\else + \if\@@next\uc@queen \@set[\@col\the\@r](Q)\else + \if\@@next\lc@queen \@set[\@col\the\@r](q)\else + \if\@@next\uc@king \@set[\@col\the\@r](K)\else + \if\@@next\lc@king \@set[\@col\the\@r](k)\else + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \advance\@c by1} + +\def\@initrow#1#2{\@r=#1\@c=1\@dolist#2\@endlist} + +% +% For setting up a position +% +\def\board#1#2#3#4#5#6#7#8{ + \@initrow8{#1} + \@initrow7{#2} + \@initrow6{#3} + \@initrow5{#4} + \@initrow4{#5} + \@initrow3{#6} + \@initrow2{#7} + \@initrow1{#8}} + +% +% Next macros for defining chess position (thanks to Victor Eijkhout) +% +\def\White(#1){\def\match{xxx}\xWhite#1,xxx,} +\def\xWhite#1,{\def\temp{#1} + \ifx\temp\match \else \WhitePieceOrPawn#1XY \expandafter\xWhite \fi} +\def\WhitePieceOrPawn#1#2#3#4Y{% + \if#3X \@set[#1#2](P) + \else\ifnum`#1=\king@ \@set[#2#3](K)\else % King + \ifnum`#1=\queen@ \@set[#2#3](Q)\else % Queen + \ifnum`#1=\rook@ \@set[#2#3](R)\else % Rook + \ifnum`#1=\bishop@\@set[#2#3](B)\else % Bishop + \ifnum`#1=\knight@\@set[#2#3](N)\else % kNight + \fi\fi\fi\fi\fi + \fi} + +\def\Black(#1){\def\match{xxx}\xBlack#1,xxx,} +\def\xBlack#1,{\def\temp{#1} + \ifx\temp\match \else \BlackPieceOrPawn#1XY \expandafter\xBlack \fi} +\def\BlackPieceOrPawn#1#2#3#4Y{ + \if#3X\@set[#1#2](p) + \else\ifnum`#1=\king@ \@set[#2#3](k)\else % King + \ifnum`#1=\queen@ \@set[#2#3](q)\else % Queen + \ifnum`#1=\rook@ \@set[#2#3](r)\else % Rook + \ifnum`#1=\bishop@\@set[#2#3](b)\else % Bishop + \ifnum`#1=\knight@\@set[#2#3](n)\else % kNight + \fi\fi\fi\fi\fi + \fi} + +\def\position{\begingroup% + \@emptyboard\movecount=0\xdef\eprow{x} + \global\Whitetrue\global\castlingfalse + \global\Knotmovedtrue\global\knotmovedtrue + \global\promotionfalse\global\enpassantfalse} +\def\endposition{\endgroup} + +% And now we define most symbols that are used in `\v{S}ahovski Informator' +% (Chess Informant). For a complete list see Informant#51 (1991) pp 10-12. +% If you add symbols realize that the macros should be usable by plain TeX +% and LaTeX and that the (La)TeX names should be suggestive and clear! +% But don't use uppercase letters or existing names (center)! +% Thanks go to John Saba (saba@ccit.arizona.edu) and Henry Thomas +% (hthomas@irisa.fr) for their help in defining next symbols. +\font\symbolten=cmsy10 \font\smrm=cmr6 \font\symbolsix=cmsy6 +\def\wbetter{\mbox{\baselineskip0pt$\vcenter{\vbox{\hbox{+}\hbox{=}}}$}} +\def\bbetter{\mbox{\baselineskip0pt + $\vcenter{\vbox{\hbox{=}\kern-.3ex\hbox{+}}}$}} +\def\wupperhand{\mbox{$\pm$}} +\def\bupperhand{\mbox{$\mp$}} +\def\wdecisive{\mbox{$+\hbox{}-$}} +\def\bdecisive{\mbox{$-\hbox{}+$}} +\def\equal{=} +\def\unclear{\mbox{$\infty$}} +\def\compensation{\mbox{\baselineskip0pt$\vcenter{\vbox{% + \hbox{\kern.056em\vbox{\hrule width0.89em\kern0.35ex\hrule width0.89em}} + \kern.2ex\hbox{$\infty$}}}$}} +% next symbol should be build using METAFONT +\def\devadvantage{{\symbolten\char'015}\kern-4.8pt + \vrule width 2.4pt height6pt depth-5.6pt + \vrule width .4pt height8pt depth-5.6pt\kern2.4pt} +\def\moreroom{{\symbolten\char'015}} +\def\withattack{$\rightarrow$} +\def\withinit{$\uparrow$} +\def\counterplay{\hbox{\baselineskip0pt% + $\vcenter{\vbox{\hbox{$\leftarrow$}\hbox{$\rightarrow$}}}$}} +\def\zugzwang{$\odot$} +\def\mate{\kern.4pt\mbox{% + \vrule width2ex height1.18ex depth-1.1ex\kern-2ex + \vrule width2ex height.52ex depth-.44ex\kern-1.381ex + \vrule width.08ex height1.8ex depth.2ex\kern0.615ex + \vrule width.08ex height1.8ex depth.2ex\kern0.406ex}\kern.4pt} +\def\withidea{$\triangle$} +\def\onlymove{$\Box$} +\def\betteris{\mbox{\baselineskip0pt + $\vcenter{\vbox{\hbox{$\frown$}\kern-0.35ex\hrule width0.95em}}$}} +\def\file{$\Leftrightarrow$} +% next symbol should be build using METAFONT +\def\diagonal{$\nearrow$} +\def\centre{$\Box$\kern-.6em\raise.54ex\hbox{\smrm\char'053}} +\def\kside{$\gg$} +\def\qside{$\ll$} +\def\weakpt{$\times$} +\def\ending{$\perp$} +% John Saba's method: +\def\blackbox{\vrule height .8ex width 1.2ex depth 0ex} +\def\whitebox{\vbox{\hrule height .1pt\hbox{\vrule width .1pt\kern.6ex + \vbox{\kern.8ex}\kern.6ex\vrule width .1pt}\hrule height .1pt}} +\def\bishoppair{\whitebox\kern-2pt\raise1.8pt\hbox{\whitebox}} +\def\opposbishops{\whitebox\kern-2pt\raise1.8pt\hbox{\blackbox}} +\def\samebishops{\blackbox\kern-2pt\raise1.8pt\hbox{\blackbox}} +% My method +%\def\bishoppair{\setbox0=\hbox{% +% \vrule width1.4ex height1ex depth-.92ex\kern-1.4ex +% \vrule width1.4ex height.08ex depth0pt\kern-1.4ex +% \vrule width.08ex height1ex depth0ex\kern1.24ex +% \vrule width.08ex height1ex depth0ex}% +% \kern.4pt\mbox{\copy0\kern-.6ex\raise0.56ex\box0}\kern.4pt} +%\def\opposbishops{\kern.4pt\mbox{% +% \vrule width1.4ex height1ex depth-.92ex\kern-1.4ex +% \vrule width1.4ex height.08ex depth0pt\kern-1.4ex +% \vrule width.08ex height1ex depth0ex\kern1.24ex +% \vrule width.08ex height1ex depth0ex\kern-.6ex +% \vrule width1.4ex height1.56ex depth-0.56ex}\kern.4pt } +%\def\samebishops{\kern.4pt\mbox{% +% \vrule width1.4ex height1ex depth0ex\kern-.6ex +% \vrule width1.4ex height1.56ex depth-0.56ex}\kern.4pt} +\def\unitedpawns{$\circ\kern-.05em\circ$} +\def\seppawns{$\circ\kern-.3em\cdot\kern-.35em\cdot\kern-.1em\circ$} +\def\doublepawns{\mbox{\baselineskip0pt + $\vcenter{\vbox{\hbox{$\circ$}\vskip.8pt\hbox{$\circ$}}}$}} +% Next symbol still not perfect ... +\def\passedpawn{\mbox{\baselineskip0pt + $\vcenter{\vbox{\hbox{\kern0.14em\symbolsix\char'042}\hbox{$\circ$}}}$}} +\def\morepawns{$>$} +\def\timelimit{$\oplus$} +\def\novelty{{\sc N}} +\def\comment{{\sc RR}} +\def\various{{\sc R}} +\def\without{\kern.4pt\mbox{% + \vrule width 1ex height.08ex depth0ex\kern-0.08ex + \vrule width0.08ex height1.5ex depth0ex}\kern.4pt} +\def\with{\kern.4pt\mbox{% + \vrule width 0.08ex height1.5ex depth0ex\kern-0.08ex + \vrule width 1ex height.08ex depth0ex}\kern.4pt} +\def\etc{$\parallel$} +\def\see{\kern.4pt\mbox{\vrule width 1em height.54ex depth-.46ex}\kern.4pt} + +\endinput
\ No newline at end of file |