Hintergrund

Hintergrund

Hintergrund

Erstellen eines benutzerdefinierten mehrspaltigen Layouts mit Spalten unterschiedlicher Breite.

Problem

Das Problem dieser Frage wurde bereits in einer früherenAntwort:

Das Setzen page=yeshat einen unangenehmen Nebeneffekt: Das Buch ist zwischen den Kapiteln mit leeren Seiten durchsetzt. Diese können mit Ghostscript nachträglich entfernt werden...

Mit anderen Worten: Ohne diese page=yesOption kann ConTeXt den Text nicht wie gewünscht formatieren. Mit dieser page=yesOption formatiert ConTeXt wie erwartet, exportiert aber eine unerwünschte leere Seite zwischen den Hauptabschnitten.

Code

Minimales funktionierendes Beispiel, das das Problem veranschaulicht:

\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

Tatsächliche Ausgabe

Die Seite vor jedem Abschnitt ist leer:

Tatsächliche Ausgabe

Ausgabe ohne Seite

Wenn die page=yesOption entfernt wird, treten in der Ausgabe Probleme auf:

Kein Seitenbefehl

Der \columnBefehl scheint die Spaltenbreiten nicht mehr zu berücksichtigen und der Text staut sich am unteren Ende der ersten Spalte.

Erwartete Ausgabe

Die gewünschte Ausgabe würde keine leere Seite zwischen den Hauptabschnitten aufweisen:

Erwartete Ausgabe

Problemumgehung

Derresultierendes PDFenthält mehrere Seiten. MitGhostscriptfunktioniert, indem jede zweite Seite gelöscht wird (z. B. mit gs -sPageList=even), was zum gewünschten Ergebnis führt:

Beispielausgabe

Die zusätzliche leere Seite führt jedoch zu Folgeproblemen: zusätzliche Bildverarbeitungsschritte, Neuanordnung der PDF-Seiten und längere Kompilierungszeit aufgrund der Notwendigkeit von zwei Durchgängen.

Frage

Was muss sich ändern, damit die leeren Seiten aus dem Dokument verschwinden?

Ideen

page=yesDas Hinzufügen zu \definecolumnsetund Entfernen page=yesvon aus setupheadlöst das Problem der leeren Seiten; allerdings wird der Spaltensatz der ersten Seite nach links gequetscht. Ich habe versucht, das Problem folgendermaßen zu lösen:

\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},
]

Dies führt jedoch nicht zum gewünschten Ergebnis.

Antwort1

Spaltensätze sind spread-basiert, d. h. wenn n=4Sie tatsächlich acht Spalten haben, nämlich vier auf der linken Seite und vier auf der rechten Seite. Ein Dokument wird immer mit einer rechten Seite geöffnet, die Sie nicht eingerichtet haben, und deshalb ist das Hinzufügen \page[yes]hilfreich, da es den Inhalt auf die eingerichtete linke Seite verschiebt.

Das Problem lässt sich also einfach durch das Hinzufügen der Spalten 5–8 für die rechte Seite beheben.

\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

Bildbeschreibung hier eingeben

verwandte Informationen