![为 exsheets 问题添加标题的可维护方法?](https://linux22.com/image/276125/%E4%B8%BA%20exsheets%20%E9%97%AE%E9%A2%98%E6%B7%BB%E5%8A%A0%E6%A0%87%E9%A2%98%E7%9A%84%E5%8F%AF%E7%BB%B4%E6%8A%A4%E6%96%B9%E6%B3%95%EF%BC%9F.png)
我已经开始使用 cgnieder 的出色exsheets
软件包来处理我的问题集,但它似乎缺少一个有价值的功能:练习标题。对我来说,后者特别有用,因为
- 他们可以提供关于该练习的简洁(尽管有些隐晦)的描述;并且
- 有趣/有趣的标题可以有效激发学生的兴趣。
理想情况下,带有标题的练习应该是这样的:
但是,exsheets
似乎没有提供开箱即用的标题功能:没有title
为环境定义(或类似)键question
。到目前为止,我的解决方法是
- 本地切换
headings
选项为runin
, - 在环境开始时手动排版练习的标题
question
, - 添加换行符。
但是,从可维护性的角度来看,这种方法并不是很令人满意。
\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}
原始答案:
你可以使用两样东西:
exsheets
标题是通过xtemplate
包。它们有很多钩子,可用于自定义它们。这里你需要钩子number-post-code
。- 环境选项
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}