Líneas vacías en parte oculta.

Líneas vacías en parte oculta.

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 \solutiontrueal 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

fuera1

con\solutionfalse

fuera2


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 \longprimitiva 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}

ingrese la descripción de la imagen aquí

información relacionada