¿Cómo se puede ocultar/mostrar?tododescripciones en un description
entorno al mismo tiempo.
\documentclass[]{article}
\begin{document}
\begin{description}
\item[Keep This] Discard This
\item[Keep This] Discard This
\end{description}
\end{document}
Respuesta1
Una opción sería redefinir la forma en que description
funciona, capturando todas sus\item[<stuff>]
contenido y descartandotododemás. Esta captura y liberación es posible mediante una redefinición local \item
y la colocación de todo el entorno dentro de una caja. De esa manera las cosas no se configuran en la página, pero puedes procesar el entorno.
La breve discusión anterior se implementa a continuación:
\documentclass{article}
\let\olddescription\description% Store \description (\begin{description})
\let\endolddescription\enddescription% Store \enddescription (\end{description})
\newsavebox{\descriptionbox}
\makeatletter
\newcommand{\discarddescription}{%
\renewenvironment{description}
{\gdef\descriptionlist{}% Clear description list
\begingroup% Begin local scope
\def\item[####1]{\g@addto@macro\descriptionlist{\item[####1]}}% Redefine \item[.] to capture its argument
% and store it in \descriptionlist
\begin{lrbox}{\descriptionbox}}% Start capturing elements
{\end{lrbox}% End capturing elements
\endgroup% Close local scope
\begin{olddescription}\descriptionlist\end{olddescription}}% Set captured items in regular description
}
\newcommand{\restoredescription}{%
\let\description\olddescription% Restore \description (\begin{description})
\let\enddescription\endolddescription% Restore \enddescription (\end{description})
}
\makeatother
\begin{document}
\begin{description}
\item[Keep this] Definitely keep this
\item[Keep that] Definitely keep that
\end{description}
\discarddescription
\begin{description}
\item[Keep this] Discard this
\item[Keep that] Discard that
\end{description}
\restoredescription
\begin{description}
\item[Keep this] Definitely keep this
\item[Keep that] Definitely keep that
\end{description}
\end{document}
Se proporcionan interruptores para descartar description
contenido (a través de\discarddescription
) y restaurar su funcionalidad original (a través de \restoredescription
).
Respuesta2
Si quieres esconderte por completotodo description
entornos usted puede simplemente redefinir eldescription
entorno para ignorar cualquier cosa en su cuerpo a través deelenviron
paquete. Entonces con \RenewEnviron{description}{}{}
: obtienes:
Si aún desea que las \item
etiquetas formen los description
entornos, puede ocultar el answer
entorno de la misma manera a través de \RenewEnviron{answer}{}
:
Luego, cuando quieras, ansers
puedes utilizar \NewEnviron{answer}{\BODY}
para obtener:
Código: Ocultar description
entorno
\documentclass[]{article}
\usepackage{environ}
\usepackage{comment}
%\excludecomment{answer}
\includecomment{answer}
\RenewEnviron{description}{}{}
\begin{document}
Some text before.
\begin{description}
\item[A]
\begin{answer}
Answer A
\end{answer}
\item[B]
\begin{answer}
Answer B
\end{answer}
\end{description}
Some text after.
\end{document}
Código: Ocultar answer
entorno
\documentclass[]{article}
\usepackage{environ}
\NewEnviron{answer}{}% <--- Use this to hide the answer environment
%\NewEnviron{answer}{\BODY}% <--- Use this if you want the answer environment
\begin{document}
Some text before.
\begin{description}
\item[A]
\begin{answer}
Answer A
\end{answer}
\item[B]
\begin{answer}
Answer B
\end{answer}
\end{description}
Some text after.
\end{document}
Respuesta3
Puede cambiar fácilmente entre diferentes definiciones de un comando, agregar un% y eliminar otro. Hago esto mucho, para cambiar el diseño. Piense en su documento de texto como una especie de base de datos, manteniendo la mayor cantidad de información de formato posible en el encabezado.
\documentclass[]{article}
%\newcommand*{\thing}[2]{\item[#1] #2}
\newcommand*{\thing}[2]{\item[#1]}
\begin{document}
\begin{description}
\thing{A}{A}
\thing{B}{B}
\end{description}
\end{document}
Respuesta4
Esto aprovecha el hecho de que en undescription
untienepara especificar el argumento opcional. De todos modos, es mejor darle a los entornos personales un nombre diferente al genérico, así que definí un answers
entorno; cada elemento es introducido por \answer
.
\documentclass{article}
\usepackage{environ}
\newif\ifshowanswers
%\showanswerstrue % uncomment for showing answers
\NewEnviron{answers}{%
\begin{description}
\ifshowanswers
\let\answer\item
\BODY
\else
\expandafter\processitems\BODY\answer\processitems
\fi
\end{description}
}
\makeatletter
\long\def\processitems\answer[#1]#2\answer#3\processitems{%
\item[#1]%
\if\relax\detokenize{#3}\relax
\expandafter\@gobble
\else
\expandafter\@firstofone
\fi
{\processitems\answer#3\processitems}% restart the recursion
}
\begin{document}
\begin{answers}
\answer[A] Discard answer text A
\answer[B] Discard answer text B
\end{answers}
% this is by way of example
\showanswerstrue
\begin{answers}
\answer[A] Discard answer text A
\answer[B] Discard answer text B
\end{answers}
\end{document}