読者です 読者をやめる 読者になる 読者になる

ossan-arrow

Lust und Liebe zu einem Ding macht alle Mühe und Arbeit gering.

Theorem環境で全角括弧を使う

昨日ちょうどTwitterの方で話題になったので、theorem.styを使った時に定理の名前を全角括弧で包む方法について調べてみました。問題を提供していただいた@さんに感謝。
さて、theorem.styを普通に使うと、下のような表記になります。
f:id:ossan-arrow:20140412001122p:plain
今回は、この丸括弧を半角から全角に変えるのが目標です。
困った時に最初に見るのはスタイルファイルのドキュメント。TeX Liveなら

texdoc theorem

と入力すれば、該当するPDFファイルが開く筈です。ここで「丸括弧」にあたる英語の"parenthesis"を探すと、その複数形"parentheses"が見つかりました。どうやら\th@plainの中の\@opargbegintheoremで定義されているようで、見てみるとマニュアルには

\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\ (##3)]}}

の文字が。どうやらこの括弧が出てきているようです。というわけで、\th@breakを探してみることに。
theorem.styで該当部分を検索してみると、どうやらplainの場合はthp.styというファイル内で定義されているようです。というわけで、thp.styを開いて該当部分をプリアンブルにコピー&ペーストして括弧を半角に直して\makeatletterと\makeatotherで挟めば出来上がり。

\makeatletter
\gdef\th@plain{\normalfont\itshape
  \def\@begintheorem##1##2{%
        \item[\hskip\labelsep \theorem@headerfont ##1\ ##2]}%
\def\@opargbegintheorem##1##2##3{%
   \item[\hskip\labelsep \theorem@headerfont ##1\ ##2\ (##3)]}}
\makeatother

仕上がりはこうなります。
f:id:ossan-arrow:20140412002640p:plain
\theoremstyleでスタイルを変更している場合には、theorem.styから対応するスタイルファイル(例えばbreakならthb.sty)を探して、該当部分を変更する必要が有ります。オマケにbreakの場合を書くと

\makeatletter
\gdef\th@break{\normalfont\slshape
  \def\@begintheorem##1##2{\item[%
       \rlap{\vbox{\hbox{\hskip \labelsep\theorem@headerfont ##1\ ##2}%
                   \hbox{\strut}}}]}%
\def\@opargbegintheorem##1##2##3{%
  \item[\rlap{\vbox{\hbox{\hskip \labelsep \theorem@headerfont
                     ##1\ ##2\ (##3)}%
                    \hbox{\strut}}}]}}
\makeatother

となります。例によって素人が考えた方法なので、もっと適切な方法が有りましたら御教授頂けると幸いです。
今回は技術的な話だったので、いつものノホホンとした記事を楽しみにしてくださっている皆さんにとっては退屈だったかもしれません。えっ?いつも退屈??……いやいや。否定できない所がなんとも。精進します。