Posted on 21 August 2013
A while ago I switched to XeLatex from Latex as it can do some amazing
things. One particularly cool thing is word counting from within the
document itself. This is great for paper abstracts! I got the code
from
here
(or possibly somewhere else with similar code – it was a while ago!)
and tweaked it a bit to produce my wordcounter
environment:
\usepackage{xesearch}
\usepackage{fontspec}
\newcounter{words}
\makeatletter
%% word counting environment
\newenvironment{wordcounter}{%
\endgroup
\setcounter{words}{0}%
\expandafter\ifx\csname wordcount@xs@searchlist\endcsname\relax
\let\wordcount@xs@searchlist\undefined
\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;}%
\else
\expandafter\StartSearching
\fi}{%
\StopSearching
\hspace*{\fill}
{word count: \arabic{words} words}%
\begingroup\expandafter\def\csname @currenvir\endcsname{wordcounter}%
}
\makeatother
Usage is very simple – just wrap the part of the document that needs
to be word-counted in the wordcounter
environment, and a message
will be inserted into the document after the text giving the word
count. For example
\begin{wordcounter}
blah blah blah blah blah
\end{wordcounter}