xskak 手册第 36 页 - 打印动作下方的图表

xskak 手册第 36 页 - 打印动作下方的图表

昨晚我看到一本德国象棋书,每 5 步后都会出现一张图。先显示前 5 步,然后是一张图。

根据 Ulrike Fischer 的反馈,我添加了她的代码。当我将手册与我的手册进行比较时,结果有所不同。

知道为什么吗?有没有更好的方法?这是重复 3 次的相同过程。我可以循环执行吗?

\documentclass{article}
\usepackage{skak, xskak,chessboard}
\begin{document}
\newchessgame

\hidemoves{
1.e4 e5 2.Nf3 d6 3.d4 Bg4 4.dxe5 Bxf3 5.Qxf3 dxe5 6.Bc4 Nf6 7.Qb3 Qe7 8.Nc3 c6 9.Bg5 b5 10.Nxb5 cxb5 11.Bxb5+ Nbd7 12.O-O-O Rd8 13.Rxd7 Rxd7 14.Rd1 Qe6 15.Bxd7+ Nxd7 16.Qb8+ Nxb8 17.Rd8#}
\\
% *** how to print out diagram at certain number move pg 36?
\noindent
\xskakloop[step=10,showlast]{%
\begin{tabular}{c}
\chessboard[tinyboard,
setfen=\xskakget{nextfen}]
\\
\xskakget{opennr}\xskakget{lan}%
\end{tabular}\quad}%
\\

% *** how to put diagram under each of these set of moves?
\printchessgame[style=UF,level=1,initmoveid=1w,stopmoveid=5b]

\xskakset{moveid=5b}\chessboard[smallboard,setfen=\xskakget{nextfen}]

\printchessgame[style=UF,level=1,initmoveid=6w,stopmoveid=10b]

\xskakset{moveid=10w}\chessboard[smallboard,setfen=\xskakget{nextfen}]

\printchessgame[style=UF,level=1,initmoveid=11w,stopmoveid=15b]

\xskakset{moveid=15b}\chessboard[smallboard,setfen=\xskakget{nextfen}]

\printchessgame[style=UF,level=1,initmoveid=16w,stopmoveid=17w]

\xskakset{moveid=17w}\chessboard[smallboard,setfen=\xskakget{nextfen}]


\end{document}

答案1

如果有重复,您可以随时构建循环。除了内置的 \xskakloop 命令之外,您还可以使用 tex 包提供的所有其他循环命令。下面是一个带有 \foreach 循环的示例。

\documentclass{article}
\usepackage{xskak}
\begin{document}
\newchessgame

\hidemoves{
1.e4 e5 2.Nf3 d6 3.d4 Bg4 4.dxe5 Bxf3 5.Qxf3 dxe5 6.Bc4 Nf6 7.Qb3 Qe7 8.Nc3 c6 9.Bg5 b5 10.Nxb5 cxb5 11.Bxb5+ Nbd7 12.O-O-O Rd8 13.Rxd7 Rxd7 14.Rd1 Qe6 15.Bxd7+ Nxd7 16.Qb8+ Nxb8 17.Rd8#}

% *** how to put diagram under each of these set of moves?
\foreach \x/\y in {1w/5b,6w/10b,11w/15b,16w/17w}
{
 \par
 \printchessgame[style=UF,level=1,initmoveid=\x,stopmoveid=\y]
 \par
 \xskakset{moveid=\y}\chessboard[smallboard,setfen=\xskakget{nextfen}]
} 


\end{document}

相关内容