如何在常规文本中排版时间

如何在常规文本中排版时间

如果我使用 amsmath 包,我应该如何在 latex 中输入一天中的时间才能正确排版?我正在使用 pdflatex。

假设我想写“12:00”。在数学模式下,这会在冒号后留下一个空格,如下所示:

%MWE
\documentclass{article}
\usepackage{amsmath}
\begin{document}

Should it be $4\colon 00$, $5:00$, or 6$\colon$00? They all have a space.

\end{document}

威萨姆斯马斯

如果没有这个包,它看起来还不错:

%MWE
\documentclass{article}
\begin{document}

Without the amsmath package, 6$\colon$00 looks correct.

\end{document}

威萨姆斯马斯

答案1

简单的
我会将其写为纯文本

Meeting at 5:00

或者如果你需要它在数学模式下\text

$\text{5:00} + \text{1:00} = \text{6:00}$

但我不明白其中的原因,因为时间不是数学,而且冒号可能会被误读为除法:5:30 = 5/30 = \frac{5}{30}

先进的
您甚至可以定义一个命令来使其具有地球仪的外观,并且以后可以轻松更改:

\newcommand\Time[2]{%
   \text{#1:#2}% <------------------ change format here
}

然后像\Time{5}{00}在文本或数学模式中一样使用它。

要解析类似这样的输入,\Time{5:00}您需要以下内容:

\makeatletter
\def\@time@parse#1:#2\end@time{%
   \text{#1\,h #2\,min}% <------------------ change format here
}
\newcommand{\Time}[1]{%
   \@time@parse#1\end@time
}
\makeatother

在哪里\@time@parse工作并从内部调用\Time


全 MWE

\documentclass{article}

\usepackage{amsmath}

\newcommand{\TimeI}[2]{%
   \text{#1:#2}%
}

\makeatletter
\def\@time@parse#1:#2\end@time{%
   \text{#1\,h #2\,min}%
}
\newcommand{\TimeII}[1]{%
   \@time@parse#1\end@time
}
\makeatother

\begin{document}
Meeting at \TimeI{5}{00}

Meeting at \TimeII{5:00}
\end{document}

相关内容