Aller au contenu principal

Chapitre 6 · Partie II · Le métier

Configuration : notes et références

Les notes de bas de page, les numéros de ligne, les renvois et les citations, la table des matières et l’index

Mis à jour 2026-10-104 minenescafrptzhjaar

En bref

Cette page réunit les réglages des parties d’un livre qui renvoient ailleurs. Les notes se placent en bas de page, et les numéros de ligne dans la marge. Les renvois désignent une figure, une section ou une page, et les citations désignent les ouvrages que vous citez. La table des matières liste les chapitres, et l’index, en fin d’ouvrage, liste des termes avec leurs pages. Chaque section explique l’aspect de ces éléments et leur numérotation.

#Notes de bas de page

La propriété footnotes définit où vont les notes appelées avec [^id], comment elles sont numérotées et à quoi elles ressemblent. Le balisage est décrit dans Format du document.

interface FootnotesConfig {
  placement?: 'column' | 'chapterEnd' | 'spread'; // Foot of the citing column, after the chapter, or beside the text of a spread.
  numbering?: 'chapter' | 'document' | 'page' | 'column' | 'spread'; // Start again at each chapter, run on, or start again on each page / column / spread.
  numberFormat?: string;      // decimal, lower-roman, circled-decimal (①)…
  symbols?: string[];         // The note symbols of numberFormat: 'symbols'.
  markerPosition?: 'auto' | 'superscript' | 'inline' | 'side' | 'right'; // Raised, on the baseline, beside the word, or right of a vertical line.
  markerSize?: Dimension;     // Inline, side or right marker size; em is the text around it.
  numberGap?: 'en' | 'em';    // Space after the note's own number.
  chapterEndAlign?: 'foot' | 'text';   // chapterEnd: notes at the column foot, or under the text.
  fontSize?: Dimension;       // Note size; em is the body size.
  lineHeight?: Dimension;     // Note leading; em is the note size.
  color?: ColorValue;         // Note colour; the body colour when unset.
  textAlign?: TextAlign;      // The body alignment when unset.
  wordBreak?: 'normal' | 'keep-all'; // The document's cjk.wordBreak when unset.
  hangingIndent?: Dimension;  // Indent of a note's turnover lines.
  spaceBetween?: Dimension;   // Space between two notes.
  spaceAbove?: Dimension;     // Space between the text and the rule; em is the body size.
  spaceBelowRule?: Dimension; // Space between the rule and the first note.
  separator?: {
    enabled?: boolean;        // Draw the rule.
    width?: number;           // Rule length, a fraction of the column width.
    lineWidth?: Dimension;    // Rule thickness.
    color?: ColorValue;       // The note colour when unset.
  };
}
PropriétéTypePar défautDescription
placement'column' | 'chapterEnd' | 'spread''column' (livres japonais verticaux : 'chapterEnd')'column' place chaque note au pied de la colonne qui contient la ligne qui l’appelle, sous un court filet ; dans une mise en page à une colonne, c’est le pied de la page. 'chapterEnd' place toutes les notes d’un chapitre après son dernier bloc, dans l’ordre des appels. 'spread' (傍注, texte vertical uniquement) place les notes appelées sur les deux pages d’une double page à la fin de sa page impaire, la page de gauche d’un livre relié à droite, sous le filet : les notes appelées sur la page paire l’attendent, une note qui laisserait à la page impaire moins d’une ligne de texte reste au pied de la page paire avec celles qui la suivent, et un chapitre qui se termine sur une page paire y garde ses notes en attente. En texte horizontal, il se replie sur 'column' avec un avertissement unknownConfigValue. Depuis postext 1.16.
numbering'chapter' | 'document' | 'page' | 'column' | 'spread''chapter' (livres japonais horizontaux : 'page' ; avec placement: 'spread' : 'spread' ; avec numberFormat: 'symbols' au pied de la colonne : 'page')'chapter' repart de 1 sous chaque titre de niveau 1 et au début de chaque document. 'document' continue à travers le document et, dans un livre mis en page chapitre par chapitre, d’un chapitre au suivant (continuationAfter transmet le dernier numéro dans continuation.footnoteNumber). 'page' repart de 1 à chaque page et 'column' à chaque colonne, en comptant les notes là où la mise en page les place (les colonnes d’une page dans l’ordre de lecture) : la disposition 页下注 habituelle d’un livre chinois. Le document est mis en page, numéroté selon l’endroit où ses notes ont abouti, puis remis en page jusqu’à ce que les numéros se stabilisent (au plus trois constructions de plus). Ces deux modes s’appliquent aux notes au pied de la colonne : avec placement: 'chapterEnd', les notes sont numérotées par chapitre. 'spread' repart à chaque double page (pages 2–3, 4–5…), dans l’ordre des appels, pour placement: 'spread'.
numberFormatstring'decimal'La façon d’écrire les numéros, dans toutes les graphies qu’acceptent les réglages de numérotation : 'decimal', 'lower-roman', 'lower-alpha', 'circled-decimal' (ou '①'), 'cjk-decimal', '一'… L’appel dans le texte et le numéro qui ouvre la note l’utilisent tous deux. circled-decimal écrit en décimal les numéros au-delà de 50. Un nom inconnu numérote en décimal, avec un avertissement unknownNumberFormat. 'symbols' (ou '*') marque les notes de symboles de renvoi, ceux de symbols à tour de rôle : * † ‡ § ‖ ¶, puis doublés (** †† ‡‡…) et triplés ; les notes sont alors recomptées à chaque page, sauf si numbering est défini. Depuis postext 1.19.
symbolsstring[]['*', '†', '‡', '§', '‖', '¶']La suite qu’écrit numberFormat: 'symbols', doublée puis triplée une fois épuisée. Les fichiers latins de Google Fonts et de Fontsource contiennent * † § ¶ (la croix dans latin-ext) mais ni ‡ ni ‖, que le PDF dessine alors avec le glyphe .notdef de la police, avec un avertissement missingGlyph : avec une telle police, omettez-les (['*', '†', '§', '¶']) ou composez les notes dans un caractère qui les possède. Les chaînes vides sont ignorées et une liste vide conserve la valeur par défaut. Depuis postext 1.19.
markerPosition'auto' | 'superscript' | 'inline' | 'side' | 'right''auto''superscript' place en exposant l’appel dans le texte et le numéro qui ouvre la note, dans un corps réduit. 'inline' les pose sur la ligne de base : l’appel en markerSize, le numéro de la note au corps de la note ; en texte vertical, un appel cerclé en ligne se tient droit dans une cellule à lui. 'right' place un appel réduit contre le côté droit d’une ligne verticale, comme les livres japonais verticaux composent (1) ; en texte horizontal, c’est un exposant. 'side' (合印) place un petit appel à côté du mot marqué, du côté de son ruby, et le fait finir là où finit le dernier caractère du mot ; il ne prend aucune place dans la ligne, qui se coupe et se justifie comme s’il n’était pas là, et un interligne trop étroit pour lui est signalé par rubyExceedsLeading. 'auto' vaut inline pour circled-decimal, 'right' dans un livre japonais vertical, et exposant sinon. Dans tous les cas, l’appel reste avec le caractère qui le précède et n’ouvre jamais une ligne.
markerSizeDimension1em ; 0.6em pour 'side', 0.7em pour 'right'Taille d’un appel en ligne, latéral ou à droite ; em est le corps du texte qui l’entoure (0.75em est une réduction courante). Sans effet sur un appel en exposant.
numberGap'en' | 'em''en' (notes japonaises après le chapitre : 'em')L’espace après le numéro qui ouvre une note : un demi-cadratin, ou un cadratin entier de la note (une espace idéographique quand le numéro ou la note contient du texte CJK), jamais étirée ni coupée. Depuis postext 1.16.
markerTemplatestring'{n}' (livres japonais verticaux : '({n})')La façon d’écrire le numéro d’une note, {n} le représentant dans le format de numérotation et avec les chiffres du document : '({n})' donne les appels entre parenthèses des livres arabes, « (١) ». Le modèle écrit de la même façon l’appel dans le texte et le numéro qui ouvre la note. Un modèle sans {n} est lu comme la valeur par défaut.
noteNumberPosition'auto' | 'superscript' | 'inline''auto'La place du numéro qui ouvre la note : en exposant, ou sur la ligne au corps de la note. 'auto' suit markerPosition. Les livres arabes mettent l’appel en exposant dans le texte et posent sur la ligne le numéro propre de la note.
chapterEndAlign'foot' | 'text''foot'Avec placement: 'chapterEnd' : 'foot' place au pied de la colonne les notes qui terminent une colonne, les lignes restantes demeurant entre le texte et les notes, comme se tiennent les notes au pied de la colonne. 'text' les place juste sous le texte.
fontSizeDimension0.8emCorps du texte des notes. em et rem valent le corps du texte courant. Les notes utilisent la famille et les graisses du texte courant.
lineHeightDimension1.25emInterlignage du texte des notes ; em est le corps des notes. Les notes sont hors de la grille de ligne de base : elles s’empilent depuis le pied de la colonne, et le texte au-dessus d’elles reste sur la grille.
colorColorValuecouleur du texte courantCouleur du texte des notes.
textAlignTextAlignalignement du texte courantAlignement du texte des notes.
wordBreak'normal' | 'keep-all'cjk.wordBreakL’endroit où les notes se coupent entre caractères chinois, japonais et coréens, indépendamment du texte courant (voir cjk.wordBreak). 'keep-all' garde entière une suite de ces caractères : les lectures que cite une note en anglais (看月光) n’ont plus besoin d’un caractère de liaison (word joiner) entre chaque paire de caractères, tandis que les poèmes de la page continuent de se couper entre deux caractères quelconques. 'normal' fait l’inverse dans un document qui définit 'keep-all'. Les notes au pied de la colonne, en fin de chapitre et à côté d’une double page le prennent en compte. Depuis postext 1.28.
hangingIndentDimension0Retrait de la deuxième ligne d’une note et des suivantes, pour qu’elles s’alignent après son numéro.
spaceBetweenDimension0Espace entre deux notes.
spaceAboveDimension0.5emEspace entre la dernière ligne du texte et le filet ; em est le corps du texte courant. Avec 'chapterEnd' et chapterEndAlign: 'text', spaceAbove + spaceBelowRule donne l’espace entre le texte et la première note.
spaceBelowRuleDimension0.4emEspace entre le filet et la première note.
separator.enabledbooleantrueTracer le filet au-dessus des notes de chaque colonne. Avec false, les espaces ci-dessus sont conservés.
separator.widthnumber0.3Longueur du filet en fraction de la largeur de la colonne (0–1), depuis le bord gauche de la colonne.
separator.lineWidthDimension0.5ptÉpaisseur du filet.
separator.colorColorValuecouleur des notesCouleur du filet.
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' } },
}

