我只需要在偶数页上添加页码:
- 第 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
重新定义了(不需要自定义标题)。这甚至可以与hyperref
PDF 书签配合使用并显示所需的页码。
\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