答案1
如果您可以自由使用 LuaLaTeX,那么以下解决方案应该会引起您的兴趣。
f
请注意,和下标之间的字距调整*
在很大程度上取决于所使用的数学字体。例如,如果您使用Computer Modern Math
、Latin Modern Math
或XITS Math
,字距调整-3mu
——相当于负的细间距——对于星号来说看起来差不多,而-2mu
对于小写字母下标来说看起来差不多。但是,如果您使用newtxmath
字体包,只需调整-1.5mu
(或一半负的细间距)的字距就足够了。
% !TEX TS-program = lualatex
\documentclass{article}
%% Uncomment one or the other of the next two lines to get a Times Roman clone math font
%\usepackage{newtxmath}\usepackage[no-math]{fontspec}
%\usepackage{unicode-math}\setmathfont{XITS Math}
\usepackage{luacode}
\begin{luacode}
function f_sub ( s )
s = s:gsub ("(f.-)_{(.*)}" ,"%1_{\\mkern-3mu %2}")
s = s:gsub ("(f.-)_(\\ast)" ,"%1_{\\mkern-3mu %2}")
return s
end
\end{luacode}
%% Two LaTeX macros to switch Lua function on and off:
\newcommand\fsubOn{\directlua{luatexbase.add_to_callback
( "process_input_buffer", f_sub , "f_sub" )}}
\newcommand\fsubOff{\directlua{luatexbase.remove_from_callback
( "process_input_buffer", "f_sub" )}}
\begin{document}
\fsubOn % switch on the Lua function
$f^\ast_\ast$ $f_\ast$ $f_{n}$ --- with kerning adjustment
\fsubOff % switch off the Lua function
$f^\ast_\ast$ $f_\ast$ $f_{n}$ --- without kerning adjustment
\end{document}