Kann man irgendwie eine Umgebung schaffen, in der zwischen allen Wörter der Wortzwischenraum \: gesetzt wird?

Öffne in Overleaf
\documentclass[border=5pt, varwidth]{standalone}
\usepackage{amsmath}
\begin{document}
Das ist ein Satz. \\
\text{Das\: ist\: ein\: Satz.}
\end{document}

gefragt 04 Nov, 15:20

cis's gravatar image

cis
8.3k16171267
Akzeptiert: 68%


Besser als Besser:

Im TeXbook wird deutlich, dass anstatt \fontdimen2 zu ändern, eher \spaceskip auf einen von 0pt verschiedenen Wert 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):

Öffne in Overleaf
\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:

Öffne in Overleaf
\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


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.

Öffne in Overleaf
\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

Permanenter link

beantwortet 04 Nov, 19:59

Skillmon's gravatar image

Skillmon
3714

bearbeitet 06 Nov, 13:48

2

Ich würde wahrscheinlich eher spaceskip ändern (aber der Kontext ist mir nicht ganz klar); https://tex.stackexchange.com/questions/99542/fixed-width-interword-space/99571#99571

(05 Nov, 06:10) Ulrike Fischer
1

@UlrikeFischer Der Kontext ist mir (ebenfalls) nicht bekannt. Die Regeln von \spaceskip waren mir bisher nicht bekannt (habe gerade im TeXbook nachgelesen), scheint, als wäre das tatsächlich die von Knuth vorgesehene Variante. Möchtest du eine Antwort erstellen, oder soll ich meine noch einmal abändern?

(05 Nov, 08:23) Skillmon

@Skillmon du kannst ruhig die Antwort ergänzen.

(05 Nov, 17:42) Ulrike Fischer
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×35
×33

Frage gestellt: 04 Nov, 15:20

Frage wurde angeschaut: 125 Mal

Zuletzt aktualisiert: 06 Nov, 13:48