Livres japonais. Un document japonais (locale: 'ja', depuis postext 1.16) donne aux champs qu’il laisse vides les valeurs de JLReq §4.2. Un livre vertical place ses notes après le chapitre (placement: 'chapterEnd', 後注), numérotées par chapitre, avec des appels ({n}) à droite de la ligne (markerPosition: 'right', chiffres droits grâce à cjk.uprightDigits) ; un livre horizontal les place au pied de la page, numérotées par page, avec des appels en exposant. Les deux tracent un filet long d’un tiers de la justification (separator.width: 1/3), et les notes après le chapitre prennent numberGap: 'em' et un retrait suspendu de deux cadratins. Une valeur explicite l’emporte et est conservée à l’enregistrement (stripFootnotesDefaults compare avec les valeurs par défaut propres au document) ; les documents chinois, arabes et latins se résolvent comme avant. footnoteDocumentDefaults(locale, writingMode, placement?) renvoie ces valeurs. Écrivez un appel avant un 。 final (先生[^1]。) : il reste avec le caractère qui le précède, et 。 n’ouvre jamais une ligne. Voir Mise en page japonaise › Notes.

Comment les notes se placent au pied de la colonne :

  • La note et son appel partagent une colonne. Avant de placer une ligne, la mise en page ajoute la hauteur des notes que cette ligne appelle pour la première fois (et celle du filet, pour la première note de la colonne). Une ligne dont les notes ne tiennent pas sous elle passe à la colonne suivante avec le reste de son paragraphe, selon les règles des orphelines et des veuves. La zone de texte de la colonne diminue de la hauteur des notes, si bien que l’équilibrage des colonnes et la bande de clôture d’un chapitre ne comptent que le texte.
  • Plusieurs notes dans une même colonne s’empilent dans l’ordre des appels sous un seul filet. Une note appelée de nouveau plus loin garde son numéro et n’est pas composée une deuxième fois.
  • Flottants en bas de page. Une figure qui occupe le pied d’une colonne après que ses notes ont été placées se met au-dessus d’elles ; les notes placées après la figure se mettent au-dessus d’elle.
  • Encadrés. Une note appelée dans un encadré (en ligne, flottant ou fixe) va au pied de la colonne où le texte reprend après l’encadré, généralement la même colonne. Un encadré qui termine le document laisse ses notes au pied de la colonne où le texte s’est terminé.
  • Limites. Une note n’est jamais coupée : une note plus haute qu’une colonne déborde de celle-ci. Les appels dans les légendes, les cellules de tableau et les titres ne sont pas lus (ils s’impriment tels qu’écrits).
  • Sortie. Le canvas, le HTML et le PDF peignent les notes, les appels (un numéro en exposant) et le filet. Dans le PDF, chaque appel renvoie par un lien à sa note, et un PDF balisé fait de chaque note un élément Note doté d’un /ID unique, répertorié dans l’/IDTree de l’arbre de structure (PDF/UA-1). Les notes sont des VDTBlock dont footnoteNote est défini, dans page.floats ; les filets sont dans page.footnoteAreas.
  • Avertissements. undefinedFootnote (un appel sans définition : le numéro s’imprime au-dessus d’une note vide) et unusedFootnote (une définition qu’aucun appel ne cite : elle n’est pas composée).

