fs 后的上标 - 间距

fs 后的上标 - 间距

当上标中的某些字符跟在某些字母(至少是“f”)后面时,它们会发生冲突。我使用的是数字上标引用样式,但问题比这更普遍,如以下 MWE 所示:

\documentclass{article}
\begin{document}
f$^6$ f$^1$ y$^6$

f\,$^6$ f\,$^1$ y\,$^6$
\end{document}

在第一行中,除了第一个例子之外,其他所有例子看起来都是正确的;在第二行中,甚至f$^6$看起来相当宽,其他上标都漂浮在中间距离。这可能\footnote也适用于 s(带字母),我只是碰巧没有一个组合可以证明这一点。

对于某些组合,我必须添加手动更正(\kern0.05em看起来正确)吗?或者有更通用的解决方案?

上述代码的输出

答案1

字体“知道”这里需要的调整,并将其作为斜体校正提供\/

在此处输入图片描述

\documentclass{article}
\begin{document}
f$^6$ f$^1$ y$^6$

f\textsuperscript6 f\textsuperscript1 y\textsuperscript6 

f\/\textsuperscript{6} f\/\textsuperscript{1} y\/\textsuperscript{6}  $\leftarrow$ this one

f\,$^6$ f\,$^1$ y\,$^6$

f\kern0.05em$^6$ f\kern0.05em$^1$ y\kern0.05em$^6$
\end{document}

答案2

使用f$^6$不是解决这个问题的最好方法,因为它不是数学,所以

f\textsuperscript{6}

会是一个更好的方法。问题是字符“f”稍微超出了它的边界框。有一个内置机制可以解决这个问题,即斜体修正尽管它有这样的名字,但它也可以用于解决非倾斜字体的问题,而非倾斜字体是问题最常出现的字体。

不幸的是,\textsuperscript它没有添加斜体校正,而我认为它应该添加。更不幸的是,修补\textsuperscript对于脚注来说还不够。

我们来做一个测试文档:

\documentclass{article}

\begin{document}
f\textsuperscript{6} f\textsuperscript{1} y\textsuperscript{6}

f\footnote{A}
f\footnote{B}
f\footnote{C}
f\footnote{D}
f\footnote{E}
f\footnote{F}

\setcounter{footnote}{0}

y\footnote{A}
y\footnote{B}
y\footnote{C}
y\footnote{D}
y\footnote{E}
y\footnote{F}

\end{document}

输出

在此处输入图片描述

现在我们修补\textsuperscript\footnote实际上有几个内部宏需要修补。

\documentclass{article}
\usepackage{etoolbox}

\makeatletter
\pretocmd\@textsuperscript{\/}{}{}
\patchcmd\@footnotemark{\edef}{\/\edef}{}{}
\makeatother

\begin{document}
f\textsuperscript{6} f\textsuperscript{1} y\textsuperscript{6}

f\footnote{A}
f\footnote{B}
f\footnote{C}
f\footnote{D}
f\footnote{E}
f\footnote{F}

\setcounter{footnote}{0}

y\footnote{A}
y\footnote{B}
y\footnote{C}
y\footnote{D}
y\footnote{E}
y\footnote{F}

\end{document}

我们得到

在此处输入图片描述

您可以看到,带有 的输出y不受影响,而 的输出有所改善f,因为我们本质上是\/\textsuperscript和之前添加了\footnote。如果字体设计得当,斜体校正应该可以补偿正确的间距量。

可能的补丁\supercite

\patchcmd{\mkbibsuperscript}{\unspace}{\unspace\/}{}{}

例子。

\documentclass{article}
\usepackage{biblatex}
\makeatletter
\pretocmd\@textsuperscript{\/}{}{}
\patchcmd\@footnotemark{\edef}{\/\edef}{}{}
\patchcmd{\mkbibsuperscript}{\unspace}{\unspace\/}{}{}
\makeatother

\addbibresource{xampl.bib}

\begin{document}
\nocite{*}

f\supercite{article-full}

\printbibliography
\end{document}

在此处输入图片描述

相关内容