每次编译 pgfplotstable 时是否可以自动刷新文件内容*?

每次编译 pgfplotstable 时是否可以自动刷新文件内容*?

最近我发现,在编译某些字体集宽度pgfplotstable生成.csv文件时,该文件在其源(在文档前言中)编译的后续更改中不会更改。因此我需要手动将其删除。

我使用(最近的)MikTeX、WinEdt 作为编辑器,并使用 Windows 10 作为操作系统。

一个例子:

\documentclass{article}
    \usepackage{pgfplotstable}

    \usepackage{booktabs}
    \usepackage{siunitx}
\sisetup{exponent-product={\cdot},
         output-decimal-marker={,}, 
         per-mode=symbol}

\begin{filecontents*}{mytable.csv}
Chem.; Avg. Conc.; Avg. Conc. Norm.; Conc. unit; Mass sum; Mass unit;
Ammonium ; 159083.33; 114450.21; \si{\micro\gram\per\liter};   2839.463; \si{\kilo\gram};
%Ammonium ; 159083.33; 114450.21; \si{\micro\gram\per\liter};   2839.463; \si{\kilo\gram};
%Ammonium ; 159083.33; 114450.21; \si{\micro\gram\per\liter};   2839.463; \si{\kilo\gram};
\end{filecontents*}

    \begin{document}
Some text here \si{\micro\gram\per\liter}, \si{\kilo\gram},

\captionof{table}{Some caption text}

\pgfplotstabletypeset[%
    col sep=semicolon,
    read comma as period=true,
    header=has colnames,
    every head row/.style={
        before row=\toprule,
         after row=\midrule},
    every last row/.style={
            after row=\bottomrule},
display columns/0/.style={string type, column type=l},%
display columns/3/.style={string type, column type=l},%
display columns/5/.style={string type, column type=l},%
    ]{mytable.csv}\par
    \end{document}

如果我取消注释行filecontents*并再次编译上述文件,则表不会更改,直到我手动删除它。我是否需要在 WinEdt 中进行一些特殊设置才能删除旧.cvs文件,或者这可以通过文档中的某些设置来实现?

答案1

引自filecontents包,其中引用了ltclass.dtx(重点是我自己)

环境 filecontents 用于将包、选项或其他文件的内容与单个文件中的文档一起传递。它有一个参数,即要创建的文件的名称。如果该文件已经存在(如果操作系统支持“当前目录”或“默认目录”的概念,则可能仅在当前目录中),则不会发生任何事情(信息消息除外),并且环境主体被绕过。否则,环境主体将逐字写入作为第一个参数给出的文件名,并附带一些关于如何生成的注释。

文档中稍微往下一点的地方,

filecontents 包提供了 filecontents 和 filecontents* 环境的破解版本,可解除上述两个限制

因此,只需加载filecontents包即可解决您的问题:

\usepackage{filecontents}

相关内容