学习用l3重写选择题选项功能

文章链接:

学习用l3重写选择题选项功能

折腾新东西,学习用LaTeX3,重写了选择题选项拍版功能

老的代码用ifthen是从人教社论坛上抄来的,在学习新东西的过程中,通过实例来加深理解

代码如下

%!TEX program = xelatex
%!TEX endoding = UTF-8 (utf8)
\documentclass{article}
\usepackage{expl3}
\usepackage{ctex}
\ExplSyntaxOn
\cs_new_protected:Npn \__zljxx: #1#2#3#4{
  \par\hspace{2em}
  %把四个选项加上ABCD标签放进四个选项盒子
    \box_clear_new:N \l__choiceA_box
    \box_clear_new:N \l__choiceB_box
    \box_clear_new:N \l__choiceC_box
    \box_clear_new:N \l__choiceD_box
    \hbox_set:Nn \l__choiceA_box {A.#1\;\;}
    \hbox_set:Nn \l__choiceB_box {B.#2\;\;}
    \hbox_set:Nn \l__choiceC_box {C.#3\;\;}
    \hbox_set:Nn \l__choiceD_box {D.#4\;\;}
  %计算四个选项中最长的那个
  \dim_zero_new:N \l__max_choice_length_d
  \dim_zero_new:N \l__max_length_AB_d
  \dim_zero_new:N \l__max_length_CD_d
  \dim_set:Nn \l__max_length_AB_d {\dim_max:nn {\box_wd:N \l__choiceA_box} {\box_wd:N \l__choiceB_box}}
  \dim_set:Nn \l__max_length_CD_d {\dim_max:nn {\box_wd:N \l__choiceC_box} {\box_wd:N \l__choiceD_box}}
  \dim_set:Nn \l__max_choice_length_d {\dim_max:nn {\dim_use:N \l__max_length_AB_d}{\dim_use:N \l__max_length_CD_d}}
  %比较最长选项与四分之一行长度(一行四个),半行长度(一行两个),一行一个
    \dim_compare:nNnTF {\dim_use:N \l__max_choice_length_d} < {.25\linewidth}
    {%一行四个
        \box_set_wd:Nn \l__choiceA_box {.25\linewidth}
    \box_set_wd:Nn \l__choiceB_box {.25\linewidth}
    \box_set_wd:Nn \l__choiceC_box {.25\linewidth}
    \box_set_wd:Nn \l__choiceD_box {.25\linewidth}
    
    \box_use:N \l__choiceA_box
    \box_use:N \l__choiceB_box
    \box_use:N \l__choiceC_box
    \box_use:N \l__choiceD_box
        
    }
    {
        \dim_compare:nNnTF {\dim_use:N \l__max_choice_length_d} < {.5\linewidth}
        {%一行两个
      \box_set_wd:Nn \l__choiceA_box {.5\linewidth}
      \box_set_wd:Nn \l__choiceB_box {.5\linewidth}
      \box_set_wd:Nn \l__choiceC_box {.5\linewidth}
      \box_set_wd:Nn \l__choiceD_box {.5\linewidth}
      
      \box_use:N \l__choiceA_box
      \box_use:N \l__choiceB_box
      \par\hspace{2em}
      \box_use:N \l__choiceC_box
      \box_use:N \l__choiceD_box
            
        }
        {%一行一个
      \box_set_wd:Nn \l__choiceA_box {.5\linewidth}
      \box_set_wd:Nn \l__choiceB_box {.5\linewidth}
      \box_set_wd:Nn \l__choiceC_box {.5\linewidth}
      \box_set_wd:Nn \l__choiceD_box {.5\linewidth}
      
      \box_use:N \l__choiceA_box
      \par\hspace{2em}
      \box_use:N \l__choiceB_box
      \par\hspace{2em}
      \box_use:N \l__choiceC_box
      \par\hspace{2em}
      \box_use:N \l__choiceD_box
        }
    }
  
}
\cs_set_eq:NN \xx \__zljxx:
\ExplSyntaxOff
\begin{document}
\noindent
题目1:巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉
\xx{选项1}{选项2}{选项3}{选项4}
题目2:巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉
\xx{长长长长的选项}{选项}{长长长长的选项}{长长长长的选项}
题目3:巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉
\xx{特别特别特别特别特别特别长长长长的选项}{选项}{长长长长的选项}{选}
\end{document}

输出效果如下

图片

功能没有新增,还是旧的功能,即自行判断一行写4个2个或者1个选项

另外,学习新东西还有一个好处,体会学习的过程,换位思考就能理解那些对于老师来说简单但是对于学生来说难的题目,同时理解学习的过程,就个人来说,最重要的是简单的实例练习,通过自主练习,能更好的理解所学内容,这也说明了数学学习过程中,做题的重要性

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值