本文へスキップ

章 3.13 · 部 II · 技法

設定:練習問題

練習問題スタイル(exerciseStyles)と本全体の練習問題の設定(exercises):番号のバッジ、指示文の書式、選択肢の記号と印、空欄、正誤の答え、線で結ぶ問題、語群、書き込み欄、マス目、わり算の筆算、難易度の印、アイコン、答えの色、解答を印刷する場所、教師用の版、画面の版

更新日 2026-10-2412分所属する章: 3 設定enescadefritptzhjaar

かんたんな説明

このページでは、練習問題の見た目を決めるすべての設定を挙げます。練習問題スタイルでは、番号の印刷のしかた、選択肢の記号、書き込む空欄の見た目、書き込み欄の罫、マス目と筆算の描き方を決めます。本全体の設定では、解答を印刷する場所と、児童・生徒用の版にするか教師用の版にするかを決めます。読者が画面で問題に答えるときの動きもここで決めます。練習問題そのものの書き方は「練習問題」のページで説明しています。

#練習問題スタイル

exerciseStylesプロパティは、練習問題が:::exercise{style="…"}で選ぶ名前付きスタイルを宣言します。スタイルは練習問題のまとまりの形を決めるもので、問いと答えはMarkdownに残ります(練習問題を参照)。既定ではexerciseというスタイルが1つ用意されているので、何も設定しなくてもブロックは使えます。exerciseStylesを宣言するとこのスタイルは置き換えられ、styleを指定しない練習問題には最初に宣言したスタイルが適用されます。項目はすべて省略でき、選択肢の記号、正誤の記号、わり算の筆算の書き方、印刷する語など、学校の慣習が国によって違うところは文書の言語に合わせた既定値になります。

const config: PostextConfig = {
  exerciseStyles: [
    {
      id: 'activity',
      box: 'activity-frame',
      number: { shape: 'disc', background: { hex: '#2a5ea8', model: 'hex' } },
      instruction: { fontFamily: 'Noto Sans JP' },
      options: { marker: 'circle' },
      blank: { look: 'dots', width: 'answer' },
      area: { kind: 'grid', lines: 4 },
      level: { glyph: '★', empty: '☆' },
      icons: { pair: { glyph: '👥' } },
    },
    { id: 'quiz', extends: 'activity', options: { layout: 'row', columns: 4 } },
  ],
};
プロパティ型既定値説明
idstring—:::exercise{style="…"}で選ぶ識別子です。未知のidは最初のスタイルになり、報告されます(exerciseUnknownStyle)。
namestringid人が読むための名前です(エディターのUIでのみ使います)。
extendsstring—このスタイルが元にする別のスタイルのidです。各グループ(number、options、blankなど)は項目ごとに、iconsはidごとにマージされます。
boxstring—練習問題の枠にするcalloutStylesのidです。背景、枠線、帯、内側余白、配置、分割はこの囲みスタイルに従います。未設定のときは、練習問題は枠なしで本文の流れの中に組まれ、1ページにまとめて置かれます。
numberobject—番号の印刷のしかたです。番号を参照してください。
instructionobject—指示文の書式です。指示文を参照してください。
optionsobject—選択問題の選択肢です。選択肢を参照してください。
blankobject—[[…]]の印刷のしかたです。空欄を参照してください。
trueFalseobject—正誤問題の答えです。正誤を参照してください。
matchobject—線で結ぶ2つの列です。線で結ぶ問題を参照してください。
bankobject—語群です。語群を参照してください。
areaobject—書き込み欄です。書き込み欄を参照してください。
gridobject—言葉さがし、クロスワード、筆算のマスです。マス目を参照してください。
arithmeticobject—筆算です。筆算を参照してください。
levelobject—難易度の印です。難易度を参照してください。
iconsRecord<string, ExerciseIcon>{}idごとの活動アイコンで、ブロックのiconで指定します。アイコンを参照してください。
answersobject—教師用の版、例として答えた項目、解答での答えの印刷のしかたです。答えの表示を参照してください。
solutionsExerciseSolutionsConfig—このスタイルの練習問題に適用する、本全体のexercises.solutionsです。ここで設定した項目だけが変わります。
digitalobject—画面の版の色です。画面の色を参照してください。
marginTopDimension1emboxのない練習問題の上のアキです。
marginBottomDimension1emboxのない練習問題の下のアキです。
itemSpacingDimension0.25em選択肢、問い、正誤の文、組など、2つの項目の間のアキです。

#番号

numberは練習問題の番号を設定します。形のない番号はメインカラーの太字で、後にピリオドが付きます。形のある番号は、メインカラーの円、四角、角丸の四角の中に白抜きで置かれ、後には何も付きません。

