Pular para o conteúdo principal

Capítulo 6 · Parte II · O ofício

Configuração: notas e referências

As notas de rodapé, a numeração de linhas, as referências cruzadas e as citações, o sumário e o índice remissivo

Atualizado 2026-10-104 minenescaptzhjaar

Em poucas palavras

Esta página reúne os ajustes das partes do livro que remetem a outro lugar. As notas ficam no pé da página e os números de linha ficam na margem. As referências cruzadas indicam uma figura, uma seção ou uma página, e as citações indicam as obras que você menciona. O sumário lista os capítulos e o índice remissivo, no fim, lista termos com suas páginas. Cada seção explica a aparência dessas peças e como elas são numeradas.

#Notas de rodapé

A propriedade footnotes define onde ficam as notas citadas com [^id], como são numeradas e qual é a sua aparência. A marcação é descrita em Formato do documento.

interface FootnotesConfig {
  placement?: 'column' | 'chapterEnd' | 'spread'; // No pé da coluna que cita, depois do capítulo, ou ao lado do texto de uma página dupla.
  numbering?: 'chapter' | 'document' | 'page' | 'column' | 'spread'; // Recomeça a cada capítulo, segue corrida, ou recomeça a cada página / coluna / página dupla.
  numberFormat?: string;      // decimal, lower-roman, circled-decimal (①)…
  symbols?: string[];         // Os símbolos de nota de numberFormat: 'symbols'.
  markerPosition?: 'auto' | 'superscript' | 'inline' | 'side' | 'right'; // Elevado, na linha de base, ao lado da palavra, ou à direita de uma linha vertical.
  markerSize?: Dimension;     // Tamanho do marcador em linha, lateral ou à direita; em é o texto ao redor.
  numberGap?: 'en' | 'em';    // Espaço depois do número da própria nota.
  chapterEndAlign?: 'foot' | 'text';   // chapterEnd: notas no pé da coluna ou logo abaixo do texto.
  fontSize?: Dimension;       // Tamanho das notas; em é o tamanho do corpo.
  lineHeight?: Dimension;     // Entrelinha das notas; em é o tamanho da nota.
  color?: ColorValue;         // Cor das notas; a cor do corpo quando não definida.
  textAlign?: TextAlign;      // O alinhamento do corpo quando não definido.
  hangingIndent?: Dimension;  // Recuo das linhas seguintes de uma nota.
  spaceBetween?: Dimension;   // Espaço entre duas notas.
  spaceAbove?: Dimension;     // Espaço entre o texto e o fio; em é o tamanho do corpo.
  spaceBelowRule?: Dimension; // Espaço entre o fio e a primeira nota.
  separator?: {
    enabled?: boolean;        // Desenha o fio.
    width?: number;           // Comprimento do fio, uma fração da largura da coluna.
    lineWidth?: Dimension;    // Espessura do fio.
    color?: ColorValue;       // A cor das notas quando não definida.
  };
}
PropriedadeTipoPadrãoDescrição
placement'column' | 'chapterEnd' | 'spread''column' (livros japoneses em escrita vertical: 'chapterEnd')'column' compõe cada nota no pé da coluna que contém a linha que a cita, sob um fio curto; num layout de uma coluna, é o pé da página. 'chapterEnd' compõe todas as notas de um capítulo depois do seu último bloco, em ordem de citação. 'spread' (傍注, só texto vertical) compõe as notas citadas nas duas páginas de uma página dupla no fim da sua página ímpar, a página da esquerda de um livro com lombada à direita, sob o fio: as notas citadas na página par esperam por ela; uma nota que deixaria a página ímpar com menos de uma linha de texto fica no pé da página par, com as que vêm depois dela; e um capítulo que termina numa página par mantém ali as notas que estavam esperando. Em texto horizontal recai em 'column', com um aviso unknownConfigValue. Desde o postext 1.16.
numbering'chapter' | 'document' | 'page' | 'column' | 'spread''chapter' (livros japoneses em escrita horizontal: 'page'; com placement: 'spread': 'spread'; com numberFormat: 'symbols' no pé da coluna: 'page')'chapter' recomeça em 1 sob cada título de nível 1 e no início de cada documento. 'document' segue corrida pelo documento e, num livro diagramado capítulo por capítulo, de um capítulo para o seguinte (continuationAfter leva o último número como continuation.footnoteNumber). 'page' recomeça em 1 a cada página e 'column' a cada coluna, contando as notas onde o layout as compõe (as colunas de uma página em ordem de leitura): o habitual 页下注 de um livro chinês. O documento é diagramado, numerado onde as suas notas caíram e diagramado de novo até os números se manterem (no máximo três construções a mais). Os dois se aplicam a notas no pé da coluna: com placement: 'chapterEnd' as notas são numeradas por capítulo. 'spread' recomeça a cada página dupla (páginas 2–3, 4–5…), em ordem de citação, para placement: 'spread'.
numberFormatstring'decimal'Como os números são escritos, em qualquer grafia que as configurações de numeração aceitam: 'decimal', 'lower-roman', 'lower-alpha', 'circled-decimal' (ou '①'), 'cjk-decimal', '一'… O marcador e o número que abre a nota usam esse formato. circled-decimal escreve em decimal os números acima de 50. Um nome desconhecido numera em decimal, com um aviso unknownNumberFormat. 'symbols' (ou '*') marca as notas com símbolos de referência, symbols em sequência: * † ‡ § ‖ ¶, depois dobrados (** †† ‡‡…) e triplicados; as notas são então contadas de novo a cada página, a menos que numbering seja definido. Desde o postext 1.19.
symbolsstring[]['*', '†', '‡', '§', '‖', '¶']A sequência que numberFormat: 'symbols' escreve, dobrada e depois triplicada quando se esgota. Os arquivos latinos do Google Fonts e do Fontsource trazem * † § ¶ (a adaga em latin-ext), mas não ‡ nem ‖, que o PDF então desenha como o glifo .notdef da fonte, com um aviso missingGlyph: com uma fonte assim, deixe-os de fora (['*', '†', '§', '¶']) ou componha as notas numa fonte que os tenha. Strings vazias são descartadas, e uma lista vazia mantém o padrão. Desde o postext 1.19.
markerPosition'auto' | 'superscript' | 'inline' | 'side' | 'right''auto''superscript' eleva o marcador no texto e o número que abre a nota, em tamanho reduzido. 'inline' os compõe na linha de base: o marcador em markerSize, o número da nota no tamanho da nota; em texto vertical, um marcador circulado em linha fica em pé numa célula própria. 'right' compõe um marcador reduzido rente ao lado direito de uma linha vertical, como os livros japoneses verticais compõem (1); em texto horizontal é um sobrescrito. 'side' (合印) compõe um marcador pequeno ao lado da palavra marcada, do lado do seu rubi, terminando onde termina o último caractere da palavra; não ocupa espaço na linha, que quebra e justifica como se ele não estivesse ali, e um espaço entre linhas estreito demais para ele é relatado como rubyExceedsLeading. 'auto' é em linha para circled-decimal, 'right' num livro japonês vertical e sobrescrito nos demais casos. De qualquer forma, o marcador fica junto do caractere anterior e nunca abre uma linha.
markerSizeDimension1em; 0.6em para 'side', 0.7em para 'right'Tamanho de um marcador em linha, lateral ou à direita; em é o tamanho do texto ao redor (0.75em é uma redução comum). Sem efeito num marcador sobrescrito.
numberGap'en' | 'em''en' (notas japonesas depois do capítulo: 'em')O espaço depois do número que abre uma nota: um espaço meia-risca ou um eme inteiro da nota (um espaço ideográfico quando o número ou a nota contém texto CJK), nunca esticado nem quebrado. Desde o postext 1.16.
markerTemplatestring'{n}' (livros japoneses em escrita vertical: '({n})')Como se escreve o número de uma nota, com {n} no lugar dele, no formato de número e nos algarismos do documento: '({n})' dá os marcadores entre parênteses dos livros árabes, «(١)». Escreve tanto o marcador no texto quanto o número que abre a nota. Um modelo sem {n} é lido como o padrão.
noteNumberPosition'auto' | 'superscript' | 'inline''auto'Onde fica o número que abre a nota: elevado ou na linha, no tamanho da nota. 'auto' segue markerPosition. Os livros árabes elevam o marcador no texto e compõem o número da própria nota na linha.
chapterEndAlign'foot' | 'text''foot'Com placement: 'chapterEnd': 'foot' compõe no pé da coluna as notas que a fecham, com as linhas que sobram entre o texto e as notas, como ficam as notas no pé da coluna. 'text' as compõe logo abaixo do texto.
fontSizeDimension0.8emTamanho do texto das notas. em e rem são o tamanho do corpo. As notas usam a família e os pesos do corpo.
lineHeightDimension1.25emEntrelinha do texto das notas; em é o tamanho da nota. As notas ficam fora da grade de linhas de base: elas se empilham a partir do pé da coluna, e o texto acima delas continua na grade.
colorColorValuecor do corpoCor do texto das notas.
textAlignTextAlignalinhamento do corpoAlinhamento do texto das notas.
hangingIndentDimension0Recuo da segunda linha em diante de uma nota, para que se alinhem depois do seu número.
spaceBetweenDimension0Espaço entre duas notas.
spaceAboveDimension0.5emEspaço entre a última linha do texto e o fio; em é o tamanho do corpo. Com 'chapterEnd' e chapterEndAlign: 'text', spaceAbove + spaceBelowRule é o espaço entre o texto e a primeira nota.
spaceBelowRuleDimension0.4emEspaço entre o fio e a primeira nota.
separator.enabledbooleantrueDesenha o fio acima das notas de cada coluna. Com false, os espaços acima continuam.
separator.widthnumber0.3Comprimento do fio como fração da largura da coluna (0–1), a partir da borda esquerda da coluna.
separator.lineWidthDimension0.5ptEspessura do fio.
separator.colorColorValuecor das notasCor do fio.
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' } },
}

