This Project Has Not Released Any Files
TeX の内部では,水平ボックス (hbox),垂直ボックス (vbox),(行分割前の)段落などは,ノードの線形リストの形で 表現されている.このページでは,これらのノードについて簡単に説明する.
実際にボックスの中身がどのようなリストで表現されているかは,下節の方法によって調べることができる. TeX において,リストを構成する代表的なノードは次のようなものである(以下 p をノードとする). tex.web の Part 10: Data structures for boxes and their friends を参照.
凡例
本節は フォーラム 57202番の ZR さんによる投稿の転載です.
pTeX の「自動挿入」の振舞を理解するには、(ソースを読むと いう方法を採らないなら)実験して調べる必要がありますが、 「自分で実験して調べる方法」について説明しておきます。 TeX の文法に関しては、「パラメタの代入」(\kanjiskip=1pt等)さえ知っていれば十分です。
\documentclass{jsarticle} % min10 よりも jis の方が「予想外のことが起こり難い」ので % jsarticle にします。 \showboxdepth=100 % ボックスネスト 100 段まで表示 \showboxbreadth=100 % 各ボックスレベルで 100 ノードまで表示 %\tracingonline=1 % 中身を端末にも表示したい場合 %\nonstopmode % \showbox (やエラー)で止まらなくなります。 \tracingoutput=1 % 実際に出力されるページの中身を出力します。 \begin{document} % \showbox で \box0 の中身が(ログに)ダンプ出力されます。 % \tracingonline=1 ならば端末にも出力されます。 \setbox0=\hbox{\textgt{漢字}.} \showbox0 % あるいは LaTeX とのハイブリッドな記法の場合。 \newsavebox{\testbox} \savebox{\testbox}{\textgt{漢字}.} \showbox\testbox \end{document}これを普通に platex コマンドで処理すると、 (途中「! OK.」のプロンプトはそのまま Entry 空打ち) ログの中では「! OK.」の箇所に「ボックスの中身」が出力されます。 この各々の行がボックスの中にある「ノード」を表しています。> \box0= \hbox(7.4726+1.33438)x21.27153, yoko direction .\JY1/gt/m/n/10 漢 .\JY1/gt/m/n/10 字 .\OT1/cmr/m/n/10 . ! OK. l.12 \showbox0また、\tracingoutput=1 とすると、各ページ出力時に、その全体のダンプがログに出力されます。 (上の例ではページは全く出力していない。) ただし、pTeX の場合には一つ注意を要する点があり、それは 「2 つの和文文字(ノード)が連続している場合は、 実際には『暗黙の kanjiskip』があると見なす必要がある」ということです。ソース中で和文文字が単純に並んでいる箇所(当然和文の文書 なら大量にあります)では、ほとんどの場合、2つの文字ノード の間に kanjiskip のノードだけがある結果になります。 (pTeX 開発当時の非常に限られた)メモリ資源を無駄にしない ために、「この kanjiskipを実際に入れない」(しかし処理上は いつでもあると見なす)という最適化がなされているのです。
つまり、上の結果は実際には次のものだと見なす必要があります。
\hbox(7.4726+1.33438)x21.27153, yoko direction .\JY1/gt/m/n/10 漢 .\glue(\kanjiskip) 0.0 plus 0.92473 minus 0.0924 .\JY1/gt/m/n/10 字 .\OT1/cmr/m/n/10 .
次のように \kanjiskip にゼロでない自然長を指定すると:
\kanjiskip=500pt \setbox0=\hbox{\textgt{漢字}.} \showbox0暗黙の kanjiskip が 500pt あるのでボックスの幅はそれだけ増えて(521.27153)います:\hbox(7.4726+1.33438)x521.27153, yoko direction .\JY1/gt/m/n/10 漢 .\JY1/gt/m/n/10 字 .\OT1/cmr/m/n/10 .あとは、「限定水平モード(LaTeX の『LR モード』)に 特有の振る舞い」に気をつける必要があるけど、細かい話 なので省略。
tie -m ptex.web $SRC/tex.web $SRC/tex.ch tie -c ptex.ch ptex.web $SRC/ptexdir/ptex-base.ch weave ptex.web ptex.ch
\let\maybe=\iftrueと変えると,変更されていない部分も合わせて(即ち,pTeX 全部の)ソースが手に入る.
\input pdfwebmacに変え,pdftex で処理すると,リンクつき pdf ができる.