Vai al contenuto principale

Capitolo 6 · Parte II · Il mestiere

Configurazione: note e riferimenti

Note a piè di pagina, numeri di riga, rimandi e citazioni, l’indice dei contenuti e l’indice analitico

Aggiornato 2026-10-104 minenescadefritptzhjaar

In breve

Questa pagina riguarda le impostazioni delle parti di un libro che rimandano altrove. Le note a piè di pagina stanno in fondo alla pagina, e i numeri di riga stanno nel margine. I rimandi indicano una figura, una sezione o una pagina, e le citazioni indicano le opere che citi. Il sommario elenca i capitoli, e l’indice analitico in fondo al libro elenca i termini con le loro pagine. Ogni sezione spiega l’aspetto di questi elementi e come vengono numerati.

#Note a piè di pagina

La proprietà footnotes stabilisce dove vanno le note citate con [^id], come sono numerate e che aspetto hanno. Il markup è descritto in Formato del documento.

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.
  };
}
ProprietàTipoPredefinitoDescrizione
placement'column' | 'chapterEnd' | 'spread''column' (libri giapponesi in verticale: 'chapterEnd')'column' colloca ogni nota al piede della colonna che contiene la riga che la cita, sotto un breve filetto; in un’impaginazione a una colonna è il piede della pagina. 'chapterEnd' colloca tutte le note di un capitolo dopo il suo ultimo blocco, in ordine di citazione. 'spread' (傍注, solo testo verticale) colloca le note citate in entrambe le pagine di una doppia pagina alla fine della sua pagina dispari, la pagina sinistra di un libro rilegato a destra, sotto il filetto: le note citate nella pagina pari la aspettano, una nota che lascerebbe alla pagina dispari meno di una riga di testo resta al piede della pagina pari insieme a quelle che la seguono, e un capitolo che termina su una pagina pari vi conserva le note in attesa. Nel testo orizzontale ripiega su 'column' con un avviso unknownConfigValue. Da postext 1.16.
numbering'chapter' | 'document' | 'page' | 'column' | 'spread''chapter' (libri giapponesi in orizzontale: 'page'; con placement: 'spread': 'spread'; con numberFormat: 'symbols' al piede della colonna: 'page')'chapter' ricomincia da 1 sotto ogni titolo di livello 1 e all’inizio di ogni documento. 'document' prosegue per tutto il documento e, in un libro impaginato capitolo per capitolo, da un capitolo al successivo (continuationAfter riporta l’ultimo numero come continuation.footnoteNumber). 'page' ricomincia da 1 a ogni pagina e 'column' a ogni colonna, contando le note dove l’impaginazione le colloca (le colonne di una pagina in ordine di lettura): il consueto 页下注 di un libro cinese. Il documento viene impaginato, numerato in base a dove sono finite le sue note e impaginato di nuovo finché i numeri non restano stabili (al massimo tre build in più). Entrambi si applicano alle note al piede della colonna: con placement: 'chapterEnd' le note sono numerate per capitolo. 'spread' ricomincia a ogni doppia pagina (pagine 2–3, 4–5…), in ordine di citazione, per placement: 'spread'.
numberFormatstring'decimal'Come si scrivono i numeri, in una qualsiasi delle grafie accettate dalle impostazioni di numerazione: 'decimal', 'lower-roman', 'lower-alpha', 'circled-decimal' (o '①'), 'cjk-decimal', '一'… La usano sia il richiamo sia il numero che apre la nota. circled-decimal scrive in decimale i numeri oltre il 50. Un nome sconosciuto numera in decimale, con un avviso unknownNumberFormat. 'symbols' (o '*') contrassegna le note con simboli di richiamo, a turno quelli di symbols: * † ‡ § ‖ ¶, poi raddoppiati (** †† ‡‡…) e triplicati; le note vengono allora contate di nuovo a ogni pagina, a meno che non sia impostato numbering. Da postext 1.19.
symbolsstring[]['*', '†', '‡', '§', '‖', '¶']La sequenza che scrive numberFormat: 'symbols', raddoppiata e poi triplicata quando si esaurisce. I file latini di Google Fonts e Fontsource contengono * † § ¶ (la croce in latin-ext) ma né ‡ né ‖, che il PDF disegna allora con il glifo .notdef del carattere, con un avviso missingGlyph: con un carattere del genere, escludili (['*', '†', '§', '¶']) o componi le note in un carattere che li abbia. Le stringhe vuote vengono scartate e un elenco vuoto mantiene il valore predefinito. Da postext 1.19.
markerPosition'auto' | 'superscript' | 'inline' | 'side' | 'right''auto''superscript' innalza il richiamo nel testo e il numero che apre la nota, in corpo ridotto. 'inline' li colloca sulla linea di base: il richiamo a markerSize, il numero della nota al corpo della nota; nel testo verticale un richiamo cerchiato in linea sta dritto in una cella propria. 'right' colloca un richiamo ridotto a filo del lato destro di una riga verticale, come i libri giapponesi in verticale compongono (1); nel testo orizzontale è un apice. 'side' (合印) colloca un piccolo richiamo accanto alla parola marcata, dal lato del suo ruby, terminando dove termina l’ultimo carattere della parola; non occupa spazio nella riga, che va a capo e si giustifica come se non ci fosse, e uno spazio tra le righe troppo stretto per accoglierlo viene segnalato come rubyExceedsLeading. 'auto' equivale a inline per circled-decimal, a 'right' in un libro giapponese in verticale, e ad apice negli altri casi. In ogni caso il richiamo resta con il carattere che lo precede e non apre mai una riga.
markerSizeDimension1em; 0.6em per 'side', 0.7em per 'right'Dimensione di un richiamo inline, side o right; em è la dimensione del testo che lo circonda (0.75em è una riduzione comune). Nessun effetto su un richiamo in apice.
numberGap'en' | 'em''en' (note giapponesi dopo il capitolo: 'em')Lo spazio dopo il numero che apre una nota: uno spazio en, o un em pieno della nota (uno spazio ideografico quando il numero o la nota contengono testo CJK), mai allargato né spezzato. Da postext 1.16.
markerTemplatestring'{n}' (libri giapponesi in verticale: '({n})')Come si scrive il numero di una nota, dove {n} sta per il numero nel formato di numerazione e nelle cifre del documento: '({n})' dà i richiami tra parentesi dei libri arabi, «(١)». Scrive allo stesso modo il richiamo nel testo e il numero che apre la nota. Un modello senza {n} si legge come il valore predefinito.
noteNumberPosition'auto' | 'superscript' | 'inline''auto'Dove sta il numero che apre la nota, in apice o sulla riga al corpo della nota. 'auto' segue markerPosition. I libri arabi mettono in apice il richiamo nel testo e collocano sulla riga il numero proprio della nota.
chapterEndAlign'foot' | 'text''foot'Con placement: 'chapterEnd': 'foot' colloca al piede della colonna le note che la chiudono, con le righe avanzate che restano tra il testo e le note, come stanno le note al piede della colonna. 'text' le colloca subito sotto il testo.
fontSizeDimension0.8emDimensione del testo delle note. em e rem sono il corpo del testo corrente. Le note usano la famiglia e i pesi del testo corrente.
lineHeightDimension1.25emInterlinea del testo delle note; em è il corpo della nota. Le note sono fuori dalla griglia della linea di base: si impilano a partire dal piede della colonna, e il testo sopra di esse resta sulla griglia.
colorColorValuecolore del testo correnteColore del testo delle note.
textAlignTextAlignallineamento del testo correnteAllineamento del testo delle note.
wordBreak'normal' | 'keep-all'cjk.wordBreakDove le note vanno a capo tra caratteri cinesi, giapponesi e coreani, indipendentemente dal testo corrente (vedi cjk.wordBreak). 'keep-all' tiene unita una sequenza di tali caratteri: le letture citate in una nota in inglese (看月光) non hanno più bisogno di un word joiner tra ogni coppia di caratteri, mentre le poesie della pagina continuano ad andare a capo tra due caratteri qualsiasi. 'normal' fa il contrario in un documento che imposta 'keep-all'. Lo adottano le note al piede della colonna, alla fine del capitolo e accanto a una doppia pagina. Da postext 1.28.
hangingIndentDimension0Rientro della seconda riga e delle successive di una nota, perché si allineino oltre il suo numero.
spaceBetweenDimension0Spazio tra due note.
spaceAboveDimension0.5emSpazio tra l’ultima riga di testo e il filetto; em è il corpo del testo corrente. Con 'chapterEnd' e chapterEndAlign: 'text', spaceAbove + spaceBelowRule è lo spazio tra il testo e la prima nota.
spaceBelowRuleDimension0.4emSpazio tra il filetto e la prima nota.
separator.enabledbooleantrueDisegna il filetto sopra le note di ogni colonna. Con false gli spazi sopra restano.
separator.widthnumber0.3Lunghezza del filetto come frazione della larghezza della colonna (0–1), a partire dal bordo sinistro della colonna.
separator.lineWidthDimension0.5ptSpessore del filetto.
separator.colorColorValuecolore delle noteColore del filetto.
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' } },
}

