Linhas vazias na parte oculta

Linhas vazias na parte oculta

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

saída1

com\solutionfalse

saída2


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

insira a descrição da imagem aqui

informação relacionada