![Упрощено использование $\C$ для комплексных чисел: конфликты с T2A, mismath и babel](https://rvso.com/image/399813/%D0%A3%D0%BF%D1%80%D0%BE%D1%89%D0%B5%D0%BD%D0%BE%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%24%5CC%24%20%D0%B4%D0%BB%D1%8F%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%81%D0%BD%D1%8B%D1%85%20%D1%87%D0%B8%D1%81%D0%B5%D0%BB%3A%20%D0%BA%D0%BE%D0%BD%D1%84%D0%BB%D0%B8%D0%BA%D1%82%D1%8B%20%D1%81%20T2A%2C%20mismath%20%D0%B8%20babel.png)
Я настоятельно рекомендую использовать $\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}}}