我正在尝试为 \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}