跳到主要内容

章 3.13 · 篇 II · 工艺

配置:练习

练习样式(exerciseStyles)和全书的练习设置(exercises):题号的样子、题目要求的字体、选项的序号和勾选记号、填空处、判断题的答案、连线、词库、书写区、方格、竖式除法、难度记号、图标、答案的颜色、答案印在哪里、教师用书和屏幕版本

更新于 2026-10-2412分钟所属章节: 3 配置enescadefritptzhjaar

简单来说

本页列出控制练习外观的所有设置。练习样式决定题号怎样印、选项怎样标序号、待填的空是什么样子、书写区画什么格线,以及方格和竖式怎样画。全书设置决定答案印在哪里,以及这本书是学生用书还是教师用书。全书设置还决定读者怎样在屏幕上作答。练习本身怎样写,见“练习”一页。

#练习样式

exerciseStyles属性声明一组具名样式,练习用:::exercise{style="…"}选用。一种样式是一类练习的形式;题目和答案仍然写在Markdown里(见练习)。默认自带一种样式exercise,所以不做任何配置也能使用这个块;一旦声明exerciseStyles,就会替换它,声明的第一种样式就是没写style的练习所用的样式。所有字段都是可选的;在各国学校习惯不同的地方,默认值随文档语言而定:选项的序号、判断题的两个符号、除法竖式的排法、印出的文字。

const config: PostextConfig = {
  exerciseStyles: [
    {
      id: 'activity',
      box: 'activity-frame',
      number: { shape: 'disc', background: { hex: '#2a5ea8', model: 'hex' } },
      instruction: { fontFamily: 'Noto Sans SC' },
      options: { marker: 'circle' },
      blank: { look: 'dots', width: 'answer' },
      area: { kind: 'tianzige', lines: 4 },
      level: { glyph: '★', empty: '☆' },
      icons: { pair: { glyph: '👥' } },
    },
    { id: 'quiz', extends: 'activity', options: { layout: 'row', columns: 4 } },
  ],
};
属性类型默认值说明
idstring—由:::exercise{style="…"}选用的标识符。未知的id改用第一种样式,并会被报告(exerciseUnknownStyle)。
namestringid便于阅读的名称(仅用于编辑器界面)。
extendsstring—作为基础的另一种样式的id。各组设置(number、options、blank……)逐个字段合并,icons按id合并。
boxstring—练习外框所用的calloutStyles中的id:底色、边框、色条、内边距、放置、拆分。未设置时,练习排在正文里,不加框,并保持在同一页上。
numberobject—题号怎样印。见编号。
instructionobject—题目要求的字体。见题目要求。
optionsobject—选择题的选项。见选项。
blankobject—[[…]]怎样印。见填空处。
trueFalseobject—判断题的答案。见判断。
matchobject—要连线的两栏。见连线。
bankobject—词库。见词库。
areaobject—书写区。见书写区。
gridobject—找词游戏、填字游戏和竖式的格子。见方格。
arithmeticobject—竖式计算。见竖式。
levelobject—难度记号。见难度。
iconsRecord<string, ExerciseIcon>{}按id列出的活动图标,由起始行的icon指定。见图标。
answersobject—答案在教师用书、示范题和解答中怎样印。见答案。
solutionsExerciseSolutionsConfig—用于本样式练习的全书exercises.solutions:只改这里设了的字段。
digitalobject—屏幕版本的颜色。见屏幕上的颜色。
marginTopDimension1em没有box的练习上方的空白。
marginBottomDimension1em没有box的练习下方的空白。
itemSpacingDimension0.25em两个项之间的空白:选项、小题、判断句、配对。

#编号

number设定练习的题号。不带形状的题号用粗体、主色,后面跟一个句点;带形状的题号是主色的圆形、方形或圆角方形里的白色数字,后面不加符号。

