![棋盘:创造并定位红王(新棋子)](https://linux22.com/image/444968/%E6%A3%8B%E7%9B%98%EF%BC%9A%E5%88%9B%E9%80%A0%E5%B9%B6%E5%AE%9A%E4%BD%8D%E7%BA%A2%E7%8E%8B%EF%BC%88%E6%96%B0%E6%A3%8B%E5%AD%90%EF%BC%89.png)
我需要一个红王中间的那个是黑色的王,但是颜色是红色的。他应该有自己的角色,比如“R”(如果可能的话)。
这通常是\char"2654
手册上介绍的是一种“硬核方法”,但对我来说不起作用。
我该怎么办?
% arara: lualatex
\documentclass[margin=5mm, varwidth]{standalone}
\usepackage{chessboard}
\usepackage{skak}
% chessboard.pdf, p. 73:
%\cbDefineNewPiece[〈game〉]{〈color〉}{〈char〉}{〈on white〉}{〈on black〉}
\makeatletter
\cbDefineNewPiece{black}{M}% I am not allowed to use R'
{\raisebox{\depth}{\cfss@whitepiececolor
\char"2654}}
{\BlackEmptySquare%
\makebox[0pt][r]{\cfss@whitepiececolor
\raisebox{\depth}{%
\makebox[1em]{\char"2654}}}}
\makeatother
\begin{document}
\setchessboard{showmover=false,
boardfontfamily={DejaVu Sans}% no effect....
}
\def\mylist{kd1, kd2, kd3, kd5, kd6, kd7,
Ka4, Kb4, Kc4, Ke4, Kf4, Kg4,
Md4% <------- !
}
\setchessboard{setpieces=\mylist}
\chessboard
\end{document}
答案1
默认情况下,新棋子将使用国际象棋字体,但您可以在定义中切换到普通文本字体或其他字体:
\documentclass[margin=5mm, varwidth]{standalone}
\usepackage{chessboard}
\usepackage{skak}
\usepackage{fontspec}
\setmainfont{DejaVu Sans}
% chessboard.pdf, p. 73:
%\cbDefineNewPiece[〈game〉]{〈color〉}{〈char〉}{〈on white〉}{〈on black〉}
\makeatletter
\cbDefineNewPiece{white}{m}% I am not allowed to use R'
{\raisebox{\depth}{\cfss@whitepiececolor\normalfont
\char"2654}}
{\BlackEmptySquare%
\makebox[0pt][r]{\cfss@whitepiececolor
\raisebox{\depth}{%
\makebox[1em]{\normalfont
\char"265A}}}}
\makeatother
\begin{document}
\setchessboard{showmover=false}
\def\mylist{kd1, kd2, kd3, kd5, kd6, kd7,
Ka4, Kb4, Kc4, Ke4, Kf4, Kg4,
md4% <------- !
}
\setchessboard{setpieces=\mylist}
\chessboard
\end{document}
新棋子必须有新名字,而 R 已被占用。我还建议坚持使用小写字母表示黑色棋子这一惯例。