我希望,除了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}
AFAIU,所有這些宏除了\T
關注OT1
字體編碼\T
都被定義為\DeclareRobustCommand{\T}[1]{\~{\m{#1}}}
.
因此我的問題是:在字體編碼的情況下T1
,是否可以安全地修補這些巨集以停用它們(就在fontspec
安全地修補這些巨集以停用它們(加載後)?
答案1
xunicode 也為這些指令設定了一些 OT1 預設值,但重點是重音指令。例如
\DeclareEncodedCompositeCharacter{\UTFencname}{\M}{0322}{0322} % (Combining retroflex hook below)
如果您不使用該命令,您自然可以重新定義該命令,但是傳統上使用“one-char-commands”作為重音命令,因此我永遠不會對命令使用這樣的名稱。