Le résolveur et la fonction de nettoyage suivent le modèle des autres sections :

import { DEFAULT_FOOTNOTES_CONFIG, resolveFootnotesConfig, stripFootnotesDefaults, footnoteDocumentDefaults } from 'postext';
 
resolveFootnotesConfig(config.footnotes, 'ja', 'vertical-rl'); // unset fields take the Japanese vertical defaults

#Numéros de ligne

La propriété lineNumbers imprime le numéro d’une ligne sur cinq (ou sur N) dans la marge, à côté de la ligne, comme le font les éditions critiques, les anthologies de poésie, les textes juridiques et les éditions scolaires. Elle compte les lignes des poèmes :::verse, ou toutes les lignes du texte. Elle est désactivée par défaut. Chaque numéro est peint sur la ligne de base de sa ligne, dans un corps qui lui est propre, et ne déplace jamais une ligne : la page est mise en page exactement comme elle le serait sans numéros. Depuis postext 1.23.

interface LineNumbersConfig {
  enabled?: boolean;        // Off by default.
  count?: 'verse' | 'all';  // The lines of poems, or every line of the text.
  interval?: number;        // Print the multiples of N.
  numberFirst?: boolean;    // Also print the first line after each restart.
  restart?: 'document' | 'chapter' | 'section' | 'page' | 'poem'; // Where the count starts again.
  startAt?: number;         // The number of the first line after a restart.
  position?: 'outer' | 'inner' | 'left' | 'right' | 'start' | 'end' | 'side';
  multiColumn?: 'each' | 'gutter' | 'outer-edges'; // Pages of two or more columns.
  gap?: Dimension;          // From the text to the number; em is the number's size.
  align?: 'auto' | 'left' | 'right';
  fontFamily?: string;      // The body family when unset.
  fontSize?: Dimension;     // em is the body size.
  fontWeight?: number;      // The body weight when unset.
  italic?: boolean;
  color?: ColorValue;       // The body colour when unset.
  format?: string;          // decimal, lower-roman, arabic-indic, 一…
}
PropriétéTypePar défautDescription
enabledbooleanfalseImprimer les numéros de ligne. Un document vertical (layout.writingMode: 'vertical-rl') n’en reçoit aucun, et true y est signalé par lineNumbersUnsupported.
count'verse' | 'all''verse''verse' compte les lignes des poèmes :::verse, chaque vers une seule fois : un rejet (la fin d’un vers trop long pour la justification, composée à la ligne suivante) ne prend pas de numéro, et l’espace entre les strophes n’est pas compté. Un poème dans la disposition arabe classique compte une ligne par bayt ; la deuxième ligne d’un bayt décalé n’est pas comptée. 'all' compte toutes les lignes des paragraphes du texte courant, des éléments de liste, des citations en bloc et des vers, dans l’ordre de lecture : page par page, colonne par colonne, de haut en bas.
intervalnumber5Imprimer le numéro de chaque ligne multiple de cette valeur (5, 10, 15…). Un poème dont la première ligne porte le numéro 37 imprime 40, 45… Un poème peut définir le sien dans sa directive (interval=N).
numberFirstbooleanfalseImprimer aussi le numéro de la première ligne comptée après chaque redémarrage.
restart'document' | 'chapter' | 'section' | 'page' | 'poem''poem' avec count: 'verse', 'page' avec count: 'all'L’endroit où le compte repart : jamais ('document', qui continue à travers les chapitres d’un livre), à chaque titre de niveau 1 ('chapter'), à chaque titre de niveau 1 ou 2 ('section'), à chaque page ('page') ou à chaque poème :::verse ('poem'). Le lineStart=N d’un poème et le lines=N de la directive :::numbering le font repartir n’importe où, dans tous les modes.
startAtnumber1Le numéro de la première ligne après un redémarrage.
position'outer' | 'inner' | 'left' | 'right' | 'start' | 'end' | 'side''outer'Le côté où se placent les numéros. 'outer' est à l’opposé du dos : la droite d’une page impaire et la gauche d’une page paire, l’inverse dans un livre relié à droite. 'inner' est le côté du dos. 'left' et 'right' sont les mêmes sur toutes les pages. 'start' et 'end' suivent le sens du document : 'start' est la droite dans un livre écrit de droite à gauche. 'side' les place dans la colonne latérale d’une mise en page 'oneAndHalf' avec layout.sideColumnRole: 'floats', contre le bord de la colonne latérale voisin du texte (gap n’est pas utilisé) ; sur une page sans colonne latérale, il se replie sur 'outer'.
multiColumn'each' | 'gutter' | 'outer-edges''outer-edges'Pages à deux colonnes de texte ou plus côte à côte. 'outer-edges' place les numéros de la première colonne à sa gauche et ceux de la dernière à sa droite ; les colonnes intermédiaires suivent 'each'. 'gutter' les place dans les gouttières : ceux de la première colonne à sa droite, ceux des autres à leur gauche. 'each' place les numéros de chaque colonne du côté position.
gapDimension1emLa distance entre le bord de la colonne et le numéro ; em est le corps propre du numéro.
align'auto' | 'left' | 'right''auto''auto' aligne chaque numéro du côté du texte : au fer à droite dans une marge gauche, au fer à gauche dans une marge droite. 'left' et 'right' alignent les numéros dans la largeur du numéro le plus large de la page.
fontFamilystringfamille du texte courantCaractère des numéros. Il est chargé et incorporé comme toute autre famille.
fontSizeDimension0.8emCorps des numéros ; em est le corps du texte courant.
fontWeightnumbergraisse du texte courantGraisse des numéros.
italicbooleanfalseComposer les numéros en italique.
colorColorValuecouleur du texte courantCouleur des numéros. Une couleur liée à la palette suit les palettes des parties et des sections.
formatstringdécimalLa façon d’écrire les numéros, dans n’importe laquelle des graphies des formats de numérotation ('lower-roman', 'arabic-indic', '一'…). Les numéros décimaux sont écrits avec les chiffres du document (numerals). Un nom inconnu numérote en décimal, avec un avertissement unknownNumberFormat.
lineNumbers: {
  enabled: true,
  count: 'verse',
  interval: 5,
  restart: 'document',          // one count through the whole book
  position: 'outer',
  fontSize: { value: 0.75, unit: 'em' },
  italic: true,
}

