我正在完成我的论文,我的目录目前内容如下:
- 第一章
- 1.1 第一节
- 1.2 第二节
- 第一章
- 第二章
- 2.1 第一节
- 2.2 第二节
- 第二章
- A. 第一章附录
- B. 第二章附录
如果可能的话,我真的很想做这样的事情:
- 第一章
- 1.1 第一节
- 1.2 第二节
- 1.附录
- 第一章
- 第二章
- 2.1 第一节
- 2.2 第二节
- 2.附录
- 第二章
有人知道怎么做这种事吗?提前谢谢!
编辑
感谢@Au101 的快速回复。理想情况下,我希望第一章的实际附录出现在第二章的实际开始之前。我对乳胶很有经验,但这是我第一次整理一本类似书籍的文档,而不仅仅是一篇单独的文章......
答案1
一些奇怪的代码高尔夫和xparse
稍微(;-))修改的\section
命令 - 不要\subsection
在那里使用!
我刚刚为 添加了第四个可选参数\section
,即*
,表示这应该是一个附录部分,就在这里,而不是在文档的末尾。(那么,就是章节附录)
\section
如果出现另一种“常态”,它就会破裂。
如果下一步\chapter
行动开始,一切都将重置。
虽然有一些警告hyperref
,但是链接仍然有效。
\documentclass{book}
\usepackage{xpatch}
\usepackage{xparse}
\usepackage{blindtext}
\newcounter{appsection}[chapter]
\usepackage{hyperref}
\makeatletter
\let\latex@section\section
\let\latex@thesection\thesection
\RenewDocumentCommand{\section}{soms}{%
\IfBooleanTF{#1}{%
\latex@section*{#4}
}{%
\IfBooleanT{#4}{%
\ifnumgreater{\value{appsection}}{0}{%
}{%
\setcounter{section}{0}%
\renewcommand{\thesection}{\thechapter.\Alph{appsection}}%
\renewcommand{\theHsection}{\thechapter.\Alph{appsection}}%
}
\stepcounter{appsection}%
}%
\IfValueTF{#2}{%
\latex@section[#2]{#3}%
}{%
\latex@section{#3}%
}%
}%
}
% Restore the section number format.
\xpretocmd{\chapter}{\renewcommand{\thesection}{\latex@thesection}}{}{}
\makeatother
\begin{document}
\tableofcontents
\chapter{First}
\section{First section}
\section{Second section}
\section{First appendix}*
\chapter{Second}
\blindtext[10]
\section{First section}
\section{Second section}
\clearpage
\section{First appendix}*
\blindtext[10]
\clearpage
\section{Second appendix}*
\blindtext[10]
\chapter{Third}
\blindtext[10]
\section{First section}
\section{Second section}
\section{Third section}
\section{Fourth section}
\clearpage
\section{First appendix}*
\blindtext[10]
\clearpage
\section{Second appendix}*
\blindtext[10]
\section{Third appendix}*
\blindtext[10]
\end{document}
更新改进了界面,防止在某个部分被声明为部分后添加部分appendix
。它会自动添加一个Appendix
和清除页。subsections
等工作如预期一样,还有引用。
\section![toc title]{body title}
如果是章节末尾的附录部分,则宏调用为。如果!
省略,则使用标准命令。
\documentclass{book}
\usepackage{xpatch}
\usepackage{xparse}
\usepackage{blindtext}
\newcounter{appsection}[chapter]
\usepackage[bookmarksopen=true,bookmarksopenlevel=5]{hyperref}
\makeatletter
\newif\ifappsectionclearpage
\appsectionclearpagetrue
\newif\ifappsection
\appsectionfalse
\let\latex@section\section
\let\latex@thesection\thesection
\RenewDocumentCommand{\section}{st!om}{%
\IfBooleanTF{#1}{%
\latex@section*{#4}
}{%
\IfBooleanTF{#2}{%
\appsectiontrue%
\ifnumgreater{\value{appsection}}{0}{%
}{%
\setcounter{section}{0}%
\renewcommand{\thesection}{\thechapter.\Alph{appsection}}%
\renewcommand{\theHsection}{\thechapter.\arabic{appsection}}%
}
\stepcounter{appsection}%
\ifappsectionclearpage
\clearpage
\fi
\IfValueTF{#3}{%
\latex@section[#3]{\appendixname~#4}%
}{%
\latex@section{\appendixname~#4}%
}%
}{%
\ifappsection
%% Nothing in here!
\else
\IfValueTF{#3}{%
\latex@section[#3]{#4}%
}{%
\latex@section{#4}%
}%
\fi
}%
}%
}
\xpretocmd{\chapter}{\renewcommand{\thesection}{\latex@thesection}\protect\appsectionfalse}{}{}
\makeatother
\begin{document}
\tableofcontents
\chapter{First}
\section{First section}
\section{Second section}
\section!{First appendix}
In \ref{thirdapp:thirdchap} we will see that
\chapter{Second}
\blindtext[10]
\section{First section}
\section{Second section}
\clearpage
\section!{First appendix}
\blindtext[10]
\clearpage
\section!{Second appendix}
\blindtext[10]
\chapter{Third}
\blindtext[10]
\section{First section}
\section{Second section}
\section{Third section}
\section{Fourth section}
\clearpage
\section!{First appendix}
\blindtext[10]
\clearpage
\section!{Second appendix}
\subsection{First}
\blindtext[10]
\section!{Third appendix} \label{thirdapp:thirdchap}
\blindtext[10]
\section{Fifth section} % Will be ignored
\end{document}