如何为相应的受众排版加拿大/墨西哥/美国电话号码

如何为相应的受众排版加拿大/墨西哥/美国电话号码

有一个有趣的讨论https://ux.stackexchange.com/q/92941/107032关于加拿大/墨西哥/美国电话号码的书写方式。答案基本上是这样的:

  1. 如果您的受众仅限于加拿大/墨西哥/美国,请使用 (###) ###-####

  2. 如果你的观众不是严格地在这个区域,使用 +### ### #### ,它对应于E.123 规范

我不想讨论什么是正确的格式(如何正确排版电话号码?已经回答了这个问题),但是如何正确排版第一种格式

有一场关于第一种情况下破折号在 Latex 中如何书写的讨论,如何使用 pdflatex 和 XCharter 制作图形破折号 (U+2012)

我还有其他问题:

  1. 是否应该以数学模式输入数字?
  2. 这些空间应该是牢不可破的,还是具有其他性质?
  3. 加号应该是加号以外的其他符号吗?(这维基百科页面似乎使用“正常” + 符号,但我想知道是否有不同的惯例)

梅威瑟:

\documentclass{standalone}
\begin{document}
% Solution from https://tex.stackexchange.com/a/335513/34551
    \newlength\figurewidth
    \newcommand\fdash
    {\settowidth\figurewidth{9}%
        \raisebox{0.6ex}{\makebox[\figurewidth]{\hrulefill}}%
    }
\begin{tabular}{c c c }
(607) 123-4567 & +22 607 123 4567 & Text mode\\
(607)~123-4567 & +22~607~123~4567 & Text mode, unbreakable spaces\\
\((607) 123-4567\) & \(+22 607 123 4567\) & Math mode\\
\((607)~123-4567\) & \(+22~607~123~4567\) & Math mode, unbreakable spaces\\
(607) 123\fdash4567 &  & Text mode, "custom" dashes\\
\((607) 123\fdash4567\) &  & Math mode, "custom" dashes
\end{tabular}

\end{document}

在此处输入图片描述

答案1

您可以定义一个布尔值来选择不同的分支:

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\nanp}{mm}
 {% #1 = area code, #2 = phone number
  \bool_if:NTF \g_clement_camxus_bool
   {
    \clement_camxus:nn { #1 } { #2 }
   }
   {
    \clement_noncamxus:nn { #1 } { #2 }
   }
 }

\NewDocumentCommand{\nonCAMXUS}{}
 {
  \bool_gset_false:N \g_clement_camxus_bool
 }

\bool_new:N \g_clement_camxus_bool
\bool_gset_true:N \g_clement_camxus_bool

\cs_new_protected:Nn \clement_camxus:nn
 {
  (#1)\nobreakspace
  \tl_range:nnn { #2 } { 1 } { 3 }\nobreakspace
  \tl_range:nnn { #2 } { 4 } { 7 }
 }

\cs_new_protected:Nn \clement_noncamxus:nn
 {
  +1\nobreakspace#1\nobreakspace
  \tl_range:nnn { #2 } { 1 } { 3 }\nobreakspace
  \tl_range:nnn { #2 } { 4 } { 7 }
 }

\ExplSyntaxOff

\begin{document}

\nanp{212}{3456789}

\nanp{212}{345 6789}

\nonCAMXUS

\nanp{212}{3456789}

\nanp{212}{345 6789}

\end{document}

在此处输入图片描述

由于电话号码不是“数学数字”,因此它们不应处于数学模式并根据上下文改变形状。空格应该是不可分割的,因为电话号码不能跨行分割。加号是国际公认的代表国际电话的本地中继代码。

相关内容