Capítulo 6 · Parte II · El oficio
Configuración: notas y referencias
Las notas al pie, la numeración de líneas, las referencias cruzadas y las citas, el índice de contenidos y el índice analítico
En pocas palabras
Esta página reúne los ajustes de las partes del libro que remiten a otro lugar. Las notas van al pie de la página y los números de línea van en el margen. Las referencias cruzadas nombran una figura, una sección o una página, y las citas nombran las obras que mencionas. El índice de contenidos enumera los capítulos y el índice analítico, al final, enumera términos con sus páginas. Cada sección explica el aspecto de estas piezas y cómo se numeran.
#Notas al pie
La propiedad footnotes fija dónde van las notas citadas con [^id], cómo se numeran y qué aspecto tienen. El marcado se describe en Formato del documento.
interface FootnotesConfig {
placement?: 'column' | 'chapterEnd' | 'spread'; // Pie de la columna que cita, tras el capítulo, o junto al texto de un pliego.
numbering?: 'chapter' | 'document' | 'page' | 'column' | 'spread'; // Reiniciar en cada capítulo, seguir, o reiniciar en cada página / columna / pliego.
numberFormat?: string; // decimal, lower-roman, circled-decimal (①)…
symbols?: string[]; // Los símbolos de llamada de numberFormat: 'symbols'.
markerPosition?: 'auto' | 'superscript' | 'inline' | 'side' | 'right'; // Volada, sobre la línea de base, junto a la palabra, o a la derecha de una línea vertical.
markerSize?: Dimension; // Tamaño de la llamada en línea, lateral o a la derecha; em es el texto que la rodea.
numberGap?: 'en' | 'em'; // Espacio tras el número de la propia nota.
chapterEndAlign?: 'foot' | 'text'; // chapterEnd: notas al pie de la columna, o bajo el texto.
fontSize?: Dimension; // Cuerpo de la nota; em es el cuerpo del texto.
lineHeight?: Dimension; // Interlineado de la nota; em es el cuerpo de la nota.
color?: ColorValue; // Color de la nota; sin valor, el del cuerpo.
textAlign?: TextAlign; // Sin valor, la alineación del cuerpo.
hangingIndent?: Dimension; // Sangría de las líneas siguientes de una nota.
spaceBetween?: Dimension; // Espacio entre dos notas.
spaceAbove?: Dimension; // Espacio entre el texto y el filete; em es el cuerpo del texto.
spaceBelowRule?: Dimension; // Espacio entre el filete y la primera nota.
separator?: {
enabled?: boolean; // Dibujar el filete.
width?: number; // Longitud del filete, fracción del ancho de columna.
lineWidth?: Dimension; // Grosor del filete.
color?: ColorValue; // Sin valor, el color de las notas.
};
}| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
placement | 'column' | 'chapterEnd' | 'spread' | 'column' (libros japoneses verticales: 'chapterEnd') | 'column' compone cada nota al pie de la columna que contiene la línea que la cita, bajo un filete corto; en una maqueta de una columna es el pie de la página. 'chapterEnd' compone todas las notas de un capítulo tras su último bloque, en el orden en que se citan. 'spread' (傍注, solo en texto vertical) compone las notas citadas en las dos páginas de un pliego al final de su página impar, la izquierda en un libro encuadernado por la derecha, bajo el filete: las notas citadas en la página par la esperan, una nota que dejaría en la página impar menos de una línea de texto se queda al pie de la página par con las que la siguen, y un capítulo que acaba en una página par conserva allí las notas que esperaban. En texto horizontal vuelve a 'column' con un aviso unknownConfigValue. Desde postext 1.16. |
numbering | 'chapter' | 'document' | 'page' | 'column' | 'spread' | 'chapter' (libros japoneses horizontales: 'page'; con placement: 'spread': 'spread'; con numberFormat: 'symbols' al pie de la columna: 'page') | 'chapter' vuelve a empezar en 1 bajo cada título de nivel 1 y al principio de cada documento. 'document' sigue por todo el documento y, en un libro maquetado capítulo a capítulo, de un capítulo al siguiente (continuationAfter lleva el último número en continuation.footnoteNumber). 'page' vuelve a empezar en 1 en cada página y 'column' en cada columna, contando las notas donde las coloca la maquetación (las columnas de una página en orden de lectura): el 页下注 habitual de un libro chino. El documento se maqueta, se numera según dónde cayeron sus notas y se vuelve a maquetar hasta que los números se mantienen (como mucho tres veces más). Ambos valen para las notas al pie de la columna: con placement: 'chapterEnd' las notas se numeran por capítulo. 'spread' vuelve a empezar en cada pliego (páginas 2–3, 4–5…), en el orden de cita, para placement: 'spread'. |
numberFormat | string | 'decimal' | Cómo se escriben los números, con cualquiera de las grafías que aceptan los ajustes de numeración: 'decimal', 'lower-roman', 'lower-alpha', 'circled-decimal' (o '①'), 'cjk-decimal', '一'… Lo usan la llamada y el número que abre la nota. circled-decimal escribe en decimal los números mayores que 50. Un nombre desconocido numera en decimal, con un aviso unknownNumberFormat. 'symbols' (o '*') marca las notas con símbolos de llamada, los de symbols por orden: * † ‡ § ‖ ¶, luego dobles (** †† ‡‡…) y triples; las notas se cuentan entonces de nuevo en cada página salvo que se fije numbering. Desde postext 1.19. |
symbols | string[] | ['*', '†', '‡', '§', '‖', '¶'] | La secuencia que escribe numberFormat: 'symbols', doblada y luego triplicada cuando se agota. Los archivos latinos de Google Fonts y Fontsource traen * † § ¶ (la cruz, en latin-ext) pero ni ‡ ni ‖, que el PDF dibuja entonces con el glifo .notdef de la fuente y un aviso missingGlyph: con una fuente así, quítalos (['*', '†', '§', '¶']) o compón las notas en una fuente que los tenga. Las cadenas vacías se descartan y una lista vacía conserva la secuencia por defecto. Desde postext 1.19. |
markerPosition | 'auto' | 'superscript' | 'inline' | 'side' | 'right' | 'auto' | 'superscript' pone volados, a tamaño reducido, la llamada del texto y el número que abre la nota. 'inline' los compone sobre la línea de base: la llamada a markerSize, el número de la nota al tamaño de la nota; en texto vertical, una llamada en círculo en línea va derecha en una casilla propia. 'right' compone una llamada reducida a ras del lado derecho de una línea vertical, como componen (1) los libros verticales japoneses; en texto horizontal es una volada. 'side' (合印) compone una llamada pequeña junto a la palabra marcada, del lado de su ruby, que acaba donde acaba el último carácter de la palabra; no ocupa sitio en la línea, que se corta y se justifica como si no estuviera, y una interlínea demasiado estrecha para ella se avisa con rubyExceedsLeading. 'auto' es en línea con circled-decimal, 'right' en un libro japonés vertical y volada en los demás casos. En todos los casos la llamada sigue al carácter que la precede y nunca abre una línea. |
markerSize | Dimension | 1em; 0.6em con 'side', 0.7em con 'right' | Tamaño de una llamada en línea, lateral o a la derecha; em es el tamaño del texto que la rodea (0.75em es una reducción habitual). No afecta a una llamada volada. |
numberGap | 'en' | 'em' | 'en' (notas japonesas tras el capítulo: 'em') | El espacio tras el número que abre una nota: un espacio de medio cuadratín o un cuadratín entero de la nota (un espacio ideográfico cuando el número o la nota llevan texto CJK), que nunca se estira ni se corta. Desde postext 1.16. |
markerTemplate | string | '{n}' (libros japoneses verticales: '({n})') | Cómo se escribe el número de una nota; {n} lo representa en el formato de numeración y las cifras del documento: '({n})' da las llamadas entre paréntesis de los libros árabes, «(١)». Escribe igual la llamada del texto y el número que abre la nota. Una plantilla sin {n} se lee como el valor por defecto. |
noteNumberPosition | 'auto' | 'superscript' | 'inline' | 'auto' | Dónde va el número que abre la nota: volado, o sobre la línea al tamaño de la nota. 'auto' sigue a markerPosition. Los libros árabes ponen volada la llamada del texto y sobre la línea el número de la nota. |
chapterEndAlign | 'foot' | 'text' | 'foot' | Con placement: 'chapterEnd': 'foot' compone las notas que cierran una columna al pie de esta, con las líneas sobrantes entre el texto y las notas, igual que las notas al pie de columna. 'text' las compone justo debajo del texto. |
fontSize | Dimension | 0.8em | Cuerpo del texto de las notas. em y rem son el cuerpo del texto. Las notas usan la familia y los pesos del cuerpo. |
lineHeight | Dimension | 1.25em | Interlineado de las notas; em es el cuerpo de la nota. Las notas quedan fuera de la retícula de líneas base: se apilan desde el pie de la columna y el texto de encima sigue en la retícula. |
color | ColorValue | color del cuerpo | Color del texto de las notas. |
textAlign | TextAlign | alineación del cuerpo | Alineación del texto de las notas. |
hangingIndent | Dimension | 0 | Sangría de la segunda línea y siguientes de una nota, para alinearlas tras su número. |
spaceBetween | Dimension | 0 | Espacio entre dos notas. |
spaceAbove | Dimension | 0.5em | Espacio entre la última línea de texto y el filete; em es el cuerpo del texto. Con 'chapterEnd' y chapterEndAlign: 'text', spaceAbove + spaceBelowRule es el espacio entre el texto y la primera nota. |
spaceBelowRule | Dimension | 0.4em | Espacio entre el filete y la primera nota. |
separator.enabled | boolean | true | Dibujar el filete sobre las notas de cada columna. Con false los espacios de encima se mantienen. |
separator.width | number | 0.3 | Longitud del filete como fracción del ancho de la columna (0–1), desde su borde izquierdo. |
separator.lineWidth | Dimension | 0.5pt | Grosor del filete. |
separator.color | ColorValue | color de las notas | Color del filete. |
footnotes: {
fontSize: { value: 7.5, unit: 'pt' },
lineHeight: { value: 9.5, unit: 'pt' },
hangingIndent: { value: 0.8, unit: 'em' },
separator: { width: 0.25, lineWidth: { value: 0.4, unit: 'pt' } },
}Libros japoneses. Un documento japonés (locale: 'ja', desde postext 1.16) da a los campos que deja sin fijar los valores de JLReq §4.2. Un libro vertical compone sus notas tras el capítulo (placement: 'chapterEnd', 後注), numeradas por capítulo, con llamadas ({n}) a la derecha de la línea (markerPosition: 'right', con las cifras de pie según cjk.uprightDigits); uno horizontal las compone al pie de la página, numeradas en cada página, con llamadas voladas. Los dos trazan el filete con un tercio de la medida (separator.width: 1/3), y las notas tras el capítulo llevan numberGap: 'em' y una sangría francesa de dos cuadratines. Un valor explícito manda y se conserva al guardar (stripFootnotesDefaults compara con los valores por defecto del propio documento); los documentos chinos, árabes y latinos se resuelven como antes. footnoteDocumentDefaults(locale, writingMode, placement?) devuelve estos valores. La llamada se escribe delante de un 。 que cierra la oración (先生[^1]。): se queda con el carácter anterior, y 。 nunca abre una línea. Ver Composición japonesa › Notas.
Cómo se componen las notas al pie de columna:
- La nota y su llamada comparten columna. Antes de colocar una línea, la maquetación suma la altura de las notas que esa línea cita por primera vez (y la del filete, en la primera nota de la columna). Una línea cuyas notas no caben debajo pasa a la columna siguiente con el resto de su párrafo, según las reglas de viudas y huérfanas. El área de texto de la columna se acorta en la altura de las notas, así que el equilibrado de columnas y la banda de cierre de un capítulo solo cuentan el texto.
- Varias notas en una columna se apilan en el orden de cita bajo un único filete. Una nota citada de nuevo más adelante conserva su número y no se vuelve a componer.
- Flotantes al pie. Una figura que ocupa el pie de una columna después de que sus notas se hayan compuesto queda encima de ellas; las notas compuestas después de la figura quedan encima de ella.
- Recuadros. Una nota citada dentro de un recuadro (en línea, flotante o fijo) va al pie de la columna donde sigue el texto tras el recuadro, normalmente la misma. Un recuadro que cierra el documento deja sus notas al pie de la columna donde terminó el texto.
- Límites. Una nota nunca se parte: una más alta que la columna la desborda. Las llamadas en pies de figura, celdas de tabla y títulos no se leen (se imprimen tal cual).
- Salida. El canvas, el HTML y el PDF pintan las notas, las llamadas (un número volado) y el filete. En el PDF cada llamada enlaza con su nota, y un PDF etiquetado marca cada nota como elemento
Notecon un/IDúnico listado en el/IDTreedel árbol de estructura (PDF/UA-1). Las notas sonVDTBlockconfootnoteNote, enpage.floats; los filetes están enpage.footnoteAreas. - Avisos.
undefinedFootnote(una llamada sin definición: el número se imprime sobre una nota vacía) yunusedFootnote(una definición que ninguna llamada cita: no se compone).
El resolutor y el depurador siguen el patrón de las demás secciones:
import { DEFAULT_FOOTNOTES_CONFIG, resolveFootnotesConfig, stripFootnotesDefaults, footnoteDocumentDefaults } from 'postext';
resolveFootnotesConfig(config.footnotes, 'ja', 'vertical-rl'); // los campos sin fijar toman los valores japoneses verticales#Numeración de líneas
La propiedad lineNumbers imprime en el margen el número de cada quinta línea (o de cada enésima), a su lado, como hacen las ediciones críticas, las antologías de poesía, los textos legales y las ediciones escolares. Cuenta los versos de los poemas :::verse, o todas las líneas del texto. Está desactivada por defecto. Cada número se pinta sobre la línea base de su línea, con un cuerpo propio, y nunca mueve una línea: la página se compone exactamente igual que sin números. Desde postext 1.23.
interface LineNumbersConfig {
enabled?: boolean; // Desactivada por defecto.
count?: 'verse' | 'all'; // Los versos de los poemas, o todas las líneas del texto.
interval?: number; // Imprimir los múltiplos de N.
numberFirst?: boolean; // Imprimir también la primera línea tras cada reinicio.
restart?: 'document' | 'chapter' | 'section' | 'page' | 'poem'; // Dónde vuelve a empezar la cuenta.
startAt?: number; // El número de la primera línea tras un reinicio.
position?: 'outer' | 'inner' | 'left' | 'right' | 'start' | 'end' | 'side';
multiColumn?: 'each' | 'gutter' | 'outer-edges'; // Páginas de dos o más columnas.
gap?: Dimension; // Del texto al número; em es el cuerpo del número.
align?: 'auto' | 'left' | 'right';
fontFamily?: string; // La familia del cuerpo si no se fija.
fontSize?: Dimension; // em es el cuerpo del texto.
fontWeight?: number; // El peso del cuerpo si no se fija.
italic?: boolean;
color?: ColorValue; // El color del cuerpo si no se fija.
format?: string; // decimal, lower-roman, arabic-indic, 一…
}| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
enabled | boolean | false | Imprime los números de línea. Un documento vertical (layout.writingMode: 'vertical-rl') no lleva ninguno, y un true en él se avisa como lineNumbersUnsupported. |
count | 'verse' | 'all' | 'verse' | 'verse' cuenta los versos de los poemas :::verse, cada verso una vez: la parte de un verso demasiado largo para la caja que pasa a la línea siguiente no lleva número, y el espacio entre estrofas no se cuenta. Un poema en la composición árabe clásica cuenta una línea por bait; la segunda línea de un bait escalonado no se cuenta. 'all' cuenta todas las líneas de los párrafos del cuerpo, los elementos de lista, las citas y los versos, en orden de lectura: página a página, columna a columna, de arriba abajo. |
interval | number | 5 | Imprime el número de cada línea que es múltiplo de este (5, 10, 15…). Un poema cuyo primer verso es el 37 imprime 40, 45… La apertura de un poema puede fijar el suyo (interval=N). |
numberFirst | boolean | false | Imprime también el número de la primera línea contada tras cada reinicio. |
restart | 'document' | 'chapter' | 'section' | 'page' | 'poem' | 'poem' con count: 'verse', 'page' con count: 'all' | Dónde vuelve a empezar la cuenta: nunca ('document', que sigue por todos los capítulos de un libro), en cada título de nivel 1 ('chapter'), en cada título de nivel 1 o 2 ('section'), en cada página ('page') o en cada poema :::verse ('poem'). El lineStart=N de un poema y el lines=N de la directiva :::numbering la reinician en cualquier punto, sea cual sea el modo. |
startAt | number | 1 | El número de la primera línea tras un reinicio. |
position | 'outer' | 'inner' | 'left' | 'right' | 'start' | 'end' | 'side' | 'outer' | El lado en que van los números. 'outer' es el lado opuesto al lomo: la derecha de una página impar y la izquierda de una par, al revés en un libro encuadernado por la derecha. 'inner' es el lado del lomo. 'left' y 'right' son el mismo en todas las páginas. 'start' y 'end' siguen la dirección del documento: 'start' es la derecha en un libro de derecha a izquierda. 'side' los pone en la columna lateral de una disposición 'oneAndHalf' con layout.sideColumnRole: 'floats', contra el borde de la columna lateral que da al texto (gap no se usa); en una página sin columna lateral vuelve a 'outer'. |
multiColumn | 'each' | 'gutter' | 'outer-edges' | 'outer-edges' | Páginas con dos o más columnas de texto una al lado de otra. 'outer-edges' pone los números de la primera columna a su izquierda y los de la última a su derecha; las columnas intermedias siguen 'each'. 'gutter' los pone en los medianiles: los de la primera columna a su derecha, los de las demás a su izquierda. 'each' pone los de cada columna en el lado de position. |
gap | Dimension | 1em | La distancia del borde de la columna al número; em es el cuerpo del propio número. |
align | 'auto' | 'left' | 'right' | 'auto' | 'auto' alinea cada número hacia el texto: a la derecha en un margen izquierdo, a la izquierda en uno derecho. 'left' y 'right' alinean los números dentro del ancho del número más ancho de la página. |
fontFamily | string | familia del cuerpo | Tipo de letra de los números. Se carga y se incrusta como cualquier otra familia. |
fontSize | Dimension | 0.8em | Cuerpo de los números; em es el cuerpo del texto. |
fontWeight | number | peso del cuerpo | Peso de los números. |
italic | boolean | false | Compone los números en cursiva. |
color | ColorValue | color del cuerpo | Color de los números. Un color enlazado a la paleta sigue las paletas de partes y secciones. |
format | string | decimal | Cómo se escriben los números, con cualquiera de las grafías de los formatos de numeración ('lower-roman', 'arabic-indic', '一'…). Los números decimales se escriben con las cifras del documento (numerals). Un nombre desconocido numera en decimal, con un aviso unknownNumberFormat. |
lineNumbers: {
enabled: true,
count: 'verse',
interval: 5,
restart: 'document', // una sola cuenta para todo el libro
position: 'outer',
fontSize: { value: 0.75, unit: 'em' },
italic: true,
}Qué se cuenta y qué no:
- Nunca se cuentan los títulos, los pies, las tablas y las imágenes, las fórmulas en bloque, el texto de diseño (aperturas, titulillos), las notas al pie y las notas de final de capítulo, el índice general, las entradas del índice alfabético y de la bibliografía, ni las páginas en blanco.
- Recuadros y prosa. El texto de un recuadro no se cuenta, y con
count: 'verse'tampoco la prosa, salvo que el estilo de párrafo en que se compone digalineNumbers: true; un estilo conlineNumbers: falseno se cuenta nunca (véase Estilos de párrafo). - Un poema. La apertura de un poema admite
numbered=false(sus versos no se cuentan),lineStart=N(su primer verso es el N, y la cuenta vuelve a empezar ahí) einterval=N.:::numbering{lines=N}da el número N a la siguiente línea contada, esté donde esté. Véase Formato del documento ›:::versey:::numbering.
En un libro maquetado capítulo a capítulo, restart: 'document' lleva la cuenta de un capítulo al siguiente en continuation.lineNumber. continuationAfter cuenta los versos a partir del texto; con count: 'all' la cuenta depende de la maquetación, así que la aplicación pasa el lastLineNumber del documento del capítulo anterior, como hace el Sandbox.
Con position: 'side' los números comparten la columna lateral con los recuadros, los pies y las figuras laterales. Un número que se solapa con uno de ellos se pinta igualmente, ninguno de los dos se mueve, y la maquetación da un aviso de contenido lineNumberOverlap que señala la línea numerada.
Salida. El canvas, el PDF, el visor HTML y el EPUB de maquetación fija pintan los números. En un PDF etiquetado son artefactos de paginación y cada uno lleva un /ActualText vacío, así que el texto copiado o extraído pasa de una línea a otra sin ellos. La salida HTML los oculta a las tecnologías de apoyo (aria-hidden), a la selección y al texto copiado. El EPUB de maquetación fluida, cuyas líneas compone el sistema de lectura, conserva solo los números de los versos: un span pt-line-number (también aria-hidden) en el margen inicial de la estrofa, junto a cada verso que lleva número en la versión impresa. En el VDT los números son una ranura de diseño de cada página (page.lineNumbers, con sus bloques de texto marcados artifact) y una lista de marcas (page.lineNumberMarks: number, label, columnIndex, blockId, lineIndex); el documento guarda lastLineNumber.
No se admiten: números de línea en texto vertical, una referencia cruzada que imprima el número de una línea, notas enlazadas a números de línea, ni números para las líneas de celdas de tabla, pies o listados de código.
En el Sandbox estos ajustes son la sección Numeración de líneas del panel de diseño. El resolutor y el depurador siguen el patrón de las demás secciones; la fuente, el peso y el color salen del texto de cuerpo:
import { DEFAULT_LINE_NUMBERS_CONFIG, resolveLineNumbersConfig, stripLineNumbersDefaults } from 'postext';
resolveLineNumbersConfig(config.lineNumbers, resolvedBodyText); // fuente, peso y color sin fijar siguen al cuerpo#Referencias cruzadas
La propiedad crossRefs fija las palabras que una referencia cruzada imprime alrededor de un número o de una página, y el estilo que toma un :ref que no indica ninguno. Cada plantilla lleva {n} donde va el número; una que no lo lleva recibe el número detrás de un espacio de no separación ("§" imprime § 3.2). Una plantilla sin definir sigue al idioma del documento: capítulo / sección / pág. en español, chapter / section / p. en inglés, 第{n}章 / 第{n}节 / 第{n}页 en chino, y lo mismo para francés, alemán, italiano, portugués, catalán y neerlandés.
interface CrossRefsConfig {
chapter?: string; // Words around a level-1 heading's number: "chapter {n}".
section?: string; // Around any other heading's number: "section {n}".
page?: string; // Around a page number: "p. {n}".
defaultStyle?: 'default' | 'number' | 'title' | 'page'; // A :ref without style=.
}| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
chapter | string | según el idioma | Una referencia a un título de nivel 1: "capítulo {n}". Un número cuya plantilla ya escribe la palabra (Capítulo {1}, 第{1:一}章) se imprime tal cual. |
section | string | según el idioma | Una referencia a un título de nivel 2 a 6: "sección {n}", "§ {n}". |
page | string | según el idioma | Una referencia de página (style=page): "pág. {n}", "página {n}". |
defaultStyle | 'default' | 'number' | 'title' | 'page' | 'default' | Lo que imprime un :ref a un título o a un ancla sin style=. 'default': un título numerado con su palabra y su número, uno sin número con su título, un ancla con su texto. Una referencia que indica style lo conserva, y las referencias a figuras y tablas no cambian. |
Las referencias toman el color, el peso y la inclinación de todas las referencias (bodyText.referenceColor, referenceBold, referenceItalic).
#Citas
La propiedad citations elige el estilo de cita y cómo se ven las citas y la bibliografía. El marcado se describe en Citas y bibliografía; el estilo lo aplica el paquete postext-citeproc.
interface CitationsConfig {
style?: string; // 'apa', 'ieee', 'chicago-notes-bibliography'… or 'custom'
customStyle?: string; // a whole CSL style (.csl XML), used with style: 'custom'
locale?: string; // CSL locale; the document language when unset
link?: boolean; // citations link to their entries
marker?: 'style' | 'brackets' | 'parentheses' | 'superscript' | 'corner';
collapseRanges?: boolean;
notes?: 'footnote' | 'warichu';
numbering?: 'book' | 'chapter';
bibliography?: {
title?: string; // unset: the document language's word; '' or ' ': none
scope?: 'book' | 'chapter';
auto?: boolean;
fontSize?: Dimension;
lineHeight?: Dimension;
hangingIndent?: Dimension;
entrySpacing?: Dimension;
labelWidth?: Dimension;
labelAlign?: 'left' | 'right';
doi?: 'link' | 'text' | 'hide';
includeUncited?: boolean;
groupByLanguage?: boolean;
};
}| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
style | string | 'apa' | El id de un estilo incluido (véase Estilos) o 'custom'. El estilo decide lo que dicen citas y entradas: nombres, fechas, orden, puntuación y si las citas son notas. |
customStyle | string | — | Un estilo CSL completo, el XML de un archivo .csl, que se usa cuando style es 'custom'. El Sandbox lo carga desde un archivo. |
locale | string | idioma del documento | La configuración regional CSL en la que el estilo escribe sus palabras (es-ES, en-US, zh-CN, ja-JP…). Un documento japonés se lee como ja-JP: las citas narrativas unen dos autores con と y abrevian los demás con ほか. |
link | boolean | true | Una cita enlaza con su entrada en la bibliografía (enlace en el PDF, ancla en el HTML, clic en el Sandbox). |
marker | 'style' | 'brackets' | 'parentheses' | 'superscript' | 'corner' | 'style' | Cómo marca la cita un estilo numérico: como lo escribe el estilo, [1], (1), en superíndice o 〔1〕 (de pie en texto vertical). El localizador va tras el número. |
collapseRanges | boolean | true | Números seguidos como intervalo: 1–3 con una marca propia, [2]–[4] con la de IEEE. false los deja separados. |
notes | 'footnote' | 'warichu' | 'footnote' | Dónde pone sus citas un estilo de notas: notas al pie (como dice footnotes) o notas de dos líneas dentro del renglón (夹注). |
numbering | 'book' | 'chapter' | 'book' | Las citas a lo largo del libro, o cada capítulo por su cuenta (cada documento, y cada encabezado de nivel 1 tras una cita): un estilo numérico numera cada capítulo desde 1 y una obra citada en dos capítulos toma el número de cada uno; un estilo de notas escribe completa la obra en su primera cita de cada capítulo. Pensado para bibliography.scope: 'chapter', cuyas listas toman entonces los números del capítulo. |
bibliography.title | string | según el idioma | Título sobre la lista, un párrafo en negrita. En blanco: ninguno. Un título propio va sobre :::bibliography. |
bibliography.scope | 'book' | 'chapter' | 'book' | Una lista con todas las obras que cita el libro, o una por capítulo con las que cita cada uno. En un documento de varios capítulos cada H1 empieza una lista nueva; con auto, un capítulo que no coloca su :::bibliography recibe la lista al final. |
bibliography.auto | boolean | true | Pone la lista tras el texto (tras el último capítulo, si abarca todo el libro) cuando ningún :::bibliography la sitúa. |
bibliography.fontSize | Dimension | 0.9em | Tamaño de las entradas; em es el tamaño del texto. |
bibliography.lineHeight | Dimension | interlineado del texto | Interlineado de las entradas. |
bibliography.hangingIndent | Dimension | 2em | Sangría de las líneas siguientes de una entrada sin número. |
bibliography.entrySpacing | Dimension | 0.3em | Espacio entre dos entradas. |
bibliography.labelWidth | Dimension | rótulo más largo | Ancho de la columna de los números de una lista numerada: el texto de cada entrada empieza a esa distancia, en su primera línea como en las siguientes, de modo que 9. y 10. comparten la columna. El número sigue formando parte del texto de la entrada. |
bibliography.labelAlign | 'left' | 'right' | 'left' | Dónde se coloca el número en su columna: contra su borde izquierdo o contra el texto (9. y 10. acaban a la vez). |
bibliography.doi | 'link' | 'text' | 'hide' | 'link' | DOI y URL como enlaces, como texto o fuera. |
bibliography.includeUncited | boolean | false | Lista todas las referencias, citadas o no (como nocite: "@*"). |
bibliography.groupByLanguage | boolean | false | Primero las obras en chino, japonés y coreano; luego las demás. Solo en estilos autor-fecha y autor-página: una lista numerada conserva el orden de sus números. |
#Índice de contenidos
La propiedad toc configura lo que imprime una directiva :::toc (ver Formato del documento). El índice se ensambla a partir del esquema del documento — cada encabezado con su número y su etiqueta de página, cada :::part — de modo que sigue a los capítulos: renombra uno, muévelo a otra parte, cambia sus autores, y las entradas cambian con él. Una entrada es el número del encabezado en una columna propia, el título, una línea de puntos y la etiqueta de página en el borde derecho, y después una línea de subtítulo opcional; una parte es una fila diseñada por parts.design.
const config: PostextConfig = {
toc: {
levels: [{ level: 1, fontWeight: 700, color: { hex: '#00507b', model: 'hex' }, numberWidth: { value: 7.4, unit: 'mm' } }],
unnumbered: { color: { hex: '#000000', model: 'hex' } },
pageNumber: { fontWeight: 400, width: { value: 8, unit: 'mm' } },
leader: { char: '.', gap: { value: 1, unit: 'mm' } },
subtitle: { enabled: true, attr: 'author', italic: true, fontSize: { value: 8.5, unit: 'pt' } },
parts: {
height: { value: 23, unit: 'pt' },
marginTop: { value: 11.5, unit: 'pt' },
design: { elements: [/* una caja de banda, 'SECCIÓN {number}', '{titleText}', '{pageNumber}' */] },
},
},
};| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
levels | TocLevelConfig[] | nivel 1 | Niveles de encabezado listados, cada uno con la tipografía de sus entradas: fontFamily, fontSize, lineHeight (por defecto la interlínea del cuerpo, para que el índice caiga en la rejilla), fontWeight, italic, color, indent (de toda la entrada), numberWidth / numberGap (la columna de números tras la que empieza el título; los números se alinean a la derecha en ella, y un número más ancho que numberWidth, como الفصل الحادي عشر o Capítulo 12, ensancha la columna de su nivel hasta el más ancho), numberFontFamily, numberFontSize, numberFontWeight, numberColor, marginTop, marginBottom. Los campos sin fijar heredan el texto de cuerpo. El número se asienta en la línea base de la primera línea del título, sea cual sea su fuente y su cuerpo, en el lienzo, el HTML y el PDF (hasta postext 1.4 se centraba en la altura de la x como una viñeta, así que una fuente de rótulo o un cuerpo mayor quedaban por encima del título). Un renderizador propio encuentra esa línea base en el bulletBaselineY del bloque de la entrada; bulletY sigue siendo el centro vertical del cuadratín del número, como en 1.4, de modo que un renderizador anterior a ese campo dibuja los números donde siempre. |
unnumbered | TocEntryStyleConfig | — | Sobrescrituras para los encabezados cuyo estilo declara numbered: false (un prólogo): no imprimen número y empiezan a ras en el indent del nivel. |
pageNumber | objeto | fuente del nivel 1, peso del cuerpo | fontFamily, fontSize, fontWeight, italic, color de la etiqueta de página, y width (por defecto 2em): la columna que se le reserva en el borde derecho, donde se alinea a la derecha. |
leader | objeto | | char se repite a lo largo del hueco entre el título y el número de página, alineado a la derecha para que los puntos de entradas consecutivas queden en línea ('. ' los espacia); gap es el hueco mínimo entre el título y la línea de puntos. La línea lleva tantos caracteres como caben, medida como una tira entera en su fuente, de modo que una fuente que separa con el kerning los puntos seguidos pone menos puntos en lugar de puntos que alcancen el número de página. (Hasta postext 1.4 la cuenta salía de un solo punto, y con una fuente así la línea de puntos iba del título hasta montarse en el número). Un título que no dejara sitio a la etiqueta salta de línea un poco antes. La línea de puntos lleva tres caracteres o más: donde solo caben uno o dos, la fila se queda sin ella, porque un punto suelto delante del número de página se lee como un punto final. En un PDF etiquetado los puntos son artefactos, que quedan fuera del texto extraído. El texto de cuerpo pone los mismos rellenos en sus tabulaciones. |
subtitle | objeto | | Una segunda línea bajo la entrada tomada de un atributo del encabezado (attr) — los autores del capítulo — con sus propios fontFamily, fontSize, fontWeight, italic (por defecto true), color e indent adicional. La línea comparte la interlínea de la entrada y nunca se separa de su título. |
parts.enabled | boolean | true | Si los separadores de parte reciben una fila. |
parts.breakBefore | boolean | false | Abre una página nueva antes de cada fila de parte salvo la primera, de modo que los capítulos de cada parte se listan en una página propia. |
parts.design | DesignSlot | vacío | Diseño de la fila; su contenedor es la fila (anchura de columna × height). Marcadores: , , …, y (la etiqueta de la página de parte; con parts.page: false, que no abre página de parte, la etiqueta de la página en la que empieza el contenido de la parte, donde sus cabeceras pasan a ella; en un libro maquetado capítulo a capítulo, una valla que cierra su capítulo apunta a la primera página con contenido del capítulo siguiente). Los colores ligados a la paleta toman la palette de la propia parte, así que la fila de cada sección sale en su color. Vacío, se componen (separados por el numberSeparator del H1) y el número de página con la tipografía de las entradas de nivel 1. |
parts.height, marginTop, marginBottom | Dimension | 2em, 0, 0 | Altura de la fila y espacio a su alrededor. em es el cuerpo del texto, así que la fila por defecto mide el doble del cuerpo, no dos líneas de texto: con un texto de 9,5/13,5 pt mide 19 pt. Para una fila de dos líneas de texto, da la altura en pt (27pt en ese caso). |
Las etiquetas de página son las que el documento imprime. buildDocument() vuelve a componer un documento con :::toc con las etiquetas de la pasada anterior hasta que se estabilizan (tres pasadas adicionales como máximo); un anfitrión que compone un libro capítulo a capítulo suministra en su lugar el esquema del libro entero como PostextContent.outline, ensamblado con contentOutline() (encabezados y partes a partir del texto) y outlineFromDoc() (las mismas entradas con las etiquetas de página de una composición), y vuelve a componer el capítulo del índice cada vez que cambia el outlineKey() de ese esquema. Cada entrada de encabezado lleva el number que imprime el índice y, en un encabezado numerado, su counter: la cuenta acumulada del nivel tras cualquier startAt, imprima lo que imprima la plantilla — lo que un anfitrión muestra junto a un capítulo en sus propias listas.
#Índice analítico
La propiedad index configura lo que imprime una directiva :::index (ver Formato del documento): los términos marcados con :index[…] e :index{term="…"} en el texto, ordenados, agrupados por inicial (en chino, por la inicial del pinyin o por trazos, y en japonés por filas del gojūon; véase groupBy) y cada uno con las páginas en que cae. Una entrada es su término, un separador y sus números de página; detrás van sus subentradas, con un paso de sangría por nivel, y las líneas que continúan una entrada cuelgan turnoverIndent para no alinearse nunca con una subentrada.
const config: PostextConfig = {
headingStyles: [
// El índice a dos columnas, bajo su propio encabezado.
{ id: 'indice', numbered: false, layout: { layoutType: 'double', gutterWidth: { value: 6, unit: 'mm' } } },
],
index: {
fontSize: { value: 8.5, unit: 'pt' },
lineHeight: { value: 11, unit: 'pt' },
rangeFormat: 'chicago',
groups: { fontFamily: 'Source Sans 3', fontWeight: 700, color: { hex: '#8a1c1c', model: 'hex' } },
},
};| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
fontFamily, fontSize, lineHeight, fontWeight, color | — | el texto de cuerpo | Tipografía de las entradas. Todas las líneas del índice, letras de grupo incluidas, se componen sobre lineHeight; el índice lleva su propio ritmo y no se ajusta a la rejilla base. |
indent | Dimension | 1em | Sangría de cada nivel de subentrada. |
turnoverIndent | Dimension | 2em | Sangría adicional de las líneas que continúan una entrada, más allá de su nivel. |
entrySpacing | Dimension | 0 | Espacio sobre cada entrada principal. |
separator, locatorSeparator, rangeSeparator | string | ', ', ', ', '–'; las dos primeras, '، ' en escritura árabe | Lo que se imprime entre el término y su primera página, entre dos páginas y entre los extremos de un intervalo. |
mergeRanges | boolean | true | Une en un intervalo las páginas consecutivas de un mismo formato de numeración: 12, 13, 14 se imprime 12–14. Las páginas principales no se unen nunca. |
rangeFormat | 'full' | 'chicago' | 'full' | Cómo se escribe el segundo número de un intervalo: completo (234–237) o sin las cifras que comparte con el primero, como pide el Manual de estilo de Chicago (9.64): 71–72, 100–104, 101–8, 321–28, 1496–500. Las etiquetas romanas se escriben siempre completas. |
main | | negrita | Cómo se compone una página principal (main en la marca). |
see | | según el idioma, en cursiva (redonda en escritura árabe) | Las palabras que preceden a una remisión. Sin fijar, siguen el idioma del documento: Véase / Véase también, See / See also, Voir / Voir aussi, 见 / 另见 (見 / 另見 en chino tradicional)… Un índice en chino pone la remisión tras un punto y sin espacio: 贾琏 12。见贾政. |
locale | string | el del documento | El idioma cuyo orden alfabético ordena las entradas (una etiqueta BCP 47, que lee Intl.Collator). En español la ñ va tras la n y encabeza un grupo propio; los acentos no alteran el orden. |
groupBy | 'auto' | 'letter' | 'pinyin' | 'stroke' | 'gojuon' | 'kana' | 'none' | 'auto' | Qué encabeza cada grupo. 'letter': la primera letra de la clave de orden. 'pinyin': una entrada que empieza por un carácter han va bajo la inicial latina de su lectura en pinyin (贾宝玉 bajo J), y una clave de orden latina bajo su letra, detrás de las entradas chinas de esa letra (el ordenador de cadenas pone las letras latinas después de los caracteres chinos): sort="jia mu" cierra la J. 'stroke': bajo el número de trazos del primer carácter, 一畫, 二畫… (一画… en chino simplificado). 'gojuon': una entrada en kana va bajo su fila del gojūon, あ行, か行 … わ行, y 'kana', bajo su primer kana (katakana e hiragana comparten cabecera), en el orden JIS X 4061 de un índice japonés: por la lectura (el yomi de la marca y, si no, la lectura en kana de su ruby, luego sort y luego el texto), los katakana como hiragana, los kana pequeños como los grandes, ー como la vocal que la precede, y el kana sin marca antes que el sonoro y este antes que el semisonoro; primero los símbolos, luego los números por su valor, luego las palabras latinas bajo sus letras y luego los kana; una entrada que sigue encabezada por un kanji se avisa con indexReadingMissing y se coloca tras los kana, sin cabecera. 'none': sin cabeceras; los símbolos, las cifras y las palabras solo se separan por groups.marginTop. 'auto' agrupa un índice en japonés (ja, ja-*) por filas del gojūon, uno en chino simplificado (zh, zh-Hans, zh-CN) por pinyin, uno en chino tradicional (zh-Hant, zh-TW, zh-HK) por trazos y cualquier otro idioma por letra. Las entradas se ordenan con la colación de la que salen las cabeceras: un índice zh-Hant agrupado por pinyin se ordena por pinyin. Las lecturas y los trazos son los del ordenador de cadenas (CLDR); si lee mal un carácter (重 como zhòng en 重阳, 行 como xíng en 行业), da a la marca una clave sort escrita con caracteres que solo tengan la lectura buscada, que se ordena en su sitio: sort="崇阳" para 重阳, sort="航业" para 行业. Un navegador sin datos de colación china imprime un índice por pinyin o por trazos sin cabeceras. |
ignoreArticle | boolean | true en árabe | Ordena y agrupa las entradas árabes como si no llevaran el artículo inicial ال (ٱل): البصرة va bajo ب, entre بدر y بغداد, y se imprime tal como está escrita. الله conserva su artículo, y una entrada con clave sort propia se ordena por esa clave tal cual. En cualquier caso, un índice en árabe ignora los signos vocálicos y el tatweel, pone أ إ آ ٱ bajo ا, y ordena ؤ como و, ئ y ى como ي, ة como ه. |
groups.enabled | boolean | true | Imprime una cabecera sobre cada grupo de entradas (A, B…, o el número de trazos, 0–9 para las cifras, Símbolos para el resto; 数字 / 數字 y 符号 / 符號 en chino). |
groups.fontFamily, fontSize, fontWeight, italic, color | — | las de las entradas, peso 700 | La tipografía de la letra de cabeza. Se compone sobre el interlineado de las entradas. |
groups.marginTop | Dimension | una línea del índice | Espacio sobre cada grupo, con letra de cabeza o sin ella; ninguno sobre el primer grupo, cuya distancia al encabezado la fija el encabezado, ni en lo alto de una columna. |
groups.symbolsLabel, numbersLabel | string | según el idioma; '0–9', '数字' / '數字' en chino | Las cabezas de las entradas que empiezan por un símbolo y por una cifra. |
Los números de página salen del esquema del libro, como los del índice de contenidos: computeOutline() y contentOutline() enumeran las marcas de un texto como entradas de tipo 'indexMark' (con indexMark.path, sort, see, seeAlso, main, range e index), y outlineFromDoc() da a cada una la página en que cayó, que la composición registra en doc.indexMarks ({ sourceStart, pageIndex } por marca). buildDocument() vuelve a componer un documento que imprime su propio índice hasta que los números se estabilizan; un anfitrión que compone un libro capítulo a capítulo pasa al capítulo que contiene :::index el esquema del libro entero como PostextContent.outline. tocOutline() e indexOutline() separan un esquema en lo que leen el índice de contenidos y el analítico, para que el anfitrión asocie cada capítulo a lo que imprime: el sandbox vuelve a componer el capítulo del índice analítico solo cuando se mueve una marca, y el del índice de contenidos solo cuando se mueve un encabezado. contentOutline() indica además si un texto imprime un índice analítico (hasIndex).