为 exsheets 问题添加标题的可维护方法?

为 exsheets 问题添加标题的可维护方法?

我已经开始使用 cgnieder 的出色exsheets软件包来处理我的问题集,但它似乎缺少一个有价值的功能:练习标题。对我来说,后者特别有用,因为

  • 他们可以提供关于该练习的简洁(尽管有些隐晦)的描述;并且
  • 有趣/有趣的标题可以有效激发学生的兴趣。

理想情况下,带有标题的练习应该是这样的:

在此处输入图片描述

但是,exsheets似乎没有提供开箱即用的标题功能:没有title为环境定义(或类似)键question。到目前为止,我的解决方法是

  1. 本地切换headings选项为runin
  2. 在环境开始时手动排版练习的标题question
  3. 添加换行符。

但是,从可维护性的角度来看,这种方法并不是很令人满意。

\documentclass{article}

\usepackage[english]{babel}
\usepackage{exsheets}
\usepackage{kantlipsum}

\begin{document}

\SetupExSheets{headings=runin}
\begin{question}
\textbf{Fermat's last theorem}\\
\kant[1]
\end{question}

\end{document}

我非常希望有一个title选择。在我开始分析exhseets.sty并希望找到解决方案之前...

  • 我是否遗漏了文档中显而易见的内容?这是 RTFM 案例吗?
  • 如果没有,我该如何title为 exsheetsquestion环境创建一个可以完成这项工作的密钥?

答案1

编辑2015/05/16:

exsheets问题有一个subtitle选项(自 v0.10 起,2013/10/11)。要使用它,需要激活使用字幕的标题实例:

\documentclass{article}

\usepackage{exsheets}
\SetupExSheets{
  headings = block-subtitle ,
  subtitle-format = \bfseries % default is \itshape
}
\usepackage{kantlipsum}

\begin{document}

\begin{question}[subtitle=Fermat's last theorem]
  \kant[1]
\end{question}

\begin{question}
  \kant[2]
\end{question}

\begin{question}[subtitle=L'H\^opital's rule]
  \kant[3]
\end{question}

\end{document}

原始答案:

你可以使用两样东西:

  1. exsheets标题是通过xtemplate包。它们有很多钩子,可用于自定义它们。这里你需要钩子number-post-code
  2. 环境选项question在模块exsheets/question中用进行设置l3keys。可轻松添加新选项。

在此处输入图片描述

以下是示例的完整代码。我尝试添加注释来解释发生了什么:

\documentclass{article}

\usepackage[english]{babel}
\usepackage{exsheets}

\ExplSyntaxOn
% new tokenlist variable:
\tl_new:N \l_exsheets_question_title_extra_tl

% new key that sets this variable:
\keys_define:nn { exsheets / question }
  { title .tl_set:N = \l_exsheets_question_title_extra_tl }

% extend the `block' instance to place the extra title part
% after the title number; we use the hook `number-post-code`
% for this:
\DeclareInstance{exsheets-heading}{block-extended}{default}{
  join = { title[r,B]number[l,B](1ex,0pt) } ,
  attach = {
    main[l,vc]title[l,vc](0pt,0pt) ;
    main[r,vc]points[l,vc](\marginparsep,0pt)
  } ,
  number-post-code = {
    \tl_use:N \c_space_tl
    \tl_use:N \l__exsheets_heading_title_user_format_tl
    \tl_use:N \l_exsheets_question_title_extra_tl
  }
}
\ExplSyntaxOff

% use the new instance:
\SetupExSheets{headings=block-extended}

\usepackage{kantlipsum}

\begin{document}

\begin{question}[title=Fermat's last theorem]
  \kant[1]
\end{question}

\begin{question}
  \kant[2]
\end{question}

\begin{question}[title=L'H\^opital's rule]
  \kant[3]
\end{question}

\end{document}

相关内容