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
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 } },
],
};| 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 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. |
instruction | object | — | A tipografia do enunciado. Veja Enunciado. |
options | object | — | As alternativas de uma pergunta de múltipla escolha. Veja Alternativas. |
blank | object | — | Como um [[…]] é impresso. Veja Lacunas. |
trueFalse | object | — | As respostas de uma afirmação de verdadeiro ou falso. Veja Verdadeiro ou falso. |
match | object | — | Duas colunas para ligar. Veja Ligar colunas. |
bank | object | — | O banco de palavras. Veja Banco de palavras. |
area | object | — | Áreas de escrita. Veja Área de escrita. |
grid | object | — | As casas dos caça-palavras, das cruzadas e das contas. Veja Grades. |
arithmetic | object | — | Contas armadas em colunas. Veja Contas armadas. |
level | object | — | Marcas de dificuldade. Veja Dificuldade. |
icons | Record<string, ExerciseIcon> | {} | Ícones de atividade por id, indicados pelo icon de um delimitador. Veja Ícones. |
answers | object | — | Como as respostas saem numa edição do professor, num item-modelo e nas soluções. Veja Respostas. |
solutions | ExerciseSolutionsConfig | — | O exercises.solutions 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. |
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.
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. |
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. |
#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ê.
const config: PostextConfig = {
htmlViewer: {
overrides: {
exercises: { solutions: { placement: 'none' } },
exerciseStyles: [{ id: 'exercise', area: { kind: 'none' }, blank: { minWidth: { value: 6, unit: 'em' } } }],
},
},
};