仅在偶数页上有页码

仅在偶数页上有页码

我只需要在偶数页上添加页码:

  • 第 1 页,没有页码。
  • 第 2 页,第 1 期。
  • 第 3 页,没有页码。
  • 第 4 页,第 2 期。
  • 第 5 页,没有页码。
  • 第 6 页,第 3 期。

我想我需要对页码系统进行一些调整,比如\renewcommand{\thepage}将页面除以二或者检查它是否偶数?

\documentclass{article}

\begin{document}
No page number \newpage Should be 1 \newpage
No page number \newpage Should be 2 \newpage
No page number \newpage Should be 3 \newpage
\end{document}

答案1

这里介绍一种使用该fancyhdr包重新定义plain页面样式的解决方案,逻辑很简单,如果页码是奇数,则不打印,如果是偶数,则将页码除以 2 再打印。

请注意,这不会改变实际页码,因此如果您使用它们,交叉引用和目录将是错误的。但如果您没有对每页进行编号,我不确定如何避免这种情况。

\documentclass{article}
\usepackage{lipsum}
\usepackage{fancyhdr}
\makeatletter
\newcount\halfpage
\fancypagestyle{plain}{%
  \fancyhf{}%
  \fancyfoot[C]{%
    \ifodd\c@page
    \else
      \halfpage=\c@page
      \divide\halfpage by 2
      \@arabic{\halfpage}%
    \fi}%
  \renewcommand{\headrulewidth}{0pt}%
  \renewcommand{\footrulewidth}{0pt}}
\makeatother
\pagestyle{plain}
\begin{document}
\lipsum
\lipsum
\lipsum
\lipsum
\lipsum
\end{document}

答案2

您可以对偶数页进行计算,并将页码除以 2:

\documentclass{article}

\usepackage{fancyhdr,xfp}

\pagestyle{fancy}
\fancyhf{}% Clear header/footer
\fancyfoot[C]{%
  \ifodd\value{page}\else
    \inteval{\value{page} / 2}% Divide even page number by 2
  \fi
}
\renewcommand{\headrulewidth}{0pt}% Remove header rule

\begin{document}

No page number \newpage Should be 1 \newpage
No page number \newpage Should be 2 \newpage
No page number \newpage Should be 3 \newpage

\end{document}

但请注意,\thepage(原始页码)将存储在每个\label目录中,以及目录中。如果您希望在这些目录中也能使用新页码,则需要做更多工作。

答案3

这是一个解决方案,thepage重新定义了(不需要自定义标题)。这甚至可以与hyperrefPDF 书签配合使用并显示所需的页码。

\documentclass{article}

\usepackage{hyperref}%% optional
\providecommand{\texorpdfstring}[2]{#1} %% makes hyperref package optional

%% Format that you want to see on the pages and in references:
\def\pageformatTexEven{\arabic{HalfPage}}
\def\pageformatTexOdd{}%% Note: this will also not show a page number in references and toc
%% Will be shown in pdf bookmarks:
\def\pageformatInternalEven{\arabic{HalfPage}}
%\def\pageformatInternalOdd{\arabic{HalfPage}b}
\def\pageformatInternalOdd{\arabic{HalfPage}}

%% Manually set the page number on every page:
\usepackage{everypage}
\makeatletter
\newcount\halfpage
\newcounter{HalfPage}
\AddEverypageHook{%
    \halfpage=\c@page%
    \divide\halfpage by 2%
    \setcounter{HalfPage}{\halfpage}%
    \ifodd\c@page%
        \global\def\thepageformat{%
            \texorpdfstring{\pageformatTexOdd}{\pageformatInternalOdd}%
        }%
    \else%
        \global\def\thepageformat{%
            \texorpdfstring{\pageformatTexEven}{\pageformatInternalEven}%
        }%
    \fi%
}
\makeatother
\renewcommand*{\thepage}{\thepageformat}


\begin{document}
    %% Just for better visualization:
    \renewcommand*{\thepage}{\Huge\thepageformat}

    {\Huge \tableofcontents}
    \section{A} No page number \newpage \section{B} Should be 1 \newpage
    \section{C} No page number \newpage \section{D} Should be 2 \newpage
    \section{E} No page number \newpage \section{F} Should be 3 \newpage
\end{document}

仅当定义为显示页码(用于目录和参考文献)时,才需要类似的包fancyhdr来抑制页码。\pageformatTexOdd

相关内容