我想使用 LaTeX 3 对小数进行四舍五入;我想要类似以下内容的内容:如果我输入
\RoundingUpFunction{2.7}
它应该返回
3
作为输出。
不幸的是,我还没有花时间学习 LaTeX 3 语法,所以如果有人能告诉我如何定义这样的函数(或者如果它已经存在请告诉我它是什么),我将不胜感激。
更新
如果我尝试按以下方式使用 Marco Daniel 的答案,它仍然不起作用:
\documentclass{article}
\usepackage{pst-optic,pstricks-add}
\usepackage{xparse}
\newcommand*\Lens[1][]{%
\psclip{%
\psframe[linestyle=none](-\horizontal,-\vertical)(\horizontal,\vertical)
}
\rput(0,0){\lensSPH[#1]}
\endpsclip
}
\ExplSyntaxOn
\NewDocumentCommand {\RoundUp} { m }
{
\fp_eval:n { round+(#1) }
}
\ExplSyntaxOff
\begin{document}
\begin{figure}
\def\horizontal{1}
\def\vertical{1.7}
\centering
\begin{pspicture}[showgrid](-\RoundUp{\horizontal},-\RoundUp{\vertical})%
( \RoundUp{\horizontal}, \RoundUp{\vertical})
\Lens[
lensType=CVG,
lensWidth=1,
lensColor=BleuVerre,
drawing=false
]
\end{pspicture}
\end{figure}
\end{document}
错误消息
! Undefined control sequence.
<argument> \LaTeX3 error:
Unknown fp word a.
l.28 ...RoundUp{\horizontal}, \RoundUp{\vertical})
答案1
如果您想使用 LaTeX3,您可以使用ceil
:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand {\RoundingUpFunction} { m }
{
\fp_eval:n { ceil(#1) }
}
\ExplSyntaxOff
\begin{document}
\RoundingUpFunction{1.7}%leads to 2
\RoundingUpFunction{1.2}%leads to 2
\RoundingUpFunction{1}%leads to 1
\end{document}
与您的更新使用相关,\DeclareExpandableDocumentCommand
而不是\NewDocumentCommand
答案2
如果您可以忍受不使用LaTeX 3
那么您可以使用TikZ
...
\documentclass{article}
\usepackage{pgfmath,pgfkeys}
\newcommand\RoundingUpFunction[1]{%
\pgfmathparse{ceil(#1)}%
\pgfmathprintnumber[int trunc]{\pgfmathresult}%
}
\begin{document}
\RoundingUpFunction{2.7}
\end{document}
3