参考这个帖子:正文中仅使用旧式数字,其他情况使用内衬数字m 如果我的字体默认使用旧式数字且没有内置上标和下标数字,我该如何指示 LuaLatex 使用内衬数字作为 \textsuperscript 和脚注标记?谢谢
附录
这是一个非常基本的 MWE
\documentclass[a4paper,12pt]{book}
\usepackage{fontspec}
\usepackage[english]{babel}
\babelfont[english]{rm}[Ligatures=TeX,Numbers={Proportional,OldStyle}]{EBGaramond}
\usepackage[perpage,bottom,hang,stable,norule]{footmisc}
\renewcommand{\footnotemargin}{0.01em}
\renewcommand{\hangfootparskip}{0pt}
\renewcommand{\footnotelayout}{\hspace{1em}}
\begin{document}
text\textsuperscript{abdx 136}
text\footnote{footnote text}
\end{document}
事实上,我的字体(测试版,不是用于 MWE 的 EBGaramond)没有上位数字和下位数字,所以我不能使用realscript
包
答案1
您可以手动更改相关的 LaTeX 宏:
有两个部分:我们从 开始\textsuperscript
。它默认定义为
\DeclareRobustCommand*\textsuperscript[1]{%
\@textsuperscript{\selectfont#1}}
我们想使用内衬数字,所以我们必须添加\liningnums{...}
。我们可以省略,\selectfont
因为\liningnums
无论如何都会设置字体:
\DeclareRobustCommand*\textsuperscript[1]{%
\@textsuperscript{\liningnums{#1}}%
}
这将更改\textsuperscript
,但脚注尚未受到影响。脚注标记由 生成\@makefnmark
,默认情况下定义为
\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
乍一看,你可能会认为我们可以改变\@textsuperscript
而不是\textsuperscript
来影响这一点,但事实并非如此:这\normalfont
会将数字样式恢复为旧式数字。所以我们必须添加\liningnums
后 \normalfont
:
\renewcommand\@makefnmark{%
\hbox{\@textsuperscript{\normalfont\liningnums{\@thefnmark}}}%
}
把所有东西放在一起,添加一些,\makeatletter...\makeatother
因为我们使用了宏名@
,然后我们得到
\documentclass[a4paper,12pt]{book}
\usepackage{fontspec}
\usepackage[english]{babel}
\babelfont[english]{rm}[Ligatures=TeX,Numbers={Proportional,OldStyle}]{EBGaramond}
\usepackage[perpage,bottom,hang,stable,norule]{footmisc}
\renewcommand{\footnotemargin}{0.01em}
\renewcommand{\hangfootparskip}{0pt}
\renewcommand{\footnotelayout}{\hspace{1em}}
\makeatletter
\renewcommand\@makefnmark{%
\hbox{\@textsuperscript{\normalfont\liningnums{\@thefnmark}}}%
}
\DeclareRobustCommand*\textsuperscript[1]{%
\@textsuperscript{\liningnums{#1}}%
}
\makeatother
\begin{document}
text\textsuperscript{abdx 136}
abdx 136
text\footnote{footnote text}
\end{document}