Livros japoneses. Um documento japonês (locale: 'ja', desde o postext 1.16) dá aos campos que deixa sem definir os valores do JLReq §4.2. Um livro vertical compõe as notas depois do capítulo (placement: 'chapterEnd', 後注), numeradas por capítulo, com marcadores ({n}) à direita da linha (markerPosition: 'right', algarismos em pé por cjk.uprightDigits); um horizontal as compõe no pé da página, numeradas por página, com marcadores sobrescritos. Os dois desenham o fio com um terço da medida (separator.width: 1/3), e as notas depois do capítulo recebem numberGap: 'em' e um recuo deslocado de dois emes. Um valor explícito prevalece e é mantido ao salvar (stripFootnotesDefaults compara com os padrões do próprio documento); documentos em chinês, árabe e línguas latinas se resolvem como antes. footnoteDocumentDefaults(locale, writingMode, placement?) devolve esses valores. Escreva o marcador antes de um 。 de fim de frase (先生[^1]。): ele fica junto do caractere anterior, e 。 nunca abre uma linha. Veja Composição em japonês › Notas.

Como as notas são compostas no pé da coluna:

  • Nota e citação dividem uma coluna. Antes de posicionar uma linha, o layout soma a altura das notas que essa linha cita pela primeira vez (e o fio, na primeira nota da coluna). Uma linha cujas notas não cabem abaixo dela vai para a coluna seguinte com o resto do seu parágrafo, conforme as regras de órfãs e viúvas. A área de texto da coluna diminui na altura das notas, então o balanceamento de colunas e a faixa final de um capítulo contam só o texto.
  • Várias notas numa coluna se empilham em ordem de citação sob um único fio. Uma nota citada de novo mais adiante mantém o seu número e não é composta outra vez.
  • Flutuantes inferiores. Uma figura que ocupa o pé de uma coluna depois que as notas dela foram compostas fica acima delas; as notas compostas depois da figura ficam acima dela.
  • Boxes. Uma nota citada dentro de um boxe (em linha, flutuante ou fixo) vai para o pé da coluna em que o texto depois do boxe continua, em geral a mesma coluna. Um boxe que fecha o documento deixa as suas notas no pé da coluna em que o texto terminou.
  • Limites. Uma nota nunca é dividida: uma nota mais alta que uma coluna transborda dela. Os marcadores em legendas, células de tabela e títulos não são lidos (saem impressos como foram escritos).
  • Saída. Canvas, HTML e PDF pintam as notas, os marcadores (um número sobrescrito) e o fio. No PDF cada marcador tem um link para a sua nota, e um PDF etiquetado compõe cada nota como um elemento Note com um /ID único listado na /IDTree da árvore de estrutura (PDF/UA-1). As notas são VDTBlocks com footnoteNote definido, em page.floats; os fios ficam em page.footnoteAreas.
  • Avisos. undefinedFootnote (um marcador sem definição: o número é impresso sobre uma nota vazia) e unusedFootnote (uma definição que nenhum marcador cita: não é composta).

