Ocultar parte de la descripción del elemento en el entorno de descripción

Ocultar parte de la descripción del elemento en el entorno de descripción

¿Cómo se puede ocultar/mostrar?tododescripciones en un descriptionentorno 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 descriptionfunciona, capturando todas sus\item[<stuff>] contenido y descartandotododemás. Esta captura y liberación es posible mediante una redefinición local \itemy 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:

ingrese la descripción de la imagen aquí

\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 descriptioncontenido (a través de\discarddescription ) y restaurar su funcionalidad original (a través de \restoredescription).

Respuesta2

Si quieres esconderte por completotodo descriptionentornos usted puede simplemente redefinir eldescription entorno para ignorar cualquier cosa en su cuerpo a través deelenviron paquete. Entonces con \RenewEnviron{description}{}{}: obtienes:

ingrese la descripción de la imagen aquí

Si aún desea que las \itemetiquetas formen los descriptionentornos, puede ocultar el answerentorno de la misma manera a través de \RenewEnviron{answer}{}:

ingrese la descripción de la imagen aquí

Luego, cuando quieras, anserspuedes utilizar \NewEnviron{answer}{\BODY}para obtener:

ingrese la descripción de la imagen aquí

Código: Ocultar descriptionentorno

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

\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 answersentorno; 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}

ingrese la descripción de la imagen aquí

información relacionada