\fpeval
不喜欢以逗号作为分隔符的十进制数:
\documentclass[]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{siunitx,xfp}
\sisetup{locale=DE}
\begin{document}
\num{1.5}
\num{1,5}
\num{\fpeval{1.5+1.4 + max(1.5 , 2 )}}
\num{\fpeval{1,5+1,4 + max(1,5 , 2 )}} %error
\num{\fpeval{1,5+1.4}} %error
\end{document}
这给出
! Undefined control sequence.
<argument> \LaTeX3 error:
Unexpected comma: extra arguments ignored.
作为一名德国人,我相当习惯使用逗号(其他德国人也一样),所以我必须不断纠正我的输入。有没有可扩展如何让它工作?
困难自然在于语法中使用了逗号\fpeval
,例如 max。我会接受在这里使用空格的要求,或者使用另一个符号(例如);
,或者使用一些保护命令,如\dontsanitize{max(1.5,2)}
, 或max(1,5 \realcomma 2)
。
答案1
您可以使用 l3regex,digit
替换.digit
\documentclass[]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{siunitx,xfp}
\usepackage{l3regex}%unless you have very new expl3
\sisetup{locale=DE}
\let\oldnum\num
\ExplSyntaxOn
\def\num#1{\def\tmp{#1}\regex_replace_all:nnN{,([0-9])}{.\1}{\tmp}\oldnum{\tmp}}
\ExplSyntaxOff
\begin{document}
\num{1.5}
\num{1,5}
\num{\fpeval{1.5+1.4 + max(1.5 , 2 )}}
\num{\fpeval{1,5+1,4 + max(1,5 , 2 )}} %error
\num{\fpeval{1,5+1.4}} %error
\end{document}