使用 pgfplotstable 打印表格时将 csv 文件中的多个列放入单列中

使用 pgfplotstable 打印表格时将 csv 文件中的多个列放入单列中

参考:Christian Feuersänger 博士回答了我的问题链接到问题。。这是一个后续问题。

MWE(由 Christian Feuersänger 博士在其回答中提供)

\documentclass{standalone}
 \usepackage{pgfplotstable}
\begin{document}

\pgfplotstabletypeset[
  col sep=comma,
  columns/col1/.style={string type,column type=r},
  columns/col2/.style={string type,column type=l},
  columns/col3/.style={string type,column type=l},
  ]
{
    col1,col2,col3
    Col A,B,C
    The first column,E,F
}   

\end{document}

在此处输入图片描述

问题: 如何获取只有两列且第二列包含元素的表格

col2/col3
B/C
E/F

具体来说,表格应该是这样的:

    col1               col2/col3
    Col A              B/C
    The first column   E/F

如何使用 pgfplotstable 获取它?

答案1

为了基于现有列创建新列,您必须以某种方式定义新列。这涉及三个步骤:

  1. 定义如何定义新列(即定义其内容):create one use
  2. 告诉pgfplotstable它应该是输出的一部分(以及在哪个位置):columns
  3. 修改新列的外观选项:column/<name>/.style={...}

在此处输入图片描述

\documentclass{standalone}
\usepackage{pgfplotstable}
\begin{document}

\pgfplotstabletypeset[
  col sep=comma,
  columns/col1/.style={string type,column type=r},
  columns/col2/.style={string type,column type=l},
  columns/col3/.style={string type,column type=l},
  columns/mixed/.style={string type,column type=l,column name={col2/col3}},
  columns={col1,mixed},
  create on use/mixed/.style={
    create col/assign/.code={%
        \edef\entry{\thisrow{col2}/\thisrow{col3}}%
        \pgfkeyslet{/pgfplots/table/create col/next content}\entry
    }
  },
  ]
{
    col1,col2,col3
    Col A,B,C
    The first column,E,F
}   

\end{document}

新的行指的是mixed(这是我为新列起的名字)。

该行columns={col1,mixed}告诉pgfplotstable应排版哪些列(以及按什么顺序),即它满足步骤(2)。

该行columns/mixed/.style=...配置列的外观选项mixed(包括其显示名称),即它满足步骤(3)。

最后,该create on use/mixed/.style={...}语句定义如何创建新列(步骤(1)。在我们的例子中,我们提供了一个/.code使用两个编程结构来定义内容的片段:该行\edef\entry...表示“定义\entry为括号中的扩展值(expanded def)”。该\thisrow{colname}语句扩展为当前处理的行中的值colname(还有和\nextrow{colname}\prevrow{colname}它们的操作方式类似)。最后,\pgfkeyslet{.../next content}\entry将的值写入方法\entry期望create col/assign作为输出的某个值。

相关内容