Pular para o conteúdo principal

Capítulo 3.13 · Parte II · O ofício

Configuração: exercícios

Estilos de exercício (exerciseStyles) e ajustes de exercícios do livro (exercises): selos de número, tipografia do enunciado, rótulos e marcadores das alternativas, lacunas, respostas de verdadeiro ou falso, ligar colunas, bancos de palavras, áreas de escrita, grades, conta de dividir, marcas de dificuldade, ícones, a cor das respostas, o lugar das soluções, a edição do professor e as edições de tela

Atualizado 2026-10-2412 minNo capítulo 3 Configuraçãoenescadefritptzhjaar

Em poucas palavras

Esta página lista todos os ajustes da aparência dos exercícios. Um estilo de exercício define como o número é impresso, como as alternativas são rotuladas, como fica uma lacuna para preencher, como são pautadas as linhas para escrever e como são desenhadas as grades e as contas. Os ajustes do livro definem onde as soluções são impressas e se o livro é a edição do aluno ou a do professor. Eles também definem como o leitor responde aos exercícios na tela. A página Exercícios explica como escrever os próprios exercícios.

#Estilos de exercício

A propriedade exerciseStyles declara os estilos nomeados que um exercício escolhe com :::exercise{style="…"}. Um estilo é a forma de uma família de exercícios; as perguntas e as respostas continuam no Markdown (veja Exercícios). Um estilo, exercise, vem por padrão, de modo que o delimitador funciona sem nenhuma configuração; declarar exerciseStyles o substitui, e o primeiro estilo declarado é o que vale para um exercício sem style. Todos os campos são opcionais, e os padrões seguem a língua do documento onde as escolas fazem diferente: rótulos das alternativas, letras de verdadeiro ou falso, a disposição da conta de dividir, as palavras impressas.

const config: PostextConfig = {
  exerciseStyles: [
    {
      id: 'activity',
      box: 'activity-frame',
      number: { shape: 'disc', background: { hex: '#2a5ea8', model: 'hex' } },
      instruction: { fontFamily: 'Source Sans 3' },
      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 } },
  ],
};
PropriedadeTipoPadrãoDescrição
idstring—Identificador escolhido por :::exercise{style="…"}. Um id desconhecido usa o primeiro estilo e é avisado (exerciseUnknownStyle).
namestringidNome legível (só na interface do editor).
extendsstring—O id de um estilo em que este se baseia. Cada grupo (number, options, blank…) é mesclado campo a campo, e icons por id.
boxstring—Um id de calloutStyles para a moldura do exercício: fundo, borda, faixa, recuo interno, posição, divisão. Sem definir, o exercício é composto no texto corrido, sem moldura, e fica inteiro numa só página.
numberobject—Como o número é impresso. Veja Número.
instructionobject—A tipografia do enunciado. Veja Enunciado.
optionsobject—As alternativas de uma pergunta de múltipla escolha. Veja Alternativas.
blankobject—Como um [[…]] é impresso. Veja Lacunas.
trueFalseobject—As respostas de uma afirmação de verdadeiro ou falso. Veja Verdadeiro ou falso.
matchobject—Duas colunas para ligar. Veja Ligar colunas.
bankobject—O banco de palavras. Veja Banco de palavras.
areaobject—Áreas de escrita. Veja Área de escrita.
gridobject—As casas dos caça-palavras, das cruzadas e das contas. Veja Grades.
arithmeticobject—Contas armadas em colunas. Veja Contas armadas.
levelobject—Marcas de dificuldade. Veja Dificuldade.
iconsRecord<string, ExerciseIcon>{}Ícones de atividade por id, indicados pelo icon de um delimitador. Veja Ícones.
answersobject—Como as respostas saem numa edição do professor, num item-modelo e nas soluções. Veja Respostas.
solutionsExerciseSolutionsConfig—O exercises.solutions do livro para os exercícios deste estilo: só mudam os campos definidos aqui.
digitalobject—Cores das edições de tela. Veja Cores na tela.
marginTopDimension1emEspaço acima de um exercício sem box.
marginBottomDimension1emEspaço abaixo de um exercício sem box.
itemSpacingDimension0.25emEspaço entre dois itens: alternativas, perguntas, afirmações, pares.

#Número

number define o número do exercício. Um número solto sai em negrito, na cor principal, seguido de ponto; um número com forma é um algarismo branco dentro de um círculo, de um quadrado ou de um quadrado arredondado na cor principal, sem nada depois.

