Fundo

Fundo

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=yescausa 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=yesopção, o ConTeXt não consegue formatar o texto conforme desejado. Com a page=yesopçã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 real

Saída sem página

Quando a page=yesopção é removida, a saída apresenta problemas:

Nenhum comando de página

O \columncomando 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:

Resultado Esperado

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:

Exemplo de saída

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=yesresolve 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:\definecolumnsetpage=yessetuphead

\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=4você 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

insira a descrição da imagem aqui

informação relacionada