我正在尝试使用 LaTeX 文章文档类来创建一篇简单的论文,其中作者在标题页上列出,其(可能多次重复)隶属关系作为数字脚注,其他作者评论(例如,通讯作者)作为符号脚注。例如,我想要类似
但是,我尝试了多种不同的解决方案,但还是无法实现这一点。有没有简单的方法可以做到这一点?
我曾尝试使用 bigfoot 包创建多种不同类型的脚注,并结合 footmisc 和 multiple 选项来获取多个脚注标记,这些标记之间用逗号隔开,但最终得到的是重叠的标记,没有脚注。我的最小 latex 文档是:
\documentclass{article}
\title{My title}
\usepackage[multiple]{footmisc}
\usepackage{bigfoot}
\DeclareNewFootnote{AAffil}[arabic]
\DeclareNewFootnote{ANote}[fnsymbol]
\author{
David Kaplan\footnoteAAffil{A University}\footnoteAAffil{Another University}\footnoteANote{Corresponding author}\footnoteANote{Equal contributors}
\and
Prince Charming\FootnotemarkAAffil{2}\FootnotemarkANote{2}
}
\date{\today}
\begin{document}
\maketitle
\end{document}
我得到的输出是:
谢谢您的帮助!
答案1
您的代码存在许多单独的问题。
错误符号
对于第二位作者,您使用了\FootnotemarkAAffil{2}
。这是不正确的语法。正确的语法应该是\footnotemarkAAffil[2]
(请注意小写和方括号)。前者将参数(逐字)打印为脚注标记。后者打印与可选参数关联的脚注标记。
使用footmisc
几年前footmisc
关于是否与 兼容有一些讨论bigfoot
。我不知道相互兼容性的状态,但链接问题 ( fnpct
) 中提到的包肯定与 兼容bigfoot
。
间距问题
然而,一个主要问题是间距。间距有点混乱的原因是,虽然我们通常有内核定义
\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}
我们article.cls
看到期间\maketitle
这是重新定义的(除非您使用该titlepage
选项):
\newcommand\maketitle{\par
\begingroup
\renewcommand\thefootnote{\@fnsymbol\c@footnote}%
\def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
...
这就是您看到奇怪间距的原因\rlap
。要解决这个问题,您必须重新定义命令\maketitle
或使用titlepage
选项。
如果你没有使用该bigfoot
包,那么你可以调整这个答案。
脚注不显示
标准article
类使用 设置作者列表tabular
。众所周知,表格与脚注配合得不太好(以及 TeX.SE 上的许多其他讨论)。为了解决这个问题,\thanks
使用了宏(这基本上简化了\footnotemark...\footnotetext
使用 tabulars 的调用)。该\footnote
命令也被重新定义为\thanks
。
关键是这些重新定义没有被重复bigfoot
。
一个不太优雅的解决方案
\documentclass[titlepage]{article} % <---- Use titlepage option for the rlap problem
\title{My title}
\usepackage[dont-mess-around]{fnpct} % <---- I use fnpct instead of footmisc, but that's probably not essential
\usepackage{bigfoot}
\DeclareNewFootnote{AAffil}[arabic]
\DeclareNewFootnote{ANote}[fnsymbol]
% Hook into the \thanks command for the article class to print the footnotes
\makeatletter
\def\thanksAAffil#1#2{
\protected@xdef\@thanks{\@thanks
\protect\footnotetextAAffil[#1]{#2}}%
}
\def\thanksANote#1#2{
\protected@xdef\@thanks{\@thanks
\protect\footnotetextANote[#1]{#2}}%
}
\makeatother
\author{%
David Kaplan\footnotemarkAAffil\footnotemarkAAffil\footnotemarkANote\footnotemarkANote%
\thanksAAffil{1}{A University}\thanksAAffil{2}{Another University}\thanksANote{1}{Corresponding author}\thanksANote{2}{Equal contributors}%
\and%
Prince Charming\footnotemarkAAffil[2]\footnotemarkANote[2]%
}
\date{\today}
\begin{document}
\maketitle
Text
\end{document}
- 如上所述,使用
titlepage
将解决重叠问题。 - 为了解决脚注不显示的问题,我最初尝试复制(在查看沃纳的精彩解释) 的定义,
\thanks
以将它们应用到新的脚注中bigfoot
。然而,这会破坏fnpct
检测连续脚注的方式,并且逗号会被抑制,等等; - 您必须手动发出
\footnotemarkAAffil
etc 来标记所有脚注,以利用生成的逗号,然后使用\thanksAffil
etc 命令(在上面的代码中定义)来提供将显示在标题页上的脚注文本。
输出:
答案2
谢谢黄威利为您解决方案,这非常有帮助并且让我学到了很多关于事物内部实际运作方式的知识。
除了两点之外,您的解决方案非常完美。第一点是我不想使用。我在不使用from 的titlepage
情况下修复了间距问题,这似乎甚至可以使用:titlepage
patchcmd
etoolbox
bigfoot
\usepackage{etoolbox}
\makeatletter
\patchcmd\maketitle{\def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}}{}{}{}
\makeatother
另一个问题是我希望作者姓名之间有逗号。当我用 替换时\and
,,
作者姓名周围会留下很多空白。我意识到这是由于和%
的定义中缺少一些注释 ( ) 。\thanksAAffil
\thanksANote
最后,我决定不使用该fnpct
包,而是手动输入$^{,}$
并将和\footnotemarkAAfil
直接放在\footnotemarkANote
相应的命令中thanks
。
考虑到所有这些,我最终的解决方案是:
\documentclass{article} % <---- No titlepage
\title{My title}
%\usepackage[dont-mess-around]{fnpct} % <---- I decided not to use fnpct, but rather put in the commas by hand
\usepackage{bigfoot}
\DeclareNewFootnote{AAffil}[arabic]
\DeclareNewFootnote{ANote}[fnsymbol]
\usepackage{etoolbox}
\makeatletter
\patchcmd\maketitle{\def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}}{}{}{}
\makeatother
% Hook into the \thanks command for the article class to print the footnotes
% Now include \footnotemarkXXXX commands
\makeatletter
\def\thanksAAffil#1{% <--- These %'s are necessary for spacing
\footnotemarkAAffil\protected@xdef\@thanks{\@thanks%
\protect\footnotetextAAffil[\the \c@footnoteAAffil]{#1}}%
}
\def\thanksANote#1{%
\footnotemarkANote%
\protected@xdef\@thanks{\@thanks%
\protect\footnotetextANote[\the \c@footnoteANote]{#1}}%
}
\makeatother
\author{% <---- Not sure if these %'s are necessary, but can't hurt
David Kaplan%
\thanksAAffil{A University}$^{,}$\thanksAAffil{Another University}$^{,}$%
\thanksANote{Corresponding author}$^{,}$\thanksANote{Equal contributors}%
, %
Prince Charming%
\footnotemarkAAffil[2]$^{,}$\thanksAAffil{Still another university}$^{,}$\footnotemarkANote[2]$^{,}$%
\thanksANote{Another note}%
, %
Mohamed Ali%
\thanksAAffil{I am the badest U}%
}
\date{\today}
\begin{document}
\maketitle
\begin{abstract}
This is the abstract.
\end{abstract}
\section{Introduction}
More Text
\end{document}
得出的结果为: