Beschreibungsteil des Artikels in der Beschreibungsumgebung ausblenden

Beschreibungsteil des Artikels in der Beschreibungsumgebung ausblenden

Wie kann man verbergen/anzeigenalleBeschreibungen in einer descriptionUmgebung gleichzeitig.

\documentclass[]{article}

\begin{document}

\begin{description}
\item[Keep This] Discard This
\item[Keep This] Discard This
\end{description}

\end{document}

Antwort1

Eine Möglichkeit wäre, die descriptionArbeitsweise neu zu definieren, alle \item[<stuff>]Inhalte zu erfassen undallessonst. Dieses Catch-and-Release ist durch eine lokale Neudefinition \itemund Platzierung der gesamten Umgebung in einer Box möglich. Auf diese Weise werden die Dinge nicht auf die Seite eingestellt, aber Sie können die Umgebung verarbeiten.

Die obige kurze Erläuterung wird im Folgenden umgesetzt:

Bildbeschreibung hier eingeben

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

Es stehen Schalter zum Verwerfen descriptionvon Inhalten (über \discarddescription) und Wiederherstellen ihrer ursprünglichen Funktionalität (über \restoredescription) zur Verfügung.

Antwort2

Wenn Sie sich komplett verstecken möchtenalle descriptionUmgebungen können Sie einfach die descriptionUmgebung neu definieren, um alles in ihrem Körper zu ignorieren überDas environPaket. Mit : erhalten Sie also \RenewEnviron{description}{}{}:

Bildbeschreibung hier eingeben

\itemWenn Sie die Beschriftungen der Umgebungen weiterhin möchten description, können Sie die answerUmgebung auf die gleiche Weise ausblenden \RenewEnviron{answer}{}:

Bildbeschreibung hier eingeben

Anschließend anserskönnen Sie bei Bedarf Folgendes \NewEnviron{answer}{\BODY}erhalten:

Bildbeschreibung hier eingeben

Code: descriptionUmgebung ausblenden

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

Code: answerUmgebung ausblenden

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

Antwort3

Sie können problemlos zwischen verschiedenen Definitionen eines Befehls wechseln, ein % hinzufügen und ein anderes löschen. Ich mache das häufig, um das Layout zu ändern. Stellen Sie sich Ihr Tex-Dokument als eine Art Datenbank vor, in der so viele Formatierungsinformationen wie möglich im Header gespeichert sind.

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

Antwort4

Dabei wird die Tatsache ausgenutzt, dass in einemdescription einemhatum das optionale Argument anzugeben. Es ist ohnehin besser, persönlichen Umgebungen einen anderen Namen als der allgemeinen zu geben, also habe ich eine answersUmgebung definiert; jedes Element wird durch eingeleitet \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}

Bildbeschreibung hier eingeben

verwandte Informationen