[Tex/LaTex] Undefined control sequence with xparse

errorslatex3xparse

I just installed the texlive-latex3 package and tried running pdflatex on the following (copied directly from another question posted here):

\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand {\dothings}
  { > { \SplitList { ~ } } m }
  { \tl_map_inline:nn {#1} { \fbox{##1} } }
\ExplSyntaxOff
\begin{document}
\dothings{Takes several words as argument}
\end{document}

But I'm getting an "Undefined control sequence" error. The same happens with any other code I copy that uses xparse. What am I doing wrong here? I've noticed that it says I'm using LaTeX2e. Could that be related to the issue?

This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian)
entering extended mode
(./test.tex
LaTeX2e <2009/09/24>
Babel <v3.8l> and hyphenation patterns for english, usenglishmax, dumylang, noh
yphenation, loaded.
(/usr/share/texmf-texlive/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/share/texmf-texlive/tex/latex/base/size10.clo))
(/usr/share/texmf-texlive/tex/latex/xpackages/xbase/xparse.sty
(/usr/share/texmf-texlive/tex/latex/expl3/l3names.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/expl3.sty
(/usr/share/texmf-texlive/tex/latex/expl3/l3basics.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3expan.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3tl.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3num.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3intexpr.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3quark.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3seq.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3toks.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3int.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3prg.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3clist.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3token.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3io.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3prop.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3msg.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3skip.sty))
(/usr/share/texmf-texlive/tex/latex/expl3/l3box.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3keyval.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3keys.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3precom.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3calc.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3xref.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3file.sty)) (./test.aux)
! Undefined control sequence.
\xparse_processor_1:n #1->\SplitList 
                                     { }{#1}
l.9 \dothings{Takes several words as argument}

?

Best Answer

While \lisfiles is often the best way to find out the exact version of a particular file or bundle of files that are being used, here it is clear that you are using a version of the LaTeX3 file bundle which is too old. The 'give-away' lines are

(/usr/share/texmf-texlive/tex/latex/expl3/l3num.sty)
(/usr/share/texmf-texlive/tex/latex/expl3/l3intexpr.sty)

as we no longer use l3num, and l3intexpr was integrated into l3int some time ago. More generally, the LaTeX3 code is being actively developed, and this means that new features are added as ideas appear. Answers using LaTeX3 ideas posted here will often need the latest release of the code to CTAN.

You will need to install updated versions of the two bundles l3kernel and l3packages in order to get the latest features. To do this, download the files l3kernel.tds.zip and l3packages.tds.zip files from CTAN. These should then be unzipped in your local TeX tree, usually ~/texmf. TeX should then find the updated files rather than the older ones in your managed TeX installation. (As you have TeX Live 2009, you should not need to run texhash to pick up these files, which was necessary with earlier versions of TeX Live.)