Я надеялся, что, за исключением 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)
Естественно, вы можете переопределить команду, если она вам не нужна, но существует традиция использовать «односимвольные команды» для команд с акцентами, поэтому я бы никогда не использовал такое название для команды.