He definido el siguiente entorno para insertar una solución en mi texto:
\newif\ifsolution
\def\solution#1{\ifsolution {\color{blue}\textbf{Oplossing:} #1} \else \relax\fi}
Si agrego \solutiontrue
al archivo, agrega las soluciones en azul, pero si pongo \solutionfalse
, las omite por completo. Hasta ahora, todo bien.
Sin embargo, el problema que tengo es que en la solución misma, parece que no puedo insertar líneas en blanco, lo cual realmente necesito. Por ejemplo, si pongo
\solution{This is the first line of the solution.
This is the second line. QED}
Recibo un error. Entiendo que en lugar de eso tengo que escribir
\solution{This is the first line of the solution.
This is the second line. QED}
Ahora bien, dado que las líneas en blanco no se pueden perder, ¿hay alguna manera de evitar los errores?
Respuesta1
No estoy muy seguro de si esto es realmente lo que querías. Pero aquí hay una manera de permitir líneas en blanco en la entrada de su macro y omitir la solución manteniendo su espacio como comodín en la salida:
\documentclass{article}
\usepackage{xcolor}
\newif\ifsolution
\long\def\solution#1{%
\setbox0\vbox{#1}
\vbox to \ht0 {
\ifsolution {\color{blue}\textbf{Oplossing:} #1} \else \relax\fi}}
\solutiontrue
%\solutionfalse
\setlength\parindent{0em}
\begin{document}
(before solution)
\solution{%
This is the first line of the solution.
This is the second line. QED
}
(after solution)
\end{document}
con\solutiontrue
con\solutionfalse
La razón por la que las líneas en blanco no funcionan en la entrada de macros de forma predeterminada radica en los fundamentos de TeX. Por diseño, Knuth no permitió ese comportamiento de los parámetros macro. Sólo agregando la \long
primitiva puedes superar esto (lo que algunas personas llamarían una limitación). Enesta preguntaEncuentras una buena discusión sobre este tema.
Respuesta2
Pensé tu pregunta de una manera diferente, ¿qué pasa con esta solución \makecell
?
\documentclass{article}
\usepackage{color}
\usepackage{makecell}
\newif\ifsolution
\def\solution#1{\ifsolution {\color{blue}\textbf{Oplossing:} #1} \else \relax\fi}
\solutiontrue
\begin{document}
\solution{\makecell[l]{This is the first line of the solution.\vspace{3ex}\\
This is the second line. QED}}
\end{document}