Libri giapponesi. Un documento giapponese (locale: 'ja', da postext 1.16) assegna ai campi che lascia non impostati i valori di JLReq §4.2. Un libro verticale colloca le note dopo il capitolo (placement: 'chapterEnd', 後注), numerate per capitolo, con richiami ({n}) a destra della riga (markerPosition: 'right', cifre dritte grazie a cjk.uprightDigits); uno orizzontale le colloca al piede della pagina, numerate per pagina, con richiami in apice. Entrambi disegnano il filetto lungo un terzo della giustezza (separator.width: 1/3), e le note dopo il capitolo prendono numberGap: 'em' e un rientro sporgente di due em. Un valore esplicito ha la precedenza e si conserva al salvataggio (stripFootnotesDefaults confronta con i valori predefiniti propri del documento); i documenti cinesi, arabi e latini si risolvono come prima. footnoteDocumentDefaults(locale, writingMode, placement?) restituisce questi valori. Scrivi un richiamo prima di un 。 di fine frase (先生[^1]。): resta con il carattere che lo precede, e 。 non apre mai una riga. Vedi Impaginazione giapponese › Note.

Come si dispongono le note al piede della colonna:

  • Nota e citazione condividono una colonna. Prima di collocare una riga, l’impaginazione aggiunge l’altezza delle note che quella riga cita per la prima volta (e il filetto, per la prima nota della colonna). Una riga le cui note non stanno sotto di essa passa alla colonna successiva con il resto del suo paragrafo, nel rispetto delle regole su orfane e vedove. L’area del testo della colonna si riduce dell’altezza delle note, quindi il bilanciamento delle colonne e la fascia di chiusura di un capitolo contano solo il testo.
  • Più note in una colonna si impilano in ordine di citazione sotto un unico filetto. Una nota citata di nuovo più avanti conserva il suo numero e non viene composta di nuovo.
  • Elementi flottanti in basso. Una figura che occupa il piede di una colonna dopo che le sue note sono state collocate va sopra di esse; le note collocate dopo la figura vanno sopra di essa.
  • Riquadri. Una nota citata dentro un riquadro (in linea, flottante o fisso) va al piede della colonna in cui prosegue il testo dopo il riquadro, di solito la stessa colonna. Un riquadro che chiude il documento lascia le sue note al piede della colonna in cui è terminato il testo.
  • Limiti. Una nota non si divide mai: una più alta di una colonna la eccede. I richiami nelle didascalie, nelle celle di tabella e nei titoli non vengono letti (si stampano così come sono scritti).
  • Output. Canvas, HTML e PDF disegnano le note, i richiami (un numero in apice) e il filetto. Nel PDF ogni richiamo è un link alla sua nota, e un PDF con tag imposta ogni nota come elemento Note con un /ID univoco elencato nel /IDTree dell’albero di struttura (PDF/UA-1). Le note sono VDTBlock con footnoteNote impostato, in page.floats; i filetti sono in page.footnoteAreas.
  • Avvisi. undefinedFootnote (un richiamo senza definizione: il numero si stampa sopra una nota vuota) e unusedFootnote (una definizione che nessun richiamo cita: non viene composta).