O resolvedor e o redutor seguem o padrão das outras seções:

import { DEFAULT_FOOTNOTES_CONFIG, resolveFootnotesConfig, stripFootnotesDefaults, footnoteDocumentDefaults } from 'postext';
 
resolveFootnotesConfig(config.footnotes, 'ja', 'vertical-rl'); // os campos não definidos recebem os padrões japoneses verticais

#Numeração de linhas

A propriedade lineNumbers imprime na margem o número de cada quinta linha (ou de cada enésima), ao lado dela, como fazem as edições críticas, as antologias de poesia, os textos legais e as edições escolares. Ela conta os versos dos poemas :::verse, ou todas as linhas do texto. Vem desligada por padrão. Cada número é pintado na linha de base da sua linha, num corpo próprio, e nunca move uma linha: a página é diagramada exatamente como seria sem números. Desde postext 1.23.

interface LineNumbersConfig {
  enabled?: boolean;        // Desligada por padrão.
  count?: 'verse' | 'all';  // Os versos dos poemas, ou todas as linhas do texto.
  interval?: number;        // Imprimir os múltiplos de N.
  numberFirst?: boolean;    // Imprimir também a primeira linha depois de cada reinício.
  restart?: 'document' | 'chapter' | 'section' | 'page' | 'poem'; // Onde a contagem recomeça.
  startAt?: number;         // O número da primeira linha depois de um reinício.
  position?: 'outer' | 'inner' | 'left' | 'right' | 'start' | 'end' | 'side';
  multiColumn?: 'each' | 'gutter' | 'outer-edges'; // Páginas com duas colunas ou mais.
  gap?: Dimension;          // Do texto ao número; em é o corpo do número.
  align?: 'auto' | 'left' | 'right';
  fontFamily?: string;      // A família do texto corrido quando não definida.
  fontSize?: Dimension;     // em é o corpo do texto.
  fontWeight?: number;      // O peso do texto corrido quando não definido.
  italic?: boolean;
  color?: ColorValue;       // A cor do texto corrido quando não definida.
  format?: string;          // decimal, lower-roman, arabic-indic, 一…
}
PropriedadeTipoPadrãoDescrição
enabledbooleanfalseImprime os números de linha. Um documento vertical (layout.writingMode: 'vertical-rl') não recebe nenhum, e um true nele é avisado como lineNumbersUnsupported.
count'verse' | 'all''verse''verse' conta os versos dos poemas :::verse, cada verso uma vez: a parte de um verso longo demais para a mancha que passa para a linha seguinte não recebe número, e o espaço entre estrofes não é contado. Um poema na disposição árabe clássica conta uma linha por bayt; a segunda linha de um bayt composto em escada não é contada. 'all' conta todas as linhas dos parágrafos do texto corrido, dos itens de lista, das citações e dos versos, em ordem de leitura: página por página, coluna por coluna, de cima para baixo.
intervalnumber5Imprime o número de cada linha que é múltiplo deste (5, 10, 15…). Um poema cujo primeiro verso é o 37 imprime 40, 45… A abertura de um poema pode definir o seu (interval=N).
numberFirstbooleanfalseImprime também o número da primeira linha contada depois de cada reinício.
restart'document' | 'chapter' | 'section' | 'page' | 'poem''poem' com count: 'verse', 'page' com count: 'all'Onde a contagem recomeça: nunca ('document', que segue por todos os capítulos de um livro), a cada título de nível 1 ('chapter'), a cada título de nível 1 ou 2 ('section'), a cada página ('page') ou a cada poema :::verse ('poem'). O lineStart=N de um poema e o lines=N da diretiva :::numbering a reiniciam em qualquer ponto, seja qual for o modo.
startAtnumber1O número da primeira linha depois de um reinício.
position'outer' | 'inner' | 'left' | 'right' | 'start' | 'end' | 'side''outer'O lado em que ficam os números. 'outer' é o lado oposto à lombada: a direita de uma página ímpar e a esquerda de uma par, ao contrário num livro encadernado pela direita. 'inner' é o lado da lombada. 'left' e 'right' são o mesmo em todas as páginas. 'start' e 'end' seguem a direção do documento: 'start' é a direita num livro da direita para a esquerda. 'side' os coloca na coluna lateral de um layout 'oneAndHalf' com layout.sideColumnRole: 'floats', encostados à borda da coluna lateral voltada para o texto (gap não é usado); numa página sem coluna lateral volta a 'outer'.
multiColumn'each' | 'gutter' | 'outer-edges''outer-edges'Páginas com duas ou mais colunas de texto lado a lado. 'outer-edges' põe os números da primeira coluna à esquerda dela e os da última à direita dela; as colunas do meio seguem 'each'. 'gutter' os põe nas medianizes: os da primeira coluna à direita dela, os das outras à esquerda delas. 'each' põe os de cada coluna no lado de position.
gapDimension1emA distância da borda da coluna até o número; em é o corpo do próprio número.
align'auto' | 'left' | 'right''auto''auto' alinha cada número em direção ao texto: à direita numa margem esquerda, à esquerda numa margem direita. 'left' e 'right' alinham os números dentro da largura do número mais largo da página.
fontFamilystringfamília do texto corridoFonte dos números. É carregada e incorporada como qualquer outra família.
fontSizeDimension0.8emCorpo dos números; em é o corpo do texto.
fontWeightnumberpeso do texto corridoPeso dos números.
italicbooleanfalseCompõe os números em itálico.
colorColorValuecor do texto corridoCor dos números. Uma cor ligada à paleta segue as paletas de partes e seções.
formatstringdecimalComo os números são escritos, em qualquer das grafias dos formatos de numeração ('lower-roman', 'arabic-indic', '一'…). Os números decimais são escritos com os algarismos do documento (numerals). Um nome desconhecido numera em decimal, com um aviso unknownNumberFormat.
lineNumbers: {
  enabled: true,
  count: 'verse',
  interval: 5,
  restart: 'document',          // uma só contagem para o livro inteiro
  position: 'outer',
  fontSize: { value: 0.75, unit: 'em' },
  italic: true,
}

