Gobble 命令不会吞噬 footnotemark 的参数(在 authblk 定义内)

Gobble 命令不会吞噬 footnotemark 的参数(在 authblk 定义内)

我正在编辑论文的这种样式,在显示带有正确脚注的作者时遇到了这个问题。我们使用包authblkthanks命令来定义/显示作者。代码如下所示

 \author[1]{First Author \thanks{Research supported by blah}}
 \author[2]{Second Author \thanks{Research supported by blih}}

 \affil[1]{Department of Mathematics in the University of Lost Dimensions}
 \affil[2]{Department of Computer Science in the Binary Group Institute}

这很有效,为隶属关系和致谢部分添加了脚注标记(这是一个实际的脚注)

当两位作者都获得相同的资助时,问题就出现了。我想用thank引用第一个命令的脚注标记替换第二个命令。如果直接使用footnotemark中的命令author,会出现错误,所以我使用protect如下命令

 \author[1]{First Author \thanks{Research supported by blah}}
 \author[2]{Second Author \protect\footnotemark[1]}

然后,我对首页上的作者很满意,但我们的样式定义了以下函数来在其他页面上打印作者的姓名

\newcommand*{\authors}{%
  \begingroup
    \let\footnote\@gobble% ignore \footnote
    \let\thanks\@gobble% ignore \thanks
    \let\textsuperscript\@gobble% ignore protected \textsuperscript
    \expandafter\let\csname textsuperscript \endcsname\@gobble
    \let\Authfont\relax% do not use a special font
    \def\Authand{, }% separate list of authors by ,
    \ifnum\value{authors}<3 % one ore two authors
      \AB@authlist% show them all
    \else% 3 or more authors
    \ABgetauthor{1}\,et~al.
    \fi
  \endgroup
}

如果我保留原样,第二位作者会在后面的页面上出现脚注标记。因此,我在作者函数中添加了以下行

\let\footnotemark\@gobble% ignore \footnotemark

现在这显示为“第一作者,第二作者1]”,因为的参数\footnotemark没有被 gobble 方法吞噬。我发现的唯一办法是改用这一行

\let\footnotemark\@gobblethree% ignore \footnotemark

它有效,但我想知道是否有更好/更干净的方法来实现它

非常感谢您的帮助

答案1

由于我在 David 的评论中得到了答案,因此我将其发布在这里,以便有人遇到类似问题时可以更清楚地看到。

authors我使用renewcommand而不是更改了命令的定义gobble

\newcommand*{\authors}{%
  \begingroup
    \renewcommand\footnotemark[1][]{}% ignore \footnotemark
    \let\footnote\@gobble% ignore \footnote
    \let\thanks\@gobble% ignore \thanks
    \let\textsuperscript\@gobble% ignore protected \textsuperscript
    \expandafter\let\csname textsuperscript \endcsname\@gobble
    \let\Authfont\relax% do not use a special font
    \def\Authand{, }% separate list of authors by ,
    \ifnum\value{authors}<3 % one ore two authors
      \AB@authlist% show them all
    \else% 3 or more authors
    \ABgetauthor{1}\,et~al.
    \fi
  \endgroup
}

此代码位于我们用于论文的自制 sty 文件中。现在一切都按预期运行。

相关内容