我真正想要的是从 CSV 中获取一行,格式化它,然后将其放入我的文本中。
举个例子,我有一个包含城市数据的电子表格,例如“蒙特利尔,1000,维多利亚,香蕉”是第 5 行。
我希望能够调用第 5 行并自动将其格式化为:
蒙特利尔。人口:1000。市长名叫维多利亚,主要出口产品是香蕉。
这可能吗?该怎么做呢?
奖励:如果我可以这样去做,即直接呼叫蒙特利尔而不是 5 号线,那将会更有用,但我不确定这是否可行。
答案1
这是一个使用选项datatool
:
\documentclass{article}
\begin{filecontents*}[overwrite]{mydata.csv}
Vancouver, 2000, Ivan, Avocados
Edmonton, 3000, Scarlet, Mangos
Saskatoon, 4000, Hilbert, Strawberries
Halifax, 12, Dilbert, Kiwis
Montreal, 1000, Victoria, Bananas
Toronto, 5000, Edward, Blueberries
\end{filecontents*}
\usepackage{datatool}
% Load CSV file
\DTLloaddb[
noheader,
keys={city,population,mayor,export}
]{names}{mydata.csv}
\NewDocumentCommand{\printcity}{ m }{%
\textbf{#1}. % Print city
\textit{Population}: \DTLfetch{names}{city}{#1}{population}. % Print population
\textit{Export}: \DTLfetch{names}{city}{#1}{export}.
}
\begin{document}
\printcity{Toronto}
\printcity{Edmonton}
\printcity{Montreal}
\end{document}
如果需要,您可以添加内容存在条件。但是,由于您正在创建数据库,因此可能不需要这样做。