渐变符号和字母 f mtpro2

渐变符号和字母 f mtpro2

\nabla因此,我注意到使用 mtpro2 时数学模式下和之间的间距非常宽(至少对我来说)。这是使用 mtpro2f 打字的结果。\nabla f

f 的梯度

我想知道是否有办法可以\nabla 根据下一个非空格字母调整符号,比如说:

  1. 如果下一个非空格字母是f,则执行\kern -0.2 em f
  2. 除此以外,保持平常状态。

我一直在寻找,但找不到令人满意的解决方案。任何帮助都将不胜感激。

答案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之间距离的指令,我建议您替换\nablaf

   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为最佳调整量。

相关内容