なんでやねんDTP・新館

はてなダイアリーから移行しました…

表組みの割り付け計算の胆

以前から気になっていた、表組みの割り付け計算で見落としがちな点を解説しておきたい。
まず、以下のような表組みを作った。



仮想ボディいっぱいある罫線素片罫線素片「┼」(U+253C)を20Qで、ベタ丸「●」(U+25CF)を10Qで入れ、中の罫線は2mmと0.2mmとしてある(周囲は罫なし)。



セル内の余白はすべて「0mm」としてあるので、各セルの左右幅(あるいは天地高さ)は、以下のように





それぞれ、「左(上)の罫の1/2+文字列長(あるいは行方向高さ※この場合は文字サイズと同じ)+右(下)の罫の1/2の合計」となるのは簡単に理解できるだろう。
作例では天地は自動計算されているが、一番上の画像にある通り天地・左右共に17.2mmとなる*1

                  • -

ここで、セル内に少なくとも1mmの余白が必要だとして、余白を1mmと設定した場合、(天地は自動計算するとしても)当然左右がオーバーするので以下のようになる。



ここで注目したいのは、セルの余白を罫幅の1/2の数値(を限度)に設定してもなんら変化はないという点。



  • 反転している部分がセルのサイズにあたるワケだが、それは境界の罫の半分を含み、かつ余白サイズに関係なく罫とは重ならないように配置される…ということである

つまり、余白の数値そのものは「0」だが明らかに(セル幅内に)罫幅の1/2は確保されている(必要とされている)ということになる*2
※この変な理屈の理解が最も重要


これさえ理解しておれば、あとはなにも難しく考えることはない。この場合も先ほどと同様、例えばセルの左右幅は「左罫の1/2+余白+文字列長(この場合は文字サイズと同じ)+余白+右罫の1/2」と考えて、



左から0+1+5+1+1、1+1+5+1+0.1、0.1+1+5+1+0 の合計値を設定してやれば大丈夫。
合計すれば、当然先ほどの左右17.2mm+6mm=23.2mmとなる(天地は自動計算されるがこれも23.2mm)。

※実作業としてはこの際にセルの余白に罫幅の1/2を加算して設定するのが胆


なお、10Qのベタ丸部分をセルのセンターに揃えるには、余白をすべて1mmにしたママではダメ。



余白に罫幅の1/2が含まれるのを忘れてはならない*3


すべて0mmとするか、



セル毎に各罫の1/2の数値を設定してやる必要がある。



実際の作業時には縦方向にセルを選択して左右の余白を設定し、横方向に選択して上下の余白を設定するということになるだろう。
また、表組みを構成する罫線が一定であったり、特に太くなく、太さの差があまりない場合は神経質になる必要はないだろうが、こういう理屈だけは頭に入れておく必要がある。
もちろん、表示内文字列ベタ組みなどで、正確な割り付け計算をするには必須の認識であることは言うまでもない。


後日の記事から表組みの割り付け計算についての簡単なまとめを転載
表組みの罫幅がすべて同じ場合や0.12mmなど細い場合は、罫幅を無いモノとして割り付けることも可能ではあるが、とにかく表組み設定の「セルの余白」には罫幅(の1/2)が含まれる(が、余白が罫幅の1/2より少なくても決して重なることはない)こと、表のサイズとしては周囲の罫幅(の1/2)も加算されることを頭に入れておきたい。

*1:10Qのベタ●もすべてセンターに入っている

*2:何かややこしい……もちろん余白としては「0」なのだが……

*3:その分(の半分?)センターからズレる…ちゃんと考えればいいのだが…なにしろズレる