我正在使用该amssymb
包,并且不时地想打印一个看起来正确的双击数字 1,就像使用该bbold
包所得到的一样。
但是它们都使用\mathbb{}
命令,因此导入两者只会导致命令bbold
被覆盖amssymb
(无论我先导入哪个包都无所谓)。由于我只需要一个双击的 1 而不是任何其他双击的数字,而且我更经常使用版本amssymb
,所以我想到也许可以声明一个\id
使用该bbold
版本的新运算符(例如)。但是我似乎无法让它工作(当然我也寻找了其他解决方法或其他包,但也没有成功)。
至少定义我的\id
运算符的某种工作版本如下所示:
\documentclass{article}
\usepackage{bbold}
\DeclareMathOperator{\id}{$\mathbb{1}$}
\begin{document}
\begin{equation}
\id
\end{equation}
\end{document}
未定义的控制序列。(第 4 行)
LaTeX 错误:缺少 \begin{document}。(第 4 行)
未定义的控制序列。(第 11 行)
答案1
您的代码无法正常工作,因为 (1) 您没有加载 amsmath,因此\DeclareMathOperator
未定义,并且 (2)\id
您在使用时已经处于数学模式,因为\begin{equation}
,因此在运算符定义中使用美元符号$
会产生错误。无论如何,这不是 的用途\DeclareMathOperator
——请参阅这里. \ensuremath
在你的定义中会更有意义。
我认为真正的问题是您想使用 amssymb 加载的字体应用于\mathbb
字母,但加载 bbold 包会阻止这样做?
您可以在数学模式下使用 bbold 字体,而无需加载 bbold 包,方法是使用不同于 的名称声明数学字母表\mathbb
。(看看bbold.sty
--这个的细微变化是其中数学模式的唯一重要命令。)
\documentclass{article}
\usepackage{amsmath,amssymb}
\DeclareMathAlphabet{\bbold}{U}{bbold}{m}{n}
\newcommand{\id}{\ensuremath{\bbold{1}}}
\begin{document}
\begin{equation}
\id \mathbb{A}
\end{equation}
\end{document}
允许声明的数学字母数量是有限制的,因此,如果你因为其他软件包而达到了限制,你可以修改此处提供说明抓取单个特定的数学模式符号:
\documentclass{article}
\usepackage{amsmath,amssymb}
\makeatletter
\newcommand\bboldsymbol[2][\mathord]{%
#1{\@bboldmathsymbol{#2}}}
\def\@bboldmathsymbol#1{\mathchoice
{\@bboldm@thsymbol{#1}\tf@size}
{\@bboldm@thsymbol{#1}\tf@size}
{\@bboldm@thsymbol{#1}\sf@size}
{\@bboldm@thsymbol{#1}\ssf@size}}
\def\@bboldm@thsymbol#1#2{%
\mbox{\fontsize{#2}{#2}\usefont{U}{bbold}{m}{n}#1}}
\makeatother
\newcommand{\id}{\bboldsymbol{1}}
\begin{document}
\begin{equation}
\id \mathbb{A}
\end{equation}
\end{document}