\iftoggledefined:检测 newtoggle 是否已定义

\iftoggledefined:检测 newtoggle 是否已定义

我正在寻找\iftoggledefined{<toggle name>}{<true>}{<false>}。我检查了etoolbox文档,没有看到这样的东西。

基于etoolbox 包中的 \newbool 和 \newtoggle 之间的区别,可以使用\ifcsdef{etb@tgl@#1},但如果 etoolbox 代码发生变化,此测试将会中断。因此,如果存在官方宏,则更愿意使用它。

问题:

我可以获得与给定的 MWE 相同的输出吗

ToggleA:存在
ToggleB:不存在

没有etb@tgl@#1依赖于的内部代码etoolbox

代码:

\documentclass{article}
\usepackage{etoolbox}

\makeatletter
\newcommand{\iftoggledefined}[3]{\ifcsdef{etb@tgl@#1}{#2}{#3}}
\makeatother

\newtoggle{ToggleA}

\begin{document}
ToggleA: \iftoggledefined{ToggleA}{Exists}{Does Not Exist}

ToggleB: \iftoggledefined{ToggleB}{Exists}{Does Not Exist}
\end{document}

答案1

经过\newtoggle检查\ifcsdef{etb@tgl@#1},我相信这是一次安全的测试。

包中没有代码来检查是否定义了切换(它与\newif内核的或\newboolean的相同ifthen),并且我不确定它有什么用处。

提出功能请求,同时使用您提出的代码(并重新考虑其实用性)。

相关内容