Here is another set of improvements to the LyX chess support. Basically, I fixed a bunch of bugs and removed many hacks (removing much of the ERT from the example documents)
Please apply. Thanks! ---Kayvan -- Kayvan A. Sylvan | Proud husband of | Father to my kids: Sylvan Associates, Inc. | Laura Isabella Sylvan | Katherine Yelena (8/8/89) http://sylvan.com/~kayvan | "crown of her husband" | Robin Gregory (2/28/92)
Index: lib/ChangeLog =================================================================== RCS file: /cvs/lyx/lyx-devel/lib/ChangeLog,v retrieving revision 1.127 diff -u -r1.127 ChangeLog --- lib/ChangeLog 2001/11/13 14:47:32 1.127 +++ lib/ChangeLog 2001/11/21 06:58:36 @@ -1,3 +1,18 @@ +2001-11-20 Kayvan A. Sylvan <[EMAIL PROTECTED]> + + * 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: Adde 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 <[EMAIL PROTECTED]> * ui/default.ui: create a new Submenu Insert->Math, since placing Index: lib/examples/chess-article.lyx =================================================================== RCS file: /cvs/lyx/lyx-devel/lib/examples/chess-article.lyx,v retrieving revision 1.1 diff -u -r1.1 chess-article.lyx --- lib/examples/chess-article.lyx 2001/11/05 16:42:09 1.1 +++ lib/examples/chess-article.lyx 2001/11/21 06:58:37 @@ -145,9 +145,10 @@ \layout Variation 5... - Nge7} + Nge7 [ \backslash -equal{} was better.{ +equal{} was better. + ] \layout Mainline 6. @@ -191,8 +192,8 @@ \layout Mainline 12... - O-O?} This move loses instantly. - { + O-O? [ This move loses instantly. + ] \layout Standard The following was better, even though white retains the upper hand. @@ -201,9 +202,9 @@ 12... e5 13. Be3 Qc7 14. - Na4 O-O } + Na4 O-O [ \backslash -wbetter { +wbetter ] \layout Mainline 13. Index: lib/examples/chessgame.lyx =================================================================== RCS file: /cvs/lyx/lyx-devel/lib/examples/chessgame.lyx,v retrieving revision 1.1 diff -u -r1.1 chessgame.lyx --- lib/examples/chessgame.lyx 2001/10/31 17:16:35 1.1 +++ lib/examples/chessgame.lyx 2001/11/21 06:58:37 @@ -1,8 +1,9 @@ #LyX 1.2 created this file. For more info see http://www.lyx.org/ \lyxformat 220 -\textclass article +\textclass chess \begin_preamble \usepackage{chess-workshop-symbols} +\smallboard \end_preamble \language english \inputencoding auto @@ -63,6 +64,14 @@ (1623) \hfill (1639) +\layout Mainline + +1. + e4 c5 2. + Nc3 d6 3. + g3 Nc6 4. + Bg2 e6 5. + Nge2 \layout Standard @@ -71,14 +80,8 @@ \layout Standard -\backslash -newgame -\backslash -smallboard% -\layout Standard - \backslash -mainline{1. e4 c5 2. Nc3 d6 3. g3 Nc6 4. Bg2 e6 5. Nge2} +vspace*{-0.2in} \end_inset @@ -101,23 +104,21 @@ \begin_inset ERT -status Inlined +status Collapsed \layout Standard \backslash ] -\backslash -printknightmove{g1}{e2} -\backslash -highlight{d4,f4} \end_inset -\layout Standard +\layout KnightMove -So far, so good. - This is all according to theory. +g1->e2 +\layout HighLight + +d4,f4 \layout Standard @@ -127,18 +128,29 @@ \layout Standard \backslash -mainline{5... Be7?!} -\backslash -variation{5... Nge7} -\backslash -equal % +vspace*{-0.5in} % This is a hack! +\end_inset + + \layout Standard -\backslash -mainline{6. d4 cxd4 7. Nxd4 a6} -\end_inset +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 ~ @@ -170,23 +182,18 @@ ] \end_inset - -\layout Standard - -\begin_inset ERT -status Open +\layout Mainline +8. + Nxc6 bxc6 9. + O-O Bb7 10. + Qg4 Bf6 11. + Bf4 Ne7 12. + Rad1 \layout Standard -\backslash -mainline{8. Nxc6 bxc6 9. O-O Bb7 10. Qg4 Bf6 11. Bf4 Ne7 12. Rad1} -\end_inset - -\layout Standard - - \begin_inset ERT status Collapsed @@ -203,53 +210,50 @@ \begin_inset ERT -status Inlined +status Collapsed \layout Standard \backslash ] -\backslash -printarrow{a1}{d1} \end_inset - -\layout Standard - -White continues to develop pieces and also sets a trap for Black. -\layout Standard - -\begin_inset ERT -status Open +\layout Arrow +a1->d1 \layout Standard -\backslash -mainline{12... O-O?} This loses instantly. -\layout Standard -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 +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 + +Black's knight and bishop are in each other's way. + The bishop is doomed. +\layout Mainline + +13... + Nd5!? 14. + Bxd5 cxd5 15. + exf6 Qxf6 16. + Bxd6 Rfd8 17. + Bc7 Rd7 18. + Bf4 1-0 +\layout BoardCentered \the_end Index: lib/layouts/chess.layout =================================================================== RCS file: /cvs/lyx/lyx-devel/lib/layouts/chess.layout,v retrieving revision 1.1 diff -u -r1.1 chess.layout --- lib/layouts/chess.layout 2001/11/05 16:42:09 1.1 +++ lib/layouts/chess.layout 2001/11/21 06:58:37 @@ -21,26 +21,6 @@ Preamble \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 % \newgame @@ -84,9 +64,54 @@ Style Variation CopyStyle Mainline LatexType Command - LatexName hspace*\lyxvarindent\variation + LatexName lyxvariation[1] LabelString "Variation: " LeftMargin MMMMMMMM +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 Index: lib/tex/lyxskak.sty =================================================================== RCS file: /cvs/lyx/lyx-devel/lib/tex/lyxskak.sty,v retrieving revision 1.1 diff -u -r1.1 lyxskak.sty --- lib/tex/lyxskak.sty 2001/10/31 15:19:49 1.1 +++ lib/tex/lyxskak.sty 2001/11/21 06:58:37 @@ -1,5 +1,7 @@ % based on skak.sty % modified to work with older babel versions +% Bug fixes and comment parsing code by Kayvan Sylvan <[EMAIL PROTECTED]> +% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{lyxskak} @@ -269,7 +271,6 @@ \expandafter\xdef\csname skaklanguage.#1\endcsname{#2}} \newcommand{\skaklanguage}[1][english]{% -%\def\skaklanguage#1{% \def\currentlanguage{#1}% \skak@ifthenelse{\equal{#1}{english}}% {\let\skak@pieceToEnglish=\skak@englishToEnglish% @@ -807,7 +808,7 @@ \ParseCoordinates(#2)}% {\IsPromotion{#1}% {\def\Promotion{\True}% - \gdef\PromotionPieceName{\skak@pieceToEnlish{\FirstChar(#2)}}}}% + \gdef\PromotionPieceName{\skak@pieceToEnglish{\FirstChar(#2)}}}}% {}% no more information is of interest }}}} @@ -1116,7 +1117,6 @@ \def\@mainline#1{\endgroup\gdef\NumberNext{\True}% \Mainline(#1 Z ){\mainlinestyle\typeset@A{#1}}} - \def\hidemoves{\begingroup\catcode`\#=12 \@hidemoves} \def\@hidemoves#1{\endgroup\def\NumberNext{\True}% \Mainline(#1 Z )} @@ -1166,18 +1166,20 @@ \def\Mainline(#1 #2){% \EqStr{Z}{#1}% - {}% - {\NumberNext% - {\EatNumber{#1}% sets \NumberOK, \ExpectedColour + {\EqStr{Z}{#2}{}{\Mainline(#2)}}% + {\EqStr{[}{#1}% + {\typeset@eatcomment#1#2QXXQQ}% + {\NumberNext% + {\EatNumber{#1}% sets \NumberOK, \ExpectedColour % executes a move not separated from the % number with a space, eg, 1.e4 - \NumberOK% - {\gdef\NumberNext{\False}% - \Mainline(#2)}% - {\errmessage{mainline: not the correct move number}}}% - {\MakeMoveMainline{#1}% - \Mainline(#2)}}} - + \NumberOK% + {\gdef\NumberNext{\False}% + \Mainline(#2)}% + {\errmessage{mainline: not the correct move number}}}% + {\MakeMoveMainline{#1}% + \Mainline(#2)}}}} +\def\typeset@eatcomment[#1]#2QXXQQ{\Mainline(#2)} %%%%% typesetting %%% figurine notation @@ -1313,13 +1315,15 @@ \def\typeset@AA(#1 #2){% \EqStr{Z}{#1}% {}% - {\TypeSetNumberNext% - {\typeset@number{#1}% sets \TypeSetColour - \gdef\TypeSetNumberNext{\False}% - \typeset@AA(#2)}% - {\typeset@A@move{#1}% - \typeset@AA(#2)}}} - + {\EqStr{[}{#1}% + {\typeset@printcomment#1#2QXXQX}% + {{\TypeSetNumberNext% + {\typeset@number{#1}% sets \TypeSetColour + \gdef\TypeSetNumberNext{\False}% + \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#1{\endgroup{\variationstyle\typeset@A{#1}}} @@ -1569,7 +1573,35 @@ \edef\restore@temp{\csname chessgame.#1\endcsname} \expandafter\FenBoard\restore@temp)} -% end skak.sty +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Added in support of the chess.layout by Kayvan Sylvan <[EMAIL PROTECTED]> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% 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.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