LaTeX で Chess Problem の図を作る 続

diagram という package で、chess problem の図を作ろうと少しやってみた。
『Seven is the Limit Miniature Chess Problems Niharendu Sikda 1989 という本。詰将棋にも、同じような題名の有名な本がある。 
20220316_A.jpg
で、10図入力してみたところで、投了。ドイツ仕様で、駒を入力するのが、思いのほか大変だった。こんな駒数なのに、、。

ま、慣れた xskak に戻り、19世紀の雑誌から入力してみる。
20220316_B.jpg
この位の駒数でも、入力にストレスは無い。FEN を詰将棋用にアレンジしたのが suiho 形式だから、当たり前なのだが。ちょっと、マクロを書いてコンパクトに書けるようにしたソースの主要部分は以下の通りだ。
\Diagram{W. GRIMSHAW}{2b1B1K1/1p1p4/1P6/5R2/2p1N1R1/8/2Pp1pNB/3n1k2}{\#3}
\Diagram{C. CALLANDER}{8/2Nb4/1Kp3p1/Q5P1/3k1Np1/3Bp1R1/nR1pp3/b1rr2q1}{\#4}
\Diagram{J. PERCE, M.A.}{8/3p4/2p1p3/3k4/3BN3/2P3K1/3PQ3/7N}{\#3}
\Diagram{W. COATES}{3K4/4Pp2/1pR5/1Prkr1P1/4pb2/5b2/NP2P1RN/2n1Q3}{\#4}
\Diagram{A. CYRIL PEARSON}{5N2/2p2Pp1/2P2kB1/1N1p4/1B1K4/7P/8/8}{\#3}
\Diagram{J. W. ABBOTT}{rN2n3/5R2/pN2pp1P/n3k3/P2p1pQP/5B2/1BP3K1/qr4b1}{\#4}
\Diagram{C.W. \textsc{of Sunbury}}{7Q/8/8/4p1K1/5pp1/6k1/2N2qPN/3B2b1}{\#4}
\Diagram{H. E. KIDSON}{8/4N2B/8/1p6/bRn2k1B/1p5P/1Q2PP2/n1K1N3}{\#5}

ちなみに、書いたマクロは以下の通り。tabular 環境を使い、揃えている。

\newcounter{DIAcounter}
\setcounter{DIAcounter}{0}
\newcommand{\Diagram}[3]{%begin of \Diagram
\stepcounter{DIAcounter}
\begin{tabular}{c}
\textbf{No. \theDIAcounter}\\
#1\\
\chessboard[setfen=#2]\\
#3 \hfill \
\end{tabular}
}%end of \Diagram

LaTeX で Chess Problem の図を作る

さて、しばらくxskak での chess の表示を研究していたが、余の中には、より特化したものがある。

それは、 Chess Problem の図面を簡便に表示するものだ。

20220313B.jpg

このような図が、以下のような簡単なソースで表示できるのだった!。diagram は TeX Live! などには、インストール済だ。

\documentclass{book} 
\usepackage{diagram}

\begin{document}

\small

\diagnum[F]{1233}
\begin{diagram}
\author{Kapros, Jorge}
\source{Problem Paradise} \year{2021}\issue{Issue 96}
\pieces{wDUc8a5, wLa7, wKb7, wSUa6, sKd5, sTe3, sLg3, sDUh2e1}
\stip{H\#2 2 Sols Grasshoppers 2+2 Nightriders 1+0 }
\Co{+}
\end{diagram}

\end{document}

駒の記号は KQRBNP では無く KDTLSB という ドイツ仕様だ。変更する方法もあるらしいので、試したがポーンの変更が上手くいってない。まだ研究し始めたばかりなのでよく解らない。

LaTeX で Chess の駒を使う

xskak(skak)は内部ではchessboard という package を使っているのだったが、chessboard は更に chessfss というpackage を使っているようだった。
3週間位かかって、ようやく 3 層目のダンジョンまで潜ったのだった。chessfss はフォントがインストールされていれば、使わなくても済むようだが、LaTeX のフォントのホントに「深い沼がある。理解するのは、諦めた。
xskak、chessboard、chessfss で定義されている駒のフォントは 2 種類あって、文章内で使うもの(figurine font)と、盤面用のもの(board font)。

20220309a.jpg

board font は真四角で、 \Huge \Large などの影響を受けないで、大きさは一定。

左の盤面は figurine font を使ったもの。データ的には K Q B  N R P を使っているのと同じだ。白駒しか定義されていない。

右の盤面は board fontを使ったもの。大きさを変えるには

\setboardfontsize{5mm}

という命令を使う。データは 黒地黒駒 黒地白駒 白地黒駒 白地地白駒 の別とその他に黑地無駒 白地無駒 がそれぞれ、英字 に割り当てられている。  

ソースは将棋世界の図面擬を作った時のモノの使い回し。プレアンブルの頭は、、

%% Typeset LuaLaTeX 文字コード UTF-8 ltjsarticle で日本語
\documentclass{ltjsarticle} 
\usepackage{chessfss}
\usepackage{tikz}

とシンプル。 ソースの主要部分は 

\Huge  \BlackKingOnWhite \BlackEmptySquare \king 王 \queen 后 \bishop 僧 \knight 騎 \rook 城

\Large \BlackQueenOnWhite \BlackEmptySquare \king 王 \queen 后 \bishop 僧 \knight 騎 \rook 城 

\large \WhiteQueenOnWhite \BlackEmptySquare \king 王 \queen 后 \bishop 僧 \knight 騎 \rook 城 

\normalsize \WhiteKingOnWhite \BlackEmptySquare \king 王 \queen 后 \bishop 僧 \knight 騎 \rook 城 

\setboardfontsize{5mm}
\begin{図面}
\後手{1}{1}{香}
\後手{2}{1}{\knight}
\後手{3}{1}{銀}
\後手{4}{1}{金}
\後手{5}{1}{\king}
\後手{6}{1}{\queen}
\後手{2}{2}{\bishop}
\後手{8}{2}{\rook}
\後手{5}{3}{\pawn}
\先手{1}{9}{香}
\先手{2}{9}{\knight}
\先手{3}{9}{銀}
\先手{4}{9}{金}
\先手{5}{9}{\king}
\先手{6}{9}{\queen}
\先手{8}{8}{\bishop}
\先手{2}{8}{\rook}
\先手{5}{7}{\pawn}
\持駒Chess{\pawn}
\end{図面}
\begin{図面}
\後手{1}{1}{香}
\後手{2}{1}{\BlackKnightOnWhite}
\後手{3}{1}{銀}
\後手{4}{1}{金}
\後手{5}{1}{\BlackKingOnWhite}
\後手{6}{1}{\BlackQueenOnWhite}
\後手{2}{2}{\BlackBishopOnWhite}
\後手{8}{2}{\BlackRookOnWhite}
\後手{5}{3}{\BlackPawnOnWhite}
\先手{1}{9}{香}
\先手{2}{9}{\WhiteKnightOnWhite}
\先手{3}{9}{銀}
\先手{4}{9}{金}
\先手{5}{9}{\WhiteKingOnWhite}
\先手{6}{9}{\WhiteQueenOnWhite}
\先手{8}{8}{\WhiteBishopOnWhite}
\先手{2}{8}{\WhiteRookOnWhite}
\先手{5}{7}{\WhitePawnOnWhite}
\持駒Chess{\WhitePawnOnWhite}
\end{図面}

LaTeX で Chess の図面

さて、LaTeX で Chess の図面を作ることの基本的な事は出来たのだが、それからがムズイ。
下の画像は 'Pawn Endings' Yuri Averbakh, I.Maizelis (1974) Batsford である。
図中に記号があり、また部分図なのだった。手順は昔懐かしいタイプである、こちらで覚えた所為か今の座標タイプはまだ馴染めていなかったりする。それはさておき…
PawnEndings003.jpg
何回かトライしても図中の記号が出ないのだった。マニュアルを数回読んだところで、 xskak(skak)は内部ではchessboard という package を使っているのが解った。ということは、手順解析までしなければ chessboard だけでも、図面が表示出来るのだった。ということで、 chessboard のマニュアルも数回読んだけども、進展はなかった。
困ったときは Net 検索。情報も少ないし殆どが英語でよく解らん。載っているソースを copy して使ってみても思わしくないので、諦めかけたときにふと…

\documentclass[9pt,a4j,english,twocolumn]{jsbook}

として、pLaTeX を使っていたのだが、LuaLaTeX を使ってみた。jsbook.sty との相性が悪いみたいなので、違ったスタイル ltjsarticle.sty を使ってみたら、うまく行ったのだった。プレアンブルの最初の部分は

\documentclass[9pt]{ltjsarticle}
\usepackage[margin=2cm]{geometry}
\usepackage{chessboard}

という、スッキリしたものになった。 いろいろ package を読み込んでいたのがウソみたいだった。ファイルは Shift-Jis ではなく UTF-8 でセーブする。(英語だけだったら、バイナリーでも同じファイル内容になるようだ。)0307_B.jpg
図面表示部分のソースは、以下の通り。

\setchessboard{%
showmover=false,
label=false,
marginwidth=0.5em,
pgfstyle=bottomlefttopborder,
markregion=a1-d8
}

\raisebox{16em}{1 +/=}%
\chessboard[
setfen=2k5/8/1KP5,
printarea=a1-d8,
pgfstyle=cross,
shortenstart=0.7ex,
shortenend=0.7ex,
markfields={b7,d7}
]
\raisebox{16em}{2}%
\chessboard[
setfen=2k5/8/2K5/2P5,
printarea=a1-d8,
pgfstyle=cross,
shortenstart=0.7ex,
shortenend=0.7ex,
markfields={b7,d7}
]

いろいろと面白い事も出来るようになったが、まだまだ奥が深いのだった。PDF は ホームにアップした