commit 9c33bbed101322f4c18de9d2496ea9dc8fff0295
Author: Juergen Spitzmueller <[email protected]>
Date:   Sun Sep 23 12:26:43 2018 +0200

    Rework chessboard support
    
    * Use a module rather than a layout, since this package can be used with
      any class
    * Do not hardcode options and settings. The package is very flexible,
      there is no need to limit this in LyX
---
 lib/Makefile.am                     |    2 +-
 lib/chkconfig.ltx                   |    3 +
 lib/examples/chessboard-article.lyx |  268 ++++++++++-------------------------
 lib/layouts/chessboard.layout       |  133 -----------------
 lib/layouts/chessboard.module       |  139 ++++++++++++++++++
 src/LaTeXFeatures.cpp               |    4 +-
 6 files changed, 224 insertions(+), 325 deletions(-)

diff --git a/lib/Makefile.am b/lib/Makefile.am
index fc8f270..3816d5c 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -2169,7 +2169,7 @@ dist_layouts_DATA =\
        layouts/bxjsslide.layout \
        layouts/changebars.module \
        layouts/chess.layout \
-       layouts/chessboard.layout \
+       layouts/chessboard.module \
        layouts/cl2emult.layout \
        layouts/copernicus.layout \
        layouts/ctex-article.layout \
diff --git a/lib/chkconfig.ltx b/lib/chkconfig.ltx
index 7c8b669..8abcc53 100644
--- a/lib/chkconfig.ltx
+++ b/lib/chkconfig.ltx
@@ -297,6 +297,8 @@
 \TestPackage{cancel}
 \TestPackage{chapterbib}
 \TestPackage{chemgreek}
+\TestPackage{chessboard}
+\TestPackage{chessfss}
 \TestPackage{chicago}
 \TestPackage{color} % this one should be there if graphics.sty is there.
 \TestPackage{covington}
@@ -397,6 +399,7 @@
 \TestPackage[xetex.def]{xetex-def}
 \TestPackage{xkeyval}
 \TestPackage{xltabular}
+\TestPackage{xskak} % required by chessboard
 
 % Packages used by LyX's documentation files
 \TestPackage{arydshln}
diff --git a/lib/examples/chessboard-article.lyx 
b/lib/examples/chessboard-article.lyx
index aad0c85..6ab13e4 100644
--- a/lib/examples/chessboard-article.lyx
+++ b/lib/examples/chessboard-article.lyx
@@ -1,17 +1,22 @@
 #LyX 2.4 created this file. For more info see https://www.lyx.org/
-\lyxformat 563
+\lyxformat 564
 \begin_document
 \begin_header
 \save_transient_properties true
 \origin /systemlyxdir/examples/
-\textclass chessboard
+\textclass article
 \begin_preamble
-\usepackage{multicol}
+\AtBeginDocument{%
 \columnsep 0.25in
 \columnseprule 0.4pt
 \hyphenpenalty 10000
+}
 \end_preamble
 \use_default_options true
+\begin_modules
+chessboard
+multicol
+\end_modules
 \maintain_unincluded_children false
 \language english
 \language_package default
@@ -51,10 +56,9 @@
 \use_package stackrel 1
 \use_package stmaryrd 1
 \use_package undertilde 1
-\cite_engine biblatex-natbib
-\cite_engine_type authoryear
-\biblatex_bibstyle authoryear
-\biblatex_citestyle authoryear
+\cite_engine basic
+\cite_engine_type default
+\biblio_style plain
 \use_bibtopic false
 \use_indices false
 \paperorientation portrait
@@ -72,14 +76,14 @@
 \secnumdepth 3
 \tocdepth 3
 \paragraph_separation skip
-\defskip medskip
+\defskip smallskip
 \is_math_indent 0
 \math_numbering_side default
 \quotes_style english
 \dynamic_quotes 0
 \papercolumns 1
 \papersides 1
-\paperpagestyle default
+\paperpagestyle empty
 \tracking_changes false
 \output_changes false
 \html_math_output 0
@@ -116,37 +120,25 @@ Game start 05/29/2001
 \end_layout
 
 \begin_layout Standard
-\begin_inset ERT
-status collapsed
+\begin_inset Flex Multiple Columns
+status open
 
 \begin_layout Plain Layout
