\newif 활성화 명령을 사용하여 Listings 또는 Verbatim 환경을 숨기는 방법

\newif 활성화 명령을 사용하여 Listings 또는 Verbatim 환경을 숨기는 방법

생활을 더 쉽게 만들기 위해 해당 솔루션이 포함된 강의용 연습 시트를 만들고 싶습니다. 따라서 \newif솔루션을 포함할지 여부를 제어하기 위해 a를 정의했습니다 . 그 안에 환경이 lstlisting필요할 때까지는 잘 작동했습니다 . verbatim다음 코드는 오류에 대한 최소한의 예이며, 함께 작동합니다 verbatim.

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{listings}

\newif\ifsolution 
\solutionfalse

\ifsolution
\newcommand{\solution}[1]{#1}
\else
\newcommand{\solution}[1]{}
\fi

\begin{document}
This is always shown. 
\solution{The listing is only shown if ifsolution is true.
\begin{lstlisting}
 Test
\end{lstlisting}
}
\end{document}

true로 설정하면 solution오류가 발생합니다. 이 기능을 사용하여 명령이나 환경을 어떻게 정의할 수 있나요?

답변1

내 첫 평가는 틀렸지만 Gonzalo가 친절하게 지적한 것처럼

축어적 자료는 표준 명령의 인수에 나타날 수 없습니다.

작동하는 솔루션은 인수를 사용하지 않는 것입니다.

\ifsolution
\def\solution{\relax}
\else
\newcommand{\solution}[1]{}
\fi

그러나 패키지를 사용할 수도 있습니다 comment. 특정 환경을 comment.

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{listings}

\usepackage{comment}
\excludecomment{solution}
%\includecomment{solution}

\begin{document}
This is always shown. 
\begin{solution}
    The listing is only shown if ifsolution is true.
\begin{lstlisting}
 Test
\end{lstlisting}
\end{solution}

\end{document}

솔루션 은 \excludecomment{solution}표시되지 않으며 \includecomment{solution}대신 글을 쓰면 솔루션이 표시됩니다.

관련 정보