Um livro tem dois leitores técnicos: o autor, que lê na tela, e a máquina da gráfica, que imprime em papel. Eles precisam de arquivos diferentes. O erro é fazê-los em dois projetos separados, que depois divergem.
A nossa solução é um arquivo só, com uma chave. Sem a chave, o arquivo gera o boneco, a versão digital que o autor lê. Com a chave, gera o miolo para a gráfica. O desenho não muda. Mudam os ajustes de impressão.
Este artigo mostra o que muda, como a chave funciona e como provar, com um teste, que ligar o modo de impressão não alterou o digital.
O que é cada um
Boneco é o esboço diagramado do livro, feito para o autor ler. Cada página diz o que ainda falta. Não é o livro: tem o seu próprio nome de arquivo, é marcado como prévia, e a ficha catalográfica sai completa, mas com a marca ‹A PREENCHER› em todo campo sem dado. Campo omitido é registro mentindo, e campo com pendência é registro honesto.
Miolo para a gráfica é o interior do livro, pronto para imprimir. A capa é outro arquivo.
O que muda do digital para a impressão
O modo de impressão de um livro técnico nosso faz estes ajustes. O desenho não muda:
| Ajuste | O que acontece |
| Sangria de 3 mm | A página cresce 6 mm por dimensão e toda margem cresce 3 mm, então a mancha de texto fica onde estava. Painéis e faixas sangram. |
| Margens espelhadas | A margem interna é a da lombada, e a coluna lateral fica sempre do lado de fora. |
| Capítulo em página ímpar, Parte em página par | A quebra nativa do compilador cuida da paridade. A página que sobra vira página de anotações: nenhuma fica em branco. |
| Folha de rosto e ficha | Páginas 1 e 2. Campo que não existe (ISBN, editora, CDD) fica como ‹a definir›. |
| Colação da ficha | O número de páginas é medido no próprio PDF, em duas passadas. |
| Caderno fechado | O total de páginas termina em múltiplo de 4, com páginas de anotações no fim. |
| Cor | Texto e cinzas em K puro, nenhum preto de quatro cores. |
| PDF/X-1a | Fechamento com perfil de cor provisório até a gráfica informar o dela. Sem link e sem transparência. |
| Legibilidade | Rodapé e linhas de anotação mais escuros, porque 15% de tinta a 0,45 pontos some no papel. |
Num livro técnico de teste nosso, o boneco digital tinha 158 páginas e o miolo para a gráfica, 169. A diferença vem desses ajustes, e o número de páginas do miolo só fica conhecido depois que eles rodam. É por isso que o número precisa ser medido no PDF final.
A chave
O mecanismo central é uma entrada de linha de comando que o próprio arquivo lê:
#let grafica = sys.inputs.at("grafica", default: "0") == "1"
#let sg = if grafica { 3mm } else { 0mm }
#let tinta = if grafica { cmyk(0%, 0%, 0%, 100%) } else { rgb("#1c1c1c") }
Compilando:
typst compile --font-path fontes livro.typ boneco.pdf
typst compile --font-path fontes --input grafica=1 livro.typ miolo-cru.pdf
Sem a chave, grafica é falso, a sangria é zero e a cor é a da tela. Com a chave, tudo que depende de grafica muda de uma vez. Não há dois arquivos para manter: há um arquivo e um interruptor.
A colação em duas passadas
A ficha catalográfica declara o número de páginas, mas esse número só existe depois que o PDF está pronto. A saída é compilar duas vezes. Na primeira, a ficha não sabe o total. Você conta as páginas do PDF e recompila passando o número:
typst compile --font-path fontes --input grafica=1 livro.typ passada1.pdf
n=$(pdfinfo passada1.pdf | awk '/^Pages/{print $2}')
typst compile --font-path fontes --input grafica=1 --input total=$n livro.typ passada2.pdf
No arquivo, a ficha usa o valor recebido:
#let total = sys.inputs.at("total", default: "‹total›")
No nosso teste, as duas passadas deram 13 páginas, e a ficha da segunda passou a declarar "13 p. ;". Sem a segunda passada, ela mostrava a marca ‹total›: ao menos a pendência aparece, e o arquivo não mente. E quando o número de páginas muda entre as passadas, a conferência reprova: a ficha estaria declarando um total errado.
Neste exemplo, 13 não é múltiplo de 4. O fechamento de caderno é outra conferência, em outro passo.
Provar que o digital não mudou
Ao acrescentar o modo de impressão a um arquivo, a pergunta é: o boneco digital continua igual? A resposta se mede. Guarde um PDF de referência do digital, antes da mudança, e compare página a página, em imagem, depois dela:
pdftoppm -r 40 -png referencia.pdf ref
pdftoppm -r 40 -png boneco.pdf novo
for f in ref-*.png; do cmp -s "$f" "${f/ref/novo}" || echo "diferente: $f"; done
No nosso teste, o arquivo com a chave e o arquivo antigo, sem ela, deram 0 páginas diferentes em 16. Na produção, repetimos a conferência contra um boneco de referência de 158 páginas a cada mudança no modelo. O digital segue idêntico, pixel a pixel.
Passo a passo
- Escreva o livro uma vez, com as regras de estilo no arquivo principal.
- Ligue o modo de impressão pela chave
grafica, em tudo que muda: sangria, margens, cor, paridade. - Compile o boneco e entregue ao autor, com as marcas de pendência visíveis.
- Compile o miolo em duas passadas, e feche o PDF para a gráfica (veja PDF/X-1a com Ghostscript).
- Rode a conferência do miolo, com o checklist de preflight.
- Compare o boneco com a referência sempre que mexer no modelo.
O erro que custa caro
Manter dois projetos. Quando o boneco e o miolo são arquivos separados, uma correção entra em um e esquece do outro. Em um livro, isso significa que o autor aprova uma coisa e a gráfica imprime outra. Com uma chave só, a correção vale para os dois, e a comparação com a referência prova que o digital não escorregou.
Quando NÃO usar a chave única
Se a gráfica exigir um arquivo de layout nativo, a chave não resolve, e o caminho é outro. Outro caso: o aplicativo web do Typst talvez não aceite entradas por linha de comando. A documentação consultada descreve o --input só para o compilador local. Nesse caso, fixe o valor da chave dentro do arquivo, com uma cópia para cada modo.
Alternativa sem o nosso ambiente
A ideia de um arquivo com um interruptor vale em qualquer ferramenta que aceite uma variável de entrada. Em programas de layout visual, o equivalente são duas camadas ou dois estilos de página. A conferência de comparação pixel a pixel é feita no PDF final, e por isso independe do programa.
O que o Claude faz hoje, e como fazer sem ele
Hoje o Claude compila os dois modos, roda a colação em duas passadas e compara o digital com a referência. Sem ele, os comandos deste artigo fazem o mesmo trabalho.
Onde entra na operação
O boneco é o passo 6 do procedimento, e o miolo é o passo 15. O guia completo está em Como produzimos o miolo de um livro profissional sem InDesign. O modelo de livro-texto que usa esse mecanismo está em livro-texto científico com coluna de margem, e a regra de sangria em sangria, corte e zona de segurança.
Versões usadas neste artigo: veja a matriz de versões.



