[texhax] texhax Digest, Vol 2006, Issue 163
Reinhard Kotucha
reinhard.kotucha at web.de
Tue May 16 22:50:22 CEST 2006
>>>>> "hgi" == hgi <hgi at shaw.ca> writes:
> I have a couple of other questions - one is about variables. How
> can I programatically determine the number of letters in a word?
> I'm hoping for something like (I'm making this up)
> $z=LetterCount{some words in here}. I would like to make some
> macros that could use this functionality.
\documentclass{minimal}
\newcounter{charcnt}
\makeatletter
\newcommand{\charcount}[1]{\setcounter{charcnt}{\z@}%
\@tforloop#1\@nil\@@\@tempa{\addtocounter{charcnt}{\@ne}}}
\makeatother
\begin{document}
\charcount{abc}\typeout{\thecharcnt}
\charcount{1234567}\typeout{\thecharcnt}
\charcount{12 34}\typeout{\thecharcnt}
\end{document}
To typeset the result, use \arabic{charcnt}.
Note that the macro counts tokens, not characters. Since a control
sequence name is one token, \charcount{180\textdegree} will return 4.
The macro \@tforloop is defined in the LaTeX sources, file ltcntrl.dtx.
The macros \makeatletter and \makeatother temporarily allow @ in
command sequence names. They have to be removed if you put the macro
definition into a .sty file.
\charcount doesn't work with \usepackage[utf8]{inputenc}. It returns
the number of bytes of multibyte characters. But if you need Unicode
you can try Omega or Aleph instead of TeX.
Regards,
Reinhard
--
----------------------------------------------------------------------------
Reinhard Kotucha Phone: +49-511-4592165
Marschnerstr. 25
D-30167 Hannover mailto:reinhard.kotucha at web.de
----------------------------------------------------------------------------
Microsoft isn't the answer. Microsoft is the question, and the answer is NO.
----------------------------------------------------------------------------
More information about the texhax
mailing list