我如何通过自己的宏来影响数学函数的间距?

我如何通过自己的宏来影响数学函数的间距?

我想获得一个宏\of来定义一个函数,并使用一个可选宏\at来定义其限制。原因是,我不喜欢函数的间距(因为没有间距),我想自动化。这个想法是,设置像f \of x或这样的函数f\of x,这样会快速方便。但我不确定,出于语法原因,这是否可行。我认为,\func{f}{x}提供类似的东西会更容易,但这会输入太多内容,并且对已经存在的公式进行大量更改。

但是,这个宏的原因是我想实现以下属性。将来我想将其扩展到所有类型的导数或类似物(总导数、偏导数、法向导数、增量导数、无限元素……)。

以下是列表:

  • 始终设置参数(\of()后面的值)
  • 将 x、(x) 和 {x} 识别为参数
  • 当函数位于字母、数字或括号后面时,始终在函数前面设置半个空格
  • 设置函数后面的半个空格,如果后面跟着一个(
  • 允许函数和参数的权力并正确设置它
  • 允许嵌套函数
  • 允许\at使用三种可选格式的符号(这对于衍生产品来说以后会变得有趣......)

以下是一些示例:

\documentclass{article}
\usepackage{mathtools}
\usepackage[partial=upright]{unicode-math}

\begin{document}
\begin{verbatim}f \of x=x^2\end{verbatim}
$f(x)=x^2$
\begin{verbatim}f \of (x+y)=x+y\end{verbatim}
$f(x+y)=x+y$
\begin{verbatim}f \of (x+y)x+y\end{verbatim}
$f(x+y)x+y$
\begin{verbatim}f \of (x+y)(x+y)(x+y)\end{verbatim}
$f(x+y)\,(x+y)(x+y)$
\begin{verbatim}xf \of xx\end{verbatim}
$x\,f(x)x$
\begin{verbatim}zf \of xg \of yz\end{verbatim}
$z\,f(x)\,g(y)z$
\begin{verbatim}f^2 \of x\end{verbatim}
$f^2(x) \vee f(x)^2 \vee (f(x))^2 \quad \text{don't know which one is correct}$
\begin{verbatim}f \of x^2\end{verbatim}
$f(x^2)$
\begin{verbatim}f \of g \of x\end{verbatim}
$f(g(x))$
\begin{verbatim}\frac{a}{b}f\of x\end{verbatim}
$\dfrac{a}{b}f(x)$
\begin{verbatim}(a+b)f\of x\end{verbatim}
$(a+b)\,f(x)$
\begin{verbatim}\setFunctionAtBar \end{verbatim}
\begin{verbatim}f \of x \at a\end{verbatim}
$f(x)|_{x=a}$
\begin{verbatim}\setFunctionAtBracket\end{verbatim}
\begin{verbatim}f \of x \at {a+b}\end{verbatim}
$(f(x))_{x=(a+b)}$
\begin{verbatim}\setFunctionAtInline\end{verbatim}
\begin{verbatim}f \of x \at (a+b)\end{verbatim}
$f(a+b)$
\end{document}

答案1

除了语法之外,主要问题似乎是函数项之前的空格。如果 TeX 知道它是一个函数,它会自动在那里添加空格。\log \sin等是\mathop原子并获得空间,但是f一个数学运算符,所以没有。但是,如果你声明一个单字母数学运算符,它会获得我认为你想要的空间:

在此处输入图片描述

\documentclass{article}

\begin{document}
\showoutput
$zf(x)$

$z\mathop{{}f}(x)$

\end{document}

相关内容