The tcolorbox package
The Core Package
8 Recording¶
The package provides some macros and options to take records during compilation. This is done by LaTeX file operations to save some data to a file for later usage. The main application scenario is depicted in Section 8.3 where information about example solutions is recorded and read again in Section 8.4.
8.1 Macros¶
\tcbstartrecording[⟨file name⟩]New: 2014-11-28¶
Opens a file denoted by ⟨file name⟩ for writing the records. The default file name is \jobname.records. See Section 8.3 for an example application.
In some situations, a not existing optional parameter may cause parsing problems. If this happens (or just for precaution), use
\tcbstartrecording\relax
or
\tcbstartrecording[\jobname.records]
\tcbrecord{⟨content⟩}New: 2014-11-28¶
Records any ⟨content⟩ to the record file. \tcbrecord is implemented as \immediate\write. \tcbstartrecording has to be called before; otherwise, \tcbrecord is silently ignored.
\tcbrecord{\string\solution{\thetcbcounter}{solutions/exercise-\thetcbcounter.tex}}
\tcbstoprecordingNew: 2014-11-28¶
Closes the current record file which was opened by \tcbstartrecording before.
\tcbinputrecords[⟨file name⟩]New: 2014-11-28¶
Opens a file denoted by ⟨file name⟩ for reading the records via \input. The default file name is the name of the last used record file for saving. \tcbstoprecording has to be called before.
8.2 Options¶
/tcb/record=⟨content⟩(style, no default)New: 2014-11-28¶
Records any ⟨content⟩ to the record file, see \tcbrecord. This key can be used several times to write several lines.
record={\string\solution{\thetcbcounter}{solutions/exercise-\thetcbcounter.tex}}
/tcb/no recording()New: 2014-11-28¶
Disables \tcbrecord and /tcb/record inside the current group.
8.3 Example: Exercises¶
The following application example creates exercises and their corresponding solutions. Each pair is generated inside a single tcolorbox where the solution is given below \tcblower. For every example, the solution part is saved by /tcb/savelowerto to a file. The saving is recorded using /tcb/record. To enlighten the possibilities, the second exercise has no solution. Finally, the solutions are input in Section 8.4.
% \tcbuselibrary{skins}
\NewTColorBox[auto counter,counter within=section]{exercise}{+!O{}}{%
enhanced,colframe=green!20!black,colback=yellow!10!white,coltitle=green!40!black,
fonttitle=\bfseries,
underlay={\begin{tcbclipinterior}
\shade[inner color=green!80!yellow,outer color=yellow!10!white]
(interior.north west) circle (2cm);
\draw[help lines,step=5mm,yellow!80!black,shift={(interior.north west)}]
(interior.south west) grid (interior.north east);
\end{tcbclipinterior}},
title={Exercise~\thetcbcounter:},
label={exercise@\thetcbcounter},
attach title to upper=\quad,
after upper={\par\hfill\textcolor{green!40!black}%
{\itshape Solution on page~\pageref{solution@\thetcbcounter}}},
lowerbox=ignored,
savelowerto=solutions/exercise-\thetcbcounter.tex,
record={\string\solution{\thetcbcounter}{solutions/exercise-\thetcbcounter.tex}},
#1
}
\NewTotalTColorBox{\solution}{mm}{%
enhanced,colframe=red!20!black,colback=yellow!10!white,coltitle=red!40!black,
fonttitle=\bfseries,
underlay={\begin{tcbclipinterior}
\shade[inner color=red!50!yellow,outer color=yellow!10!white]
(interior.north west) circle (2cm);
\draw[help lines,step=5mm,yellow!80!black,shift={(interior.north west)}]
(interior.south west) grid (interior.north east);
\end{tcbclipinterior}},
title={Solution of Exercise~\ref{exercise@#1} on page~\pageref{exercise@#1}:},
phantomlabel={solution@#1},
attach title to upper=\par,
}{\input{#2}}
\tcbset{no solution/.style={no recording,after upper=}}
\tcbstartrecording\relax
\begin{exercise}
Compute the derivative of the following function:
\begin{equation*}
f(x)=\sin((\sin x)^2)
\end{equation*}
\tcblower
The derivative is:
\begin{align*}
f'(x) &= \left( \sin((\sin x)^2) \right)'
=\cos((\sin x)^2) 2\sin x \cos x.
\end{align*}
\end{exercise}
\begin{exercise}[no solution]
It holds:
\begin{equation*}
\frac{d}{dx}\left(\ln|x|\right) = \frac{1}{x}.
\end{equation*}
\end{exercise}
\begin{exercise}
Compute the derivative of the following function:
\begin{equation*}
f(x)=(\sin(\sin x))^2
\end{equation*}
\tcblower
The derivative is:
\begin{align*}
f'(x) &= \left( (\sin(\sin x))^2 \right)'
=2\sin(\sin x)\cos(\sin x)\cos x.
\end{align*}
\end{exercise}
\begin{exercise}
Compute the derivative of the following function:
\begin{equation*}
f(x)=\sqrt{x^3-6x^2+2x}
\end{equation*}
\tcblower
The derivative is:
\begin{align*}
f'(x) &= \left( \sqrt{x^3-6x^2+2x} \right)'
= \frac{3x^2-12x+2}{2\sqrt{x^3-6x^2+2x}}.
\end{align*}
\end{exercise}
\begin{exercise}
Compute the derivative of the following function:
\begin{equation*}
f(x)=\left(\frac{2+3x}{1-2x}\right)^3
\end{equation*}
\tcblower
The derivative is:
\begin{align*}
f'(x) &= \left( \left(\frac{2+3x}{1-2x}\right)^3 \right)'
= 3 \left(\frac{2+3x}{1-2x}\right)^2 \frac{(1-2x)3-(2+3x)(-2)}{(1-2x)^2}
= \frac{21(2+3x)^2}{(1-2x)^4}.
\end{align*}
\end{exercise}
\begin{exercise}
Compute the derivative of the following function:
\begin{equation*}
f(x)=\frac{\cos x}{(\tan 2x)^2}
\end{equation*}
\tcblower
The derivative is:
\begin{align*}
f'(x) &= \left( \frac{\cos x}{(\tan 2x)^2} \right)'
= \left( \frac{\cos x (\cos 2x)^2}{(\sin 2x)^2} \right)'\\
&= \frac{(\sin 2x)^2 [(-\sin x)(\cos 2x)^2+(\cos x)4\cos 2x (-\sin 2x)]
- \cos x (\cos 2x)^2 4\sin 2x \cos 2x}{(\sin 2x)^4}\\
&= -\frac{\cos(2x) [\sin x \sin 2x \cos 2x+ 4\cos x(\sin 2x)^2
+ 4 \cos x (\cos 2x)^2]}{(\sin 2x)^3}\\
&= -\frac{\cos(2x) [\sin x \sin 2x \cos 2x+ 4\cos x]}{(\sin 2x)^3}.
\end{align*}
\end{exercise}
\begin{exercise}
Compute the derivative of the following function:
\begin{equation*}
f(x)=\cos((2x^2+3)^3)
\end{equation*}
\tcblower
The derivative is:
\begin{align*}
f'(x) &= \left( \cos((2x^2+3)^3) \right)'
=-\sin((2x^2+3)^3) 3(2x^2+3)^2 2\cdot 2x\\
&=-12x(2x^2+3)^2\sin((2x^2+3)^3).
\end{align*}
\end{exercise}
\begin{exercise}
Compute the derivative of the following function:
\begin{equation*}
f(x)=(x^2+1)\sqrt{x^4+1}
\end{equation*}
\tcblower
The derivative is:
\begin{align*}
f'(x) &= \left( (x^2+1)\sqrt{x^4+1} \right)'
= 2x\sqrt{x^4+1} + \frac{2x^3(x^2+1)}{\sqrt{x^4+1}}.
\end{align*}
\end{exercise}
\tcbstoprecording
8.4 Example: Solutions¶
This concludes the example given in Section 8.3. Now, the saved and recorded solutions are included.