Ich hatte das gleiche Problem. Ich benutze Bindestrich plus das folgende Makro:
\RequirePackage{hyphenat}
\RequirePackage{expl3}
% The following defs make sure words that contain an explicit `-` (hyphen) are still hyphenated the normal way, and double- and triple hyphens keep working the way they should. Just don't use a `-` as the last token of your document. Also note that `-` is now a macro that is not fully expandable
\ExplSyntaxOn
% latex2e doesn't like commands starting with 'end', apparently expl3 doesn't have any problems with it
\cs_new:Npn \hyphenfix_emdash:c {---}
\cs_new:Npn \hyphenfix_endash:c {--}
\cs_new:Npn \hyphenfix_discardnext:NN #1#2{#1}
\catcode`\-=\active
\cs_new_protected:Npn -{
\futurelet\hyphenfix_nexttok\hyphenfix_i:w
}
\cs_new:Npn \hyphenfix_i:w {
\cs_if_eq:NNTF{\hyphenfix_nexttok}{-}{
%discard the next `-` token
\hyphenfix_discardnext:NN{\futurelet\hyphenfix_nexttok\hyphenfix_ii:w}
}{
% from package hyphenat
\hyp
}
}
\cs_new:Npn \hyphenfix_ii:w {
\cs_if_eq:NNTF{\hyphenfix_nexttok}{-}{
\hyphenfix_discardnext:NN{\hyphenfix_emdash:c}
}{
\hyphenfix_endash:c
}
}
\ExplSyntaxOff
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 sind
Bearbeiten: 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.