Discussion:
\hyphenation in Verbindung mit Wörtern mit Unterstrich
(zu alt für eine Antwort)
Markus Franke
2007-02-14 17:02:22 UTC
Permalink
Hallo,

in meinem Text habe ich Wörter mit Unterstrich die bei der
Silbentrennung einfach unberücksichtigt bleiben sollen da eine Trennung
eher unsinnig wäre. Derzeit ragen diese Wörter einfach über den
Seitenrand hinaus (Blocksatz). Beispiele sind:

CONFIG_PREEMPT
SCHED_OTHER
SCHED_FIFO

Jetzt habe ich gelesen, dass man mit \hyphenation bestimmte Wörter
direkt von der Silbentrennung ausschließen kann. Im Text schreibe ich:
"SCHED\_FIFO" und möchte nun mit "\hyphenation{SCHED\_FIFO}" das Ganze
realisieren. Latex gibt mir aber folgende Fehlermeldung aus:

---snip---
! Improper \hyphenation will be flushed.
\_->\***@protect \_\protect
\_
l.264 \hyphenation{SCHED\_
FIFO}
---snap---

Hat da jemand eine Lösung parat? Mehr noch, ist mein gewünschtes
Verhalten mit \hyphenation überhaupt realisierbar?

Mfg,
Markus Franke
Christoph Bier
2007-02-14 18:19:56 UTC
Permalink
Post by Markus Franke
Hallo,
in meinem Text habe ich Wörter mit Unterstrich die bei der
Silbentrennung einfach unberücksichtigt bleiben sollen da eine Trennung
eher unsinnig wäre. Derzeit ragen diese Wörter einfach über den
CONFIG_PREEMPT
SCHED_OTHER
SCHED_FIFO
Jetzt habe ich gelesen, dass man mit \hyphenation bestimmte Wörter
direkt von der Silbentrennung ausschließen kann.
Wo hast du das gelesen? \hyphenation ist ein Befehl, um in der
Präambel Trennregeln für bestimmte Wörter festzulegen -- diese
werden auch Trennausnahmeregeln genannt. Vielleicht hattest du das
gelesen und missverstanden.

Deine Wörter sind außerdem schon von der Trennung ausgenommen --
genau deshalb werden sie ja in den Rand geschrieben. Wenn du eine
Trennung trotzdem verhindern willst, musst du den Blocksatz
verhunzen. Das geht beispielsweise mit \sloppy. Eventuell erzielst
du bessere Ergebnisse, wenn du für \tolerance und \emergencystretch
geeignete Werte verwendest. Eine weitere Möglichkeit ist das
Umformulieren. Oder du verzichtest ganz auf Blocksatz ...
Post by Markus Franke
"SCHED\_FIFO" und möchte nun mit "\hyphenation{SCHED\_FIFO}" das Ganze
realisieren.
\hyphenation akzeptiert nur Buchstaben und den Bindestrich (-), um
die Stellen zu markieren, an denen im Wort getrennt werden darf.
Post by Markus Franke
---snip---
! Improper \hyphenation will be flushed.
\_
l.264 \hyphenation{SCHED\_
FIFO}
---snap---
Hat da jemand eine Lösung parat? Mehr noch, ist mein gewünschtes
Verhalten mit \hyphenation überhaupt realisierbar?
Nein.

Grüße
Christoph
--
(La)TeX-FAQ: http://www.dante.de/faq/ +++ Minimalbeispiel erstellen
und Einführung in de.comp.text.tex: http://www.latex-einfuehrung.de/
+++ Veraltete Befehle, Pakete und andere Fehler:
ftp://ftp.dante.de/tex-archive/info/l2tabu/german/l2tabu.pdf
+++ Typografie-Regeln: http://zvisionwelt.de/downloads.html (1.6)
Christoph Bier
2007-02-14 20:23:19 UTC
Permalink
[...]
Post by Christoph Bier
Post by Markus Franke
Jetzt habe ich gelesen, dass man mit \hyphenation bestimmte Wörter
direkt von der Silbentrennung ausschließen kann.
Wo hast du das gelesen? \hyphenation ist ein Befehl, um in der
Präambel Trennregeln für bestimmte Wörter festzulegen -- diese
werden auch Trennausnahmeregeln genannt. Vielleicht hattest du das
gelesen und missverstanden.
Ich wusste nicht, dass man mit \hyphenation auch tatsächlich
Trennungen verhindern kann. Sorry!

