xskak 软件包:Fischerandomchess /Chess960 的王车易位

xskak 软件包:Fischerandomchess /Chess960 的王车易位

在 xskak 中,王车易位是“固定的”:王应位于 e1/e8​​,车应位于 a1h1/a8h8。在 Chess960(以某种方式在 1./8. 等级上洗牌)中,王车易位的目的方格与“普通国际象棋”中的完全相同(“普通国际象棋”是特定的 Chess960 位置...),但起始方格不同:王的方格位于 b1 和 g1 之间的任意位置,而车位于王的左侧(对于 0-0-0)和王的右侧(对于 0-0)。如何在 xskak 中将“从移动”和“移动”概括为 Chess960?移动可以保持不变,这种通用方法在“普通国际象棋”中可以很好地工作。

答案1

我上传了一个测试版本到https://github.com/u-fischer/xskak/tree/chess960。要使用它,请获取xskak.dtxxskak.ins,将它们放在某个文件夹中,然后运行pdflatex xskak.ins以解压xskak.sty。^

使用此版本,您可以为 chess960 和城堡设置王/车的位置。它没有经过太多测试。如果您发现问题,请在 github 站点添加问题。

  \documentclass{book}
   \usepackage{xskak} %development version 1.6!!
   \setchessboard{smallboard,showmover=false}

   \begin{document}
    \makeatletter
    % set start position of rook for xskak:

    \renewcommand\xskak@king@pos{c}
    \renewcommand\xskak@rookshort@pos{d}
    \renewcommand\xskak@rooklong@pos{b}

    % set start position of rook for skak:
    \def\CastleRookFromFile#1{#1{b}{d}}
    \newchessgame[setpieces={Kc1,Rd1,kc8,rd8}]
    \chessboard
    \mainline{1. O-O O-O}
    \chessboard

     \xskakset{moveid=1w}\xskakget{movefrom}--\xskakget{moveto}, \xskakset{moveid=1b}\xskakget{movefrom}--\xskakget{moveto}

    \newchessgame[setpieces={Kc1,Rb1,kc8,rb8}]
    \chessboard
    \mainline{1. O-O-O O-O-O}
    \chessboard

    \xskakset{moveid=1w}\xskakget{movefrom}--\xskakget{moveto}, \xskakset{moveid=1b}\xskakget{movefrom}--\xskakget{moveto}

    % set start position of rook:
    \renewcommand\xskak@rookshort@pos{h}
    \def\CastleRookFromFile#1{#1{b}{h}}

    \newchessgame[setpieces={Kc1,Rh1,kc8,rh8}]
    \chessboard
    \mainline{1. O-O O-O}
    \chessboard

    \xskakset{moveid=1w}\xskakget{movefrom}--\xskakget{moveto}, \xskakset{moveid=1b}\xskakget{movefrom}--\xskakget{moveto}

    \end{document}

在此处输入图片描述

相关内容