Henning Hraban Ramm
20. Juli 2018 um 20:49

Hi Tomáš,

I don’t know of anything existing.
Find attached what I use for a magazine – I include title and back pages in the main PDF (to get a complete issue for corrections and online distribution) and use that as externalfigure, just creating the spine anew.
Hi Henning,

below is a modified version of your example where I changed a few things.

1. I used the "measure" commands to set the spine values, the advantage of the \measure is that it falls back to 0pt when you try to use a undefined value.

2. I determined the last page of the megazine with the \getfiguredimensions command, afterwards you can use the \noffigurepages command to get the last page of the document.

3. I put the layer and frame settings for the \setlayerframed command in separate arguments.

4. I got rid of the backgrounds setup for the layer. A better solution here is to create a page without margins which can be done with the "page" layout where you flush the collected content of the layer with the \flushlayer command.

5. I set the texts for the isse number and title with the \setvariables command.

Wolfgang

%%%%%%
\definemeasure [SpineWidth]  [6mm]
\definemeasure [SpineOffset] [\dimexpr(\measure{SpineWidth}-9pt)/5\relax]

\definepapersize
  [Cover]
  [width=\dimexpr420mm+\measure{SpineWidth}\relax,
   height=297mm]

\setuppapersize [Cover]

\setupexternalfigures [directory={_pdf}]

\useexternalfigure [MAG] [magazine.pdf]

\setvariables
  [cover]
  [issue={34},
   topic={Topic}]

\setuplayout
  [marking=on]

\definelayer
  [whole]
  [width=\paperwidth,
   height=\paperheight]

\starttext

\startlayout [page]

\setlayer
  [whole]
  [x=0mm,
   y=0mm]
  {\getfiguredimensions[MAG]
   \externalfigure[MAG][page=\noffigurepages]}

\setlayer
  [whole]
  [x=\dimexpr210mm+\measure{SpineWidth}\relax,
   y=0mm]
  {\externalfigure[MAG][page=1]}

\setlayerframed
  [whole]
  [x=210mm,
   y=20mm]
  [frame=off,
   offset=overlay,
   width=\measure{SpineWidth},
   align=center]
  {\getvariable{cover}{issue}}

\setlayerframed
  [whole]
  [x=210mm,
   y=92mm]
  [frame=off,
   offset=overlay,
   align=right,
   width=\measure{SpineWidth},
   height=190mm]
  {\rotate
     [rotation=90,
      align={right,middle},
      frame=off,
      height=\measure{SpineWidth},
      width=190mm]
     {\vskip\measure{SpineOffset}
      \vbox{MAGAZINE\hfill\getvariable{cover}{topic}}}}

\flushlayer [whole]

\stoplayout

\stoptext
%%%%%%