# 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

- Versão HTML: https://postext.dev/pt/docs/configuration-exercises
- Última atualização: 2026-10-24
- Tempo de leitura: 12 min
- Outros idiomas: [en](https://postext.dev/en/docs/configuration-exercises.md), [es](https://postext.dev/es/docs/configuration-exercises.md), [ca](https://postext.dev/ca/docs/configuration-exercises.md), [de](https://postext.dev/de/docs/configuration-exercises.md), [fr](https://postext.dev/fr/docs/configuration-exercises.md), [it](https://postext.dev/it/docs/configuration-exercises.md), [zh](https://postext.dev/zh/docs/configuration-exercises.md), [ja](https://postext.dev/ja/docs/configuration-exercises.md), [ar](https://postext.dev/ar/docs/configuration-exercises.md)

## 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](https://postext.dev/pt/docs/exercises.md)). 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.

```ts
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 } },
  ],
};
```

| Propriedade | Tipo | Padrão | Descrição |
| --- | --- | --- | --- |
| `id` | `string` | — | Identificador escolhido por `:::exercise{style="…"}`. Um id desconhecido usa o primeiro estilo e é avisado (`exerciseUnknownStyle`). |
| `name` | `string` | `id` | Nome legível (só na interface do editor). |
| `extends` | `string` | — | O id de um estilo em que este se baseia. Cada grupo (`number`, `options`, `blank`…) é mesclado campo a campo, e `icons` por id. |
| `box` | `string` | — | Um id de [`calloutStyles`](https://postext.dev/pt/docs/configuration-callouts.md#estilos-de-boxe) 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. |
| `number` | `object` | — | Como o número é impresso. Veja [Número](https://postext.dev/pt/docs/configuration-exercises.md#número). |
| `instruction` | `object` | — | A tipografia do enunciado. Veja [Enunciado](https://postext.dev/pt/docs/configuration-exercises.md#enunciado). |
| `options` | `object` | — | As alternativas de uma pergunta de múltipla escolha. Veja [Alternativas](https://postext.dev/pt/docs/configuration-exercises.md#alternativas). |
| `blank` | `object` | — | Como um `[[…]]` é impresso. Veja [Lacunas](https://postext.dev/pt/docs/configuration-exercises.md#lacunas). |
| `trueFalse` | `object` | — | As respostas de uma afirmação de verdadeiro ou falso. Veja [Verdadeiro ou falso](https://postext.dev/pt/docs/configuration-exercises.md#verdadeiro-ou-falso). |
| `match` | `object` | — | Duas colunas para ligar. Veja [Ligar colunas](https://postext.dev/pt/docs/configuration-exercises.md#ligar-colunas). |
| `bank` | `object` | — | O banco de palavras. Veja [Banco de palavras](https://postext.dev/pt/docs/configuration-exercises.md#banco-de-palavras). |
| `area` | `object` | — | Áreas de escrita. Veja [Área de escrita](https://postext.dev/pt/docs/configuration-exercises.md#área-de-escrita). |
| `grid` | `object` | — | As casas dos caça-palavras, das cruzadas e das contas. Veja [Grades](https://postext.dev/pt/docs/configuration-exercises.md#grades). |
| `arithmetic` | `object` | — | Contas armadas em colunas. Veja [Contas armadas](https://postext.dev/pt/docs/configuration-exercises.md#contas-armadas). |
| `level` | `object` | — | Marcas de dificuldade. Veja [Dificuldade](https://postext.dev/pt/docs/configuration-exercises.md#dificuldade). |
| `icons` | `Record<string, ExerciseIcon>` | `{}` | Ícones de atividade por id, indicados pelo `icon` de um delimitador. Veja [Ícones](https://postext.dev/pt/docs/configuration-exercises.md#ícones). |
| `answers` | `object` | — | Como as respostas saem numa edição do professor, num item-modelo e nas soluções. Veja [Respostas](https://postext.dev/pt/docs/configuration-exercises.md#respostas). |
| `solutions` | `ExerciseSolutionsConfig` | — | O [`exercises.solutions`](https://postext.dev/pt/docs/configuration-exercises.md#soluções) do livro para os exercícios deste estilo: só mudam os campos definidos aqui. |
| `digital` | `object` | — | Cores das edições de tela. Veja [Cores na tela](https://postext.dev/pt/docs/configuration-exercises.md#cores-na-tela). |
| `marginTop` | `Dimension` | `1em` | Espaço acima de um exercício sem `box`. |
| `marginBottom` | `Dimension` | `1em` | Espaço abaixo de um exercício sem `box`. |
| `itemSpacing` | `Dimension` | `0.25em` | Espaç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.

| Propriedade | Tipo | Padrão | Descrição |
| --- | --- | --- | --- |
| `show` | `boolean` | `true` | Imprime o número. A contagem continua de qualquer jeito. |
| `label` | `boolean \| string` | `false` | Uma 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. |
| `color` | `ColorValue` | branco sobre uma forma; senão, a cor principal | A cor do número. |
| `background` | `ColorValue` | a cor principal | O preenchimento da forma. |
| `fontFamily` | `string` | a do texto em volta | A família do número. |
| `fontSize` | `Dimension` | `1em` | O tamanho do número; um em é o do enunciado. |
| `fontWeight` | `number` | `700` | 600 ou mais o compõe em negrito. |
| `suffix` | `string` | `'.'`; nenhum sobre uma forma | Impresso depois de um número solto e da sua palavra: `'.'`, `')'`, `'、'`. |
| `template` | `string` | `'{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. |
| `counter` | `string` | `'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. |
| `format` | `ResourceCounterFormat` | `'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.

| Propriedade | Tipo | Padrão | Descrição |
| --- | --- | --- | --- |
| `bold` | `boolean` | `true` | Compõe o enunciado em negrito. |
| `italic` | `boolean` | `false` | Compõe o enunciado em itálico. |
| `color` | `ColorValue` | a do texto | A cor dele, incluindo os trechos em negrito. |
| `fontFamily` | `string` | a do texto | A família dele: um enunciado sem serifa sobre um texto com serifa é comum nos livros didáticos. |
| `fontSize` | `Dimension` | o do texto | O tamanho dele. |

### Alternativas

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

| Propriedade | Tipo | Padrão | Descrição |
| --- | --- | --- | --- |
| `labels` | `ResourceCounterFormat \| 'none'` | conforme a língua | Como 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. |
| `prefix` | `string` | `''` | Antes do rótulo: `'('` para (a). |
| `suffix` | `string` | `')'`; `'.'` em chinês, nenhum em japonês | Depois 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. |
| `columns` | `number` | todas | Alternativas por fileira na disposição `'row'` (até 6). |
| `shuffle` | `boolean` | `false` | Imprime as alternativas em ordem embaralhada, a mesma em todas as saídas e no gabarito. |
| `indent` | `Dimension` | `1em` | O recuo das alternativas a partir da margem do texto, numa pergunta sem enunciado próprio. |
| `bracket` | `boolean` | `false` | Parê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.

| Propriedade | Tipo | Padrão | Descriçã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. |
| `extra` | `Dimension` | `1.5em` | Espaço somado à largura da resposta, em ems inteiros. |
| `minWidth` | `Dimension` | `3em` | A lacuna mais estreita. |
| `color` | `ColorValue` | preto | A 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. |
| `weight` | `Dimension` | `0.6pt` | A espessura da linha. |

### Verdadeiro ou falso

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

| Propriedade | Tipo | Padrão | Descrição |
| --- | --- | --- | --- |
| `labels` | `[string, string]` | conforme a língua | As 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.

| Propriedade | Tipo | Padrão | Descriçã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. |
| `gap` | `Dimension` | `4em` | Espaço entre as duas colunas. |
| `dotSize` | `Dimension` | `0.35em` | O diâmetro dos pontos. |
| `color` | `ColorValue` | a cor principal | Os 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.

| Propriedade | Tipo | Padrão | Descrição |
| --- | --- | --- | --- |
| `box` | `string` | uma moldura na cor de `match` | Um 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. |
| `separator` | `string` | um espaço eme | Entre 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.

| Propriedade | Tipo | Padrão | Descriçã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. |
| `lines` | `number` | `3` | Quantas linhas de altura. O `lines` de um delimitador prevalece. |
| `spacing` | `Dimension` | 1,35 vez a entrelinha do texto (1,2 nas grades) | A distância entre duas linhas. |
| `color` | `ColorValue` | um cinza-claro | A cor do pautado. |
| `weight` | `Dimension` | `0.5pt` | A espessura do pautado. |

### Grades

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

| Propriedade | Tipo | Padrão | Descrição |
| --- | --- | --- | --- |
| `cell` | `Dimension` | `1.6em` | O lado de uma casa. |
| `fontFamily` | `string` | a do texto | A família das letras e dos algarismos. |
| `fontSize` | `Dimension` | 0,58 do lado da casa | O tamanho das letras e dos algarismos; um em é o do texto. |
| `color` | `ColorValue` | a do texto | A cor das letras e dos algarismos. |
| `rule` | `ColorValue` | um cinza médio | Os fios das casas. |
| `ruleWidth` | `Dimension` | `0.6pt` | A espessura desses fios. |
| `blocked` | `ColorValue` | — | O preenchimento das casas da cruzada que nenhuma palavra ocupa. Sem ele, a grade só imprime as casas das suas palavras. |
| `uppercase` | `boolean` | `true` | Compõ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.

| Propriedade | Tipo | Padrão | Descrição |
| --- | --- | --- | --- |
| `division` | `'bracket' \| 'potence' \| 'inline'` | conforme a língua | A 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). |
| `columns` | `number` | `4` | Operaçõ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.

| Propriedade | Tipo | Padrão | Descrição |
| --- | --- | --- | --- |
| `glyph` | `string` | `'●'` | Um nível alcançado: `'★'`, `'■'`. |
| `empty` | `string` | `'○'` | Um nível não alcançado; `''` não imprime nada. |
| `max` | `number` | `3` | O nível mais alto: `level=2` com `max: 3` imprime ●●○. |
| `color` | `ColorValue` | a cor principal | A 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"`.

| Propriedade | Tipo | Padrão | Descrição |
| --- | --- | --- | --- |
| `glyph` | `string` | — | Um caractere para imprimir: `'✎'`, `'🎧'`, um glifo de uma fonte de ícones. |
| `fontFamily` | `string` | — | A família de uma fonte de ícones. |
| `color` | `ColorValue` | — | A cor do ícone. |
| `resourceId` | `string` | — | Um recurso bitmap ou SVG para o ícone. |
| `alt` | `string` | — | O que o ícone representa, para os leitores de tela e o PDF marcado. |
| `size` | `number` | `0.75` | A 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.

| Propriedade | Tipo | Padrão | Descrição |
| --- | --- | --- | --- |
| `color` | `ColorValue` | `#d6246e`, um vermelho magenta | A cor das respostas, como o livro do professor as sobrepõe ao texto. |
| `fontFamily` | `string` | a do texto | Uma fonte para as respostas: é comum uma fonte manuscrita. |
| `italic` | `boolean` | `false` | Compõ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.

| Propriedade | Tipo | Padrão | Descrição |
| --- | --- | --- | --- |
| `correctColor` | `ColorValue` | um verde (`#1e8e3e`) | Uma resposta certa. |
| `wrongColor` | `ColorValue` | um 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.

```ts
const config: PostextConfig = {
  exercises: {
    edition: 'student',
    solutions: { placement: 'chapterEnd', layout: 'key' },
    seed: 3,
    digital: { check: 'instant' },
  },
};
```

| Propriedade | Tipo | Padrão | Descriçã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. |
| `solutions` | `ExerciseSolutionsConfig` | — | Onde e como as soluções são impressas. Veja [Soluções](https://postext.dev/pt/docs/configuration-exercises.md#soluções). |
| `seed` | `number` | `1` | A 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. |
| `digital` | `object` | — | O visualizador HTML e os livros EPUB. Veja [Edições na tela](https://postext.dev/pt/docs/configuration-exercises.md#edições-na-tela). |

### Soluções

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

| Propriedade | Tipo | Padrão | Descriçã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`. |
| `box` | `string` | um boxe sem moldura em corpo menor | Um id de `calloutStyles` para o boxe de uma solução e para a lista de soluções de um capítulo. |
| `heading` | `string` | a palavra da língua do documento | O 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.

| Propriedade | Tipo | Padrão | Descrição |
| --- | --- | --- | --- |
| `interactive` | `boolean` | `true` | Exercícios que o leitor pode responder. `false` os mostra como no impresso. |
| `persist` | `boolean` | `true` | Guarda 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ê.

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