作者姓名之间的分隔符(使用 LaTeX 内核编程)

作者姓名之间的分隔符(使用 LaTeX 内核编程)

我尝试制作自己的宏来排版作者块,而不是使用包authblk。如何隐藏文章第一位作者附近的分隔符。主要条件是仅使用LaTeX内核,不使用其他包。 在此处输入图片描述

\documentclass[a4paper,12pt]{article}
\makeatletter
\let\@authortofile\@empty
\def\@separator{, }
\def\addauthor#1#2{%
\g@addto@macro\@author{\@separator#1\textsuperscript{#2}}
\g@addto@macro\@authortofile{\@separator#1}
}
\makeatother
\date{}
\title{Title}
\addauthor{One}{1}
\addauthor{Two}{1,2}
\addauthor{Three}{1,2}
\begin{document}
\maketitle
\end{document}

答案1

推迟使用,一次将定义嵌入其自身

在此处输入图片描述

\documentclass{article}
\makeatletter
\let\@authortofile\@empty
\def\@separator{\def\@separator{, }}% Delay comma once
\def\addauthor#1#2{%
  \g@addto@macro\@author{\@separator#1\textsuperscript{#2}}
  \g@addto@macro\@authortofile{\@separator#1}
}
\makeatother

\date{}
\title{Title}
\addauthor{One}{1}
\addauthor{Two}{1,2}
\addauthor{Three}{1,2}

\begin{document}

\maketitle

\end{document}

答案2

第一次使用\addauthor该命令时,它会重新定义自身,因此在下面它会添加\@separator

\def\addauthor#1#2{%
  \g@addto@macro\@author{#1\textsuperscript{#2}}%
  \g@addto@macro\@authortofile{#1}%
  \def\addauthor##1##2{%
    \g@addto@macro\@author{\@separator##1\textsuperscript{##2}}%
    \g@addto@macro\@authortofile{\@separator##1}%
  }
}

相关内容