我对 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@macro
s:
\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}