我正在尝试制作一个占据整个纸张宽度并放置在页面上 (0, 0) 的彩色框。因此我尝试使用eso-pic
:
\documentclass{article}
\usepackage[margin=4cm]{geometry}
\usepackage{xcolor}
\usepackage{tcolorbox}
\usepackage{eso-pic}
\makeatletter
\def\@maketitle{
\newpage \null \vskip .7em\begin{center}\let \footnote \thanks { \Huge \@title \par }\vskip 1.5em{\large \lineskip .5em\begin{tabular}[t]{c}\@author \end{tabular}\par \vskip.5em}\end{center}\par \vskip 1.5em
}
\makeatother
\title{The actual title}
\author{Me}
\begin{document}
\AddToShipoutPictureFG*{%
\AtPageUpperLeft{%
\raisebox{-\height}{%
\begin{tcolorbox}[width=\paperwidth,colupper=white,colback=black,colframe=black,arc=0mm,bottom=4em,top=4em,fontupper=\sffamily\bfseries\centering\Large]%
\Huge Some Title
\end{tcolorbox}%
}%
}%
}
\maketitle
\end{document}
现在,我试图将其放入我的\@maketitle
重新定义中。所以我尝试了:
\documentclass{article}
\usepackage[margin=4cm]{geometry}
\usepackage{xcolor}
\usepackage{tcolorbox}
\usepackage{eso-pic}
\makeatletter
\def\@maketitle{
\newpage \null \vskip .7em\begin{center}\AddToShipoutPictureFG*{%
\AtPageUpperLeft{%
\raisebox{-\height}{%
\begin{tcolorbox}[width=\paperwidth,colupper=white,colback=black,colframe=black,arc=0mm,bottom=4em,top=4em,fontupper=\sffamily\bfseries\centering\Large]%
\Huge \@title Test
\end{tcolorbox}%
}%
}%
}\let \footnote \thanks{\large \lineskip .5em\begin{tabular}[t]{c}\@author \end{tabular}\par \vskip.5em}\end{center}\par \vskip 1.5em
}
\makeatother
\title{The actual title}
\author{Me}
\begin{document}
\maketitle
\end{document}
我在这里遗漏了什么?
答案1
你应该看看\maketitle
(在article.cls
类)。虽然它确实调用\@maketitle
(因此也是您的(重新)定义),但它也会\@title
在 的末尾清除(等等)\maketitle
。为什么这很重要?好吧,您正在页面输出期间设置/打印标题(使用eso-pic
's \AddToShipoutPictureFG
),但不会立即生效。因此,当您设置标题时,\@title
不再包含实际标题(实际上,它已设置为\relax
)。
您如何解决这个问题?您可以将其存储在设置标题时使用的\@title
另一个宏(例如)中。\@temptitle
\documentclass{article}
\usepackage[margin=4cm]{geometry}
\usepackage{xcolor}
\usepackage{tcolorbox}
\usepackage{eso-pic}
\makeatletter
\def\@maketitle{%
\global\let\@temptitle\@title% Make \@title available for use later as \@temptitle
\newpage \null \vskip .7em\begin{center}\AddToShipoutPictureFG*{%
\AtPageUpperLeft{%
\raisebox{-\height}{%
\begin{tcolorbox}[width=\paperwidth,colupper=white,colback=black,colframe=black,arc=0mm,bottom=4em,top=4em,fontupper=\sffamily\bfseries\centering\Large]%
\Huge \@temptitle
\end{tcolorbox}%
}%
}%
}\let \footnote \thanks{\large \lineskip .5em\begin{tabular}[t]{c}\@author \end{tabular}\par \vskip.5em}\end{center}\par \vskip 1.5em
}
\makeatother
\title{The actual title}
\author{Me}
\begin{document}
\maketitle
\end{document}