![在文本模式下访问 PostScript 字体的减号](https://linux22.com/image/254338/%E5%9C%A8%E6%96%87%E6%9C%AC%E6%A8%A1%E5%BC%8F%E4%B8%8B%E8%AE%BF%E9%97%AE%20PostScript%20%E5%AD%97%E4%BD%93%E7%9A%84%E5%87%8F%E5%8F%B7.png)
诸如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}