O que é contado e o que não é:

  • Nunca são contados os títulos, as legendas, as tabelas e as imagens, as fórmulas em destaque, o texto de design (aberturas, cabeços), as notas de rodapé e as notas de fim de capítulo, o sumário, as entradas do índice remissivo e da bibliografia, nem as páginas em branco.
  • Boxes e prosa. O texto de um boxe não é contado, e com count: 'verse' a prosa também não, a menos que o estilo de parágrafo em que é composta diga lineNumbers: true; um estilo com lineNumbers: false nunca é contado (veja Estilos de parágrafo).
  • Um poema. A abertura de um poema aceita numbered=false (os seus versos não são contados), lineStart=N (o seu primeiro verso é o N, e a contagem recomeça ali) e interval=N. :::numbering{lines=N} dá o número N à próxima linha contada, onde quer que esteja. Veja Formato do documento › :::verse e :::numbering.

Num livro diagramado capítulo por capítulo, restart: 'document' leva a contagem de um capítulo para o seguinte em continuation.lineNumber. continuationAfter conta os versos a partir do texto; com count: 'all' a contagem depende da diagramação, então a aplicação repassa o lastLineNumber do documento do capítulo anterior, como faz o Sandbox.

Com position: 'side' os números dividem a coluna lateral com os boxes, as legendas e as figuras laterais. Um número que se sobrepõe a um deles é pintado mesmo assim, nenhum dos dois se move, e a diagramação dá um aviso de conteúdo lineNumberOverlap que aponta para a linha numerada.

Saída. Canvas, PDF, o visualizador HTML e o EPUB de layout fixo pintam os números. Num PDF etiquetado eles são artefatos de paginação e cada um leva um /ActualText vazio, de modo que o texto copiado ou extraído passa de uma linha para a outra sem eles. A saída HTML os esconde das tecnologias assistivas (aria-hidden), da seleção e do texto copiado. O EPUB refluível, cujas linhas são compostas pelo sistema de leitura, guarda só os números dos versos: um span pt-line-number (também aria-hidden) na margem inicial da estrofe, ao lado de cada verso que leva número na versão impressa. No VDT os números são um bloco de design de cada página (page.lineNumbers, com os blocos de texto marcados artifact) e uma lista de marcas (page.lineNumberMarks: number, label, columnIndex, blockId, lineIndex); o documento registra lastLineNumber.

