我设法\half
使用 让命令返回小数点而不是分数\renewcommand*\half{,5}
。但是,当问题只值半分时,我希望输出为 0.5。可以实现这一点吗?如果可以,如何实现?
感谢您的帮助!
答案1
下列的读取命令前的字符您可以尝试使用 来LuaLaTeX
检查命令前的字符是否\half
是数字:
\renewcommand{\half}
{%
\directlua%
{
local n=tex.nest[tex.nest.ptr].tail
if (n.id ~= 29 or n.char < 48 or n.char > 57) % no digit 0-9 before
then
tex.print("0.5")
else
tex.print(".5")
end
}%
}
n.id
代表29
字形,n.char
从48
到57
是十位数字(ASCII 码)。
完整示例:
\documentclass{exam}
\renewcommand{\half}
{%
\directlua%
{
local n=tex.nest[tex.nest.ptr].tail
if (n.id ~= 29 or n.char < 48 or n.char > 57) % no digit 0-9 before
then
tex.print("0.5")
else
tex.print(".5")
end
}%
}
\begin{document}
\newcommand\one{1}
\begin{center}
\begin{tabular}{*{7}{c}}
\verb+\half+ &
\verb+1\half+ &
\verb+9\half+ &
\verb+0\half+ &
\verb+a\half+ &
\verb+\quad\half+ &
\verb+\one\half+
\\
\half &
1\half &
9\half &
0\half &
a\half &
\quad\half &
\one\half
\end{tabular}
\end{center}
\end{document}