下面的 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}