Il resolver e lo stripper funzionano come nelle altre sezioni:

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

#Numeri di riga

La proprietà lineNumbers stampa nel margine accanto a ogni quinta riga (o a ogni N-esima) il suo numero, come fanno le edizioni critiche, le antologie poetiche, i testi giuridici e le edizioni scolastiche. Conta i versi delle poesie :::verse, oppure ogni riga del testo. È disattivata per impostazione predefinita. Ogni numero si disegna sulla linea di base della sua riga, con una dimensione propria, e non sposta mai una riga: la pagina viene impaginata esattamente come lo sarebbe senza numeri. Da 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, 一…
}
ProprietàTipoPredefinitoDescrizione
enabledbooleanfalseStampa i numeri di riga. Un documento verticale (layout.writingMode: 'vertical-rl') non ne ha, e lì true viene segnalato come lineNumbersUnsupported.
count'verse' | 'all''verse''verse' conta i versi delle poesie :::verse, ogni verso una volta: una riga di rimando (il resto di un verso troppo lungo per la giustezza, composto nella riga successiva) non riceve numero, e lo spazio tra le strofe non si conta. Una poesia nell’impaginazione araba classica conta una riga per bayt; la seconda riga di un bayt sfalsato non si conta. 'all' conta ogni riga dei paragrafi del testo corrente, degli elementi di elenco, delle citazioni in blocco e dei versi, in ordine di lettura: pagina per pagina, colonna per colonna, dall’alto in basso.
intervalnumber5Stampa il numero di ogni riga che è un multiplo di questo (5, 10, 15…). Una poesia la cui prima riga è la 37 stampa 40, 45… Il recinto di una poesia può impostarne uno proprio (interval=N).
numberFirstbooleanfalseStampa anche il numero della prima riga contata dopo ogni ripartenza.
restart'document' | 'chapter' | 'section' | 'page' | 'poem''poem' con count: 'verse', 'page' con count: 'all'Dove il conteggio ricomincia: mai ('document', che prosegue attraverso i capitoli di un libro), a ogni titolo di livello 1 ('chapter'), a ogni titolo di livello 1 o 2 ('section'), a ogni pagina ('page') o a ogni poesia :::verse ('poem'). lineStart=N di una poesia e lines=N della direttiva :::numbering lo fanno ripartire in qualsiasi punto, in qualsiasi modalità.
startAtnumber1Il numero della prima riga dopo una ripartenza.
position'outer' | 'inner' | 'left' | 'right' | 'start' | 'end' | 'side''outer'Il lato su cui stanno i numeri. 'outer' è il lato lontano dal dorso: la destra di una pagina dispari e la sinistra di una pari, il contrario in un libro rilegato a destra. 'inner' è il lato del dorso. 'left' e 'right' sono uguali su ogni pagina. 'start' e 'end' seguono la direzione del documento: 'start' è la destra in un libro da destra a sinistra. 'side' li colloca nella colonna laterale di un’impaginazione 'oneAndHalf' con layout.sideColumnRole: 'floats', a filo del bordo della colonna laterale vicino al testo (gap non viene usato); su una pagina senza colonna laterale ripiega su 'outer'.
multiColumn'each' | 'gutter' | 'outer-edges''outer-edges'Pagine con due o più colonne di testo affiancate. 'outer-edges' mette i numeri della prima colonna alla sua sinistra e quelli dell’ultima alla sua destra; le colonne intermedie seguono 'each'. 'gutter' li mette negli intercolonni: quelli della prima colonna alla sua destra, quelli delle altre alla loro sinistra. 'each' mette i numeri di ogni colonna sul lato indicato da position.
gapDimension1emLa distanza dal bordo della colonna al numero; em è la dimensione propria del numero.
align'auto' | 'left' | 'right''auto''auto' allinea ogni numero verso il testo: a destra in un margine sinistro, a sinistra in un margine destro. 'left' e 'right' allineano i numeri entro la larghezza del numero più largo della pagina.
fontFamilystringfamiglia del testo correnteCarattere dei numeri. Si carica e si incorpora come qualsiasi altra famiglia.
fontSizeDimension0.8emDimensione dei numeri; em è il corpo del testo corrente.
fontWeightnumberpeso del testo correntePeso dei numeri.
italicbooleanfalseCompone i numeri in corsivo.
colorColorValuecolore del testo correnteColore dei numeri. Un colore collegato alla tavolozza segue le tavolozze delle parti e delle sezioni.
formatstringdecimaleCome si scrivono i numeri, in una qualsiasi delle grafie dei formati di numerazione ('lower-roman', 'arabic-indic', '一'…). I numeri decimali si scrivono nelle cifre del documento (numerals). Un nome sconosciuto numera in decimale, con un avviso 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,
}

