
Я пытаюсь проверить пользовательский ввод (параметр числа) на наличие ведущих нулей и удалить их. Интересно, предоставляется ли такая команда LaTeX2e
, или одним из движков ( pdftex
, xetex
).
решение1
\number
Смотреть эгрегкомментарий, для простейшего решения для целых чисел в диапазоне от -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