Wie kann ich die *Hälfte* eines Wortsprungs sauber/effizient einfügen?

Wie kann ich die *Hälfte* eines Wortsprungs sauber/effizient einfügen?

Die Frage im Titel ist eindeutig: Gibt es einen einfacheren Weg, dies zu tun (oder zumindest einen, der tatsächlichWerke?

Beim Umgang mit Geviertstrichen (—) habe ich gelesen, dass es wichtig ist, einen kleinen Abstand zwischen dem Strich und dem Text einzuhalten, den er trennt. Ich schätze, es ist ein halber Abstand zwischen zwei Wörtern, was auch immer das sein mag. (Ich könnte es je nach Bedarf auf 2/3 ändern, aber das ist für die Kernfrage irrelevant.)

Bei idealem Wortabstand ist es empfehlenswert (obwohl ich mich nicht erinnern kann,Wo), dass dieser Abstand ein ist \thinspace. (Versuchen this---separationvs. this --- separation– sieht beides nicht besonders gut aus.) Wie Sie jedoch im (übertriebenen) Screenshot unten sehen können, kann dies zu visuellen Inkonsistenzen führen (besonders auffällig in der ersten Zeile des zweiten Absatzes). (Mir ist klar, dass dies auch von der verwendeten Schriftart beeinflusst wird.)

Original-Screenshot des Problems

Mein Versuch, dieses Problem zu beheben:

\documentclass{article}

\newlength\halfinterwordspace
\newsavebox\interwordspace

\newcommand\Dash{%
  \savebox\interwordspace{\ }
  \setlength\halfinterwordspace{.5\wd\interwordspace}
  \typeout{\the\halfinterwordspace}
%
  \unskip                       % remove all previous skips
  \hspace* \halfinterwordspace  % unbreakable half-interword space
  \textemdash                   % dash, equivalent to "---"
  \hspace \halfinterwordspace   % breakable half-interword space
  % ^ also plays nice with microtype protrusion; see q/163116
}

% Uncomment to see the problem I am ultimately trying to fix.
% \def\Dash{\unskip\thinspace\textemdash\thinspace}

\sloppy
\hyphenpenalty=10000

\begin{document}
Lorem ipsum dolor sit amet \Dash consectetur adipiscing elit.  Fusce
pharetra velit in sem congue \Dash quis malesuada lectus
vulputate. Quisque eu scelerisque nunc. Nam at dui eget metus
ullamcorper rutrum quis et tellus.  Interdum et malesuada fames ac
ante ipsum primis in faucibus. Donec vitae augue vel nisi sollicitudin
tempus.  Nam neque sapien \Dash ullamcorper vitae sapien at \Dash
volutpat cursus nisi.  Nullam lorem ante \Dash fermentum sit amet
fermentum et \Dash rhoncus id ligula.  Pellentesque habitant morbi
tristique senectus et netus et malesuada fames ac turpis egestas.
Integer congue \Dash sem eu tincidunt pharetra \Dash mi nunc accumsan
neque \Dash in auctor elit eros eget eros. Vestibulum quis varius
lectus.

Curabitur faucibus \Dash feugiat porttitor.  Lorem ipsum dolor sit
amet \Dash consectetur adipiscing elit.  Vestibulum elementum ipsum id
nisl accumsan \Dash sed rutrum sapien tincidunt.  Cras sodales
sagittis neque vitae sollicitudin. Mauris at viverra quam. In nec
interdum diam \Dash ut ultrices velit. Nulla dapibus vulputate
luctus. Etiam vel faucibus augue \Dash ut aliquet massa. Vivamus eu
nunc at velit varius volutpat at eget eros.  Nulla at justo quis quam
sagittis aliquam eget in tellus.  Nunc est sem \Dash congue et tempus
a \Dash aliquet et nibh.  Sed malesuada \Dash nisi eu placerat porta
\Dash orci augue pellentesque ante \Dash ac sollicitudin urna nunc sit
amet tellus. Curabitur hendrerit et enim non vehicula. Donec in nibh
fringilla \Dash sodales arcu eu \Dash hendrerit massa.
\end{document}

Ergebnis:

Screenshot-Versuch

Antwort1

Der normale Wortzwischenraum für die aktuelle Schriftart ist verfügbar als

\fontdimen2\font

Sie liegen falsch, wenn Sie es \hspace*als „nicht unterbrechenden Raum“ betrachten: Es ist ein „nicht verschwindender Raum“.

Hier sind zwei ziemlich ähnliche Definitionen für Ihr \Dash:

\documentclass{article}

\newcommand\Dash{%
  \leavevmode
  \unskip\nobreak\hspace{.5\fontdimen2\font}%
  \textemdash
  \hspace{.5\fontdimen2\font}%
}

\sloppy
\hyphenpenalty=10000

\begin{document}
Lorem ipsum dolor sit amet \Dash consectetur adipiscing elit.  Fusce
pharetra velit in sem congue \Dash quis malesuada lectus
vulputate. Quisque eu scelerisque nunc. Nam at dui eget metus
ullamcorper rutrum quis et tellus.  Interdum et malesuada fames ac
ante ipsum primis in faucibus. Donec vitae augue vel nisi sollicitudin
tempus.  Nam neque sapien \Dash ullamcorper vitae sapien at \Dash
volutpat cursus nisi.  Nullam lorem ante \Dash fermentum sit amet
fermentum et \Dash rhoncus id ligula.  Pellentesque habitant morbi
tristique senectus et netus et malesuada fames ac turpis egestas.
Integer congue \Dash sem eu tincidunt pharetra \Dash mi nunc accumsan
neque \Dash in auctor elit eros eget eros. Vestibulum quis varius
lectus.

\renewcommand\Dash{%
   \leavevmode\unskip
   \thinspace\textemdash
   \allowbreak\thinspace}

Lorem ipsum dolor sit amet \Dash consectetur adipiscing elit.  Fusce
pharetra velit in sem congue \Dash quis malesuada lectus
vulputate. Quisque eu scelerisque nunc. Nam at dui eget metus
ullamcorper rutrum quis et tellus.  Interdum et malesuada fames ac
ante ipsum primis in faucibus. Donec vitae augue vel nisi sollicitudin
tempus.  Nam neque sapien \Dash ullamcorper vitae sapien at \Dash
volutpat cursus nisi.  Nullam lorem ante \Dash fermentum sit amet
fermentum et \Dash rhoncus id ligula.  Pellentesque habitant morbi
tristique senectus et netus et malesuada fames ac turpis egestas.
Integer congue \Dash sem eu tincidunt pharetra \Dash mi nunc accumsan
neque \Dash in auctor elit eros eget eros. Vestibulum quis varius
lectus.

\end{document}

Zu beachtende Punkte:

  1. Mit \nobreak\hspace{...}setzen wir ein geschütztes Leerzeichen

  2. Ein Kernel (und \thinspaceist einer) kann nicht als Zeilenumbruchpunkt verwendet werden, sofern ihm kein Kleber folgt; eine Strafe ist ein möglicher Zeilenumbruchpunkt und \allowbreakfügt einfach eine Null-Strafe hinzu.

  3. Der normale Wortabstand für die Schriftart Computer Modern in der Größe 10 pt beträgt 3,33 pt; ein dünner Leerraum beträgt 0,16667em und ein Geviert 10 pt, sodass ein dünner Leerraum (zumindest bei dieser Schriftartenkonfiguration) am Ende dasselbe ist wie ein halber Leerraum.

Bildbeschreibung hier eingeben

Wenn Sie den Raum um den Geviertstrich herum flexibler gestalten möchten, dann

\newcommand\Dash{%
  \leavevmode\unskip\nobreak
  \hspace{\halfspace}%
  \textemdash
  \hspace{\halfspace}%
}
\newcommand{\halfspace}{%
  .5\fontdimen2\font plus .5\fontdimen3\font minus .5\fontdimen4\font
}

Wir nutzen die Tatsache, dass \fontdimen3und \fontdimen4die Standard-Dehnbarkeit und -Schrumpfbarkeit des Wortzwischenraums enthalten.

SehenWas bedeuten unterschiedliche \fontdimen<num>für eine Liste der \fontdimenBedeutung der Parameter.

verwandte Informationen