属性类型默认值说明
showbooleantrue是否印出题号。不印时照样计数。
labelboolean | stringfalse题号前的词:true取文档语言的词(中文为“练习”,英文为Exercise,西班牙文为Ejercicio,德文为Übung,日文为“練習”,阿拉伯文为تمرين……),字符串就是这个词本身('活动')。
shape'none' | 'disc' | 'square' | 'rounded''none'题号所在的形状。
colorColorValue有形状时为白色,否则为主色题号的颜色。
backgroundColorValue主色形状的填色。
fontFamilystring周围文字的字体题号的字体族。
fontSizeDimension1em题号的字号,em以题目要求的字号为准。
fontWeightnumber700600及以上排成粗体。
suffixstring'.',有形状时不加印在不带形状的题号及其前面的词之后:'.'、')'、'、'。
templatestring'{n}'题号的内容:{n}是练习的计数,{h1}和{h2}是章和节的编号('{h1}.{n}'印出3.4)。
resetOn'never' | 'h1' … 'h6''h1'在哪一级标题处重新计数;'never'表示全书连续计数。
counterstring'exercise'本样式推进的计数器。指定同一个计数器的样式共用它;有自己计数器的样式('review')单独给它的练习编号。
formatResourceCounterFormat'decimal'{n}的数字写法,与资源计数器相同:'roman-upper'、'alpha-lower'、'simp-chinese-informal'(一、二)、'circled-decimal'(①、②)、'arabic-indic'……中文试卷的大题号“一、二、”用'simp-chinese-informal'加上suffix: '、'。

#题目要求

instruction设定练习开头的段落。未设置的字段取正文的设置。

属性类型默认值说明
boldbooleantrue把题目要求排成粗体。
italicbooleanfalse排成斜体。
colorColorValue正文的颜色它的颜色,包括其中的粗体文字。
fontFamilystring正文的字体它的字体族:正文用宋体、题目要求用黑体,是课本里常见的搭配。
fontSizeDimension正文的字号它的字号。

#选项

options设定选择题(- [ ] …)的选项。

属性类型默认值说明
labelsResourceCounterFormat | 'none'随语言而定选项怎样编序号:中文用'alpha-upper'(A、B、C),英文等语言用'alpha-lower'(a、b、c),日文用'katakana'(ア、イ、ウ),阿拉伯文用'abjad'(أ、ب、ج)。也可以用'decimal'、'katakana-iroha'、'circled-decimal'……'none'不印序号。
prefixstring''印在序号前:'('得到(a)。
suffixstring中文为'.';其他语言为')',日文不加印在序号后。
marker'none' | 'box' | 'circle''none'每个选项前供勾选的方框或圆圈。设为'none'时,读者圈出序号。
layout'stack' | 'row''stack''stack':每行一个选项,转行的文字悬挂在选项文字下面。'row':选项并排。起始行的columns=n也会让选项按行排。
columnsnumber全部'row'版式中每行的选项数(最多6个)。
shufflebooleanfalse打乱选项的顺序,各种输出和答案表中的顺序都一样。
indentDimension1em没有题干的题目中,选项距文字边缘的缩进。
bracketbooleanfalse在每个小题题干的末尾加一对括号( ),让学生填写字母,中文和日文试卷就是这样印的。教师用书把字母写在括号里。

#填空处

blank设定学生用书中[[…]]怎样印:留出与答案一样大的位置,画一条横线、一行点或一个方框,答案本身不印。

属性类型默认值说明
look'line' | 'dots' | 'box' | 'none''line'供书写的横线、点线、方框,或者只留空白。
width'answer' | 'longest' | Dimension'longest''longest':本练习的每个空都和最长的答案一样宽,任何一个空都不会泄露答案。'answer':每个空和自己的答案一样宽。一个长度:所有空都用这个宽度。空自身的{width=N}优先于它。
extraDimension1.5em在答案宽度上增加的空白,以整em计。
minWidthDimension3em最窄的空的宽度。
colorColorValue黑色横线、点或方框的颜色。设置后,它也用于供勾选的方框和圆圈,以及词库中各词的框,这些在未设置时用主色。
weightDimension0.6pt横线的粗细。

