Saya memiliki masalah yang sama. Saya menggunakan tanda hubung plus makro berikut:
\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
Perhatikan bahwa ini menggunakan paket expl3 dari latex3.
Itu membuat -
karakter aktif yang memindai ke depan untuk melihat apakah diikuti oleh lebih banyak tanda hubung. Jika demikian, itu tetap a -
, untuk memastikan --
dan ---
tetap bekerja. Jika tidak, ini menjadi \hyp
perintah dari tanda hubung, memungkinkan pemisah kata di seluruh kata. Ini adalah solusi umum yang membuat semua kata yang berisi tanda hubung eksplisit diberi tanda hubung secara normal.
Perhatikan itu -
menjadi makro yang tidak dapat diperluas sepenuhnya, jadi coba sertakan ini setelah memuat paket lain yang mungkin tidak diharapkan -
menjadi makro
Sunting: Ini adalah versi kedua saya, versi pertama kurang kuat ketika {
atau }
diikuti tanda hubung. Yang ini bukan, tetapi tidak seperti versi pertama, -
versi ini tidak dapat diperluas sepenuhnya.