定義新環境時所使用的條件

定義新環境時所使用的條件

我想為一份文件產生兩個具有不同內容的版本。這個想法是如果邏輯變數為假,則註解掉某些部分。此邏輯變數最終將透過包的參數輸入。我的困難是我的程式碼要么不起作用,要么忽略布林變數。這是不起作用的範例程式碼。錯誤是“缺失數字被視為零”

\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}

這就是你得到的:

在此輸入影像描述

相關內容