Ce qui est compté, et ce qui ne l’est pas :

  • Jamais comptés : les titres, les légendes, les tableaux et les images, les formules hors texte, le texte de maquette (ouvertures, titres courants), les notes de bas de page et de fin de chapitre, la table des matières, les entrées de l’index et de la bibliographie, et les pages blanches.
  • Encadrés et prose. Le texte d’un encadré n’est pas compté, et avec count: 'verse' la prose non plus, sauf si le style de paragraphe dans lequel elle est composée indique lineNumbers: true ; un style avec lineNumbers: false n’est jamais compté (voir Styles de paragraphe).
  • Un poème. La directive d’un poème accepte numbered=false (ses lignes ne sont pas comptées), lineStart=N (sa première ligne porte le numéro N, et le compte repart là) et interval=N. :::numbering{lines=N} donne le numéro N à la ligne comptée suivante, où qu’elle se trouve. Voir Format du document › :::verse et :::numbering.

Dans un livre mis en page chapitre par chapitre, restart: 'document' reporte le compte d’un chapitre au suivant par continuation.lineNumber. continuationAfter compte les vers à partir du texte ; avec count: 'all', le compte dépend de la mise en page, si bien que l’hôte transmet le lastLineNumber du document du chapitre précédent, comme le fait le Sandbox.

Avec position: 'side', les numéros partagent la colonne latérale avec les encadrés latéraux, les légendes latérales et les figures latérales. Un numéro qui chevauche l’un de ces éléments est peint malgré tout, aucun des deux ne bouge, et la construction signale un avertissement de contenu lineNumberOverlap qui désigne la ligne numérotée.

Sortie. Le canvas, le PDF, la visionneuse HTML et l’EPUB à mise en page fixe peignent les numéros. Dans un PDF balisé, ce sont des artefacts de mise en page et chacun porte un /ActualText vide, si bien que le texte copié ou extrait passe d’une ligne à l’autre sans eux. La sortie HTML les cache aux technologies d’assistance (aria-hidden), à la sélection et au texte copié. L’EPUB recomposable, dont les lignes sont composées par le système de lecture, ne garde que les numéros des vers : un span pt-line-number (lui aussi aria-hidden) dans la marge de début de la strophe, à côté de chaque ligne qui porte un numéro à l’impression. Dans le VDT, les numéros sont un emplacement de maquette de chaque page (page.lineNumbers, dont les blocs de texte sont marqués artifact) et une liste de repères (page.lineNumberMarks : number, label, columnIndex, blockId, lineIndex) ; le document enregistre lastLineNumber.

