어떻게 숨기거나 표시할 수 있나요?모두환경 에 대한 설명을 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
완전히 숨기고 싶다면모두 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
이는 하나 의 사실을 이용합니다.가지다선택적 인수를 지정합니다. 어쨌든 개인 환경에는 일반적인 이름과 다른 이름을 지정하는 것이 더 낫기 때문에 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}