Capítulo 3.13 · Parte II · El oficio
Configuración: ejercicios
Los estilos de ejercicio (exerciseStyles) y los ajustes de ejercicios del libro (exercises): el número, la letra del enunciado, las letras y las casillas de las opciones, los huecos, las respuestas de verdadero o falso, relacionar, el banco de palabras, los espacios para escribir, las cuadrículas, la división, las marcas de dificultad, los iconos, el color de las respuestas, dónde se imprimen las soluciones, la edición del profesor y las ediciones en pantalla
En pocas palabras
Esta página reúne todos los ajustes del aspecto de los ejercicios. Un estilo de ejercicio decide cómo se imprime el número, qué letras llevan las opciones, cómo es un hueco para rellenar, qué pautado tienen las líneas para escribir y cómo se dibujan las cuadrículas y las operaciones. Los ajustes del libro deciden dónde se imprimen las soluciones y si el libro es la edición del alumno o la del profesor. También deciden cómo responden los lectores a los ejercicios en pantalla. La página Ejercicios explica cómo se escriben los ejercicios.
#Estilos de ejercicio
La propiedad exerciseStyles declara los estilos con nombre que un ejercicio elige con :::exercise{style="…"}. Un estilo es la forma de una familia de ejercicios; las preguntas y las respuestas siguen en el Markdown (consulta Ejercicios). Por defecto se incluye un estilo, exercise, así que el contenedor funciona sin configuración; declarar exerciseStyles lo sustituye, y el primer estilo declarado es el que toma un ejercicio sin style. Todos los campos son opcionales, y los valores por defecto siguen el idioma del documento allí donde las escuelas no coinciden: las letras de las opciones, las letras de verdadero o falso, la disposición de la división y las palabras que se imprimen.
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 } },
],
};| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
id | string | — | Id que elige :::exercise{style="…"}. Un id desconocido usa el primer estilo y genera un aviso (exerciseUnknownStyle). |
name | string | id | Nombre legible (solo para las interfaces de edición). |
extends | string | — | El id del estilo en el que se basa este. Cada grupo (number, options, blank…) se combina campo a campo, y icons por id. |
box | string | — | Un id de calloutStyles para el marco del ejercicio: fondo, borde, franja, márgenes interiores, colocación y corte entre páginas. Sin fijar, el ejercicio se compone en el texto corrido, sin marco, y se mantiene entero en una página. |
number | object | — | Cómo se imprime el número. Consulta Número. |
instruction | object | — | La letra del enunciado. Consulta Enunciado. |
options | object | — | Las opciones de una pregunta de opción múltiple. Consulta Opciones. |
blank | object | — | Cómo se imprime un [[…]]. Consulta Huecos. |
trueFalse | object | — | Las respuestas de una afirmación de verdadero o falso. Consulta Verdadero o falso. |
match | object | — | Dos columnas que unir. Consulta Relacionar. |
bank | object | — | El banco de palabras. Consulta Banco de palabras. |
area | object | — | Los espacios para escribir. Consulta Espacio para escribir. |
grid | object | — | Las casillas de las sopas de letras, los crucigramas y las operaciones. Consulta Cuadrículas. |
arithmetic | object | — | Las operaciones en columnas. Consulta Operaciones. |
level | object | — | Las marcas de dificultad. Consulta Dificultad. |
icons | Record<string, ExerciseIcon> | {} | Los iconos de actividad por id, que nombra el atributo icon de un contenedor. Consulta Iconos. |
answers | object | — | Cómo se imprimen las respuestas en la edición del profesor, en un elemento modelo y en las soluciones. Consulta Respuestas. |
solutions | ExerciseSolutionsConfig | — | Las exercises.solutions del libro para los ejercicios de este estilo: solo cambian los campos que se fijan aquí. |
digital | object | — | Los colores de las ediciones en pantalla. Consulta Colores en pantalla. |
marginTop | Dimension | 1em | Espacio encima de un ejercicio sin box. |
marginBottom | Dimension | 1em | Espacio debajo de un ejercicio sin box. |
itemSpacing | Dimension | 0.25em | Espacio entre dos elementos: opciones, preguntas, afirmaciones o parejas. |
#Número
number fija el número del ejercicio. Un número suelto va en negrita, en el color principal y seguido de punto; uno con forma es una cifra blanca dentro de un círculo, un cuadrado o un cuadrado redondeado del color principal, sin nada detrás.
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
show | boolean | true | Imprime el número. La cuenta avanza de todos modos. |
label | boolean | string | false | Una palabra delante del número: true toma la del idioma del documento (Ejercicio, Exercise, Exercice, Übung, 练习, 練習, تمرين…); una cadena es la propia palabra ('Actividad'). |
shape | 'none' | 'disc' | 'square' | 'rounded' | 'none' | La forma en la que va el número. |
color | ColorValue | blanco sobre una forma; si no, el color principal | El color del número. |
background | ColorValue | el color principal | El relleno de la forma. |
fontFamily | string | la del texto que lo rodea | La familia del número. |
fontSize | Dimension | 1em | El cuerpo del número; un em es el del enunciado. |
fontWeight | number | 700 | Con 600 o más se compone en negrita. |
suffix | string | '.'; nada sobre una forma | Lo que se imprime detrás de un número suelto y de su palabra: '.', ')', '、'. |
template | string | '{n}' | Lo que dice el número: {n} es la cuenta del ejercicio, y {h1} y {h2} los números del capítulo y de la sección ('{h1}.{n}' imprime 3.4). |
resetOn | 'never' | 'h1' … 'h6' | 'h1' | El nivel de encabezado que reinicia la cuenta; con 'never' se cuenta a lo largo de todo el libro. |
counter | string | 'exercise' | El contador que avanza el estilo. Los estilos que nombran el mismo contador lo comparten; un estilo con un contador propio ('review') numera sus ejercicios aparte. |
format | ResourceCounterFormat | 'decimal' | El sistema de numeración de {n}, como en un contador de recursos: 'roman-upper', 'alpha-lower', 'simp-chinese-informal' (一, 二), 'circled-decimal' (①, ②), 'arabic-indic'… |
#Enunciado
instruction fija los párrafos con los que empieza el ejercicio. Los campos sin fijar toman los del texto base.
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
bold | boolean | true | Compone el enunciado en negrita. |
italic | boolean | false | Lo compone en cursiva. |
color | ColorValue | el del texto | Su color, incluidas las negritas. |
fontFamily | string | la del texto | Su familia: en los libros escolares es habitual un enunciado en letra de palo seco sobre un texto con serifa. |
fontSize | Dimension | el del texto | Su cuerpo. |
#Opciones
options fija las opciones de una pregunta de opción múltiple (- [ ] …).
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
labels | ResourceCounterFormat | 'none' | según el idioma | Cómo se cuentan las opciones: 'alpha-lower' (a, b, c), 'alpha-upper' en chino (A, B, C), 'katakana' en japonés (ア, イ, ウ), 'abjad' en árabe (أ, ب, ج). También 'decimal', 'katakana-iroha', 'circled-decimal'… Con 'none' no se imprime ninguna letra. |
prefix | string | '' | Lo que va delante de la letra: '(' para (a). |
suffix | string | ')'; '.' en chino, nada en japonés | Lo que va detrás de la letra. |
marker | 'none' | 'box' | 'circle' | 'none' | Una casilla o un círculo delante de cada opción, para marcarla. Con 'none' el lector rodea la letra. |
layout | 'stack' | 'row' | 'stack' | 'stack': una opción por línea, con las líneas que no caben sangradas bajo su texto. 'row': las opciones una al lado de otra. El atributo columns=n de un contenedor también las pone en filas. |
columns | number | todas | Opciones por fila en la disposición 'row' (hasta 6). |
shuffle | boolean | false | Imprime las opciones desordenadas, en el mismo orden en todas las salidas y en la clave. |
indent | Dimension | 1em | La sangría de las opciones respecto al borde del texto, en una pregunta sin enunciado propio. |
bracket | boolean | false | Un paréntesis ( ) al final de cada pregunta para escribir la letra, como lo imprimen los exámenes chinos y japoneses. La edición del profesor escribe la letra dentro. |
#Huecos
blank fija cómo se imprime un [[…]] en el texto del alumno: un espacio del tamaño de la respuesta, con una línea, puntos o una caja, sin pintar la respuesta.
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
look | 'line' | 'dots' | 'box' | 'none' | 'line' | Una línea para escribir, una línea de puntos, una caja o un espacio vacío. |
width | 'answer' | 'longest' | Dimension | 'longest' | 'longest': todos los huecos del ejercicio miden lo que su respuesta más larga, para que ninguno delate la suya. 'answer': cada uno mide lo que su propia respuesta. Una longitud: ese ancho para todos. El {width=N} de un hueco tiene prioridad. |
extra | Dimension | 1.5em | Espacio que se suma al ancho de la respuesta, en em enteros. |
minWidth | Dimension | 3em | El hueco más estrecho. |
color | ColorValue | negro | El color de la línea, de los puntos o de la caja. Si se fija, colorea también las casillas y los círculos para marcar y los marcos de las palabras del banco, que si no van en el color principal. |
weight | Dimension | 0.6pt | El grosor de la línea. |
#Verdadero o falso
trueFalse fija las respuestas que van al final de una afirmación.
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
labels | [string, string] | según el idioma | Las dos respuestas: ['V', 'F'] en español, catalán, francés, italiano y portugués; T F en inglés; R F en alemán; √ × en chino; ○ × en japonés; صح خطأ en árabe. |
look | 'boxes' | 'bracket' | 'boxes' | 'boxes': cada letra con una casilla para marcar, al final de la línea. 'bracket': un solo hueco en el que escribir la respuesta. |
#Relacionar
match fija un ejercicio de parejas.
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
look | 'dots' | 'letters' | 'dots' | 'dots': dos columnas con un punto junto a cada elemento, para unirlos con una línea. 'letters': la columna derecha con letras y un hueco junto a cada elemento de la izquierda para escribir la letra. |
gap | Dimension | 4em | Espacio entre las dos columnas. |
dotSize | Dimension | 0.35em | El diámetro de los puntos. |
color | ColorValue | el color principal | Los puntos y el marco del banco de palabras. |
#Banco de palabras
bank fija el recuadro de palabras de un ejercicio de huecos con bank o ::bank[…], y de todo ejercicio de clasificar. El recuadro va donde está escrita la línea ::bank; sin ella, bajo el enunciado.
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
box | string | un marco del color de relacionar | Un id de calloutStyles para el recuadro del banco. |
order | 'shuffle' | 'alpha' | 'written' | 'shuffle' | Las palabras desordenadas (con semilla), en orden alfabético según el idioma del documento o tal como están escritas. |
separator | string | un espacio de cuadratín | Lo que va entre dos palabras. Cada palabra se compone en un chip con un marco fino. |
#Espacio para escribir
area fija el espacio que queda bajo una pregunta abierta, bajo una frase desordenada y en las columnas de un ejercicio de clasificar.
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
kind | 'lines' | 'dots' | 'grid' | 'seyes' | 'tianzige' | 'box' | 'none' | 'lines' | Renglones, una hilera de puntos, cuadrícula, la pauta francesa Seyès, cuadros 田字格, un marco vacío o un espacio en blanco. El atributo area de un contenedor tiene prioridad. |
lines | number | 3 | Cuántas líneas de alto. El atributo lines de un contenedor tiene prioridad. |
spacing | Dimension | 1,35 veces el interlineado del texto (1,2 en las cuadrículas) | La distancia entre dos líneas. |
color | ColorValue | un gris claro | El color del pautado. |
weight | Dimension | 0.5pt | El grosor del pautado. |
#Cuadrículas
grid fija las casillas de las sopas de letras, los crucigramas y las operaciones en columnas.
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
cell | Dimension | 1.6em | El lado de una casilla. |
fontFamily | string | la del texto | La familia de las letras y las cifras. |
fontSize | Dimension | 0,58 del lado de la casilla | El tamaño de letras y cifras; un em es el del texto. |
color | ColorValue | el del texto | El color de las letras y las cifras. |
rule | ColorValue | un gris medio | Los filetes de las casillas. |
ruleWidth | Dimension | 0.6pt | Su grosor. |
blocked | ColorValue | — | El relleno de las casillas del crucigrama que no ocupa ninguna palabra. Sin él, la cuadrícula solo imprime las casillas de sus palabras. |
uppercase | boolean | true | Compone en mayúsculas las letras de las sopas de letras y los crucigramas, con las reglas de mayúsculas del idioma del documento. |
#Operaciones
arithmetic fija las operaciones en columnas.
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
division | 'bracket' | 'potence' | 'inline' | según el idioma | La división. 'potence': el divisor a la derecha del dividendo, dentro de una L, y el cociente debajo del divisor (español, catalán, francés, italiano y portugués). 'bracket': el divisor a la izquierda del dividendo, un corchete sobre este y el cociente encima (inglés, chino, japonés, árabe y cualquier idioma sin disposición propia). 'inline': 864 : 4 = con el cociente en la misma línea y los pasos debajo (alemán). |
columns | number | 4 | Operaciones por fila; menos si la columna es demasiado estrecha. |
#Dificultad
level fija las marcas que el atributo level de un contenedor imprime detrás del número, en un cuerpo menor.
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
glyph | string | '●' | Un nivel alcanzado: '★', '■'. |
empty | string | '○' | Un nivel no alcanzado; con '' no se imprime nada. |
max | number | 3 | El nivel más alto: level=2 con max: 3 imprime ●●○. |
color | ColorValue | el color principal | El color de las marcas. |
#Iconos
icons asocia un id a un icono de actividad (oral, escrita, en pareja, de escucha, con calculadora), que se imprime detrás del número cuando un contenedor lo nombra: icon="pair".
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
glyph | string | — | Un carácter que imprimir: '✎', '🎧', un glifo de una fuente de iconos. |
fontFamily | string | — | La familia de una fuente de iconos. |
color | ColorValue | — | El color del icono. |
resourceId | string | — | Un recurso de mapa de bits o SVG para el icono. |
alt | string | — | Lo que representa el icono, para los lectores de pantalla y el PDF etiquetado. |
size | number | 0.75 | La altura del icono en em del enunciado: por defecto, la de una mayúscula. |
Un icono se imprime como un símbolo en línea tras el número: la imagen de resourceId si nombra una, y si no el glyph en fontFamily y en color (el del texto si no se indica). Se apoya en la línea de base del enunciado, mide size em de alto y su alt se lee en su lugar.
#Respuestas
answers fija el aspecto de las respuestas allí donde aparecen: la edición del profesor, el elemento modelo de un ejercicio con example, los círculos y las casillas rellenas, las líneas trazadas entre parejas, y las letras y cifras de las cuadrículas.
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
color | ColorValue | #d6246e, un rojo magenta | El color de las respuestas, como las sobreimprime un libro del profesor. |
fontFamily | string | la del texto | Una letra para las respuestas: es habitual una letra manuscrita. |
italic | boolean | false | Compone en cursiva las respuestas escritas en los huecos. |
#Colores en pantalla
digital fija cómo muestran el visor HTML y los libros EPUB una respuesta corregida.
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
correctColor | ColorValue | un verde (#1e8e3e) | Una respuesta correcta. |
wrongColor | ColorValue | un rojo (#c5221f) | Una respuesta incorrecta. |
#Ajustes del libro
La propiedad exercises reúne los ajustes de todo el libro: la edición, dónde se imprimen las soluciones, la semilla de todos los desórdenes y las ediciones en pantalla. Un libro que no fija ni exercises ni exerciseStyles se compone igual que antes y conserva el mismo hash.
const config: PostextConfig = {
exercises: {
edition: 'student',
solutions: { placement: 'chapterEnd', layout: 'key' },
seed: 3,
digital: { check: 'instant' },
},
};| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
edition | 'student' | 'teacher' | 'student' | 'teacher' imprime cada respuesta en su sitio, en el color de answers: un libro del profesor a partir del texto del alumno. |
solutions | ExerciseSolutionsConfig | — | Dónde y cómo se imprimen las soluciones. Consulta Soluciones. |
seed | number | 1 | El origen de todos los desórdenes: opciones, columnas derechas, elementos que ordenar, palabras de las frases desordenadas, bancos y letras de relleno de las sopas de letras. Cambiándolo se obtiene otra versión de un examen; el papel, la pantalla y la clave siguen coincidiendo. |
digital | object | — | El visor HTML y los libros EPUB. Consulta Ediciones en pantalla. |
#Soluciones
exercises.solutions, y por encima, para los ejercicios de un estilo, el solutions de ese estilo.
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
placement | 'none' | 'after' | 'inverted' | 'chapterEnd' | 'directive' | 'none' | 'none': ninguna solución en papel. 'after': detrás de cada ejercicio, en un cuerpo menor. 'inverted': detrás de cada ejercicio, cabeza abajo. 'chapterEnd': al final del capítulo, bajo heading. 'directive': donde haya una línea :::solutions. |
box | string | un recuadro sin marco en un cuerpo menor | Un id de calloutStyles para el recuadro de una solución y para la lista de soluciones de un capítulo. |
heading | string | la palabra del idioma del documento | El título de las soluciones al final de un capítulo: Soluciones, Solutions, Solucions, Corrigés, Lösungen, Soluzioni, Gabarito, 参考答案, 解答, الحلول. Una línea :::solutions{title="…"} fija el suyo. |
layout | 'key' | 'full' | 'full' | 'key': solo las respuestas (1 b · 2 agua). 'full': la clave y después el :::solution del ejercicio. |
#Ediciones en pantalla
exercises.digital fija cómo se comportan los ejercicios en el visor HTML y en los libros EPUB.
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
interactive | boolean | true | Ejercicios que el lector puede responder. Con false se muestran como en papel. |
persist | boolean | true | Guarda las respuestas del lector en el navegador, por libro. |
check | 'button' | 'instant' | 'button' | 'button': las respuestas se corrigen cuando el lector lo pide. 'instant': cada respuesta se corrige en cuanto se da. |
La pantalla puede tener sus propios ajustes de ejercicios: htmlViewer.overrides admite también exercises y exerciseStyles, que se combinan con los del libro antes de que el visor HTML maquete. Así el papel puede llevar las soluciones al final del capítulo mientras la pantalla las oculta, o la pantalla puede prescindir de los espacios para escribir, que al lector no le sirven.
const config: PostextConfig = {
htmlViewer: {
overrides: {
exercises: { solutions: { placement: 'none' } },
exerciseStyles: [{ id: 'exercise', area: { kind: 'none' }, blank: { minWidth: { value: 6, unit: 'em' } } }],
},
},
};