Non pris en charge : les numéros de ligne en texte vertical, un renvoi qui imprime le numéro d’une ligne, les notes rattachées à des numéros de ligne, et les numéros des lignes des cellules de tableau, des légendes ou des listings de code.

Dans le Sandbox, ces réglages forment la section Numéros de ligne du panneau Maquette. Le résolveur et la fonction de nettoyage suivent le modèle des autres sections ; la police, la graisse et la couleur viennent du texte courant :

import { DEFAULT_LINE_NUMBERS_CONFIG, resolveLineNumbersConfig, stripLineNumbersDefaults } from 'postext';
 
resolveLineNumbersConfig(config.lineNumbers, resolvedBodyText); // unset font, weight and colour follow the body

#Renvois

La propriété crossRefs définit les mots qu’un renvoi imprime autour d’un numéro ou d’une page, et le style que prend un :ref qui n’en définit aucun. Chaque modèle contient {n} à l’endroit du numéro ; un modèle qui ne le contient pas reçoit le numéro après une espace insécable ("§" imprime § 3.2). Un modèle non défini suit la langue du document : chapter / section / p. en anglais, capítulo / sección / pág. en espagnol, 第{n}章 / 第{n}节 / 第{n}页 en chinois, et ainsi de suite pour le français, l’allemand, l’italien, le portugais, le catalan et le néerlandais.

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=.
  breakLabels?: boolean; // A label of words breaks at its spaces.
}
PropriétéTypePar défautDescription
chapterstringselon la langueUn renvoi à un titre de niveau 1 : "chapter {n}". Un numéro de titre dont le modèle écrit déjà le mot (Chapter {1}, 第{1:一}章) s’imprime tel quel.
sectionstringselon la langueUn renvoi à un titre de niveau 2 à 6 : "section {n}", "§ {n}".
pagestringselon la langueUn renvoi de page (style=page) : "p. {n}", "page {n}".
defaultStyle'default' | 'number' | 'title' | 'page''default'Ce qu’imprime un :ref vers un titre ou une ancre sans style=. 'default' : un titre numéroté par son mot et son numéro, un titre non numéroté par son intitulé, une ancre par son texte. Un renvoi qui définit style le garde, et les renvois aux figures et aux tableaux ne sont pas concernés.
breakLabelsbooleantrueAutoriser une ligne à se couper aux espaces d’un renvoi dont l’étiquette est faite de mots : le texte d’une ancre [words], l’intitulé d’un titre ou d’un encadré, un remplacement text="…" (y compris sur un renvoi à une figure ou à un tableau). Les espaces de l’étiquette s’étirent et se resserrent alors avec la ligne, et le renvoi reste un seul lien ; ses mots ne reçoivent pas de césure. Un nombre, un chiffre romain ou une lettre isolée dans une telle étiquette reste attaché au mot qui le précède (Fig. 1a, plate IV). Une étiquette qui contient un numéro ou une page (section 3.2, p. 112, Fig. 1.7, Theorem 2) ne se coupe jamais, même quand son modèle contient une espace ordinaire. false compose chaque étiquette comme un seul mot, sans coupure de ligne à l’intérieur, comme jusqu’à postext 1.27. Une configuration enregistrée avant la configVersion 12 dont le texte contient un renvoi est lue avec false, pour que ses lignes restent en place (voir Paquets écrits par postext 1.4 ou antérieur).

Les renvois prennent la couleur, la graisse et l’inclinaison communes à tous les renvois (bodyText.referenceColor, referenceBold, referenceItalic).

#Citations

