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 \solutiontrue
der 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
mit\solutionfalse
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 \long
Primitivs 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}