答案1
这是一个基于 LuaLaTeX 的解决方案。它设置了一个名为的 Lua 函数nabla_f
来执行大部分工作,并将此函数分配给process_input_buffer
回调,使其对所有输入进行操作前TeX 开始进行常规处理。
% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{times,mtpro2} % text and math fonts
\usepackage{luacode}
\begin{luacode}
function nabla_f ( s )
return ( s:gsub ( "\\nabla%s*f" , "\\nabla\\mkern-4mu f" ) )
end
\end{luacode}
\directlua{luatexbase.add_to_callback("process_input_buffer", nabla_f , "nablaf" )}
\begin{document}
$\nabla{}f$ $\nabla f$ $\nabla h$ $\nabla k$
\end{document}
附录:如果您还想更改\partial
和之间的空白量,同时保留更改和f
之间距离的指令,我建议您替换\nabla
f
return ( s:gsub ( "\\nabla%s*f" , "\\nabla\\mkern-4mu f" ) )
和
s = s:gsub ( "\\nabla%s*f" , "\\nabla\\mkern-4mu f" )
s = s:gsub ( "\\partial%s*f", "\\partial\\mkern-4mu f" )
return s
当然,您可以(并且应该)将新的实例更改-4mu
为最佳调整量。