%%
%% The LaTeX Companion, 3ed
%%
%% Example A-1-13 on page II-640 in "Testing for optional argument values or optional tokens".
%%
%% Copyright (C) 2022 Frank Mittelbach
%%
%% It may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%%
%% See https://www.latex-project.org/lppl.txt for details.
%%

\documentclass{tlc3exa}
\pagestyle{empty}
\setcounter{page}{6}
\setlength\textwidth{123.0pt}

  \setlength\parindent{0pt}

%StartShownPreambleCommands
\NewDocumentCommand\foo{m!o}{\par #1:
   \IfNoValueTF{#2}{No optional}%
                   {\IfBlankTF{#2}{Blanks in or empty}%
                                  {Real content in}}%
                    \space argument!}
%StopShownPreambleCommands

\begin{document}
\foo{1}[bar] \foo{2}[  ] \foo{3}[] \foo{4}[\space] \foo{5} [x]
\end{document}