La propriété citations choisit le style de citation et l’apparence des citations et de la bibliographie. Le balisage est décrit dans Citations et bibliographie ; le style est appliqué par le package 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';
  hyphenateNames?: boolean; // false: the cited authors' names are never divided
  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;
  };
}
PropriétéTypePar défautDescription
stylestring'apa'L’identifiant d’un style fourni (voir Styles) ou 'custom'. Le style décide de ce que disent les citations et les entrées : noms, dates, ordre, ponctuation, et si les citations sont des notes.
customStylestring—Un style CSL complet, le XML d’un fichier .csl, utilisé quand style vaut 'custom'. Le Sandbox le charge depuis un fichier.
localestringlangue du documentLa locale CSL dans laquelle le style écrit ses mots (en-US, es-ES, zh-CN, zh-TW, ja-JP…). Un document japonais se lit comme ja-JP : les citations narratives relient deux auteurs par と et abrègent les listes plus longues par ほか.
linkbooleantrueUne citation renvoie par un lien à son entrée dans la bibliographie (lien PDF, ancre HTML, clic dans le Sandbox).
marker'style' | 'brackets' | 'parentheses' | 'superscript' | 'corner''style'La façon dont un style numérique marque une citation : comme l’écrit le style, [1], (1), un exposant, ou 〔1〕 (droit en texte vertical). Un localisateur suit le numéro.
collapseRangesbooleantrueDes numéros consécutifs sous forme d’intervalle : 1–3 dans un seul appel, [2]–[4] dans les appels de l’IEEE. false les garde séparés.
notes'footnote' | 'warichu''footnote'L’endroit où un style à notes place ses citations : en notes de bas de page (placées et numérotées selon footnotes), ou en notes sur deux rangs à l’intérieur de la ligne (夹注).
numbering'book' | 'chapter''book'Les citations à l’échelle du livre, ou chaque chapitre à part (chaque document, et chaque titre de niveau 1 après une citation) : un style numérique numérote chaque chapitre à partir de 1 et un ouvrage cité dans deux chapitres prend le numéro de chacun ; un style à notes écrit un ouvrage en entier à sa première citation dans chaque chapitre. Prévu pour bibliography.scope: 'chapter', dont les listes prennent alors les numéros du chapitre.
hyphenateNamesbooleantrueLaisser le dictionnaire couper les noms des auteurs cités. false garde entier le nom de famille de chaque personne des références (auteurs, éditeurs, traducteurs) et chaque nom donné en une seule chaîne, partout où il apparaît avec sa majuscule : dans une citation, dans le texte courant et dans la liste, si bien qu’aucune ligne ne finit sur (Lup-. Un nom double est lu partie par partie, et un auteur nommé Baker ne garde pas entier le mot baker. Voir Mots gardés entiers.
bibliography.titlestringselon la langueTitre au-dessus de la liste, un paragraphe en gras. Vide : aucun. Un titre de votre choix se place au-dessus de :::bibliography.
bibliography.scope'book' | 'chapter''book'Une seule liste de tous les ouvrages que cite le livre, ou une par chapitre avec les ouvrages qu’il cite. Dans un document de plusieurs chapitres, chaque H1 commence une nouvelle liste de chapitre ; avec auto, un chapitre qui ne place aucun :::bibliography reçoit sa liste à la fin.
bibliography.autobooleantruePlacer la liste après le texte (dans le dernier chapitre, pour une liste à l’échelle du livre) quand aucun :::bibliography ne la place.
bibliography.fontSizeDimension0.9emCorps des entrées ; em est le corps du texte courant.
bibliography.lineHeightDimensioninterlignage du texte courantInterlignage des entrées.
bibliography.hangingIndentDimension2emRetrait des lignes suivantes d’une entrée non numérotée.
bibliography.entrySpacingDimension0.3emEspace entre deux entrées.
bibliography.labelWidthDimensionétiquette la plus longueLargeur de la colonne où se tiennent les numéros d’une liste numérotée : le texte de chaque entrée commence à cette distance, sur sa première ligne comme sur les suivantes, si bien que 9. et 10. partagent la colonne. L’étiquette reste une partie du texte de l’entrée.
bibliography.labelAlign'left' | 'right''left'La place d’une étiquette dans sa colonne : contre son bord gauche, ou contre le texte (9. et 10. finissent ensemble).
bibliography.doi'link' | 'text' | 'hide''link'Les DOI et les URL sous forme de liens, de texte simple, ou omis.
bibliography.includeUncitedbooleanfalseLister toutes les références, citées ou non (comme nocite: "@*").
bibliography.groupByLanguagebooleanfalseLes ouvrages en chinois, en japonais et en coréen d’abord, puis les autres. Styles auteur-date et auteur-page uniquement : une liste numérotée garde l’ordre de ses numéros.

#Table des matières

La propriété toc configure ce qu’imprime une directive :::toc (voir Format du document). La table est assemblée à partir du plan du document (chaque titre avec son numéro et l’étiquette de sa page, chaque :::part), si bien qu’elle suit les chapitres : renommez-en un, déplacez-le dans une autre partie, changez ses auteurs, et les entrées changent avec lui. Une entrée se compose du numéro du titre dans une colonne à part, de l’intitulé, de points de conduite et de l’étiquette de page au bord droit, puis d’une ligne de sous-titre facultative ; une partie est une rangée dessinée par 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: [/* a band box, 'SECTION {number}', '{titleText}', '{pageNumber}' */] },
    },
  },
};
PropriétéTypePar défautDescription
levelsTocLevelConfig[]niveau 1Les niveaux de titre listés, chacun avec la typographie de ses entrées : fontFamily, fontSize, lineHeight (par défaut l’interlignage du texte courant, pour que la table tombe sur la grille), fontWeight, italic, color, indent (de l’entrée entière), numberWidth / numberGap (la colonne des numéros après laquelle commence l’intitulé ; les numéros y sont alignés à droite, et un numéro plus large que numberWidth, comme الفصل الحادي عشر ou Chapter 12, élargit la colonne de son niveau jusqu’au plus large d’entre eux), numberFontFamily, numberFontSize, numberFontWeight, numberColor, marginTop, marginBottom. Les champs non définis héritent du texte courant. Le numéro repose sur la ligne de base de la première ligne de l’intitulé, quels que soient son caractère et son corps, dans le canvas, en HTML et dans le PDF (jusqu’à postext 1.4, il était centré sur la hauteur d’x comme une puce de liste, si bien qu’un caractère de titrage ou un corps plus grand le faisait remonter au-dessus de l’intitulé). Un moteur de rendu de votre cru trouve cette ligne de base dans le bulletBaselineY du bloc de l’entrée ; bulletY reste le milieu du cadratin du numéro, comme en 1.4, si bien qu’un moteur de rendu antérieur au nouveau champ dessine les numéros là où il l’a toujours fait.
unnumberedTocEntryStyleConfig—Remplacements pour les titres dont le style a numbered: false (une préface) : ils n’impriment aucun numéro et commencent au ras de l’indent du niveau.
pageNumberobjetcaractère du niveau 1, graisse du texte courantfontFamily, fontSize, fontWeight, italic, color de l’étiquette de page, et width (par défaut 2em) : la colonne qui lui est réservée au bord droit, où elle est alignée à droite.
leaderobjetchar est répété dans l’espace entre l’intitulé et le numéro de page, aligné à droite pour que les points d’entrées consécutives s’alignent ('. ' les espace) ; gap est l’espace minimal gardé entre l’intitulé et les points de conduite. Les points de conduite prennent autant de caractères qu’il en tient, mesurés comme une suite entière dans leur caractère, si bien qu’une police dont le crénage écarte des points consécutifs reçoit moins de points, plutôt que des points qui atteignent le numéro de page. (Jusqu’à postext 1.4, le compte se faisait à partir d’un seul point, et dans une telle police les points de conduite couraient de l’intitulé jusque dans le numéro.) Un intitulé qui ne laisserait pas de place à l’étiquette passe à la ligne un peu plus tôt. Des points de conduite ne sont composés qu’à partir de trois caractères : là où il n’en tient qu’un ou deux, la rangée n’en a aucun, car un point isolé avant le numéro de page se lit comme un point final. Dans un PDF balisé, les points sont des artefacts, exclus du texte extrait. Le texte courant compose les mêmes points de conduite à ses taquets de tabulation.
subtitleobjetUne deuxième ligne sous l’entrée, tirée d’un attribut du titre (attr), par exemple les auteurs du chapitre, avec ses propres fontFamily, fontSize, fontWeight, italic (par défaut true), color et un indent supplémentaire. La ligne partage l’interlignage de l’entrée et ne se sépare jamais de son intitulé.
parts.enabledbooleantrueDonner ou non une rangée aux intertitres de partie.
parts.breakBeforebooleanfalseOuvrir une nouvelle page avant chaque rangée de partie sauf la première, pour que les chapitres de chaque partie soient listés sur une page à part.
parts.designDesignSlotvideMaquette de la rangée ; son conteneur est la rangée (largeur de colonne × height). Variables : , , …, et (l’étiquette de la page de partie ; avec parts.page: false, qui n’ouvre aucune page de partie, l’étiquette de la page où commence le contenu de la partie, là où ses titres courants passent à elle ; dans un livre mis en page chapitre par chapitre, une directive qui clôt son chapitre désigne la première page de contenu du chapitre suivant). Les couleurs liées à la palette prennent la palette propre de la partie, si bien que la rangée de chaque section vient dans sa couleur. Quand elle est vide, (avec le numberSeparator du H1 entre les deux) et le numéro de page sont composés avec la typographie des entrées de niveau 1.
parts.height, marginTop, marginBottomDimension2em, 0, 0Hauteur de la rangée et espace autour. em est le corps du texte courant, si bien que la rangée par défaut fait deux fois le corps du texte en hauteur, et non deux lignes de texte : avec un texte courant en 9,5/13,5 pt, elle mesure 19 pt. Pour une rangée de deux lignes de texte, donnez la hauteur en pt (27pt dans ce cas).