[...]

Grüße
Christoph
--
(La)TeX-FAQ: http://www.dante.de/faq/ +++ Minimalbeispiel erstellen
und Einführung in de.comp.text.tex: http://www.latex-einfuehrung.de/
+++ Veraltete Befehle, Pakete und andere Fehler:
ftp://ftp.dante.de/tex-archive/info/l2tabu/german/l2tabu.pdf
+++ Typografie-Regeln: http://zvisionwelt.de/downloads.html (1.6)
Markus Franke
2007-02-14 21:30:07 UTC
Permalink
Post by Christoph Bier
Deine Wörter sind außerdem schon von der Trennung ausgenommen --
genau deshalb werden sie ja in den Rand geschrieben. Wenn du eine
Trennung trotzdem verhindern willst, musst du den Blocksatz
verhunzen. Das geht beispielsweise mit \sloppy. Eventuell erzielst
du bessere Ergebnisse, wenn du für \tolerance und \emergencystretch
geeignete Werte verwendest. Eine weitere Möglichkeit ist das
Umformulieren. Oder du verzichtest ganz auf Blocksatz ...
Also umformulieren fällt schon mal aus. Das sind halt einfach Eigennamen
die ich nicht einfach mal anders nennen kann. Blocksatz ist auch mehr
oder weniger gefordert. Also kann ich wirklich nur mit den oben
genannten Parametern rumspielen??? Ich kann nicht glauben, dass es da
mit Latex keine komfortablere Lösung gibt.

Gruß,
Markus
Christoph Bier
2007-02-14 21:53:22 UTC
Permalink
Post by Markus Franke
Post by Christoph Bier
Deine Wörter sind außerdem schon von der Trennung ausgenommen --
genau deshalb werden sie ja in den Rand geschrieben. Wenn du eine
Trennung trotzdem verhindern willst, musst du den Blocksatz
verhunzen. Das geht beispielsweise mit \sloppy. Eventuell erzielst
du bessere Ergebnisse, wenn du für \tolerance und \emergencystretch
geeignete Werte verwendest. Eine weitere Möglichkeit ist das
Umformulieren. Oder du verzichtest ganz auf Blocksatz ...
Also umformulieren fällt schon mal aus. Das sind halt einfach Eigennamen
die ich nicht einfach mal anders nennen kann.
Du sollst nicht die Namen ändern, sondern die Sätze, bei denen diese
Namen in den Rand geschrieben werden, umformulieren. Das ist als
(vor)letzte Lösung ein durchaus übliches Vorgehen.
Post by Markus Franke
Blocksatz ist auch mehr
oder weniger gefordert. Also kann ich wirklich nur mit den oben
genannten Parametern rumspielen??? Ich kann nicht glauben, dass es da
mit Latex keine komfortablere Lösung gibt.
Was findest du an \sloppy unkomfortabel?

Was soll TeX denn machen, wenn mit den Standardeinstellungen die
Verteilung des Weißraums in einem Absatz, in dem bestimmte Wörter
nicht getrennt werden dürfen, nicht möglich ist, ohne in den Rand zu
schreiben? Der Weißraum (Wortzwischenräume) muss dann erhöht werden,
wodurch der Blocksatz zwangsweise schlechter wird. Dazu möchte TeX
aber explizit die Erlaubnis des Nutzers. Denn TeX ist in den
Standardeinstellungen bemüht, guten, das heißt engen, Blocksatz zu
erzeugen. Bis auf einmal habe ich Umformulieren \sloppy immer
vorgezogen.

Die Einführung der »font expansion« in pdfTeX hat die Situation mit
overful-hbox-Meldungen deutlich entschärft (auch der optische
Randausgleich hat einen geringen Einfluss darauf). Falls du das noch
nicht nutzt, schau dir mal das Paket microtype an, mit dem du auf
die mikrotypografischen Erweiterungen von pdfTeX -- ein einigermaßen
aktuelles pdfTeX vorausgesetzt -- zugreifen kannst. Seitdem ich das
nutze, musste ich WIMRE in keinem Text mehr unformulieren oder an
den genannten Parametern drehen. \sloppy habe ich auch erst ein
einziges Mal für einen Absatz in einem Dokument verwendet.

