
Fondo
Crear un diseño personalizado de varias columnas con columnas que difieren en ancho.
Problema
El problema de esta pregunta se menciona pero no se aborda en una publicación anterior.respuesta:
El entorno
page=yes
provoca un desafortunado efecto secundario: el libro está entretejido con páginas en blanco entre capítulos. Estos se pueden eliminar usando Ghostscript para posprocesar...
En otras palabras, sin la page=yes
opción, ConTeXt no puede formatear el texto como desea. Con esta page=yes
opción, ConTeXt formatea como se esperaba pero exporta una página en blanco no deseada entre las secciones principales.
Código
Ejemplo de trabajo mínimo que ilustra el 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
Salida real
La página antes de cada sección está en blanco:
Salida sin página
Cuando page=yes
se elimina la opción, el resultado tiene problemas:
El \column
comando ya no parece respetar el ancho de las columnas y el texto se acumula en la parte inferior de la primera columna.
Rendimiento esperado
El resultado deseado no tendría una página en blanco entre las secciones principales:
Solución alterna
ElPDF resultantecontiene varias páginas. UsandoGuión fantasmatrabaja para eliminar una página por medio (por ejemplo, usando gs -sPageList=even
), lo que produce el resultado deseado:
- Teoría de la inflación porkelly roen
- Estrellas porJames Josephides
Sin embargo, la página en blanco adicional provoca problemas en cadena: pasos adicionales de procesamiento de imágenes, las páginas PDF deben reordenarse y un mayor tiempo de compilación debido a la necesidad de dos pasadas.
Pregunta
¿Qué hay que cambiar para que las páginas en blanco desaparezcan del documento?
Ideas
Agregar page=yes
y \definecolumnset
eliminar page=yes
resuelve setuphead
el problema de las páginas en blanco; sin embargo, el conjunto de columnas de la primera página está desplazado hacia la izquierda. Intenté solucionar el problema usando:
\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},
]
Sin embargo, esto no produce el resultado deseado.
Respuesta1
Los conjuntos de columnas se basan en extensiones, es decir, cuando n=4
en realidad tiene ocho columnas, es decir, cuatro en la página izquierda y cuatro en la página derecha. Un documento siempre se abre con una página derecha que no ha configurado y es por eso que agregar \page[yes]
ayuda, porque empuja el contenido a la página izquierda que está configurada.
Entonces, simplemente agregar las columnas 5 a 8 para la página derecha soluciona el 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