看来这个网站上有一些知识渊博的 TeX 国际象棋包专家。
我需要制作非标准尺寸的棋盘(80 x 80 及更大),棋盘上密密麻麻地挤满了数百个棋子。哪个国际象棋软件包最适合这个?我心目中的理想软件包将允许我以数组形式指定棋盘和位置,由如下行组成:
\\ 问与答
但要大得多。这种格式可以避免计算每个棋子的坐标,还可以更灵活地更改棋盘,比如说,大块棋子需要相对于其他棋子进行平移。但当然,我会对任何能够生成大棋盘的软件包感到满意。
我正在使用 miktex,以防万一。
答案1
80x80 相当大 ;-)。chessboard
最多允许 26 个文件(文件按字母顺序“编号”,如果数字较大,这将很困难)。因此,chessboard
您必须使用多块板并将它们粘在一起。\chessboard
了解 FEN,但在这个尺寸下它相当慢:
\documentclass{article}
\usepackage{chessboard}
\setchessboard{maxfield=t40,
boardfontsize=8pt,
label=false,
showmover=false,
margin=false}
\begin{document}
\lineskip=0pt
\noindent
\chessboard[borderright=false,setfen=k1K3q5r/5pP]%
\chessboard[borderleft=false,setfen=k1K3q5r/5pP]%
\end{document}
如果您想要更快、更具体的输入语法,则必须编写解析器,将您的 P 转换为“PawnOnWhite”和“PawnOnBlack”。例如,沿着这条线(除了 key-val 命令 expl3 之外,还包含许多其他有用的命令,允许您解析标记列表):
\documentclass{report}
\usepackage{chessfss}
\usepackage{expl3}
\ExplSyntaxOn
\int_new:N \l_rank_int
\keys_define:nn {myboard}
{P .code:n =
{
\int_add:Nn \l_rank_int {1}
\int_if_odd:nTF{\l_rank_int}{\WhitePawnOnWhite}{\WhitePawnOnBlack}
},
p .code:n =
{
\int_add:Nn \l_rank_int {1}
\int_if_odd:nTF{\l_rank_int}{\BlackPawnOnWhite}{\BlackPawnOnBlack}
},
%% and so on
}
\newcommand\FileOdd[1]{\int_set:Nn\l_rank_int{0}\keys_set:nn{myboard}{#1}}
\newcommand\FileEven[1]{\int_set:Nn\l_rank_int{1}\keys_set:nn{myboard}{#1}}
\ExplSyntaxOff
\begin{document}
\lineskip=0pt
\parindent=0pt
\FileOdd{P,P,P,p,p,P,P,P,P}\\
\FileEven{P,P,P,P,p,p,P,P,P}\\
\end{document}