Grüße
Christoph
--
(La)TeX-FAQ: http://www.dante.de/faq/ +++ Minimalbeispiel erstellen
und Einführung in de.comp.text.tex: http://www.latex-einfuehrung.de/
+++ Veraltete Befehle, Pakete und andere Fehler:
ftp://ftp.dante.de/tex-archive/info/l2tabu/german/l2tabu.pdf
+++ Typografie-Regeln: http://zvisionwelt.de/downloads.html (1.6)
Markus Franke
2007-02-15 07:38:15 UTC
Permalink
Post by Christoph Bier
Du sollst nicht die Namen ändern, sondern die Sätze, bei denen diese
Namen in den Rand geschrieben werden, umformulieren. Das ist als
(vor)letzte Lösung ein durchaus übliches Vorgehen.
Komische Art Texte zu schreiben in denen der Ausdruck vom Wohlwollen des
Textsatzsystems abhängt, aber Ok.
Post by Christoph Bier
Was soll TeX denn machen, wenn mit den Standardeinstellungen die
Verteilung des Weißraums in einem Absatz, in dem bestimmte Wörter
nicht getrennt werden dürfen, nicht möglich ist, ohne in den Rand zu
schreiben? Der Weißraum (Wortzwischenräume) muss dann erhöht werden,
wodurch der Blocksatz zwangsweise schlechter wird. Dazu möchte TeX
aber explizit die Erlaubnis des Nutzers. Denn TeX ist in den
Standardeinstellungen bemüht, guten, das heißt engen, Blocksatz zu
erzeugen. Bis auf einmal habe ich Umformulieren \sloppy immer
vorgezogen.
Ok. Das ist verständlich. Ich hab halt einfach erwartet, dass wenn ich
Blocksatz angebe auch Blocksatz rauskommt. Wenn an den ein oder anderen
Stellen zu viel Weißraum auf einer Zeile rauskommt wäre mir das auf
jeden Fall deutlich lieber als die Wörter einfach über den Rand
hinauszuschreiben (was man definitiv dann nicht so lassen kann).
Post by Christoph Bier
Die Einführung der »font expansion« in pdfTeX hat die Situation mit
overful-hbox-Meldungen deutlich entschärft (auch der optische
Randausgleich hat einen geringen Einfluss darauf). Falls du das noch
nicht nutzt, schau dir mal das Paket microtype an, mit dem du auf
die mikrotypografischen Erweiterungen von pdfTeX -- ein einigermaßen
aktuelles pdfTeX vorausgesetzt -- zugreifen kannst. Seitdem ich das
nutze, musste ich WIMRE in keinem Text mehr unformulieren oder an
den genannten Parametern drehen. \sloppy habe ich auch erst ein
einziges Mal für einen Absatz in einem Dokument verwendet.
Das werde ich mir mal anschauen. Hab ich noch nichts von gehört.

Gruß,
Markus
Dominik Waßenhoven
2007-02-15 07:46:16 UTC
Permalink
Post by Markus Franke
Post by Christoph Bier
Was soll TeX denn machen, wenn mit den Standardeinstellungen die
Verteilung des Weißraums in einem Absatz, in dem bestimmte Wörter
nicht getrennt werden dürfen, nicht möglich ist, ohne in den Rand zu
schreiben? Der Weißraum (Wortzwischenräume) muss dann erhöht werden,
wodurch der Blocksatz zwangsweise schlechter wird. Dazu möchte TeX
aber explizit die Erlaubnis des Nutzers. Denn TeX ist in den
Standardeinstellungen bemüht, guten, das heißt engen, Blocksatz zu
erzeugen.
Ok. Das ist verständlich. Ich hab halt einfach erwartet, dass wenn ich
Blocksatz angebe auch Blocksatz rauskommt. Wenn an den ein oder anderen
Stellen zu viel Weißraum auf einer Zeile rauskommt wäre mir das auf
jeden Fall deutlich lieber als die Wörter einfach über den Rand
hinauszuschreiben (was man definitiv dann nicht so lassen kann).
Solche Stellen, die in den Rand ragen, lassen sich aber wesentlich
schneller finden als zuviel Weißraum. Man kann sich dann ja entscheiden,
wie man damit umgehen möchte: Umformuliere oder nicht so schönen
Blocksatz zulassen. Bei Word&Co. wird dagegen auf jeden Fall Blocksatz
produziert, der im Zweifel einfach hässlich ist.[1]
Post by Markus Franke
Post by Christoph Bier
Falls du das noch
nicht nutzt, schau dir mal das Paket microtype an,
Das werde ich mir mal anschauen. Hab ich noch nichts von gehört.
Das lohnt sich auf jeden Fall! Einfach \usepackage{microtype} in die
Präambel führt meiner Erfahrung nach schon zu deutlich besserem Blocksatz.

