编辑

编辑

我无论如何也想不出一个合适的方法来处理神经氨酸酶(数字注释字形)和/或带有的国际象棋线人符号xskak

我正在编写一份文档,其中要处理很多变化,因此我大部分时间都远离并将所有内容放在\newchessgames中。\mainline\variation{}

\documentclass{article}
\usepackage{xskak,mathtools,xspace}

\def\invar#1{{\variation[invar]{#1}}}
\def\onlymovesymbol{\ensuremath{\square}}
\def\onlymove{\xskakcomment{\onlymovesymbol}\xspace}
\def\onlymoveNAG{$7}%$ stop highlighting, Emacs+AUCTeX!

\begin{document}
\variation{1.e4 e5 2.Nf3 Nc6 3.Bc4 Nf6 4.Ng5 d5\onlymove 5.Nxe4}

\variation{%
  1.e4 e5 2.Nf3 Nc6 3.Bc4 Bc5 4.c3 Nf6 5.d4 exd4 6.cxd4 Bb4+ 7.Nc3 Nxe4 
  8.O-O Nxc3 9.bxc3 d5} 
\iffalse %This doesn't even compile:
  \invar{9... Bxc3 10.Qb3 d5\onlymove 11.Bxd5 O-O} 
\fi
\end{document}

如果编译它,正方形会出现在第一个变体中,但是打印的“5 Nxe4”没有“N”的小雕像。

我是否正确地假设 NAG 仅当 xskak 实际解析动作时(即仅使用\mainline{})才起作用?

如果是这样的话,我看不出我怎么会不必使用\xskakcomment。我知道我在做某物错了,但我无论如何也想不出该如何做到这一点。

PS:对于那些使用 Emacs + AUCTeX 并通过搜索找到此问题的人。查看以 开头的选项LaTeX-verbatim。如果您想使用 NAG 而不让 AUCTeX 将数学模式的颜色洒满整个缓冲区,您可以考虑将和\mainline添加到带有分隔符的逐字宏列表中。\variation[invar]\variation[outvar]

答案1

您失去了移动的轮廓,因为 (x)skak 需要看到移动之间的空间,但您的命令却吞噬了它。使用括号来防止这种情况,或者使用 $7 代替命令:

\documentclass{article}
\usepackage{xskak}

\begin{document}
\variation{1.e4 $1  e5 $2 2.Nf3 Nc6 3.Bc4 $7 Nf6 4.Ng5 d5\onlymove{} 5.Nxe4}
\end{document}

在此处输入图片描述

编辑

skak 更改 catcodes。因此,在完成此操作之前,您不应读取该参数。\invar像这样定义您的:

  \def\invar{\variation[invar]}

并且自然地在后面添加括号\onlymove

相关内容