页码中的章节号问题

页码中的章节号问题

我正在写论文,并使用大学提供的模板。为了获取页码中的章节号,我使用以下命令:

\@addtoreset{page}{chapter}
\renewcommand{\thepage}{\thechapter-\arabic{page}}

章节标题格式化是使用包完成的titlesec。因此,为了在奇数页中获取新章节,我使用:

\newcommand{\chapterbreak}{\cleardoublepage}

但是,这样做的问题是,每章的最后一页都会用下一章的章节号进行编号。例如,第 2 章的最后一页将用3-0而不是进行编号2-10

在我看来,章节编号正在增加章节分隔已完成。有什么想法可以修复或解决这个问题吗?

更新 1:我也尝试过chappg有同样问题的包。
更新 2:最小工作示例:

\documentclass[twoside]{report}  
\usepackage{titlesec}
\usepackage{lipsum}\setlipsumdefault{1-3}

\titleclass{\chapter}{straight}
\titleformat{\chapter}[hang]{\bfseries\huge}{\thechapter\quad}{0em}{}
\newcommand{\chapterbreak}{\cleardoublepage}

\makeatletter
\@addtoreset{page}{chapter}
\renewcommand{\thepage}{\thechapter-\arabic{page}}
\makeatother

\begin{document}  
\chapter{One}
\lipsum
\chapter{Two}
\lipsum
\chapter{Three}
\lipsum
\end{document}  

\cleardoublepage在我的例子中,由于某种原因它似乎不起作用,但页码问题仍然存在。

答案1

主要问题是\refstepcounter{chapter}发出的\chapter会将page计数器设置为 0,而不是要求的 1。页码是在页面完成并发运时步进的,因此计数器必须从 1 开始。

你必须做一些调整

\documentclass[twoside]{report}
\usepackage{titlesec}
\usepackage{lipsum,etoolbox}

\titleclass{\chapter}{straight}
\titleformat{\chapter}[hang]{\bfseries\huge}{\thechapter\quad}{0em}{}

\makeatletter
\@addtoreset{page}{chapter}
\makeatother
\renewcommand{\thepage}{\thechapter-\number\numexpr\arabic{page}+1\relax}
\patchcmd{\cleardoublepage}{\ifodd}{\unless\ifodd}{}{}
\preto\chapter{\cleardoublepage}
\AtBeginDocument{\setcounter{page}{0}}

\begin{document}
\chapter{One}
\lipsum
\chapter{Two}
\lipsum
\chapter{Three}
\lipsum
\end{document}

我们希望\cleardoublepage在 之前发出\chapter,因此我们将代码添加到 的代码前面\chapter\chapterbreak是在错误的时间发出的)。我们还需要修补\cleardoublepage以反转\ifodd测试,最后将页面计数器的起始设置为 0。

日志文件中显示的页码将会偏差一,但打印的数字是正确的。

相关内容