这xparse
文档说,
但这不是我测试时得到的结果s
。
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{\myfunc}{s}{#1}
\begin{document}
\myfunc % should return \BooleanFalse; actually returns \Gamma
\myfunc* % should return \BooleanTrue; actually returns \Delta
\end{document}
编辑:此外,当不存在\IfValueTF
时不会返回 0 。*
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{\myfuncB}{s}{
\IfValueTF{#1}{1}{0}
}
\begin{document}
\myfuncB % should return 0; actually returns 1
\myfuncB* % should return 1; actually returns 1
\end{document}
答案1
\BooleanFalse
和\BooleanTrue
是布尔变量,不用于排版。您只能在\IfBooleanTF
测试中使用它们:
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{\myfuncB}{s}{%
\IfBooleanTF{#1}{1}{0}%
}
\begin{document}
\myfuncB % returns 0
\myfuncB* % returns 1
\end{document}
\IfValueTF
也不能使用,因为它检查参数是否为-NoValue-
,并且既不是\BooleanTrue
也不\BooleanFalse
是-NoValue-
,所以测试总是返回 true。 \IfValueTF
应该与可选参数一起使用,如o
和d
。
在底层,\BooleanFalse
是\char"0
和,\BooleanTrue
因此\char"1
它们取当前字体的第零个和第一个字符,无论它们是什么。在 OT1 编码中,\char"0
和\char"1
是字形 Γ 和 ∆:
\documentclass{article}
\usepackage{fonttable}
\begin{document}
\fonttable{cmr10}
\end{document}