这是来自在报告类中将 tocdepth 设置为零使得 minilot 和 minilof 不显示但我现在遇到了新问题,这确实是一个新问题,但相关。
我有一个主文档,它从不同位置读取多个章节。我用它minitoc
来显示每个章节的目录,还显示每个章节的图表列表和表格列表。
但我不想重复这一操作并在文档的主目录中显示图表列表和表格列表,因为这会使主目录变得混乱。
如果我需要查看某一章节的图表列表,我总是可以转到该章节查看它们,因为每一章都是独立的,这似乎更有意义。
但是为了能够在每一章中显示 LOF 和 LOT,我不得不在主文档中发出命令\listoffigures
,以便可以读取列表。\listoftables
minitoc
有没有办法编译图表列表,让 minitoc 完成其工作,但不在主目录中显示它们?
MWE(仅显示表格的情况,但图形也一样)
\documentclass[11pt]{report}%
\usepackage{graphicx}
\usepackage{minitoc}
%see https://tex.stackexchange.com/questions/308838/setting-tocdepth-to-zero-in-report-class-makes-minilot-and-minilof-not-show-up
\def\mytocdepth{3}
\begin{document}
\dominitoc
\dominilof
\dominilot
%For the main TOC, only show chapter,section
\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
%now what to do where lot and lof? if make these 0 also,
%then nothing shows up. If I do not change it, lot shows up here
%which I do not want.
\addtocontents{lot}{\protect\setcounter{tocdepth}{\mytocdepth}}
\addtocontents{lof}{\protect\setcounter{tocdepth}{\mytocdepth}}
\tableofcontents
\listoffigures
\listoftables %have to do this, else can't show minilot in chapter
%but I do not want to show list of table here, only in chapter
\chapter{A}
\minitoc
\minilof
\minilot
\begin{table}
\caption{my table}
\end{table}
etc....
\begin{figure}
\caption{my figure}
\end{figure}
\end{document}
我试过
\addtocontents{lot}{\protect\setcounter{tocdepth}{0}}
\addtocontents{lof}{\protect\setcounter{tocdepth}{0}}
如上所述,但是那没有用。
问题是:如何仅在章节中显示 lof 和 lot,而不在主目录中显示?
答案1
\tableofcontents
或宏\listof...
使用\@starttoc{X}
其中X
是相关ToC
文件的扩展名,即toc
或lot
。
但是,\@starttoc
使用\@input
读取相关文件的内容然后对其进行排版list of ...
。
\@starttoc
这可以被修补或使用在然后(重新定义之后)使用的命令\listoftables
的\listoffigures
“副本” 。
由于List of
--标题很可能是不需要的,因此我在\listoftables
这里使用了一个非常原始的定义。
\documentclass[11pt]{report}%
\newif\ifshowlistof
\makeatletter
\def\@starttocbutdonotshowtoc#1{%
\begingroup
\makeatletter
\setcounter{tocdepth}{\mytocdepth}
\ifshowlistof
\@input{\jobname.#1}%
\fi
\if@filesw
\expandafter\newwrite\csname tf@#1\endcsname
\immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
\fi
\@nobreakfalse
\endgroup}
\renewcommand{\listoftables}{%
\@starttocbutdonotshowtoc{lot}%
}
\renewcommand{\listoffigures}{%
\@starttocbutdonotshowtoc{lof}%
}
\makeatother
\usepackage{minitoc}
%see http://tex.stackexchange.com/questions/308838/setting-tocdepth-to-zero-in-report-class-makes-minilot-and-minilof-not-show-up
\def\mytocdepth{3}
\begin{document}
\dominitoc
\dominilof
\dominilot
\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
\addtocontents{lot}{\protect\setcounter{tocdepth}{\mytocdepth}}
\addtocontents{lof}{\protect\setcounter{tocdepth}{\mytocdepth}}
\tableofcontents
\listoffigures
\listoftables %have to do this, else can't show minilot in chapter
%but I do not want to show list of table here, only in chapter
\chapter{A}
\minitoc
\minilof
\minilot
\begin{table}
\caption{my table}
\end{table}
\begin{figure}
\caption{A figure}
\end{figure}
etc....
\end{document}