我正在使用 XeLaTeX 类编写文档article
,并authblk
使用上标显示作者/所属机构。我还想使用该包xltxtra
排版更好的上标(用于脚注)。
然而,在使用最后一个包时,我注意到上标在隶属关系中不再正确排版。实际上它们显示为正常字体。
以下是 MWE(注释掉了 2 个可能的解决方法):
\documentclass{article}
\usepackage{fontspec}
\usepackage{xltxtra}
% \usepackage[no-sscript]{xltxtra}
\defaultfontfeatures{Mapping=tex-text}
\setmainfont{Minion Pro}
\usepackage[noblocks]{authblk}
% \makeatletter
% \renewcommand\AB@authnote[1]{\textsuperscript{#1}}
% \renewcommand\AB@affilnote[1]{\textsuperscript{#1}}
% \makeatother
\title{Bad superscript with authblk / xltxtra}
\author{Author A}
\affil{Affiliation A}
\begin{document}
\maketitle
\end{document}
第一个解决方法
作为第一个解决方法(上面第一个注释部分),我注意到我可以通过添加选项来禁用textsuperscript
包中的定义。但是我宁愿避免这样做,因为我想在正文中保留更好的上标。xltxtra
[no-sscript]
第二种解决方法
另一种解决方法(上面第二部分注释)是authblk
通过重新定义命令进行修补AB@authnote
,AB@affilnote
以便删除对的调用\normalfont
,即更改
\renewcommand\AB@affilnote[1]{\textsuperscript{\normalfont#1}}
进入
\renewcommand\AB@affilnote[1]{\textsuperscript{#1}}
这个方法效果不错,但这是一个 13 年前的软件包的补丁,所以我猜应该有更好的解决方案。此外,当使用没有“高级”版本的字形(如“A”或 $\dagger$)时,这个补丁不起作用。
第三个解决方法
最后一个(糟糕的)解决方法是在数学模式下强制上标,例如\author[$^1]{...}
,但是如果我们选择没有上级字形的字体,我们可能会得到双重上标。
。
任何能够克服这些解决方法的局限性的解决方案都将受到赞赏。
答案1
不加载 xltxtra
。
\documentclass{article}
\usepackage[noblocks]{authblk}
\usepackage{fontspec}
\setmainfont{Minion Pro}
\makeatletter
\renewcommand\AB@authnote[1]{\textsuperscript{#1}}
\renewcommand\AB@affilnote[1]{\textsuperscript{#1}}
\makeatother
\title{Good superscript without xltxtra}
\author{Author A}
\affil{Affiliation A}
\begin{document}
\maketitle
\end{document}
顺便说一句,Mapping=tex-text
应该是Ligatures=TeX
,但这不是必需的,因为fontspec
默认使用该选项,等宽字体除外。
如果字体有真正的上标,但您只能通过实验知道,则必须重新定义\AB@authnote
和\AB@affilnote
,因为它们设置了\normalfont
。 可能\upshape
是唯一需要采取的预防措施。
\documentclass{article}
\usepackage[noblocks]{authblk}
\usepackage{fontspec}
\usepackage{realscripts}
\setmainfont{Minion Pro}
\makeatletter
\renewcommand\AB@authnote[1]{\textsuperscript{\upshape#1}}
\renewcommand\AB@affilnote[1]{\textsuperscript{\upshape#1}}
\makeatother
\title{Good superscript without xltxtra}
\author{Author A}
\affil{Affiliation A}
\begin{document}
\maketitle
\end{document}