等宽字体中的单字符省略号(电传打字机)

等宽字体中的单字符省略号(电传打字机)

我想将省略号作为单个(宽度)字符\texttt。默认情况下,它使用三个句点:

\documentclass{article}
\begin{document}
  \centering
  \begin{tabular}{rcc}
    & ellipsis & three periods\\
    plain & \textellipsis & ...\\
    teletype & \texttt{\textellipsis} & \texttt{...}
  \end{tabular}
\end{document}

编译的MWE

我认为当前的行为意味着我不应该将电传打字机(\texttt)视为等宽字体,而是将其视为在打字机上所做的那样?

答案1

您可以定义自己的单字符宽度省略号:

\documentclass{article}
\newcommand\monoellipsis{\hbox to.5em{\hss.\hss\hss.\hss\hss.\hss}}
\begin{document}
  \centering
  \begin{tabular}{rcc}
    & ellipsis & three periods & monoellipsis\\
    plain & \textellipsis & ... & \monoellipsis\\
    teletype & \texttt{\textellipsis} & \texttt{...} & \texttt{\monoellipsis}
  \end{tabular}
\end{document}

在此处输入图片描述

答案2

您可以添加一个等宽字体测试,通过比较当前字体的宽度i和来判断m。我使用 0.5em,因为这是等宽字体中字形的正常宽度。您可能想稳妥一点,使用

\fontcharwd\font`x

而不是0.5em并且0.33333\fontcharwd\font`x而不是0.16667em

\documentclass{article}

\let\kerneltextellipsis\textellipsis
\newcommand{\textmonoellipsis}{%
  \makebox[0.5em]{%
    \makebox[0.16667em]{.}\hfil
    \makebox[0.16667em]{.}\hfil
    \makebox[0.16667em]{.}%
  }%
}
\DeclareRobustCommand\textellipsis{%
  \ifdim\fontcharwd\font`i=\fontcharwd\font`m
    % i and m have equal width: monospaced font
    \textmonoellipsis
  \else
    \kerneltextellipsis
  \fi
}

\begin{document}

Normal text\dots

\texttt{Mono text\dots xyz}

\texttt{Mono textXxyz}

\end{document}

在此处输入图片描述

相关内容