名前: トノ 日時: 2002-04-04 19:50:05 IPアドレス: 150.35.254.*
>>7742 奥村先生、ご教示ありがとうございます。 様々なケースで試してみたつもりだったのですが、縦組というのは普段 使わないだけに盲点でした。 そこでさらに試してみたところ、jarticle でも、\tate で縦組モードに入って 文字サイズを変更すれば \cht、\cdp、\cwd、\cvs、\chs、\cHT の値が 更新される(文字サイズを変更せずに \selectfont を呼び出しただけでは 駄目)ということに気が付きました。 \documentclass{jarticle}\relax \newcommand*{\printvalues}{% \noindent \string\cht=\the\cht\\ \string\cdp=\the\cdp\\ \string\cwd=\the\cwd\\ \string\cvs=\the\cvs\\ \string\chs=\the\chs\\ \string\cHT=\the\cHT\par } \begin{document} \ttfamily\tate \selectfont % 文字サイズは変えずに \selectfont だけ実行 \printvalues % ここではまだ全部 0.0pt のまま \dotfill\par \large \printvalues % ここは真っ当な値が出力される \dotfill\par \small\selectfont \printvalues \end{document} plcore.ltx の中の \selectfont の定義を調べてみると、 1. \selectfont が \size@update を呼び出す。 2. \size@update が \adjustbaseline を呼び出す。 3. \adjustbaseline が、\cht、\cdp、\cwd、\cvs、\chs、\cHT の値を更新し、 それを元に \tbaselineshift を計算する。 ただし、\adjustbaseline の定義は \iftdir で始まり、それに対応する \fi で終わっているので、横組モードだと何もしない。 というような処理になっているようです。 ※ かなり複雑なので、読み切れているかどうかあまり自信はありませんが・・・。 \adjustbaseline の定義の様子からすると、\cht、\cdp、\cwd、\cvs、\chs、 \cHT は、\tbaselineshift を計算する際の、いわば scratch use のための もの、という感じで、横組で更新されないのはバグというよりは仕様っぽいように 思われます。 マクロを書いていて、現在の和文字の高さや深さが知りたいということは 往々にしてあるので、横組でもこれらに値が設定されていれば、 便利なんじゃないかと思ったんですけど・・・ 地道に \settoheight/\settodepth を使っていきますか・・・
この書き込みへの返事: