![避免使用带有 longtable 的 pgfplotstable 在表格列表中多次输入标题](https://linux22.com/image/297712/%E9%81%BF%E5%85%8D%E4%BD%BF%E7%94%A8%E5%B8%A6%E6%9C%89%20longtable%20%E7%9A%84%20pgfplotstable%20%E5%9C%A8%E8%A1%A8%E6%A0%BC%E5%88%97%E8%A1%A8%E4%B8%AD%E5%A4%9A%E6%AC%A1%E8%BE%93%E5%85%A5%E6%A0%87%E9%A2%98.png)
我正在使用 pgfplotstable 显示 .csv 文件中的数据,并且显示的表格会分三页。问题是,每页都会在表格列表中放置一个条目。这是我目前使用 pgfplotstable 的方式:
\documentclass{article}
% MWE from http://tex.stackexchange.com/questions/40411/import-files-with-pgfplotstable-and-split-tables-across-multiple-pages
\usepackage{pgfplotstable}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{array}
\usepackage{filecontents}
\usepackage{pgfplotstable}
\usepackage{booktabs}
\usepackage{filecontents}
\usepackage{longtable}
\begin{document}
\listoftables
\begin{filecontents}{testdata.dat}
Idx Nam Dim Grd
1 Ady 53 F
2 Bar 72 C
3 Cor 83 B
4 Dar 58 D
5 Esa 68 C
6 Foo 67 C
7 Gar 74 C
8 Hur 65 D
9 Jaz 85 B
10 Ker 91 A
1 Ady 53 F
2 Bar 72 C
3 Cor 83 B
\end{filecontents}
\pgfplotstableset{
begin table=\begin{longtable},
end table=\end{longtable},
}
\pgfplotstabletypeset[ col sep=space
, header=true
, every head row/.style={ before row=\caption{ The Caption }\\\toprule
, after row=\midrule\endhead }
, every last row/.style={after row=\bottomrule}
] {testdata.dat}
\end{document}
有没有办法让每页的标题和标题保持重复,但表格列表中只放置一个条目?
此致!
答案1
首先:以下帖子只是一种解决方法,并不是可接受的答案。如果有人能发布真正的答案,我会很高兴。
无论如何,经过几个小时尝试@David Carlisle 的提示和 pgfplotstable 手册中的示例后,我现在正在使用它:
\documentclass{report} % Note that I'm using report (chapters are now available)
\usepackage{pgfplotstable}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{array}
\usepackage{filecontents}
\usepackage{pgfplotstable}
\usepackage{booktabs}
\usepackage{filecontents}
\usepackage{longtable}
\begin{document}
\listoftables
\begin{filecontents}{testdata.dat}
Idx Nam Dim Grd
1 Ady 53 F
2 Bar 72 C
3 Cor 83 B
4 Dar 58 D
5 Esa 68 C
6 Foo 67 C
7 Gar 74 C
8 Hur 65 D
9 Jaz 85 B
10 Ker 91 A
1 Ady 53 F
2 Bar 72 C
3 Cor 83 B
\end{filecontents}
\pgfplotstableset{
begin table=\begin{longtable},
end table=\end{longtable},
}
\chapter{ Stuff with tables }
\newcounter{tablecounter}
\stepcounter{tablecounter}
% Place a line starting with Number of chapter followed by a dot, followed by the
% number of the counter, followed by free space and then followed by the entry.
\addcontentsline{lot}{section}{\protect\numberline{\thechapter.\arabic{tablecounter}} The Caption 1 }
\pgfplotstabletypeset[ col sep=space
, header=true
, every head row/.style={ before row=\caption*{ The Caption 1 }\\\toprule % Note that I'm using \caption*{} instead of \caption{}
, after row=\midrule\endhead }
, every last row/.style={after row=\bottomrule}
] {testdata.dat}
\stepcounter{tablecounter}
\addcontentsline{lot}{section}{\protect\numberline{\thechapter.\arabic{tablecounter}} The Caption 2 }
\pgfplotstabletypeset[ col sep=space
, header=true
, every head row/.style={ before row=\caption*{ The Caption 2 }\\\toprule
, after row=\midrule\endhead }
, every last row/.style={after row=\bottomrule}
] {testdata.dat}
\end{document}
该解决方法可实现以下目的:
- 如果表格跨越多页,请在表格上方添加标题并重复
- 如果表格跨越多页,则在表格上方添加页眉并重复此操作
- 在具有以下形状的表格列表(批次)中仅放置一个条目:。
无关: 这帖子帮助我找到了这个解决方法。
答案2
我找到了另一种解决方法。对于longtable
,你可以这样写
\caption{The Caption}
Column 1 & Column 2
\endfirsthead
\caption[]{The Continued Caption}
Column 1 & Column 2
\endhead
对于pgfplotstable
,您可以复制数据中的标题行,并使用every head row
和向第一行和第二行添加两个不同的标题every first row
。
这是代码。我把表格加长,扩展到 2 页。
\documentclass{article}
% MWE from http://tex.stackexchange.com/questions/40411/import-files-with-pgfplotstable-and-split-tables-across-multiple-pages
\usepackage{pgfplotstable}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{array}
\usepackage{filecontents}
\usepackage{pgfplotstable}
\usepackage{booktabs}
\usepackage{filecontents}
\usepackage{longtable}
\begin{document}
\listoftables
\begin{filecontents}{testdata.dat}
Idx Nam Dim Grd
Idx Nam Dim Grd %%% Duplicate here
1 Ady 53 F
2 Bar 72 C
3 Cor 83 B
4 Dar 58 D
5 Esa 68 C
6 Foo 67 C
7 Gar 74 C
8 Hur 65 D
9 Jaz 85 B
10 Ker 91 A
1 Ady 53 F
2 Bar 72 C
3 Cor 83 B
1 Ady 53 F
2 Bar 72 C
3 Cor 83 B
4 Dar 58 D
5 Esa 68 C
6 Foo 67 C
7 Gar 74 C
8 Hur 65 D
9 Jaz 85 B
10 Ker 91 A
1 Ady 53 F
2 Bar 72 C
3 Cor 83 B
1 Ady 53 F
2 Bar 72 C
3 Cor 83 B
4 Dar 58 D
5 Esa 68 C
6 Foo 67 C
7 Gar 74 C
8 Hur 65 D
9 Jaz 85 B
10 Ker 91 A
1 Ady 53 F
2 Bar 72 C
3 Cor 83 B
1 Ady 53 F
2 Bar 72 C
3 Cor 83 B
4 Dar 58 D
5 Esa 68 C
6 Foo 67 C
7 Gar 74 C
8 Hur 65 D
9 Jaz 85 B
10 Ker 91 A
1 Ady 53 F
2 Bar 72 C
3 Cor 83 B
\end{filecontents}
\pgfplotstableset{
begin table=\begin{longtable},
end table=\end{longtable},
}
\pgfplotstabletypeset[ col sep=space
, string type %%% Add this line
, header=true
, every head row/.style={ before row=\caption{ The Caption }\\\toprule
, after row=\midrule\endfirsthead } %%% Change to endfirsthead
, every first row/.style={ before row=\caption[]{ The Caption ... continued }\\\toprule
, after row=\midrule\endhead } %%% Add this line
, every last row/.style={after row=\bottomrule}
] {testdata.dat}
\end{document}
结果如下。