# Word count in XeLatex

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}