我的目的是
- 除标题页外的每一页都有相同的页眉和页脚。
- 对于标题页,
==> 它exactly same footer
与其他页面的一样。
==> 并且它completely different header
与其他页面的一样。
默认情况下,标题页将切换到plain
页面样式。然后我们可以在其中定义任何内容。在我的例子中,由于标题页的页脚与其他页面的页脚相同,我首先为整个文章定义一个页面样式,然后在标题页中重新定义一个不同的页眉。此页眉仅对标题页有效,不会影响其他页面的页眉。
在为标题页定义自己的页眉后leftheadertitlepage
,标题页的页脚disappeared
。如果我使用fancyhdr
的页眉,例如,\fancyhead[L]{whatever}
,标题页的页脚将如我所愿。在这两种情况下,其他页面的页眉和页脚都可以。那么如何让标题页有我自己的页眉和整篇文章的通用页脚呢?
以下是一个小例子。请帮忙检查一下。
\documentclass[titlepage,a4paper]{article}
\usepackage{calc}
\usepackage[demo]{graphics}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\rfoot{\thepage}
\cfoot{}
\begin{document}
\begin{titlepage}
\thispagestyle{fancy}
\fancyhead{}
\renewcommand{\headrulewidth}{0pt}
\newcommand\leftheadertitlepage{%
\begin{tabular}[b]{@{}l}
\begin{minipage}[b]{0.6\textwidth}
\includegraphics{test}
\end{minipage}
Energietechnik GmbH \\
Gesch\"{a}ftsbereich\\
Energietechnik\\
\end{tabular}
}
\settototalheight\headheight{\maxof{\leftheadertitlepage}}
\lhead{\leftheadertitlepage}
\textbf{\Huge{title page}}
\pagebreak
\end{titlepage}
\lhead{}
\chead{demo}
whatever
\newpage
demo
\end{document}
在Seamus和Matthew的帮助下,我同意Seamus的建议:
====================>
在标题页中,首先使用默认的页面样式plain
,然后定义顶部的大图像,使其看起来像页眉。最后恢复页面样式,fancyhdr
使其页脚与其他页面的页脚完全相同。
<======================
以下是更新后的代码:
\documentclass[titlepage,a4paper]{article}
\usepackage{calc}
\usepackage[demo]{graphics}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\rfoot{\thepage}
\cfoot{}
\begin{document}
\begin{titlepage}
% by default, the pagestyle of title page is plain
\renewcommand{\headrulewidth}{0pt} % cancel out the decorative line
\newcommand\leftheadertitlepage{%
\begin{tabular}[b]{@{}l}
\begin{minipage}[b]{0.6\textwidth}
\includegraphics{test}
\end{minipage}
Energietechnik GmbH \\
Gesch\"{a}ftsbereich\\
Energietechnik\\
\end{tabular}
}
\newlength{\temp}
\settototalheight\temp{\maxof{\leftheadertitlepage}}
\vspace*{-\temp} % make the below image move up, then it looks like a header
\leftheadertitlepage % define the large image and put it at the top
\textbf{\Huge{title page}}
\thispagestyle{fancy} % restore fancyhdr pagestyle
\pagebreak
\end{titlepage}
\lhead{}
\chead{demo}
whatever
\newpage
demo
\end{document}
最后,再次感谢Seamus和Matthew。
答案1
问题是\leftheadertitlepage
仅在环境中定义titlepage
,而\lhead
设置内部宏全球。所以标题页后面的内容fancyhdr
想\leftheadertitlepage
放在左边,但不知道那是什么意思了!因此出现undefined control sequence
错误。
要解决这个问题,请将 的定义移至\leftheadertitlepage
前言部分。这样它就可以毫无困难地进行编译。但是您还会在\leftheadertitlepage
标题页之后的页面上找到 的代码。要关闭它,只需将其放在标题页\lhead
结束后即可。
这是您重新排列的文件:
\documentclass[titlepage,a4paper]{article}
\usepackage{calc}
\usepackage[demo]{graphics}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[R] {\thepage}
\fancyfoot[C] {}
\newcommand\leftheadertitlepage{%
\begin{tabular}[b]{@{}l}
\begin{minipage}[b]{0.6\textwidth}
\includegraphics{test}
\end{minipage}
Energietechnik GmbH \\
Gesch\"{a}ftsbereich\\
Energietechnik\\
\end{tabular}
}
\begin{document}
\begin{titlepage}
\thispagestyle{fancy}
\fancyhead{}
\renewcommand{\headrulewidth}{0pt}
\settototalheight\headheight{\maxof{\leftheadertitlepage}}
\lhead{\leftheadertitlepage}
title page
\pagebreak
\end{titlepage}
\lhead{}% to shut off the placement of `\leftheadertitlepage`
whatever
\end{document}
我不确定您到底想要在标题页上写什么,但这可以使文档无错误地编译,以便您可以进入下一步。
答案2
好的,我决定将其添加为另一个答案,因为我的第一个答案实际上是对您第一次发布时遇到的错误的回应。
该类article
将当前页面样式切换到环境empty
内titlepage
。因此,您在环境之外所做的任何页面样式更改都将被消除\begin{titlepage}
。这意味着您可以创建自定义花式页面样式titlepage
并在标题页中使用它:
\fancypagestyle{titlepage}{
%\settototalheight{\headheight}{\maxof{\leftheadertitlepage}}
\renewcommand{\footrulewidth}{0.4pt}
\lhead{\leftheadertitlepage}
\chead{}
\rhead{}
\cfoot{}
\rfoot{\thepage}
}
\begin{document}
\begin{titlepage}
\thispagestyle{titlepage}
\textbf{\Huge{title page}}
\end{titlepage}
% etc.
您将在标题页上看到自定义页眉,其页脚与您在fancy
页面样式中定义的页脚相同,并且您的fancy
其他页面上的页面样式也是如此。您惯于但是,您会看到“标题页”字样,这是因为它们位于代表图形的大黑框后面。
问题是这个标头太高了。fancyhdr
软件包在控制台中抱怨这一点:
Package Fancyhdr Warning: \headheight is too small (12.0pt): Make it at least 127.60004pt. We now make it that large for the rest of the document. This may cause the page layout to be inconsistent, however.
我们实际上没有注意到 中的更改\headheight
,可能是因为此页面样式仅对此页面有效?无论如何,您一定注意到了,因为您的代码中有此行:
\settototalheight{\headheight}{\maxof{\leftheadertitlepage}}
这使得它\headheight
足够大,可以容纳由 创建的框\leftheadertitlepage
。如果您将其插入到您的\fancypagestyle{titlepage}{...
声明中(在上面的代码片段中取消注释),您将消除警告,并且您现在将在标题页上看到“标题页”。
但您看不到自定义页脚。为什么?它没有“消失”,而是在页面边缘下方。原因是您增加了\headheight
其他布局参数,但没有减少,逻辑页面现在太高,无法放在物理页面上。您可以通过在标题页上插入虚拟文本来看到这一点;它将一直延伸到底部。
所以你需要减去从\textheight
你的数量添加至\headheight
。您可以通过添加以下内容来实现:
\newlength{\originalheadheight}
\setlength{\originalheadheight}{\headheight}
在序言中,然后
\settototalheight{\headheight}{\maxof{\leftheadertitlepage}}
\addtolength{\textheight}{-\headheight}
\addtolength{\textheight}{\originalheadheight}
其他地方。但现在我们有另一个问题:你不能在环境titlepage
或\fancypagestyle{titlepage}
块内执行此操作。这是因为
- 更改
\textheight
直到下一页才会生效。 \headheight
当包含该代码的组结束后,对它的更改就会被遗忘\fancypagestyle{titlepage}
。
如果你尝试把这个放在序言中,你会得到一些东西完全地不同,这是因为的高度\leftheadertitlepage
取决于它所展开的上下文,因此在序言中和在标题中是不同的。 在序言中\leftheadertitlepage
占据一个827pt高的框。
那么现在怎么办?最后,这是我的解决方案。需要进行试运行才能确定标题页上的页眉需要多高。然后您必须将其硬编码进去。除非有另一种方法可以将框设置\leftheadertitlepage
为好像它在页眉中,而实际上它位于序言中,否则我不知道还有什么其他方法可以做到这一点。然后在序言中完成调整\textheight
,并且必须在文档文本中撤消。最后一个问题是必须撤消它们两次。一旦进入titlepage
环境,这将只影响下一页。然后一旦离开环境titlepage
,这将影响其余页面。
\documentclass[titlepage,a4paper]{article}
\usepackage{calc}
\usepackage[demo]{graphics}
\usepackage{lipsum}% just for dummy text, not part of solution.
\usepackage{fancyhdr}
\renewcommand{\footrulewidth}{0.4pt}
\lhead{}
\chead{demo}
\cfoot{}
\rfoot{\thepage}
\pagestyle{fancy}
\newcommand{\leftheadertitlepage}{
\begin{tabular}[b]{@{}l}
\begin{minipage}[b]{0.6\textwidth}
\includegraphics{test}
\end{minipage}
Energietechnik GmbH \\
Gesch\"{a}ftsbereich\\
Energietechnik\\
\end{tabular}}
\makeatletter
\newlength{\originalheadheight}
\setlength{\originalheadheight}{\headheight}
\newlength{\titlepageheadheight}
\setlength{\titlepageheadheight}{127.60004pt}% has to be hard coded.
%\settototalheight{\headheight}{\maxof{\leftheadertitlepage}} will not work in this context
\addtolength{\textheight}{-\titlepageheadheight}
\addtolength{\textheight}{\originalheadheight}
\makeatother
\fancypagestyle{titlepage}{
% uncommenting this line eliminates a warning, but also
% adds too much vertical space to the page. So comment it out, record the number in the warning,
% then enter it above
\setlength{\headheight}{\titlepageheadheight}
\renewcommand{\footrulewidth}{0.4pt}
\lhead{\leftheadertitlepage}
\chead{}
\rhead{}
\cfoot{}
\rfoot{\thepage}
}
\begin{document}
\begin{titlepage}
\thispagestyle{titlepage}
\textbf{\Huge{title page}}
%\lipsum[1-6]
% restore \textheight to its original--this will only happen on the next page
% because of the group within the titlepage environment
\addtolength{\textheight}{\titlepageheadheight}
\addtolength{\textheight}{-\originalheadheight}
\end{titlepage}
% restore \textheight to its original--this will happen from the next page on
\addtolength{\textheight}{\titlepageheadheight}
\addtolength{\textheight}{-\originalheadheight}
\lipsum
\lipsum
\end{document}
经过所有这些,我同意 Seamus 的观点。使用带有空页眉的页面顶部一次性代码可能更能实现带有较高页眉的一次性页面样式。
答案3
好的。要解决页脚消失的问题,您只需删除该行即可\settototalheight\headheight{\maxof{\leftheadertitlepage}}
。
这似乎是在将页脚推离页面底部。要看到这一点,请将其添加\cfoot{\vspace{-5cm}FOOO}
到您的序言中。您会看到文本出现,但被推低了上面定义的量。
KOMA 脚本提供了很好的功能来定义页眉和页脚,页眉和页脚在章节的第一页上可以有所不同。以下是如何在每一页上获得相同的页脚,以及在标题页上获得不同的页眉的示例:
\documentclass{scrbook}
\usepackage{scrpage2}
\pagestyle{scrheadings}
\chead[Titlepage header goes here]{Other page header goes here}
\cfoot[Footer text]{Footer text}
\usepackage{lipsum}
\begin{document}
\chapter{The Chapter}
\lipsum
\end{document}
这定义了中心页眉和页脚。KOMA 还提供\lfoot
\rfoot
左侧或右侧页脚/页眉等。\ifoot
对于“内部”和“外部”页脚:这些将根据奇数页还是偶数页而变化(在课堂上或使用该选项时\ofoot
不起作用)。scractrl
oneside
请参阅第 64 页及后续内容KOMA手册
如果您出于某种原因无法使用 KOMA 类,这里有一些一般性意见。默认情况下,标题页将切换到plain
页面样式。因此,您真正应该做的是,不要强制将标题页样式设置为您自己的样式,而是将普通页脚和普通页眉重新定义为您想要的样式。也就是说,将普通页脚重新定义为与正常页面样式相同,并将普通页眉重新定义为您的自定义 maguffin。
但现在看到马修的回答和编译后的代码,我不确定你为什么要把这些东西作为标题而不是仅仅将表格、图片等放在标题页顶部的小页面中。也就是说,将普通页脚留空,只将图像放在标题页顶部...