better chess support from Kayvan

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3055 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jean-Marc Lasgouttes 2001-11-21 09:59:04 +00:00
parent 96175b2fe6
commit 1ea49f41d5
5 changed files with 200 additions and 121 deletions

View File

@ -1,3 +1,18 @@
2001-11-20 Kayvan A. Sylvan <kayvan@sylvan.com>
* examples/chess-article.lyx: Fixed comments. Removed hacks
caused by my lack of understanding of TeX macros and LyX layouts.
This version is immensely cleaner.
* examples/chessgame.lyx: Minimized ERT while still showing off
the external chess material insets.
* tex/lyxskak.sty: Added LyX supporting macros. Added better embedded
comment handling into skak framework. Fixed some bugs in skak.sty!
* layouts/chess.layout: Fixed up layout. Removed kludges in previous
version. Added Subvariation, Subsubvariation, etc.
2001-11-13 André Pönitz <poenitz@gmx.net> 2001-11-13 André Pönitz <poenitz@gmx.net>
* ui/default.ui: create a new Submenu Insert->Math, since placing * ui/default.ui: create a new Submenu Insert->Math, since placing

View File

@ -128,7 +128,7 @@ status Collapsed
\layout Standard \layout Standard
\backslash \backslash
vspace*{-1in} % This is a hack! vspace*{-0.75in} % This is a hack!
\end_inset \end_inset
@ -145,9 +145,10 @@ So far, so good.
\layout Variation \layout Variation
5... 5...
Nge7} Nge7 [
\backslash \backslash
equal{} was better.{ equal{} was better.
]
\layout Mainline \layout Mainline
6. 6.
@ -191,8 +192,8 @@ White continues to develop pieces and also sets a trap for Black.
\layout Mainline \layout Mainline
12... 12...
O-O?} This move loses instantly. O-O? [ This move loses instantly.
{ ]
\layout Standard \layout Standard
The following was better, even though white retains the upper hand. The following was better, even though white retains the upper hand.
@ -201,9 +202,9 @@ The following was better, even though white retains the upper hand.
12... 12...
e5 13. e5 13.
Be3 Qc7 14. Be3 Qc7 14.
Na4 O-O } Na4 O-O [
\backslash \backslash
wbetter { wbetter ]
\layout Mainline \layout Mainline
13. 13.

View File

@ -1,8 +1,9 @@
#LyX 1.2 created this file. For more info see http://www.lyx.org/ #LyX 1.2 created this file. For more info see http://www.lyx.org/
\lyxformat 220 \lyxformat 220
\textclass article \textclass chess
\begin_preamble \begin_preamble
\usepackage{chess-workshop-symbols} \usepackage{chess-workshop-symbols}
\smallboard
\end_preamble \end_preamble
\language english \language english
\inputencoding auto \inputencoding auto
@ -63,6 +64,14 @@ Wakeham, Marc
(1623) (1623)
\hfill \hfill
(1639) (1639)
\layout Mainline
1.
e4 c5 2.
Nc3 d6 3.
g3 Nc6 4.
Bg2 e6 5.
Nge2
\layout Standard \layout Standard
@ -72,13 +81,7 @@ status Open
\layout Standard \layout Standard
\backslash \backslash
newgame vspace*{-0.2in}
\backslash
smallboard%
\layout Standard
\backslash
mainline{1. e4 c5 2. Nc3 d6 3. g3 Nc6 4. Bg2 e6 5. Nge2}
\end_inset \end_inset
@ -101,23 +104,21 @@ status Collapsed
\begin_inset ERT \begin_inset ERT
status Inlined status Collapsed
\layout Standard \layout Standard
\backslash \backslash
] ]
\backslash
printknightmove{g1}{e2}
\backslash
highlight{d4,f4}
\end_inset \end_inset
\layout Standard \layout KnightMove
So far, so good. g1->e2
This is all according to theory. \layout HighLight
d4,f4
\layout Standard \layout Standard
@ -127,20 +128,31 @@ status Open
\layout Standard \layout Standard
\backslash \backslash
mainline{5... Be7?!} vspace*{-0.5in} % This is a hack!
\backslash
variation{5... Nge7}
\backslash
equal %
\layout Standard
\backslash
mainline{6. d4 cxd4 7. Nxd4 a6}
\end_inset \end_inset
\layout Standard \layout Standard
So far, so good.
This is all according to theory.
\layout Mainline
5...
Be7?!
\layout Variation
5...
Nge7 [
\backslash
equal{} ]
\layout Mainline
6.
d4 cxd4 7.
Nxd4 a6
\layout Standard
With 7...\SpecialChar ~ With 7...\SpecialChar ~
a6, we are back in the well-trodden theory of this opening. a6, we are back in the well-trodden theory of this opening.
\layout Standard \layout Standard
@ -171,19 +183,14 @@ status Collapsed
\end_inset \end_inset
\layout Standard \layout Mainline
\begin_inset ERT
status Open
\layout Standard
\backslash
mainline{8. Nxc6 bxc6 9. O-O Bb7 10. Qg4 Bf6 11. Bf4 Ne7 12. Rad1}
\end_inset
8.
Nxc6 bxc6 9.
O-O Bb7 10.
Qg4 Bf6 11.
Bf4 Ne7 12.
Rad1
\layout Standard \layout Standard
@ -203,53 +210,50 @@ status Collapsed
\begin_inset ERT \begin_inset ERT
status Inlined status Collapsed
\layout Standard \layout Standard
\backslash \backslash
] ]
\backslash
printarrow{a1}{d1}
\end_inset \end_inset
\layout Arrow
a1->d1
\layout Standard \layout Standard
White continues to develop pieces and also sets a trap for Black. White continues to develop pieces and also sets a trap for Black.
\layout Mainline
12...O-O? [ This move loses instantly.
]
\layout Variation
12...
e5 13.
Be3 Qc7 14.
Na4 O-O [
\backslash
wbetter{} is best ]
\layout Mainline
13.
e5!
\layout Standard \layout Standard
Black's knight and bishop are in each other's way.
The bishop is doomed.
\layout Mainline
\begin_inset ERT 13...
status Open Nd5!? 14.
Bxd5 cxd5 15.
\layout Standard exf6 Qxf6 16.
Bxd6 Rfd8 17.
\backslash Bc7 Rd7 18.
mainline{12... O-O?} This loses instantly. Bf4 1-0
\layout Standard \layout BoardCentered
Best was
\backslash
variation{12... e5 13. Be3 Qc7 14. Na4 O-O}
\backslash
wbetter
\layout Standard
\backslash
mainline{13. e5!} Black's knight and bishop form a bumbling pair here, the Bishop is doomed.
\layout Standard
\backslash
mainline{13... Nd5!? 14. Bxd5 cxd5 15. exf6 Qxf6 16. Bxd6 Rfd8 17. Bc7 Rd7 18. Bf4 1-0 }%
\layout Standard
\backslash
[
\backslash
showboard
\backslash
]
\end_inset
\the_end \the_end

