lccode と uccode は何に使用されますか?

lccode と uccode は何に使用されますか?

\lccodeTeX では、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最初のコメント欄でこのトリックについて言及しています。

関連情報