diff options
Diffstat (limited to 'macros/xetex/latex/exam-zh/tex/exam-zh-question.sty')
-rw-r--r-- | macros/xetex/latex/exam-zh/tex/exam-zh-question.sty | 54 |
1 files changed, 36 insertions, 18 deletions
diff --git a/macros/xetex/latex/exam-zh/tex/exam-zh-question.sty b/macros/xetex/latex/exam-zh/tex/exam-zh-question.sty index 6e612c19aa..d1a07de8ad 100644 --- a/macros/xetex/latex/exam-zh/tex/exam-zh-question.sty +++ b/macros/xetex/latex/exam-zh/tex/exam-zh-question.sty @@ -9,7 +9,7 @@ \RequirePackage{expl3} \RequirePackage{xparse} -\ProvidesExplPackage {exam-zh-question} {2022-08-11} {v0.1.16} +\ProvidesExplPackage {exam-zh-question} {2022-08-12} {v0.1.17} {exam-zh question module} @@ -120,7 +120,8 @@ combine-fillin-args .tl_set:N = \l__examzh_question_combine_fillin_args_tl, label-align .choices:nn = { left, center, right } - { \tl_set_eq:NN \l__examzh_question_label_align_tl \l_keys_choice_tl } + { \tl_set_eq:NN \l__examzh_question_label_align_tl \l_keys_choice_tl }, + hang .bool_set:N = \l__examzh_question_hang_bool, } \keys_set:nn { exam-zh / question } @@ -134,7 +135,8 @@ bottom-sep = .25em plus .25em minus .1em , label = \arabic*., combine-fillin = false, - label-align = right + label-align = right, + hang = true } @@ -221,10 +223,10 @@ { % 用 group 是为了防止 combine-fillin 的 type 影响了环境里面的 fillin 的type \group_begin: - \dim_gset:Nn \topsep { 0pt } - \dim_gset:Nn \partopsep { 0pt } - \dim_gset:Nn \itemsep { 0pt } - \dim_gset:Nn \parsep { 0pt } + \dim_gset:Nn \topsep { 0pt } + \dim_gset:Nn \partopsep { 0pt } + \dim_gset:Nn \itemsep { 0pt } + \dim_gset:Nn \parsep { 0pt } % \group_begin: % 上面 \fillin 里面的设置是局部的,这样的问题是 question 的可选参数改 type 的时候不会影响 \l__examzh_fillin_type_str 的值 % 所以要把 \l__examzh_question_combine_fillin_args_tl 里关于 type 的选取出来 @@ -237,8 +239,20 @@ \bool_if:NTF \l__examzh_question_combine_fillin_bool { % 如果 combine 的话就和 question 一样的缩进 - \dim_gset:Nn \leftmargin { 6em } - \dim_gset:Nn \itemindent { 0pt } + \bool_if:NTF \l__examzh_question_hang_bool + { \dim_gset:Nn \itemindent { 0em } } + { \dim_gset:Nn \itemindent { 2em } } + \bool_if:NTF \l__examzh_question_combine_fillin_bool + { + \bool_if:NTF \l__examzh_question_hang_bool + { \dim_gset:Nn \leftmargin { 6em } } + { \dim_gset:Nn \leftmargin { 4em } } + } + { + \bool_if:NTF \l__examzh_question_hang_bool + { \dim_gset:Nn \leftmargin { 2em } } + { \dim_gset:Nn \leftmargin { 0em } } + } } { \dim_gset:Nn \leftmargin { 0pt } @@ -247,16 +261,20 @@ } { % 选择和填空题是悬挂效果 + \bool_if:NTF \l__examzh_question_hang_bool + { \dim_gset:Nn \itemindent { 0em } } + { \dim_gset:Nn \itemindent { 2em } } \bool_if:NTF \l__examzh_question_combine_fillin_bool - % { - % \str_case:VnF \l__examzh_question_label_align_tl - % { - % { left } { \dim_set:Nn \leftmargin { 8em } } - % } + { + \bool_if:NTF \l__examzh_question_hang_bool { \dim_gset:Nn \leftmargin { 6em } } - % } - { \dim_gset:Nn \leftmargin { 2em } } - \dim_set:Nn \itemindent { 0pt } + { \dim_gset:Nn \leftmargin { 4em } } + } + { + \bool_if:NTF \l__examzh_question_hang_bool + { \dim_gset:Nn \leftmargin { 2em } } + { \dim_gset:Nn \leftmargin { 0em } } + } } \dim_gset_eq:NN \listparindent \itemindent \group_end: @@ -1157,7 +1175,7 @@ { \dim_set_eq:NN \l_tmpb_dim \linegoal % 比较 \l__examzh_fillin_F_width_dim 和 linegoal - \dim_compare:nNnTF { \l__examzh_fillin_F_width_dim } > { \linegoal } + \dim_compare:nNnTF { \l__examzh_fillin_F_width_dim } > { \l_tmpb_dim } { % 超过 linegoal 就排一段 linegoal,然后 \l__examzh_fillin_F_width_dim 减去 linegoal 长度 % \dim_set:NV \l_tmpa_dim \linegoal |