我有同樣的問題。我使用hyphenat加上以下宏:
\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
命令,從而使單詞的其餘部分可以分詞。這是一個通用的解決方案,通常包含顯式連字符連字符的所有單詞。
注意-
成爲一個宏,不是完全可擴展的,所以嘗試加載可能沒有想到-
做個宏
編輯其他包後,包括這一點:這是我的第二個版本,第一個當{
或}
後跟連字符時版本不太穩健。這不是,但與第一個版本不同,此版本中的-
不完全可擴展。
爲什麼這個詞在艱難的情況下被打破?是不是「多\換行尺寸」好嗎? – 2010-02-03 16:19:54
獎金回答:「乳膠連字符」的谷歌搜索產生了各種有用的結果,包括乳膠維基書中有答案:http://en.wikibooks.org/wiki/LaTeX/Formatting#Hyphenation – Mica 2010-02-04 16:25:58
@mica:不,不是的。我幾年前閱讀過所有這些頁面。 @geoff:如果乳膠在那裏連字符,那就沒問題了。但在這個例子中,它會導致一個「不完整的hbox」,乳膠根本不會選擇連字符。 – Gyom 2010-02-04 17:02:59