根据布尔值隐藏自定义环境内容

根据布尔值隐藏自定义环境内容

我有一个自定义环境,它在其内容周围添加了一些文本,但我还希望它能够根据布尔值显示或隐藏其内容。

我尝试过执行以下操作:

\newif\ifshow
\showfalse
\newenvironment{myenv}
{\ifshow\textbf{Content of myenv:}}
{\fi}

但第一个\begin{myenv}引发了Incomplete \iffalse; all text was ignored after line X。似乎\iffalse导致了 被\end{myenv}忽略,因此\fi永远不会被写入。

关于如何实现这一目标,您有什么想法吗?

答案1

我通常反过来做,即根据 if 定义“不同的环境”。我使用comment用于排除环境内容的包。

\usepackage{comment}
\ifshow
  \newenvironment{myenv}{\textbf{Content of myenv:}}{}
\else
  \excludecomment{myenv}
\fi

答案2

另一种方法是使用environ包装并有条件地保留或扔掉\BODY

\usepackage{environ}
\NewEnviron{myenv}{
  \ifshow
    \textbf{Content of myenv: \BODY}
  \fi}

答案3

我用

\newcommand\suppress[1]{} 

结合

\newcommand\myOptElse[3]{\ifthenelse{\boolean{#1}}%
{#2\suppress{#3}}%
{\suppress{#2}#3}}% if #1 then #2 else #3

和一个布尔变量。这使我能够使用 ON/OFF 开关在#2和之间切换。#3#1

例子:

%Declare the boolean variable    
\newboolean{showmyenv} %Testblöcke anzeigen
%
%Set to OFF
\setboolean{showmyenv}{false}
\myOptElse{showmyenv}{MyEnv content}{Alternative content} 
%the above will show "Alternative content", if you do not want any, leave it empty
%
%Set to ON
\setboolean{showmyenv}{true}
\myOptElse{showmyenv}{MyEnv content}{Alternative content} 
%the above will show "MyEnv content"

答案4

在进行练习/考试等时,我还希望对方程式和浮点数(数字和表格)进行单独的编号。所以我的解决方案是这样的:

% requires ifthenelse package
\newboolean{Solucion} % True/False to show the solution
\setboolean{Solucion}{true} %

% define the color we use to typeset the solution, requires xcolor
\colorlet{darkgreen}{green!40!black}
\colorlet{darkblue}{blue!40!black}
\colorlet{solcolor}{darkblue}

\usepackage{environ}
\newcounter{soleq}
\makeatletter
\NewEnviron{solution}{\ifSolucion\color{solcolor}%
    \let\c@equation\c@soleq\def\theequation{S\thesoleq}%
\expandafter\BODY\fi}
\makeatother

\usepackage{newfloat}
\DeclareFloatingEnvironment[name={\textcolor{solcolor}{Figura}}]{solfigure}
\renewcommand{\thesolfigure}{\textcolor{solcolor}{S\arabic{solfigure}}}
% This is for use with babel[Spanish,English], adapt to your case
\addto\captionsenglish{\floatname{solcolor}{Figure}}
\addto\captionsspanish{\floatname{solcolor}{Figura}}

这将以不同的颜色输出解决方案,并且方程式的编号与主要部分无关 --- 这样,在有和没有解决方案的文档之间,方程式和浮点数不会发生变化。

在此处输入图片描述

您可能需要稍微调整一下(babel例如,我使用西班牙语和英语),并且可以做得更好(注意图形标题的颜色),但我认为这是一个很好的起点。

相关内容