如何仅显示章节内的图表列表和表格列表而不显示文档顶部的图表列表?

如何仅显示章节内的图表列表和表格列表而不显示文档顶部的图表列表?

这是来自在报告类中将 tocdepth 设置为零使得 minilot 和 minilof 不显示但我现在遇到了新问题,这确实是一个新问题,但相关。

我有一个主文档,它从不同位置读取多个章节。我用它minitoc来显示每个章节的目录,还显示每个章节的图表列表和表格列表。

但我不想重复这一操作并在文档的主目录中显示图表列表和表格列表,因为这会使主目录变得混乱。

如果我需要查看某一章节的图表列表,我总是可以转到该章节查看它们,因为每一章都是独立的,这似乎更有意义。

但是为了能够在每一章中显示 LOF 和 LOT,我不得不在主文档中发出命令\listoffigures,以便可以读取列表。\listoftablesminitoc

有没有办法编译图表列表,让 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文件的扩展名,即toclot

但是,\@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}

在此处输入图片描述

相关内容