The \ifthenelse
condition ends prematurely and leaves an open environment
hanging around in the middle of nowhere.
In conjunction with tcolorbox
environment, the end - delimiter is \endtcolorbox
and I suggest to use two \ifthenelse
statements, one for the start
code of the environment and another one for the end code.
A better approach would use \DeclareTColorbox
, in my opinion or a weird \scantokens
construct.
Also possible: Use \tcolorboxenvironment
to wrap around an existing solution
environment.
\documentclass{article}
\usepackage{ifthen}
\usepackage[most]{tcolorbox}
\newboolean{solution}
\newenvironment{solution}{%
\ifthenelse{\boolean{solution}}{%
\tcolorbox[breakable, width=\textwidth, colframe=red, colback=white]
}{%
}%
}{\ifthenelse{\boolean{solution}}{\endtcolorbox}{}}
\begin{document}
\setboolean{solution}{true}
\begin{solution}
\begin{align*}
x^2 + y^2 &= z^2\\
\Rightarrow x &= \sqrt{z^2 - y^2}\\
&= ...
\end{align*}
\end{solution}
\setboolean{solution}{false}
\begin{solution}
\begin{align*}
x^2 + y^2 &= z^2\\
\Rightarrow x &= \sqrt{z^2 - y^2}\\
&= ...
\end{align*}
\end{solution}
\end{document}
Cleaner solution with two different environments
\documentclass{article}
\usepackage[most]{tcolorbox}
\tcbset{
commonboxes/.style={nobeforeafter},
nobox/.style={commonboxes,blank,breakable},
solutionbox/.style={commonboxes,breakable, colframe=red, colback=white}
}
\newtcolorbox{solutionbox}[1][]{
solutionbox,#1
}
\newtcolorbox{solutionbox*}[1][]{%
nobox,#1
}
\begin{document}
\begin{solutionbox*}
\begin{align*}
x^2 + y^2 &= z^2\\
\Rightarrow x &= \sqrt{z^2 - y^2}\\
&= ...
\end{align*}
\end{solutionbox*}
\begin{solutionbox}
\begin{align*}
x^2 + y^2 &= z^2\\
\Rightarrow x &= \sqrt{z^2 - y^2}\\
&= ...
\end{align*}
\end{solutionbox}
\end{document}
Third installment of a solution with \NewEnviron
and the \BODY
command.
\documentclass{article}
\usepackage{environ}
\usepackage{ifthen}
\usepackage[shortlabels]{enumitem}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage[most]{tcolorbox}
\newboolean{solution}
\tcbset{
commonboxes/.style={nobeforeafter,breakable},
nobox/.style={commonboxes,blank,breakable},
solutionbox/.style={commonboxes,breakable, colframe=red, colback=white}
}
\NewEnviron{solution}[1][]{%
\ifthenelse{\boolean{solution}}{%
\tcolorbox[solutionbox, width=\textwidth,#1]
\BODY
}{%
}%
}[\ifthenelse{\boolean{solution}}{\endtcolorbox}{}]
\begin{document}
\begin{enumerate}[label={\alph*)}]
\item Compute the Fourier transform of $e^{-|x|}$ for $x\in \mathbb{R}$.
\begin{solution}[colframe=blue]
\begin{align*}
\hat{f}(\xi)&=\frac{1}{\sqrt{2\pi}}\int_{-\infty}^{\infty}e^{-|x|}e^{-ix\xi}dx\\
&=\frac{1}{\sqrt{2\pi}}\int_{0}^{\infty}e^{-x-ix\xi}dx+\int_{-\infty}^0e^{x-ix\xi}dx\\
&=\frac{1}{\sqrt{2\pi}}\int_{0}^{\infty}(e^{-x-ix\xi}-e^{-x+ix\xi})dx\\
&=\frac{1}{\sqrt{2\pi}}[\frac{1}{-(1+i\xi)}(-1)-\frac{1}{-1+i\xi}(-1)]\\
&=\frac{1}{\sqrt{2\pi}}[\frac{1-i\xi}{1+\xi^2}+\frac{-(1+i\xi)}{1+\xi^2}]\\
&=\frac{1}{\sqrt{2\pi}}\frac{-2i\xi}{1+\xi^2}\\
&=-\sqrt{\frac{2}{\pi}}\frac{i\xi}{1+\xi^2}
\end{align*}
\end{solution}
\item Compute the Fourier transform of $e^{-a|x|^2},~a>0$, directly, where $x\in \mathbb{R}$.\\
\begin{solution}
\begin{align*}
\hat{f}(\xi)&=\frac{1}{\sqrt{2\pi}}\int_{-\infty}^{\infty}e^{-a|x|^2}e^{-ix\xi}dx\\
&=\frac{1}{\sqrt{2\pi}}\int_{-\infty}^{\infty}e^{-a(x+\frac{i\xi}{2a})^2+\frac{-\xi^2}{4a}}dx~~~~~~~~x'\doteq x+\frac{i\xi}{2a}\\
&=\frac{1}{\sqrt{2\pi}}e^{-\frac{\xi^2}{4a}}\int_{-\infty}^{\infty}e^{-ax^2}dx\\
&=\frac{e^{-\frac{\xi^2}{4a}}}{2a}
\end{align*}
\end{solution}
\end{enumerate}
\setboolean{solution}{true}
\begin{enumerate}[label={\alph*)}]
\item Compute the Fourier transform of $e^{-|x|}$ for $x\in \mathbb{R}$.
\begin{solution}[colframe=blue]
\begin{align*}
\hat{f}(\xi)&=\frac{1}{\sqrt{2\pi}}\int_{-\infty}^{\infty}e^{-|x|}e^{-ix\xi}dx\\
&=\frac{1}{\sqrt{2\pi}}\int_{0}^{\infty}e^{-x-ix\xi}dx+\int_{-\infty}^0e^{x-ix\xi}dx\\
&=\frac{1}{\sqrt{2\pi}}\int_{0}^{\infty}(e^{-x-ix\xi}-e^{-x+ix\xi})dx\\
&=\frac{1}{\sqrt{2\pi}}[\frac{1}{-(1+i\xi)}(-1)-\frac{1}{-1+i\xi}(-1)]\\
&=\frac{1}{\sqrt{2\pi}}[\frac{1-i\xi}{1+\xi^2}+\frac{-(1+i\xi)}{1+\xi^2}]\\
&=\frac{1}{\sqrt{2\pi}}\frac{-2i\xi}{1+\xi^2}\\
&=-\sqrt{\frac{2}{\pi}}\frac{i\xi}{1+\xi^2}
\end{align*}
\end{solution}
\item Compute the Fourier transform of $e^{-a|x|^2},~a>0$, directly, where $x\in \mathbb{R}$.\\
\begin{solution}
\begin{align*}
\hat{f}(\xi)&=\frac{1}{\sqrt{2\pi}}\int_{-\infty}^{\infty}e^{-a|x|^2}e^{-ix\xi}dx\\
&=\frac{1}{\sqrt{2\pi}}\int_{-\infty}^{\infty}e^{-a(x+\frac{i\xi}{2a})^2+\frac{-\xi^2}{4a}}dx~~~~~~~~x'\doteq x+\frac{i\xi}{2a}\\
&=\frac{1}{\sqrt{2\pi}}e^{-\frac{\xi^2}{4a}}\int_{-\infty}^{\infty}e^{-ax^2}dx\\
&=\frac{e^{-\frac{\xi^2}{4a}}}{2a}
\end{align*}
\end{solution}
\end{enumerate}
\end{document}
The \BODY
command contains the environment 'text' and is printed only in the case solution
is true.
Best Answer
It is not clear to me, what is the purpose of the file
template1.tex
. But the syntax can be fixed. Packagefilecontents
can be loaded before\documentclass
via\RequirePackage
:A redefinition of environment
document
is then not needed.