参考: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
为了基于现有列创建新列,您必须以某种方式定义新列。这涉及三个步骤:
- 定义如何定义新列(即定义其内容):
create one use
- 告诉
pgfplotstable
它应该是输出的一部分(以及在哪个位置):columns
键 - 修改新列的外观选项:
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
作为输出的某个值。