새로운 환경을 정의하는데 사용되는 조건부

새로운 환경을 정의하는데 사용되는 조건부

하나의 문서를 다른 내용으로 두 가지 버전으로 생성하고 싶습니다. 논리 변수가 false인 경우 특정 섹션을 주석 처리하는 것이 아이디어입니다. 이 논리 변수는 결국 패키지에 대한 인수를 통해 입력됩니다. 내 어려움은 내 코드가 작동하지 않거나 부울 변수를 무시한다는 것입니다. 다음은 작동하지 않는 샘플 코드입니다. 오류는 "0으로 처리되는 누락된 숫자"입니다.

\usepackage{ifthen,comment}
\newboolean{iflecturer}
\newenvironment{myitemize}
{\ifthenelse{iflecturer}
    {\begin{itemize}}{\begin{comment}}
}
{\ifthenelse{iflecturer}
    {\end{itemize}}{\end{comment}}
}
\begin{document}
\setboolean{iflecturer}{true}% \setboolean{iflecturer}{false}
\begin{myitemize}
\item Monday
\item Tuesday
\item Wednesday
\end{myitemize}
\end{document}

답변1

사용하시는게 더 좋을 것 같아요\excludecomment에서 제공하는 매크로를댓글 패키지. 이렇게 하면 매크로나 자체 환경 내부에서 주석 환경을 시작하고 종료할 필요가 없습니다.

\documentclass{article}
\usepackage{ifthen}
\usepackage{comment}
\specialcomment{solution}{\textbf{Solution}\quad}{}
\newboolean{iflecturer}
\setboolean{iflecturer}{false}

\ifthenelse{\boolean{iflecturer}}{}{\excludecomment{solution}}

\begin{document}
This is a question.

\begin{solution}
And this is the solution.
\end{solution}

\end{document}

답변2

환경의 콘텐츠를 삭제하는 environ대신 패키지를 사용할 수 있습니다 .comment

\documentclass{article}

\usepackage{etoolbox}
\usepackage{environ}
\newtoggle{lecture}

\NewEnviron{myitemize}{%
  \iftoggle{lecture}
    {\begin{itemize}\BODY\end{itemize}}
    {}%
  }

\begin{document}
\toggletrue{lecture}
The environment is visible
\begin{myitemize}
\item test
\item test
\end{myitemize}
\togglefalse{lecture}
after this the environment is hidden.
\begin{myitemize}
\item test
\item test
\end{myitemize}
Test
\end{document}

이것이 당신이 얻는 것입니다:

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

관련 정보