Gruß,
Dominik.-
--
DE-TeX-FAQ: http://www.dante.de/faq/de-tex-faq
Minimalbeispiel: http://www.minimalbeispiel.de
BibTeX-Editor: http://jabref.sourceforge.net
Dominik Waßenhoven
2007-02-15 07:47:35 UTC
Permalink
Post by Dominik Waßenhoven
Solche Stellen, die in den Rand ragen, lassen sich aber wesentlich
schneller finden als zuviel Weißraum. Man kann sich dann ja entscheiden,
wie man damit umgehen möchte: Umformuliere oder nicht so schönen
Blocksatz zulassen. Bei Word&Co. wird dagegen auf jeden Fall Blocksatz
produziert, der im Zweifel einfach hässlich ist.[1]
Hier fehlte die Fußnote:

[1] Ich habe schon Seminararbeiten gesehen, die im Blocksatz ohne (!)
automatische Silbentrennung gesetzt waren. *Schüttel*
Markus Kohm
2007-02-15 08:37:27 UTC
Permalink
Post by Dominik Waßenhoven
Bei Word&Co. wird dagegen auf jeden Fall Blocksatz
produziert, der im Zweifel einfach hässlich ist.
Ist die Voreinstellung nicht Flattersatz ohne Trennung? Oder ist das lange
her?

Gruß
Markus
--
Gruppenhinweise (auch Minimalbeispiel) --> http://www.latex-einfuehrung.de
Fragen zu LaTeX? --> http://www.dante.de/faq/de-tex-faq/
Fragen zu KOMA-Script? --> Anleitung z. B. auf CTAN (--> FAQ);
--> http://www.komascript.de
Dominik Waßenhoven
2007-02-15 08:56:37 UTC
Permalink
Post by Markus Kohm
Post by Dominik Waßenhoven
Bei Word&Co. wird dagegen auf jeden Fall Blocksatz
produziert, der im Zweifel einfach hässlich ist.
Ist die Voreinstellung nicht Flattersatz ohne Trennung? Oder ist das lange
her?
Keine Ahnung. Ich meinte, wenn man Blocksatz auswählt. Mein "auf jeden
Fall" war insofern missverständlich.

Gruß,
Dominik.-
Markus Franke
2007-02-15 08:50:22 UTC
Permalink
Post by Dominik Waßenhoven
Das lohnt sich auf jeden Fall! Einfach \usepackage{microtype} in die
Präambel führt meiner Erfahrung nach schon zu deutlich besserem Blocksatz.
Ja hab ich gemacht. Ein "\setlength{\emergencystretch}{2cm}" war jedoch
trotzdem noch nötig. Na passt schon jetzt erstmal. Danke nochmal für die
umfassende Aufklärung von allen Seiten. ;-)