Les étiquettes de page sont celles que le document imprime. buildDocument() remet en page un document contenant un :::toc avec les étiquettes de la passe précédente jusqu’à ce qu’elles se stabilisent (au plus trois passes supplémentaires) ; un hôte qui met en page un livre chapitre par chapitre fournit à la place le plan du livre entier dans PostextContent.outline, assemblé à partir de contentOutline() (titres et parties tirés du seul texte) et de outlineFromDoc() (les mêmes entrées avec les étiquettes de page d’une mise en page), et remet en page le chapitre de la table des matières chaque fois que l’outlineKey() de ce plan change. Chaque entrée de titre porte le number qu’imprime la table et, pour un titre numéroté, son counter : le compte courant du niveau après un éventuel startAt, quoi qu’imprime le modèle, c’est-à-dire ce qu’un hôte affiche à côté d’un chapitre dans ses propres listes.

#Index

La propriété index configure ce qu’imprime une directive :::index (voir Format du document) : les termes marqués avec :index[…] et :index{term="…"} dans le texte, triés, regroupés par première lettre (par initiale pinyin ou par nombre de traits en chinois, par rangée du gojūon en japonais, voir groupBy), chacun avec les pages où il apparaît. Une entrée se compose de son terme, d’un séparateur et de ses numéros de page ; ses sous-entrées suivent, avec un cran de retrait par niveau, et les lignes suivantes d’une entrée sont décalées de turnoverIndent pour ne jamais s’aligner sur une sous-entrée.

