Xskak,命令 \setfen[]: 没有更新板

Xskak,命令 \setfen[]: 没有更新板

我有以下用以下方式创建的单人国际象棋示例\setfen[]

\documentclass[runningheads]{llncs}
\usepackage{xskak, longtable} % Schach
\usepackage{chessboard}
\begin{document}
\setchessboard{smallboard,showmover=false,}
\begin{longtable}{p{0.45\textwidth}p{0.45\textwidth}}
    \newgame
    \mainline{1.Nd5 Bd5} \chessboard[setfen=8/8/8/3p4/1N2r3/8/b5N1/8/]
    &
    \mainline{2.Ne4 Be4} 
    \chessboard
\end{longtable}
\end{document}

第二盘棋的输出只是一个新游戏的普通棋盘,因此它不会更新动作。 输出

我做错什么了吗?

我还有一个问题,我可以在每次移动颜色后显示棋盘吗?所以白棋移动,显示棋盘,黑棋移动,显示棋盘.... 当\mainline{}只移动一步时,我会收到错误。

答案1

嗯,一开始你没有用 设置位置\chessboard,那只是打印它。你应该使用\newchessgame

其次,你必须意识到skak执行这些动作的底层程序包对国际象棋规则有一些概念。如果你做出违反规则的动作(例如,一个黑棋子可以吃掉另一个黑棋子),它不一定会抱怨,但如果你违背它的假设,结果位置有时会有点令人惊讶。

例如,在下面的第一局游戏中,Nd5 的移动可以正确执行,但在第二局游戏中却不行。这看起来很奇怪,但原因是棋盘上没有王(这违反了国际象棋的移动规则),因此代码假设白王位于起始位置 (e1)。这意味着黑车将军,骑士不允许移动。

\documentclass{article}
\usepackage{xskak}
\begin{document}
\setchessboard{smallboard,showmover=false,}
 \newchessgame[setfen=8/8/8/3p4/1N3r2/8/b5N1/8]
 \chessboard
 \mainline{1. Nd5}
 \chessboard 

 \newchessgame[setfen=8/8/8/3p4/1N2r3/8/b5N1/8]
 \chessboard
 \mainline{1. Nd5}
 \chessboard 

\end{document}

在此处输入图片描述

相关内容