使用动态文件名将 CSV 写入文档

使用动态文件名将 CSV 写入文档

我对 Latex 还很陌生,我正在尝试制作自动文档来展示每个项目的相关信息。每个文件夹和项目都有不同的名称/代码,我希望文档从具有相同代码且位于同一文件夹中的 csv 文件中添加一个表格。

csv 文件的代码类似于 XX.000000000.XX.V00.csv,我需要每个项目的 0 都不同(我试图从带有多个连接的项目名称中获取它们)。我无法让 csv 阅读器使用变量作为文件名。我该如何解决这个问题?下面是我的代码。

\makeatletter
\def\csvfilename{LM.}
\g@addto@macro\csvfilename{\substring{\currfilename}{4}{12}}
\g@addto@macro\csvfilename{.PS.}
\g@addto@macro\csvfilename{\substring{\currfilename}{14}{16}}
\g@addto@macro\csvfilename{.csv}
\makeatother

\csvautotabular[separator=semicolon, respect all]{\csvfilename}

在此先感谢您的帮助!

答案1

你的\g@addto@macro\csvfilename{\substring{\currfilename}{4}{12}}方法不起作用。它没有添加所需的子字符串,而是直接添加文本,\substring{后跟原始文件名,后跟文字文本{4}{12},等等。

原因是\substring不可扩展。相反,它将结果写入宏 中\thestring。因此,创建文件名的解决方案是 而不是所有\g@addto@macros:

\substring{\currfilename}{4}{12}
\edef\csvfilename{LM.\thestring.PS.}
\substring{\currfilename}{14}{16}
\edef\csvfilename{\csvfilename\thestring.csv}

要了解文件名已变成什么,请使用

This is the filename: \texttt{\meaning\csvfilename}

相关内容