如何在一定条件下不打印某些内容?

如何在一定条件下不打印某些内容?

所以,我有文件backmatter.tex

\clearpage
\printindex
\addcontentsline{toc}{section}{\indexname}

\newpage
\listoffigures
\addcontentsline{toc}{section}{Перелік ілюстрацій}

\newpage
\listoftables
\addcontentsline{toc}{section}{Перелік таблиць}

\clearpage
\bibliographystyle{alpha}
\bibliography{bibliography}

该文件包含在主文档的最末尾(就在 之前\end{document})。如果我的文档中不使用表格,它会生成表格列表的标题,但显然不会生成表格条目。所以我可以删除这段代码,但每次都这样做,因为我不会使用某些东西...... ...不方便。

那么,例如,如何预防

\newpage
\listoftables
\addcontentsline{toc}{section}{Перелік таблиць}

如果我的文档中没有表格,那么如何进行排版?

答案1

您可以使用它tocbibind来避免页码问题。我还定义了条件来决定文档中是否存在表格或图形;这样的代码必须进入序言。

使用计数器的值并不安全,因为计数器可能与之相关chapter,如果最后一章没有图形或表格,则该值毫无用处。

对于索引,我建议imakeidx将其纳入目录中。对于基于西里尔语的文档,必须使用 Xindy 而不是 Makeindex。

\documentclass[a4paper]{book}
\usepackage[T2A]{fontenc}
\usepackage[ukrainian]{babel}
\usepackage[nottoc]{tocbibind}

\usepackage[xindy]{imakeidx}

\makeindex[intoc,options=-L ukrainian -C utf8]

% conditional printing of lists
\newif\iffigures
\AtBeginEnvironment{figure}{%
  \iffigures\else\global\figurestrue\fi
}
\newif\iftables
\AtBeginEnvironment{table}{%
  \iftables\else\global\tablestrue\fi
}

\begin{document}

\frontmatter

\tableofcontents

\mainmatter

\chapter{Спочатку}

\index{Спочатку}

\begin{figure}\caption{підпис}\end{figure}
\begin{table}\caption{підпис}\end{table}

\backmatter

\printindex

\iffigures\listoffigures\fi

\iftables\listoftables\fi

\end{document}

我对文档进行了四次排版,适当地对figure和的行进行了注释或取消了注释table

没有数字,没有表格

在此处输入图片描述

有图,无表格

在此处输入图片描述

没有数字、表格

在此处输入图片描述

图片、表格

在此处输入图片描述

答案2

查看包装托比宾

“tocbibind 包可用于将诸如参考书目或索引之类的文档元素添加到目录中。”

相关内容