为什么 \renewcommand{\dagger}{*} 不适用于 \thanks?

为什么 \renewcommand{\dagger}{*} 不适用于 \thanks?

我知道我可以按照此处所述\thanks通过覆盖来调整我的符号:fnsymbols自定义文档中作者姓名旁边的符号

但在我看来,重新定义匕首也应该有效:

\documentclass{article}
\renewcommand{\dagger}{*}
\title{Test}
\author{Author 1\thanks{Thanks 1} \and Author 2\thanks{I-should-be-next-to-an-asterisk}}

\begin{document}

\maketitle 
Here the dagger is replaced correctly: $\dagger$
\end{document}

正确的做法是在正文中用星号替换匕首,但在标题中却没有替换:

截屏

这里出了什么问题?我尝试将其renewcommand向上或向下移动,但现在无济于事。

答案1

默认脚注符号使用\textdaggernot \dagger。如您的示例所示,\dagger是一个数学模式命令。

答案2

从命令行(>代表提示符),您可以发出

> latexdef -s fnsymbol
% latex.ltx, line 2234:
\def\fnsymbol#1{\expandafter\@fnsymbol\csname c@#1\endcsname}

好的,我们需要知道\@fnsymbol

> latexdef -s @fnsymbol
% latex.ltx, line 2254:
\def\@fnsymbol#1{%
   \ifcase#1\or \TextOrMath\textasteriskcentered *\or
   \TextOrMath \textdagger \dagger\or
   \TextOrMath \textdaggerdbl \ddagger \or
   \TextOrMath \textsection  \mathsection\or
   \TextOrMath \textparagraph \mathparagraph\or
   \TextOrMath \textbardbl \|\or
   \TextOrMath {\textasteriskcentered\textasteriskcentered}{**}\or
   \TextOrMath {\textdagger\textdagger}{\dagger\dagger}\or
   \TextOrMath {\textdaggerdbl\textdaggerdbl}{\ddagger\ddagger}\else
   \@ctrerr \fi
}%

这意味着如果\fnsymbol出现在文本模式中,它会\textdagger与数字 2 关联。

对于具体的应用你可以考虑重新定义\@fnsymbol,以免重新定义\textdagger

\documentclass{article}

\makeatletter
\let\latex@fnsymbol\@fnsymbol
\renewcommand\@fnsymbol[1]{\ifcase#1\or*\or*\else\@ctrerr\fi}
\newcommand{\restorefnsymbol}{\let\@fnsymbol\latex@fnsymbol}
\makeatother

\setlength{\textheight}{7cm} % just to make a smaller picture

\begin{document}

\title{Test}
\author{Author 1\thanks{Thanks 1} \and 
  Author 2\thanks{I-should-be-next-to-an-asterisk}}

\maketitle
\restorefnsymbol

Here we have a dagger: $\dagger$

\end{document}

在此处输入图片描述

相关内容