Che cosa si conta e che cosa no:

  • Mai contati: titoli, didascalie, tabelle e immagini, formule in evidenza, testi del progetto grafico (aperture, testatine), note a piè di pagina e note di fine capitolo, il sommario, le voci dell’indice analitico e della bibliografia, e le pagine bianche.
  • Riquadri e prosa. Il testo di un riquadro non si conta, e con count: 'verse' nemmeno la prosa, a meno che lo stile di paragrafo in cui è composta non indichi lineNumbers: true; uno stile con lineNumbers: false non si conta mai (vedi Stili di paragrafo).
  • Una poesia. Il recinto di una poesia accetta numbered=false (i suoi versi non si contano), lineStart=N (il suo primo verso è N, e il conteggio ricomincia lì) e interval=N. :::numbering{lines=N} assegna il numero N alla successiva riga contata, ovunque si trovi. Vedi Formato del documento › :::verse e :::numbering.

In un libro impaginato capitolo per capitolo, restart: 'document' porta il conteggio da un capitolo al successivo tramite continuation.lineNumber. continuationAfter conta i versi a partire dal testo; con count: 'all' il conteggio dipende dall’impaginazione, quindi l’host passa il lastLineNumber del documento del capitolo precedente, come fa la Sandbox.

Con position: 'side' i numeri condividono la colonna laterale con i riquadri laterali, le didascalie laterali e le figure laterali. Un numero che si sovrappone a uno di essi si disegna comunque, nessuno dei due si sposta, e la build segnala un avviso di contenuto lineNumberOverlap che indica la riga numerata.

Output. Il canvas, il PDF, il visualizzatore HTML e l’EPUB a layout fisso disegnano i numeri. In un PDF con tag sono artefatti di impaginazione e ciascuno porta un /ActualText vuoto, quindi il testo copiato o estratto scorre da una riga all’altra senza di essi. L’output HTML li nasconde alle tecnologie assistive (aria-hidden), alla selezione e al testo copiato. L’EPUB a layout fluido, le cui righe sono composte dal sistema di lettura, conserva solo i numeri dei versi: uno span pt-line-number (anch’esso aria-hidden) nel margine iniziale della strofa, accanto a ogni verso che nella stampa porta un numero. Nel VDT i numeri sono uno slot di design di ogni pagina (page.lineNumbers, con i suoi blocchi di testo contrassegnati artifact) e un elenco di marche (page.lineNumberMarks: number, label, columnIndex, blockId, lineIndex); il documento registra lastLineNumber.

Non supportati: numeri di riga nel testo verticale, un rimando che stampa il numero di una riga, note collegate ai numeri di riga, e numeri per le righe delle celle di tabella, delle didascalie o dei listati di codice.

Nella Sandbox queste impostazioni sono la sezione Numeri di riga del pannello Grafica. Il resolver e lo stripper funzionano come nelle altre sezioni; il font, il peso e il colore vengono dal testo corrente:

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

#Rimandi

