\lccode
TeX では、256 バイトのそれぞれに、 と が関連付けられています\uccode
。これらは範囲 [0,255] の整数で、特に\lowercase
と の\uppercase
動作方法を示します。もちろん、他の数値 (たとえば、mathcode や catcode) も多数ありますが、ここでは大文字と小文字を変更するコードに焦点を当てています。
TeXbook を見ると、\lccode
との次のような用法がわかります\uccode
。
\lowercase
<general text>
引数内の各文字トークンを、同じカテゴリ コードを持つ文字トークンに変換しますが、文字コードは\lccode
元の文字コードの に等しくなります。ただし、 が\lccode
ゼロの場合は、元の文字コードが保持されます。\uppercase
<general text>
代わりにを使用すると、同じように動作します\uccode
。ハイフン付けをするとき、TeX は、その範囲内の文字 (カテゴリ コード 11 または 12 のトークン、または chardef されたトークン、つまり char) をすべて取得し、ゼロ以外の を持つ文字を「文字」として定義します。 が文字コードと等しい
\lccode
場合、文字は小文字になります。\lccode
これですべてですか? 特に、TeX はプリミティブ\uccode
以外の目的でを使用しますか\uppercase
? 他のエンジン、pdfTeX、XeTeX、LuaTeX についてはどうですか?
答え1
がゼロに設定されている\lccode
場合、文字の がハイフネーションに使用されます。\uchyph
\documentclass{article}
\begin{document}
\uchyph=0 %
\begingroup
\lccode`\C=`\C
Some filler text.
Some filler text.
Some filler text.
Some filler text.
Capitalised word.
\par
\endgroup
\begingroup
\lccode`\C=`\c
Some filler text.
Some filler text.
Some filler text.
Some filler text.
Capitalised word.
\par
\endgroup
\begingroup
\uccode`\C=`\C
Some filler text.
Some filler text.
Some filler text.
Some filler text.
Capitalised word.
\par
\endgroup
\begingroup
\uccode`\C=`\c
Some filler text.
Some filler text.
Some filler text.
Some filler text.
Capitalised word.
\par
\endgroup
\end{document}
したがって、これは誤解を招くような名前が付けられていることに注意してください。\uchyph
テストされるのは、単語が小文字 (それ\lccode
自体に等しい文字) で始まるかどうかです。
答え2
の内側の文字\patterns
は を通じてマッピングされます\lccode
。実際、これは - や 0-9 を含むハイフネーション パターンを指定できる唯一のメカニズムです。文字どおりに記述すると、ハイフネーションの優先順位またはハイフネーション ポイントとして解釈されるからです。
hypht1.tex
最初のコメント欄でこのトリックについて言及しています。