我想获得一个宏\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}