私は、実数を表すときに を$\C$
使用する場合と同じように、複素数の集合を表すときに を使用することを強く好みます。これは、 を使用する場合でも を使用する場合でも同様です。$\R$
\mathbb
\mathbf
\C
他のいくつかのパッケージは、 : t2aenc.def
( から呼び出されます\usepackage[T2A,T1]{fontenc}
); mismath.sty
; および またはhyperref.sty
それが呼び出すパッケージの独自の定義を使用します。
これに対する私の回避策は、以下の MWE に示されています。
質問:繰り返し再定義せずに、これを実現するより簡単な方法はありますか\C
?
ノート:
\C
のT2A の使用が必要になる可能性はほとんどありません。 がどのように使用されているbabel
かはわかりません。(これは、セルビア語とクロアチア語およびスロベニア語の二重重アクセント用です。)hyperref
\C
- 私はpdflatexを使っていますないxelatex または lualatex!
出典 MWE:
\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}
答え1
定義を勝ち取りたいなら、できるだけ遅く追加してください
\AtBeginDocument{\def\C{\numsys{C}}}