Упрощено использование $\C$ для комплексных чисел: конфликты с T2A, mismath и babel

Упрощено использование $\C$ для комплексных чисел: конфликты с T2A, mismath и babel

Я настоятельно рекомендую использовать $\C$для обозначения множества комплексных чисел то же, что и $\R$для обозначения действительных чисел — будь то \mathbbили \mathbf.

Несколько других пакетов используют собственные определения \C: t2aenc.def(вызывается из \usepackage[T2A,T1]{fontenc}); mismath.sty; и либо hyperref.styили некоторого пакета, который он вызывает.

Мой обходной путь для этой проблемы показан в MWE ниже.

Вопрос:Есть ли более простой способ сделать это — без многократного переопределения \C?

Примечания:

  • Очень маловероятно, что мне когда-либо понадобится использование T2A \Cот babel. Я не уверен, как hyperrefиспользует \C. (Это для двойного ударения в сербскохорватском и словенском языках.)
  • Я использую pdflatex инеткселатекс или луалатекс!

Источник МВЭ:

\documentclass{article}
\usepackage[T2A,T1]{fontenc}
\usepackage[russian,french,german,polish,main=english]{babel}

% Avoid \lll clash with def in amssymb.sty:
\makeatletter
    \let\polish@l=\ll
    \let\polish@L=\LLL
    \let\lll\relax \let\LLL\relax % undefine them
    \def\plll{\polish@l}
    \def\pLLL{\polish@L}
\makeatother
\usepackage{amsmath,amssymb}

% Choose ONE of the following two defs:
%\newcommand{\numsys}[1]{\mathbb{#1}}
\newcommand{\numsys}[1]{\mathbf{#1}}

% First 
\makeatletter
\def\my@textormath{%
  \ifmmode
    \expandafter\@secondoftwo
  \else
    \expandafter\@firstoftwo
  \fi}
    \ifcsname C\endcsname
      \let\oldC\C
      \def\C{\my@textormath{\oldC}{\numsys{C}}}
    \fi
\makeatother

\usepackage{mismath} % defines \Z, \Z, \Q, \R, \C with mathbf

\usepackage[pdftex]{hyperref}
\makeatletter
\def\my@textormath{%
  \ifmmode
    \expandafter\@secondoftwo
  \else
    \expandafter\@firstoftwo
  \fi}
\@ifpackageloaded{hyperref}{% then
    \let\newerC\C
    \def\C{\my@textormath{\newerC}{\numsys{C}}}}%
  {}
\makeatother

\renewcommand{\N}{\numsys{N}}
\renewcommand{\Z}{\numsys{Z}}
\renewcommand{\Q}{\numsys{Q}}
\renewcommand{\R}{\numsys{R}}

\begin{document}

$\N \subset \Z \subset \Q \subset \R \subset \C$

\end{document}

Сопутствующий пост: Можно ли использовать $ \C$ для комплексных чисел с кодировкой T2A?

решение1

Если вы хотите, чтобы ваше определение победило, добавьте как можно позже.

  \AtBeginDocument{\def\C{\numsys{C}}}

Связанный контент