检查短划线 \textendash 是否可用

检查短划线 \textendash 是否可用

我想编写一些可以在任何字体下正确呈现的代码(我不能使用 UTF8 输入)。有没有办法找出\textendash当前字体是否正确定义了?

使用\ttfamily--不会呈现为短划线,而是按照--字面意思,\textendash呈现为左括号{

所以我想,我需要一个自己的宏,textendash如果可用则使用,-否则使用。

\documentclass{minimal}
\begin{document}
  This -- should work the same \textendash{} in any font.

  \ttfamily
  This -- should work the same \textendash{} in any font.
\end{document}

答案1

您所看到的大多数只是OT1编码的产物,而实际上并不是单一编码:每种经典的 tex 字体都有单独的编码,特别是 tt 字体非常不同,因此可以逐字打印 ascii。

使用 T1 您可以获得更一致的结果。

在此处输入图片描述

\documentclass{article}
\usepackage[T1]{fontenc}
\begin{document}
  This -- should work the same \textendash{} in any font.

  \ttfamily
  This -- should work the same \textendash{} in any font.
\end{document}

您无法真正自动从 TeX 检测出哪个字符位于哪个位置。LaTeX 字体设置只是决定假装所有经典字体都具有相同的“OT1”编码,以便提供半合理的界面。因此,由于您无法分辨字符形状,因此您无法通过测试检测出 cmtt 的编码实际上与 cmr 的编码不同。

相关内容