我正在使用pgfplotstabletypeset
它来读取 csv 文件的内容并排版(在下面的 MWE 中,我复制/粘贴了 csv 文件的内容,以便更容易测试 MWE)。
我有一些内容跨越一些单元格中的多行。我用\makecell
它来实现这一点。
因此,当与多行单元格位于同一行的单元格具有单行内容时,我会看到其上方和下方有空白。显然,在这种情况下默认垂直对齐是居中。
排版后,行不再容易在视觉上分开。为了解决这个问题,a) 我希望所有单元格(标题单元格除外)垂直对齐到顶部。b) 和/或(取决于外观)我可能希望水平单元格边框可见,就像\hline
在正常环境中将 s 放在每行之间一样tabular
。
\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.8}
\usepackage{float}
\restylefloat{table}
\usepackage{cite}
\usepackage{lscape}
\usepackage{lineno}
\usepackage{makecell}
\title{A}
\author{E}
\date{}
\begin{document}
\maketitle
\begin{table}[H]
\caption{Coefficient Generated Table}
\label{tab:Data}
\centering
\pgfplotstabletypeset[
col sep=semicolon,
string type,
every head row/.style=
{before row=\hline,after row=\hline},
every last row/.style=
{after row=\hline},
]{
Name;W;aaaa
s;\makecell{400, 300 \\ 500, 200 \\ 2, 32, 532};23
d;124 234;234
}
\end{table}
\end{document}
答案1
您可以hline
使用以下方法在每行后插入:every first row/.style={after row=\hline}
结果
平均能量损失
\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.8}
\usepackage{float}
\usepackage{makecell}
\begin{document}
\begin{table}[H]
\centering
\pgfplotstabletypeset[
col sep=semicolon,
string type,
every head row/.style=
{before row=\hline,after row=\hline},
every first row/.style={after row=\hline},
every last row/.style=
{after row=\hline},
]{
Name;W;aaaa
s;\makecell{400, 300 \\ 500, 200 \\ 2, 32, 532};23
d;124 234;234
}
\end{table}
\end{document}
但您也可以使用 来更改不同行之间的分隔\renewcommand{\arraystretch}{2}
。根据您的喜好更改数字。
结果
平均能量损失
\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.8}
\usepackage{float}
\usepackage{makecell}
\renewcommand{\arraystretch}{2}
\begin{document}
\begin{table}[H]
\centering
\pgfplotstabletypeset[
col sep=semicolon,
string type,
every head row/.style=
{before row=\hline,after row=\hline},
every last row/.style=
{after row=\hline},
]{
Name;W;aaaa
s;\makecell{400, 300 \\ 500, 200 \\ 2, 32, 532};23
d;124 234;234
}
\end{table}
\end{document}
我找不到方法来改变垂直对齐pgfplotstable
。
答案2
我正在研究您的示例 - 再次感谢您!看起来使用 pgfplottable、\arraystretch、\makecell 和 \Gape,您可以解决很多问题,而我看到其他人尝试使用 pgfplotstable 来解决这些问题。
仅供参考,这是我最近构建的一个例子
\usepackage{pgfplots}
\pgfplotsset{compat = newest}
\usepackage{pgfplotstable}
\usepackage{makecell}
\renewcommand{\arraystretch}{1.5}
\begin{table}[htpb]
\centering
\pgfplotstabletypeset[
col sep=&,
row sep=\\,
string type,
every head row/.style=
{before row=\toprule, after row=\bottomrule},
every last row/.style=
{after row=\hline},
]
{
Symbol & Symbol Name & Definition, Meaning & Examples \\
\{ \} & set & \Gape[4pt]{\makecell{A collection of elements \\ (not necessarily ordered)}} & \makecell{$A = \{3,7,9,14\}$ \\ $B = \{9,14,28\}$ } \\ \hline
\makecell{$\in$ \\ $\notin$} & \makecell{\bf element of \\ \bf not element of} & set membership & \makecell{$x = 3 \in A$ \\ $x = 28 \notin A$} \\ \hline
\makecell{$\exists$} & there exists & \makecell{ {} \\ {} } & \makecell{if $x \in \mathbb{N}$, then $\exists\ x > 0$} \\ \hline
\makecell{$\mid$} & such that & \makecell{further define \\ characteristics of object} & \makecell{$A = \{ x \mid x \in \mathbb{R},\ x \leq 0 \} $ } \\ \hline
\makecell{$\cap,\ \bigcap$} & intersection & \makecell{objects that belong to \\ two or more sets} & \makecell{$A \cap B = \{ 9,14 \} $ } \\ \hline
\makecell{$\cup, \bigcup$} & union & \makecell{objects that belong to \\ one or more sets} & \makecell{$A \cup B = \{ 3,7,9,14,28 \} $ } \\ \hline
\makecell{$\subset$} & strict subset & \makecell{one subset has fewer \\ elements than the other} & \makecell{ $\{9,14\} \subset \{9,14,28\}$ } \\ \hline
\makecell{$\subseteq$} & subset & \makecell{one subset has fewer or equal \\ elements than the other} & \makecell{ $\{9,14,28\} \subseteq \{9,14,28\}$ } \\ \hline
\makecell{$\supset$} & strict superset & \makecell{one subset has more \\ elements than the other} & \makecell{ $\{9,14,28\} \supset \{9,14\}$ } \\ \hline
\makecell{$\supseteq$} & superset & \makecell{one superset has more or equal \\ elements than the other} & \makecell{ $\{9,14,28\} \supseteq\{9,14,28\}$ } \\ \hline
\makecell{$\emptyset$} & empty set & nothing to see here & \makecell{$A = \{2,4,6,8\}$ \\ $B = \{1,3,5,7\}$ \\ $A \cap B = \emptyset$ } \\
}
\caption{Common notation and symbols used in set theory.}
\label{tab:set_notation_1}
\end{table}
输出如下:
除了您所描述的之外,请注意一些我可以很容易做到的事情:
- 将表格中单个元素的文本加粗
- \arraystretch 为我没有多行输入的行提供了良好的间距
- 对于有多行输入的行(例如第 4 - 10 行),文本会延伸到分隔行的行中。为了纠正这个问题,我们可以使用 \Gape 命令(]makecell 包的一部分)来添加空格。我已经对第一行(集合的定义/含义)中的多行输入进行了此操作,因此您可以看到第一行和第 4 - 10 行之间的区别。
- \makecell 可以非常轻松地将公式插入单元格。但请注意,您必须在 \makecell 中输入 $!
再次感谢你!