-
-
-\backslash
-begin{multicols}{2}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
 The following game was played at the IECC (International Email Chess Club).
  It is presented as an example of the fun you can have with \SpecialChar LyX
 's new chessboard
- layout (based on the 
-\begin_inset Quotes eld
-\end_inset
-
-xskak.sty
-\begin_inset Quotes erd
-\end_inset
-
- package from CTAN
+ module (using the 
+\family sans
+xskak
+\family default
+ and 
+\family sans
+chessboard
+\family default
+ packages).
 \end_layout
 
-\begin_layout Standard
+\begin_layout Plain Layout
 \begin_inset CommandInset line
 LatexCommand rule
 offset "0.5ex"
@@ -158,14 +150,14 @@ height "1pt"
 
 \end_layout
 
-\begin_layout Standard
+\begin_layout Plain Layout
 
 \noun on
 Sylvan, Kayvan
 \begin_inset space \hfill{}
 \end_inset
 
-Wakeham, Marc 
+Wakeham, Marc
 \noun default
 
 \begin_inset Newline newline
@@ -175,10 +167,10 @@ Wakeham, Marc
 \begin_inset space \hfill{}
 \end_inset
 
- (1639)
+(1639)
 \end_layout
 
-\begin_layout Standard
+\begin_layout Plain Layout
 \noindent
 \begin_inset CommandInset line
 LatexCommand rule
@@ -191,7 +183,24 @@ height "1pt"
 
 \end_layout
 
-\begin_layout Standard
+\begin_layout NewChessGame
+
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Flex SetChessBoard
+status open
+
+\begin_layout Plain Layout
+pgfstyle=straightmove,arrow=to,linewidth=0.1em,smallboard
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
 \begin_inset Flex Mainline
 status open
 
@@ -207,12 +216,6 @@ outvar
 
 \end_inset
 
-
-\begin_inset Argument 2
-status open
-
-\begin_layout Plain Layout
-
 1.
  e4 c5 2.
  Nc3 d6 3.
@@ -226,44 +229,22 @@ status open
 
 \end_layout
 
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
+\begin_layout ChessBoard
 \noindent
 \align center
 \begin_inset Flex ChessBoard
 status open
 
 \begin_layout Plain Layout
+\noindent
+\align center
 \begin_inset Argument 1
 status open
 
 \begin_layout Plain Layout
 
-d2-d4
-\end_layout
-
-\end_inset
-
-
-\begin_inset Argument 3
-status open
-
-\begin_layout Plain Layout
-d4,f4
-\end_layout
-
-\end_inset
-
-
-\begin_inset Argument 2
-status open
-
-\begin_layout Plain Layout
-g1-e2
+markmoves={d2-d4},pgfstyle=knightmove,markmove={g1-e2},pgfstyle=circle,markfield
+s={d4,f4}
 \end_layout
 
 \end_inset
@@ -276,7 +257,7 @@ g1-e2
 
 \end_layout
 
-\begin_layout Standard
+\begin_layout Plain Layout
 \noindent
 \align block
 So far, so good.
@@ -285,13 +266,8 @@ So far, so good.
  The diagrammed position has been reached before in hundreds of GM games.
 \end_layout
 
-\begin_layout Standard
-\begin_inset Flex Mainline
-status open
-
 \begin_layout Plain Layout
-
-\begin_inset Argument 2
+\begin_inset Flex Mainline
 status open
 
 \begin_layout Plain Layout
@@ -305,12 +281,7 @@ status open
 
 \end_layout
 
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
+\begin_layout Plain Layout
 \noindent
 \align block
 \begin_inset Flex Variation
@@ -328,20 +299,9 @@ invar
 
 \end_inset
 
-
-\begin_inset Argument 2
-status open
-
-\begin_layout Plain Layout
-
 5...
  Ng7
-\end_layout
-
-\end_inset
-
-
-\begin_inset Argument 3
+\begin_inset Argument post:1
 status open
 
 \begin_layout Plain Layout
@@ -361,7 +321,7 @@ equal{} was better
 
 \end_layout
 
-\begin_layout Standard
+\begin_layout Plain Layout
 \begin_inset Flex Mainline
 status open
 
@@ -377,12 +337,6 @@ outvar
 
 \end_inset
 
-
-\begin_inset Argument 2
-status open
-
-\begin_layout Plain Layout
-
 6.
  d4 cxd4 7.
  Nxd4 a6
@@ -393,21 +347,16 @@ status open
 
 \end_layout
 
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
+\begin_layout Plain Layout
 With 7...
  a6, we are back in the well-trodden theory of this opening.
 \end_layout
 
-\begin_layout Standard
+\begin_layout Plain Layout
 \noindent
 \align center
 \begin_inset Flex ChessBoard
-status open
+status collapsed
 
 \begin_layout Plain Layout
 
@@ -418,13 +367,8 @@ status open
 
 \end_layout
 
-\begin_layout Standard
-\begin_inset Flex Mainline
-status open
-
 \begin_layout Plain Layout
-
-\begin_inset Argument 2
+\begin_inset Flex Mainline
 status open
 
 \begin_layout Plain Layout
@@ -442,24 +386,21 @@ status open
 
 \end_layout
 
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
+\begin_layout ChessBoard
 \noindent
 \align center
 \begin_inset Flex ChessBoard
 status open
 
 \begin_layout Plain Layout
+\noindent
+\align center
 \begin_inset Argument 1
 status open
 
 \begin_layout Plain Layout
 
-a1-d1
+markmoves={a1-d1}
 \end_layout
 
 \end_inset
@@ -472,29 +413,19 @@ a1-d1
 
 \end_layout
 
-\begin_layout Standard
+\begin_layout Plain Layout
 White continues to develop pieces and also sets a trap for Black.
 \end_layout
 
-\begin_layout Standard
-\begin_inset Flex Mainline
-status open
-
 \begin_layout Plain Layout
-
-\begin_inset Argument 2
+\begin_inset Flex Mainline
 status open
 
 \begin_layout Plain Layout
 
 12...
- O-O?
-\end_layout
-
-\end_inset
-
- 
-\begin_inset Argument 3
+ O-O? 
+\begin_inset Argument post:1
 status open
 
 \begin_layout Plain Layout
@@ -512,11 +443,11 @@ This move loses instantly.
 
 \end_layout
 
-\begin_layout Standard
+\begin_layout Plain Layout
 The following was better, even though white retains the upper hand.
 \end_layout
 
-\begin_layout Standard
+\begin_layout Plain Layout
 \begin_inset Flex Variation
 status open
 
@@ -532,22 +463,11 @@ invar
 
 \end_inset
 
-
-\begin_inset Argument 2
-status open
-
-\begin_layout Plain Layout
-
 12...
  e5 13.
  Be3 Qc7 14.
  Na4 O-O
-\end_layout
-
-\end_inset
-
-
-\begin_inset Argument 3
+\begin_inset Argument post:1
 status open
 
 \begin_layout Plain Layout
@@ -567,7 +487,7 @@ wbetter
 
 \end_layout
 
-\begin_layout Standard
+\begin_layout Plain Layout
 \begin_inset Flex Mainline
 status open
 
@@ -583,12 +503,6 @@ outvar
 
 \end_inset
 
-
-\begin_inset Argument 2
-status open
-
-\begin_layout Plain Layout
-
 13.
  e5!
 \end_layout
@@ -598,23 +512,13 @@ status open
 
 \end_layout
 
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
+\begin_layout Plain Layout
 Black's knight and bishop form a bumbling pair here.
  The bishop is doomed.
 \end_layout
 
-\begin_layout Standard
-\begin_inset Flex Mainline
-status open
-
 \begin_layout Plain Layout
-
-\begin_inset Argument 2
+\begin_inset Flex Mainline
 status open
 
 \begin_layout Plain Layout
@@ -626,12 +530,7 @@ status open
  Bxd6 Rfd8 17.
  Bc7 Rd7 18.
  Bf4
-\end_layout
-
-\end_inset
-
-
-\begin_inset Argument 3
+\begin_inset Argument post:1
 status open
 
 \begin_layout Plain Layout
@@ -649,11 +548,11 @@ status open
 
 \end_layout
 
-\begin_layout Standard
+\begin_layout Plain Layout
 \noindent
 \align center
 \begin_inset Flex ChessBoard
-status open
+status collapsed
 
 \begin_layout Plain Layout
 
@@ -664,17 +563,6 @@ status open
 
 \end_layout
 
-\begin_layout Standard
-\begin_inset ERT
-status collapsed
-
-\begin_layout Plain Layout
-
-
-\backslash
-end{multicols}
-\end_layout
-
 \end_inset
 
 
diff --git a/lib/layouts/chessboard.layout b/lib/layouts/chessboard.layout
deleted file mode 100644
index a92ab74..0000000
--- a/lib/layouts/chessboard.layout
+++ /dev/null
@@ -1,133 +0,0 @@
-#% Do not delete the line below; configure depends on this
-#  \DeclareLaTeXClass[scrartcl]{Chessboard}
-#  \DeclareCategory{Articles}
-# chessboard article textclass definition file.
-
-Format          69
-
-Requires        chessfss
-
-ClassOptions
-       Other           "parskip"
-End
-
-Preamble
-       \usepackage{xskak}
-       \pagestyle{empty}
-       \AtBeginDocument{
-         \newchessgame
-         \setchessboard{pgfstyle=straightmove, arrow=to,linewidth=0.1em, 
smallboard}
-       }
-EndPreamble
-
-Style Standard
-       Align           Block
-       AlignPossible   Block, Left, Right, Center
-End
-
-Input           stdsections.inc
-Input           stdtitle.inc
-
-InsetLayout Flex:Mainline
-       LyXType         custom
-       LatexType       Command
-       LatexName       mainline
-       Decoration      Classic
-       LabelString     "Mainline:"
-       PassThru        1
-       ParbreakIsNewline 1
-       LabelFont
-               Color           blue
-               Series          bold
-       EndFont
-       Font
-               Color           blue
-       EndFont
-       Argument 1
-               LabelString     id
-               ToolTip         "'invar' or 'outvar'"
-               Decoration      Conglomerate
-       EndArgument
-       Argument 2
-               Mandatory       1
-               LabelString     "Moves"
-               PassThru        1
-               Decoration      Conglomerate
-       EndArgument
-       Argument 3
-               LabelString     "Comment"
-               Mandatory       1
-               LeftDelim       "{ "
-               Font
-                       Color           Green
-               EndFont
-               Decoration      Conglomerate
-       EndArgument
-End
-
-InsetLayout Flex:Variation
-       CopyStyle       Flex:Mainline
-       LatexName       variation
-       LabelString     Variation
-End
-
-InsetLayout Flex:ChessBoard
-       LyXType         custom
-       LatexType       Command
-       LatexName       chessboard
-       LabelString     "[chessboard]"
-       Decoration      Classic
-       KeepEmpty       1
-       LabelFont
-               Color           Red
-       EndFont
-       Argument 1
-               LabelString     "Arrows"
-               ToolTip         "Comma separated list of the form from-to (like 
d2-d4)"
-               LeftDelim       "[pgfstyle=straightmove,markmoves={"
-               RightDelim      "},"
-               DefaultArg      " "
-               PassThru        1
-               Decoration      Conglomerate
-       EndArgument
-       Argument 2
-               LabelString     "Knigt"
-               ToolTip         "List of knight moves (crooked arrows) g1-e2, 
g1-h3"
-               LeftDelim       "pgfstyle=knightmove,markmove={"
-               RightDelim      "},"
-               Decoration      Conglomerate
-       EndArgument
-       Argument 3
-               LabelString     "Mark"
-               ToolTip         "Comma separated list of fields to be marked 
with a circle (like d4,f4,c7)"
-               DefaultArg      " "
-               LeftDelim       "pgfstyle=circle,markfields={"
-               RightDelim      "}]"
-               Decoration      Conglomerate
-       EndArgument
-End
-
-InsetLayout Flex:ChessBoardStore
-       CopyStyle       Flex:ChessBoard
-       ResetArgs       1
-       LabelString     "StoreChessboard"
-       Argument 1
-               LabelString     "Store FEN"
-               ToolTip         "Store the 'FEN' under the given name"
-               LeftDelim       "[print=false,storefen={"
-               RightDelim      "}]"
-       EndArgument
-End
-
-InsetLayout Flex:ChessBoardRestore
-       CopyStyle       Flex:ChessBoard
-       ResetArgs       1
-       LabelString     "RestoreChessboard"
-       Argument 1
-               LabelString     "Restore FEN"
-               ToolTip         "Restore the 'FEN' to the version saved under 
the given name"
-               LeftDelim       "[print=false,restorefen={"
-               RightDelim      "}]"
-       EndArgument
-End
-
diff --git a/lib/layouts/chessboard.module b/lib/layouts/chessboard.module
new file mode 100644
index 0000000..1381030
--- /dev/null
+++ b/lib/layouts/chessboard.module
@@ -0,0 +1,139 @@
+#\DeclareLyXModule[chessboard.sty,chessfss.sty,xskak.sty]{Chessboard}
+#DescriptionBegin
+#Support for the chessboard package to print chess games
+#See chessboard-article.lyx example file.
+#DescriptionEnd
+# Author: Kornel Benko <[email protected]>
+#         Jürgen Spitzmüller <[email protected]>
+
+Format          69
+
+#
+# XSkak basics
+#
+
+Style NewChessGame
+       LatexType               command
+       LatexName               newchessgame
+       Margin                  Dynamic
+       LabelType               Static
+       LabelSep                XX
+       LabelString             "[Start New Chess Game]"
+       LabelFont
+               Family         typewriter
+               Series         Medium
+               Size           Normal
+               Color          red
+       EndFont
+       KeepEmpty               1
+       Argument 1
+               LabelString     "Options"
+               MenuString      "Chessgame Options"
+               ToolTip         "See xskak manual for a comprehensive list of 
keys and values"
+               PassThru        1
+               Font
+                       Color   latex
+                       Family  typewriter
+               EndFont
+       EndArgument
+       Requires                xskak
+End
+
+
+InsetLayout Flex:Mainline
+       LyXType                 custom
+       LatexType               command
+       LatexName               mainline
+       Decoration              classic
+       LabelString             "Mainline:"
+       PassThru                1
+       ParbreakIsNewline       1
+       LabelFont
+               Color           blue
+       EndFont
+       Font
+               Color           blue
+       EndFont
+       Argument 1
+               LabelString     "Options"
+               MenuString      "Mainline Options"
+               ToolTip         "See xskak manual for possible options"
+               Font
+                       Color   latex
+                       Family  typewriter
+               EndFont
+       EndArgument
+       Argument post:1
+               LabelString     "Comment"
+               MenuString      "Comment"
+               LeftDelim       "<br/>"
+               RightDelim      "%"
+               Font
+                       Color   green
+               EndFont
+       EndArgument
+       Requires                xskak
+End
+
+InsetLayout Flex:Variation
+       CopyStyle               Flex:Mainline
+       LatexName               variation
+       LabelString             Variation
+End
+
+
+#
+# Chessboard additions
+#
+
+InsetLayout Flex:SetChessBoard
+       LyxType                 custom
+       Decoration              classic
+       LatexType               command
+       LatexName               setchessboard
+       LabelString             "Global Chessboard Settings"
+       Font
+               Color           latex
+               Family          typewriter
+       EndFont
+       LabelFont
+               Color           blue
+       EndFont
+       Requires                chessboard
+End
+
+
+InsetLayout Flex:SetBoardStoreStyle
+       CopyStyle               Flex:SetChessBoard
+       LabelString             "Set Chessboard Style"
+       Argument 1
+               Mandatory       true
+               LabelString     "Style Name"
+               MenuString      "Chessboard Style Name"
+               ToolTip         "Here you can store chessboard settings under a 
style name for later reuse. See chessboard manual for details."
+               AutoInsert      true
+               Decoration      conglomerate
+       EndArgument
+End
+
+
+InsetLayout Flex:ChessBoard
+       LyxType                 custom
+       Decoration              classic
+       LatexType               command
+       LatexType               command
+       LatexName               chessboard
+       LabelString             "Chessboard"
+       Argument 1
+               LabelString     "Options"
+               MenuString      "Chessboard Options"
+               ToolTip         "See chessboard manual for a comprehensive list 
of keys and values"
+               PassThru        1
+               Font
+                       Color   latex
+                       Family  typewriter
+               EndFont
+       EndArgument
+       Requires                chessboard
+End
+
diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp
index c78e735..eb31dba 100644
--- a/src/LaTeXFeatures.cpp
+++ b/src/LaTeXFeatures.cpp
@@ -999,7 +999,9 @@ char const * simplefeatures[] = {
        "tablefootnote",
        "afterpage",
        "tabularx",
-       "xltabular"
+       "xltabular",
+       "chessboard",
+       "xskak"
 };
 
 char const * bibliofeatures[] = {

Reply via email to