Leere Zeilen im versteckten Teil

Leere Zeilen im versteckten Teil

Um eine Lösung in meinen Text einzufügen, habe ich folgende Umgebung definiert:

\newif\ifsolution
\def\solution#1{\ifsolution {\color{blue}\textbf{Oplossing:} #1} \else \relax\fi} 

Wenn ich \solutiontrueder Datei etwas hinzufüge, werden die Lösungen in Blau angezeigt. Wenn ich jedoch etwas eingebe \solutionfalse, werden sie ganz weggelassen. So weit, so gut.

Das Problem, das ich habe, ist jedoch, dass ich in der Lösung selbst keine Leerzeilen einfügen kann, die ich wirklich brauche. Wenn ich beispielsweise

\solution{This is the first line of the solution.

This is the second line. QED}

Ich erhalte eine Fehlermeldung. Ich verstehe, dass ich stattdessen schreiben muss

\solution{This is the first line of the solution.
This is the second line. QED}

Gibt es angesichts der Tatsache, dass die Leerzeilen nicht zu übersehen sind, eine Möglichkeit, die Fehler zu vermeiden?

Antwort1

Ich bin mir nicht ganz sicher, ob das wirklich das ist, was Sie wollten. Aber hier ist eine Möglichkeit, Leerzeilen in Ihrer Makroeingabe zuzulassen und die Lösung wegzulassen, während das Leerzeichen als Platzhalter in der Ausgabe erhalten bleibt:

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

mit\solutiontrue

aus1

mit\solutionfalse

aus2


Der Grund dafür, dass die Leerzeilen bei der Makroeingabe standardmäßig nicht funktionieren, liegt in den TeX-Grundlagen. Knuth hat dieses Verhalten von Makroparametern konzeptgemäß nicht zugelassen. Nur durch Hinzufügen des \longPrimitivs kann man dies umgehen (was manche Leute als Einschränkung bezeichnen würden). Indiese FrageSie finden eine gute Diskussion zu diesem Thema.

Antwort2

Ich hatte Ihre Frage anders gemeint, wie wäre es mit dieser Lösung mit \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}

Bildbeschreibung hier eingeben

verwandte Informationen