TeXの記憶(54) — 文字を均等に配置したい

章や節の見出しが2文字や3文字の場合に、多めの文字数の幅で字間を開けて組むことがあります。
「5字どり」、「3字どり」という言葉で指定されます。

たとえば「補足」の文字列を3字どり、「まとめ」という文字列を5字どりにすると

0925a

のようになります。

TeXで3文字を5文字づめで表示するには

\hbox to 5zw{ま\hfil と\hfil め}

と\hfilを挿入すればいいのですが、手動で設定するのは面倒だし間違えも起こしやすいので以下のようなマクロを使っています。

\newcommand{\kintou}[2]{\leavevmode\hbox to #1{%
    \kanjiskip\z@ plus 1fill minus 1fill\xkanjiskip\kanjiskip #2\hfil}}

\kanjiskipは和文の文字間隔、\xkanjiskipは和文と欧文との文字間隔です。

これで終わりです。

pTeXやpLaTeXのフォントがmini10を使っている場合、「チャック」のように「ャ」と「ッ」のような文字が続いたら均等に間隔が

0925b

となってしまいます。フォントmin10がそのような仕様になっているためのようです。しかたがないからTeXの記憶(19) — 文字列を分解する(@tfor)と同じように1文字ずつ取り出して、その間に\hfilを入れることで解決しました。

\newcommand{\xKintou}[2]{\@tempcnta=0
  \@tfor\STR:=#2\do{\advance\@tempcnta\@ne}%
  \@tempcntb=\@tempcnta
  \leavevmode
  \hbox to #1{\@tempcnta=0
    \@tfor\STR:=#2\do{\advance\@tempcnta\@ne
      \STR
      \ifnum\@tempcnta<\@tempcntb\hfill\fi}}}

0925c

コメント