乳胶考试类中的半点格式

乳胶考试类中的半点格式

我设法\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.char4857是十位数字(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}

使用 lua \half 命令检查之前的字符

相关内容