有谁知道如何获取随机打乱行次序的表格(使用\pgfplotstabletypeset
.dat 类型的文件)?
我现在的代码是
\documentclass{article}
\usepackage{filecontents,pgfplotstable}
\begin{document}
\begin{filecontents}{myfile.dat} %% <-- create simple .dat-file (the real one is bigger!)
A & B & C
q & w & e
r & t & y
\end{filecontents}
\pgfplotstabletypeset[
col sep=&,
string type]{myfile.dat} %% <-- here should be shuffled rows
\end{document}
答案1
这是一个比较粗略的例子:我们可以说你想以一种不可预测的方式对行进行“排序”。所以
告诉 P GFPLOTS T TABLE对行进行排序
弄乱了 P GFPLOTS T TABLE的行比较功能。
现在我们得到的是一张排序混乱的表格。
\documentclass{article}
\usepackage{filecontents,pgfplotstable}
\begin{document}
\begin{filecontents}{myfile.dat}
A & B & C
q & w & e
r & t & y
1 & 2 & 3
4 & 5 & 6
7 & 8 & 9
\end{filecontents}
\pgfkeys{
/pgfplots/float </.style={%
/pgfplots/iflessthan/.code args={##1##2##3##4}{%
\pgfmathrnd
\ifdim\pgfmathresult pt<0.5pt
##3%
\else
##4%
\fi
}%
}
}
\pgfmathsetseed{287252}
\pgfplotstabletypeset[col sep=&,string type,sort]{myfile.dat}
\end{document}
更节省的方式
正如@percusse 所建议的,不需要重新定义float <
——只需定义一个具有新名称的新比较函数即可。输出与上面相同。
\pgfkeys{
/pgfplots/random/.style={%
/pgfplots/iflessthan/.code args={##1##2##3##4}{%
\pgfmathrnd
\ifdim\pgfmathresult pt<0.5pt
##3%
\else
##4%
\fi
}%
},
/pgfplots/table/sort cmp=random
}