Quiero producir dos versiones de un documento con contenido diferente. La idea es comentar ciertas secciones si una variable lógica es falsa. Esta variable lógica se ingresará eventualmente a través de un argumento de un paquete. Mi dificultad es que mi código no funciona o ignora la variable booleana. Aquí hay un código de muestra que no funciona. El error es "el número faltante se trata como cero"
\usepackage{ifthen,comment}
\newboolean{iflecturer}
\newenvironment{myitemize}
{\ifthenelse{iflecturer}
{\begin{itemize}}{\begin{comment}}
}
{\ifthenelse{iflecturer}
{\end{itemize}}{\end{comment}}
}
\begin{document}
\setboolean{iflecturer}{true}% \setboolean{iflecturer}{false}
\begin{myitemize}
\item Monday
\item Tuesday
\item Wednesday
\end{myitemize}
\end{document}
Respuesta1
Creo que es mejor usar el\excludecomment
macro proporcionada por elpaquete de comentarios. De esta manera, no es necesario iniciar y finalizar entornos de comentarios desde macros o entornos propios.
\documentclass{article}
\usepackage{ifthen}
\usepackage{comment}
\specialcomment{solution}{\textbf{Solution}\quad}{}
\newboolean{iflecturer}
\setboolean{iflecturer}{false}
\ifthenelse{\boolean{iflecturer}}{}{\excludecomment{solution}}
\begin{document}
This is a question.
\begin{solution}
And this is the solution.
\end{solution}
\end{document}
Respuesta2
Puede utilizar el environ
paquete en lugar de comment
descartar el contenido de un entorno.
\documentclass{article}
\usepackage{etoolbox}
\usepackage{environ}
\newtoggle{lecture}
\NewEnviron{myitemize}{%
\iftoggle{lecture}
{\begin{itemize}\BODY\end{itemize}}
{}%
}
\begin{document}
\toggletrue{lecture}
The environment is visible
\begin{myitemize}
\item test
\item test
\end{myitemize}
\togglefalse{lecture}
after this the environment is hidden.
\begin{myitemize}
\item test
\item test
\end{myitemize}
Test
\end{document}
Esto es lo que obtienes: