Postscript 字體(例如libertine
(來自libertine-legacy
包裝)或 mathpazo)是否有可以在文字模式下存取的減號?我想做的是用減號替換正常的破折號,如下圖所示回答來自大衛·卡萊爾。
他的解決方案在使用開放式字體時效果非常好,因為大多數字體都有一個可以輕鬆存取的減號字元:
\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}