TikZ \foreach ループ内で偶数/奇数ページをテストするにはどうすればいいですか

TikZ \foreach ループ内で偶数/奇数ページをテストするにはどうすればいいですか

TikZ foreachループを使用してドキュメントを作成しています。ここにスニペットがあります

\documentclass{article}
\usepackage{tikz}
\begin{document}

\foreach \myi in {1,2,...,17}
  {
    hello(\myi)
    \clearpage
    \ifoddpage
      A
    \else
      B
    \fi
  }

\end{document}

しかし、これにより次のエラーが発生します。

! Extra }, or forgotten \endgroup.
\pgffor@collectargument ...fter {\pgffor@body {#1}
                                                  }\else \expandafter \long ...
l.14   }

これを回避する方法について何かアイデアはありますか?

答え1

\ifoddpageデフォルトでは定義されていません。そのパッケージをプリアンブルに追加し、\checkoddpageチェックを呼び出す前にも追加する必要があります\ifoddpage

\documentclass{article}

\usepackage{tikz,ifoddpage}

\begin{document}

\foreach \myi in {1,2,...,17}{%
  \clearpage
  \checkoddpage
  \ifoddpage
    A
  \else
    B
  \fi
  hello(\myi)
}

\end{document}

同じアプローチを次に示します。refcount:

\documentclass{article}

\usepackage{tikz,refcount}

\newcounter{oddpagelabel}
\newcommand{\checkoddpage}{\stepcounter{oddpagelabel}\label{opl-\theoddpagelabel}}

\begin{document}

\foreach \myi in {1,2,...,17}{%
  \clearpage
  \checkoddpage
  \ifodd\getpagerefnumber{opl-\theoddpagelabel}
    A
  \else
    B
  \fi
  hello(\myi)
}

\end{document}

関連情報