在文本模式下访问 PostScript 字体的减号

在文本模式下访问 PostScript 字体的减号

诸如libertine(来自libertine-legacy软件包)或 mathpazo 之类的 PostScript 字体是否有可在文本模式下访问的减号?我想做的是用减号替换普通破折号,然后回答来自大卫卡莱尔。

他的解决方案在使用开放类型字体时非常有效,因为大多数开放字体都有一个可以轻松访问的减号:

\def\yyy{%
  \bgroup\uccode`\~\expandafter`\string-%
  \uppercase{\egroup\edef~{\noexpand\text{\char"2212\relax}}}%
  \mathcode\expandafter`\string-"8000 }

然而,我尝试使用 Libertine 或 Pagella 做类似的事情pdfLaTeX,但都失败了。使用连字符 ( ) 这样的符号\textendash效果很好:

\def\yyy{%
  \bgroup\uccode`\~\expandafter`\string-%
  \uppercase{\egroup\edef~{\noexpand\text{\llap{\textendash}\relax}}}%
  \mathcode\expandafter`\string-"8000 }

但这不是我想要的。我怎样才能访问该字体的减号?或者,如果这不可能,是否可以调整连字符的大小以“伪造”减号?

编辑:egreg 提供了以下解决方案。嵌入到我的框架中的代码是:

\def\yyy{% Thanks to egreg
  \begingroup\uccode`~=`-
  \uppercase{\endgroup\def~}{\mathbin{\text{\llap{\textminus}}}}
  \mathcode`-="8000 }

答案1

"15短划线在 T1 编码中的位置:

\begingroup\uccode`~=`-
  \uppercase{\endgroup\def~}{\mathbin{\text{\char"15 }}}
\AtBeginDocument{\mathcode`-="8000 }

或者,\textminus在 TS1 编码中:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{libertine}
\usepackage{textcomp}
\usepackage{amsmath}
\begingroup\uccode`~=`-
  \uppercase{\endgroup\def~}{\mathbin{\text{\textminus}}}
\AtBeginDocument{\mathcode`-="8000 }

\begin{document}
$-$
\end{document}

相关内容