Gruß,
Markus
Christoph Bier
2007-02-15 08:57:36 UTC
Permalink
Post by Markus Franke
Post by Christoph Bier
Du sollst nicht die Namen ändern, sondern die Sätze, bei denen diese
Namen in den Rand geschrieben werden, umformulieren. Das ist als
(vor)letzte Lösung ein durchaus übliches Vorgehen.
Komische Art Texte zu schreiben in denen der Ausdruck vom Wohlwollen des
Textsatzsystems abhängt, aber Ok.
»Wohlwollen des Textsatzsystems«? Wenn ich engen Blocksatz möchte,
hat das Textsatzsystem manchmal eben keine Chance. Wenn dir enger
Blocksatz und somit Leserlichkeit nicht ganz so wichtig sind, dann
wurden dir bereits Möglichkeiten genannt, weniger engen Blocksatz zu
erzeugen; für eine davon hast du dich entschieden. Mit den
mikrotypografischen Erweiterungen von pdfTeX stehen dir zudem sehr
elegante Möglichkeiten zur Verfügung, auch dann engen Blocksatz zu
erzeugen, wenn es eigentlich nicht möglich ist. Mir ist kein
weiteres Programm bekannt, dass »font expansion« beherrscht. Hat
jemand andere Kenntnisse?
Post by Markus Franke
Post by Christoph Bier
Was soll TeX denn machen, wenn mit den Standardeinstellungen die
Verteilung des Weißraums in einem Absatz, in dem bestimmte Wörter
nicht getrennt werden dürfen, nicht möglich ist, ohne in den Rand zu
schreiben? Der Weißraum (Wortzwischenräume) muss dann erhöht werden,
wodurch der Blocksatz zwangsweise schlechter wird. Dazu möchte TeX
aber explizit die Erlaubnis des Nutzers. Denn TeX ist in den
Standardeinstellungen bemüht, guten, das heißt engen, Blocksatz zu
erzeugen. Bis auf einmal habe ich Umformulieren \sloppy immer
vorgezogen.
Ok. Das ist verständlich. Ich hab halt einfach erwartet, dass wenn ich
Blocksatz angebe auch Blocksatz rauskommt. Wenn an den ein oder anderen
Stellen zu viel Weißraum auf einer Zeile rauskommt wäre mir das auf
jeden Fall deutlich lieber als die Wörter einfach über den Rand
hinauszuschreiben (was man definitiv dann nicht so lassen kann).
Das hast du doch mit \sloppy mittlerweile erreicht. Ich möchte
jedenfalls nicht, dass standardmäßig ein Murks (aka Lochsatz) wie
bei bekannten Office-Paketen rauskommt. Lieber in den Rand schreiben
und dann überlegen, was die angemessene Vorgehensweise ist. LaTeX
teilt einem ja mit, wenn in den Rand geschrieben werden musste.

[...]

Grüße
Christoph
--
(La)TeX-FAQ: http://www.dante.de/faq/ +++ Minimalbeispiel erstellen
und Einführung in de.comp.text.tex: http://www.latex-einfuehrung.de/
+++ Veraltete Befehle, Pakete und andere Fehler:
ftp://ftp.dante.de/tex-archive/info/l2tabu/german/l2tabu.pdf
+++ Typografie-Regeln: http://zvisionwelt.de/downloads.html (1.6)
Heiko Oberdiek
2007-02-15 09:46:42 UTC
Permalink
Post by Markus Franke
Post by Christoph Bier
Du sollst nicht die Namen ändern, sondern die Sätze, bei denen diese
Namen in den Rand geschrieben werden, umformulieren. Das ist als
(vor)letzte Lösung ein durchaus übliches Vorgehen.
Komische Art Texte zu schreiben in denen der Ausdruck vom Wohlwollen des
Textsatzsystems abhängt,
Dieses Textsatzsystem bietet zahlreiche Einstellmöglichkeiten,
damit hängt das vom Wohlwollen desjenigen ab, der sich um
die Einstellungen kümmert (Klassendesigner, Paketschreiber,
Autor).
Post by Markus Franke
Ok. Das ist verständlich. Ich hab halt einfach erwartet, dass wenn ich
Blocksatz angebe auch Blocksatz rauskommt. Wenn an den ein oder anderen
Stellen zu viel Weißraum auf einer Zeile rauskommt wäre mir das auf
jeden Fall deutlich lieber als die Wörter einfach über den Rand
hinauszuschreiben (was man definitiv dann nicht so lassen kann).
Wie man das macht, hat ja David mit \emergencystretch angegeben.

Viele Grüße
Heiko <***@uni-freiburg.de>

