开始没有标题的新章节:引用指向错误的前(子)章节

开始没有标题的新章节:引用指向错误的前(子)章节

我需要将一堆 PDF 作为文件包含在其他常规章节之前和之后。我希望每个 PDF 都是一个编号章节,包含在目录中,并出现在标题行(fancyhdr 的标题行)中,而不是实际的“第十章”。要打印一个花哨的章节,因为那样会打印“第十章”,然后是空白页,然后是 PDF。

所有这些都适用于我在另一个问题上找到的解决方案(开启无标题的新篇章

\documentclass{scrbook} %report}
\usepackage{hyperref}

\makeatletter
\newcommand{\unchapter}[1]{%
    \begingroup
    \let\@makechapterhead\@gobble % make \@makechapterhead do nothing
    \chapter{#1}
    \endgroup
}
\makeatother

\pagestyle{headings}

\begin{document}
    \tableofcontents
    
    \chapter{Regular}\label{sec:regular}
    \section{Something}\label{sec:something}
    Text
    
    \unchapter{No chapter head}\label{sec:nohead}
    
    Text\newpage
    text: check the heading
    
    \chapter{This is regular again}\label{sec:head}
    
    References: \\
    Regular: \ref{sec:regular}\\
    Something: \ref{sec:something}\\
    No chapter head:  \ref{sec:nohead}\\
    Regular again: \ref{sec:head}   
\end{document}

但是,当我想引用该章节时,我遇到了一个问题,因为那会引用最后一节(子节)。例如,最后一章的示例引用如下所示:

References:
Regular: 1
Something: 1.1
No chapter head: 1.1
Regular again: 3

这些链接还指向第 1.1 节。因此,我认为 makechapterhead 对引用的运行来说是必不可少的,但我找不到它的作用。

我确实找到了 \refstepcounter{chapter},但是它只增加到Regular again: 34,因此看来计数器已被 \unchapter 正确增加,但是参考只是不知道发生了变化?

我也尝试过在其上添加一些清除页、新页、章节标记等,但都无济于事。

答案1

此代码给出了正确的结果。(没有\begingroupand \endgroup

\documentclass{scrbook} %report}
\usepackage{hyperref}

\makeatletter
\newcommand{\unchapter}[1]{% changed <<<<<<<<<<<<
%\begingroup
    \let\old@makechapterhead\@makechapterhead
    \let\@makechapterhead\@gobble % make \@makechapterhead do nothing
    \chapter{#1}
    \let\@makechapterhead\old@makechapterhead% restore @makechapterhead
%\endgroup
}
\makeatother

\pagestyle{headings}

\begin{document}
    \tableofcontents
    
    \chapter{Regular}\label{sec:regular}
    \section{Something}\label{sec:something}
    Text
    
    \unchapter{No chapter head}\label{sec:nohead}
    
    Text\newpage
    text: check the heading
    
    \chapter{This is regular again}\label{sec:head}
    
    References: 
    
    Regular: \ref{sec:regular}
    
    Something: \ref{sec:something}
    
    No chapter head:  \ref{sec:nohead}
    
    Regular again: \ref{sec:head}   
\end{document}

b

相关内容