2013年3月30日土曜日

mdframed.styで定理環境を装飾する

追記:2016/05/21 定理環境をmdframed.styからtcolorbox.styに変更しました

LaTeXにおいて定理環境を枠で囲む方法は色々あるようですが、最近はthmtools.styを使っていました。ただ、枠線が通常の定理環境の外側に引かれるらしく、overfull \hboxの警告が大量に出ることや、定理環境がページを跨ぐことが出来ずレイアウトが大きく崩れることがあるのが気になっていました。

最近mdframed.styなるパッケージがあることを知り、少しずつ試していたものの、pstrickやtikzを使って描画するオプションをつけるとエラーが発生して使い物にならないためしばらく放置していました。どうやらpdftexを使ってタイプセットすることを前提としている節があり、日本語platex環境ではdefaultのオプション以外は使えないようです。

今現在試している自分の設定を晒しておきます。mdframed.styはMacTeX2012やTeXLive2012には標準で含まれているはずです。プリアンブルに以下を記述しておきます。

\usepackage{amsthm}
\usepackage{xcolor}
\usepackage{mdframed} %複数ページをまたぐフレーム
\theoremstyle{definition}
\mdfdefinestyle{theoremstyle}{%
linecolor=gray!40,linewidth=.5pt,%
backgroundcolor=gray!10,
skipabove=8pt,
skipbelow=5pt,
innerleftmargin=7pt,
innerrightmargin=7pt,
frametitlerule=true,%
frametitlerulewidth=.5pt,
frametitlebackgroundcolor=gray!15,
frametitleaboveskip=0pt,
frametitlebelowskip=0pt,
innertopmargin=.4\baselineskip,
innerbottommargin=.4\baselineskip,
shadow=true,shadowsize=3pt,shadowcolor=black!20,
theoremseparator={.},
}
\mdtheorem[style=theoremstyle]{defi}{$\blacklozenge$定義}[chapter]
\mdtheorem[style=theoremstyle]{prop}[defi]{$\blacklozenge$命題}
\mdtheorem[style=theoremstyle]{theo}[defi]{$\blacklozenge$定理}
\mdtheorem[style=theoremstyle]{lem}[defi]{$\blacklozenge$補題}
\mdtheorem[style=theoremstyle]{coro}[defi]{$\blacklozenge$系}
\mdtheorem[style=theoremstyle]{axiom}[defi]{$\blacklozenge$公理}

見た目は次のようになります。陰が無いと少し寂しい感じになるのでつけてみました。
しかしページを跨ぐときにも陰がついてしまうのが困り者です。


うーん。これじゃない感が払拭出来ませんが、thmtoolsのときよりはマシになったかも。ちなみにoverfull \hboxの警告は少なくなったものの、bad breakというmdframedの警告が大量に出るようになりました。