LaTeXのOTFパッケージ+新jsドキュメントクラスでredeffont
これまで
\usepackage[deluxe, expert]{otf} \usepackage{redeffont}
を使っていて,見出しのフォントが太字にならないことに悩んでいた.今回,太字にならない原因と,その対策が分かったのでそれをまとめる.
そもそもredeffont.styが新ドキュメントクラスに対応していなかった
このことはredeffont.styのソースを読んでみれば当然な挙動であることが分かった.以下,redeffont.styの冒頭部分抜粋
\newif\if@asciiclasses \@asciiclassesfalse \newif\if@articleclass \@articleclassfalse \newif\if@bookclass \@bookclassfalse \@ifclassloaded{jarticle}{\@asciiclassestrue\@articleclasstrue}{} \@ifclassloaded{jbook}{\@asciiclassestrue\@bookclasstrue}{} \@ifclassloaded{jreport}{\@asciiclassestrue}{} \@ifclassloaded{tarticle}{\@asciiclassestrue\@articleclasstrue}{} \@ifclassloaded{tbook}{\@asciiclassestrue\@bookclasstrue}{} \@ifclassloaded{treport}{\@asciiclassestrue}{} \if@asciiclasses \else \endinput\fi
\endinputは,これ以上のファイルの読み込みを停止するという命令.すなわち,jarticleやjbookなどの,旧ドキュメントクラスの場合のみredeffontの定義が読み込まれることになる.見出しのフォントが置き換えられないのも当然だ.
redeffont.styが不要だった
redeffontが使えない,それでは自分で定義を書くしかない.そう思い,jsarticle.clsの\section定義部分を見てみたら以下のようになっていた.
\if@twocolumn \newcommand{\section}{% \@startsection{section}{1}{\z@}% {0.6\Cvs}{0.4\Cvs}% {\normalfont\large\headfont\raggedright}} \else \newcommand{\section}{% \if@slide\clearpage\fi \@startsection{section}{1}{\z@}% {\Cvs \@plus.5\Cdp \@minus.2\Cdp}% 前アキ {.5\Cvs \@plus.3\Cdp}% 後アキ {\normalfont\Large\headfont\raggedright}} \fi
なんと,\headfontというコマンドが定義されているではないか.定義は以下のようになっていた.
\newcommand{\headfont}{\gtfamily\sffamily}
なるほど.こいつを置き換えてやればよさそうだ."jsarticle redeffont"でググっても情報が出てこなかったわけだ.
結局どうしたか
今後はredeffontの代わりに,以下のように宣言してやることにする.
\usepackage[deluxe, expert]{otf} \renewcommand{\headfont}{\gtfamily\sffamily\bfseries}