更节省的方式

更节省的方式

有谁知道如何获取随机打乱行次序的表格(使用\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
}

相关内容