テキストモードでポストスクリプトフォントのマイナス記号にアクセスする

テキストモードでポストスクリプトフォントのマイナス記号にアクセスする

libertineパッケージからやmathpazoなどのPostScriptフォントlibertine-legacyには、テキストモードでアクセスできるマイナス記号がありますか?私がやろうとしているのは、通常のダッシュをマイナス記号に置き換えることです。答えデビッド・カーライルより。

彼の解決策は、オープン タイプ フォントのほとんどに簡単にアクセスできるマイナス文字があるため、オープン タイプ フォントを使用する場合に完璧に機能します。

\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

en ダッシュは"15T1 エンコーディング内の位置にあります。

\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}

関連情報