按章节对 Latex 页码进行编号

按章节对 Latex 页码进行编号

我正在编写一份报告,需要相对于该部分的页码。

1-1

1-2

1-3

2-1

2-2

ETC

我正在使用\numberwithin{page}{section}但出现了两个不良影响:

  1. 页码从零开始:章节的第一页是章节号.0,并且我希望它们从 1 开始。

  2. 分隔符是一个点,为了易读,我更喜欢用破折号

有人知道怎么做吗?

答案1

为了达到你想要的效果,你至少需要做三件事:

  1. 每次使用 时都重置页码\section。这可以通过以下方式实现

    \numberwithin{page}{section}
    

    上面还将页码显示设置为\thesection.\arabic{page}默认。

  2. 要更正上述页码的默认设置,请使用

    \renewcommand{\thepage}{\thesection-\arabic{page}}
    
  3. 最后,你想让页码从 1 开始。为此,你需要确保调整页码仅有的当你调用时\section(否则它可能会在调用时被重置\subsection\subsubsection...)。这里有一个补丁etoolbox插入\@sect适当的页码步进:

    \makeatletter
    \patchcmd{\@sect}% <cmd>
      {\protected@edef}% <search>
      {\def\arg{#1}\def\arg@{section}%
       \ifx\arg\arg@\stepcounter{page}\fi%
       \protected@edef}% <replace>
      {}{}% <success><failure>
    \makeatother
    

以下是显示输出的完整、最小示例:

在此处输入图片描述

\documentclass{article}
\usepackage[paper=a6paper]{geometry}% Just for this example
\usepackage{lipsum}% Just for this example
\usepackage{amsmath,etoolbox}
\numberwithin{page}{section}% Number page by section
\renewcommand{\thepage}{\thesection-\arabic{page}}% Page numbering style
\makeatletter
% Make sure that page starts from 1 with every \section
\patchcmd{\@sect}% <cmd>
  {\protected@edef}% <search>
  {\def\arg{#1}\def\arg@{section}%
   \ifx\arg\arg@\stepcounter{page}\fi%
   \protected@edef}% <replace>
  {}{}% <success><failure>
\makeatother

\begin{document}
\section{A section}
\lipsum[1-5]
\section{Another section}
\lipsum[6-10]

\end{document}

相关内容