xsim 中是否有一个命令可以将 \blank 中的每个单词分隔为几行?

xsim 中是否有一个命令可以将 \blank 中的每个单词分隔为几行?

我想打印一个带有的xsim完形填空,但我不想用一行来表示间隙,而是想要一行来表示必须有多少个单词。

当然可以,只要给每个单词留一个空格就可以了,

\blank{more} \blank{than} \blank{one} \blank{word}

但我更希望有一个

\blank*{more than one word}

达到同样的效果。

我仍然想使用正常\blank命令,所以它应该是一个额外的注释,而不是对现有的重写。

有任何想法吗?

答案1

以下是自定义命令的想法:

\documentclass{article}

\usepackage{xsim}

\ExplSyntaxOn
\seq_new:N \l_acep_words_seq
\seq_new:N \l_acep_blank_words_seq

\cs_new_protected:Npn \acep_blank_words:n #1
  {
    \seq_set_split:Nnn \l_acep_words_seq {~} {#1}
    \seq_set_map:NNn \l_acep_blank_words_seq \l_acep_words_seq
      { \xsim_blank:n {##1} }
    \seq_use:Nn \l_acep_blank_words_seq {~}
  }

\NewDocumentCommand \blankwords {m}
  { \acep_blank_words:n {#1} }
\ExplSyntaxOff

\begin{document}

more than one blank word

\blankwords{more than one blank word}

\end{document}

在此处输入图片描述

相关内容