我如何创建可以计算单词数的环境?更具体地说,我想编写一个名为“assignment”的环境,以便代码
\begin{assignment}
Some words here.
\end{assignment}
将在文本中产生“此处有一些单词。”的结果,并且在边距段落中产生“3 个单词”。
我尝试搜索它,但只找到(外部)工具来计算整个文档中的单词数,而我需要使用 LaTeX 代码和单一环境(可能在文档中重复多次)来执行此操作。
答案1
那么如何计算空格数呢?这似乎更容易实现。
这是一个简单的工具。你可以改进它来处理更复杂的文本。
\documentclass{article}
\begingroup
\lccode`\~=`\ %
\lowercase{%
\gdef\assignment{\setcounter{word}{0}%
\catcode`~=\active
\def~{\space\stepcounter{word}}}}%
\endgroup
\newcounter{word}
\def\endassignment{\stepcounter{word}%
\marginpar{\arabic{word} words}}
\begin{document}
\begin{assignment}
Here are some words.
\end{assignment}
\end{document}
答案2
这是一个计算内部单词的环境。它使用xesearch
包,因此它需要 XeLaTeX。
搜索只在本地环境中进行,这就是它在内部定义的原因。
\documentclass{article}
\usepackage{xesearch}
\newcounter{words}
\newenvironment{assignment}{%
\setcounter{words}{0}
\SearchList!{wordcount}{\stepcounter{words}}
{a?,b?,c?,d?,e?,f?,g?,h?,i?,j?,k?,l?,m?,
n?,o?,p?,q?,r?,s?,t?,u?,v?,w?,x?,y?,z?}
\UndoBoundary{'}
\SearchOrder{p;}}{%
\StopSearching
\marginpar{\arabic{words} words}}
\begin{document}
\begin{assignment}
Here are a few words for a word count demonstration.
\end{assignment}
\end{document}