Fancyhdr 奇数和偶数页码在 scrreprt 中不起作用

Fancyhdr 奇数和偶数页码在 scrreprt 中不起作用

我正在使用以下代码

    \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

默认情况下,报告类reportscrreprt为单侧。使用

\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 类一起使用。

相关内容