const config: PostextConfig = {
  headingStyles: [
    // The index in two columns, under its own heading.
    { id: 'index', 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' } },
  },
};
PropriétéTypePar défautDescription
fontFamily, fontSize, lineHeight, fontWeight, color—le texte courantTypographie des entrées. Chaque ligne de l’index, têtes de lettre comprises, est composée sur lineHeight ; l’index garde son propre rythme et ne s’aligne pas sur la grille de ligne de base.
indentDimension1emRetrait de chaque niveau de sous-entrée.
turnoverIndentDimension2emRetrait supplémentaire des lignes suivantes d’une entrée, au-delà de son propre niveau.
entrySpacingDimension0Espace au-dessus de chaque entrée principale.
separator, locatorSeparator, rangeSeparatorstring', ', ', ', '–' ; les deux premiers valent '، ' en écriture arabeCe qui s’imprime entre le terme et sa première page, entre deux pages, et entre les bornes d’un intervalle.
mergeRangesbooleantrueRéunir en intervalle les pages consécutives d’un même format de numérotation : 12, 13, 14 imprime 12–14. Les pages principales ne sont jamais réunies.
rangeFormat'full' | 'chicago''full'La façon d’écrire le second nombre d’un intervalle : en entier (234–237) ou sans les chiffres qu’il partage avec le premier, comme le demande The Chicago Manual of Style (9.64) : 71–72, 100–104, 101–8, 321–28, 1496–500. Les étiquettes en chiffres romains s’écrivent toujours en entier.
maingrasLa façon de composer une page principale (main sur la marque).
seeselon la langue, italique (romain en écriture arabe)Les mots qui précèdent un renvoi. Non définis, ils suivent la langue du document : See / See also, Véase / Véase también, Voir / Voir aussi, 见 / 另见 (見 / 另見 en chinois traditionnel)… Un index chinois place le renvoi après un point, sans espace : 贾琏 12。见贾政.
localestringcelle du documentLa langue dont l’ordre alphabétique trie les entrées (une étiquette BCP 47, lue par Intl.Collator). En espagnol, ñ se trie après n et ouvre un groupe à part ; les accents ne changent jamais l’ordre.
groupBy'auto' | 'letter' | 'pinyin' | 'stroke' | 'gojuon' | 'kana' | 'none''auto'Ce que sont les têtes de groupe. 'letter' : la première lettre de la clé de tri. 'pinyin' : une entrée qui commence par un caractère han se range sous l’initiale latine de sa lecture pinyin (贾宝玉 sous J), et une clé de tri latine sous sa lettre, après les entrées chinoises de cette lettre (le collateur place les lettres latines après les caractères chinois) : sort="jia mu" termine le J. 'stroke' : sous le nombre de traits du premier caractère, 一畫, 二畫… (一画… en chinois simplifié). 'gojuon' : une entrée en kana se range sous sa rangée du gojūon, あ行, か行 … わ行, et 'kana' sous son premier kana (katakana et hiragana partageant les mêmes têtes), dans l’ordre JIS X 4061 d’un index japonais : selon la lecture (yomi de la marque, sinon la lecture en kana de son ruby, sinon sort, sinon le texte), les katakana comme des hiragana, les petits kana comme des grands, ー comme la voyelle qui le précède, 清 avant 濁 avant 半濁 ; les symboles, puis les nombres par valeur, puis les mots latins sous leurs lettres, puis les kana ; une entrée encore introduite par un kanji est signalée par indexReadingMissing et placée après les kana, sans tête. 'none' : aucune tête ; symboles, nombres et mots ne sont séparés que par groups.marginTop. 'auto' regroupe un index japonais (ja, ja-*) par rangée du gojūon, un index en chinois simplifié (zh, zh-Hans, zh-CN) par pinyin, un index en chinois traditionnel (zh-Hant, zh-TW, zh-HK) par traits, et toutes les autres langues par lettre. Les entrées se trient selon la collation d’où viennent les têtes : un index zh-Hant groupé par pinyin se trie par pinyin. Les lectures et les nombres de traits sont ceux du collateur (CLDR) ; là où il lit mal un caractère (重 lu zhòng dans 重阳, 行 lu xíng dans 行业), donnez à la marque une clé sort en caractères qui n’ont que la lecture voulue, et l’entrée se trie à sa place : sort="崇阳" pour 重阳, sort="航业" pour 行业. Un navigateur sans données de collation chinoise imprime un index par pinyin ou par traits sans têtes.
ignoreArticlebooleantrue en arabeTrier et grouper les entrées arabes comme si l’article initial ال (ٱل) n’était pas là : البصرة se range sous ب, entre بدر et بغداد, et s’imprime tel qu’écrit. الله garde son article, et une entrée dotée de sa propre clé sort se trie selon cette clé telle quelle. Quelle que soit cette valeur, un index arabe ignore les signes vocaliques et le tatweel, range أ إ آ ٱ sous ا, et trie ؤ comme و, ئ et ى comme ي, ة comme ه.
groups.enabledbooleantrueImprimer une tête au-dessus de chaque groupe d’entrées (A, B…, ou le nombre de traits, 0–9 pour les nombres, Symbols pour le reste ; 数字 / 數字 et 符号 / 符號 en chinois).
groups.fontFamily, fontSize, fontWeight, italic, color—ceux des entrées, graisse 700Le caractère de la tête de lettre. Elle est composée sur le pas de ligne des entrées.
groups.marginTopDimensionune ligne de l’indexEspace au-dessus de chaque groupe, avec ou sans tête ; aucun au-dessus du premier groupe, dont la distance au titre est celle que fixe le titre, ni en haut d’une colonne.
groups.splitMinEntriesnumber2Quand une colonne ou une page se termine à l’intérieur d’un groupe, le nombre minimal d’entrées du groupe laissées au pied de la colonne et le nombre minimal reportées en tête de la suivante. Avec 2, aucune entrée ne reste seule sous sa tête au pied d’une colonne et aucune n’ouvre seule une colonne avant le groupe suivant : un groupe de deux ou trois entrées se déplace entier, et un groupe de quatre ou plus ne se divise que là où deux entrées restent et deux partent. Une entrée est un bloc d’entrée (une entrée principale ou une sous-entrée, avec la tête et les entrées sans page placées au-dessus) ; un groupe plus haut qu’une colonne est divisé là où il le faut. La coupe d’équilibrage d’une bande de clôture suit aussi la règle, si bien qu’un dernier groupe qui ne peut pas être partagé peut laisser les colonnes inégales de ses lignes. 1 permet à une colonne de se terminer entre deux entrées quelconques, comme jusqu’à postext 1.27. Depuis postext 1.28 ; les documents enregistrés auparavant qui impriment un index gardent 1 (pinLegacyIndexGroupSplit).
groups.symbolsLabel, numbersLabelstringselon la langue ; '0–9', '数字' / '數字' en chinoisLes têtes des entrées qui commencent par un symbole et de celles qui commencent par un chiffre.

Les numéros de page viennent du plan du livre, comme ceux de la table des matières : computeOutline() et contentOutline() listent les marques d’index d’un texte comme des entrées de type 'indexMark' (avec indexMark.path, sort, see, seeAlso, main, range et index), et outlineFromDoc() donne à chacune la page où elle a abouti, que la construction enregistre dans doc.indexMarks ({ sourceStart, pageIndex } par marque). buildDocument() remet en page un document qui imprime son propre index jusqu’à ce que les numéros se stabilisent ; un hôte qui met en page un livre chapitre par chapitre transmet au chapitre contenant :::index le plan du livre entier dans PostextContent.outline. tocOutline() et indexOutline() séparent dans un plan ce que lisent respectivement la table des matières et l’index, pour qu’un hôte puisse associer à chaque chapitre la partie du plan qu’il imprime : le Sandbox ne remet en page le chapitre de l’index que lorsqu’une marque se déplace, et celui de la table des matières que lorsqu’un titre se déplace. contentOutline() indique aussi si un texte imprime un index (hasIndex).