Let chapter start on odd page and make the even page before show an image
Dear all, with your help I can colorize the empty even page right before a chapter starts on the odd page. The mwe below shows it. Now I would like to redefine the contents of the left page on the fly in the text so that I could place images on this page. I thought that I could get a simple solution by inserting a TEXpage as even page, but this does not work for several reasons. First a TEXpage is not counted correctly like a normal page. And secondly I found now way to put it on the even page. So what I really want to achieve is a way to redefine this setups at some point in the text to insert eg. a picture on the even page before a chapter. \startsetups [chapter:before] \doifoddpageelse {} {\pushbackground[page] \setupbackgrounds[page][background=color,backgroundcolor=blue,] \page[empty,right] \popbackground} \stopsetups Here comes the not so mwe: %% start mwe \setuplayout [ location=doublesided ] \setuppagenumbering[alternative=doublesided] \definepagebreak [chapter] [footer,yes,header,footer,right] \startsetups [chapter:before] \doifoddpageelse {} {\pushbackground[page] \setupbackgrounds[page][background=color,backgroundcolor=blue,] \page[empty,right] \popbackground} \stopsetups \setuphead [chapter] [ page=yes, before=\directsetup{chapter:before}, ] \setupexternalfigure[location=default] \starttext \startchapter [title={foo}] \dorecurse{2}{\input tufte \par} \stopchapter \startchapter [title={foo2}] \dorecurse{6}{\input tufte \par} \stopchapter \startchapter [title={bar}] \input knuth \startTEXpage \externalfigure[cow.pdf][height=\paperheight,width=\paperwidth] \stopTEXpage \stopchapter \startchapter [title={baz}] \input knuth \stopchapter \stoptext %% stop mwe As you see the image is not in the right place and of course the pagenumbering is wrong. I want that one of these blue pages shows an image. Is this possible? Thanks for your help. juh -- Autoren-Homepage: ......... http://literatur.hasecke.com Satiren & Essays: ......... http://www.sudelbuch.de Privater Blog: ............ http://www.hasecke.eu Netzliteratur-Projekt: .... http://www.generationenprojekt.de
Dear all,
with your help I can colorize the empty even page right before a chapter starts on the odd page. The mwe below shows it.
Now I would like to redefine the contents of the left page on the fly in the text so that I could place images on this page.
I thought that I could get a simple solution by inserting a TEXpage as even page, but this does not work for several reasons. First a TEXpage is not counted correctly like a normal page. And secondly I found now way to put it on the even page.
So what I really want to achieve is a way to redefine this setups at some point in the text to insert eg. a picture on the even page before a chapter.
\startsetups [chapter:before] \doifoddpageelse {} {\pushbackground[page] \setupbackgrounds[page][background=color,backgroundcolor=blue,] \page[empty,right] \popbackground} \stopsetups
Here comes the not so mwe:
%% start mwe \setuplayout [ location=doublesided ] \setuppagenumbering[alternative=doublesided] \definepagebreak [chapter] [footer,yes,header,footer,right]
\startsetups [chapter:before] \doifoddpageelse {} {\pushbackground[page] \setupbackgrounds[page][background=color,backgroundcolor=blue,] \page[empty,right] \popbackground} \stopsetups
\setuphead [chapter] [ page=yes, before=\directsetup{chapter:before}, ]
\setupexternalfigure[location=default]
\starttext
\startchapter [title={foo}]
\dorecurse{2}{\input tufte \par}
\stopchapter
\startchapter [title={foo2}]
\dorecurse{6}{\input tufte \par}
\stopchapter
\startchapter [title={bar}]
\input knuth
\startTEXpage \externalfigure[cow.pdf][height=\paperheight,width=\paperwidth] \stopTEXpage
\stopchapter
\startchapter [title={baz}]
\input knuth
\stopchapter
\stoptext %% stop mwe
As you see the image is not in the right place and of course the pagenumbering is wrong. Use \startTEXpage[pagestate=start] to increase the page number with TEX
juh schrieb am 29.05.2020 um 10:29: pages.
I want that one of these blue pages shows an image. Is this possible? Yes but there are different ways for different requirements.
- Do you you have a picture before *every* chapter? - Do you use full page images? - Are the images cropped to fit the page dimension, stretched or centered with margins? - ... Wolfgang
Am 29.05.20 um 12:45 schrieb Wolfgang Schuster:
Dear all,
with your help I can colorize the empty even page right before a chapter starts on the odd page. The mwe below shows it.
Now I would like to redefine the contents of the left page on the fly in the text so that I could place images on this page.
I thought that I could get a simple solution by inserting a TEXpage as even page, but this does not work for several reasons. First a TEXpage is not counted correctly like a normal page. And secondly I found now way to put it on the even page.
So what I really want to achieve is a way to redefine this setups at some point in the text to insert eg. a picture on the even page before a chapter.
\startsetups [chapter:before] \doifoddpageelse {} {\pushbackground[page] \setupbackgrounds[page][background=color,backgroundcolor=blue,] \page[empty,right] \popbackground} \stopsetups
As you see the image is not in the right place and of course the pagenumbering is wrong. Use \startTEXpage[pagestate=start] to increase the page number with TEX
juh schrieb am 29.05.2020 um 10:29: pages.
Thanks for this hint.
I want that one of these blue pages shows an image. Is this possible? Yes but there are different ways for different requirements.
- Do you you have a picture before *every* chapter?
No, the additional image page shall appear only if the last chapter ends on an odd page. Then I need the image page to push the new chapter to the next odd page.
- Do you use full page images? - Are the images cropped to fit the page dimension, stretched or centered with margins?
For this usecase images are blown up and cropped to fit the page dimension including the bleed. juh
Jan U. Hasecke schrieb am 29.05.2020 um 15:10:
Am 29.05.20 um 12:45 schrieb Wolfgang Schuster:
Dear all,
with your help I can colorize the empty even page right before a chapter starts on the odd page. The mwe below shows it.
Now I would like to redefine the contents of the left page on the fly in the text so that I could place images on this page.
I thought that I could get a simple solution by inserting a TEXpage as even page, but this does not work for several reasons. First a TEXpage is not counted correctly like a normal page. And secondly I found now way to put it on the even page.
So what I really want to achieve is a way to redefine this setups at some point in the text to insert eg. a picture on the even page before a chapter.
\startsetups [chapter:before] \doifoddpageelse {} {\pushbackground[page] \setupbackgrounds[page][background=color,backgroundcolor=blue,] \page[empty,right] \popbackground} \stopsetups
As you see the image is not in the right place and of course the pagenumbering is wrong. Use \startTEXpage[pagestate=start] to increase the page number with TEX
juh schrieb am 29.05.2020 um 10:29: pages. Thanks for this hint.
I want that one of these blue pages shows an image. Is this possible? Yes but there are different ways for different requirements.
- Do you you have a picture before *every* chapter? No, the additional image page shall appear only if the last chapter ends on an odd page. Then I need the image page to push the new chapter to the next odd page.
- Do you use full page images? - Are the images cropped to fit the page dimension, stretched or centered with margins? For this usecase images are blown up and cropped to fit the page dimension including the bleed.
\setuppagenumbering [alternative=doublesided] \setupexternalfigures [location=default] \definedataset [chapter] \startsetups [chapter:before] \page[yes] \doglobal\increment\ChapterCounter \doifoddpageelse {} {\doifsomething {\datasetvariable{chapter}{\ChapterCounter}{image}} {\startlayout[page] \centerbox{\externalfigure [\datasetvariable{chapter}{\ChapterCounter}{image}][factor=min]} \stoplayout}} \stopsetups \setuphead [chapter] [page=, beforesection=\directsetup{chapter:before}, insidesection={\setdataset[chapter][\ChapterCounter][image=\structureuservariable{image}]}] \setupexternalfigure[location=default] \starttext \startchapter [title={Tufte}] [image=cow] \dorecurse{4}{\samplefile{tufte}} \stopchapter \startchapter [title={Knuth}] [image=mill] \dorecurse{8}{\samplefile{knuth}} \stopchapter \startchapter [title={Zapf}] [image=hacker] \dorecurse{6}{\samplefile{zapf}} \stopchapter \stoptext Wolfgang
Hi Wolfgang, thank you very much. Amazing! Am 29.05.20 um 15:35 schrieb Wolfgang Schuster:
\definedataset [chapter]
\startsetups [chapter:before]
\page[yes]
\doglobal\increment\ChapterCounter
\doifoddpageelse {} {\doifsomething {\datasetvariable{chapter}{\ChapterCounter}{image}} {\startlayout[page] \centerbox{\externalfigure [\datasetvariable{chapter}{\ChapterCounter}{image}][factor=min]} \stoplayout}}
\stopsetups
\setuphead [chapter] [page=, beforesection=\directsetup{chapter:before}, insidesection={\setdataset[chapter][\ChapterCounter][image=\structureuservariable{image}]}]
One and a half question. Why did you set \ChapterCounter explizitly and why is \ChapterCounter part of the datasetvariable? juh
On Fri, 29 May 2020, Jan U. Hasecke wrote:
One and a half question. Why did you set \ChapterCounter explizitly and why is \ChapterCounter part of the datasetvariable?
\dataset... is a high level interface for collecting two-pass data in ConTeXt. Here is a simple example: \definedataset[name] \starttext The values of the three dataset variables are: \startlines \datasetvariable{name}{hash1}{key} \datasetvariable{name}{hash2}{key} \datasetvariable{name}{hash3}{key} \stoplines Now we set the values. \setdataset[name][hash1][key=value1] \setdataset[name][hash2][key=value2] \setdataset[name][hash3][key=value3] \stoptext Note that we are using the values stored in different hash-ids before they are defined. ConTeXt stores the values in the `.tuc` file and uses them. This is what is stored in the `.tuc` file: utilitydata.job.datasets.collected={ ["name"]={ ["hash1"]={ ["key"]="value1", }, ["hash2"]={ ["key"]="value2", }, ["hash3"]={ ["key"]="value3", }, }, } The magic of loading and reusing them happens behind the scenes, so the user doesn't have to worry about it. See https://wiki.contextgarden.net/System_Macros/Key_Value_Assignments#Multi-pas... for more details. Now, suppose you wanted to use the image defined as part of `\startchapter` as the background image of the _current_ page, then you could access the value of the \structureuservariable. For example, \startchapter[title=whatever][image=filename] \structureuservariable{image} \stopchapter But you want to use the value of the image _before_ the start of the chapter. So, Wolfgang is using the two-pass mechanism to store the value of the image in the database named 'chapter` in the hash-location `\ChapterCounter` and then retrieving it before it is defined! Aditya
Am 29.05.20 um 18:03 schrieb Aditya Mahajan:
The magic of loading and reusing them happens behind the scenes, so the user doesn't have to worry about it. See https://wiki.contextgarden.net/System_Macros/Key_Value_Assignments#Multi-pas... for more details.
Now, suppose you wanted to use the image defined as part of `\startchapter` as the background image of the _current_ page, then you could access the value of the \structureuservariable. For example,
\startchapter[title=whatever][image=filename]
\structureuservariable{image}
\stopchapter
But you want to use the value of the image _before_ the start of the chapter. So, Wolfgang is using the two-pass mechanism to store the value of the image in the database named 'chapter` in the hash-location `\ChapterCounter` and then retrieving it before it is defined!
Thanks a lot for the clarification! juh
In a similar setup I wanted to start every chapter with image and short vita the author and came up with the following (of course not without help from our wizards): \definefont[ChapterFont][Sans*default at 30pt] \startsetups normalheader % default numbers of my bodyfont are oldstyle \setupheadertexts[chapter][{\addff{normnum}\pagenumber}][{\addff{normnum}\pagenumber}][] \stopsetups \startsetups noheader \setupheadertexts[][][][] \stopsetups \startsetups bigchapter \setupalign[flushleft,hz,hanging,verytolerant,nothyphenated] \doifelse{\structureuservariable{image}}{}{% if image empty }{% \directsetup{noheader} \vbox{% {\ChapterFont\structurevariable{title}\par}% \blank[big] \externalfigure[img/\structureuservariable{image}][width=0.8\textwidth]\par } \doifnot{\structureuservariable{vita}}{}{% if vita \vfill \vbox{% {\tf\ss\structureuservariable{vita}} }% }% \page[right] \vbox{% \doifnot{\structureuservariable{subtitle}}{}{% if subtitle {\definedfont[SerifItalic*eka at 30pt]\structureuservariable{subtitle}} }% }% }% \blank[3*big] \directsetup{normalheader} \setupalign[width,hz,hanging,hyphenated]% reset alignment \stopsetups \setuphead[chapter][ page=left, number=no, command=\gobbletwoarguments, before=, after={\directsetup{bigchapter}}, style={\ChapterFont}, ] This is the result: https://www.dreiviertelhaus.de/editionka/lauf-los-buch/ (see preview images linked at the bottom) Best, Hraban
On Fri, 29 May 2020, Henning Hraban Ramm wrote:
In a similar setup I wanted to start every chapter with image and short vita the author and came up with the following (of course not without help from our wizards):
\doifelse{\structureuservariable{image}}{}{% if image empty }{% ... } \doifnot{\structureuservariable{vita}}{}{% if vita ... }% }% }%
You can use `\doifsomething{\structureuservariable{image}}` etc which is slightly more readable than \doifelse{...}\empty{}{} or \doifnot{...}\empty{}. Aditya
Am 29.05.2020 um 22:18 schrieb Aditya Mahajan
: On Fri, 29 May 2020, Henning Hraban Ramm wrote:
In a similar setup I wanted to start every chapter with image and short vita the author and came up with the following (of course not without help from our wizards):
\doifelse{\structureuservariable{image}}{}{% if image empty }{% ... } \doifnot{\structureuservariable{vita}}{}{% if vita ... }% }% }%
You can use `\doifsomething{\structureuservariable{image}}` etc which is slightly more readable than \doifelse{...}\empty{}{} or \doifnot{...}\empty{}.
I tried several \doifs and this was the one that worked. Can’t remember the details, it’s been a while. HR
participants (5)
-
Aditya Mahajan
-
Henning Hraban Ramm
-
Jan U. Hasecke
-
juh
-
Wolfgang Schuster