这个问题与这个问题相关这里
我想要做的是将按包放置在首页底部的日期移动amsart
到作者姓名下方,即首页顶部。
链接页面中的一个答案如下
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@maketitle}
{\ifx\@empty\@dedicatory}
{\ifx\@empty\@date \else {\vskip3ex \centering\footnotesize\@date\par\vskip1ex}\fi
\ifx\@empty\@dedicatory}
{}{}
\patchcmd{\@adminfootnotes}
{\ifx\@empty\@date\else \@footnotetext{\@setdate}\fi}
{}{}{}
\makeatother
是的,通过此代码,日期被移动到了作者姓名下的位置。但是,由amsart
包生成的日期(位于首页底部)仍然存在。也就是说,我有两个日期,一个位于作者姓名下,这是我想要的,另一个位于首页底部,这是我想要删除的。(见下图)
有人能帮我解决这个问题吗?谢谢!
PS:这是一个最小工作示例
\documentclass[english, reqno]{amsart}
\usepackage{geometry} % See geometry.pdf to learn the layout options. There are lots.
\usepackage{amssymb,amsmath,amsthm,amsfonts,color}
%\usepackage{graphicx}
\usepackage{mathrsfs,dsfont, comment,mathscinet}
\usepackage{graphicx}
\usepackage{epstopdf}
\usepackage{mathtools}
\usepackage{babel}
\usepackage{enumerate,esint}
\usepackage{natbib}
\usepackage{indentfirst}
\usepackage{bm}
\usepackage{picinpar}
\usepackage{lipsum}
\usepackage[toc,page]{appendix}
\usepackage{etoolbox}
\usepackage{authblk}
\usepackage{amsaddr}
%\usepackage{showkeys}
%----------------------------------------------------------------------------------------%
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} %clears the header and footer, otherwise the elements of the default "plain" page style will appear.
\rhead{Section \thesubsection}
\lhead{Page \thepage}
%\cfoot{Page \thepage}
\renewcommand{\headrulewidth}{0.3pt}
% see https://www.sharelatex.com/learn/Headers_and_footers for more options
%----------------------------------------------------------------------------------------%
%----------------------------------------------------------------------------------------%
% This command moves the data from the place of footnotes to the top of front page
\makeatletter
\patchcmd{\@maketitle}
{\ifx\@empty\@dedicatory}
{\ifx\@empty\@date \else {\vskip3ex \centering\footnotesize\@date\par\vskip1ex}\fi
\ifx\@empty\@dedicatory}
{}{}
\patchcmd{\@adminfootnotes}
{\ifx\@empty\@date\else \@footnotetext{\@setdate}\fi}
{}{}{}
\makeatother
%----------------------------------------------------------------------------------------%
\allowdisplaybreaks
\mathtoolsset{showonlyrefs} %This command will only number the equation which is referred later.
\title{Title}
\author[1]{author}
\date{\today}
\address[xxx]{address}
\setlength{\parindent}{0cm}
\begin{document}
\maketitle
ssss
\end{document}
答案1
问题在于您正在加载amsaddr
包,它重新定义了标题构建过程。
将第二个 patch 命令替换为 patch\@maketitle
而不是\@adminfootnotes
。如下所示:
\makeatletter
\patchcmd{\@maketitle}
{\ifx\@empty\@dedicatory}
{\ifx\@empty\@date \else {\vskip3ex \centering\footnotesize\@date\par\vskip1ex}\fi
\ifx\@empty\@dedicatory}
{}{}
\patchcmd{\@maketitle} % <----- This line changed
{\ifx\@empty\@date\else \@footnotetext{\@setdate}\fi}
{}{}{}
\makeatother
有人可能会想,与其修补两次,为什么不直接替换线路呢?
\ifx\@empty\@date\else \@footnotetext{\@setdate}\fi
直接由
\ifx\@empty\@date \else {\vskip3ex \centering\footnotesize\@date\par\vskip1ex}\fi
并且只使用一次调用\patchcmd
。如果这样做,日期将出现在页面的最顶端,而不是要求的作者姓名下方。这是由于用于构建标题的命令的发出顺序特殊造成的。