Re: フォントのエンコーディング

名前: ZR
日時: 2012-03-10 11:31:52
IPアドレス: 119.104.58.*

>>56685 ■ \textmu だけ TS1 に切り替える Text Companion の記号類(TS1 エンコーディング)は 別に T1 としか併用できないわけでなく、OT1 とも併用 できます。つまり % fontenc 読込なし → 既定は OT1 のまま \usepackage{textcomp} とすると、「既定のエンコーディングは OT1 のままで、 TS1 の記号類が使える」状態になります。 ところで、\textmu 等の TS1 の文字は特にエンコーディング を明示的に切り替えなくても使えるわけですが、これは 「現在のエンコーディングで当該の文字が未定義ならば、 TS1 での定義を代わりに使う」という「代替設定」が textcomp パッケージの中で為されるからです。 さらに、このパッケージでは、\textdollar (\$ が中で 呼ぶ)、\textsterling 等について OT1 の「筋の悪い」 定義を削除(だから OT1 だと代替で TS1 が使われる) しています。 \documentclass[a4paper]{article} \usepackage{lmodern}% LM vs CM の話は後回し \usepackage{textcomp} % 既定のエンコーディングは OT1 \begin{document} B% → OT1 \ae% → OT1 \textmu% (代替)→ TS1 \textonehalf% (代替)→ TS1 \$% (代替)→ TS1 \end{document} これでは目的に適わないという場合は、プレアンブルで textcomp を読む代わりに以下の命令を実行すると、 \textmu だけ TS1 の代替となり、その他の文字命令には 影響を及ぼさなくなります。 % textcomp は使えないが、TS1 の文字を用いたいので % エンコーディング定義ファイルを直接読み込む \input{ts1enc.def} % \textmu だけ代替設定する \DeclareTextSymbolDefault{\textmu}{TS1} ■ CM と LM フォントの切り替え エンコーディングとファミリ(Latin Modern Roman とか) は独立の概念です。つまり、「OT1 の LM Roman」もあるし、 「TS1 の CM Roman」もあるわけです。 # 実際に「TS1 の CM Roman」と扱われるのはオリジナルの # Text Companion Fonts(TC Fonts)であるが。 そして、LaTeX ではこの 2 つを独立して扱います。 だから、どうしても「OT1 は CM フォントで、TS1 は LM フォントで」ということに拘るなら、ファミリ切替を 別に行う必要があります。\textmu がある度に切替命令を 都度書くのは面倒なのでユーザ定義命令を作ることに なるでしょう。 ただし、「現在の CM に対応する LM を」となると、 ・CM Roman (cmr) → LM Roman (lmr) ・CM Sans Serif (cmss) → LM Sans Serif (lmss) のように「対応する LM のファミリを求める処理」が入る ことになりこれは TeX 言語の知識を必要とします。 穏当なところは、 ・「LM Roman の(TS1 の)\textmu を出力する」 ・「LM Sans Serif の(TS1 の)\textmu を出力する」 のような命令を別々に作って、その場で正しいものを使う、 ではないでしょうか。 # なお、\textmu 自体の再定義をするのは安全ではないと # 考えています。

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます。適宜改行を入れてください)