在 xskak 包中为 \xskakcomment 创建别名

在 xskak 包中为 \xskakcomment 创建别名

我正在尝试为 \xskakcomment 创建一个别名以节省输入。

梅威瑟:

\documentclass{article}
\usepackage{xskak}

\let\skakcom=\xskakcomment

\begin{document}

\newchessgame

\mainline{1.e4 \skakcom{Great move.} e5}  % this fails

\skakcom{Another great move.}  % this works

\end{document}

将注释放在主线内会导致错误,尽管它在主线之外可以工作。

这是为什么?有没有办法创建别名?

谢谢。

答案1

代码测试实际的字符串。这是硬编码的。您可以修补它,但原始代码\xskakcomment将不再起作用:

\documentclass{article}
\usepackage{xskak}
\usepackage{xpatch}
\let\skakcom=\xskakcomment
\makeatletter
\def\xskak@test@comment#1=\skakcom#2=={%
       \def\@tempa{#1}%
       \ifx\@tempa\@empty%#1 beginnt mit \xskakcomment
        \setboolean{xskakboolcomment}{true}%
       \else
        \setboolean{xskakboolcomment}{false}%
       \fi}
\patchcmd\xskak@do@parsemainline{\xskakcomment}{\skakcom}{}{\fail}
\let\Mainline\xskak@do@parsemainline
\makeatother

\begin{document}

\newchessgame

\mainline{1.e4 \skakcom{ Great move.} e5}  % this fails

\skakcom{Another great move.}  % this works

\end{document}

相关内容