In einem LaTeX-Dokument, das ich schreibe, wird aufgrund des Wortes "multidisziplinär", das zufällig am Ende einer Zeile gerendert wird , eine überfüllte hbox- Warnung angezeigt .
Ich kann diese spezielle Warnung loswerden, indem ich sie in ändere multi-discipli\-nary
, aber das gleiche Problem wird an anderer Stelle auftreten, da dieses Wort in der Zeitung häufig verwendet wird.
Ich möchte \hyphenation{}
stattdessen den Befehl verwenden, aber offensichtlich \hyphenation{multi-disci-pli-na-ry}
funktioniert mein vorläufiger Befehl nicht, da er den ersten Bindestrich nicht richtig versteht.
Welche Beschwörung brauche ich, um einen korrekten Einzug in ein Wort zu erhalten, das bereits einen Bindestrich enthält?
Bonusfrage: Wo hätte ich die Antwort auf diese Frage selbst finden können?
quelle
Antworten:
Von https://texfaq.org/FAQ-nohyph :
Oder Sie können
\newcommand
einen Befehl verwenden, der erweitert wirdmulti-discipli\-nary
(verwenden Sie Suchen + Alle ersetzen, um vorhandene Wörter zu ersetzen).quelle
\newcommand
überall ein zu verwenden (deshalb habe ich etwas gesucht, das darauf basiert\hyphenation
). Ich denke, ich werde es einfach so lassen, wie es ist, und explizite Bindestriche manuell hinzufügen, wenn Latex sich über überfüllte Hboxen beschwert.Das Problem (wie KennyTM feststellte) ist, dass LaTeX Wörter nicht mit Bindestrichen trennt. Glücklicherweise gibt es ein Standardpaket (Teil von ncctools), das genau dieses Problem behebt
extdash
. Dies definiert neue Bindestrich- und Strichbefehle, die die Silbentrennung nicht stören und Zeilenumbrüche am Bindestrich / Bindestrich zulassen oder verhindern können. Ich bevorzuge es mit dershortcuts
Option zu verwenden, damit ich z . B.\-/
anstatt verwenden kann\Hyphdash
. Folgendes möchten Sie:\usepackage[shortcuts]{extdash}
...multi\-/disciplinary
Verwenden Sie, um ein Brechen an diesem Bindestrich zu verhindern
multi\=/disciplinary
(Nebenbei: Im Chicago Manual of Style wird empfohlen, die Bindestriche mit Anhängen wie "Multi" zu entfernen, es sei denn, das Wort ist ohne es mehrdeutig oder unverständlich.)
quelle
Package hyperref Warning: Token not allowed in a PDF string
. Dort\def\hyph{-\penalty0\hskip0pt\relax}
funktioniert die andere vorgeschlagene Lösung ( ).\texorpdfstring
(was eine bedingte Kompilierung für Zeichenfolgen ermöglicht, die in Kapitelüberschriften enthalten sind). Ich verstecke Verwendungen in semantischen Makros (hier wahrscheinlich\multidisciplinary
). Ja, es ist nicht perfekt.Ich benutze Paket
hyphenat
und schreibe dann zusammengesetzte Wörter wie das finnische Wort Internet-yhteys (engl. Internetverbindung ) alsInternet\hyp yhteys
. Sieht doof aus, scheint aber der eleganteste Weg zu sein, den ich gefunden habe.quelle
multi-disciplinary
wird nicht getrennt, wie von kennytm erklärt. Hatmulti-\-disciplinary
aber die gleichen Silbentrennungsmöglichkeitenmultidisciplinary
wie.Ich gebe zu, dass ich nicht weiß, warum das funktioniert. Es unterscheidet sich von dem hier beschriebenen Verhalten (Hervorhebung von mir):
quelle
-
durch-\-
ändert nichts an der Ausgabe, zumindest nicht mit den Standardeinstellungen in overleaf.com (wahrscheinlich pdflatex, aber overleaf sagt das eigentlich nicht).Ich hatte das gleiche Problem. Ich benutze Bindestrich plus das folgende Makro:
Beachten Sie, dass hierfür das expl3-Paket von latex3 verwendet wird.
Es macht das
-
Zeichen zu einem aktiven Charakter, der nach vorne scannt, um zu sehen, ob weitere Striche folgen. Wenn ja, bleibt es ein-
, um sicherzugehen--
und---
weiter zu arbeiten. Wenn nicht, wird es zum\hyp
Befehl von Bindestrich, wodurch Wortumbrüche im Rest des Wortes aktiviert werden. Dies ist eine generische Lösung, bei der alle Wörter, die explizite Bindestriche enthalten, normalerweise getrennt werden.Beachten Sie, dass dies
-
zu einem Makro wird, das nicht vollständig erweiterbar ist. Versuchen Sie daher, dies einzuschließen, nachdem Sie andere Pakete geladen haben, von denen möglicherweise nicht erwartet wird-
, dass sie ein Makro sindBearbeiten: Dies ist meine zweite Version, die erste Version war weniger robust, wenn ein
{
oder}
ein Bindestrich folgte. Dies ist nicht der Fall, aber im Gegensatz zur ersten Version ist die-
in dieser Version nicht vollständig erweiterbar.quelle
Sie können zB wie definieren
und dann schreiben
Beachten Sie, dass das russische Sprachpaket babel über eigene Striche verfügt, die eine Silbentrennung nicht verbieten
"~
(z. B. doppeltes Anführungszeichen + Tilde).quelle
multi-\hskip0pt disciplinary
. Wie bei Ihnen MWE wird es zu viel hypen. Einfach einstellen,\setlength{\textwidth}{0.1cm}
um das zu versuchen.Ich habe hier etwas Ähnliches beantwortet: LaTeX bricht zu viele Wörter auf
Ich sagte:
Sie sollten irgendwo in Ihrer Präambel eine Silbentrennungsstrafe festlegen:
Der Wert 750 entsprach meinen Anforderungen für ein zweispaltiges Layout auf Briefpapier (8,5 x 11 Zoll) mit einer 12-Punkt-Schriftart. Passen Sie den Wert an Ihre Bedürfnisse an. Je höher die Zahl, desto weniger Silbentrennung tritt auf. Vielleicht möchten Sie auch einen Blick auf das Silbentrennungspaket werfen, es bietet etwas mehr als nur eine Silbentrennungsstrafe
quelle
Um eine Silbentrennung in bereits getrennten Wörtern zu vermeiden, habe ich ein nicht unterbrechendes Leerzeichen
~
in Kombination mit einem Rückwärtszeichen verwendet\!
. Zum Beispiel BefehlUnterdrücken Sie im Text die Silbentrennung in Wort 3-D. Wahrscheinlich nicht die beste Lösung, aber es hat bei mir funktioniert!
quelle
\mbox{3-D}
.