tcolorbox で遊んでいるけどこれ面白いな
— 515ひかる@求職中 (@515hikaru) 2015年11月8日
やろうとすればこいつで定理環境作れそう
— 515ひかる@求職中 (@515hikaru) 2015年11月8日
やろうとしたら簡単に出来たので, メモしておく. やって良いのかは知らない.
きっかけ
tcolorbox
(CTAN はこちら) に目をつけたのは, 僕は参加していない*1けれど, 昨日の 11/7 の TeXユーザーのつどい にてこのパッケージが紹介されたとの Tweet を見かけて(どなたのかは忘れました, ごめんなさい), 自分も使ってみようかと思った次第. マニュアルをとりあえず見てみると標準でカウンターがついていて, タイトルなどの装飾がかなり楽にできる雰囲気を醸し出していたので, 定理環境っぽいものを作ってみることにした, っていうのがこの記事の主題です.
まずは普通に使ってみる
とりあえず普通に使うのは簡単. 文面は宇多田ヒカルさんの「ぼくはくま」によります.
\begin{tcolorbox}[title=ぼくはくま.] ぼくはくま. くるまじゃないよ. \end{tcolorbox}
と入力すると, こんな感じの出力に.
これだとたとえば公式の文書とか書類にするには少し装飾過多という感じなので, 背景色とかを白で調整したりしましょう.
\begin{tcolorbox}[colback=white,colframe=black,colbacktitle=white,coltitle=black,title=ぼくはくま.] ぼくはくま. くるまじゃないよ. \end{tcolorbox}
まぁ他にも無数にオプションはあるので, マニュアルを読もうという感じですね.
カウンター付き box を作る
マニュアルの p.14 に次のような例がある.
\newtcolorbox[auto counter,number within=section]{pabox}[2][]{% colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries, title=Examp.~\thetcbcounter: #2,#1} \begin{pabox}[colback=yellow]{Hello there} This is my own box with a mandatory numbered title and options. \end{pabox}
出力はマニュアルを見てもらうとして, これをちょっとだけ応用すれば定理環境が作れる*2よな……と簡易的に作ったのがこちら.
\newcommand{\kara}{} \newtcolorbox[auto counter, number within=section]{thmbox}[1][]{% colback=red!5!white, colframe=red!75!black, fonttitle=\gtfamily, title=Thm.~\thetcbcounter% \if #1\kara \else : #1 \fi}
色とかは何でもいいのだけど, ほとんどコピーしたのでそのまま.
\kara
は, 要するにタイトル(オプション引数)が未入力のときとそうでないときで条件分岐するために作っただけです. これくらい に定義されていそうなものですが……もし知っている人いたら教えてください.
これで次のような出力ができる.
\begin{thmbox} てすと \end{thmbox}
タイトルをつけると, こんな感じ.
\begin{thmbox}[Fermat の小定理] $a$ を整数, $p$ を素数とするとき, \begin{align} a^{p-1} \equiv 1 \pmod p \end{align} が成立する. \end{thmbox}
管理が面倒
しかし, これだと例えば propbox
, lembox
って感じでいくつも newtcolorbox
しなきゃいけないし, ひとつ設定を変えるたびにすべての箱の設定を変更しなきゃいけないので面倒ですよね.
そこで, 簡易的に同じ種類の箱を名前だけ変えて作るマクロを書いてみました.
\newcommand{\newThmBox}[2]{% #1 = environment name, #2 = headder title \newtcolorbox[auto counter, number within=section]{#1box}[1][]{% colback=red!5!white, colframe=red!75!black, fonttitle=\gtfamily, title=#2.~\thetcbcounter% \if ##1\kara \else : ##1 \fi} % マクロ内で引数をとるものは, # を重ねる. }
わからなかったのはこのときの, \newcommand
内にある \newtcolorbox
の引数のとり方だったんですが, これは # を重ねるだけでいいようで. 下記リンクが参考になりました.
これでたとえば, \newThmBox{lem}{Lemma}
とかして, 次のように入力しましょ.
\begin{lembox}[title test] test \end{lembox}
という感じで, 同じ要領でハコをまとめて管理できます. 便利ですね.
このやり方だと, 箱ごとに番号をつけてしまうので, 命題と定理とを連番で付けたい人とかには向かないですが, 僕はやる気はないのでこの記事には載せません.
まぁ定理環境を作る必要はおそらくなかったのですが, tcolorbox.sty
に親しむという意味でちょっと遊んでみましたというだけです.
しかし日本語の tcolorbox
の記事とかほとんどなかったのだけれど, マニュアルが英語しかないとあまり広まらないんだろうか. これは永遠の課題やろなぁ.