Pgfplotstable 标题以粗体显示

Pgfplotstable 标题以粗体显示

我想使用该pgfplotstable包创建一个表。我已成功使用以下方法获得了 95% 的所需格式:

\usepackage{pgfplotstable}
\usepackage{booktabs}

% global settings
\pgfplotstableset{
after row={\hline},
every head row/.style={
before row={
\rowcolor{lightgray}
\noalign{\hrule height \tableborder}
},
after row={
\hline
},
},
every last row/.style={
after row=\noalign{\hrule height \tableborder}
},
col sep = &,
row sep=\\,
% column type/.add={}{\vrule width \tableborder},
every col no 1/.style={ column type/.add={|}{} },
every col no 2/.style={ column type/.add={|}{} },
every col no 3/.style={ column type/.add={|}{} },
every col no 4/.style={ column type/.add={|}{} },
every col no 5/.style={ column type/.add={|}{} },
every first column/.style={
column type/.add={!{\vrule width \tableborder}}{}
},
every last column/.style={
column type/.add={}{!{\vrule width \tableborder}}
},
string type,
}

尽管有很多every col no我不喜欢的地方,但它仍然几乎完美地工作。我唯一缺少的是将标题的文本加粗。如果我尝试在实际表格中强制将其加粗,它不会编译,而且我无法将行的内容更改为粗体。因此,对于此代码,我提出了 2 个问题:

  1. 我怎样才能使标题的文字变为粗体?

  2. every col no是否有人知道以更好但更通用的方式执行命令的方法?

编辑:这是现在的完整代码(缺少一个 def)。初始配置下方是生成表的代码。

\usepackage{pgfplotstable}
\usepackage{booktabs}
\def\tableborder{1.5pt}

% global settings
\pgfplotstableset{
after row={\hline},
every head row/.style={
before row={
\rowcolor{lightgray}
\noalign{\hrule height \tableborder}
},
after row={
\hline
},
},
every last row/.style={
after row=\noalign{\hrule height \tableborder}
},
col sep = &,
row sep=\\,
% column type/.add={}{\vrule width \tableborder},
every col no 1/.style={ column type/.add={|}{} },
every col no 2/.style={ column type/.add={|}{} },
every col no 3/.style={ column type/.add={|}{} },
every col no 4/.style={ column type/.add={|}{} },
every col no 5/.style={ column type/.add={|}{} },
every first column/.style={
column type/.add={!{\vrule width \tableborder}}{}
},
every last column/.style={
column type/.add={}{!{\vrule width \tableborder}}
},
string type,
}

这样就生成了表格。请注意,这只是实际文档的一部分,表格是假的。

\pgfplotstabletypeset{
person & singEnglish & singGaeilge & pluralEnglish & pluralGaeilge\\
1st & at me & agam & at us & againn\\
2st & at you & agat & at you & agaibh\\
3st & at him & aige & at them & acu\\
& at her & aici & &\\
}

结果如下。我希望标题中的文本为粗体,并且列线贯穿所有列

在此处输入图片描述

編輯 2:

好的,现在这里有一个可编译代码(独立)的示例,但现在它拒绝绘制标题行。请帮忙。

\documentclass[12pt,a4paper]{book}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}

\usepackage{pgfplotstable}
\usepackage{booktabs}
\def\tableborder{1.5pt}

% global settings
\pgfplotstableset{
    after row={\hline},
    every head row/.style={
        before row={
        \noalign{\hrule height 1.5pt}
        },
        after row={
            \hline
        },  
    },
    every last row/.style={
        after row=\noalign{\hrule height 1.5pt}
    },
    col sep = &,
    row sep=\\,
    % column type/.add={}{\vrule width \tableborder},
    every col no 1/.style={ column type/.add={|}{} },
    every col no 2/.style={ column type/.add={|}{} },
    every col no 3/.style={ column type/.add={|}{} },
    every col no 4/.style={ column type/.add={|}{} },
    every col no 5/.style={ column type/.add={|}{} },
    every first column/.style={
        column type/.add={!{\vrule width 1.5pt}}{}
    },
    every last column/.style={
        column type/.add={}{!{\vrule width 1.5pt}}
    },
    string type,
}

\begin{document}
\pgfplotstabletypeset{
1 & 2 & 4 \\
3 & 4 & 9 \\
}
\end{document}

答案1

Pgfplotstable 对修改标题单元格内容的支持非常有限。事实上,分配其内容的唯一实用方法是修改列名。修改列名有两种方法:第一种是直接分配(这里不合适),第二种是assign column name允许调整现有的列名。由于标题行只包含列名,因此您可以使用以下方法将其加粗:

