较长函数参数的括号周围的空格

较长函数参数的括号周围的空格

线路

i(x,y,z,t) = \delta(x-\ell_x(z)) \delta(y-\ell_y(z)) \hat{\imath}(\xi(z),t)

在此处输入图片描述

在我眼里,连续函数调用之间的间隔太小。很难从视觉上区分这三个调用。我猜根本原因是作为函数参数的表达式相对较长。为了比较,

i(x,y,z,t) = \delta(x) \delta(y) \hat{\imath}(\xi(z),t)

在此处输入图片描述

我认为已经好多了。

我知道我可以

  1. 使用等手动调整间距\,,包括定义自动执行此操作的宏的选项。
  2. 插入\cdot作为添加分隔空间的手段。

但是,我的问题是:是否有一种规范的方法(例如一个包)来处理这个问题?我想我不是第一个遇到这个问题的人……尽管如此,我还是找不到有用的、通用的解决方案。

一个可能的解决方案可能是

i(x,y,t) = \delta \funcargs{x-\ell_x(z)} \delta \funcargs{y-\ell_y(z)} \hat{\imath} \funcargs{\xi(z)}{t}

请注意,我发现的使用\cdot不能令人满意,因为它会引入文档中的不一致(有时有点,有时没有,但含义相同)。

答案1

首先,让我从 TeXbook 中引用一段话来展示不同类型的数学原子之间的空间数量:

在此处输入图片描述

在哪里

  • Ord包括诸如a\theta以及里面的东西\mathord或者只是简单{}的;
  • Op包括诸如\sin\gcd和 里面的东西\mathop
  • Bin包括诸如\pm\otimes和 里面的东西\mathbin
  • Rel包括诸如\leq\mid和 里面的东西\mathrel
  • Open包括诸如\langle(和 里面的东西\mathopen
  • Close包括诸如\rangle)和 里面的东西\mathclose
  • Punct包括诸如,.和 里面的东西\mathpunct
  • Inner包括像\cdots和 里面的东西\mathinner

以下是一个例子文档说明了几种不同的方法:

\let\funarg\mathinner
\def\funop#1{\mathop{{}#1}}
$$ i(x,y,z,t) = \delta(x-\ell_x(z)) \delta(y-\ell_y(z)) \hat\imath(\xi(z),t), $$
$$ i\funarg{x,y,z,t} = \delta\funarg{(x-\ell_x(z))} \delta\funarg{(y-\ell_y(z))} \hat\imath\funarg{(\xi(z),t)}, $$
$$ \funarg{i(x,y,z,t)} = \funarg{\delta(x-\ell_x(z))} \funarg{\delta(y-\ell_y(z))} \funarg{\hat\imath(\xi(z),t)}, $$
$$ \funop i(x,y,z,t) = \funop\delta(x-\ell_x(z)) \funop\delta(y-\ell_y(z)) \funop{\hat\imath}(\xi(z),t), $$
\bye

在此处输入图片描述

所以正如您所看到的,您可能希望使用原子\mathop作为函数“名称”的最后一个选项。

使用 LaTeX,可以定义如下(下面的第二行显示原始代码的输出):

\documentclass{article}
\newcommand\funop[1]{\mathop{{}#1}}
\begin{document}
$i(x,y,z,t) = \funop\delta(x-\ell_x(z)) \funop\delta(y-\ell_y(z)) \funop{\hat\imath}(\xi(z),t)$

vs.

$i(x,y,z,t) = \delta(x-\ell_x(z)) \delta(y-\ell_y(z)) \hat{\imath}(\xi(z),t)$
\end{document}

(我没有在命令中包含括号的原因是我觉得测量参数以决定栅栏的大小会花费太多精力。我认为使用等手动定义高度更简单\bigl(,并且在手稿中看到括号而不是{}'s 会更好)

在此处输入图片描述

答案2

\,在乘法因子之间插入一个细空格 ( ) 应该有效。\cdot在这些位置插入也应该有效。您还可以结合使用细空格,使外括号比内括号稍大(通过使用\bigl(\bigr))。下面说明了三种可能性:

在此处输入图片描述

\documentclass{article}
\begin{document}
$i(x,y,z,t) = \delta(x-\ell_x(z)) \, \delta(y-\ell_y(z)) \, \hat{\imath}(\xi(z),t)$

$i(x,y,z,t) = \delta(x-\ell_x(z)) \cdot \delta(y-\ell_y(z)) \cdot \hat{\imath}(\xi(z),t)$

$i(x,y,z,t) = \delta\bigl(x-\ell_x(z)\bigr) \, \delta\bigl(y-\ell_y(z)\bigr) \, 
    \hat{\imath}\bigl(\xi(z),t)\bigr)$
\end{document}

可以通过创建如下宏来自动化第三种方法

\def\myfunc#1{\bigl(#1\bigr)\,}

然后输入

$i(x,y,z,t) = \delta\myfunc{x-\ell_x(z)} \delta\myfunc{y-\ell_y(z)} 
    \hat{\imath}\myfunc{\xi(z),t)}$

相关内容