![章节之间是否在标题页后没有页码?](https://linux22.com/image/309985/%E7%AB%A0%E8%8A%82%E4%B9%8B%E9%97%B4%E6%98%AF%E5%90%A6%E5%9C%A8%E6%A0%87%E9%A2%98%E9%A1%B5%E5%90%8E%E6%B2%A1%E6%9C%89%E9%A1%B5%E7%A0%81%EF%BC%9F.png)
我发现了许多关于删除章节之间空白页上的页眉/页脚的帖子,它们都很好用,但有一个很大的例外……我需要\pagestyle{plain}
在文档中章节开始之前的所有空白页上添加一个(即单中心页码)除了我需要一个\pagestyle{empty}
页面紧接着我所见过和尝试过的所有方法\titlepage
要么让我的整个文档页面完全空白,要么\pagestyle{plain}
让我的所有页面都空白。
我正在使用book
文档类[twosided,openright]
,,fancyhdr
并包含了重新定义的代码,\cleardoublepage
如下所示:
\makeatletter
\def
\cleardoublepage{%
\clearpage
\ifodd\c@page
\else
\hbox{}
\thispagestyle{plain}
\newpage
\fi
}%
\makeatother
...正如各种帖子中所建议的那样。不幸的是,这给我留下了一个空白页,后面titlepage
有一个页码(这让客户很抓狂)。代码似乎覆盖了任何内联尝试将该页面转到的尝试{empty}
。
是否有某种形式的\if@titlepage
条件,\if@mainmatter
我可以使用它们来清除该部分,而将其余部分 ( \frontmatter, \mainmatter, \appendix, \backmatter
) 保留为\pagestyle{plain}
空白页之间的部分?是否有某种方法可以将其捕获为条件?
一个(非常)粗略的近似 MWE:
\documentclass[12pt,letterpaper,final,openright]{book}
\usepackage{fancyhdr}
\usepackage{natbib}
\pagestyle{fancy}
\setlength{\headheight}{15.2pt}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.2pt}
\makeatletter
\renewcommand{\chaptermark}[1]{%
\if@mainmatter
\markboth{\MakeUppercase{\chaptername\ \thechapter.\ #1}}{}
\else
\markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}
\fi
}%
\makeatother
\fancyhf{}
\fancyhead[LE,RO]{\small \thepage}
\fancyhead[LO]{\small \leftmark}
\fancyhead[RE]{\small \rightmark}
% Redefine \pagestyle{plain}
\fancypagestyle{plain}{%
\fancyhf{} % clear all header and footer fields
\fancyfoot[C]{\small \thepage} % except the center
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
}%
% Code for creating plain on empty pages before new chapter
\makeatletter
\def
\cleardoublepage{%
\clearpage
\ifodd\c@page
\else
\hbox{}
\thispagestyle{plain}
\newpage
\fi
}%
\makeatother
\begin{document}
% TITLE PAGE
\pagestyle{empty} %Clear hdr/ftr
\titlepage
\input{./Chapter_txt/titlepageV1} %Custom title page text/layout
\frontmatter
\pagestyle{fancy} % Resume hdr/ftr
%MANAGEMENT SUMMARY
\include{Preface} %Intro/Preface chapter
%ToC and Lists
\tableofcontents
\listoftables
\listoffigures
\mainmatter
\part{PartI}
\include{Chapter1}
\include{Chapter2}
\part{PartII}
\include{Chapter3}
\include{Chapter4}
\appendix
\include{app}
\backmatter
\bibliographystyle{humannat}
\bibliography{mybib}\footnotesize
\addcontentsline{toc}{chapter}{Bibliography}
\end{document}
整个东西是多卷作品,每个部分都由\include{file}
...绘制,这不是进行大量 MWE 的好方法(不知道如何进行具有\input
或的MWE \include
)。
答案1
这是一个解决方案编辑:更多解释
plain
pagestyle 很花哨,章节之间的页面通过重新定义进行设置(最后一个命令由和\cleardoublepage
使用)\part
\chapter
plain
部分页面之后的页面通过重新定义设置为\@endpart
环境之后的页面样式设置为empty
{empty}titlepage
\documentclass{book}
\usepackage{lipsum}
\usepackage{fancyhdr}
\fancyhf{}
\fancyhead[R]{\leftmark}
\fancyfoot[R]{test}
\fancyfoot[C]{\thepage}
\pagestyle{fancy}
\let\mtcleardoublepage\cleardoublepage
\renewcommand{\cleardoublepage}{\clearpage{\pagestyle{plain}\mtcleardoublepage}}
\makeatletter
\def\@endpart{\vfil\newpage
\if@twoside
\if@openright
\null
\thispagestyle{plain}%
\newpage
\fi
\fi
\if@tempswa
\twocolumn
\fi}
\makeatother
\title{Test}
\author{Me}
\begin{document}
\begin{titlepage}
\maketitle
\end{titlepage}
\thispagestyle{empty}
\lipsum[1-20]
\part{Deux}
\chapter{trois}
\lipsum[1-50]
\end{document}
编辑:此特定代码
\documentclass[12pt]{book}
\usepackage{fancyhdr}
\usepackage{natbib}
\pagestyle{fancy}
\setlength{\headheight}{15.2pt}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.2pt}
\makeatletter
\renewcommand{\chaptermark}[1]{%
\if@mainmatter
\markboth{\MakeUppercase{\chaptername\ \thechapter.\ #1}}{}
\else
\markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}
\fi
}%
\makeatother
\fancyhf{}
\fancyhead[LE,RO]{\small \thepage}
\fancyhead[LO]{\small \leftmark}
\fancyhead[RE]{\small \rightmark}
% Redefine \pagestyle{plain}
\fancypagestyle{plain}{%
\fancyhf{} % clear all header and footer fields
\fancyfoot[C]{\small \thepage} % except the center
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
}%
\let\mtcleardoublepage\cleardoublepage
\renewcommand{\cleardoublepage}{\clearpage{\pagestyle{plain}\mtcleardoublepage}}
\makeatletter
\def\@endpart{\vfil\newpage
\if@twoside
\if@openright
\null
\thispagestyle{plain}%
\newpage
\fi
\fi
\if@tempswa
\twocolumn
\fi}
\makeatother
\begin{document}
\begin{titlepage}
test
\end{titlepage}
\thispagestyle{empty}
\frontmatter
\include{Preface} %Intro/Preface chapter
%ToC and Lists
\tableofcontents
\listoftables
\listoffigures
\mainmatter
\part{PartI}
\include{Chapter1}
\include{Chapter2}
\part{PartII}
\include{Chapter3}
\include{Chapter4}
\appendix
\include{app}
\backmatter
\footnotesize
\bibliographystyle{humannat}
\bibliography{mybib}
\addcontentsline{toc}{chapter}{Bibliography}
\end{document}
答案2
您可能需要重新定义您的titlepage
环境。我的是这样的,titlepage 之后的第一页是空的,后面的页码正确。
\newenvironment{titlepage}
{%
\if@openright
\cleardoublepage
\else
\clearpage
\fi%
\newpage
\thispagestyle{empty}%
\setcounter{page}\@ne
}%
{\newpage
\thispagestyle{empty}
}%%
此外,如果使用\maketitle
命令,则应\clearpage
在命令定义的末尾添加:
\if@titlepage
\newcommand\maketitle{%
\begin{titlepage}
...
\end{titlepage}%
\clearpage%
\setcounter{footnote}{0}%
...
}%
\fi
我希望它有帮助。
答案3
您可以加载包scrextend
使用选项cleardoublepage=plain
。要在标题页后立即获取空白页,请使用环境\cleardoubleoddemptypage
之后titlepage
或作为此环境内的最后一个命令。
\documentclass{book}
\usepackage[cleardoublepage=plain]{scrextend}
\usepackage{fancyhdr}
\pagestyle{fancy}
\usepackage{blindtext}% dummy text
\begin{document}
\begin{titlepage}
\Huge My Titlepage
\end{titlepage}
\cleardoubleoddemptypage
\frontmatter
\tableofcontents
\mainmatter
\blinddocument
\Blindtext
\blinddocument
\end{document}
另一种可能性是额外使用etoolbox
:
\documentclass{book}
%
\usepackage[cleardoublepage=plain]{scrextend}
\usepackage{etoolbox}
\AfterEndEnvironment{titlepage}{\cleardoubleoddemptypage}
%
\usepackage{fancyhdr}
\pagestyle{fancy}
\usepackage{blindtext}% dummy text
\begin{document}
\begin{titlepage}
\Huge My Titlepage
\end{titlepage}
\frontmatter
\tableofcontents
\mainmatter
\blinddocument
\Blindtext
\blinddocument
\end{document}