\documentclass{standalone}

\usepackage{pgfplotstable}
\usepackage{booktabs}
\usepackage{array}
\usepackage{colortbl}

\begin{document}

\pgfplotstabletypeset[
    assign column name/.style={/pgfplots/table/column name={\textbf{#1}}},
]
{
first second third
1 2 3
4 5 6
}
\end{document}

在此上下文中,#1是“正常”列名。 键预期修改column name

在此处输入图片描述

答案2

我知道这个帖子已经很旧了,但我刚刚才发现这一点,而且太激动了,舍不得分享……

关于你的第一个问题粗体标题我可以提供以下内容。在排版表格之前,使用以下方法在列类型中指定粗体字体:

column type={>{\fontseries{bx}\selectfont}c} %see sec 2.6 for defining column types

这应该会将表格中的所有条目设置为粗体。要仅将标题保留为粗体,您可以使用以下方法对每个单元格的内容进行后处理

postproc cell content/.append style={ % see sec 3.2
/pgfplots/table/@cell content/.add={\fontseries{\seriesdefault}\selectfont}{}}

这是可行的,因为第二段代码不适用于标题单元格,所以我们可以先将所有内容设置为粗体,然后将其他(非标题)单元格重置为正常字体。有关更多信息,请参阅 pgfplotstable 手册中注释中的部分。

这是 MWE

\documentclass{article}
\usepackage{pgfplotstable}

\begin{document}

\pgfplotstableset{% set global options
format=inline,
string type,
col sep={&}, row sep={\\},
column type={>{\fontseries{bx}\selectfont\centering\arraybackslash}c},
every head row/.style={after row=\hline},
postproc cell content/.append style={
/pgfplots/table/@cell content/.add={\fontseries{\seriesdefault}\selectfont}{}}
}

\pgfplotstabletypeset{% The input table
H1&H2&H3 \\
data1&data2&data3 \\
moredata1&moredata2&moredata3 \\
}

\end{document}

平均能量损失

编辑:

这是嵌入在格式化表中的代码。我注释掉了 ,every col no <index>/.style并用 替换了该块column type={<options>}。这允许您为每一列指定列类型。由于您希望对第一列和最后一列使用不同的规范,因此您必须手动指定它们。

\documentclass{article}
\usepackage{pgfplotstable}
\usepackage{booktabs,colortbl}
\begin{document}
\def\tableborder{1.5pt}

% global settings
\pgfplotstableset{
after row={\hline},
every head row/.style={
before row={
\rowcolor{lightgray}
\noalign{\hrule height \tableborder}
},
after row={
\hline
},
},
every last row/.style={
after row=\noalign{\hrule height \tableborder}
},
col sep = &,
row sep=\\,
% column type/.add={}{\vrule width \tableborder},
%every col no 1/.style={ column type/.add={|}{} },
%every col no 2/.style={ column type/.add={|}{} },
%every col no 3/.style={ column type/.add={|}{} },
%every col no 4/.style={ column type/.add={|}{} },
%every col no 5/.style={ column type/.add={|}{} },
column type={|>{\fontseries{bx}\selectfont}c},
every first column/.style={
column type={!{\vrule width \tableborder}>{\fontseries{bx}\selectfont}c} % removed /.add so you can replace the format rather than append to it.
},
every last column/.style={
column type/.add={}{!{\vrule width \tableborder}}
},
string type,
postproc cell content/.append style={
/pgfplots/table/@cell content/.add={\fontseries{\seriesdefault}\selectfont}{}
}
}


\pgfplotstabletypeset{
person & singEnglish & singGaeilge & pluralEnglish & pluralGaeilge\\
1st & at me & agam & at us & againn\\
2st & at you & agat & at you & agaibh\\
3st & at him & aige & at them & acu\\
& at her & aici & &\\
}
\end{document}

mwe_table_编辑

答案3

好吧,这不是一个好的解决方案,我真的不喜欢它,因为它非常具体,其目的是为了让用户更容易使用,但无论如何,它在这里:

\pgfplotstabletypeset
[columns/col1/.style{column name=\textbf{col1}},
columns/col2/.style{column name=\textbf{col2}},
columns/col3/.style{column name=\textbf{col3}},
columns/col4/.style{column name=\textbf{col4}},
columns/col5/.style{column name=\textbf{col5}}
]{
col1 & col2 & col3 & col4 & col5 \\
1st & at me & agam & at us & againn \\
2st & at you & agat & at you & agaibh \\
3st & at him & aige & at them & acu \\
& at her & aici & & \\
}

相关内容