ConTeXt-Ausschießen jede Seite wiederholen

ConTeXt-Ausschießen jede Seite wiederholen

Ich konvertiere das wöchentliche Handout meiner Kirche in Context. Das Format ist eine halbe 8,5 x 11-Seite, die auf Vorder- und Rückseite bedruckt ist.

Was ich brauche, ist das Äquivalent des ConTeXt-Imposition-2SIDE-Schemas, außer dass die halben Seiten einmal wiederholt werden, sodass …

Printed Page 1 === Half Page 1, Half Page 1
Printed Page 2 === Half Page 2, Half Page 2

Ich weiß, dass ich wahrscheinlich die erste Datei kompilieren und dann das resultierende PDF mit Imposition neu anordnen könnte, aber das erscheint mir umständlich. Ich würde es, wenn möglich, viel lieber in einer Kontextdatei machen.

Antwort1

Hans hat mir eine E-Mail geschickt. Es gibt eine übergeordnete Schnittstelle für sich wiederholende Seiten und sie ist viel einfacher zu verwenden, als ich dachte. Schwierig wird es nur, wenn die gewünschte Anzahl von Wiederholungen nicht mit den Seitenmaßen übereinstimmt.

\setuppapersize[A5][A4,landscape]
\setuplayout[nx=2]

\starttext
    \dorecurse{10}{\input knuth\relax}
\stoptext

Bildbeschreibung hier eingeben

Alte Lösung als Referenz

Das ist nicht so einfach, da es hierfür keine High-Level-Schnittstelle gibt (es gab eineThread auf der Mailinglistevor langer Zeit). Damit dies funktioniert, müssen Sie sich in die Shipout-Routine einarbeiten. Als Erstes müssen Sie die Seite „Shipout“ duplizieren. Dies geschieht in \page_boxes_shipoutdiesen beiden Zeilen:

\finalizeshipoutbox\shipoutscratchbox
\page_shipouts_handle{\box\shipoutscratchbox}%

Dies reicht jedoch nicht aus, da das Versandfeld nach dem Versand der Seite gelöscht wird. Dies geschieht im Seitenhandler. Wenn Sie die Anordnungsmethode verwenden, ist der Handler \page_shipouts_arrange. Das Problem liegt in diesen Zeilen

\setbox\scratchbox\hpack
     {\page_otr_flush_every_stuff
      \page_otr_flush_special_content
      \box\shipoutscratchbox}%

Der Befehl \box\shipoutscratchboxlöscht das Feld nach dem Satz, ersetzen Sie es also durch \copy\shipoutscratchbox.

Hier ist ein vollständiges Beispiel:

\setuppapersize[A5][A4,landscape]
\setuparranging[2SIDE]

\unprotect

%
% from page_imp.mkiv
%

\def\page_boxes_shipout#1% or: \page_shipouts_apply
  {\dontcomplain         % redundant
   \ifcase\c_page_boxes_flush_n\else
     \page_boxes_flush_before
   \fi
   \the\everybeforeshipout
   \ifcase\shipoutfinalizemethod
     \page_shipouts_handle{#1}%
   \else
     \setbox\shipoutscratchbox\hpack{#1}% just in case there are objects there, hook for testing (will go away)
     \finalizeshipoutbox\shipoutscratchbox
     \page_shipouts_handle{\box\shipoutscratchbox}%
     % Duplicate the shipout
     \finalizeshipoutbox\shipoutscratchbox
     \page_shipouts_handle{\box\shipoutscratchbox}%
   \fi
   \setnextrealpageno       % so this comes before \everyaftershipout so in fact:
   \the\everyaftershipout   % at this point we're already on the next realpage
   \ifcase\c_page_boxes_flush_n\else
     \page_boxes_flush_after
   \fi}

\def\page_shipouts_arrange#1%
  {% \global\advance\shippedoutpages\plusone
   \begingroup
   \setbox\scratchbox\hpack
     {\page_otr_flush_every_stuff
      \page_otr_flush_special_content
      \copy\shipoutscratchbox}% \copy instead of \box
   \pusharrangedpage\scratchbox
   \deadcycles\zerocount
   \endgroup}

\protect

\starttext

\dorecurse{10}{\input knuth\relax}

\stoptext

Erste Seite der Ausgabe:

Bildbeschreibung hier eingeben

Antwort2

ConTeXt stellt für die Ausgaberoutine einen Hook zur Verfügung, mit dem Sie die fertige Seite bearbeiten können. So können Sie den Inhalt jeder Seite zweimal auf Ihrem Dokument platzieren.

\installshipoutmethod{REPEAT}
  {\dowithnextbox
     {\setbox\scratchbox\hpack to \paperwidth{\box\nextbox\hss}%
      \setbox\scratchbox\hpack               {\copy\scratchbox\box\scratchbox}%
      \invokepagehandler{normal}{\box\scratchbox}}
   \hpack}

\setuppapersize[A5][A4,landscape]

\setuppaper[method=REPEAT]

\starttext

\chapter{Knuth}

\input knuth

\chapter{Zapf}

\input zapf

\stoptext

Wiederholte Seitenausgabe auf Papier

verwandte Informationen