プロパティ型既定値説明
showbooleantrue番号を印刷します。印刷しなくても番号は数えられます。
labelboolean | stringfalse番号の前に置く語です。trueなら文書の言語の語(練習、Exercise、Ejercicio、Exercice、Ü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'など。

#指示文

instructionは練習問題の先頭の段落を設定します。未設定の項目は本文のものを使います。

プロパティ型既定値説明
boldbooleantrue指示文を太字にします。
italicbooleanfalseイタリックにします。
colorColorValue本文の色指示文の色で、太字の部分にも適用されます。
fontFamilystring本文のフォント指示文のフォントファミリーです。明朝の本文にゴシックの指示文を組むのは、教科書でよく見る組み方です。
fontSizeDimension本文のサイズ指示文のサイズです。

#選択肢

optionsは選択問題(- [ ] …)の選択肢を設定します。

プロパティ型既定値説明
labelsResourceCounterFormat | 'none'言語による選択肢の数え方です:'alpha-lower'(a、b、c)、中国語では'alpha-upper'(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'は1行に1つの選択肢を置き、折り返した行を本文の頭にそろえて下げます。'row'は選択肢を横に並べます。ブロックのcolumns=nでも横に並びます。
columnsnumberすべて'row'レイアウトで1行に置く選択肢の数です(6まで)。
shufflebooleanfalse選択肢を並べ替えて印刷します。順番はどの出力でも、略解でも同じです。
indentDimension1em問いのない選択肢の、本文の端からの字下げです。
bracketbooleanfalse日本や中国のテストのように、各問いの末尾に記号を書き込む括弧( )を置きます。教師用の版ではこの中に記号が書き込まれます。

#空欄

blankは、児童・生徒用の本文での[[…]]の印刷のしかたを設定します。答えの大きさのスペースに線、点線、四角のいずれかを描き、答えそのものは描きません。

プロパティ型既定値説明
look'line' | 'dots' | 'box' | 'none''line'書き込む線、点線、四角、何もないスペースのいずれかです。
width'answer' | 'longest' | Dimension'longest''longest'は練習問題のすべての空欄をいちばん長い答えの幅にそろえるので、空欄の長さから答えが分かりません。'answer'は各空欄をその答えの幅にします。長さを指定すると、すべての空欄がその幅になります。空欄に付けた{width=N}はこの設定より優先されます。
extraDimension1.5em答えの幅に足すスペースで、全角単位です。
minWidthDimension3em空欄の最小の幅です。
colorColorValue黒線、点線、四角の色です。設定すると、印を付ける四角と丸、語群の語の枠もこの色になります(未設定ならメインカラーです)。
weightDimension0.6pt線の太さです。

#正誤

trueFalseは正誤問題の文の末尾に置く答えを設定します。

プロパティ型既定値説明
labels[string, string]言語による2つの答えです。日本語では ○ ×、英語では['T', 'F']、スペイン語、カタルーニャ語、フランス語、イタリア語、ポルトガル語では V F、ドイツ語では R F、中国語では √ ×、アラビア語では صح خطأ です。
look'boxes' | 'bracket''boxes''boxes'は行末に、それぞれの記号と印を付ける四角を並べます。'bracket'は答えを書き込む空欄を1つ置きます。

#線で結ぶ問題

matchは組を作る練習問題を設定します。

プロパティ型既定値説明
look'dots' | 'letters''dots''dots'は2つの列の各項目の横に点を置き、線で結ばせます。'letters'は右の列に記号を付け、左の各項目の横に記号を書き込む空欄を置きます。
gapDimension4em2つの列の間のアキです。
dotSizeDimension0.35em点の直径です。
colorColorValueメインカラー点と語群の枠の色です。

#語群

bankは、bankまたは::bank[…]を付けた穴埋めと、すべての分類問題の語の囲みを設定します。囲みは::bankの行を書いた位置に、行がなければ指示文の下に印刷されます。

プロパティ型既定値説明
boxstringmatchの色の枠語群の囲みにするcalloutStylesのidです。
order'shuffle' | 'alpha' | 'written''shuffle'語を並べ替える(乱数の種による)か、文書の言語の辞書順に並べるか、書いた順のままにするかです。
separatorstring全角スペース2つの語の間に置く文字です。各語は細い枠のチップに組まれます。

#書き込み欄

areaは、記述問題の下、語順の並べ替えの文の下、分類問題の列の中に置く書き込み欄を設定します。

プロパティ型既定値説明
kind'lines' | 'dots' | 'grid' | 'seyes' | 'tianzige' | 'box' | 'none''lines'罫線、点の列、方眼、フランスのセイエス罫、田字格のマス、空の枠、何もないスペースのいずれかです。ブロックのareaはこの設定より優先されます。
linesnumber3書き込み欄の行数です。ブロックのlinesはこの設定より優先されます。
spacingDimension本文の行送りの1.35倍(マス目では1.2倍)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 =と書いて商を同じ行に置き、途中の計算をその下に書きます(ドイツ語)。
columnsnumber41行に並べる計算の数です。段が狭ければ減らします。

#難易度

levelは、ブロックのlevelが番号の後に小さめのサイズで印刷する印を設定します。

プロパティ型既定値説明
glyphstring'●'達したレベルの印です:'★'、'■'。
emptystring'○'達していないレベルの印です。''なら何も印刷しません。
maxnumber3いちばん高いレベルです。max: 3でlevel=2なら ●●○ と印刷されます。
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 イ · 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' } } }],
    },
  },
};