我将一堆数字传递给通过以下方式定义的自定义命令\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}