表格列表未显示

表格列表未显示

我对表格列表有疑问。它没有出现在我的文档中。

.cls文件是这里

文档:

\documentclass[thesis=B,czech]{FITthesis}[2012/06/26]

\usepackage[utf8]{inputenc}

\usepackage{graphicx}
\usepackage{longtable}

\department{text}
\title{text}
\authorGN{text}
\authorFN{text}
\authorWithDegrees{text}
\supervisor{text}
\acknowledgements{text}
\abstractCS{text}
\abstractEN{text}
\placeForDeclarationOfAuthenticity{text}
\declarationOfAuthenticityOption{1}
\keywordsCS{text}
\keywordsEN{text}

\usepackage{chngcntr}
\AtBeginDocument{
  \counterwithout{figure}{chapter}
  \counterwithout{table}{chapter}
  \renewcommand\thefigure{\arabic{figure}}
  \renewcommand\thetable{\arabic{table}}
}
\begin{document}

\begin{introduction}
    %
\end{introduction}

\chapter {First}

text

\begin{figure}[h]
  \caption{Function.}
  \label{fig:function}
\end{figure}

\begin{center}
    \begin{longtable}{ c | c | c }
        $1$ & $2$ & 3 \\ \hline
        \caption{tab}
\label{tab:tab}
    \end{longtable}
\end{center}

\begin{conclusion}
    %
\end{conclusion}

\appendix

\end{document}

答案1

班上FITthesis.cls 没有需要明确使用\listoftables,因为它试图检测是否应该自动生成列表。

问题在于,用于自动检测的机制不太好,因为它基于环境检测,而不是标题类型。如果table文档中使用了环境,则将生成 LoT;否则,不会生成任何列表。

这显然是错误的,因为表格的标题可以与环境无关table(可以有longtable, 或threeparttable, 或\captionof{table}{...})。

表格列表可参见FITthesis.cls

\AtEndEnvironment{table}{\gdef\there@is@a@table{}}
\AtEndDocument{\ifdefined\there@is@a@table\label{tab:was:used:in:doc}\fi}
\DeclareRobustCommand{\listoftablescond}{\@ifundefined{r@tab:was:used:in:doc}{}{\listoftables*}}

table这意味着,正如我之前所说,只有在文档中使用时才会生成 LoT 。

由于 MWE 中table未使用,因此即使存在 LoT,也不会生成longtable。这显然是一个糟糕的设计选择,应该由类的作者/维护者纠正。如果要进行自动生成,那么机制必须基于标题,而不是基于特定环境。

\listoftables人们可以在文档中明确调用,但是,一旦table使用,就会得到两个表格列表。

这里最好的解决方案是,当类的作者/维护者纠正问题时,也注册longtableLoT 的自动生成,使用:

\makeatletter
\AtEndEnvironment{longtable}{\gdef\there@is@a@table{}}
\makeatother

完整示例:

\documentclass[thesis=B,czech]{FITthesis}[2012/06/26]
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{longtable}

\makeatletter
\AtEndEnvironment{longtable}{\gdef\there@is@a@table{}}
\makeatother

\department{text}
\title{text}
\authorGN{text}
\authorFN{text}
\authorWithDegrees{text}
\supervisor{text}
\acknowledgements{text}
\abstractCS{text}
\abstractEN{text}
\placeForDeclarationOfAuthenticity{text}
\declarationOfAuthenticityOption{1}
\keywordsCS{text}
\keywordsEN{text}

\usepackage{chngcntr}
\AtBeginDocument{
  \counterwithout{figure}{chapter}
  \counterwithout{table}{chapter}
  \renewcommand\thefigure{\arabic{figure}}
  \renewcommand\thetable{\arabic{table}}
}
\begin{document}


    \begin{longtable}{ c | c | c }
        $1$ & $2$ & 3 \\ \hline
        \caption{tab}
\label{tab:tab}
    \end{longtable}

\end{document}

在此处输入图片描述

相关内容