inputenc
/fontenc
と を除いてfontspec
、 でエンコードされた古い.tex
ファイルは、 、、 のUTF-8
いずれのエンジンでも何も変更せずに使用できることを期待していました。pdftex
xetex
luatex
しかし、次の MWE は、、、、、などの一部の のパブリック マクロが原因でそうではないことを指摘しています 。このxunicode
よう\m
な短い、したがって人気のあるマクロ名がこのパッケージによって選択されたのは残念です。\B
\G
\M
\T
\U
\documentclass{article}
\usepackage{expl3}
\ExplSyntaxOn
\pdftex_if_engine:TF
{
\show\m
\show\B
\show\G
\show\M
\show\T
\show\U
}
{
\usepackage{fontspec}
\show\m
\show\B
\show\G
\show\M
\show\T
\show\U
}
\ExplSyntaxOff
\begin{document}
% \newcommand{\m}{}
% \newcommand{\B}{}
% \newcommand{\G}{}
% \newcommand{\M}{}
% \newcommand{\T}{}
% \newcommand{\U}{}
\end{document}
私の知る限り、 を除くすべてのマクロはフォント エンコーディング\T
に関係し、として定義されます。OT1
\T
\DeclareRobustCommand{\T}[1]{\~{\m{#1}}}
そこで私の質問は、フォント エンコーディングの場合T1
、これらのマクロを安全にパッチして無効にすることは可能でしょうか (ロード直後fontspec
)?
答え1
xunicode はこれらのコマンドに対して OT1 のデフォルトも設定しますが、主なポイントはアクセントコマンドです。例:
\DeclareEncodedCompositeCharacter{\UTFencname}{\M}{0322}{0322} % (Combining retroflex hook below)
使用しない場合は当然コマンドを再定義できますが、アクセント コマンドには「1 文字のコマンド」を使用する慣習があるため、コマンドにそのような名前を使用することはありません。