![](https://secure.gravatar.com/avatar/5955e8e90611e77ccbfc7721b6112027.jpg?s=120&d=mm&r=g)
Dear list, I have the following sample: \starttext \input knuth \page[right] \setuplayout[page] \externalfigure[\jobname.pdf][page=1] \stoptext My question is how to get a page from the document you‘re compiling repeated inside the same document. I have tried to search both i-context.pdf and the wiki, but “mirror” and “repeat” seem to be bad options. Many thanks in advance, Pablo -- http://www.ousia.tk
![](https://secure.gravatar.com/avatar/e5aa6984b53b8925e405ebbdbc051ad9.jpg?s=120&d=mm&r=g)
Am 2020-02-06 um 16:28 schrieb Pablo Rodriguez
: My question is how to get a page from the document you‘re compiling repeated inside the same document.
I solved this with a component that I include twice. Of course that won’t work if you need a page in the middle of some text flow. Greetlings, Hraban --- https://www.fiee.net http://wiki.contextgarden.net https://www.dreiviertelhaus.de GPG Key ID 1C9B22FD
![](https://secure.gravatar.com/avatar/5955e8e90611e77ccbfc7721b6112027.jpg?s=120&d=mm&r=g)
On 2/6/20 5:15 PM, Henning Hraban Ramm wrote:
Am 2020-02-06 um 16:28 schrieb Pablo Rodriguez
: My question is how to get a page from the document you‘re compiling repeated inside the same document.
I solved this with a component that I include twice. Of course that won’t work if you need a page in the middle of some text flow.
Many thanks for your reply, Hraban. I don’t need a page in the middle of the text. I need a single page document to be printed twice and doublesided. I’m afraid I’d never used components and I cannot understand how this would help to replicate the previous page in a document. BTW, in my real-world document I use layers which are different for first and other pages. Could you provide a minimal sample showing how a component may include a page twice? Many thanks for your help, Pablo -- http://www.ousia.tk
![](https://secure.gravatar.com/avatar/74d41c3215dcdd377343cdc47311757c.jpg?s=120&d=mm&r=g)
On Thu, 6 Feb 2020 19:02:08 +0100
Pablo Rodriguez
On 2/6/20 5:15 PM, Henning Hraban Ramm wrote:
Am 2020-02-06 um 16:28 schrieb Pablo Rodriguez
: My question is how to get a page from the document you‘re compiling repeated inside the same document.
I solved this with a component that I include twice. Of course that won’t work if you need a page in the middle of some text flow.
Many thanks for your reply, Hraban.
I don’t need a page in the middle of the text.
I need a single page document to be printed twice and doublesided.
I’m afraid I’d never used components and I cannot understand how this would help to replicate the previous page in a document.
BTW, in my real-world document I use layers which are different for first and other pages.
How many pages has your document, first you write is has only one page but now you write about a document with many pages.
Could you provide a minimal sample showing how a component may include a page twice?
Can you provide a minimal example of your document because there is no solution which works for all cases. Wolfgang
![](https://secure.gravatar.com/avatar/5955e8e90611e77ccbfc7721b6112027.jpg?s=120&d=mm&r=g)
On 2/6/20 8:17 PM, Wolfgang Schuster wrote:
On Thu, 6 Feb 2020 19:02:08 +0100 Pablo Rodriguez wrote:
[...] BTW, in my real-world document I use layers which are different for first and other pages.
How many pages has your document, first you write is has only one page but now you write about a document with many pages.
Sorry for the inaccuracies in my previous description, Wolfgang. I use a single source combined with data read from CSV files to generate documents which may contain a single or more than one page. I assumed that modes were persistent across runs. And maybe they aren’t or my approach is wrong.
Could you provide a minimal sample showing how a component may include a page twice?
Can you provide a minimal example of your document because there is no solution which works for all cases.
The sample that seems to work is the following (too tricky for my taste and I have to adapt it to Windows): \installshipoutmethod{savepages} {\dowithnextbox {\invokepagehandler{normal}{\copy\nextbox}% \putboxincache{savedpages}{\number\realpageno}\nextbox} \hbox} \setuppaper[method=savepages] \starttext \scale[width=\textwidth]{a} \scale[width=\textwidth]{b} \doifmode{*first}{\executesystemcommand{rm zikaasd.abh}} \startnotmode[*first] \ifnum\lastpagenumber<2 \executesystemcommand{touch zikaasd.abh} \fi \doiffileexistselse{zikaasd.abh}{% \startlayout[page] \directboxfromcache{savedpages}{1} \stoplayout}{} \stopnotmode \stoptext I wonder whether there is a better way of doing this. At least, creating and removing empty files with Lua would be more portable. And not having to use an external file would be better. Many thanks for your help, Pablo -- http://www.ousia.tk
![](https://secure.gravatar.com/avatar/74d41c3215dcdd377343cdc47311757c.jpg?s=120&d=mm&r=g)
On Thu, 6 Feb 2020 22:04:47 +0100
Pablo Rodriguez
On 2/6/20 8:17 PM, Wolfgang Schuster wrote:
On Thu, 6 Feb 2020 19:02:08 +0100 Pablo Rodriguez wrote:
[...] BTW, in my real-world document I use layers which are different for first and other pages.
How many pages has your document, first you write is has only one page but now you write about a document with many pages.
Sorry for the inaccuracies in my previous description, Wolfgang.
I use a single source combined with data read from CSV files to generate documents which may contain a single or more than one page.
I assumed that modes were persistent across runs. And maybe they aren’t or my approach is wrong.
Could you provide a minimal sample showing how a component may include a page twice?
Can you provide a minimal example of your document because there is no solution which works for all cases.
The sample that seems to work is the following (too tricky for my taste and I have to adapt it to Windows):
\installshipoutmethod{savepages} {\dowithnextbox {\invokepagehandler{normal}{\copy\nextbox}% \putboxincache{savedpages}{\number\realpageno}\nextbox} \hbox}
\setuppaper[method=savepages]
\starttext
\scale[width=\textwidth]{a} \scale[width=\textwidth]{b}
\doifmode{*first}{\executesystemcommand{rm zikaasd.abh}}
\startnotmode[*first] \ifnum\lastpagenumber<2 \executesystemcommand{touch zikaasd.abh} \fi
\doiffileexistselse{zikaasd.abh}{% \startlayout[page] \directboxfromcache{savedpages}{1} \stoplayout}{} \stopnotmode
\stoptext
I wonder whether there is a better way of doing this.
At least, creating and removing empty files with Lua would be more portable. And not having to use an external file would be better.
Your example is still very confusing and I have no idea what you're trying to achieve. They way to go depends also what you try to achieve, when you need an exact copy of the first page the above is the way to go. Another way is to use a make file (or a ctx-file for ConTeXt) to add a image of the first page to your document afterwards. Wolfgang
![](https://secure.gravatar.com/avatar/5955e8e90611e77ccbfc7721b6112027.jpg?s=120&d=mm&r=g)
On 2/6/20 10:26 PM, Wolfgang Schuster wrote:
On Thu, 6 Feb 2020 22:04:47 +0100 Pablo Rodriguez wrote:
[...] At least, creating and removing empty files with Lua would be more portable. And not having to use an external file would be better.
Your example is still very confusing and I have no idea what you're trying to achieve. They way to go depends also what you try to achieve, when you need an exact copy of the first page the above is the way to go.
Sorry again for the poor explanation, Wolfgang. I must recognize that I need this as a workaround to avoid crap at work (and that is all I’m allowed to explain there). I need an exact copy of the first page in the documents that only contain a single page. Sorry, I cannot provide a minimal sample (only an explanation [and I’m not sure it would be minimal]). What I discovered after my previous message is that both "\savebuffer[whatever][αβδ.γεζ]" and "\ctxlua{os.remove([[\jobname]].."-αβδ.γεζ")}" are portable ways of creating and removing empty files.
Another way is to use a make file (or a ctx-file for ConTeXt) to add a image of the first page to your document afterwards.
I’m not sure I’m getting this: do you mean something similar to \typesetbuffer? Many thanks for your help, Pablo -- http://www.ousia.tk
![](https://secure.gravatar.com/avatar/205d24e99aef25af31c8e6f28115c4e1.jpg?s=120&d=mm&r=g)
Hi, Pablo ! Funny, I asked the same kind of question in a LaTeX mailing list a few days ago. The anwer I was given requires a LaTeX package, but is written in TeX as well, so it may be easy to adapt it for ConTeXt. Sorry, I cannot do that myself yet. I have just started to learn ConTeXt and am a very busy slow learner. \usepackage{atbegshi} \newcommand{\Repeat}{<the content you need to be repeatedt>} \AtBeginShipout{% \ifodd\value{page}% \else\Repeat% \newpage% \fi% } I hope it helps. But maybe you don’t need to repeat the same page every two page, as I did… Thomas Savary 1 le Grand-Plessis F-85340 L’Île-d’Olonne Tél. 06 22 82 61 34 https://correctionpro.fr/ https://compo85.fr/ jeudi 6 février 2020, à 16:28:04 CET, Pablo Rodriguez a écrit :
Dear list,
I have the following sample:
\starttext \input knuth \page[right] \setuplayout[page] \externalfigure[\jobname.pdf][page=1] \stoptext
My question is how to get a page from the document you‘re compiling repeated inside the same document.
I have tried to search both i-context.pdf and the wiki, but “mirror” and “repeat” seem to be bad options.
Many thanks in advance,
Pablo -- http://www.ousia.tk ____________________________________________________________________________ _______ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ____________________________________________________________________________ _______
![](https://secure.gravatar.com/avatar/5955e8e90611e77ccbfc7721b6112027.jpg?s=120&d=mm&r=g)
On 2/6/20 5:39 PM, Thomas Savary wrote:
Hi, Pablo !
Funny, I asked the same kind of question in a LaTeX mailing list a few days ago. The anwer I was given requires a LaTeX package, but is written in TeX as well, so it may be easy to adapt it for ConTeXt. Sorry, I cannot do that myself yet. I have just started to learn ConTeXt and am a very busy slow learner.
\usepackage{atbegshi} \newcommand{\Repeat}{<the content you need to be repeatedt>}
\AtBeginShipout{% \ifodd\value{page}% \else\Repeat% \newpage% \fi%
Many thanks for your reply, Thomas. I don’t think this would work, since I need to impose a full page from the same document in a new one (without resizing or rotating it). I mean, from what I see in that approach, I would have a hard time fitting all page contents with layers inside a single command. But please, let me know what I may be missing here, if I’m wrong. Many thanks for your help, Pablo -- http://www.ousia.tk
![](https://secure.gravatar.com/avatar/74d41c3215dcdd377343cdc47311757c.jpg?s=120&d=mm&r=g)
On Thu, 6 Feb 2020 16:28:04 +0100
Pablo Rodriguez
Dear list,
I have the following sample:
\starttext \input knuth \page[right] \setuplayout[page] \externalfigure[\jobname.pdf][page=1] \stoptext
My question is how to get a page from the document you‘re compiling repeated inside the same document.
I have tried to search both i-context.pdf and the wiki, but “mirror” and “repeat” seem to be bad options.
You can store each finished page in a box and access the content of the stored box afterwards. \installshipoutmethod{savepages} {\dowithnextbox {\invokepagehandler{normal}{\copy\nextbox}% \putboxincache{savedpages}{\number\realpageno}\nextbox} \hbox} \setuppaper[method=savepages] \starttext \dorecurse{8} {\expanded{\chapter{Chapter \recurselevel}} \dorecurse{\recurselevel}{\samplefile{weisman}}} \startlayout[page] \directboxfromcache{savedpages}{5} \page \directboxfromcache{savedpages}{2} \stoplayout \stoptext Wolfgang
![](https://secure.gravatar.com/avatar/5955e8e90611e77ccbfc7721b6112027.jpg?s=120&d=mm&r=g)
On 2/6/20 7:14 PM, Wolfgang Schuster wrote:
On Thu, 6 Feb 2020 16:28:04 +0100 Pablo Rodriguez wrote:
[...] My question is how to get a page from the document you‘re compiling repeated inside the same document.
I have tried to search both i-context.pdf and the wiki, but “mirror” and “repeat” seem to be bad options.
You can store each finished page in a box and access the content of the stored box afterwards.
Huge thanks for your reply and the code, Wolfgang. I have just checked “TeX for the Impatient” to understand what shipout methods and boxes were. I think I can barely grasp their meaning. Which are other usages for shipouts and boxes? I guess they are used to add pages in the final PDF document, but I don’t see which other uses they may have. BTW, “invokepagehandler” reads “invokepageheandler” in the following files from the ConTeXt Suite (I don’t know whether the first is the real source of the rest of them): * texmf-context/tex/context/interface/mkiv/i-imposition.xml * texmf-context/tex/context/interface/mkiv/context-en.xml * texmf-context/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json * texmf-context/context/data/textadept/context/data/scite-context-data-interfaces.lua * texmf-context/context/data/scite/context/lexers/data/scite-context-data-interfaces.lua * texmf-context/context/data/scite/context/scite-context-data-interfaces.properties Many thanks again for your help, Pablo
\installshipoutmethod{savepages} {\dowithnextbox {\invokepagehandler{normal}{\copy\nextbox}% \putboxincache{savedpages}{\number\realpageno}\nextbox} \hbox}
\setuppaper[method=savepages]
\starttext
\dorecurse{8} {\expanded{\chapter{Chapter \recurselevel}} \dorecurse{\recurselevel}{\samplefile{weisman}}}
\startlayout[page] \directboxfromcache{savedpages}{5} \page \directboxfromcache{savedpages}{2} \stoplayout
\stoptext
![](https://secure.gravatar.com/avatar/9291059911c26e0375f80003de0ea2fd.jpg?s=120&d=mm&r=g)
Hello Pablo, although I'm not sure about what to achieve, should this be helpful for you? Ctx source: ---- Pablo.mkiv \starttext \setupheadertexts[][\cldcontext{"Mode = " .. (tex.modes["1"] and "1" or tex.modes["2"] and "2" or "??")}] % Just for debugging \input knuth \page[right] \startmodeset [1] {% \setuplayout[page] foo } [2] {% \pagefigure[\jobname_.pdf][page=1] } \stopmodeset \stoptext ---- To be compiled in two runs, with this: ---- d:\Lukas\ConTeXt\Test> Ctx.bat Pablo.mkiv --mode=1 & move /y Pablo.pdf Pablo_.pdf & Ctx.bat Pablo.mkiv --mode=2 ---- Best regards, Lukas On 2020-02-06 16:28, Pablo Rodriguez wrote:
Dear list,
I have the following sample:
\starttext \input knuth \page[right] \setuplayout[page] \externalfigure[\jobname.pdf][page=1] \stoptext
My question is how to get a page from the document you‘re compiling repeated inside the same document.
I have tried to search both i-context.pdf and the wiki, but “mirror” and “repeat” seem to be bad options.
Many thanks in advance,
Pablo -- http://www.ousia.tk ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________
participants (5)
-
context@vivaldi.net
-
Henning Hraban Ramm
-
Pablo Rodriguez
-
Thomas Savary
-
Wolfgang Schuster