\xskakloop 的最后一个棋盘图显示两次

\xskakloop 的最后一个棋盘图显示两次

第一张图是一道棋题的初始位置。

下列图表是在 内生成的\xskakloop。但是,最后一张图表打印了两次。

为什么?

顺便说一句,我想从初始位置开始循环。设置\xskakset{moveid=0b}无法完成这项工作。

在此处输入图片描述

以下是代码:

\documentclass{article}
\usepackage{a4}
\usepackage[german, ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[LSBC4,T1]{fontenc}
\usepackage{chessboard}
\usepackage{xskak}
\setboardfontencoding{LSBC4}
\newskaklanguage{german}{KDTLSB}
\skaklanguage[german]

\begin{document}

\styleB
\newchessgame[
    id=C,
    setfen=4k2r/1pp1p1p1/p3P2P/8/6P1/1B3P2/nR2P3/1K6,
    moveid=1w
]

\chessboard[smallboard]

\hidemoves{1. Ld5  Sb4 2. h6xg7 Th1#}

\noindent
\xskakset{moveid=1w}%
\xskakloop[step=1, showlast]{%
    \begin{tabular}{c}
        \chessboard[smallboard, setfen=\xskakget{nextfen}]
        \\
        \xskakget{opennr}\xskakget{lan}%
    \end{tabular}
}

\end{document}

答案1

初始位置应设置在循环之外。虽然理论上可以将其存储为nextfen从移动 0b 开始,但其他与移动相关的信息(如lan和棋盘下方的数字)则没有合理的意义。
无论如何,您都希望在初始棋盘下方有一些特殊(或没有)文本。

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[LSBC4,T1]{fontenc}
\usepackage{chessboard}
\usepackage{xskak}
\setboardfontencoding{LSBC4}
\newskaklanguage{german}{KDTLSB}
\skaklanguage[german]

\begin{document}

\styleB
\newchessgame[
    id=C,
    setfen=4k2r/1pp1p1p1/p3P2P/8/6P1/1B3P2/nR2P3/1K6,
    moveid=1w
]

\hidemoves{1. Ld5  Sb4 2. h6xg7 Th1#}

\noindent
\raggedright
\begin{tabular}{c}
        \chessboard[smallboard, setfen=\xskakgetgame{initfen}]
        \\
        Initial position
    \end{tabular}
\xskakloop[step=1]{%
    \begin{tabular}{c}
        \chessboard[smallboard, setfen=\xskakget{nextfen}]
        \\
        \xskakget{opennr}\xskakget{lan}%
    \end{tabular}
}

\end{document}

相关内容