从 \listoftables 中删除由 deluxetable 创建的重复条目

从 \listoftables 中删除由 deluxetable 创建的重复条目

我正在尝试改编我所在大学提供的论文样式文件,以便使用 deluxetable 包。除了表格列表部分,我已经让所有东西都正常工作了。deluxetable 接收长表格数据并根据页面长度对其进行拆分,然后为第一页之后的每一页创建新的连续标题。问题是每次拆分到新页面时,它都会向表格列表添加一个新条目,因此我最终会得到给定表格的 5 或 6 个引用。有没有办法修改此命令以查找和删除重复项?

论文样式文件通过重新定义内置的 \listoftables 来生成表格列表,但 AFAICT 它只会改变写入 .lot 文件的外观并最终改变目录。

我希望这个问题可以得到解答,而不需要发布整个长样式文件,因为我可以看到输入和输出,但如果有帮助的话,我很乐意提供一个。以下是文档类、包依赖项和重要的代码片段:

\documentclass[12pt]{book}

\usepackage{graphicx}  % allows use of graphic figures
\usepackage{subfig} % new package for combining figures into one; replaces subfigure
\usepackage{amsmath}  % loads extra math symbols
\usepackage{amssymb}  % also loads amsfonts
\usepackage{float}  % permits new floating environments
\usepackage{url}  % handle URLs, directories, e-mail addresses
\usepackage{cite}  % make sequential citations look nice
\usepackage{listings}  % for pretty printing of program code
\usepackage{color}
\usepackage{hyperref}
\usepackage{deluxetable}

%
%%%
%%% Command from report.cls, (c) LaTeX3 Project.
%%%
\renewcommand\listoftables{%
    \if@twocolumn
      \@restonecoltrue\onecolumn
    \else
      \@restonecolfalse
    \fi
    \chapter*{\listtablename
      \@mkboth{\uppercase{\listtablename}}{\uppercase{\listtablename}}}%
    \addcontentsline{toc}{chapter}{\listtablename}
    \@starttoc{lot}%
    \if@restonecol\twocolumn\fi
    }

.lot 文件如下所示:

\addvspace {10\p@ }
\addvspace {10\p@ }
\contentsline {table}{\numberline {2.1}{\ignorespaces Table 2.1 Caption \relax }}{49}{table.caption.28}%
\contentsline {table}{\numberline {2.1}{\ignorespaces Table 2.1 Caption \relax }}{50}{table.caption.29}%
\contentsline {table}{\numberline {2.1}{\ignorespaces Table 2.1 Caption \relax }}{51}{table.caption.30}%
\contentsline {table}{\numberline {2.2}{\ignorespaces Table 2.2 Caption \relax }}{52}{table.caption.31}%
\contentsline {table}{\numberline {2.2}{\ignorespaces Table 2.2 Caption \relax }}{53}{table.caption.32}%
\contentsline {table}{\numberline {2.2}{\ignorespaces Table 2.2 Caption \relax }}{54}{table.caption.33}%
\contentsline {table}{\numberline {2.3}{\ignorespaces Table 2.3 Caption \relax }}{55}{table.caption.34}%
\contentsline {table}{\numberline {2.3}{\ignorespaces Table 2.3 Caption \relax }}{56}{table.caption.35}%
\contentsline {table}{\numberline {2.3}{\ignorespaces Table 2.3 Caption \relax }}{57}{table.caption.36}%
\addvspace {10\p@ }

在 makefile 中,listoftables 的调用方式如下:

\begin{document}
% Generate and print the lists
 \listoftables           % List of Tables 

有没有办法自动删除重复条目?重复条目在 .lot 文件中始终是连续的,并且具有匹配的数字线和标题。

答案1

有 deluxetable.sty 的文档吗?它甚至不在 CTAN 上,而且它的行为与 AAAStex 的文档不匹配https://journals.aas.org/aastexguide

您是否尝试将此错误报告给作者(似乎是“Sean Lake,@odysseus9672”)?

无论如何,您可以在自己的副本中修复该错误。在文本编辑器中打开 deluxetable.sty。找到 的定义\ptable@@split,大约向下 3/4。\@makecaption在该定义中找到 的更改。为 LOT 条目插入类似的行:

\let\addcontentsline\@gobblethree % added

总的来说,结果将是

\def\ptable@@split{% 
  \before@suspendpt 
  \endtabular 
  \setbox\pt@box\lastbox 
  \pt@width\wd\pt@box\box\pt@box 
  \typeout@pt@nl 
  \global\advance\pt@page\@ne 
  \endcenter 
  \end@plano@float 
  \clearpage
  \addtocounter{table}{\m@ne}% 
  \let\fnum@table=\fnum@ptablecont 
  \let\@makecaption\@makecaption@plano@cont
  \let\addcontentsline\@gobblethree % added
  \global\pt@ncol=\pt@column%  Either 0 or value of \tablecolumns 
  \global\pt@line\z@ 
  \start@pt@tabular 
  \before@resumept 
  \pt@head 
}% 

或者,你可以在加载 deluxetable 之后,把这个定义放在你自己的文档中,\makeatletter... 之间。\makeatother

相关内容