LaTeX按需适配页眉(章节首隐藏/奇偶页差异化)实现咨询
解决方案
核心修改思路
- 首先给
article文档类开启twoside参数,启用奇偶页差异化布局支持 - 调整
fancyhdr的页眉规则,区分奇偶页设置不同内容,同时添加判断实现奇数页subsection优先显示的逻辑 - 给section标题格式添加
\thispagestyle{plain},让section首次出现的页面自动使用无页眉的plain样式
修改后的完整代码
\documentclass[twoside]{article} % 开启twoside支持奇偶页区分 \usepackage[utf8]{inputenc} \usepackage{fancyhdr} \title{Titlepage} \date{October 2021} % 重新定义fancy页眉样式 \pagestyle{fancy} \fancyhf{} % 清空原有页眉页脚设置 \fancyhead[LE]{\leftmark} % 偶数页(左页)页眉左侧显示section名称 \fancyhead[RO]{\ifx\rightmark\empty \leftmark \else \rightmark \fi} % 奇数页(右页)页眉右侧优先显示subsection,无则显示section \cfoot{\thepage} % 页脚居中显示页码,不需要可以删掉 % 重新定义mark规则,设置section为大写显示 \renewcommand{\sectionmark}[1]{\markboth{\thesection\ \MakeUppercase{#1}}{}} \renewcommand{\subsectionmark}[1]{\markright{\thesubsection\ #1}} \usepackage{graphicx} \usepackage{titlesec} \usepackage{lipsum} %仅用于生成示例文本 \newcommand*\HUGE{\Huge} \newcommand*\chapnamefont{\normalfont\LARGE\MakeUppercase CHAPTER} \newcommand*\chapnumfont{\normalfont\HUGE} \newcommand*\chaptitlefont{\normalfont\HUGE\bfseries} \newlength\beforechapskip \newlength\midchapskip \setlength\midchapskip{\paperwidth} \addtolength\midchapskip{-\textwidth} \addtolength\midchapskip{-\oddsidemargin} \addtolength\midchapskip{-1in} \setlength\beforechapskip{18mm} \titleformat{\section}[display] {\normalfont\filleft} {{\chapnamefont}% \makebox[0pt][l]{\hspace{.8em}% \resizebox{!}{\beforechapskip}{\chapnumfont\thesection}% \hspace{.8em}% \rule{\midchapskip}{\beforechapskip}% }% }% {25pt} {\chaptitlefont\thispagestyle{plain}} % section首页使用plain样式隐藏页眉 \titlespacing*{\section} {0pt}{40pt}{40pt} \begin{document} \maketitle \newpage 空白页 \newpage \section{Introduction} 该页面不应显示页眉 \newpage \subsection{Test2} 该页面页眉仅需显示section内容(1 INTRODUCTION) \newpage 该页面页眉仅需显示subsection内容(1.1 Test2) \end{document}
关键改动说明
- 文档类加
twoside参数:这是LaTeX实现奇偶页不同布局的基础,不开启该参数无法识别奇偶页标识 - 页眉逻辑调整:
\fancyhead[LE]对应偶数页(Left Even)的页眉左侧,绑定\leftmark也就是section标记\fancyhead[RO]对应奇数页(Right Odd)的页眉右侧,通过\ifx\rightmark\empty判断当前页有没有对应的subsection,没有就显示section,有就显示subsection
- section首页隐藏页眉:在
\titleformat的最后一个参数添加\thispagestyle{plain},所有section标题所在页会自动应用plain样式,默认仅显示页脚页码、无页眉,完全符合需求
内容的提问来源于stack exchange,提问作者igotPOWA
相关产品推荐
相关产品推荐

