第一张图是一道棋题的初始位置。
下列图表是在 内生成的\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}