![如何删除数字中的前导零?](https://linux22.com/image/399732/%E5%A6%82%E4%BD%95%E5%88%A0%E9%99%A4%E6%95%B0%E5%AD%97%E4%B8%AD%E7%9A%84%E5%89%8D%E5%AF%BC%E9%9B%B6%EF%BC%9F.png)
我正在尝试检查用户输入(数字参数)的前导零并将其删除。我想知道LaTeX2e
或其中一个引擎(pdftex
、xetex
)是否提供了此类命令。
答案1
\number
查看 egreg 的评论,对于 -2147483647 至 2147483647 范围内的整数,最简单的解为:
\number000123⌴
\number-000456⌴
结果:123 和 -456
标有 的空格⌴
结束数字的解析,并防止在正常文本中出现数字时发生意外。
该解决方案可扩展,例如可以在\csname
、、、内部使用。\label
\typeout
包裹bigintcalc
此包提供了一种可扩展的方法,用于从任意大的整数中删除前导零。摘自文档:
\bigintcalcNum {⟨x⟩}
宏
\bigintcalcNum
将其参数转换为规范化的整数,不带不必要的前导零或符号。结果与正则表达式匹配:0|-?[1-9][0-9]*
例子:
\usepackage{bigintcalc}% plain TeX: \input bigintcalc.sty
...
\bigintcalcNum{000123456789123456789123456789}
\bigintcalcNum{-000123456789123456789123456789}
结果:123456789123456789123456789 和 -123456789123456789123456789
该宏是可扩展的,该包可与多种 TeX 风格一起使用(LaTeX、纯 TeX、iniTeX 等)
包裹siunitx
如果要打印数字,软件包siunitx
提供了许多选项来格式化数字。默认情况下,会删除前导零:
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\num{000123}; \num{-000456}
\end{document}
结果:123;-456