追記(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
usemag
+ 8pt
usemag
+ 17pt
このように,\mag
が有効である場合,10ptの組版結果を拡大縮小することで 8pt や 17pt の版面を作成しているため,字形は何ptでも変わりません。10pt 以外では cm
と truecm
との違いが現れています。
nomag
指定の場合
nomag
+ 10pt
nomag
+ 8pt
nomag
+ 17pt
このように,nomag
を用いた場合,cm
と truecm
が常に一致しています。ただし,8pt では cmr8 が用いられて文字が平べったく,17pt では cmr17 が用いられるため文字が細長くなってしまい,文書の雰囲気が大きく崩れています。特に,17pt の場合には数式記号と数式フォントとのバランスが崩壊しています。
nomag*
指定の場合
nomag*
+ 10pt
nomag*
+ 8pt
nomag*
+ 17pt
このように,nomag*
を用いた場合,cm
と truecm
が常に一致しています。また,何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 の場合
nomag
+ 8pt
+ pxfonts の場合
nomag
+ 17pt
+ pxfonts の場合
このように,pxfonts を用いた場合は,NFSS にパッチを当てる nomag*
を使うことなく,nomag
指定のままであっても,文字サイズ指定によらず字形は相似になっています。それであれば,nomag
で使うのが無難でしょう。
今後の選択基準
今後の jsclasses 文書における \mag
の採用基準は,次のように考えればよいでしょう。
- 従来の jsclasses 文書との互換性を重視して
\mag
を用いた拡大縮小による版面設計を行う場合 ⇒usemag
(デフォルト) \mag
と衝突するパッケージを用いるなどの理由で,\mag
を使いたくない場合- デフォルトの Computer Modern (または Latin Modern)を使用する場合 ⇒
nomag*
- Computer Modern (Latin Modern) 以外のフォントを使用する場合 ⇒
nomag
- デフォルトの Computer Modern (または Latin Modern)を使用する場合 ⇒