Não há suporte para números de linha em texto vertical, uma referência cruzada que imprima o número de uma linha, notas ligadas a números de linha, nem números para as linhas de células de tabela, legendas ou listagens de código.

No Sandbox essas configurações são a seção Numeração de linhas do painel Design. O resolvedor e o removedor de padrões seguem as outras seções; a fonte, o peso e a cor vêm do texto corrido:

import { DEFAULT_LINE_NUMBERS_CONFIG, resolveLineNumbersConfig, stripLineNumbersDefaults } from 'postext';
 
resolveLineNumbersConfig(config.lineNumbers, resolvedBodyText); // fonte, peso e cor não definidos seguem o texto corrido

#Referências cruzadas

A propriedade crossRefs define as palavras que uma referência cruzada imprime em volta de um número ou de uma página, e o estilo que um :ref assume quando não define nenhum. Cada modelo contém {n} onde vai o número; um modelo sem ele recebe o número depois de um espaço inseparável ("§" imprime § 3.2). Um modelo não definido segue o idioma do documento: chapter / section / p. em inglês, capítulo / sección / pág. em espanhol, 第{n}章 / 第{n}节 / 第{n}页 em chinês, e assim por diante em francês, alemão, italiano, português, catalão e neerlandês.

interface CrossRefsConfig {
  chapter?: string;  // Palavras em volta do número de um título de nível 1: "chapter {n}".
  section?: string;  // Em volta do número de qualquer outro título: "section {n}".
  page?: string;     // Em volta de um número de página: "p. {n}".
  defaultStyle?: 'default' | 'number' | 'title' | 'page'; // Um :ref sem style=.
}
PropriedadeTipoPadrãoDescrição
chapterstringconforme o idiomaUma referência a um título de nível 1: "chapter {n}". O número de um título cujo modelo já escreve a palavra (Chapter {1}, 第{1:一}章) é impresso como está.
sectionstringconforme o idiomaUma referência a um título de nível 2 a 6: "section {n}", "§ {n}".
pagestringconforme o idiomaUma referência de página (style=page): "p. {n}", "page {n}".
defaultStyle'default' | 'number' | 'title' | 'page''default'O que um :ref a um título ou a uma âncora imprime sem style=. 'default': um título numerado, pela sua palavra e número; um não numerado, pelo seu título; uma âncora, pelo seu texto. Uma referência que define style o mantém, e as referências a figuras e tabelas não são afetadas.

As referências recebem a cor, o peso e a inclinação de todas as referências (bodyText.referenceColor, referenceBold, referenceItalic).

#Citações

A propriedade citations escolhe o estilo de citação e a aparência das citações e da bibliografia. A marcação é descrita em Citações e bibliografia; o estilo é aplicado pelo pacote postext-citeproc.

