我目前正在做一件事情,它要求我在数学模式下使用单个字母后跟连字符,例如$p$-center
。对于大多数字母来说,它看起来没问题。但是,如果我使用$p$
或$\rho$
,连字符前面的空间太小了。我可以手动修复它:$p\mkern1mu$-center
,但到处都这样做很烦人。
尝试了更多方法后,我发现问题出在连字符上。我使用 microtype 更改了字距:\SetExtraKerning[unit=space]{encoding=*}{-={135,0}}
这很有效,至少对于连字符来说是这样。不幸的是,它会破坏所有短破折号。每当我写字时,--
它都不会再被短破折号替换。我可以用每个短破折号替换--
,\textendash
但同样会很烦人。
有没有办法可以改变连字符的字距而不破坏破折号?
答案1
答案2
如果您可以自由使用 LuaLaTeX,那么可以直接设置一个 Lua 函数,该函数会自动1mu
在破折号符号前插入一定量的字距调整(例如)。
以下代码捕获所有 的实例o
,p
并且\rho
后面紧跟着一个破折号字符和一个或多个字母字符。
% !TeX program = lualatex
\documentclass{article}
\usepackage{luacode}
\begin{luacode}
function kerndash ( s )
return ( string.gsub ( s , "([op])%$%-(%a*)" , "%1\\mkern1mu$-%2" ) )
end
\end{luacode}
\AtBeginDocument{\directlua{luatexbase.add_to_callback
( "process_input_buffer" , kerndash, "kerndash" )}}
\begin{document}
$p$-center
$\rho$-centric
$o$-adic
\end{document}