Fundo
Criação de um layout personalizado de várias colunas com colunas com largura diferente.
Problema
O problema desta questão é mencionado, mas não abordado em um anteriorresponder:
O cenário
page=yes
causa um efeito colateral infeliz: o livro é entrelaçado com páginas em branco entre os capítulos. Eles podem ser eliminados usando Ghostscript para pós-processamento...
Em outras palavras, sem a page=yes
opção, o ConTeXt não consegue formatar o texto conforme desejado. Com a page=yes
opção, o ConTeXt formata conforme o esperado, mas exporta uma página em branco indesejada entre as seções principais.
Código
Exemplo mínimo de trabalho que ilustra o problema:
\definepapersize[BookPaperSize][width=24in, height=12in,]
\setuppapersize[BookPaperSize]
\definelayout[BookTextLayout][
topspace=.5in,
backspace=.5in,
header=\zeropoint,
footer=\zeropoint,
grid=yes,
]
\setuplayout[BookTextLayout]
\definecolumnset[BookColumns][n=4,distance=.25in]
\setupcolumnset[BookColumns:1][width=11.75in]
\setupcolumnset[BookColumns:2][width=3.46in]
\setupcolumnset[BookColumns:3][width=3.46in]
\setupcolumnset[BookColumns:4][width=3.46in]
\setuphead[section][
page=yes,
beforesection={\startcolumnset[BookColumns]},
aftersection={\stopcolumnset},
]
\setuphead[subsection][
after={\column},
]
\setuphead[subsubsection][
after={\blank[small]},
]
\starttext
\startsection[title={Section Title}]
\startsubsection[title={Subtitle}]
\dorecurse{2}{\input knuth}
\dorecurse{2}{%
\startsubsubsection[title={Subsubtitle}]
\dorecurse{1}{\input ward}
\dorecurse{2}{\input lorem}
\dorecurse{1}{\input bryson}
\stopsubsubsection
}
\stopsubsection
\stopsection
\stoptext
Saída real
A página antes de cada seção está em branco:
Saída sem página
Quando a page=yes
opção é removida, a saída apresenta problemas:
O \column
comando não parece mais respeitar as larguras das colunas e o texto fica agrupado na parte inferior da primeira coluna.
Resultado Esperado
A saída desejada não teria uma página em branco entre as seções principais:
Gambiarra
OPDF resultantecontém várias páginas. UsandoGhostscriptfunciona para excluir todas as outras páginas (por exemplo, usando gs -sPageList=even
), o que produz o resultado desejado:
- Teoria da Inflação porRoen Kelly
- Estrelas porTiago Josephides
No entanto, a página extra em branco causa problemas indiretos: etapas extras de processamento de imagem, páginas PDF precisam ser reordenadas e aumento do tempo de compilação devido à necessidade de duas passagens.
Pergunta
O que precisa mudar para que as páginas em branco sejam erradicadas do documento?
Ideias
Adicionar e remover page=yes
resolve o problema de páginas em branco; no entanto, o conjunto de colunas da primeira página é comprimido para a esquerda. Tentei resolver o problema usando:\definecolumnset
page=yes
setuphead
\definecounter[BookPageNumber][
way=bychapter,
prefix=no,
]
\definecolumnset[BookColumns][n=4,distance=.25in,page={\doifelse{\rawcountervalue[BookPageNumber]}{1}{}{yes}}]
\setupcolumnset[BookColumns:1][width=11.75in]
\setupcolumnset[BookColumns:2][width=3.46in]
\setupcolumnset[BookColumns:3][width=3.46in]
\setupcolumnset[BookColumns:4][width=3.46in]
\setuphead[section][
before={%
\doif{\rawcountervalue[BookPageNumber]}{1}{\page}
\incrementcounter[BookPageNumber]
},
beforesection={\startcolumnset[BookColumns]},
aftersection={\stopcolumnset},
]
No entanto, isso não produz o resultado desejado.
Responder1
Os conjuntos de colunas são baseados em spread, ou seja, quando n=4
você realmente tem oito colunas, ou seja, quatro na página esquerda e quatro na página direita. Um documento sempre abre com uma página direita que você não configurou e é por isso que adicionar \page[yes]
ajuda, pois empurra o conteúdo para a página esquerda que está configurada.
Portanto, apenas adicionar as colunas 5 a 8 para a página correta resolve o problema.
\definepapersize[BookPaperSize][width=24in, height=12in,]
\setuppapersize[BookPaperSize]
\definelayout[BookTextLayout][
topspace=.5in,
backspace=.5in,
header=\zeropoint,
footer=\zeropoint,
grid=yes,
]
\setuplayout[BookTextLayout]
\definecolumnset[BookColumns][n=4,distance=.25in]
\setupcolumnset[BookColumns:1][width=11.75in]
\setupcolumnset[BookColumns:2][width=3.46in]
\setupcolumnset[BookColumns:3][width=3.46in]
\setupcolumnset[BookColumns:4][width=3.46in]
\setupcolumnset[BookColumns:5][width=11.75in]
\setupcolumnset[BookColumns:6][width=3.46in]
\setupcolumnset[BookColumns:7][width=3.46in]
\setupcolumnset[BookColumns:8][width=3.46in]
\setuphead[section][
%page=yes,
beforesection={\startcolumnset[BookColumns]},
aftersection={\stopcolumnset},
]
\setuphead[subsection][
after={\column},
]
\setuphead[subsubsection][
after={\blank[small]},
]
\starttext
\startsection[title={Section Title}]
\startsubsection[title={Subtitle}]
\dorecurse{2}{\input knuth}
\dorecurse{2}{%
\startsubsubsection[title={Subsubtitle}]
\dorecurse{1}{\input ward}
\dorecurse{2}{\input lorem}
\dorecurse{1}{\input bryson}
\stopsubsubsection
}
\stopsubsection
\stopsection
\stoptext