我正在尝试实现一个计数器,计算空格的数量,以便粗略估计一个段落中包含的单词数量。
为了做到这一点,我设置了一个新的计数器
\newcounter{spacenumber}
我希望它在每次\space
调用命令时都能向前迈进。
看着@egreg
的回答在这篇文章中:我可以重新定义一个命令来包含它自己吗?, 我写
\LetLtxMacro{\oldspace}{\space}
\renewcommand{\space}{\oldspace%
\stepcounter{spacenumber}
}
但目前还没有效果。
完整代码如下:
\documentclass{article}% it does NOT work
\usepackage{letltxmacro}
\newcounter{spacenumber}
\LetLtxMacro{\oldspace}{\space}
\renewcommand{\space}{\oldspace%
\stepcounter{spacenumber}%
}
\begin{document}
\setcounter{spacenumber}{0}
This is an example. \thespacenumber
\end{document}
我查看了该etoolbox
包,但仍然没有找到答案,因为我不知道它\space
是如何定义的。事实上,我得到了
> \space=macro:
-> .
问题是:我对整个计数器设置的理解是错误的吗?还是我对如何\space
重新定义的理解是错误的?
答案1
\documentclass{article}
\newcounter{spacenumber}
{\catcode`\ =\active\relax\gdef {\space\stepcounter{spacenumber}}}
\begin{document}
\begingroup
\setcounter{spacenumber}{0}
\obeyspaces%
This is an example. \thespacenumber
\endgroup
\end{document}
正如 egreg 所说,空格不会调用\space
命令,因此在您的示例中,数量spacenumber
显然为零。如果您希望空格调用,\space
则需要\obeyspaces
(谨慎使用)。