説明環境内のアイテムの説明部分を非表示にする

説明環境内のアイテムの説明部分を非表示にする

どのように隠したり表示したりできるのか全て環境内の説明を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

これは、description1つのもっているオプションの引数を指定します。いずれにしても、個人用の環境に一般的な環境とは異なる名前を付ける方がよいので、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}

ここに画像の説明を入力してください

関連情報