ผมมีปัญหาเหมือนกัน. ฉันใช้ยัติภังค์บวกมาโครต่อไปนี้:
\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
โปรดทราบว่าสิ่งนี้ใช้แพ็คเกจ Expl3 จาก latex3
ทำให้-
อักขระที่ใช้งานอยู่ซึ่งจะสแกนไปข้างหน้าเพื่อดูว่าตามด้วยขีดกลางมากขึ้นหรือไม่ ถ้าเป็นเช่นนั้นก็ยังคงเป็น-
เพื่อให้แน่ใจ--
และ---
ทำงานต่อไป ถ้าไม่มันจะกลายเป็นไฟล์\hyp
คำสั่งจากยัติภังค์โดยเปิดใช้การแบ่งคำในส่วนที่เหลือของคำ นี่เป็นวิธีแก้ปัญหาทั่วไปที่ทำให้ทุกคำที่มีขีดกลางที่ชัดเจนตามปกติ
โปรดทราบว่า-
จะกลายเป็นมาโครที่ไม่สามารถขยายได้อย่างสมบูรณ์ดังนั้นลองรวมสิ่งนี้ไว้หลังจากโหลดแพ็คเกจอื่น ๆ ที่อาจไม่คาดว่า-
จะเป็นมาโคร
แก้ไข:นี่เป็นเวอร์ชันที่สองของฉันเวอร์ชันแรกมีประสิทธิภาพน้อยกว่าเมื่อมี{
หรือ}
ตามด้วยยัติภังค์ อันนี้ไม่ใช่ แต่แตกต่างจากเวอร์ชันแรกที่-
ในเวอร์ชันนี้ไม่สามารถขยายได้เต็มที่