如何将一位数转换为两位数

如何将一位数转换为两位数

我有一张代表公交车时刻表的表格,因此每个单元格包含出发时间(小时和分钟),均为两位数字,但有时我没有两位数字,只有一位数字,所以我必须切换,例如,12 4 -> 12 04. 这怎么可能呢?

答案1

您可以按如下方式定义宏:

\newcommand\twodigits[1]{%
   \ifnum#1<10 0#1\else #1\fi
}

\twodigits{12}  % 12
\twodigits{4}   % 04
\twodigits{123} % 123

这个宏是完全可扩展的。

如果您还想删除尾随零,可以使用:

\newcommand\twodigits[1]{%
   \ifnum#1<10 0\number#1 \else #1\fi
}

\twodigits{004} % 04

如果您想要将tabular单元格从更改12 412 04而不添加明确的宏,您可以使用collcell包来收集单元格内容并将其提供给按空格分割数字的宏:

% preamble:
\newcommand\formatdate[1]{\formatdatei#1\relax}
\def\formatdatei#1 #2\relax{%
   \twodigits{#1} \twodigits{#2}%
}

\usepackage{collcell}

% later
\begin{tabular}{l>{\collectcell\formatdate}l<{\endcollectcell}}
   Bus date  & 12 4 \\
\end{tabular}

如果您发布真实的使用示例,我可以帮助您提供更具体的宏。

答案2

你可以使用siunitx包来做到这一点

\documentclass[a4paper,twoside,10pt]{article}

\usepackage{siunitx}

\begin{document}
\num[minimum-integer-digits = 4]{123}
\num[minimum-integer-digits = 4]{4}
\end{document}

印刷

0123 0004

或者你也可以将选项声明为默认选项,

\documentclass[a4paper,twoside,10pt]{article}
\usepackage{siunitx}

\begin{document}
\sisetup{minimum-integer-digits = 4}
\num{12}
\num{34}
\end{document}

答案3

您还可以使用包裹xstring为个位数添加前导零:

在此处输入图片描述

代码:

\documentclass{article}
\usepackage{xstring}
\newcommand*{\TwoDigit}[1]{%
    \IfStrEqCase{#1}{%
        {1}{0}%
        {2}{0}%
        {3}{0}%
        {4}{0}%
        {5}{0}%
        {6}{0}%
        {7}{0}%
        {8}{0}%
        {9}{0}%
    }#1%
}%
\begin{document}
123 $\to$ \TwoDigit{123}

12 $\to$ \TwoDigit{12}

2 $\to$  \TwoDigit{2}
\end{document}

答案4

您可以使用 LaTeX 的内部\two@digit格式:

在此处输入图片描述

\documentclass{article}
\makeatletter
\newcommand{\twodigit}[1]{\two@digits{#1}}
\makeatother
\begin{document}

\twodigit{12} \par % 12
\twodigit{4} \par  % 04
\twodigit{123}     % 123

\end{document}

相关内容