![在 T1 字体编码的情况下禁用一些 xunicode 宏?](https://linux22.com/image/310204/%E5%9C%A8%20T1%20%E5%AD%97%E4%BD%93%E7%BC%96%E7%A0%81%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E7%A6%81%E7%94%A8%E4%B8%80%E4%BA%9B%20xunicode%20%E5%AE%8F%EF%BC%9F.png)
我希望,除了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)
如果您不使用该命令,您自然可以重新定义它,但是传统上对重音命令使用“单字符命令”,因此我永远不会对命令使用这样的名称。