我遇到了一个奇怪的问题。在我的 latex 文档中,创建了一个表格,但在 .aux 文件中,该表格不知为何重复,从而生成了多重标签警告。
我能弄清楚,发生这种情况的原因是表格由于分页符而被分隔,这本身没什么问题,但因此创建的多个标签警告很烦人。
信息:
Preamble:
\documentclass[10pt, a4paper, oneside, english]{scrbook}
\usepackage{ amsmath }
\usepackage{float}
\usepackage{ graphicx }
\usepackage{ microtype }
\usepackage[ english ]{ babel }
\usepackage[utf8]{inputenc}
\usepackage[ampersand]{easylist}
\usepackage{caption}
\usepackage[noprefix]{nomencl}
\usepackage{amssymb}
\usepackage{etoolbox}
\usepackage{environ}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{ltablex}
\usepackage{varwidth}
\usepackage{array}
\usepackage{gensymb}
\usepackage{subcaption}
\usepackage{siunitx}
\usepackage[ampersand]{easylist}
这是我在新环境中打包的当前表格命令。当我将标签直接放在标题后面时,它将在分页符上生成两次。将其放在新环境的第二部分会产生错误。
我应该将标签命令放在哪里或者我可以使用哪种其他命令结构来规避这种情况?
\newcommand{\ra}[1]{\renewcommand{\arraystretch}{#1}}
% Variable Table Environment
\newenvironment{FancyTable}[4]
{
% Before each new major table
\ra{1.3}
\begin{longtable}{ @{} #1 @{}}
% Caption
\caption{#2} \label{tab:#4}\\
\\
% Top Section
\toprule #3 \\
% Midsection
\midrule
\endhead
}
{
\bottomrule
\end{longtable}
}
调用表命令
\begin{FancyTable}{lrr}{Ditolandia Results}{Size & Results ($1.3$) & Actual}{PPRR}
$a$ & $0.1$ & $0.1$ \\
$b$ & $0.1$ & $0.1$ \\
$c$ & $0.1$ & $0.1$ \\
\end{FancyTable}
辅助文件摘录:
\@writefile{lot}{\contentsline {table}{\numberline {\relax 3.1}{\ignorespaces Ditolandia Results}}{16}}
\newlabel{tab:PPRR}{{\relax 3.1}{16}}
\gdef \LT@vi {\LT@entry
{1}{52.80566pt}\LT@entry
{1}{67.80566pt}\LT@entry
{1}{35.16675pt}}
\@writefile{lot}{\contentsline {table}{\numberline {\relax 3.1}{\ignorespaces Ditolandia Results}}{17}}
\newlabel{tab:PPRR}{{\relax 3.1}{17}}
我可以忍受这个警告,但它很烦人。
答案1
更改的定义以FancyTable
仅在第一页上设置标签(也可能是表格列表中的条目):
\newenvironment{FancyTable}[4]
{
% Before each new major table
\ra{1.3}
\begin{longtable}{ @{} #1 @{}}
% Caption
\caption{#2} \label{tab:#4}\\
\\
% Top Section
\toprule #3 \\
% Midsection
\midrule
\endfirsthead
\caption[]{#2}\\
\\
% Top Section
\toprule #3 \\
% Midsection
\midrule
\endhead
}
{
\bottomrule
\end{longtable}
}
看手册longtable
关于\endfirsthead
vs.\endhead
和\caption[]{…}
vs. \caption{…}
。