添字のお話

これは「TeX & LaTeX Advent Calendar 2018」の11日目の記事です.10日目は wtsnjp さん,12日目は kn1cht さんです.

概要とコード

次のコードで添字でのスペーシングを制御するお話.

\documentclass{jlreq}

\newmuskip\scriptthinmuskip \scriptthinmuskip.3\thinmuskip
\DeclareRobustCommand{\,}{%
   \relax\ifmmode
   \ifnum\mathstyle>\crampedtextstyle
     \mskip\scriptthinmuskip
   \else
     \mskip\thinmuskip
   \fi
   \else\thinspace\fi}

\spaceskip\fontdimen2\font
\newskip\scriptspaceskip \scriptspaceskip.5\fontdimen2\font
\DeclareRobustCommand{\ }{%
   \relax\ifmmode
   \ifnum\mathstyle>\crampedtextstyle
     \hskip\scriptspaceskip
   \else
     \hskip\spaceskip
   \fi
   \else\hskip\spaceskip\fi}

\begin{document}
\[
 \sum_{a \leq i < b{,}\ l(wt_{a\,b}) = l(w) + 1} S_{wt_{a\,b}}
\]
\end{document}

問題のあるスペースを含む状態

次は標準的に出力される状態で,スペーシングに問題がある出力例である.

これは次のコードにより記述されたものである.

\documentclass{jlreq}

\begin{document}
\[
 \sum_{a \leq i < b{,}\ l(wt_{a\,b}) = l(w) + 1} S_{wt_{a\,b}}
\]
\end{document}

問題があるのは次に示した部分である.

問題としているのは\ や\,で挿入されたスペースである.\ の大きさは言わば通常の本文サイズ用のものがそのまま適用された結果であり,小さい箇所でのスペーシングとしては適さないものになっている.また,\, の大きさは本文サイズ用の相対値と変らないため,選択されたフォントに対して適切でない状態にある.すなわち,そうとわかる最小かつ最大のスペースを選択できていない.

【注】今回はコードを簡単にするため,冒頭のコード例では直接的に値を与えた.
【注】ここでは,今回補正されたスペースの大きさの妥当性には踏み込まない.

スペースの補正前後での比較

上段は補正前の状態であり,下段が補正後の状態である.

概説

『LuaTeX Reference Manual』内のThe current math styleの節に示されている次のプリミティブを利用している.

\mathstyle

よく知られたように添字のスタイルはscriptstyle,scriptscriptstyle,およびそれらのcrampedである.

LuaTeXでは8つある各数式スタイルに0から7までの整数が割り振られており,『LuaTeX Reference Manual』にも示されているように\ifnumで条件分岐が可能である.次はその簡単な例である:

\ifnum\mathstyle=\displaystyle
  displaystyle
\else
  not displaystyle
\fi

さて,各数式スタイルに割り振られた数値は次のものである.

\displaystyle: 0
\crampeddisplaystyle: 1
\textstyle: 2
\crampedtextstyle: 3
\scriptstyle: 4
\crampedscriptstyle: 5
\scriptscriptstyle: 6
\crampedscriptscriptstyle: 7

これらは例えば次のようにしてわかる数値である.

$\displaystyle\mathstyle$

添字に関わるスタイルは\mathstyleの数値的に\scriptstyle以上のものたちである.したがって冒頭の記述で\,と\ の挙動を\scriptstyleを境に変更することができる.もちろん添字の添字であるもの(scriptscriptstyle)をさらに制御することも可能である.

参考文献

 - Victor Eijkhout『TeX by Topics』Addison-Wesley,1992
 - LuaTeX development team『LuaTeX Reference Manual』Version 1.08.0,2018
 - 木枝祐介『数式組版』ラムダノート,2018
 - ページ・エンタープライゼズ『LaTeX2ε [マクロ&クラス]プログラミング基礎解説』技術評論社,2002

---

修正記録

2018-12-11 12:35

問題としているのは\ や\,で挿入されたスペースであるが,その大きさは言わば通常の本文サイズ用のものがそのまま適用された結果であり,小さい箇所でのスペーシングとしては適さないものになっている.

問題としているのは\ や\,で挿入されたスペースである.\ の大きさは言わば通常の本文サイズ用のものがそのまま適用された結果であり,小さい箇所でのスペーシングとしては適さないものになっている.また,\, の大きさは本文サイズ用の相対値と変らないため,選択されたフォントに対して適切でない状態にある.

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

4
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。