interface CitationsConfig {
  style?: string;          // 'apa', 'ieee', 'chicago-notes-bibliography'… ou 'custom'
  customStyle?: string;    // um estilo CSL completo (XML .csl), usado com style: 'custom'
  locale?: string;         // locale CSL; o idioma do documento quando não definido
  link?: boolean;          // as citações têm link para as suas entradas
  marker?: 'style' | 'brackets' | 'parentheses' | 'superscript' | 'corner';
  collapseRanges?: boolean;
  notes?: 'footnote' | 'warichu';
  numbering?: 'book' | 'chapter';
  bibliography?: {
    title?: string;        // não definido: a palavra do idioma do documento; '' ou ' ': nenhum
    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;
  };
}
PropriedadeTipoPadrãoDescrição
stylestring'apa'O id de um estilo incluído (veja Estilos) ou 'custom'. O estilo decide o que as citações e as entradas dizem: nomes, datas, ordem, pontuação e se as citações são notas.
customStylestring—Um estilo CSL completo, o XML de um arquivo .csl, usado quando style é 'custom'. O Sandbox o carrega de um arquivo.
localestringidioma do documentoO locale CSL em que o estilo escreve as suas palavras (en-US, es-ES, zh-CN, zh-TW, ja-JP…). Um documento japonês é lido como ja-JP: as citações narrativas unem dois autores com と e abreviam mais autores com ほか.
linkbooleantrueUma citação tem link para a sua entrada na bibliografia (link no PDF, âncora no HTML, clique no Sandbox).
marker'style' | 'brackets' | 'parentheses' | 'superscript' | 'corner''style'Como um estilo numérico marca uma citação: como o estilo a escreve, [1], (1), um sobrescrito ou 〔1〕 (em pé no texto vertical). Um localizador vem depois do número.
collapseRangesbooleantrueNúmeros consecutivos como intervalo: 1–3 num marcador próprio, [2]–[4] no do IEEE. false os mantém separados.
notes'footnote' | 'warichu''footnote'Onde um estilo de notas compõe as suas citações: notas de rodapé (posicionadas e numeradas como footnotes diz) ou notas em duas linhas dentro da linha (夹注).
numbering'book' | 'chapter''book'Citações ao longo do livro, ou cada capítulo por si (cada documento, e cada título de nível 1 depois de uma citação): um estilo numérico numera cada capítulo a partir de 1, e uma obra citada em dois capítulos recebe o número de cada capítulo; um estilo de notas escreve uma obra por completo na primeira citação em cada capítulo. Pensado para bibliography.scope: 'chapter', cujas listas então recebem os números do capítulo.
bibliography.titlestringconforme o idiomaTítulo acima da lista, um parágrafo em negrito. Em branco: nenhum. Um título seu vai acima de :::bibliography.
bibliography.scope'book' | 'chapter''book'Uma lista com todas as obras que o livro cita, ou uma por capítulo com as obras que ele cita. Num documento de vários capítulos, cada H1 inicia uma nova lista de capítulo; com auto, um capítulo que não posiciona nenhum :::bibliography recebe a sua lista no fim.
bibliography.autobooleantrueCompõe a lista depois do texto (o último capítulo, numa lista do livro inteiro) quando nenhum :::bibliography a posiciona.
bibliography.fontSizeDimension0.9emTamanho das entradas; em é o tamanho do corpo.
bibliography.lineHeightDimensionentrelinha do corpoEntrelinha das entradas.
bibliography.hangingIndentDimension2emRecuo das linhas seguintes de uma entrada não numerada.
bibliography.entrySpacingDimension0.3emEspaço entre duas entradas.
bibliography.labelWidthDimensionrótulo mais longoLargura da coluna em que ficam os números de uma lista numerada: o texto de cada entrada começa a essa distância, tanto na primeira linha quanto nas seguintes, de modo que 9. e 10. dividem a coluna. O rótulo continua fazendo parte do texto da entrada.
bibliography.labelAlign'left' | 'right''left'Onde um rótulo fica na sua coluna: junto à borda esquerda dela ou junto ao texto (9. e 10. terminam juntos).
bibliography.doi'link' | 'text' | 'hide''link'DOIs e URLs como links, como texto simples ou omitidos.
bibliography.includeUncitedbooleanfalseLista todas as referências, citadas ou não (como nocite: "@*").
bibliography.groupByLanguagebooleanfalseAs obras em chinês, japonês e coreano primeiro, depois as demais. Só para estilos autor-data e autor-página: uma lista numerada mantém a ordem dos seus números.

#Sumário

A propriedade toc configura o que uma diretiva :::toc imprime (veja Formato do documento). O sumário é montado a partir da estrutura do documento (cada título com o seu número e o rótulo da sua página, cada :::part), então acompanha os capítulos: renomeie um, mova-o para outra parte, mude os seus autores, e as entradas mudam junto. Uma entrada é o número do título numa coluna própria, o título, uma linha de pontos e o rótulo da página na margem direita, e depois uma linha de subtítulo opcional; uma parte é uma linha desenhada por parts.design.

