将数字中的 . (句号)替换为 , (逗号)

将数字中的 . (句号)替换为 , (逗号)

我将一堆数字传递给通过以下方式定义的自定义命令\newcommand{\mycmd}[1]{...}

\mycmd{1.12}
\mycmd{5.32}

\mycmd使用数字绘制某个图形。除此之外,我还想在 中打印数字\mycmd,但使用逗号代替小数点:1,12, 5,32

任何建议都将受到赞赏。

答案1

我确信这个siunitx包是可行的,因为它会捕获所有极端情况。出于好奇,这里有一个使用 TeX 模式匹配功能的简单解决方案。

\documentclass{minimal}
\def\usecomma#1.#2{#1,#2}
\newcommand\mycmd[1]{\usecomma #1}
\begin{document}
    \obeylines
    1.12 $\to$ \mycmd{1.12}
    5.32 $\to$ \mycmd{5.32}
\end{document}

请注意,如果传递的参数没有点,例如,它将不起作用\mycmd{2}。这是否太简单了,还有其他我忽略的东西?

答案2

这可以使用包来完成siunitx。使用\num带有output-decimal-marker={,}选项的宏。也可以使用全局设置选项\sisetup{output-decimal-marker={,}}

\documentclass{article}

\usepackage{siunitx}

\begin{document}

\num[output-decimal-marker={,}]{123.45}

\end{document}

答案3

有多种可能的解决方案;其中两种:1)使用异戊二烯包裹:

\documentclass{article}
\usepackage{isonums}
\newcommand\mycmd[1]{$#1$}

\begin{document}
\mycmd{5.32}
\end{document}

2)如果您正在使用babel,您可以使用spanish选项并选择它来排版您的数字(该spanish选项默认使用逗号作为小数分隔符):

\documentclass{article}
\usepackage[spanish,english]{babel}

\newcommand\mycmd[1]{$\selectlanguage{spanish}#1$}

\begin{document}
\mycmd{5.32}
\end{document}

当然,如果spanish是babel的唯一选项,那么\selectlanguage{spanish}就是多余的。

答案4

您可以使用numprint包裹

\documentclass{article}
\usepackage{numprint}

\begin{document}
    \obeylines
    1.12 $\to$ \numprint{1.12}
    5.32 $\to$ \numprint{5.32}
\end{document}

在此处输入图片描述

相关内容