我正在寻找\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
),并且我不确定它有什么用处。
提出功能请求,同时使用您提出的代码(并重新考虑其实用性)。