どのように隠したり表示したりできるのか全て環境内の説明をdescription
同時に表示します。
\documentclass[]{article}
\begin{document}
\begin{description}
\item[Keep This] Discard This
\item[Keep This] Discard This
\end{description}
\end{document}
答え1
一つの選択肢は、description
作品のあり方を再定義し、その\item[<stuff>]
内容をすべて把握し、すべてelse です。このキャッチ アンド リリースは、\item
環境全体をローカルに再定義し、ボックス内に配置することで可能になります。この方法では、ページに設定するのではなく、環境を処理できます。
上記の簡単な説明は以下のように実行されます。
\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}
description
コンテンツを破棄する ( 経由\discarddescription
) か、元の機能を復元する ( 経由\restoredescription
)ためのスイッチが用意されています。
答え2
完全に隠したい場合は全て description
環境を再定義して、description
その本体内の何も無視するようにすることができます。そのenviron
包み. すると、次の\RenewEnviron{description}{}{}
式が得られます。
\item
環境からのラベルがまだ必要な場合は、次のようにして同じ方法で環境をdescription
非表示にすることができます。answer
\RenewEnviron{answer}{}
その後、必要なときに、以下を使用して取得ansers
できます。\NewEnviron{answer}{\BODY}
コード:description
環境を非表示
\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}
コード:answer
環境を非表示
\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}
答え3
コマンドの異なる定義を簡単に切り替えたり、% を追加したり、別の定義を削除したりできます。レイアウトを変更するために、私はよくこれを行います。Tex ドキュメントを一種のデータベースとして考え、ヘッダーに可能な限り多くの書式設定情報を保持します。
\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}
答え4
これは、description
1つのもっているオプションの引数を指定します。いずれにしても、個人用の環境に一般的な環境とは異なる名前を付ける方がよいので、answers
環境を定義しました。各項目は で導入されます\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}