![用于排版包含数百个棋子的超大棋盘的最佳软件包](https://linux22.com/image/240019/%E7%94%A8%E4%BA%8E%E6%8E%92%E7%89%88%E5%8C%85%E5%90%AB%E6%95%B0%E7%99%BE%E4%B8%AA%E6%A3%8B%E5%AD%90%E7%9A%84%E8%B6%85%E5%A4%A7%E6%A3%8B%E7%9B%98%E7%9A%84%E6%9C%80%E4%BD%B3%E8%BD%AF%E4%BB%B6%E5%8C%85.png)
看来这个网站上有一些知识渊博的 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}