![按章节对 Latex 页码进行编号](https://linux22.com/image/299471/%E6%8C%89%E7%AB%A0%E8%8A%82%E5%AF%B9%20Latex%20%E9%A1%B5%E7%A0%81%E8%BF%9B%E8%A1%8C%E7%BC%96%E5%8F%B7.png)
我正在编写一份报告,需要相对于该部分的页码。
1-1
1-2
1-3
2-1
2-2
ETC
我正在使用\numberwithin{page}{section}
但出现了两个不良影响:
页码从零开始:章节的第一页是章节号.0,并且我希望它们从 1 开始。
分隔符是一个点,为了易读,我更喜欢用破折号
有人知道怎么做吗?
答案1
为了达到你想要的效果,你至少需要做三件事:
每次使用 时都重置页码
\section
。这可以通过以下方式实现\numberwithin{page}{section}
上面还将页码显示设置为
\thesection.\arabic{page}
默认。要更正上述页码的默认设置,请使用
\renewcommand{\thepage}{\thesection-\arabic{page}}
最后,你想让页码从 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}