在 csv 范围内使用 \def

在 csv 范围内使用 \def

我想在 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

相关内容