用于排版包含数百个棋子的超大棋盘的最佳软件包

用于排版包含数百个棋子的超大棋盘的最佳软件包

看来这个网站上有一些知识渊博的 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}

相关内容