mathop 和它的参数之间的可变间距

mathop 和它的参数之间的可变间距

下面的 MWE 定义并使用以 * 为后缀\card*的数学运算符形式\card,当后续参数为“(”或“[”时,会在“card”后创建更大的间距,否则打印时会离它太近。

有没有更好的办法?

\documentclass{article}
\usepackage{suffix}
\usepackage{mathtools}
\usepackage{amsfonts}

\DeclareMathOperator{\card}{card}
\WithSuffix\newcommand\card*{\card\,}

\begin{document}

$\card \mathbb{R} = \card* (0, 1) = \card* [0, 1] = \card R$

\end{document}

添加:当参数是区间时,对于\sup\inf\max,也会出现同样的问题。\min

答案1

你也许想要这个:

\documentclass{article}
\usepackage{amsmath,amssymb}

\DeclareMathOperator{\cardop}{card}
\newcommand{\card}{\cardop{}}

\begin{document}

$\card \mathbb{R} = \card (0, 1) = \card [0, 1] = \card R$

$\exp\card X$

\end{document}

在此处输入图片描述

不要\card在公式末尾使用。

另一方面,该命令不会完成预期的工作

\card(A \cup B)

其中括号是复杂公式的实际分隔符。

因此,我的建议是定义一个间隔命令,使它们成为普通原子:

\newcommand{\intv}[1]{{#1}}

并使用\card\intv{(0,1)}\card定义为通常的运算符。

答案2

的主要目的\DeclareMathOperator是产生您用表格阻止的间距*。目的是在字母前添加一个细空格,以便记录X 但 log( 不需要空间X

如果您想避免使用标准布局,并且在所有情况下都留出较少的空间,则无需使用星号形式的单独标记,只需不要将命令声明为数学运算符:

在此处输入图片描述

第一种形式对我来说看起来更自然,但你可以按照你喜欢的方式定义,

\documentclass{article}

\usepackage{mathtools}
\usepackage{amsfonts}


\DeclareMathOperator{\cardA}{card}

\newcommand\cardB{\mathrm{card}\,}

\begin{document}


$\cardA \mathbb{R} = \cardA (0, 1) = \cardA [0, 1] = \cardA R$


$\cardB \mathbb{R} = \cardB (0, 1) = \cardB [0, 1] = \cardB R$

\end{document}

相关内容