La proprietà crossRefs stabilisce le parole che un rimando stampa attorno a un numero o a una pagina, e lo stile che prende un :ref quando non ne imposta uno. Ogni modello contiene {n} dove va il numero; uno senza riceve il numero dopo uno spazio indivisibile ("§" stampa § 3.2). Un modello non impostato segue la lingua del documento: chapter / section / p. in inglese, capítulo / sección / pág. in spagnolo, 第{n}章 / 第{n}节 / 第{n}页 in cinese, e così via per francese, tedesco, italiano, portoghese, catalano e olandese.

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.
}
ProprietàTipoPredefinitoDescrizione
chapterstringsecondo la linguaUn rimando a un titolo di livello 1: "chapter {n}". Un numero di titolo il cui modello contiene già la parola (Chapter {1}, 第{1:一}章) si stampa così com’è.
sectionstringsecondo la linguaUn rimando a un titolo di livello da 2 a 6: "section {n}", "§ {n}".
pagestringsecondo la linguaUn rimando a una pagina (style=page): "p. {n}", "page {n}".
defaultStyle'default' | 'number' | 'title' | 'page''default'Ciò che stampa un :ref a un titolo o a un’ancora senza style=. 'default': un titolo numerato con la sua parola e il suo numero, uno non numerato con il suo titolo, un’ancora con il suo testo. Un rimando che imposta style lo conserva, e i rimandi a figure e tabelle non sono interessati.
breakLabelsbooleantrueConsente di andare a capo negli spazi di un rimando la cui etichetta è fatta di parole: il testo di un’ancora [words], il titolo di un titolo o di un riquadro, una sostituzione text="…" (anche su un rimando a una figura o a una tabella). Gli spazi dell’etichetta si allargano e si stringono allora con la riga, e il rimando resta un unico link; le sue parole non vengono sillabate. Un numero, un numero romano o una singola lettera dentro un’etichetta del genere resta con la parola che lo precede (Fig. 1a, plate IV). Un’etichetta con un numero o una pagina (section 3.2, p. 112, Fig. 1.7, Theorem 2) non va mai a capo, anche quando il suo modello contiene uno spazio normale. false compone ogni etichetta come un’unica parola, senza a capo all’interno, come fino a postext 1.27. Una configurazione salvata prima di configVersion 12 il cui testo contiene un rimando si legge con false, così le sue righe restano dove erano (vedi Pacchetti scritti da postext 1.4 o precedenti).

I rimandi prendono il colore, il peso e l’inclinazione comuni a tutti i rimandi (bodyText.referenceColor, referenceBold, referenceItalic).

#Citazioni

