3

I'm trying to adapt a thesis style file provided by my university so I can use the deluxetable package. I've gotten everything to work, except for the List of Tables portion. deluxetable takes long tabular data and breaks it according to page length and creates a new continuation caption for each page after the first. The problem is each time it breaks to a new page, it adds a new entry to the List of Tables so I end up with 5 or 6 references for a given table. Is there a way to modify this command to look for and remove duplicates?

The thesis style file generates a List of Tables by redefining the built in \listoftables, but AFAICT it just changes the appearance written to the .lot file and ultimately the toc.

I'm hoping this can get answered without needing to post the entire long style file given I can see the inputs and outputs, but I'm happy to provide one if it'll help. Here are the document class, package dependencies, and the significant snippet of code:

\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
    }

The .lot file looks like:

\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@ }

In the makefile the listoftables is simply called as:

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

Is there a way to delete duplicate entries automatically? Duplicates will always be sequential in the .lot file and have matching numberlines and captions.

1 Answer 1

1
+50

Is there documentation for deluxetable.sty? It isn't on CTAN even, and its behavior does not match the documentation for AAASTeX https://journals.aas.org/aastexguide.

Did you try reporting this bug to the author, who appears to be "Sean Lake, @odysseus9672"?

Anyway, you can fix the bug in your own copy. Open deluxetable.sty in a text editor. Find the definition of \ptable@@split, about 3/4 of the way down. Locate the change of \@makecaption in that definition. Insert a similar line for the L.O.T. entry:

\let\addcontentsline\@gobblethree % added

In all, the result will be

\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 
}% 

Or you could put this definition in your own document, between \makeatletter . . . \makeatother, after loading deluxetable.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .