我知道我试图做的事情可能听起来有些牵强。但是,我只是在写论文。这项工作才刚刚开始,所以我开始写下目录,以便为我的工作提供支架。
现在,虽然我希望我的目录能够完整显示,但下面却有大量的标题和副标题而没有任何内容,这确实很烦人。
我可以让一大堆标题和副标题消失,而不从目录中删除它们吗?我尝试将它们包装在 -couple 中\iffalse
,\fi
但它们确实不再显示,但它们也从我的目录中消失了。
我该怎么办?我不在乎这个技巧是否肮脏,只是想在我仍在开发内容时让一切变得更整洁。
答案1
我建议\TODO
为尚无内容的章节/部分/小节在命令中添加前缀:
\documentclass[a4paper]{book}
\usepackage{xparse}% for easier management of optional arguments
\ExplSyntaxOn
\NewDocumentCommand{\TODO}{msom}
{
\IfBooleanF{#1}% do nothing if it's starred
{
\cs_if_eq:NNT #1 \chapter { \cleardoublepage\mbox{} }
\refstepcounter{\cs_to_str:N #1}
\IfNoValueTF{#3}
{
\addcontentsline{toc}{\cs_to_str:N #1}{\protect\numberline{\use:c{the\cs_to_str:N #1}}#4}
}
{
\addcontentsline{toc}{\cs_to_str:N #1}{\protect\numberline{\use:c{the\cs_to_str:N #1}}#3}
}
}
\cs_if_eq:NNF #1 \chapter { \mbox{} }% allow page breaks after sections
}
\ExplSyntaxOff
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\chapter{Introduction}
This has contents, which will be completed according
to the results in section~\ref{sec:procr}.
\chapter{Main thing}
\section{Whatever}
This has contents.
\TODO\section{Procrastination}\label{sec:procr}
\TODO\section[Short title for this one]
{This section has a very very long title}
\TODO\chapter{Developments}
\end{document}
当您开始编写内容时,只需删除\TODO
前缀。
答案2
不知道您的设置细节会很难给出最终答案。一种(相对)通用的方法是先建立一个开关,指示是否应显示标题(下面设置为 true):
\newif\ifshowheadings \showheadingstrue
这样,就可以定义一个“包装器”命令来评估每个标题,并显示是否\showheadingstrue
如果\showheadingsfalse
:
\def\showheadings#1{\ifshowheadings#1\else\relax\fi}
然后,每个部分将作为此命令的参数放置,例如:
\showheadings{\chapter{Test}}
\showheadings{\section{Subsection Test}}
使用 运行文档时\showheadingstrue
,所有标题都将包含在目录中,并将相应的\contentsline
命令写入toc
文件。根据类别,\tableofcontents
可以使用以下命令复制命令:
\chapter*{Contents}
\input{\jobname.toc}
因此,要离婚实际的目录来自显示TOC,您可以更改\jobname
为其他名称(例如schematictoc
)。将此更改包装到命令中可能如下所示:
\def\switchedtableofcontents{\ifshowheadings\tableofcontents\else\chapter*{Contents}\input{schematictoc.toc}\fi}
因此,一种方法是按照 详细说明的那样布局您的论文\showheadingstrue
。处理您的文档,生成toc
与布局相对应的文件。然后,将文件的名称更改toc
为schematictoc.toc
并设置\showheadingsfalse
。此后,对文档的任何更改都不会反映在显示的目录中。
放在一起:
\documentclass{report}
\newif\ifshowheadings \showheadingstrue
\def\showheadings#1{\ifshowheadings#1\else\relax\fi}
\def\switchedtableofcontents{\ifshowheadings\tableofcontents\else\chapter*{Contents}\input{schematictoc.toc}\fi}
\begin{document}
\switchedtableofcontents
\showheadings{\chapter{Test}}
\showheadings{\section{Subsection Test}}
\showheadings{\chapter{Test}}
\showheadings{\section{Subsection Test}}
\showheadings{\chapter{Test}}
\showheadings{\section{Subsection Test}}
\showheadings{\chapter{Test}}
\showheadings{\section{Subsection Test}}
\end{document}