View File

@ -21,26 +21,6 @@
Preamble Preamble
\usepackage[ps,mover]{lyxskak} \usepackage[ps,mover]{lyxskak}
%%% Modified routines from skak.sty
%
\def\lyxprintarrow#1{\lyxprintarrow@#1@}
\def\lyxprintarrow@#1->#2@{\ncline[style=psskak]{-|>}{#1}{#2}}
\def\lyxknightmove#1{\lyxknightmove@#1@}
\def\lyxknightmove@#1->#2@{%
\setcounter{ps@knightangle}{\get@fileangle{\First#1}{\First#2}+%
\get@rankangle{\Second#1}{\Second#2} + \value{ps@inverse}}%
\ncdiagg[style=psskak,angleA=\arabic{ps@knightangle}]{-|>}{#1}{#2}}
%%% Variation indent (You can set this in your preamble)
%
\newlength{\lyxvarindent}
\setlength{\lyxvarindent}{0.2in}
%%% \Var[ moves ] - use in the Variation paragraph styles.
%
\def\Var[#1]{\variation{#1}}
%%% initialize board %%% initialize board
% %
\newgame \newgame
@ -84,11 +64,56 @@ End
Style Variation Style Variation
CopyStyle Mainline CopyStyle Mainline
LatexType Command LatexType Command
LatexName hspace*\lyxvarindent\variation LatexName lyxvariation[1]
LabelString "Variation: " LabelString "Variation: "
LeftMargin MMMMMMMM LeftMargin MMMMMMMM
End End
# This is a subvariation.
#
Style SubVariation
CopyStyle Variation
LatexName lyxvariation[2]
LabelString "Subvariation: "
LeftMargin MMMMMMMMMMM
End
# This is a subsubvariation.
#
Style SubVariation2
CopyStyle Variation
LatexName lyxvariation[3]
LabelString "Subvariation(2): "
LeftMargin MMMMMMMMMMMMMM
End
# This is a subsubsubvariation.
#
Style SubVariation3
CopyStyle Variation
LatexName lyxvariation[4]
LabelString "Subvariation(3): "
LeftMargin MMMMMMMMMMMMMMMMM
End
# This is a subsubsubsubvariation.
#
Style SubVariation4
CopyStyle Variation
LatexName lyxvariation[5]
LabelString "Subvariation(4): "
LeftMargin MMMMMMMMMMMMMMMMMMMM
End
# This is a subsubsubsubsubvariation.
#
Style SubVariation5
CopyStyle Variation
LatexName lyxvariation[6]
LabelString "Subvariation(5): "
LeftMargin MMMMMMMMMMMMMMMMMMMMMMM
End
# Same as mainline, but it does not print the moves (only updates the # Same as mainline, but it does not print the moves (only updates the
# board position. # board position.
# #
@ -131,7 +156,7 @@ End
Style HighLight Style HighLight
CopyStyle Mainline CopyStyle Mainline
LatexType Command LatexType Command
LatexName highlight LatexName lyxhighlight
LeftMargin MMMMMMM LeftMargin MMMMMMM
LabelString "Highlights: " LabelString "Highlights: "
LabelFont LabelFont

View File

@ -1,5 +1,7 @@
% based on skak.sty % based on skak.sty
% modified to work with older babel versions % modified to work with older babel versions
% Bug fixes and comment parsing code by Kayvan Sylvan <kayvan@sylvan.com>
%
\NeedsTeXFormat{LaTeX2e} \NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{lyxskak} \ProvidesPackage{lyxskak}
@ -269,7 +271,6 @@
\expandafter\xdef\csname skaklanguage.#1\endcsname{#2}} \expandafter\xdef\csname skaklanguage.#1\endcsname{#2}}
\newcommand{\skaklanguage}[1][english]{% \newcommand{\skaklanguage}[1][english]{%
%\def\skaklanguage#1{%
\def\currentlanguage{#1}% \def\currentlanguage{#1}%
\skak@ifthenelse{\equal{#1}{english}}% \skak@ifthenelse{\equal{#1}{english}}%
{\let\skak@pieceToEnglish=\skak@englishToEnglish% {\let\skak@pieceToEnglish=\skak@englishToEnglish%
@ -807,7 +808,7 @@
\ParseCoordinates(#2)}% \ParseCoordinates(#2)}%
{\IsPromotion{#1}% {\IsPromotion{#1}%
{\def\Promotion{\True}% {\def\Promotion{\True}%
\gdef\PromotionPieceName{\skak@pieceToEnlish{\FirstChar(#2)}}}}% \gdef\PromotionPieceName{\skak@pieceToEnglish{\FirstChar(#2)}}}}%
{}% no more information is of interest {}% no more information is of interest
}}}} }}}}
@ -1116,7 +1117,6 @@
\def\@mainline#1{\endgroup\gdef\NumberNext{\True}% \def\@mainline#1{\endgroup\gdef\NumberNext{\True}%
\Mainline(#1 Z ){\mainlinestyle\typeset@A{#1}}} \Mainline(#1 Z ){\mainlinestyle\typeset@A{#1}}}
\def\hidemoves{\begingroup\catcode`\#=12 \@hidemoves} \def\hidemoves{\begingroup\catcode`\#=12 \@hidemoves}
\def\@hidemoves#1{\endgroup\def\NumberNext{\True}% \def\@hidemoves#1{\endgroup\def\NumberNext{\True}%
\Mainline(#1 Z )} \Mainline(#1 Z )}
@ -1166,18 +1166,20 @@
\def\Mainline(#1 #2){% \def\Mainline(#1 #2){%
\EqStr{Z}{#1}% \EqStr{Z}{#1}%
{}% {\EqStr{Z}{#2}{}{\Mainline(#2)}}%
{\NumberNext% {\EqStr{[}{#1}%
{\EatNumber{#1}% sets \NumberOK, \ExpectedColour {\typeset@eatcomment#1#2QXXQQ}%
{\NumberNext%
{\EatNumber{#1}% sets \NumberOK, \ExpectedColour
% executes a move not separated from the % executes a move not separated from the
% number with a space, eg, 1.e4 % number with a space, eg, 1.e4
\NumberOK% \NumberOK%
{\gdef\NumberNext{\False}% {\gdef\NumberNext{\False}%
\Mainline(#2)}% \Mainline(#2)}%
{\errmessage{mainline: not the correct move number}}}% {\errmessage{mainline: not the correct move number}}}%
{\MakeMoveMainline{#1}% {\MakeMoveMainline{#1}%
\Mainline(#2)}}} \Mainline(#2)}}}}
\def\typeset@eatcomment[#1]#2QXXQQ{\Mainline(#2)}
%%%%% typesetting %%%%% typesetting
%%% figurine notation %%% figurine notation
@ -1313,13 +1315,15 @@
\def\typeset@AA(#1 #2){% \def\typeset@AA(#1 #2){%
\EqStr{Z}{#1}% \EqStr{Z}{#1}%
{}% {}%
{\TypeSetNumberNext% {\EqStr{[}{#1}%
{\typeset@number{#1}% sets \TypeSetColour {\typeset@printcomment#1#2QXXQX}%
\gdef\TypeSetNumberNext{\False}% {{\TypeSetNumberNext%
\typeset@AA(#2)}% {\typeset@number{#1}% sets \TypeSetColour
{\typeset@A@move{#1}% \gdef\TypeSetNumberNext{\False}%
\typeset@AA(#2)}}} \typeset@AA(#2)}%
{\typeset@A@move{#1}%
\typeset@AA(#2)}}}}}
\def\typeset@printcomment[#1]#2QXXQX{{\ }{#1}{\typeset@AA(#2)}}
\def\variation{\begingroup\catcode`\#=12 \@variation} \def\variation{\begingroup\catcode`\#=12 \@variation}
\def\@variation#1{\endgroup{\variationstyle\typeset@A{#1}}} \def\@variation#1{\endgroup{\variationstyle\typeset@A{#1}}}
@ -1569,7 +1573,37 @@
\edef\restore@temp{\csname chessgame.#1\endcsname} \edef\restore@temp{\csname chessgame.#1\endcsname}
\expandafter\FenBoard\restore@temp)} \expandafter\FenBoard\restore@temp)}
% end skak.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Added in support of the chess.layout by Kayvan Sylvan <kayvan@sylvan.com>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Modified routines from skak.sty
%
\def\lyxprintarrow#1{\lyxprintarrow@#1@\vspace*{-1\parskip}}
\def\lyxprintarrow@#1->#2@{\ncline[style=psskak]{-|>}{#1}{#2}}
\def\lyxknightmove#1{\lyxknightmove@#1@\vspace*{-1\parskip}}
\def\lyxknightmove@#1->#2@{%
\setcounter{ps@knightangle}{\get@fileangle{\First#1}{\First#2}+%
\get@rankangle{\Second#1}{\Second#2} + \value{ps@inverse}}%
\ncdiagg[style=psskak,angleA=\arabic{ps@knightangle}]{-|>}{#1}{#2}}
\def\lyxhighlight#1{\highlight{#1}\vspace*{-1\parskip}}
%%% Variation indent (You can set this in your preamble)
%
\newlength{\lyxvarindent}
\setlength{\lyxvarindent}{0.15in}
\newlength{\lyxvar@ll}% temporary for storing line length in variations
%%% lyxvariation{....} - Indented paragraph of variation moves, typeset
%%% in the normal fashion (styleB).
%
\def\lyxvariation[#1]#2{%
%\setlength{\lyxvar@ll}{\textwidth}%
\setlength{\lyxvar@ll}{\columnwidth}%
\addtolength{\lyxvar@ll}{-#1\lyxvarindent}%
\hspace*{#1\lyxvarindent}\parbox{\lyxvar@ll}{\variation{#2}}}
% end lyxskak.sty