La proprietà citations sceglie lo stile delle citazioni e l’aspetto delle citazioni e della bibliografia. Il markup è descritto in Citazioni e bibliografia; lo stile viene applicato dal pacchetto 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;
  };
}
ProprietàTipoPredefinitoDescrizione
stylestring'apa'L’id di uno stile incluso (vedi Stili) o 'custom'. Lo stile decide che cosa dicono le citazioni e le voci: nomi, date, ordine, punteggiatura, e se le citazioni sono note.
customStylestring—Uno stile CSL completo, l’XML di un file .csl, usato quando style è 'custom'. La Sandbox lo carica da un file.
localestringlingua del documentoLa locale CSL in cui lo stile scrive le sue parole (en-US, es-ES, zh-CN, zh-TW, ja-JP…). Un documento giapponese si legge come ja-JP: le citazioni narrative uniscono due autori con と e abbreviano gli elenchi più lunghi con ほか.
linkbooleantrueUna citazione è un link alla sua voce nella bibliografia (link PDF, ancora HTML, clic nella Sandbox).
marker'style' | 'brackets' | 'parentheses' | 'superscript' | 'corner''style'Come uno stile numerato contrassegna una citazione: come lo scrive lo stile, [1], (1), un apice, o 〔1〕 (dritto nel testo verticale). Un localizzatore segue il numero.
collapseRangesbooleantrueI numeri consecutivi come intervallo: 1–3 in un unico richiamo, [2]–[4] in quelli di IEEE. false li tiene separati.
notes'footnote' | 'warichu''footnote'Dove uno stile a note colloca le sue citazioni: note a piè di pagina (collocate e numerate come indica footnotes), o note su due righe all’interno della riga (夹注).
numbering'book' | 'chapter''book'Citazioni per tutto il libro, o per ciascun capitolo separatamente (ogni documento, e ogni titolo di livello 1 dopo una citazione): uno stile numerato numera ogni capitolo a partire da 1 e un’opera citata in due capitoli prende il numero di ciascun capitolo; uno stile a note scrive un’opera per esteso alla sua prima citazione in ogni capitolo. Pensato per bibliography.scope: 'chapter', i cui elenchi prendono allora i numeri del capitolo.
hyphenateNamesbooleantrueLascia che il dizionario divida i nomi degli autori citati. false tiene interi il cognome di ogni persona nei riferimenti (autori, curatori, traduttori) e ogni nome dato come stringa unica, ovunque compaia con la sua maiuscola: in una citazione, nel testo corrente e nell’elenco, così nessuna riga termina con (Lup-. Un doppio nome si legge parte per parte, e un autore che si chiama Baker non tiene intera la parola baker. Vedi Parole tenute intere.
bibliography.titlestringsecondo la linguaTitolo sopra l’elenco, un paragrafo in grassetto. Vuoto: nessuno. Un titolo tuo va sopra :::bibliography.
bibliography.scope'book' | 'chapter''book'Un unico elenco di tutte le opere citate nel libro, o uno per capitolo con le opere che cita. In un documento di più capitoli ogni H1 inizia un nuovo elenco di capitolo; con auto un capitolo che non colloca alcun :::bibliography riceve il suo elenco alla fine.
bibliography.autobooleantrueColloca l’elenco dopo il testo (l’ultimo capitolo, per un elenco relativo a tutto il libro) quando nessun :::bibliography lo colloca.
bibliography.fontSizeDimension0.9emDimensione delle voci; em è il corpo del testo corrente.
bibliography.lineHeightDimensioninterlinea del testo correnteInterlinea delle voci.
bibliography.hangingIndentDimension2emRientro delle righe di rimando di una voce non numerata.
bibliography.entrySpacingDimension0.3emSpazio tra due voci.
bibliography.labelWidthDimensionetichetta più lungaLarghezza della colonna in cui stanno i numeri di un elenco numerato: il testo di ogni voce inizia a questa distanza, nella prima riga come nelle righe di rimando, così 9. e 10. condividono la colonna. L’etichetta resta parte del testo della voce.
bibliography.labelAlign'left' | 'right''left'Dove sta un’etichetta nella sua colonna: contro il bordo sinistro, o contro il testo (9. e 10. terminano insieme).
bibliography.doi'link' | 'text' | 'hide''link'DOI e URL come link, come testo semplice, o esclusi.
bibliography.includeUncitedbooleanfalseElenca ogni riferimento, citato o no (come nocite: "@*").
bibliography.groupByLanguagebooleanfalsePrima le opere in cinese, giapponese e coreano, poi le altre. Solo per gli stili autore-data e autore-pagina: un elenco numerato mantiene l’ordine dei suoi numeri.

#Indice dei contenuti

La proprietà toc configura ciò che stampa una direttiva :::toc (vedi Formato del documento). Il sommario si costruisce a partire dalla struttura del documento (ogni titolo con il suo numero e la sua etichetta di pagina, ogni :::part), quindi segue i capitoli: rinominane uno, spostalo in un’altra parte, cambiane gli autori, e le voci cambiano di conseguenza. Una voce è il numero del titolo in una colonna propria, il titolo, una linea di guida e l’etichetta di pagina al margine destro, poi una riga facoltativa di sottotitolo; una parte è una riga disegnata da 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}' */] },
    },
  },
};
ProprietàTipoPredefinitoDescrizione
levelsTocLevelConfig[]livello 1Livelli di titolo elencati, ciascuno con la tipografia della sua voce: fontFamily, fontSize, lineHeight (predefinito l’interlinea del testo corrente, così il sommario sta sulla griglia), fontWeight, italic, color, indent (dell’intera voce), numberWidth / numberGap (la colonna del numero dopo la quale inizia il titolo; i numeri vi sono allineati a destra, e un numero più largo di numberWidth, come الفصل الحادي عشر o Chapter 12, allarga la colonna del suo livello fino al più largo), numberFontFamily, numberFontSize, numberFontWeight, numberColor, marginTop, marginBottom. I campi non impostati ereditano dal testo corrente. Il numero sta sulla linea di base della prima riga del titolo, qualunque siano il suo carattere e la sua dimensione, sul canvas, in HTML e nel PDF (fino a postext 1.4 era centrato sull’altezza della x come il punto di un elenco, quindi un carattere da titolazione o una dimensione maggiore finivano più in alto del titolo). Un renderer tuo trova quella linea di base in bulletBaselineY del blocco della voce; bulletY è ancora il punto medio del riquadro em del numero, come in 1.4, quindi un renderer anteriore al nuovo campo disegna i numeri dove li ha sempre disegnati.
unnumberedTocEntryStyleConfig—Sostituzioni per i titoli il cui stile ha numbered: false (una prefazione): non stampano alcun numero e iniziano a filo dell’indent del livello.
pageNumberoggettocarattere del livello 1, peso del testo correntefontFamily, fontSize, fontWeight, italic, color dell’etichetta di pagina, e width (predefinito 2em): la colonna riservata a essa al margine destro, dove è allineata a destra.
leaderoggettochar si ripete nello spazio tra il titolo e il numero di pagina, allineato a destra perché i punti di voci consecutive si allineino ('. ' li distanzia); gap è lo spazio minimo mantenuto tra il titolo e la linea di guida. La linea di guida prende tutti i caratteri che ci stanno, misurati come un’unica sequenza nel suo carattere, quindi un carattere che allontana con la crenatura i punti consecutivi ottiene meno punti, anziché punti che arrivano fino al numero di pagina. (Fino a postext 1.4 il conteggio si ricavava da un solo punto, e con un carattere del genere la linea di guida invadeva il numero partendo dal titolo.) Un titolo che non lascerebbe spazio all’etichetta va a capo un po’ prima. Una linea di guida si compone con tre caratteri o più: dove ne stanno solo uno o due, la riga non ne ha, perché un punto isolato prima del numero di pagina si legge come un punto fermo. In un PDF con tag i punti sono artefatti, esclusi dal testo estratto. Il testo corrente compone le stesse linee di guida ai suoi stop di tabulazione.
subtitleoggettoUna seconda riga sotto la voce presa da un attributo del titolo (attr), cioè gli autori del capitolo, con i propri fontFamily, fontSize, fontWeight, italic (predefinito true), color e un indent aggiuntivo. La riga condivide l’interlinea della voce e non si separa mai dal suo titolo.
parts.enabledbooleantrueSe le pagine di parte ricevono una riga.
parts.breakBeforebooleanfalseApre una pagina nuova prima di ogni riga di parte tranne la prima, così i capitoli di ogni parte sono elencati in una pagina propria.
parts.designDesignSlotvuotoDesign della riga; il suo contenitore è la riga (larghezza della colonna × height). Segnaposto: , , …, e (l’etichetta della pagina di parte; con parts.page: false, che non apre alcuna pagina di parte, l’etichetta della pagina in cui inizia il contenuto della parte, dove le sue testatine passano a essa; in un libro impaginato capitolo per capitolo, un recinto che chiude il suo capitolo indica la prima pagina di contenuto del capitolo successivo). I colori collegati alla tavolozza prendono la palette propria della parte, così la riga di ogni sezione esce nel suo colore. Quando è vuoto, (con il numberSeparator dell’H1 tra i due) e il numero di pagina si compongono nella tipografia delle voci di livello 1.
parts.height, marginTop, marginBottomDimension2em, 0, 0Altezza della riga e spazio attorno a essa. em è il corpo del testo corrente, quindi la riga predefinita è alta il doppio del corpo, non due righe di testo: con un testo corrente 9,5/13,5 pt è di 19 pt. Per una riga di due righe di testo, indica l’altezza in pt (lì 27pt).

