统计单词的环境

统计单词的环境

我如何创建可以计算单词数的环境?更具体地说,我想编写一个名为“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}

字数统计示例

相关内容