Wie werden bei deutschen Abkürzungen die Strafe und die Breite des internen Raums einschließlich der Dehnungs- und Schrumpfungsattribute festgelegt?

Wie werden bei deutschen Abkürzungen die Strafe und die Breite des internen Raums einschließlich der Dehnungs- und Schrumpfungsattribute festgelegt?

Auch weiterhinSo beschriften Sie Leerzeichen (deutsche) Abkürzungen automatischUndhttp://tex.stackexchange.com/a/134856, manche von uns neigen dazu, bei Abkürzungen einen normalen oder schmalen Abstand zu setzen und schreiben beispielsweise

d.\@ h, d.\ h., d.\,h., z.\@ B, z.\ B, z.\,B.

Obwohl DIN 5008:2011 (inzwischen ersetzt; kann jemand ein Update einsehen?) dort einen normalen unumbrechbaren Zwischenraum setzt, ohne überhaupt irgendwelche Breitenänderungen zu erwähnen, z.°B.ist das dort angegebene Beispiel in einer Monospace-Schriftart gesetzt. Wir verwenden jedoch viel häufiger eine Proportionalschriftart, sodass wir es wahrscheinlich auch (wie viele Leute hier bei TeX.SE) schöner finden würden, die Breite des unumbrechbaren Zwischenraums innerhalb der Abkürzung etwas zu verringern. Einige Leute sagen, er sollte halb so breit sein wie der normale Zwischenraum; vgl.http://www.master-bachelor-korrektur.de/abstaende.php.

Mit cmr10 und einer Leerzeichenlänge von 3,33pt erhalten wir daher

d.\kern1.665pt h., z.\kern1.665pt B.,

Das ist nahe genug an

d.\kern.16667em h., z.\kern.16667em B.

oder

d.\,h., z.\,B.

