最小最大之后的合理间距

最小最大之后的合理间距

\min和的默认定义\max基本上不会在它们后面插入空格,这在显示方程式中陈述优化问题等时看起来非常糟糕。我想不出任何方法可以在它们后面自动插入空格?例如,以下方法不起作用:

\renewcommand{\min}{\expandafter\,\operatorname*{min}}

空格仍然位于 min 之前。有没有办法仍能正确解析上标和下标?

添加:我基本上想要的是

\min_u\, G(u) + F(Ku)

在显示方程中,无需手动输入 \。更完整的陈述,可以更好地说明表达式的类型,将是

\min_{u \in X}\, G(u)+F(Ku) \quad\text{subject to}\quad Au=b.

您确实需要那里的额外空间,但如果不必手动输入就更好了。

答案1

的默认定义\min

\def\min{\mathop{\operator@font min}}

因此,它就像一个操作员\log,会得到一个狭窄的空间,\min x但不会\min(x)

你的重新定义

\renewcommand{\min}{\expandafter\,\operatorname*{min}}

是相同的

\renewcommand{\min}{\,\operatorname*{min}}

并在操作符前添加一个额外的细空格。 的唯一效果\expandafter是在执行前扩展\operatorname一步\,,因此您的定义实际上相当于

\renewcommand{\min}{\,\protect\operatorname_*{min}}

其中_,表示空格字符作为一级扩展仅表明它\protect使其成为一个强大的命令。

答案2

正如 egreg 在他的第一条评论中所解释的那样,\min et. al. 在后面跟有分隔符时具有正确的间距,因为它们有意地在的值(取最小值)。当你使用它时,

\min_u G(u) + F(Ku)

这个表达式本身就很含糊,而自然解析为“最小值G(u),加上……哦,等等”会在中途引起一些不协调。所以真正的答案是不要这样做,而是写

\min_u \{ G(u) + F(Ku) \}

相反。作为奖励,你可以删除下标并添加一些在小字体中看起来不好的冗长条件,例如

\min_u \{ G(u) + F(Ku) \mid u \in X, Au = b \}

这比你的第二个片段有优势,

\min_{u \in X}\, G(u)+F(Ku) \quad\text{subject to}\quad Au=b

不会错误地u在其范围之外对“绑定变量”进行外部引用。

我意识到您可能认为省略分隔符是遵循了您所在领域的某种惯例。但是,除非您对此事进行了具体的思考并形成了坚定的观点,否则您应该考虑在此处更改您的风格,因为它既有印刷问题(如您所观察到的),也有数学问题。

PS 如果你真的必须这样做,最简单的解决方法可能是使用参数而不是下标。例如,

\newcommand*\mymin[1][]{\min_{#1}\,}

请参阅此最简文档并将其与“标准”进行比较:

\documentclass{article}
\newcommand*\mymin[1][]{\min_{#1}\,}
\begin{document}
$\min A \quad \min_u A$

$\mymin A \quad \mymin[u] A$
\[ \min A \quad \min_u A\]
\[ \mymin A \quad \mymin[u] A\]
\end{document}

两个最小宏的比较

为什么不直接使用下标字符?首先,因为解析它很麻烦,因为它不像宏那样方便地“收集”其参数,因此,移动该参数很困难。其次,从编程的角度来看,您只想用它做一件事\min,即对其进行下标,因此将其与抽象的“执行此操作”关联起来更合乎逻辑。抽象具有很好的副作用,即启用抽象实现,即在后面放置一个空格。

答案3

临时解决方案。这个只是检查旁边是否有下标。仅此而已。

\documentclass{scrartcl}
\usepackage{mathtools}
\makeatletter
\def\raremin{\@ifnextchar_\@rareminsub\@raremin}
\def\@rareminsub_#1{\min_{#1}\,}
\def\@raremin{\min\,}
\makeatother
\begin{document}
$ \raremin_u G(u) + F(Ku) $
\[ \raremin_u G(u) + F(Ku) \]
\end{document}

在此处输入图片描述

相关内容