我正在使用以下代码
\documentclass[12pt]{scrreprt}
\usepackage{atveryend}
\usepackage{etoolbox}
\usepackage{titlesec}
\usepackage{fancyhdr}
\usepackage{enumitem}
\usepackage{fancyhdr}
\titleformat{\chapter}{\normalfont\Large\bfseries}{\thechapter}{1em}{}
\titleformat{\section}{\normalfont\large\bfseries}{\thesection}{1em}{}
\titleformat{\subsection}{\normalfont\bfseries}{\thesubsection}{1em}{}
\titleformat{\subsubsection}{\normalfont\fontsize{10}{0}\bfseries}{\thesubsubsection}{1em}{}
\titleformat{\paragraph}{\normalfont\fontsize{10}{0}\bfseries}{\theparagraph}{1em}{}
\titlespacing*{\chapter}{0pt}{0pt}{14pt}
\titlespacing*{\section}{0pt}{14pt}{7pt}
\titlespacing*{\subsection}{0pt}{14pt}{0pt}
\titlespacing*{\subsubsection}{0pt}{7pt}{0pt}
\titlespacing*{\paragraph}{0pt}{14pt}{0pt}
\titlespacing*{\bhead}{0pt}{14pt}{0pt}
\makeatletter
\newlength{\secnumwidth}
\setlength{\secnumwidth}{0pt}
\providecommand*{\usesecnumwidth}{0pt}
\newcommand*{\secnumwidthbox}[1]{%
\begingroup
\sbox0{#1}%
\ifdim\wd0>\secnumwidth
\global\secnumwidth=\wd0\relax
\fi
\endgroup
\leavevmode
\hbox to
\ifdim\usesecnumwidth>\secnumwidth
\usesecnumwidth
\else
\secnumwidth
\fi
{#1\hfil}%
}
\let\org@chapterformat\chapterformat
\renewcommand*{\chapterformat}{%
\secnumwidthbox{\org@chapterformat}%
}
\renewcommand*{\othersectionlevelsformat}[3]{%
\secnumwidthbox{#3\autodot\hfill\enskip}%
}
% Patch for titlesec
\patchcmd\ttlh@hang{%
\sbox\z@{#2\strut\ttl@calc\hspace{#3}}%
}{%
\sbox\z@{\secnumwidthbox{#2\strut\ttl@calc\hspace{#3}}}%
}{}{\errmessage{Cannot patch \string\ttlh@hang}}
\AfterLastShipout{%
\if@filesw
\immediate\write\@mainaux{%
\string\gdef\string\usesecnumwidth{\the\secnumwidth}%
}%
\fi
\ifdim\usesecnumwidth=\secnumwidth
\else
\@latex@warning@no@line{Rerun LaTeX, because \noexpand \usesecnumwidth
has changed}
\fi
}
\makeatother
\begin{document}
\chapter{Chapter}
\section{Section}
\subsection{Subsection}
\newpage
Hi
\newpage
Hi
\end{document}
我希望使用 fancyhdr 包为每页添加一个基本页眉,奇数页的页码在页面右侧,偶数页的页码在页面左侧,但我还希望章节页的页眉样式相同。我似乎无法实现这一点,结果数字全在左侧,或者全在右侧。如果有人能找到可用的代码,我将不胜感激。
答案1
默认情况下,报告类report
或scrreprt
为单侧。使用
\documentclass{report}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyfoot[RO,LE]{\thepage}
\usepackage{blindtext}
\begin{document}
\Blindtext[20]
\end{document}
你收到警告
软件包 Fancyhdr 警告:\fancyfoot 的 `E' 选项没有 twoside 选项,在输入的第 5 行上使用较少。
因为只有奇数页。所以页码都在右侧。
如果你twoside
按照警告中的建议设置选项
\documentclass[twoside]{report}
你得到
页码在偶数页的左侧,奇数页的右侧。
KOMA-Script 类scrreprt
还知道选项twoside=semi
:
\documentclass[twoside=semi]{scrreprt}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyfoot[RO,LE]{\thepage}
\usepackage{blindtext}
\begin{document}
\Blindtext[20]
\end{document}
结果:
补充说明:不建议将该包titlesec
与 KOMA-Script 类一起使用。