#判断

trueFalse设定判断句末尾的答案。

属性类型默认值说明
labels[string, string]随语言而定两个答案:中文为√ ×;英文为['T', 'F'];西班牙文、加泰罗尼亚文、法文、意大利文和葡萄牙文为V F;德文为R F;日文为○ ×;阿拉伯文为صح خطأ。
look'boxes' | 'bracket''boxes''boxes':每个符号带一个供勾选的方框,排在行末。'bracket':只留一个空,让学生写答案。

#连线

match设定配对练习。

属性类型默认值说明
look'dots' | 'letters''dots''dots':两栏,每一项旁边有一个圆点,供连线。'letters':右栏标上字母,左栏每一项旁边留一个填字母的空。
gapDimension4em两栏之间的距离。
dotSizeDimension0.35em圆点的直径。
colorColorValue主色圆点的颜色,也是词库框的颜色。

#词库

bank设定词库框,用于带bank或::bank[…]的填空题和所有分类题。写了::bank这一行时,框印在该行的位置;没写时印在题目要求下面。

属性类型默认值说明
boxstring连线颜色的边框词库框所用的calloutStyles中的id。
order'shuffle' | 'alpha' | 'written''shuffle'词语打乱顺序(用固定的随机种子)、按文档语言的字母顺序排列,或按书写顺序。
separatorstring一个全角空格两个词之间的分隔。每个词排在一个带细边框的行内标签里。

#书写区

area设定问答题下面、连词成句的句子下面和分类题各栏里的书写空间。

属性类型默认值说明
kind'lines' | 'dots' | 'grid' | 'seyes' | 'tianzige' | 'box' | 'none''lines'横线、一行行的点、方格纸、法国的Seyès格线、田字格、空框,或者空白。起始行的area优先于它。
linesnumber3有几行高。起始行的lines优先于它。
spacingDimension正文行高的1.35倍(方格为1.2倍)两行之间的距离。
colorColorValue浅灰色格线的颜色。
weightDimension0.5pt格线的粗细。

#方格

grid设定找词游戏、填字游戏和竖式的格子。

属性类型默认值说明
cellDimension1.6em格子的边长。
fontFamilystring正文的字体字母、汉字和数字的字体族。
fontSizeDimension格子边长的0.58格中文字和数字的大小,em以正文为准。
colorColorValue正文的颜色字母、汉字和数字的颜色。
ruleColorValue中灰色格子线的颜色。
ruleWidthDimension0.6pt格子线的粗细。
blockedColorValue—填字游戏中没有词占用的格子的填充色。不设时,只印出各个词的格子。
uppercasebooleantrue按文档语言的大小写规则,把找词游戏和填字游戏中的字母排成大写。汉字不受影响。

#竖式

arithmetic设定竖式计算。

属性类型默认值说明
division'bracket' | 'potence' | 'inline'随语言而定除法竖式。'bracket':除数在被除数左边,被除数上面是“厂”字形的除号,商写在最上方(中文、英文、日文、阿拉伯文,以及没有自己排法的语言)。'potence':除数在被除数右边的L形线下,商写在除数下面(西班牙文、加泰罗尼亚文、法文、意大利文、葡萄牙文)。'inline':864 : 4 =,商写在同一行,计算步骤写在下面(德文)。
columnsnumber4每行的算式数,栏太窄时减少。

#难度

level设定起始行的level在题号后印出的记号,字号较小。

属性类型默认值说明
glyphstring'●'达到的级别:'★'、'■'。
emptystring'○'未达到的级别;''表示不印。
maxnumber3最高级别:level=2配合max: 3印出●●○。
colorColorValue主色记号的颜色。

#图标

icons把id对应到一个活动图标(口头、书面、同桌合作、听力、计算器),起始行写了它时印在题号后面:icon="pair"。