PropriedadeTipoPadrãoDescrição
showbooleantrueImprime o número. A contagem continua de qualquer jeito.
labelboolean | stringfalseUma palavra antes do número: true usa a palavra da língua do documento (Exercício, Exercise, Ejercicio, Exercice, Übung, 练习, 練習, تمرين…); uma string é a própria palavra ('Atividade').
shape'none' | 'disc' | 'square' | 'rounded''none'A forma em que o número é composto.
colorColorValuebranco sobre uma forma; senão, a cor principalA cor do número.
backgroundColorValuea cor principalO preenchimento da forma.
fontFamilystringa do texto em voltaA família do número.
fontSizeDimension1emO tamanho do número; um em é o do enunciado.
fontWeightnumber700600 ou mais o compõe em negrito.
suffixstring'.'; nenhum sobre uma formaImpresso depois de um número solto e da sua palavra: '.', ')', '、'.
templatestring'{n}'O que o número diz: {n} é a contagem do exercício, {h1} e {h2} os números do capítulo e da seção ('{h1}.{n}' imprime 3.4).
resetOn'never' | 'h1' … 'h6''h1'O nível de título que recomeça a contagem; 'never' conta o livro inteiro.
counterstring'exercise'O contador que o estilo avança. Os estilos que indicam o mesmo contador o dividem; um estilo com contador próprio ('review') numera seus exercícios à parte.
formatResourceCounterFormat'decimal'Os algarismos de {n}, como num contador de recursos: 'roman-upper', 'alpha-lower', 'simp-chinese-informal' (一, 二), 'circled-decimal' (①, ②), 'arabic-indic'…

#Enunciado

instruction define os parágrafos iniciais do exercício. Os campos sem definir usam os do texto principal.

PropriedadeTipoPadrãoDescrição
boldbooleantrueCompõe o enunciado em negrito.
italicbooleanfalseCompõe o enunciado em itálico.
colorColorValuea do textoA cor dele, incluindo os trechos em negrito.
fontFamilystringa do textoA família dele: um enunciado sem serifa sobre um texto com serifa é comum nos livros didáticos.
fontSizeDimensiono do textoO tamanho dele.

#Alternativas

options define as alternativas de uma pergunta de múltipla escolha (- [ ] …).

PropriedadeTipoPadrãoDescrição
labelsResourceCounterFormat | 'none'conforme a línguaComo as alternativas são contadas: 'alpha-lower' (a, b, c), 'alpha-upper' em chinês (A, B, C), 'katakana' em japonês (ア, イ, ウ), 'abjad' em árabe (أ, ب, ج). Também 'decimal', 'katakana-iroha', 'circled-decimal'… 'none' não imprime rótulo.
prefixstring''Antes do rótulo: '(' para (a).
suffixstring')'; '.' em chinês, nenhum em japonêsDepois do rótulo.
marker'none' | 'box' | 'circle''none'Um quadradinho ou um círculo antes de cada alternativa, para marcar. Com 'none', o leitor circula o rótulo.
layout'stack' | 'row''stack''stack': uma alternativa por linha, com as linhas que quebram recuadas sob o texto dela. 'row': as alternativas lado a lado. O columns=n de um delimitador também as põe em fileiras.
columnsnumbertodasAlternativas por fileira na disposição 'row' (até 6).
shufflebooleanfalseImprime as alternativas em ordem embaralhada, a mesma em todas as saídas e no gabarito.
indentDimension1emO recuo das alternativas a partir da margem do texto, numa pergunta sem enunciado próprio.
bracketbooleanfalseParênteses ( ) no fim do enunciado de cada pergunta para escrever a letra, como nas provas chinesas e japonesas. Uma edição do professor escreve a letra dentro deles.

#Lacunas

blank define como um [[…]] é impresso no texto do aluno: um espaço do tamanho da resposta com uma linha, pontos ou um quadro, sem pintar a resposta.

PropriedadeTipoPadrãoDescrição
look'line' | 'dots' | 'box' | 'none''line'Uma linha para escrever, uma linha pontilhada, um quadro ou espaço vazio.
width'answer' | 'longest' | Dimension'longest''longest': todas as lacunas do exercício com a largura da resposta mais longa, para que nenhuma entregue a resposta. 'answer': cada uma com a largura da própria resposta. Uma medida: essa largura para todas. O {width=N} de uma lacuna prevalece.
extraDimension1.5emEspaço somado à largura da resposta, em ems inteiros.
minWidthDimension3emA lacuna mais estreita.
colorColorValuepretoA cor da linha, dos pontos ou do quadro. Quando definida, também colore os quadradinhos e os círculos para marcar e as molduras das palavras do banco, que, sem ela, ficam na cor principal.
weightDimension0.6ptA espessura da linha.