im Textmodus. Sie können alternativ einen anderen Wert im Intervall [min{dünner Abstand, halber Abstand}, normaler Abstand[ verwenden, wenn Sie näher an DIN5008:2011 bleiben möchten; der genaue Wert ist für den Inhalt der Frage wahrscheinlich nicht so wichtig.

Wenn nun wirklich der Satz gesetzt wird,vieleText, stößt man früher oder später auf zwei Probleme:

A. mit fester Breite\kernNummer, Ihre Abkürzungen sehen im Vergleich zum Rest der Zeile manchmal zu breit oder zu schmal aus, und

B. bei schmalen Spalten manchmal vermeiden, dass Text in den rechten Rand hineinläuft, die letzte Zeile eines Absatzes zu leer wird oder es an anderen Stellen im Absatz zu ungünstigen Silbentrennungen kommt.

Problem A kann durch das Hinzufügen von Streck- und Schrumpfkomponenten zum Intra-Abkürzungsraum gelöst werden, und Problem B durch die Einführung einer nicht maximalen Strafe:

d.\penalty5000\hskip.16667em plus.08333em minus.08333em h., z.\penalty5000\hskip.16667em plus.08333em minus.08333em B.

Dies wirft zwei Fragen auf:

  1. Oben ist 5000 ein Wert aus dem Nichts, der 50 % beträgt, \@Mohne dass wir erklären können, warum es \@M/2 ist und nicht \@M/3 oder 2 \@M/3 oder einfach 1. Was wäre ein guter allgemeiner Wert oder Wertebereich (kleiner als meine aktuelle Schätzung, nämlich das Intervall [1, 9999]) für die Strafe?

  2. Oben haben wir für die Dehnungs- und Schrumpfattribute etwa 50 % der natürlichen Breite verwendet. Auch hier kommt 1/2 aus dem Nichts – es hätte auch jeder andere Wert in ]0,1[ sein können, wie etwa 1/3 oder 2/3. Gibt es besser fundierte Entscheidungen für die Prozentsätze für die Dehnungs- und Schrumpfattribute?

Unabhängig davon und nach Davids KommentarIst besondere Vorsicht geboten, wenn auf einen Punkt innerhalb einer Abkürzung ein \hskip oder \hspace folgt?möchten wir die absoluten Werte in pt oder em vermeiden und stattdessen Werte verwenden, die relativ zu den raumbezogenen Schriftabmessungen sind. Also:

  1. Wie man ausdrückt
\hskip.5*\fontdimen2 plus.5\fontdimen3 minus.5\fontdimen4

in LaTeX richtig? Wenn Ihnen 1/2 nicht gefällt, können Sie natürlich auch einen anderen Prozentsatz nehmen, vorausgesetzt, Sie haben eine gute Erklärung dafür. Alternativ können Sie andere lineare Kombinationen von \fontdimen2, \fontdimen3, und \fontdimen4für die drei Parameter nehmen, wenn Sie das Bedürfnis dazu verspüren und es erklären können.

Antwort1


Für 3

\fontdimennimmt zwei Argumente an, die Parameternummer und die Schriftart, aus der der Parameter entnommen werden soll. \fontgibt die aktuelle Schriftart zurück, also\hskip.5\fontdimen2\font plus.5\fontdimen3\font minus.5\fontdimen4\font


Für 1

es hängt davon ab, was Sie durch das Hinzufügen der Strafe verhindern möchten. TeX versucht, Zeilenumbrüche zu finden, um die Gesamtungültigkeit zu minimieren, daher kann der Wert an diesem Punkt nicht isoliert betrachtet werden. Sie müssen bedenken, was passiert, wenn der Zeilenumbruch nicht dort ausgeführt wird. Normalerweise werden einige Leerzeichen gedehnt, um einen suboptimalen Haltepunkt zu ermöglichen, sodass das Dehnen einen Ungültigkeitswert ergibt, und Sie müssen die Strafe für das Umbrechen Ihrer Abkürzung höher ansetzen als die Strafe für das Dehnen der Leerzeichen, wenn die Strafe eine Wirkung haben soll.

Bildbeschreibung hier eingeben

Im ersten Test sieht man, dass der Haltepunkt zwischen den beiden !!recht einfach umgangen werden kann. Er wird erreicht, wenn die Strafe 10 beträgt, aber eine Strafe von nur 20 reicht bereits aus, um einen Haltepunkt an dieser Stelle zu verhindern.

Im zweiten Test ist es schwieriger, an diesem Punkt einen Bruch zu vermeiden, selbst die maximale nicht erzwingende Strafe von 9999 reicht nicht aus.

Es gibt also keine festen Regeln, nach denen Sie entscheiden müssen, was Sie verhindern möchten und wie viel Sie bereit sind, die durch suboptimale Alternativen verursachten Nachteile zu tolerieren.

\documentclass{article}

\begin{document}
3) \hskip.5\fontdimen2\font plus.5\fontdimen3\font minus.5\fontdimen4\font X

\noindent X\dotfill X

\def\test#1{\par$#1$\par
  aaaaaaaaaaaaaaaaaaaaaaaaaaaa aaa a a a a a a4 a a a a a a a7 a a a a 8 aa!\penalty#1\,! bbb}

\test{-10000}
\test{10000}
\test{20}
\test{10}
\test{00}



\noindent X\dotfill X

\def\test#1{\par$#1$\par
  aaaaaaaaaaaaaaaaaaaaaaaaaaaa aa aaa aaa aa aa aaaaaaaaaaaaaaaaaa7  aa!\penalty#1\,!bbb bbbbbb}

\test{-10000}
\test{10000}
\test{9999}
\end{document}

Für 2

es hängt ein bisschen von den kulturellen Erwartungen an die Zeichensetzung von Abkürzungen ab, aber ich würde wahrscheinlich weniger Schrumpfung als Ausdehnung zulassen. Der Abstand ist bereits schmal, sodass es in engen Zeilen, wenn Sie ihn halbieren, effektiv so aussehen kann, als ob es überhaupt keinen Abstand gäbe. Ob AB ohne deutlich sichtbaren Abstand richtig aussieht, hängt davon ab, wie Sie (oder Ihre Leser) es erwarten.

Antwort2

Ich glaube nicht, dass Sie in der Mitte einer solchen Abkürzung einen Zeilenumbruch möchten, was mit möglich wäre \penalty5000.

Sie können Einheitlichkeit mit einem Befehl erreichen:

\documentclass{article}

\ExplSyntaxOn

\NewDocumentCommand{\abk}{m}
 {
  \tl_head:n { #1 } % the first letter
  \exp_args:Ne \tl_map_function:nN { \tl_tail:n { #1 } } \aim_add_space:n
  .\@
 }

\cs_new_protected:Nn \aim_add_space:n
 {
  .\@\nolinebreak
  \skip_horizontal:n { ( \fontdimen2\font plus \fontdimen3\font minus \fontdimen4\font)*2/3 }
  #1
 }

\ExplSyntaxOff

\begin{document}

\abk{dh}
\abk{zB}

\abk{wxyz}

\makebox{word word \abk{zB} word word}

\makebox[1.3\width][s]{word word \abk{zB} word word}

\makebox[0.95\width][s]{word word \abk{zB} word word}

\end{document}

Hier wird der normale Abstand zwischen Wörtern mithilfe eines Skip-Ausdrucks auf 2/3 reduziert. Experimentieren Sie mit dem Faktor.

Bildbeschreibung hier eingeben

Der Vollständigkeit halber kann der Befehl prüfen, ob der Wert \spaceskipungleich Null ist und ihn in diesem Fall verwenden.

\documentclass{article}

\ExplSyntaxOn

\NewDocumentCommand{\abk}{m}
 {
  \tl_head:n { #1 } % the first letter
  \exp_args:Ne \tl_map_function:nN { \tl_tail:n { #1 } } \aim_add_space:n
  .\@
 }

\cs_new_protected:Nn \aim_add_space:n
 {
  .\@\nolinebreak
  \dim_compare:nTF { \spaceskip > 0pt }
   { 
    \skip_horizontal:n { \spaceskip*2/3 }
   }
   { 
    \skip_horizontal:n { (\fontdimen2\font plus \fontdimen3\font minus \fontdimen4\font)*2/3 }
   }
  #1
 }

\ExplSyntaxOff

\begin{document}

\abk{dh}
\abk{zB}

\abk{wxyz}

\makebox{word word \abk{zB} word word}

\makebox[1.3\width][s]{word word \abk{zB} word word}

\makebox[0.95\width][s]{word word \abk{zB} word word}

\setlength{\spaceskip}{1em plus 1em minus 0.5em}

\makebox{word word \abk{zB} word word}

\makebox[1.3\width][s]{word word \abk{zB} word word}

\makebox[0.95\width][s]{word word \abk{zB} word word}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen