我需要将一堆 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: 3
4,因此看来计数器已被 \unchapter 正确增加,但是参考只是不知道发生了变化?
我也尝试过在其上添加一些清除页、新页、章节标记等,但都无济于事。
答案1
此代码给出了正确的结果。(没有\begingroup
and \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}