# Besser als Besser:
Im TeXbook wird deutlich, dass anstatt `\fontdimen2` zu ändern, eher `\spaceskip` auf einen von 0pt verschiedenen Wert setzen gesetzt werden sollte (danke Ulrike für den Hinweis darauf). Das Folgende setzt also `\spaceskip` auf den veränderten Wert (aber mit den Font eigenen Stretch und Shrink Faktoren):
    \documentclass[preview,border=2mm]{standalone}
    \newcommand\SpreadSpace[1]
      {%
        \begingroup
        \setbox0\hbox{$\:$ \hbox{}}%
        \spaceskip\wd0 plus \fontdimen3\font minus \fontdimen4\font
        #1%
        \endgroup
      }
    \newcommand\ExpandableText{This is text}
    \begin{document}
    This is text\par
    \SpreadSpace{This is text}\par
    \SpreadSpace{\ExpandableText}
    \end{document}
(Ausgabe wie unten)
----
# Besser als das Original:
Der Abstand zwischen zwei Wörtern wird in `\fontdimen2` gespeichert. Man kann diese Größe durchaus ändern:
    \documentclass[preview,border=2mm]{standalone}
    \newdimen\CisTmpDimen
    \newcommand\SpreadSpace[1]
      {%
        \begingroup % the group is only necessary because of the \setbox0 thingy
        \setbox0\hbox{$\:$ \hbox{}}%
        \CisTmpDimen=\fontdimen2\font % changes are made global, we have to manually revert them
        \fontdimen2\font=\wd0
        #1%
        \fontdimen2\font=\CisTmpDimen
        \endgroup
      }
    \newcommand\ExpandableText{This is text}
    \begin{document}
    This is text\par
    \SpreadSpace{This is text}\par
    \SpreadSpace{\ExpandableText}
    \end{document}
[![alt text][1]][1]
------
# Originalantwort:
Eine primitive Lösung wäre das Ersetzen aller gewöhnlichen Leerzeichen durch `\: `, dies wäre mit Hilfe von `expl3` mit folgendem Code möglich. Das Makro kann gesternt verwendet werden, in diesem Fall wird das Argument vollständig expandiert (wie bei einem `\edef`), bevor die Ersetzung durchgeführt wird.
    \documentclass[preview,border=2mm]{standalone}
    \usepackage{xparse}
    \ExplSyntaxOn
    \tl_new:N \l_cis_tmp_tl
    \NewDocumentCommand \SpreadSpace { s m }
      {
        \IfBooleanTF { #1 }
          { \tl_set:Nx \l_cis_tmp_tl { #2 } }
          { \tl_set:Nn \l_cis_tmp_tl { #2 } }
        \tl_replace_all:Nnn \l_cis_tmp_tl { ~ } { \ensuremath { \: } ~ }
        \l_cis_tmp_tl
      }
    \ExplSyntaxOff
    \newcommand\ExpandableText{This is text}
    \begin{document}
    This is text\par
    \SpreadSpace{This is text}\par
    \SpreadSpace{\ExpandableText}\par
    \SpreadSpace*{\ExpandableText}
    \end{document}
[![alt text][2]][3]
  [1]: https://texwelt.de/wissen/upfiles/spacespread-1_1.png
  [2]: https://texwelt.de/wissen/upfiles/spacespread-1.png
  [3]: https://texwelt.de/wissen/upfiles/spacespread-1.png