我做错了什么,导致下面的操作在这里不起作用:
(编辑:我混淆了真假部分,但我不想更改代码,因为答案以一种令人困惑的方式提到了这一点。)
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{fancyvrb}
\DefineVerbatimEnvironment{ExampleVerbatim}{Verbatim}%
{fontsize=\small,formatcom=\color{blue},commandchars=\\\{\}}
\usepackage{setspace}
\doublespacing
\usepackage{etoolbox}
\newbool{tightspace}
\setbool{tightspace}{false}
%----------------------------%
\ifbool{tightspace}{% true part empty - should do nothing
}{% false part:
\BeforeBeginEnvironment{ExampleVerbatim}{\begin{spacing}{0.9}}%
\AfterEndEnvironment{ExampleVerbatim}{\end{spacing}}%
}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begingroup
\setbool{tightspace}{true}
\begin{ExampleVerbatim}
Because of \textcolor{black}{\itshape{\textbackslash}setbool\{tightspace\}\{true\}}
the line spacing should be very narrow ...
Don't wonder at \textcolor{red}{the missing line breaks:}
\lipsum[2]
\end{ExampleVerbatim}
\endgroup
\begin{ExampleVerbatim}
And now, with \textcolor{black}{\itshape{\textbackslash}setbool\{tightspace\}\{false\}},
it should have \textcolor{red}{the document's line stretch ...}
\lipsum[3]
\end{ExampleVerbatim}
\lipsum[4]
\end{document}
看起来,布尔开关不起作用——或者还有其他我没有意识到的事情?
答案1
您在序言中检查一次布尔开关并做出定义,该定义以后不会更改。
如果您稍后进行测试,它将按预期工作,例如:
\BeforeBeginEnvironment{ExampleVerbatim}{\ifbool{tightspace}{}{\begin{spacing}{0.5}}}%
\AfterEndEnvironment{ExampleVerbatim}{\ifbool{tightspace}{}{\end{spacing}}}%
但是,我会将间距值改为变量。我猜你的意思是将紧密间距检查反转过来,就像在原始代码中一样。
答案2
我认为你应该进行一次小小的演练。
我会尝试:
- 你定义一个新的 bool——
tightspace
没问题 - 您将新的 bool 设置
tightspace
为 false - 没问题 此步骤不是必需的,因为newbool
将 bool 设置为 false。 - 你提一个条件——问题就在这里。条件为假,所以在环境的开始
ExampleVerbatim
处设置整个文档的间距环境。