![软件包“版本”警告:重新定义环境](https://linux22.com/image/304623/%E8%BD%AF%E4%BB%B6%E5%8C%85%E2%80%9C%E7%89%88%E6%9C%AC%E2%80%9D%E8%AD%A6%E5%91%8A%EF%BC%9A%E9%87%8D%E6%96%B0%E5%AE%9A%E4%B9%89%E7%8E%AF%E5%A2%83.png)
我正在使用versions.sty包,并希望在不同的版本配置中处理一些文本两次(或更多次),但在同一文档中。所以我多次使用了\excludeversion
和\includeversion
。每次使用这些似乎都使用与参数名称相同的参数来定义环境。所以我每次运行时都会收到一个恼人的警告,使我的LaTeX消息变得混乱。
以下是一个小例子:
\documentclass{book}
\usepackage{versions}
\begin{document}
\includeversion{A}
\excludeversion{B}
\begin{A}a\end{A}
\begin{B}b\end{B}
\excludeversion{A}
\includeversion{B}
\begin{A}a\end{A}
\begin{B}b\end{B}
\end{document}
产生以下警告:
Package `Versions' Warning: Redefining environment `A' on input line 11.
Package `Versions' Warning: Redefining environment `B' on input line 12.
输出如下:
a
b
输出很好。有没有更好的方法来实现我想要实现的目标,而又不出现这些警告?
(当然,我们的想法是,在 MWE 中重复的文本包含来自同一个文件,所以我获得了同一个文件的不同乳胶运行)。
答案1
您可以抑制发出的警告versions
将以下内容添加到您的序言中:
\makeatletter
\let\@Vs@envwarn\@gobble% Remove environment renewal warnings.
\makeatother
或者silence
包裹做类似的事情:
\usepackage{silence}
\WarningFilter{`Versions'}{Redefining environment}
使用 -constructions 的另一种方法\if
是:
\documentclass{article}
\newif\ifVersionA
\newif\ifVersionB
\begin{document}
\VersionAtrue% Include Version A
\VersionBfalse% Exclude Version B
\ifVersionA a \fi
\ifVersionB b \fi
\VersionAfalse% Exclude Version A
\VersionBtrue% Include Version B
\ifVersionA a \fi
\ifVersionB b \fi
\end{document}