我需要插入一个非常大的图形,它将占据整个页面,因此我需要删除图形所在的页面标题。我使用代码执行此操作:
\documentclass[a4paper,12pt,twoside]{book}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{lipsum}
\usepackage{graphicx}
\pagestyle{headings}
\begin{document}
\chapter{Sample Chapter}
\section{New section}
\lipsum{1-6}
\begin{figure}[p]
\thispagestyle{empty}
\caption{hello}
\end{figure}•
\lipsum{2-5}
\end{document}
结果是,图片所在的页面有标题,但图片所在页面之前的其中一页没有标题。它会删除错误的页面标题。我该如何解决这个问题?
答案1
您的图形排版在“浮动页面”上,不幸的是,LaTeX 使用了前一个“普通”页面的页眉/页脚定义。
但是,fancyhdr
有一个特殊的命令可以检测我们是否在浮动页面上,然后我们可以以此为条件来设置标题。在下面的例子中,我使用具有的headings
选项fancyhdr
(在版本 4 及更高版本中)来复制样式headings
。然后我重新定义标题,使它们在所有浮动页面上都为空。
\documentclass[a4paper,12pt,twoside]{book}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{lipsum}
\usepackage{graphicx}
\usepackage[headings]{fancyhdr} % at least version 4
\pagestyle{headings}
\renewcommand{\headrule}{} % eliminate the line under the header
\fancyhead[LE,RO]{\iffloatpage{}{\thepage}}
\fancyhead[RE]{\iffloatpage{}{\slshape\leftmark}}
\fancyhead[LO]{\iffloatpage{}{\slshape\rightmark}}
\begin{document}
\chapter{Sample Chapter}
\section{New section}
\lipsum{1-6}
\begin{figure}[p]
\thispagestyle{empty}
\caption{hello}
\end{figure}
\lipsum{2-5}
\end{document}
现在,如果您只想隐藏一页上的页眉,则可以使用不同的测试:只需检查页码即可。为了不必猜测页码或查看打印的副本,您可以使用标签。该refcount
软件包有一个命令\getpagerefnumber
来获取标签页码的数值,可用于数字比较。
我已将特殊页面的标签放在宏中,以便您可以根据需要对后续页面重复该过程。
\documentclass[a4paper,12pt,twoside]{book}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{lipsum}
\usepackage{graphicx}
\usepackage[headings]{fancyhdr} % at least version 4
\usepackage{refcount}
\usepackage{ifthen}
\newcommand{\whichlabel}{specialfig}
% \checkpage{value on special page}{value on other pages}
\newcommand{\checkpage}[2]{%
\ifthenelse{\thepage=\getpagerefnumber{\whichlabel}}{#1}{#2}%
}
\renewcommand{\headrule}{} % eliminate the line under the header
% Don't print headers on the special page.
% If you later want to do the same on another page, just give it a new \label
% and \renewcommand{\whichlabel}{new label}
\fancypagestyle{headings}{
\fancyhead[LE,RO]{\checkpage{}{\thepage}}
\fancyhead[RE]{\checkpage{}{\slshape\leftmark}}
\fancyhead[LO]{\checkpage{}{\slshape\rightmark}}
}
\pagestyle{headings}
\begin{document}
\chapter{Sample Chapter}
\section{New section}
ref on page~\pageref{specialfig}.
\lipsum[1-6]
\begin{figure}[p]
\caption{hello without headers}\label{specialfig}
\fbox{\rule{0.9\textwidth}{0pt}\rule{0pt}{0.9\textheight}}
\end{figure}
\lipsum[7]
\begin{figure}[p]
\caption{hello with headers}
\fbox{\rule{0.9\textwidth}{0pt}\rule{0pt}{0.9\textheight}}
\end{figure}
\lipsum[2-5]
\end{document}
答案2
我认为您首先必须去创建一个新页面,然后使用\thispagestyle{empty}
您已经使用的命令将页面样式设置为空,然后使用放置命令在此处插入图形,如下所示\begin{figure}[!h]
。
在我看来,“干净”的方法是声明一个新的页面环境,然后将图像直接插入该环境中。