国际象棋:符号风格问题

国际象棋:符号风格问题

这是对第一个问题的后续问题这里

使用 Ulrike 的代码这里

\documentclass{article}

\usepackage{xskak}
\usepackage{expl3}

\makeatletter
\ExplSyntaxOn
\clist_const:Nn \c_svend_figlanguages_clist {@LSB , @LSBblack}

\cs_generate_variant:Nn \clist_if_in:NnTF {NxTF}

\newcommand*\bonde[1]
 {
 \clist_if_in:NxTF \c_svend_figlanguages_clist { \cfss@figlanguage }
   { \textsymfigsymbol {p} } { #1 }
 }
\ExplSyntaxOff
\makeatother

\usesymfig

\makeatletter
  \newcommand*\cfss@king@@LSBblack  {\raisebox{-0.31ex}{\setboardfontsize{\f@size}\BlackKingOnWhite}}
  \newcommand*\cfss@queen@@LSBblack {\raisebox{-0.37ex}{\setboardfontsize{\f@size}\BlackQueenOnWhite}}
  \newcommand*\cfss@rook@@LSBblack  {\raisebox{-0.26ex}{\setboardfontsize{\f@size}\BlackRookOnWhite}}
  \newcommand*\cfss@bishop@@LSBblack{\raisebox{-0.35ex}{\setboardfontsize{\f@size}\BlackBishopOnWhite}}
  \newcommand*\cfss@knight@@LSBblack{\raisebox{-0.30ex}{\setboardfontsize{\f@size}\BlackKnightOnWhite}}
  \newcommand*\cfss@pawn@@LSBblack  {\raisebox{-0.31ex}{\setboardfontsize{\f@size}\BlackPawnOnWhite}}

\newcommand\usesymfigblack{%
 \def\cfss@figlanguage{@LSBblack}}
\makeatother


\begin{document}

\usetextfig
\textsymfigsymbol{Q}, \bonde{e} --
\usesymfig
\textsymfigsymbol{Q}, \bonde{e} --
\usesymfigblack
\textsymfigsymbol{Q}, \bonde{e}

\footnotesize

\usetextfig
\textsymfigsymbol{Q}, \bonde{e} --
\usesymfig
\textsymfigsymbol{Q}, \bonde{e} --
\usesymfigblack
\textsymfigsymbol{Q}, \bonde{e}

\end{document}

我想\usetextfig在同时使用它们时切换到“否决” \usesymfigblack。我的意思是,如果我\usetextfig在序言中使用,并且

\usesymfigblack
\textsymfigsymbol{Q}, \bonde{e}

介于\begin{document}和之间\end{document},则输出应为Qe。原因是我使用\usesymfigblack在文档中使用了多次来通过小雕像表示黑色棋子,但我想在 和 之间进行全局切换代数符号和小雕像代数符号

我如何实现这个目标?

答案1

\documentclass{article}

\usepackage{xskak}
\usepackage{expl3}
\ExplSyntaxOn\makeatletter
\clist_const:Nn \c_svend_figlanguages_clist {@LSB , @LSBblack}

\cs_generate_variant:Nn \clist_if_in:NnTF {NxTF}

\newcommand*\bonde[1]
 {
 \clist_if_in:NxTF \c_svend_figlanguages_clist { \cfss@figlanguage }
   { \textsymfigsymbol {p} } { #1 }
 }


\ExplSyntaxOff\makeatother


\makeatletter
  \newcommand*\cfss@king@@LSBblack  {\raisebox{-0.31ex}{\setboardfontsize{\f@size}\BlackKingOnWhite}}
  \newcommand*\cfss@queen@@LSBblack {\raisebox{-0.37ex}{\setboardfontsize{\f@size}\BlackQueenOnWhite}}
  \newcommand*\cfss@rook@@LSBblack  {\raisebox{-0.26ex}{\setboardfontsize{\f@size}\BlackRookOnWhite}}
  \newcommand*\cfss@bishop@@LSBblack{\raisebox{-0.35ex}{\setboardfontsize{\f@size}\BlackBishopOnWhite}}
  \newcommand*\cfss@knight@@LSBblack{\raisebox{-0.30ex}{\setboardfontsize{\f@size}\BlackKnightOnWhite}}
  \newcommand*\cfss@pawn@@LSBblack  {\raisebox{-0.31ex}{\setboardfontsize{\f@size}\BlackPawnOnWhite}}

\newcommand\svendusefigurine{%
\def\svend@blacklanguage{@LSBblack}
\def\svend@whitelanguage{@LSB}}

\newcommand\svendusealgebraic{%
  \def\svend@blacklanguage{english}% change if needed
  \def\svend@whitelanguage{english}%
  }

\newcommand\svendusefigblack{%
 \def\cfss@figlanguage{\svend@blacklanguage}}
\newcommand\svendusefigwhite{%
 \def\cfss@figlanguage{\svend@whitelanguage}}

\newcommand\svendfigblack[1]{%
 \csname cfss@\csname cfss@input@#1@english\endcsname @\svend@blacklanguage\endcsname}

\newcommand\svendfigwhite[1]{%
 \csname cfss@\csname cfss@input@#1@english\endcsname @\svend@whitelanguage\endcsname}


\makeatother

\svendusealgebraic

\begin{document}

\svendusealgebraic
\svendusefigblack
\textsymfigsymbol{Q}, \bonde{e} --
\svendusefigwhite
\textsymfigsymbol{Q}, \bonde{e} --
\svendfigwhite{Q}, \svendfigblack{Q}

\svendusefigurine
\svendusefigblack
\textsymfigsymbol{Q}, \bonde{e} --
\svendusefigwhite
\textsymfigsymbol{Q}, \bonde{e} --
\svendfigwhite{Q}, \svendfigblack{Q}   

\end{document}

在此处输入图片描述

相关内容