属性类型默认值说明
glyphstring—要印的字符:'✎'、'🎧',或图标字体中的一个字形。
fontFamilystring—图标字体的字体族。
colorColorValue—图标的颜色。
resourceIdstring—用作图标的位图或SVG资源。
altstring—图标的含义,供读屏软件和带标签的PDF使用。
sizenumber0.75图标高度,以题干的 em 计;默认为一个大写字母的高度。

图标作为行内符号印在题号之后:若resourceId指定了资源,就印该图片,否则用fontFamily和color(未设时用正文颜色)印glyph。图标立在题干的基线上,高size个 em,屏幕阅读器在原处读出它的alt。

#答案

answers设定答案出现时的样子:教师用书、example练习中的示范题、圈和涂满的方框、配对之间画的线、格子里的字母和数字。

属性类型默认值说明
colorColorValue#d6246e,品红答案的颜色,就像教师用书套印的那样。
fontFamilystring正文的字体答案的字体:常用手写体。
italicbooleanfalse把空里的答案排成斜体。

#屏幕上的颜色

digital设定HTML阅读器和EPUB电子书怎样显示核对过的答案。

属性类型默认值说明
correctColorColorValue绿色(#1e8e3e)答对的答案。
wrongColorColorValue红色(#c5221f)答错的答案。

#全书设置

exercises属性保存整本书的设置:版本、答案印在哪里、所有打乱顺序所用的随机种子,以及屏幕版本。既没有设exercises也没有设exerciseStyles的书,排版结果和哈希值都与以前相同。

const config: PostextConfig = {
  exercises: {
    edition: 'student',
    solutions: { placement: 'chapterEnd', layout: 'key' },
    seed: 3,
    digital: { check: 'instant' },
  },
};
属性类型默认值说明
edition'student' | 'teacher''student''teacher'用answers的颜色把每个答案印在它的位置上:由学生用书的文字得到教师用书。
solutionsExerciseSolutionsConfig—答案印在哪里、怎样印。见参考答案。
seednumber1所有打乱顺序的依据:选项、右栏、排序项、连词成句的词块、词库、找词方阵中的填充字。修改它可以得到同一份试卷的另一个版本;印刷版、屏幕版和答案表始终一致。
digitalobject—HTML阅读器和EPUB电子书。见屏幕版本。

#参考答案

exercises.solutions,以及样式中对本样式练习生效的solutions。

属性类型默认值说明
placement'none' | 'after' | 'inverted' | 'chapterEnd' | 'directive''none''none':印刷版不印答案。'after':印在每道练习后面,字号较小。'inverted':印在每道练习后面,倒过来印。'chapterEnd':印在章末,放在heading下面。'directive':印在:::solutions那一行所在的位置。
boxstring小字号的无框框答案框所用的calloutStyles中的id,也用于一章答案的列表。
headingstring文档语言的词章末答案的标题:中文为“参考答案”,其他语言为Solutions、Soluciones、Solucions、Corrigés、Lösungen、Soluzioni、Gabarito、解答、الحلول。:::solutions{title="…"}一行可以另设标题。
layout'key' | 'full''full''key':只印答案(1 B · 2 水分)。'full':先印答案,再印这道练习的:::solution。

#屏幕版本

exercises.digital设定练习在HTML阅读器和EPUB电子书中的行为。

属性类型默认值说明
interactivebooleantrue读者可以作答的练习。false按印刷版的样子显示。
persistbooleantrue把读者的答案按书保存在浏览器中。
check'button' | 'instant''button''button':读者要求时才核对答案。'instant':每填一个答案就立即核对。

屏幕版本可以有自己的练习设置:htmlViewer.overrides也接受exercises和exerciseStyles,在HTML阅读器排版之前合并到书的设置上。这样,印刷版可以把答案放在章末,屏幕上则隐藏答案;屏幕版也可以去掉读者用不上的书写区。

const config: PostextConfig = {
  htmlViewer: {
    overrides: {
      exercises: { solutions: { placement: 'none' } },
      exerciseStyles: [{ id: 'exercise', area: { kind: 'none' }, blank: { minWidth: { value: 6, unit: 'em' } } }],
    },
  },
};