Markus Franke
2007-02-14 21:34:52 UTC
Permalink
Post by Christoph Bier
Deine Wörter sind außerdem schon von der Trennung ausgenommen --
genau deshalb werden sie ja in den Rand geschrieben. Wenn du eine
Trennung trotzdem verhindern willst, musst du den Blocksatz
verhunzen. Das geht beispielsweise mit \sloppy. Eventuell erzielst
du bessere Ergebnisse, wenn du für \tolerance und \emergencystretch
geeignete Werte verwendest. Eine weitere Möglichkeit ist das
Umformulieren. Oder du verzichtest ganz auf Blocksatz ...
\sloppy löst das Problem.

Gruß,
Markus
Georg Verweyen
2007-02-14 21:41:20 UTC
Permalink
Post by Markus Franke
\sloppy löst das Problem.
\sloppy löst kein Problem, \sloppy ist ein Problem!

Gruß, Georg
--
Typografische Regeln: http://kuerzer.de/typokurz
LaTeX und Typografie: http://kuerzer.de/tex
Häufig gemachte Fehler: http://kuerzer.de/CTAN-tabu
Markus Franke
2007-02-14 21:51:01 UTC
Permalink
Post by Georg Verweyen
\sloppy löst kein Problem, \sloppy ist ein Problem!
Ja schön ist das nicht. Das ist mir auch klar. Wunder mich ja auch, dass
es keine elegantere Lösung gibt.

Gruß,
Markus
Christoph Bier
2007-02-14 21:54:19 UTC
Permalink
Post by Markus Franke
Post by Georg Verweyen
\sloppy löst kein Problem, \sloppy ist ein Problem!
Ja schön ist das nicht. Das ist mir auch klar. Wunder mich ja auch, dass
es keine elegantere Lösung gibt.
Siehe meine Antwort auf deinen anderen Beitrag. Umformulieren ist
die elegantere Lösung (wenn nicht bereits microtype Abhilfe schafft).
--
(La)TeX-FAQ: http://www.dante.de/faq/ +++ Minimalbeispiel erstellen
und Einführung in de.comp.text.tex: http://www.latex-einfuehrung.de/
+++ Veraltete Befehle, Pakete und andere Fehler:
ftp://ftp.dante.de/tex-archive/info/l2tabu/german/l2tabu.pdf
+++ Typografie-Regeln: http://zvisionwelt.de/downloads.html (1.6)
David Kastrup
2007-02-14 22:07:43 UTC
Permalink
Post by Markus Franke
Post by Georg Verweyen
\sloppy löst kein Problem, \sloppy ist ein Problem!
Ja schön ist das nicht. Das ist mir auch klar. Wunder mich ja auch, dass
es keine elegantere Lösung gibt.
\emergencystretch=5em

Greift nicht ein, wo TeX nicht ohnehin sonst das "overfull hbox"
Handtuch würfe.
--
David Kastrup, Kriemhildstr. 15, 44793 Bochum
de.comp.text.tex FAQ: <URL:http://www.dante.de/faq/de-tex-faq>
Heiko Oberdiek
2007-02-14 19:35:34 UTC
Permalink
Post by Markus Franke
in meinem Text habe ich Wörter mit Unterstrich die bei der
Silbentrennung einfach unberücksichtigt bleiben sollen da eine Trennung
eher unsinnig wäre. Derzeit ragen diese Wörter einfach über den
CONFIG_PREEMPT
SCHED_OTHER
SCHED_FIFO
Jetzt habe ich gelesen, dass man mit \hyphenation bestimmte Wörter
"SCHED\_FIFO" und möchte nun mit "\hyphenation{SCHED\_FIFO}" das Ganze
Normalerweise kann das Wort vor \_ (oder \textunderscore) getrennt
werden, das danach aber nicht.

Das Paket underscore ermöglicht eine Trennung auch danach.

Will man es umgekehrt haben, also auch eine Trennung davor verhindern,
kann man dieses Wort in \hypenation stecken:
\hyphenation{SCHED}
oder man definiert \_ um und fügt etwa eine leere Box ein:

\makeatletter
\DeclareRobustCommand{\_}{%
\ifmmode
\***@text{\textunderscore}%
\else
\mbox{}%
\textunderscore
\fi
}
\makeatother

Viele Grüße
Heiko <***@uni-freiburg.de>
Loading...