#Verdadeiro ou falso

trueFalse define as respostas no fim de uma afirmação.

PropriedadeTipoPadrãoDescrição
labels[string, string]conforme a línguaAs duas respostas: ['V', 'F'] em português, espanhol, catalão, francês e italiano; T F em inglês; R F em alemão; √ × em chinês; ○ × em japonês; صح خطأ em árabe.
look'boxes' | 'bracket''boxes''boxes': cada letra com um quadradinho para marcar, no fim da linha. 'bracket': um só espaço para escrever a resposta.

#Ligar colunas

match define um exercício de pares.

PropriedadeTipoPadrãoDescrição
look'dots' | 'letters''dots''dots': duas colunas com um ponto ao lado de cada item, para ligar com um traço. 'letters': a coluna da direita com letras e um espaço ao lado de cada item da esquerda para a letra.
gapDimension4emEspaço entre as duas colunas.
dotSizeDimension0.35emO diâmetro dos pontos.
colorColorValuea cor principalOs pontos e a moldura do banco de palavras.

#Banco de palavras

bank define o quadro de palavras de um exercício de lacunas com bank ou ::bank[…], e de todo exercício de classificar. O quadro fica onde a linha ::bank está escrita; sem ela, sob o enunciado.

PropriedadeTipoPadrãoDescrição
boxstringuma moldura na cor de matchUm id de calloutStyles para o quadro do banco.
order'shuffle' | 'alpha' | 'written''shuffle'As palavras embaralhadas (a partir da semente), em ordem alfabética na língua do documento ou como foram escritas.
separatorstringum espaço emeEntre duas palavras. Cada palavra é composta num chip com uma moldura fina.

#Área de escrita

area define o espaço sob uma pergunta aberta, sob uma frase embaralhada e nas colunas de um exercício de classificar.

PropriedadeTipoPadrãoDescrição
kind'lines' | 'dots' | 'grid' | 'seyes' | 'tianzige' | 'box' | 'none''lines'Linhas pautadas, uma fileira de pontos, papel quadriculado, o pautado francês Seyès, quadrados 田字格, uma moldura vazia ou espaço em branco. O area de um delimitador prevalece.
linesnumber3Quantas linhas de altura. O lines de um delimitador prevalece.
spacingDimension1,35 vez a entrelinha do texto (1,2 nas grades)A distância entre duas linhas.
colorColorValueum cinza-claroA cor do pautado.
weightDimension0.5ptA espessura do pautado.

#Grades

grid define as casas dos caça-palavras, das cruzadas e das contas armadas.

PropriedadeTipoPadrãoDescrição
cellDimension1.6emO lado de uma casa.
fontFamilystringa do textoA família das letras e dos algarismos.
fontSizeDimension0,58 do lado da casaO tamanho das letras e dos algarismos; um em é o do texto.
colorColorValuea do textoA cor das letras e dos algarismos.
ruleColorValueum cinza médioOs fios das casas.
ruleWidthDimension0.6ptA espessura desses fios.
blockedColorValue—O preenchimento das casas da cruzada que nenhuma palavra ocupa. Sem ele, a grade só imprime as casas das suas palavras.
uppercasebooleantrueCompõe as letras dos caça-palavras e das cruzadas em maiúsculas, com as regras de caixa da língua do documento.

#Contas armadas

arithmetic define as operações armadas em colunas.

PropriedadeTipoPadrãoDescrição
division'bracket' | 'potence' | 'inline'conforme a línguaA conta de dividir. 'bracket': o divisor à esquerda do dividendo, uma chave sobre ele e o quociente em cima (inglês, chinês, japonês, árabe e qualquer língua sem costume próprio). 'potence': o divisor à direita do dividendo, dentro de uma chave em L, e o quociente sob o divisor, como no método da chave (português, espanhol, catalão, francês, italiano). 'inline': 864 : 4 = com o quociente na mesma linha e as etapas embaixo (alemão).
columnsnumber4Operações por fileira; menos quando a coluna é estreita demais.

#Dificuldade

level define as marcas que o level de um delimitador imprime depois do número, num tamanho menor.

PropriedadeTipoPadrãoDescrição
glyphstring'●'Um nível alcançado: '★', '■'.
emptystring'○'Um nível não alcançado; '' não imprime nada.
maxnumber3O nível mais alto: level=2 com max: 3 imprime ●●○.
colorColorValuea cor principalA cor das marcas.

#Ícones

icons associa um id a um ícone de atividade (oral, escrita, em dupla, de escuta, com calculadora), impresso depois do número quando um delimitador o indica: icon="pair".

