Machen Sie auf jeder zweiten Seite etwas

Machen Sie auf jeder zweiten Seite etwas

Gibt es eine Möglichkeit, auf jedemzweiteSeite, während auf den anderen Seiten anderer Code ausgeführt wird? Ich möchte etwas, das wie im folgenden Beispiel ausgeführt wird:

\documentclass{memoir}
\usepackage{lipsum}

\begin{document}
\begin{atevenpages}
  The content of this environment is supposed to be printed on even-numbered pages. On the other hand, even-numbered pages are supposed to contain none of the main text.
\end{atevenpages}

This is the main text, which is only to appear on odd-numbered pages.
\lipsum[1-22]
\end{document}

Antwort1

Schauen Sie sich das everypageund ifthenPaket an. everypageführt einen Hook ein, der aufgerufen wird, nachdem jede Seite eingerichtet wurde. Ich muss meinen \checkthatpageBefehl also nur für die erste Seite manuell aufrufen, für alle anderen Seiten wird der Hook verwendet. Es gibt möglicherweise ausgefeiltere Lösungen, aber ich habe sie noch nicht gefunden.

\documentclass{article}
\usepackage{ifthen,everypage}

\newcommand{\checkthatpage}[2]{%
\ifthenelse{\isodd{\value{page}}}%
    {#1}%
    {#2}%
}%

\AddEverypageHook{\checkthatpage{Even}{Odd}}

\begin{document}

Foo

\clearpage

Bar

\end{document}

Antwort2

Ich würde dieses Problem auf einer niedrigeren Ebene angehen: Die \shipoutRoutine, die von TeX aufgerufen wird, wenn eine Seite voll ist und ausgeliefert werden muss. An dieser Stelle können wir einfach eine weitere Seite mit dem beabsichtigten Inhalt hinzufügen:

\documentclass{memoir}
\usepackage{lipsum}

\usepackage{atbegshi}

\AtBeginShipout{%
  \ifodd\value{page}%
    \EvenPageContent%
    \newpage
  \fi
}

\newcommand{\EvenPageContent}{%
  The content of this environment is supposed to be printed on even-numbered pages. On the other hand, even-numbered pages are supposed to contain none of the main text.
}

\begin{document}

This is the main text, which is only to appear on odd-numbered pages.
\lipsum[1-22]
\end{document}

verwandte Informationen