如何使用 fancyhdr 仅隐藏每个部分第一页的页眉?

如何使用 fancyhdr 仅隐藏每个部分第一页的页眉?

我希望标题在章节开始的页面中为空,并在其他页面中显示。我该怎么做?

\documentclass[12pt, titlepage, onecolumn, a4paper]{article}

\usepackage{lipsum}    %% for dummy text

\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\sectionmark}[1]{\markboth{#1}{}} % set the \leftmark
\fancyhf{}

\lhead{\leftmark}
\chead{}
\rhead{\rightmark}
\cfoot{\footnotesize\selectfont\bfseries\thepage}

\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
\setlength{\headheight}{8pt}

\renewcommand{\thefigure}{\thesection.\arabic{figure}}
\renewcommand{\thetable}{\thesection.\arabic{table}}

\begin{document}
\lipsum[1]
  \pagenumbering{roman}
  \setcounter{page}{2}
\lipsum[1]
  \rhead{\footnotesize{\thesection{ } \leftmark}}
  \pagenumbering{arabic}
  \setcounter{page}{1}
\section{First Section}
\lipsum[2-5]
\section{Second Section}
\lipsum[2-8]
\end{document}

答案1

我不确定你的意思,empty但如果你正在寻找没有文本您可以将此页面样式添加到页眉的序言中:

\fancypagestyle{FooBar}{%
    \fancyhead{}
    \renewcommand{\headrulewidth}{1pt}
}

然后通过声明来开始你的部分

\section{Second Section}\thispagestyle{FooBar}

这将给你

在此处输入图片描述

如果你确实需要一个空的布局,您可以使用它,\thispagestyle{empty}因为它已经由包定义(另一个预定义样式是plain)。

答案2

你可以通过添加一些代码来自动进行选择\section

\documentclass[12pt, titlepage, onecolumn, a4paper]{article}
\usepackage{fancyhdr}
\usepackage{chngcntr}
\usepackage{xparse}

\usepackage{lipsum}    %% for dummy text

\pagestyle{fancy}
\renewcommand{\sectionmark}[1]{\markboth{#1}{}} % set the \leftmark
\fancyhf{}
\fancyhead[L]{\leftmark}
\fancyfoot[C]{\footnotesize\bfseries\thepage}

\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}

\setlength{\headheight}{14.5pt} % <-------- 8pt is too small!

\fancypagestyle{section}{%
  \fancyhf{}%
  \fancyfoot[C]{\footnotesize\bfseries\thepage}
  \renewcommand{\headrulewidth}{0.4pt}%
  \renewcommand{\footrulewidth}{0.4pt}%
}


\counterwithin{figure}{section}
\counterwithin{table}{section}

% the starting page of a section will not have a header
\let\originalsection\section
\RenewDocumentCommand{\section}{som}{%
  \IfBooleanTF{#1}
    {\originalsection*{#3}}
    {\IfNoValueTF{#2}
      {\originalsection{#3}}
      {\originalsection[#2]{#3}}%
    }%
  \thispagestyle{section}%
}

\begin{document}
\lipsum[1]
\lipsum[1]
\section{First Section}
\lipsum[2-5]
\section{Second Section}
\lipsum[2-8]
\end{document}

我还添加了正确的大小\headheight(除非您使用较小的字体,否则需要 14.5pt)。我还删除了设置\rightmark,如果确实需要,请添加它,但您可能必须重新定义\subsectionmark

chngcntr我还使用和定义了表格和图形的计数器\counterwithin;这样计数器将在每个部分重置。

答案3

如果您定义 \fancypagestyle,也可以实现,就像 Pouya 所做的那样:

\fancypagestyle{FooBar}{% 
   \fancyhead{}
   \renewcommand{\headrulewidth}{1pt}
}

在前导码中的某处(之前\begin{document})状态:

\let \OldSection \section
\renewcommand{\section}[1]{\OldSection{#1} \thispagestyle{FooBar}}

:: 更新 ::

就我而言,有时我想使用回忆录在新页面上打开一个部分。因此,我使用以下文本:

\documentclass[12pt,twoside,a4paper]{memoir}

\usepackage{lipsum}    %% for dummy text

\let\footruleskip\undefined
\usepackage{fancyhdr}

% Apply section style
\let \OldSection \section
\renewcommand{\section}[1]{\OldSection{#1} \thispagestyle{plainsec}}


% Define your page styles
\pagestyle{fancy}               
\renewcommand{\chaptermark}[1]{%
\markboth{\chaptername
\ \thechapter\ - #1}{}}
\renewcommand{\sectionmark}[1]{%
            \markright{\thesection\ - #1}}
\fancyhf{}
\fancyhead[LE,RO]{\bfseries\thepage}
\fancyhead[LO]{\bfseries\rightmark}
\fancyhead[RE]{\bfseries\leftmark}
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0pt}
\addtolength{\headheight}{0.5pt}

\fancypagestyle{plain}{  %chapter openning
        \fancyhf{}
        \fancyhead[RO]{\bfseries\thepage}
        \renewcommand{\headrulewidth}{0pt}
}
\fancypagestyle{plainsec}{  %section openning
        \fancyhf{}
        \fancyhead[RO]{\bfseries\thepage}
        \renewcommand{\headrulewidth}{0pt}
}


\begin{document}
\chapter{First Chapter}
\lipsum[1]
\section{A Section after some text}
\lipsum[2-5]
\subsection{A Sub-section}
\lipsum[2-5]

\cleardoublepage
\section{A Section at a new page}
\lipsum[2-8]
\end{document}

相关内容