PropriedadeTipoPadrãoDescrição
glyphstring—Um caractere para imprimir: '✎', '🎧', um glifo de uma fonte de ícones.
fontFamilystring—A família de uma fonte de ícones.
colorColorValue—A cor do ícone.
resourceIdstring—Um recurso bitmap ou SVG para o ícone.
altstring—O que o ícone representa, para os leitores de tela e o PDF marcado.
sizenumber0.75A altura do ícone em em do enunciado: por padrão, a de uma maiúscula.

Um ícone sai como um símbolo na linha depois do número: a imagem de resourceId quando nomeia uma, senão o glyph em fontFamily e em color (a do texto quando não indicada). Ele se apoia na linha de base do enunciado, tem size em de altura e seu alt é lido no lugar dele.

#Respostas

answers define as respostas onde quer que apareçam: numa edição do professor, no item-modelo de um exercício com example, nos círculos e quadradinhos preenchidos, nos traços entre pares, nas letras e algarismos das grades.

PropriedadeTipoPadrãoDescrição
colorColorValue#d6246e, um vermelho magentaA cor das respostas, como o livro do professor as sobrepõe ao texto.
fontFamilystringa do textoUma fonte para as respostas: é comum uma fonte manuscrita.
italicbooleanfalseCompõe em itálico as respostas das lacunas.

#Cores na tela

digital define como o visualizador HTML e os livros EPUB mostram uma resposta conferida.

PropriedadeTipoPadrãoDescrição
correctColorColorValueum verde (#1e8e3e)Uma resposta certa.
wrongColorColorValueum vermelho (#c5221f)Uma resposta errada.

#Ajustes do livro

A propriedade exercises guarda os ajustes do livro inteiro: a edição, o lugar das soluções, a semente de todos os embaralhamentos e as edições de tela. Um livro que não define exercises nem exerciseStyles é diagramado e gera o mesmo hash que antes.

const config: PostextConfig = {
  exercises: {
    edition: 'student',
    solutions: { placement: 'chapterEnd', layout: 'key' },
    seed: 3,
    digital: { check: 'instant' },
  },
};
PropriedadeTipoPadrãoDescrição
edition'student' | 'teacher''student''teacher' imprime cada resposta no seu lugar, na cor de answers: um livro do professor a partir do texto do aluno.
solutionsExerciseSolutionsConfig—Onde e como as soluções são impressas. Veja Soluções.
seednumber1A semente de todos os embaralhamentos: alternativas, colunas da direita, itens de ordenar, palavras embaralhadas, bancos, letras de preenchimento dos caça-palavras. Mude-a para ter outra versão de uma prova; impresso, tela e gabarito continuam iguais entre si.
digitalobject—O visualizador HTML e os livros EPUB. Veja Edições na tela.

#Soluções

exercises.solutions, e o solutions de um estilo por cima dele para os exercícios desse estilo.

PropriedadeTipoPadrãoDescrição
placement'none' | 'after' | 'inverted' | 'chapterEnd' | 'directive''none''none': nenhuma solução no impresso. 'after': depois de cada exercício, em corpo menor. 'inverted': depois de cada exercício, de cabeça para baixo. 'chapterEnd': no fim do capítulo, sob heading. 'directive': onde estiver uma linha :::solutions.
boxstringum boxe sem moldura em corpo menorUm id de calloutStyles para o boxe de uma solução e para a lista de soluções de um capítulo.
headingstringa palavra da língua do documentoO título das soluções no fim de um capítulo: Gabarito, Solutions, Soluciones, Solucions, Corrigés, Lösungen, Soluzioni, 参考答案, 解答, الحلول. Uma linha :::solutions{title="…"} define o seu.
layout'key' | 'full''full''key': só as respostas (1 b · 2 água). 'full': o gabarito e depois o :::solution do exercício.

#Edições na tela

exercises.digital define como os exercícios se comportam no visualizador HTML e nos livros EPUB.

PropriedadeTipoPadrãoDescrição
interactivebooleantrueExercícios que o leitor pode responder. false os mostra como no impresso.
persistbooleantrueGuarda as respostas do leitor no navegador, por livro.
check'button' | 'instant''button''button': as respostas são conferidas quando o leitor pede. 'instant': cada resposta é conferida assim que é dada.

A tela pode ter seus próprios ajustes de exercícios: htmlViewer.overrides também aceita exercises e exerciseStyles, mesclados sobre os do livro antes de o visualizador HTML diagramar. Assim, o impresso mantém as soluções no fim do capítulo enquanto a tela as esconde, ou a tela tira as áreas de escrita, que não servem para nada a quem lê.

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