我正在编写练习及其详细答案,我想重置每个练习之间的公式编号。这可能吗?如果可以,该怎么做?我在手册或 wiki 上找不到类似的东西……
编辑2
我知道我可以使用该bysection
选项,但重点是我不使用部分来标记练习标题:我已经将它们用于课程本身。我的文档结构如下(我大量使用条件处理来创建仅包含问题、问题和答案、提示、有或没有课程等的文档...)
我终于有时间发布一个合适的 MWE。我在一个单独的目录中对其进行了测试。
\enablemode[lesson]
\starttext
%% The lesson itself
\startmode[lesson]
\section{Bla}
...
\stopmode
%% The exercises
\def\exs{
\exercisepath[/home/adrien/dev/test] %% to be adapted
\inputexercise[exercise_file]
\inputexercise[exercise_file2]
}
\hairline
\enablemode[exercise]
\exs
\disablemode[exercise]
\hairline
\enablemode[answers]
\exs
\disablemode[answers]
\stoptext
每个文件均exercise_file
具有以下结构:
\exercisetitle[The title]
\startmode[exercise]
questions
\stopmode
\startmode[answers]
detailed answers
\placeformula[eq:test]
\startformula
a = b
\stopformula
The eq is \eqref[eq:test]
\stopmode
个人命令如下(在环境文件中定义,可以粘贴在starttext
测试目的之前):
%% eq ref
\definereferenceformat[eqref][left={$(},right={)$}]
%% manage the exercise files directories
\unprotect
\def\exercisepath[#1]{
\gdef\@exercisepath{#1}
\setupexternalfigures[directory={#1}]
}
\def\inputexercise[#1]{
\ReadFile{\@exercisepath/#1}\flushsidefloats
}
\protect
%% format the exercise title with a possible precision (eg the difficulty)
\def\doExercisetitle[#1][#2]{
\blank\noindenting
{\hskip 1cm \bs #1
\ifsecondargument \\ \tf \it [#2] \fi
}
\blank[small,samepage]
}
\def\exercisetitle{\dodoubleempty\doExercisetitle}
我希望每个练习文件在公式编号方面都是“独立的”。这可能吗?
答案1
简单的方法是使用\resetcounter
命令重置给定计数器的值,例如\resetcounter[formula]
重置formula
数字。
\usemodule[visual]
\setuppapersize[A5]
\startbuffer[formula]
\startplaceformula
\startformula
\fakeformula
\stopformula
\stopplaceformula
\stopbuffer
\starttext
\dorecurse{3}{\getbuffer[formula]}
\blank[2*line] \resetcounter[formula]
\dorecurse{3}{\getbuffer[formula]}
\stoptext
更好的解决方案是section
为练习创建一个新的,并formula
在每次练习开始时重置计数器。要在每个新练习时重置计数器,请将部分的名称作为参数传递给way
中的键\setupformula
。
\usemodule[visual]
\setuppapersize[A5]
\definehspace [exercise] [1cm]
\definehead [exercisetitle] [subject]
\define[2]\ExerciseTitleCommand
{\vbox\bgroup
\dontleavehmode\hspace[exercise]\structuretitle
\doifsomething{\structureuservariable{subtitle}}
{\par{\tf\it[\structureuservariable{subtitle}]}}%
\egroup}
\setuphead
[exercisetitle]
[command=\ExerciseTitleCommand,
style=boldslanted]
\startbuffer[formula]
\startplaceformula
\startformula
\fakeformula
\stopformula
\stopplaceformula
\stopbuffer
% \setupformula
% [way=bysection]
\setupformula
[way=byexercisetitle]
\starttext
\startexercisetitle [title={First exercise}]
\dorecurse{3}{\getbuffer[formula]}
\stopexercisetitle
\startexercisetitle [title={Second exercise}] [subtitle={Counter reset}]
\dorecurse{3}{\getbuffer[formula]}
\stopexercisetitle
\stoptext