Eu defini o seguinte ambiente para inserir uma solução no meu texto:
\newif\ifsolution
\def\solution#1{\ifsolution {\color{blue}\textbf{Oplossing:} #1} \else \relax\fi}
Se eu adicionar \solutiontrue
no arquivo, ele adiciona as soluções em azul, mas se eu colocar \solutionfalse
, ele as omite completamente. Até agora tudo bem.
O problema que tenho é que, na própria solução, não consigo inserir linhas em branco, o que realmente preciso. Por exemplo, se eu colocar
\solution{This is the first line of the solution.
This is the second line. QED}
Recebo um erro. Eu entendo que em vez disso tenho que escrever
\solution{This is the first line of the solution.
This is the second line. QED}
Agora, dado que as linhas em branco são imperdíveis, existe uma maneira de evitar os erros?
Responder1
Não tenho certeza se isso é realmente o que você queria. Mas aqui está uma maneira de permitir linhas em branco na entrada da macro e omitir a solução, mantendo o espaço como curinga na saída:
\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}
com\solutiontrue
com\solutionfalse
A razão para as linhas em branco não funcionarem na entrada macro por padrão está nos fundamentos do TeX. Por design, Knuth não permitiu esse comportamento dos parâmetros macro. Somente adicionando o \long
primitivo você pode superar isso (o que algumas pessoas chamariam de limitação). Emessa questãovocê encontra uma boa discussão sobre este tópico.
Responder2
Eu pretendia sua pergunta de uma maneira diferente, e essa solução \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}