我想在 csvsimple-l3 范围选项中使用预定义的数字列表。
MWE 会更好地解释:
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{csvsimple-l3}
\begin{document}
\def\auswahl{1,3}
\begin{filecontents*}[overwrite]{\jobname.csv}
Line 1
Line 2
Line 3
\end{filecontents*}
\csvreader[range=\auswahl,after line=\\]{\jobname.csv}{}{\csvcoli }
\end{document}
结果是
,32号线
因此它读取了第 2 行,但没有读取第 3 行。我尝试了不同的定义命令,但到目前为止没有任何效果。
有人能帮忙吗?谢谢
答案1
吸收 的值时,不会扩展任何宏range
。
您可以为自己定义一个执行扩展的新键(尽管这使用了私有函数,因此有点牵强)。
\begin{filecontents*}[overwrite]{\jobname.csv}
Line 1
Line 2
Line 3
\end{filecontents*}
\documentclass[11pt]{article}
%\usepackage[utf8]{inputenc}
\usepackage{csvsimple-l3}
\ExplSyntaxOn
\keys_define:nn { csvsim }
{
range-exp .code:n =
{
\__csvsim_set_range:e { #1 }
},
}
\cs_generate_variant:Nn \__csvsim_set_range:n { e }
\ExplSyntaxOff
\setlength{\parindent}{0pt} % just for the example
\def\auswahl{1,3}
\begin{document}
\subsection*{All}
\csvreader[head=false,after line=\par]{\jobname.csv}{}{\csvcoli}
\subsection*{Range}
\csvreader[head=false,range={1,3},after line=\par]{\jobname.csv}{}{\csvcoli}
\subsection*{Implicit range}
\csvreader[head=false,range-exp=\auswahl,after line=\par]{\jobname.csv}{}{\csvcoli}
\end{document}
我认为你应该要求作者增加一个新功能。实际上,我看到了总是对 的值进行扩展range
。