const config: PostextConfig = {
  toc: {
    levels: [{ level: 1, fontWeight: 700, color: { hex: '#00507b', model: 'hex' }, numberWidth: { value: 7.4, unit: 'mm' } }],
    unnumbered: { color: { hex: '#000000', model: 'hex' } },
    pageNumber: { fontWeight: 400, width: { value: 8, unit: 'mm' } },
    leader: { char: '.', gap: { value: 1, unit: 'mm' } },
    subtitle: { enabled: true, attr: 'author', italic: true, fontSize: { value: 8.5, unit: 'pt' } },
    parts: {
      height: { value: 23, unit: 'pt' },
      marginTop: { value: 11.5, unit: 'pt' },
      design: { elements: [/* a band box, 'SECTION {number}', '{titleText}', '{pageNumber}' */] },
    },
  },
};
PropriedadeTipoPadrãoDescrição
levelsTocLevelConfig[]nível 1Níveis de título listados, cada um com a tipografia da sua entrada: fontFamily, fontSize, lineHeight (o padrão é a entrelinha do corpo, para o sumário ficar na grade), fontWeight, italic, color, indent (da entrada inteira), numberWidth / numberGap (a coluna do número, depois da qual começa o título; os números ficam alinhados à direita nela, e um número mais largo que numberWidth, como الفصل الحادي عشر ou Chapter 12, alarga a coluna do seu nível até o mais largo), numberFontFamily, numberFontSize, numberFontWeight, numberColor, marginTop, marginBottom. Os campos sem valor herdam do texto do corpo. O número fica na linha de base da primeira linha do título, qualquer que seja a fonte e o corpo, no canvas, no HTML e no PDF (até o postext 1.4 ele ficava centralizado na altura-x como um marcador de lista, e uma fonte display ou um corpo maior ficava acima do título). Um renderizador próprio encontra essa linha de base em bulletBaselineY do bloco da entrada; bulletY continua sendo o ponto médio da caixa eme do número, como na 1.4, então um renderizador anterior ao novo campo desenha os números onde sempre desenhou.
unnumberedTocEntryStyleConfig—Substituições para títulos cujo estilo tem numbered: false (um prefácio): não imprimem número e começam alinhados no indent do nível.
pageNumberobjectfonte do nível 1, peso do corpofontFamily, fontSize, fontWeight, italic, color do rótulo da página, e width (padrão 2em): a coluna reservada para ele na margem direita, onde fica alinhado à direita.
leaderobjectchar se repete no espaço entre o título e o número da página, alinhado à direita para que os pontos de entradas seguidas fiquem alinhados ('. ' os espaça); gap é o espaço mínimo mantido entre o título e a linha de pontos. A linha de pontos leva quantos caracteres couberem, medidos como uma sequência inteira na sua fonte, então uma fonte que afasta pontos finais seguidos com kerning recebe menos pontos, em vez de pontos que chegam até o número da página. (Até o postext 1.4 a contagem vinha de um único ponto, e numa fonte assim a linha de pontos corria do título até o número.) Um título que não deixaria espaço para o rótulo quebra um pouco antes. A linha de pontos leva três caracteres ou mais: onde só cabem um ou dois, a linha do sumário fica sem ela, porque um ponto solto antes do número da página se lê como um ponto final. Num PDF com tags, os pontos são artefatos, deixados de fora do texto extraído. O texto do corpo compõe as mesmas linhas de pontos nas suas paradas de tabulação.
subtitleobjectUma segunda linha sob a entrada, tirada de um atributo do título (attr), como os autores do capítulo, com seus próprios fontFamily, fontSize, fontWeight, italic (padrão true), color e indent extra. A linha usa a entrelinha da entrada e nunca se separa do seu título.
parts.enabledbooleantrueSe as divisórias de parte recebem uma linha.
parts.breakBeforebooleanfalseAbre uma página nova antes de cada linha de parte, exceto a primeira, para que os capítulos de cada parte sejam listados numa página própria.
parts.designDesignSlotvazioDesign da linha; o seu contêiner é a linha (largura da coluna × height). Marcadores: , , …, e (o rótulo da página de parte; com parts.page: false, que não abre página de parte, o rótulo da página em que começa o conteúdo da parte, onde os cabeços passam a ela; num livro diagramado capítulo a capítulo, um bloco que fecha o seu capítulo aponta para a primeira página de conteúdo do capítulo seguinte). As cores vinculadas à paleta usam a palette da própria parte, então a linha de cada seção sai na sua cor. Quando vazio, (com o numberSeparator do H1 entre eles) e o número da página são compostos com a tipografia da entrada de nível 1.
parts.height, marginTop, marginBottomDimension2em, 0, 0Altura da linha e o espaço em volta dela. em é o corpo do texto, então a linha padrão tem o dobro do corpo de altura, e não duas linhas do texto: com um texto em 9,5/13,5 pt, ela tem 19 pt. Para uma linha de duas linhas do texto, dê a altura em pt (27pt nesse caso).

Os rótulos de página são os que o documento imprime. buildDocument() diagrama de novo um documento com :::toc usando os rótulos da passada anterior até que eles se estabilizem (no máximo três passadas extras); um host que diagrama um livro capítulo a capítulo fornece em vez disso a estrutura do livro inteiro como PostextContent.outline, montada a partir de contentOutline() (títulos e partes só a partir do texto) e de outlineFromDoc() (as mesmas entradas com os rótulos de página de uma diagramação), e diagrama de novo o capítulo do sumário sempre que o outlineKey() dessa estrutura muda. Cada entrada de título traz o number que o sumário imprime e, para um título numerado, o seu counter: a contagem corrente do nível depois de qualquer startAt, seja o que for que o modelo imprima; é o que um host mostra ao lado de um capítulo nas suas próprias listas.

#Índice remissivo

A propriedade index configura o que uma diretiva :::index imprime (veja Formato do documento): os termos marcados com :index[…] e :index{term="…"} no texto, ordenados, agrupados pela letra inicial (pela inicial do pinyin ou pelo número de traços em chinês, pela linha do gojūon em japonês, veja groupBy), cada um com as páginas em que aparece. Uma entrada é o seu termo, um separador e os seus números de página; as subentradas vêm em seguida, com um passo de recuo por nível, e as linhas quebradas recuam por turnoverIndent para nunca se alinharem com uma subentrada.

