私も同じ問題を抱えていました。私はハイフンと次のマクロを使用します:
\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
これは、latex3のexpl3パッケージを使用することに注意してください。
-
前方にスキャンしてアクティブな文字を作成し、その後にダッシュが続くかどうかを確認します。その場合は、-
確認--
し---
て作業を続けるためにに留まります。そうでない場合、それは\hyp
ハイフンからのコマンドになり、残りの単語の単語分割を有効にします。これは、明示的なハイフンを含むすべての単語を通常どおりハイフネーションする一般的なソリューションです。
注-
完全に拡張可能ではないマクロになり、それほど期待しないかもしれない他のパッケージロードした後、これを含めるようにしようと-
マクロことを
編集:これは私の2番目のバージョンです。最初のバージョンは、ハイフンを使用した場合、{
または}
ハイフンを使用した場合の堅牢性が低下しました。これはそうではありませんが、最初のバージョンとは異なり、-
このバージョンのは完全に拡張可能ではありません。