Yo tuve el mismo problema. Yo uso hyphenat más la siguiente macro:
\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
Tenga en cuenta que esto usa el paquete expl3 de latex3.
Hace que sea -
un personaje activo que escanea hacia adelante para ver si va seguido de más guiones. Si es así, sigue siendo un -
, para asegurarse --
y ---
seguir funcionando. De lo contrario, se convierte en el \hyp
comando de hyphenat, lo que permite los saltos de palabras en el resto de la palabra. Esta es una solución genérica que hace que todas las palabras que contienen guiones explícitos se dividan normalmente.
Tenga en cuenta que se -
convierte en una macro que no se puede expandir por completo, así que intente incluirla después de cargar otros paquetes que no esperen -
ser una macro.
Editar: Esta es mi segunda versión, la primera versión era menos robusta cuando un guion seguía {
o }
. Este no lo es, pero a diferencia de la primera versión, el -
de esta versión no es completamente expandible.