설명 환경에서 항목의 설명 부분 숨기기

설명 환경에서 항목의 설명 부분 숨기기

어떻게 숨기거나 표시할 수 있나요?모두환경 에 대한 설명을 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>]콘텐츠를 캡처하고 무시하는 것입니다.모든 것또 다른. 이러한 캐치 앤 릴리스는 \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

완전히 숨기고 싶다면모두 descriptiondescription환경을 통해 본문의 모든 항목을 무시하도록 환경을 재정의할 수 있습니다 .패키지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이는 하나 의 사실을 이용합니다.가지다선택적 인수를 지정합니다. 어쨌든 개인 환경에는 일반적인 이름과 다른 이름을 지정하는 것이 더 낫기 때문에 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}

여기에 이미지 설명을 입력하세요

관련 정보