当上标中的某些字符跟在某些字母(至少是“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}