MWE(实际上不是完全的 MWE,但我认为这样更容易看出发生了什么):
\documentclass{article}
\usepackage{csvsimple}
\usepackage{graphicx}
\begin{document}
\setlength\unitlength{1cm}
\csvreader[head to column names]{jobname2.csv}{}{%
\vfill
\artist
\includegraphics[height=37mm]{\filenameone}
\includegraphics[height=37mm]{\filenametwo}
\comment
}
\end{document}
内容jobname2.csv
:
artist,filenameone,filenametwo,comment
Foo,example-image-a,example-image-b,Nothing
Foobar,example-image-a,,Something
当列中没有任何内容时filenametwo
,我不想执行任何操作(不确定如何正确表达)。
答案1
csvsimple
提供一个宏,\ifcsvstrequal{X}{Y}{equal}{not equal}
用于在两个参数X
和Y
相等或不相等时有条件地执行代码(基本上\ifx
是两个\edef
-ed 标记列表之一)。您可以在示例中使用该宏,而无需额外的包,例如xstring
:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.csv}
artist,filenameone,filenametwo,comment
Foo,example-image-a,example-image-b,Nothing
Foobar,example-image-a,,Something
Bar,,example-image-b,Anything
\end{filecontents*}
\usepackage{csvsimple}
\usepackage{graphicx}
\begin{document}
\setlength\unitlength{1cm}
\csvreader[head to column names]{\jobname.csv}{}{%
\vfill
\artist
\ifcsvstrequal{\filenameone}{}{(no first image)}{%
\includegraphics[height=37mm]{\filenameone}
}
\ifcsvstrequal{\filenametwo}{}{(no second image)}{%
\includegraphics[height=37mm]{\filenametwo}
}
\comment
}
\end{document}