私が書いているLaTeX文書では、行末にレンダリングされる「multi-disciplinary」という単語のためにoverfull hbox警告を受け取ります。
この警告をmulti-discipli\-nary
に変更することで取り除くことができますが、このWordはこの論文で多く使用されているため、他の場所でも同じ問題が発生します。
代わりに\hyphenation{}
コマンドを使用したいのですが、最初のダッシュが正しく理解されないため、明らかに私の暫定的な\hyphenation{multi-disci-pli-na-ry}
は機能しません。
ダッシュを既に含むWordで正しいインデントを取得するには、どの呪文が必要ですか?
ボーナス質問:自分自身でその質問の答えをどこで見つけることができましたか?
https://texfaq.org/FAQ-nohyph から:
TeXは、既にハイフネーションされているWordをハイフネーションしません。たとえば、(似顔絵)英語の姓Smyth-Postlethwaiteはハイフネーションを行わないため、面倒な場合があります。これは正しい英語植字スタイルです(他の言語では正しくない場合があります)が、必要に応じて、名前のハイフンを
\hyph
コマンドで置き換えて定義できます。\def\hyph{-\penalty0\hskip0pt\relax}
これはnotこのFAQが通常お勧めするようなものです…
hyphenat
パッケージはバンドルを定義しますそのようなコマンドの(さまざまな句読点にハイフネーションポイントを導入するため)。
または、\newcommand
をmulti-discipli\-nary
に展開するコマンドを使用できます(既存の単語を検索するには、[検索] + [すべて置換]を使用します)。
問題(KennyTMが指摘したように)は、LaTeXがダッシュを含む単語をハイフネーションしないことです。幸いなことに、extdash
と呼ばれる、まさにその問題に対処する標準パッケージ(ncctoolsの一部)があります。これは、ハイフネーションを中断せず、ハイフン/ダッシュでの改行を許可または防止できる新しいハイフンおよびダッシュコマンドを定義します。 shortcuts
オプションと一緒に使用したいので、たとえば\-/
ではなく\Hyphdash
を使用できます。欲しいものは次のとおりです。
\usepackage[shortcuts]{extdash}
... multi\-/disciplinary
そのハイフンで壊れないようにするには、multi\=/disciplinary
を使用します
(余談:The Chicago Manual of StyleWordが曖昧であるか、それなしでは理解できない。)
パッケージhyphenat
を使用し、フィンランド語Internet-yhteys(Eng。インターネット接続)のような複合語をInternet\hyp yhteys
として記述します。間抜けに見えますが、私が見つけた最もエレガントな方法のようです。
multi-disciplinary
は、kennytmで説明されているように、ハイフネーションされません。ただし、multi-\-disciplinary
には、multidisciplinary
と同じハイフネーションの機会があります。
私はこれがなぜ機能するのかわからないことを認めます。説明されている動作とは異なります here (emphasis mine):
コマンド
\-
は、任意のハイフンをWordに挿入します。 これは、このWordでハイフネーションが許可される唯一のポイントにもなります。
multi\hskip0pt-\hskip0pt disciplinary
できますのように定義する
\def\:{\hskip0pt}
そして書く
multi\:-\:disciplinary
ロシアのbabelパッケージには、ハイフネーションを禁止しない独自のダッシュセットがあります。たとえば、"~
(二重引用符+チルダ)です。
同じ問題がありました。 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
コマンドになり、Wordの残りの部分でWordブレークを有効にします。これは、明示的なハイフンを含むすべての単語を通常どおりハイフネーションにする一般的なソリューションです。
-
は完全には拡張できないマクロになるため、-
がマクロであるとは思わない他のパッケージを読み込んだ後にこれを含めるようにしてください。
Edit:これは私の2番目のバージョンです。最初のバージョンは、{
または}
がハイフンの後に続いた場合、堅牢性が低下しました。これはそうではありませんが、最初のバージョンとは異なり、このバージョンの-
は完全には拡張できません。