30 tabularray包可以实现可变列数的表格吗?

发布于 2022-08-11 19:37:44

希望实现的功能:
1,一个命令 choiceTable{m}{foo}, 参数是个正整数,代表选择题个数
2,输出一个表格,第一行是:题号 & 1 & 2 & ....., 第二行是:答案 & & & ....

tblr看了文档,好像expand=这个参数可以用,文档里面也给了例子,但是例子里面没有变量, 想用l3里面 int_step_inline:nn 但是实现不了....

求助一下大佬,谢谢

查看更多

关注者
0
被浏览
1.1k
雾月
雾月 2022-08-11
这家伙很懒,什么也没写!

\int_step_inline:nn 不能被完全展开,而且 expand 选项只会展开一次,只能使用类似 \int_step_inline:nn {} { \tl_put_right:Nn ... } 的方式将内容存入宏中,然后再在 tblr 中展开这个宏。

\documentclass{ctexart}
\usepackage{tabularray}

\ExplSyntaxOn
% \tl_new:N \l__my_choice_colspec_tl % colspec 选项可要可不要
\tl_new:N \l__my_choice_content_tl
\NewDocumentCommand \choiceTable { +O{} O{1} m m } % tblr options, first num, last num, ...
  {
    % \tl_set:Nx \l__my_choice_colspec_tl { \prg_replicate:nn { #3-#2+2 } { l } } % colspec 选项
    \tl_clear:N \l__my_choice_content_tl
    \tl_put_right:Nn \l__my_choice_content_tl { 题号 }
    \int_step_inline:nnnn {#2} { 1 } {#3}
      { \tl_put_right:Nn \l__my_choice_content_tl { & ##1 } }
    \tl_put_right:Nn \l__my_choice_content_tl { \\ 答案 }
    \tl_put_right:Nx \l__my_choice_content_tl
      { \prg_replicate:nn { #3 - #2 } { & } } % 第二行的 & & & ...
    % \tl_put_right:Nn \l__my_choice_content_tl { \\ } % 最后一个 \\ 可要可不要
    \begin{tblr} [ expand = \l__my_choice_content_tl ] {#1}
      \l__my_choice_content_tl 
    \end{tblr}
  }
\ExplSyntaxOff


\begin{document}

\choiceTable[hlines,vlines]{5}{}

\choiceTable[hlines,vlines][6]{10}{}

\end{document}

image.png

当然,这个实现并不能自动换行,但是也不难实现,只要在适当位置插入 \\ 等内容即可。

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览