TeX Alchemist Online

TeX を使って化学のお仕事をしています。

jsclasses 開発版における \mag の扱い

追記(2016/09/06):本記事で述べた「開発版 jsclasses」は,正式版としてリリースされ TeX Live 2016 のレポジトリに収録されました。

jsclasses では,ドキュメントクラスオプションで 10pt 以外の値が指定された場合,10pt で組版したものを \mag で拡大縮小することで版面を設計しています。 ただし,このように \mag を版面設計に積極的に使用するケースは世界的には珍しく,実際 TeX Live 2016 の LuaTeX では PDF出力モードでの \mag が廃止されてしまいました。

また,\mag の使用があまり一般的でないため,世の中には「\mag の使用を想定していないため \mag を指定すると誤動作する」というパッケージが時々存在します。

そうしたこともあって,開発版の jsclasses では,\mag を使用しない nomag というオプションが増設されました。 デフォルトはこれまで通り \mag を使う usemag というオプションが有効ですが,nomag を指定すると,\mag を使わずに実際のフォントサイズで組版されるようになります。

これにより,\hspace{1cm}\hspace{1truecm} が一致するようになります。

\mag を使わないことによる副作用とその対処

ただし,nomag を指定すると,Computer Modern (Latin Modern) のオプティカルサイズによる字形変化が起こり,組版結果の見た目の雰囲気が大きく変わってしまいます。

そこで,\mag を使わない場合も,10pt 以外の Computer Modern として,cmr8 や cmr12 などではなく cmr10 を拡大縮小したものを用いるよう NFSS にパッチを当てて用いるのが nomag* オプションです。

開発版 jsclasses を用いた実験

ソース

以下のソースの <mag指定><フォントサイズ指定> のところを色々と変えながら実験してみます。

\documentclass[fleqn,<mag指定>,<フォントサイズ指定>]{jsarticle}
\mathindent=0pt
\parindent=0pt
\begin{document}
The quick brown fox jumps over the lazy dog.

A\hspace{1cm}hoge

A\hspace{1truecm}hoge

\TeX\ 3.14159265

\[ \left( \int_0^\infty \frac{\sin x}{\sqrt{x}} dx \right)^2 
=\sum_{k=0}^\infty \frac{(2k)!}{2^{2k}(k!)^2} \frac{1}{2k+1}
=\prod_{k=1}^\infty \frac{4k^2}{4k^2 - 1} = \frac{\pi}{2} \]
\end{document}

usemag 指定(デフォルト)の場合

usemag + 10pt

f:id:doraTeX:20160817084747p:plain

usemag + 8pt

f:id:doraTeX:20160817084740p:plain

usemag + 17pt

f:id:doraTeX:20160817084733p:plain

このように,\mag が有効である場合,10ptの組版結果を拡大縮小することで 8pt や 17pt の版面を作成しているため,字形は何ptでも変わりません。10pt 以外では cmtruecm との違いが現れています。

nomag 指定の場合

nomag + 10pt

f:id:doraTeX:20160817084712p:plain

nomag + 8pt

f:id:doraTeX:20160817084706p:plain

nomag + 17pt

f:id:doraTeX:20160817084659p:plain

このように,nomag を用いた場合,cmtruecm が常に一致しています。ただし,8pt では cmr8 が用いられて文字が平べったく,17pt では cmr17 が用いられるため文字が細長くなってしまい,文書の雰囲気が大きく崩れています。特に,17pt の場合には数式記号と数式フォントとのバランスが崩壊しています。

nomag* 指定の場合

nomag* + 10pt

f:id:doraTeX:20160817084644p:plain

nomag* + 8pt

f:id:doraTeX:20160817084637p:plain

nomag* + 17pt

f:id:doraTeX:20160817084630p:plain

このように,nomag* を用いた場合,cmtruecm が常に一致しています。また,何pt指定の場合も cmr10 が拡大縮小して用いられるため,組版結果の見た目も相似になっています。

Computer Modern 以外の場合

以上のように比較すると,nomag* が最も優れているかのように見えますが,nomag* を用いた場合は NFSS にパッチを当てることによる不具合が発生する可能性も否定できません。Computer Modern のような癖のあるオプティカルサイズ選択を採用するフォントは珍しいため,Computer Modern を使わないのであれば,nomag を使っておくのが無難でしょう。

実際に試してみましょう。

nomag + pxfonts による実験

次のソースを <フォントサイズ指定> を変化させながらコンパイルします。

\documentclass[fleqn,nomag,<フォントサイズ指定>]{jsarticle}
\usepackage{pxfonts}
\mathindent=0pt
\parindent=0pt
\begin{document}
The quick brown fox jumps over the lazy dog.

A\hspace{1cm}hoge

A\hspace{1truecm}hoge

\TeX\ 3.14159265

\[ \left( \int_0^\infty \frac{\sin x}{\sqrt{x}} dx \right)^2 
=\sum_{k=0}^\infty \frac{(2k)!}{2^{2k}(k!)^2} \frac{1}{2k+1}
=\prod_{k=1}^\infty \frac{4k^2}{4k^2 - 1} = \frac{\pi}{2} \]
\end{document}

nomag + 10pt + pxfonts の場合

f:id:doraTeX:20160817084612p:plain

nomag + 8pt + pxfonts の場合

f:id:doraTeX:20160817084528p:plain

nomag + 17pt + pxfonts の場合

f:id:doraTeX:20160817084500p:plain

このように,pxfonts を用いた場合は,NFSS にパッチを当てる nomag* を使うことなく,nomag 指定のままであっても,文字サイズ指定によらず字形は相似になっています。それであれば,nomag で使うのが無難でしょう。

今後の選択基準

今後の jsclasses 文書における \mag の採用基準は,次のように考えればよいでしょう。

  1. 従来の jsclasses 文書との互換性を重視して \mag を用いた拡大縮小による版面設計を行う場合 ⇒ usemag(デフォルト)
  2. \mag と衝突するパッケージを用いるなどの理由で,\mag を使いたくない場合
    1. デフォルトの Computer Modern (または Latin Modern)を使用する場合 ⇒ nomag*
    2. Computer Modern (Latin Modern) 以外のフォントを使用する場合 ⇒ nomag