我需要编写一个非常大的文档,并且我想使用 etoc 来创建本地目录。(minitoc 与我的文档不兼容;)
我如何创建表格和图形的本地列表?
为什么 nameref 在这个 mwe 中引用错误?
当我使用未编号的部分(\part*{Appendix})时,命令 \localtableofcontents 显示一个空表,而前面的目录列出了附录内容,我该如何纠正?
\documentclass[]{report}
\usepackage{lipsum}
\usepackage{etoc}
\usepackage{titlesec}
\usepackage{nameref}
\titleclass{\part}{top} % make part like a chapter
\titleformat{\part}
[display]
{\centering\normalfont\Huge\bfseries}
{\titlerule[2pt]\vspace{3pt}\titlerule[1pt]\vspace{3pt}\MakeUppercase{\partname} \thepart}
{0pt}
{\titlerule[1pt]\vspace{1pc}\huge\MakeUppercase}
%
\titlespacing*{\part}{0pt}{0pt}{20pt}
\begin{document}
\listoffigures\newpage
\listoftables\newpage
\tableofcontents\newpage
\etocmulticolstyle{\noindent\bfseries\footnotesize
\leaders\hrule height1pt\hfill
\MakeUppercase{Contents}}
\etocsettocdepth{1}
\part{FIRST PART}\label{part:one}
%how to make a localtableofcontents of figures and tables?
\localtableofcontents
\chapter{INTRODUCTION} \lipsum{1}
\chapter{METHODOLOGY} \lipsum{1}
\chapter{CONCLUSION} \lipsum{1}
\part{SECOND PART}
%how to make a localtableofcontents of figures and tables?
\localtableofcontents
\chapter{INTRODUCTION}
Like in \nameref{part:one}.% why nameref gets the wrong reference?
\lipsum{1}
\chapter{METHODOLOGY} \lipsum{1}
\chapter{CONCLUSION} \lipsum{1}
\appendix
\part{APPENDIX}
%how to make a localtableofcontents of appendix
\localtableofcontents
\chapter{document a}
\chapter{document B}
\end{document}
感谢你 : )
答案1
(*更新:etoc 1.07k
融入了兼容性tocloft
;参见答案底部*)
这埃托克本文撰写时的包并未挂接图表列表或表格列表,而仅处理目录。
对于未编号的附录部分,addcontentsline
应使用通常的
\part*{APPENDIX}
\addcontentsline {toc}{part}{APPENDIX}
请注意,如果没有它,即使没有它的主要内容\tableofcontents
也会etoc
看起来很奇怪,因为附录的章节会出现在前面章节的延续中(尽管带有 Alpha 编号)。
然而,也可以获取部分中的本地目录APPENDIX
,而无需APPENDIX
在主目录中有条目。
在主目录命令中:
\etocsetlevel{appendixplaceholder}{6}
\tableofcontents
\etocsetlevel{appendixplaceholder}{-1}
和:
\part*{APPENDIX}
\etoctoccontentsline*{appendixplaceholder}{APPENDIX}{-1}
% the above works with or without hyperref. If the document does not use
% hyperref, then
% \addcontentsline{toc}{appendixplaceholder}{APPENDIX}
% is an alternative
\localtableofcontents
有了这个:
- 本地目录按需要创建
- 主目录中没有附录条目
- pdf 输出中有一个正确的 APPENDIX 书签。
但是,由于和的命令之间存在一些交互,因此 3.
您的设置并不适用。那里有些功能失调,我没有进一步调查。mwe
\titleclass
\titleformat
titlesec
hyperref
而对于nameref
没有得到正确的引用,这与无关etoc
,正如人们通过不加载它和注释掉所有相关部分所看到的那样。
etoc
-tocloft
兼容性:
tocloft
评论中提到了该软件包。尽管etoc
手册总是说在兼容模式下可以使用tocloft
来自定义目录行etoc
,但它忘了说用户必须执行来 抵消\let\tableofcontents\etoctableofcontents
的覆盖。tocloft
\tableofcontents
\begin{document}
无论如何,1.07k
发布埃托克透明地提供与 的兼容性tocloft
,后者应先加载etoc
(否则会发出警告,因为tocloft
将被强制进入其“ titles
”模式)。然后,在兼容模式下,tocloft
会忠实地遵循目录行和目录标题的自定义etoc
。用户仍可从 的其他方面受益,etoc
例如其\localtableofcontents
(也遵循tocloft
文档该点当前的自定义)和其\label+\ref
机制。并且可以将 用作tocloft
一个目录和etoc
另一个目录。此外,自然地,完全不会影响和 的tocloft
处理。list of figures
list of tables
etoc
答案2
这是一个使用的解决方案titletoc
包。重要的部分是:
% local tableofcontents
\section*{Local toc}
\startcontents[mytoc]
\printcontents[mytoc]{}{0}{}
% local listoffigures
\section*{Local lof}
\startlist[mylof]{lof}
\printlist[mylof]{lof}{0}{}
% local listoftables
\section*{Local lot}
\startlist[mylot]{lot}
\printlist[mylot]{lot}{0}{}
... <part content goes here>
... <part content goes here>
... <part content goes here>
% stop local toc, lof, lot
\stopcontents[mytoc]
\stoplist[mylof]{lof}
\stoplist[mylot]{lot}
这将创建部分toc
、lof
和lot
。
这是一个完整的 MWE,它演示了这个想法 - 你需要运行它两次,或者用arara
这将为您编译两次。
% arara: pdflatex
% arara: pdflatex
\documentclass{report}
\usepackage{lipsum}
\usepackage{titlesec}
\usepackage{titletoc}
\usepackage{hyperref}
\titleclass{\part}{top} % make part like a chapter
\titleformat{\part}
[display]
{\centering\normalfont\Huge\bfseries}
{\titlerule[2pt]\vspace{3pt}\titlerule[1pt]\vspace{3pt}\MakeUppercase{\partname} \thepart}
{0pt}
{\titlerule[1pt]\vspace{1pc}\huge\MakeUppercase}
%
\titlespacing*{\part}{0pt}{0pt}{20pt}
\makeatletter
\let\titlesec@part\part
\renewcommand{\part}{\@ifstar\part@star\part@nostar}
\def\part@star#1{\NR@gettitle{#1}\titlesec@part*{#1}}
\def\part@nostar{\@ifnextchar[\part@nostar@opt\part@nostar@nopt}
\def\part@nostar@nopt#1{\NR@gettitle{#1}\titlesec@part{#1}}
\def\part@nostar@opt[#1]#2{\NR@gettitle{#2}\titlesec@part[#1]{#2}}
\makeatother
\begin{document}
\listoffigures
\listoftables
\tableofcontents
\part{FIRST PART}\label{part:one}
% local tableofcontents
% local tableofcontents
% local tableofcontents
\section*{Local toc}
\startcontents[mytoc]
\printcontents[mytoc]{}{0}{}
% local listoffigures
% local listoffigures
% local listoffigures
\section*{Local lof}
\startlist[mylof]{lof}
\printlist[mylof]{lof}{0}{}
% local listoftables
% local listoftables
% local listoftables
\section*{Local lot}
\startlist[mylot]{lot}
\printlist[mylot]{lot}{0}{}
\chapter{INTRODUCTION} \lipsum{1}
\chapter{METHODOLOGY} \lipsum{1}
\chapter{CONCLUSION} \lipsum{1}
\newcount\tmp
\tmp=0
\loop
\advance\tmp by 1
\begin{table}[!htb]\caption{table in part I}\end{table}
\begin{figure}[!htb]\caption{figure in part I}\end{figure}
\ifnum\tmp<5 \repeat
% stop local toc, lof, lot
\stopcontents[mytoc]
\stoplist[mylof]{lof}
\stoplist[mylot]{lot}
\part{SECOND PART}
% local tableofcontents
% local tableofcontents
% local tableofcontents
\section*{Local toc}
\startcontents[mytoc]
\printcontents[mytoc]{}{0}{}
% local listoffigures
% local listoffigures
% local listoffigures
\section*{Local lof}
\startlist[mylof]{lof}
\printlist[mylof]{lof}{0}{}
% local listoftables
% local listoftables
% local listoftables
\section*{Local lot}
\startlist[mylot]{lot}
\printlist[mylot]{lot}{0}{}
\chapter{INTRODUCTION}
Like in \nameref{part:one}.% why nameref gets the wrong reference?
\lipsum{1}
\chapter{METHODOLOGY} \lipsum{1}
\chapter{CONCLUSION} \lipsum{1}
\tmp=0
\loop
\advance\tmp by 1
\begin{table}[!htb]\caption{table in part II}\end{table}
\begin{figure}[!htb]\caption{figure in part II}\end{figure}
\ifnum\tmp<5 \repeat
% stop local toc, lof, lot
\stopcontents[mytoc]
\stoplist[mylof]{lof}
\stoplist[mylot]{lot}
\appendix
\part{APPENDIX}
% local tableofcontents
% local tableofcontents
% local tableofcontents
\section*{Local toc}
\startcontents[mytoc]
\printcontents[mytoc]{}{0}{}
% local listoffigures
% local listoffigures
% local listoffigures
\section*{Local lof}
\startlist[mylof]{lof}
\printlist[mylof]{lof}{0}{}
% local listoftables
% local listoftables
% local listoftables
\section*{Local lot}
\startlist[mylot]{lot}
\printlist[mylot]{lot}{0}{}
\chapter{document a}
\chapter{document B}
\tmp=0
\loop
\advance\tmp by 1
\begin{table}[!htb]\caption{Table}\end{table}
\begin{figure}[!htb]\caption{Figure}\end{figure}
\ifnum\tmp<5 \repeat
% stop local toc, lof, lot
\stopcontents[mytoc]
\stoplist[mylof]{lof}
\stoplist[mylot]{lot}
\end{document}
我还粘贴了一些代码使用 titlesec 的部分标签存在问题修复nameref
。\part