我正在尝试改编我所在大学提供的论文样式文件,以便使用 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