const config: PostextConfig = {
  headingStyles: [
    // O índice em duas colunas, sob o seu próprio título.
    { 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' } },
  },
};
PropriedadeTipoPadrãoDescrição
fontFamily, fontSize, lineHeight, fontWeight, color—o texto do corpoTipografia das entradas. Toda linha do índice, cabeças de letra inclusive, é composta em lineHeight; o índice mantém o seu próprio ritmo e não se encaixa na grade de linhas de base.
indentDimension1emRecuo de cada nível de subentrada.
turnoverIndentDimension2emRecuo extra das linhas quebradas de uma entrada, além do recuo do seu nível.
entrySpacingDimension0Espaço acima de cada entrada principal.
separator, locatorSeparator, rangeSeparatorstring', ', ', ', '–'; os dois primeiros '، ' em escrita árabeO que é impresso entre o termo e a sua primeira página, entre duas páginas e entre as pontas de um intervalo.
mergeRangesbooleantrueJunta páginas consecutivas de um mesmo formato de numeração num intervalo: 12, 13, 14 imprime 12–14. As páginas principais nunca são juntadas.
rangeFormat'full' | 'chicago''full'Como se escreve o segundo número de um intervalo: por extenso (234–237) ou sem os algarismos que tem em comum com o primeiro, como pede o The Chicago Manual of Style (9.64): 71–72, 100–104, 101–8, 321–28, 1496–500. Os rótulos em algarismos romanos são sempre escritos por extenso.
mainnegritoComo é composta uma página principal (main na marcação).
seeconforme o idioma, itálico (redondo em escrita árabe)As palavras antes de uma referência cruzada. Sem valor, seguem o idioma do documento: See / See also, Véase / Véase también, Voir / Voir aussi, 见 / 另见 (見 / 另見 em chinês tradicional)… Um índice em chinês compõe a referência depois de um ponto final, sem espaço: 贾琏 12。见贾政.
localestringo do documentoO idioma cuja ordem alfabética ordena as entradas (uma tag BCP 47, lida por Intl.Collator). Em espanhol, ñ vem depois de n e encabeça um grupo próprio; os acentos nunca mudam a ordem.
groupBy'auto' | 'letter' | 'pinyin' | 'stroke' | 'gojuon' | 'kana' | 'none''auto'O que são as cabeças de grupo. 'letter': a primeira letra da chave de ordenação. 'pinyin': uma entrada que começa com um caractere han fica sob a inicial latina da sua leitura em pinyin (贾宝玉 sob J), e uma chave de ordenação latina fica sob a sua letra, depois das entradas chinesas dessa letra (o collator põe as letras latinas depois dos caracteres chineses): sort="jia mu" fecha o J. 'stroke': sob o número de traços do primeiro caractere, 一畫, 二畫… (一画… em chinês simplificado). 'gojuon': uma entrada em kana fica sob a sua linha do gojūon, あ行, か行 … わ行, e 'kana' sob o seu primeiro kana (katakana e hiragana dividem as cabeças), na ordem JIS X 4061 de um índice japonês: pela leitura (o yomi da marcação, senão a leitura em kana do seu rubi, senão sort, senão o texto), katakana como hiragana, kana pequeno como grande, ー como a vogal anterior, 清 antes de 濁 antes de 半濁; símbolos, depois números pelo valor, depois palavras latinas sob as suas letras, depois kana; uma entrada ainda encabeçada por um kanji é informada como indexReadingMissing e composta depois dos kana, sem cabeça. 'none': sem cabeças; símbolos, números e palavras ficam separados apenas por groups.marginTop. 'auto' agrupa um índice japonês (ja, ja-*) pela linha do gojūon, um índice em chinês simplificado (zh, zh-Hans, zh-CN) por pinyin, um em chinês tradicional (zh-Hant, zh-TW, zh-HK) por traços, e todos os outros idiomas por letra. As entradas são ordenadas na colação de onde vêm as cabeças: um índice zh-Hant agrupado por pinyin é ordenado por pinyin. As leituras e os números de traços são os do collator (CLDR); onde ele lê um caractere errado (重 como zhòng em 重阳, 行 como xíng em 行业), dê à marcação uma chave sort em caracteres que só tenham a leitura desejada, que fica ordenada no lugar certo: sort="崇阳" para 重阳, sort="航业" para 行业. Um navegador sem dados de colação chinesa imprime um índice por pinyin ou por traços sem cabeças.
ignoreArticlebooleantrue em árabeOrdena e agrupa as entradas árabes como se um artigo inicial ال (ٱل) não estivesse ali: البصرة fica sob ب, entre بدر e بغداد, e é impresso como foi escrito. الله mantém o seu artigo, e uma entrada com a sua própria chave sort é ordenada por essa chave tal como foi dada. Seja qual for o valor desta opção, um índice árabe ignora os sinais vocálicos e o tatweel, põe أ إ آ ٱ sob ا e ordena ؤ como و, ئ e ى como ي, ة como ه.
groups.enabledbooleantrueImprime uma cabeça acima de cada grupo de entradas (A, B…, ou o número de traços, 0–9 para números, Symbols para o resto; 数字 / 數字 e 符号 / 符號 em chinês).
groups.fontFamily, fontSize, fontWeight, italic, color—as das entradas, peso 700A fonte da cabeça de letra. Ela é composta no passo de linha das entradas.
groups.marginTopDimensionuma linha do índiceEspaço acima de cada grupo, com ou sem cabeça; nenhum acima do primeiro grupo, cuja distância do título é a do título, e nenhum no topo de uma coluna.
groups.symbolsLabel, numbersLabelstringconforme o idioma; '0–9', '数字' / '數字' em chinêsAs cabeças das entradas que começam com um símbolo e com um algarismo.

Os números de página vêm da estrutura do livro, como os do sumário: computeOutline() e contentOutline() listam as marcações de índice de um texto como entradas do tipo 'indexMark' (com indexMark.path, sort, see, seeAlso, main, range e index), e outlineFromDoc() dá a cada uma a página em que caiu, que a construção registra em doc.indexMarks ({ sourceStart, pageIndex } por marcação). buildDocument() diagrama de novo um documento que imprime o seu próprio índice até os números se estabilizarem; um host que diagrama um livro capítulo a capítulo entrega ao capítulo que contém :::index a estrutura do livro inteiro como PostextContent.outline. tocOutline() e indexOutline() dividem uma estrutura no que o sumário e o índice leem, para que um host possa associar cada capítulo ao que ele imprime: o Sandbox diagrama de novo o capítulo do índice só quando uma marcação se move, e o do sumário só quando um título se move. contentOutline() também diz se um texto imprime um índice (hasIndex).