我希望,除了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)
如果您不使用该命令,您自然可以重新定义它,但是传统上对重音命令使用“单字符命令”,因此我永远不会对命令使用这样的名称。