\usepackage{ifthen}
%booleandeclaration
\newboolean{istest}
\setboolean{istest}{false}
%Set boolean in if
% \newcommand{\activate}[1]{%
% \ifnum#1>0{\setboolean{istest}{true}}\fi }
\newcommand{\activate}[1]{%
\ifnum#1>0 \setboolean{istest}{true}\fi}
%test boolean of true or false
\newcommand{\test}{\ifthenelse{\boolean{istest}}{TRUE}{FALSE}}%
\activate{10}
\begin{document}
\test
\end{document}
我如何使用true
或false
作为参数。
\activate{true}
这必须将 istest 设置为 true。
答案1
改编
\setboolean{istest}{<true|false>}
直接使用- 或者将其放入命令中 (
\activate
)
笔记:您也可以使用其他方法(bool
或者toggle
,参见的包装手册etoolbox
)。
代码
\documentclass{article}
\usepackage{ifthen}
%booleandeclaration
\newboolean{istest}
\setboolean{istest}{false}
\newcommand{\activate}[1]{%
\setboolean{istest}{#1}
}
%test boolean of true or false
\newcommand{\test}{\ifthenelse{\boolean{istest}}{TRUE}{FALSE}}%
\begin{document}
\activate{true}
\test
\activate{false}
\test
\end{document}
答案2
你还可以做得更好:该\returnTorF
命令接受以下形式的参数
- t,T,真,真,真
- 是,是,是,是
- f,F,假,假,假
- n,N,不,不,不
- 任意整数
在情况 1 和 2 中,它返回true
;在情况 3 和 4 中,它返回false
(任何大写,甚至 TrUe 实际上都是可以接受的);在情况 5 中,true
如果整数为正数,则返回 ,false
否则返回。
您还可以使用作为参数\value{<counter>}
,它是一个合法的整数。
\documentclass{article}
\usepackage{ifthen}% but there are better methods
% we want to accept
%
% t, T, true, True, TRUE, y, yes, YES
%
% or
%
% f, F, false, False, FALSE, n, no, NO
%
% but also integers, with positive ones yielding true
% and nonpositive yielding false
\ExplSyntaxOn
\NewExpandableDocumentCommand{\returnTorF}{m}
{
\darkshadow_tf:n { #1 }
}
\cs_new:Nn \darkshadow_tf:n
{
\str_case_e:nnF { \str_casefold:n { #1 } }
{
{t}{true}
{y}{true}
{true}{true}
{yes}{true}
{f}{false}
{n}{false}
{false}{false}
{no}{false}
}
{ \int_compare:nTF { #1 > 0 } { true } { false } }
}
\ExplSyntaxOff
\newboolean{istest}
\setboolean{istest}{false}
\newcommand{\activate}[1]{\setboolean{istest}{\returnTorF{#1}}}
\newcommand{\test}{\ifthenelse{\boolean{istest}}{TRUE}{FALSE}}
\begin{document}
\test\ (false)\par
\activate{y}
\test\ (true)\par
\activate{NO}
\test\ (false)\par
\activate{true}
\test\ (true)\par
\activate{0}
\test\ (false)\par
\activate{2}
\test\ (true)\par
\end{document}