本マクロでは, 1ビットの幅や高さとビットフィールドに記述する文字列は 独立しています。従って実際にはビットフィールドの文字列の方が, 1ビットの幅よりも長くてもそのまま, はみ出させて描画します。
\RegisterDraw{3mm}{5mm}{\REG<7:0>{とても長い長い長い文字列\\です}}
これを防ぐ為には予め, 最も長い文字列をダミーの box に入れて長さを 計算することによって実現出来ます。
\newbox\DummyBox \setbox\DummyBox\hbox{% \sf\shortstack{とても長い長い長い文字列\\です。}} \RegisterDraw{.126\wd\DummyBox}{1.1\ht\DummyBox}{% \REG<7:0>{とても長い長い長い文字列\\です。}}
\wd
, \ht
という TeXのプリミティブを使用する事に
よって長さを求める事が出来ます。
この例では幅を求める場合に 0.126 という値を乗じていますが,
これは, 8ビットを打ち貫で表示していますので, 1ビットの長さを得る為には
\wd
で求めた値を 8 で割る必要があります。
で 1.125 という値が求まりますが, これだと文字と罫線の間にスペースが
入りませんので 0.126 という値を乗じています。高さの方も同様の処理
で求めています。