在宏中使用 \numlist

在宏中使用 \numlist

我正在写考试题目。其中一些题目应该在方格纸上作答,所以我写了一个宏,以便 (a) 节省时间,避免多次重复输入相同的说明,以及 (b) 确保使用一致的措辞给出说明。几个月前更新我的 LaTeX 安装后,我发现这个宏不再按预期运行。有人能帮忙吗?我怀疑这siunitx可能是(至少部分)原因,但我真的不知道从哪里开始。

ETA:预期输出为Answer parts (i), (ii) and (iii) of this question on the graph paper provided.

平均能量损失

\documentclass[a4paper,twoside,addpoints,12pt]{exam}

\usepackage{etextools}
\usepackage{xstring}
\usepackage{siunitx}

\newcommand{\usegraphpaper}[1]{
    \textbf{Answer part\IfSubStr{#1}{;}{s}{} (\expandnext{\numlist[list-separator = {), (},list-final-separator = {) and (},list-pair-separator = {) and (},parse-numbers = false]}{\text{#1}}) of this question on the graph paper provided.} % Erroneous output

    \expandnext{\numlist[parse-numbers = false]}{#1} % Included to show what should appear between the parentheses
}

\begin{document}
    \usegraphpaper{i;ii;iii}

    \usegraphpaper{1;2;3}
\end{document}

答案1

\expandnext对 不会产生任何作用\numlist,因为扩展后 不起作用。

我尝试了 TeX Live 上从 2012 年到现在的代码,但从未得到想要的输出。

这是可用版本。请记住,它对etextools其他软件包和 LaTeX 内核一直不太友好,因此不鼓励使用它。

\documentclass[a4paper,twoside,addpoints,12pt]{exam}
\usepackage{siunitx}

\ExplSyntaxOn

\NewDocumentCommand{\usegraphpaper}{m}
  {
    \justint_graphpaper_prologue:n { #1 }
  }

\seq_new:N \l__justint_graphpaper_items_seq
\seq_new:N \l__justint_graphpaper_items_paren_seq

\cs_new_protected:Nn \justint_graphpaper_prologue:n
  {
    \seq_set_split:Nnn \l__justint_graphpaper_items_seq { ; } { #1 }
    \textbf
      {
       Answer~part
       \int_compare:nT { \seq_count:N \l__justint_graphpaper_items_seq > 1 } { s }
       \  % space
       \seq_set_map:NNn
         \l__justint_graphpaper_items_paren_seq % new seq
         \l__justint_graphpaper_items_seq % old seq
         { (##1) } % parenthesize items
       \seq_use:Nnnn \l__justint_graphpaper_items_paren_seq
         {~and~} % between two
         {,~} % between more than two
         {~and~} % between last two
       \  % space
       of~this~question~on~the~graph~paper~provided.
     }
  } % Erroneous output

\ExplSyntaxOff

\begin{document}

\usegraphpaper{i;ii;iii}

\usegraphpaper{1;2;3}

\usegraphpaper{4;5}

\usegraphpaper{6}

\end{document}

在此处输入图片描述

相关内容