我正在使用titlesec
usepackage 下的包和代码使各部分与章节显示在同一页上,而不是单独显示。抱歉,我不记得我从哪里得到的代码,但它确实满足了我的要求。问题是它还对附录在目录中的显示方式产生了影响。我希望目录中有“附录 A”,但使用代码会使titlesec
附录在目录中显示而不显示“附录”。我测试过,我确信这是原因。请提出一些修改建议,以便附录在目录中显示为“附录 A”,并且各部分与章节保持在同一页上。这是我的文档的一些大纲代码。
\documentclass[titlepage, oneside, 12pt]{report}
\usepackage[titletoc]{appendix}
\usepackage[nottoc, notlof, notlot]{tocbibind}
\renewcommand*\listfigurename{}
\renewcommand*\listtablename{}
\usepackage{titlesec}
\titleclass{\part}{top}
\titleformat{\part}[display]
{\normalfont\huge\bfseries}{\centering\partname\ \thepart}{20pt}{\Huge\centering}
\titlespacing*{\part}{0pt}{50pt}{40pt}
\titleclass{\chapter}{straight}
\titleformat{\chapter}[display]
{\normalfont\huge\bfseries}{\chaptertitlename\ \thechapter}{20pt}{\Huge}
\titlespacing*{\chapter} {0pt}{50pt}{40pt}
\begin{document}
\begingroup
\setcounter{tocdepth}{2}
\tableofcontents{}
\endgroup
\part{part 1}
\chapter{chapter one}
\part{part 2}
\chapter{chapter two}
\clearpage
\begin{appendices}
\chapter{List of figures}
\listoffigures
\clearpage
\chapter{List of tables}
\listoftables
\end{appendices}
\end{document}
以下是 \usepackage{titlesec} 和 \begin{document} 之间的代码保持不变时 toc 中附录发生的情况:
删除该代码后,目录中的附录如下所示。这是我希望它们显示的方式
我希望有人能修改此代码,以便各部分仍能保留在单独的页面中,并使附录正确显示在目录中。谢谢。
答案1
问题在于appendix
包(重新定义了\addcontentsline
)和的组合titlesec
,因此您需要稍微修改代码以使其能够识别\titlesec
。以下是解决问题的方法:
重新定义在这里。将其添加到您的titlesec
定义之后的序言中。
\makeatletter
\renewcommand{\@redotocentry@pp}[1]{%
\let\oldacl@pp=\addcontentsline
\def\addcontentsline##1##2##3{%
\def\@pptempa{##1}\def\@pptempb{toc}%
\ifx\@pptempa\@pptempb
\def\@pptempa{##2}\def\@pptempb{#1}%
\ifx\@pptempa\@pptempb
\oldacl@pp{##1}{##2}{\appendixname\space ##3}%
\else
\oldacl@pp{##1}{##2}{\chaptertitlename\space ##3}% added \chaptertitlename
\fi
\else
\oldacl@pp{##1}{##2}{##3}%
\fi}
}
\makeatother
以下是完整文档:
\documentclass[titlepage, oneside, 12pt]{report}
\usepackage[titletoc]{appendix}
\usepackage[nottoc, notlof, notlot]{tocbibind}
\renewcommand*\listfigurename{}
\renewcommand*\listtablename{}
\usepackage{titlesec}
\titleclass{\part}{top}
\titleformat{\part}[display]
{\normalfont\huge\bfseries}{\centering\partname\ \thepart}{20pt}{\Huge\centering}
\titlespacing*{\part}{0pt}{50pt}{40pt}
\titleclass{\chapter}{straight}
\titleformat{\chapter}[display]
{\normalfont\huge\bfseries}{\chaptertitlename\ \thechapter}{20pt}{\Huge}
\titlespacing*{\chapter} {0pt}{50pt}{40pt}
\makeatletter
\renewcommand{\@redotocentry@pp}[1]{%
\let\oldacl@pp=\addcontentsline
\def\addcontentsline##1##2##3{%
\def\@pptempa{##1}\def\@pptempb{toc}%
\ifx\@pptempa\@pptempb
\def\@pptempa{##2}\def\@pptempb{#1}%
\ifx\@pptempa\@pptempb
\oldacl@pp{##1}{##2}{\appendixname\space ##3}%
\else
\oldacl@pp{##1}{##2}{\chaptertitlename\space ##3}% added \chaptertitlename
\fi
\else
\oldacl@pp{##1}{##2}{##3}%
\fi}
}
\makeatother
\begin{document}
\begingroup
\setcounter{tocdepth}{2}
\tableofcontents{}
\endgroup
\part{part 1}
\chapter{chapter one}
\part{part 2}
\chapter{chapter two}
\clearpage
\begin{appendices}
\chapter{List of figures}
\listoffigures
\clearpage
\chapter{List of tables}
\listoftables
\end{appendices}
\end{document}