Le etichette di pagina sono quelle che il documento stampa. buildDocument() reimpagina un documento con un :::toc usando le etichette del passaggio precedente finché non si stabilizzano (al massimo tre passaggi in più); un host che impagina un libro capitolo per capitolo fornisce invece la struttura dell’intero libro come PostextContent.outline, costruita con contentOutline() (titoli e parti ricavati dal solo testo) e outlineFromDoc() (le stesse voci con le etichette di pagina di un’impaginazione), e reimpagina il capitolo del sommario ogni volta che cambia outlineKey() di quella struttura. Ogni voce di titolo porta il number che stampa il sommario e, per un titolo numerato, il suo counter: il conteggio progressivo del livello dopo un eventuale startAt, qualunque cosa stampi il modello, cioè ciò che un host mostra accanto a un capitolo nei propri elenchi.

#Indice analitico

La proprietà index configura ciò che stampa una direttiva :::index (vedi Formato del documento): i termini marcati con :index[…] e :index{term="…"} nel testo, ordinati, raggruppati per lettera iniziale (per iniziale pinyin o numero di tratti in cinese, per riga del gojūon in giapponese, vedi groupBy), ciascuno con le pagine in cui compare. Una voce è il suo termine, un separatore e i suoi numeri di pagina; seguono le sue sottovoci, con un gradino di rientro per livello, e le righe che vanno a capo sporgono di turnoverIndent così da non allinearsi mai con una sottovoce.

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' } },
  },
};
ProprietàTipoPredefinitoDescrizione
fontFamily, fontSize, lineHeight, fontWeight, color—il testo correnteTipografia delle voci. Ogni riga dell’indice, comprese le testatine delle lettere, si compone su lineHeight; l’indice mantiene un ritmo proprio e non si aggancia alla griglia della linea di base.
indentDimension1emRientro di ogni livello di sottovoce.
turnoverIndentDimension2emRientro aggiuntivo delle righe a capo di una voce, oltre il suo livello.
entrySpacingDimension0Spazio sopra ogni voce principale.
separator, locatorSeparator, rangeSeparatorstring', ', ', ', '–'; i primi due '، ' nella scrittura arabaCiò che si stampa tra il termine e la sua prima pagina, tra due pagine, e tra gli estremi di un intervallo.
mergeRangesbooleantrueUnisce in un intervallo le pagine consecutive di uno stesso formato di numerazione: 12, 13, 14 stampa 12–14. Le pagine principali non si uniscono mai.
rangeFormat'full' | 'chicago''full'Come si scrive il secondo numero di un intervallo: per intero (234–237) o senza le cifre che condivide con il primo, come chiede The Chicago Manual of Style (9.64): 71–72, 100–104, 101–8, 321–28, 1496–500. Le etichette romane si scrivono sempre per intero.
maingrassettoCome si compone una pagina principale (main sulla marca).
seesecondo la lingua, corsivo (tondo nella scrittura araba)Le parole prima di un rimando. Se non impostate, seguono la lingua del documento: See / See also, Véase / Véase también, Voir / Voir aussi, 见 / 另见 (見 / 另見 in cinese tradizionale)… Un indice cinese colloca il rimando dopo un punto fermo, senza spazio: 贾琏 12。见贾政.
localestringquella del documentoLa lingua il cui ordine alfabetico ordina le voci (un tag BCP 47, letto da Intl.Collator). In spagnolo ñ si ordina dopo n e apre un gruppo proprio; gli accenti non cambiano mai l’ordine.
groupBy'auto' | 'letter' | 'pinyin' | 'stroke' | 'gojuon' | 'kana' | 'none''auto'Che cosa sono le testatine dei gruppi. 'letter': la prima lettera della chiave di ordinamento. 'pinyin': una voce che inizia con un carattere han si archivia sotto l’iniziale latina della sua lettura pinyin (贾宝玉 sotto J), e una chiave di ordinamento latina sotto la sua lettera, dopo le voci cinesi di quella lettera (il collator colloca le lettere latine dopo i caratteri cinesi): sort="jia mu" chiude la J. 'stroke': sotto il numero di tratti del primo carattere, 一畫, 二畫… (一画… in cinese semplificato). 'gojuon': una voce in kana si archivia sotto la sua riga del gojūon, あ行, か行 … わ行, e 'kana' sotto il suo primo kana (katakana e hiragana condividono le testatine), nell’ordine JIS X 4061 di un indice giapponese: per lettura (yomi della marca, altrimenti la lettura in kana del suo ruby, altrimenti sort, altrimenti il testo), katakana come hiragana, kana piccoli come grandi, ー come la vocale che lo precede, 清 prima di 濁 prima di 半濁; prima i simboli, poi i numeri per valore, poi le parole latine sotto le loro lettere, poi i kana; una voce ancora intestata da un kanji viene segnalata come indexReadingMissing e collocata dopo i kana senza testatina. 'none': nessuna testatina; simboli, numeri e parole sono separati solo da groups.marginTop. 'auto' raggruppa un indice giapponese (ja, ja-*) per riga del gojūon, un indice in cinese semplificato (zh, zh-Hans, zh-CN) per pinyin, uno in cinese tradizionale (zh-Hant, zh-TW, zh-HK) per tratti, e ogni altra lingua per lettera. Le voci si ordinano nella collazione da cui vengono le testatine: un indice zh-Hant raggruppato per pinyin si ordina per pinyin. Le letture e i numeri di tratti sono quelli del collator (CLDR); dove legge male un carattere (重 come zhòng in 重阳, 行 come xíng in 行业), assegna alla marca una chiave sort in caratteri che abbiano solo la lettura che vuoi, che si ordina al suo posto: sort="崇阳" per 重阳, sort="航业" per 行业. Un browser senza dati di collazione cinese stampa un indice per pinyin o per tratti senza testatine.
ignoreArticlebooleantrue in araboOrdina e raggruppa le voci arabe come se l’articolo iniziale ال (ٱل) non ci fosse: البصرة si archivia sotto ب, tra بدر e بغداد, e si stampa così com’è scritto. الله conserva il suo articolo, e una voce con una propria chiave sort si ordina secondo quella chiave così come è data. Qualunque cosa indichi questa impostazione, un indice arabo ignora i segni vocalici e il tatweel, archivia أ إ آ ٱ sotto ا, e ordina ؤ come و, ئ e ى come ي, ة come ه.
groups.enabledbooleantrueStampa una testatina sopra ogni gruppo di voci (A, B…, o il numero di tratti, 0–9 per i numeri, Symbols per il resto; 数字 / 數字 e 符号 / 符號 in cinese).
groups.fontFamily, fontSize, fontWeight, italic, color—quello delle voci, peso 700Il carattere della testatina della lettera. Si compone sul passo di riga delle voci.
groups.marginTopDimensionuna riga dell’indiceSpazio sopra ogni gruppo, con o senza testatina; nessuno sopra il primo gruppo, la cui distanza dal titolo è quella del titolo, e nessuno in cima a una colonna.
groups.splitMinEntriesnumber2Quando una colonna o una pagina termina all’interno di un gruppo, il numero minimo di voci del gruppo lasciate al piede della colonna e il numero minimo portate in testa alla successiva. Con 2 nessuna voce resta sola sotto la sua testatina al piede di una colonna e nessuna apre da sola una colonna prima del gruppo successivo: un gruppo di due o tre voci si sposta intero, e uno di quattro o più si divide solo dove due restano e due passano avanti. Una voce è un blocco di voce (una voce principale o una sottovoce, con la testatina e le voci senza pagina collocate sopra di essa); un gruppo più alto di una colonna si divide dove è necessario. Anche il taglio di livellamento di una fascia di chiusura segue la regola, quindi un ultimo gruppo che non si può ripartire può lasciare le colonne disuguali di qualche riga. 1 permette a una colonna di terminare tra due voci qualsiasi, come fino a postext 1.27. Da postext 1.28; i documenti salvati prima che stampano un indice mantengono 1 (pinLegacyIndexGroupSplit).
groups.symbolsLabel, numbersLabelstringsecondo la lingua; '0–9', '数字' / '數字' in cineseLe testatine delle voci che iniziano con un simbolo e con una cifra.

I numeri di pagina vengono dalla struttura del libro, come quelli del sommario: computeOutline() e contentOutline() elencano le marche d’indice di un testo come voci di tipo 'indexMark' (con indexMark.path, sort, see, seeAlso, main, range e index), e outlineFromDoc() assegna a ciascuna la pagina in cui è finita, che la build registra in doc.indexMarks ({ sourceStart, pageIndex } per marca). buildDocument() reimpagina un documento che stampa il proprio indice finché i numeri non si stabilizzano; un host che impagina un libro capitolo per capitolo passa al capitolo che contiene :::index la struttura dell’intero libro come PostextContent.outline. tocOutline() e indexOutline() dividono una struttura in ciò che leggono il sommario e l’indice, così un host può collegare ogni capitolo alla parte che stampa: la Sandbox reimpagina il capitolo dell’indice solo quando si sposta una marca, e il capitolo del sommario solo quando si sposta un titolo. contentOutline() dice anche se un testo stampa un indice (hasIndex).