LaTeXで日本語の文書を書くときに, 安直にtheorem環境を定義すると, 日本語の部分は変化がないのに 英語の部分はイタリックでなんか収まりが悪いし, どこまで定理の部分でどこから本文にもどったのか 一見ではわからないから嫌だなぁとか思ったので, なんとなくその安直な解決法を書いておきます.
もう少し状況を説明すると, 僕自身は普段amsthm.styを必ず呼んでいて, まぁその延長で何かできないかなという方向で 解決を試みました. 一応, 形になったので, styファイルにまとめて, 再利用できるようにしましたというものです. 主に自分のための備忘ですので他の人にはわからないかもしれません. また, ここに書いてあるものなどを利用するときは自己責任でということで.
ここにあるjapaneseaddonamsthm.sty
をダウンロードし, 日本語の文書のTeXのソースと同じ所にでも置く.
本文のプリアンブルには \usepackage{amsthm}
と \usepackage{japaneseaddonamsthm} を書いておく.
theorem環境を定義する前に,
\theoremstyle{japanese}と書いておく.
japaneseaddonamsthm.sty
を読み込むと,
\theoremstyle{japanese}
が使えるようになります.
japanese
というtheoremsyle
は何かというと,
要は, 題目はボールド, ステートメントはローマン, ステートメントの後に終わりの記号をおくという様な環境です.
ステートメントの終わりの記号は,
\statementendsymbol
に定義されているものが使われますので,
これを定義しなおせば, 好きな記号に変更できます.
(例: \renewcommand{\statementendsymbol}{\mbox{(かもしれない.)}}
)
また, ステートメントの終わりに記号を置く方法はproof環境のそれを利用しています.
ディスプレイの式で終わっているときなどに,
記号を出力したい場所をどうにかしたい時は,
\qedhere
とか\tag*{\mbox{\qedhere}}
みたいものを使ってください.
\qedhere
の使い方はamdthm
の説明書を見てください.
japaneseaddonamsthm.sty
では主に3つのことをやっています.
\th@japanese
を定義し,
\theoremstyle{japanese}
を指定した時の,
\begin{hoge}
で行うこと(フォントの設定とか)を書いています.
この中で一時的に(この環境内では)
\qedsymbox
が\statementendsymbol
となるように,
(def
で)再定義してあります.
\def\th@japanese{\def\qedsymbol{\statementendsymbol}\pushQED{\qed} % \normalfont % body font }
\@endtheorem
を再定義して,
通常の処理の前に, \popQEDを実行するようにします.
\@endtheorem
は,
定理環境の\end{hoge}
で実行されるコマンドの実体です.
こうすることで, 自動的にステートメントが終わった記号を出力
するようにします.
\let\nous@old@endtheorem\@endtheorem \def\@endtheorem{\popQED\nous@old@endtheorem}
残りは,
\statementendsymbol
の定義関連です.
\newcommand{\halfopenbox@nous@japthm}{\leavevmode% \hbox to.77778em{\hfil\vrule% \vbox to.675em{\hrule width.3em% \vfil\hrule}\vrule\hfil}} \providecommand{\statementendsymbol}{\halfopenbox@nous@japthm}
[../]