pgfplotstabletypeset 单元格内容的垂直对齐,加上水平线

pgfplotstabletypeset 单元格内容的垂直对齐,加上水平线

我正在使用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 中输入 $!

再次感谢你!

相关内容