tcolorboxでテストの解答を埋め込んだファイルを作る

高校の数学のプリントやテストでは、問題用紙と解答用紙が一体になっているものが多い。このタイプのプリントやテストの解答は、問題用紙と同じレイアウトに解答を埋め込んだ形で作りたい。

このとき、問題ファイルと解答のファイルが別々になっていると不便である。基本的には、同一ファイル内で管理したい。

Studyaidは嫌い(Macでそもそも動かないし)なのでTeXで作るものとする。

TeXで作る場合は、emathのemathAeで提供されているKaitou環境やemathのhakoの\maskHako(解答が箱型の形状になっている場合)を使えば簡単に実現できる。

参考: emathのwikiの考査用雛形

しかし、

  1. emathを使いたくない
  2. 高さを簡単に調整したい(vfillなどで調整する必要がある)

というときにはやや使いにくい。

tcolorboxパッケージ(これはTeX Liveならデフォルトで入っているはず)のvisibleオプションを使うとこれが解決できる(2015/01/06の新機能)。

\begin{tcolorbox}[invisible]
かいとう
\end{tcolorbox}

とすると、解答が表示されない。invisibleの部分をvisibleにすると解答が表示される。

解答を埋め込むべき部分は、当然何箇所もあるので、

\newcommand{\visible}{invisible}

とプリアンプルでマクロを定義して、上のinvisibleの代わりに\visibleとしておく。すると、プリアンプルの部分だけ書き換えて解答の表示・非表示が切り替えられる。

tcolorboxを解答埋め込みにしか使わないのであれば、tcolorboxのパラメーター一括セットの機能を使う。

\tcbset{invisible}

として、全てのボックスにinvisibleの値をセットしておく。解答を表示したいときにはvisibleに切り替える。

tcolorboxはデフォルトの背景色が灰色で枠線も表示されるので、通常はこれらを消す設定も同時にしておく。tcolorboxを使う前(\begin{document}の直後とか)に

\tcbset{colframe=white, colback=white, invisible}

としておけば、

\begin{tcolorbox}
かいとう
\end{tcolorbox}

とすれば解答が消える。tcolorboxなので幅や高さの指定なども容易で

\begin{tcolorbox}[height=10pc]
かいとう
\end{tcolorbox}

などとすれば良い。なお、幅や高さを目視で微調整するときには、tcbsetの部分のcolframe=whiteの指定を一時的に切って調整すると楽。

なお、tcolorboxには環境を定義する機能があるので、その機能を使えばemathのkaitouのように違う名前をつけて解答の箱を作ることができる。(これはまた気が向いたら書く)

また、解答中にtikzで図を描く場合は、tikzの設定が優先されて図が描かれてしまうので工夫する。私はtikzの文字色を\kaicolなどとしておいて、問題のときにはwhiteにして解答のときにはblackなどに切り替えている。座標軸など一部の図のみは問題に残したいが解答のみを消したいというときも一工夫がいるがこれも気が向いたらまた書く。