Re: 欧文文字間を密着させたい

名前: .
日時: 2005-10-17 15:22:12
IPアドレス: 222.7.117.*

>>38618 >和文では均等割り付けで文字間を密着させることが可能ですが、 >欧文ではうまくいきません。 その理由(といっても,欧文文字列に対して“いつでも”うまくいかない わけでもないのですが)は,“均等割付”に用いたマクロの定義を お読みになれば,直ちにわかることです. 実際,世間でよく見かける定義では,単に \kanjiskip(たいていの和文文字間に入るグルー) \xkanjiskip(和文文字と欧文文字が隣り合う箇所の大半に入るグルー) \spaceskip(単語間空白の基準値(ただし,明示的に指定された場合のみ有効)) を設定することによって均等割付を実現しています. # もっと手を抜いた実装では,単に \makebox[<幅>][s]{<中身>} のごとく # アンダーフルさせてしまうものもあります. 欧文文字間にはそういったグルーは入らないのですから, “\kanjiskip 等の設定に頼った均等割付マクロ”は(空白文字を含まない) 欧文文字からなる文字列に対しては何の効果もないことが おわかりになるでしょう. もっとも,均等割付にはほかの方法もあり, マクロレベルの処理で均等割付の対象となる文字列を 1 文字ずつに分解し, 個々の文字の間に \hfil あるいは \hskip 0pt plus 1fill minus 1fill を挟み込む という方法もあります(文字間を詰める場合には,\hskip 0pt plus 1fill minus 1fill を用いたほうがよいでしょう). # そのような方針で定義されたマクロ(仮に \equispace{<幅>}{<文字列>} という # 記述で <文字列> を幅が <幅> になるように均等割付するものとします)を # 用いる場合には,単に \equispace{<幅>}{\theenumi} のようにするのではなく, # \protected@edef\@tempa{\protect\equispace{<幅>}{\theenumi}} # \@tempa # のごとく均等割付の対象を文字列レベルで“正しく”均等割付マクロに # 渡す必要があることもありますが… こういうことは単なる # マクロの展開順序の問題です. # 均等割付マクロの,今挙げた 2 通りの方針のそれぞれでの実装と # それらの挙動の比較は,例えば, # 『LaTeX2e マクロ&クラス プログラミング 基礎解説』の 2.4.1 項には # 載っています. [蛇足] 文字間隔を詰めていくと個々の文字が重なりかねないので, \scalebox あるいは \resizebox での変形についても検討してみてください.

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)