Problema con \renewcommand en LaTeX

Problema con \renewcommand en LaTeX

Por favor considere el siguiente código:

\documentclass[11pt,twoside,openany]{book}

\usepackage[svgnames,x11names]{xcolor}
\usepackage{wallpaper}
\usepackage{changepage}
\usepackage[explicit]{titlesec}
\usepackage{tikz}
\usetikzlibrary{shapes,positioning}
\usepackage{geometry}
\geometry{
   paperwidth=216mm, paperheight=303mm,
   left=23mm,  %% or inner=23mm
   right=18mm, %% or outer=18mm
   top=23mm, bottom=23mm,
   headheight=\baselineskip,
   headsep=7mm,
   footskip=7mm
}


%% Command to hold chapter illustration image
\newcommand\chapterillustration{}

%% Define how the chapter title is printed
\titleformat{\chapter}{}{}{0pt}{
%% Background image at top of page
\ThisULCornerWallPaper{1}{\chapterillustration}
%% Draw a semi-transparent rectangle across the top
\tikz[overlay,remember picture]
  \fill[LightSalmon1,opacity=.7]
  (current page.north west) rectangle 
  ([yshift=-3cm] current page.north east);
  %% Check if on an odd or even page
  \checkoddpage\strictpagecheck
  %% On odd pages, "logo" image at lower right
  %% corner; Chapter number printed near spine
  %% edge (near the left); chapter title printed
  %% near outer edge (near the right).
  \ifoddpage{
    \ThisLRCornerWallPaper{.35}{image3}
    \begin{tikzpicture}[overlay,remember picture]
    \node[anchor=south west,
      xshift=20mm,yshift=-30mm,
      font=\sffamily\bfseries\huge] 
      at (current page.north west) 
      {\chaptername\ \thechapter};
    \node[fill=Sienna!80!black,text=white,
      font=\Huge\bfseries, 
      inner ysep=12pt, inner xsep=20pt,
      rounded rectangle,anchor=east, 
      xshift=-20mm,yshift=-30mm] 
      at (current page.north east) {#1};
    \end{tikzpicture}
  }
  %% On even pages, "logo" image at lower left
  %% corner; Chapter number printed near outer
  %% edge (near the right); chapter title printed
  %% near spine edge (near the left).
  \else {
    \ThisLLCornerWallPaper{.35}{image3}
    \begin{tikzpicture}[overlay,remember picture]
    \node[anchor=south east,
      xshift=-20mm,yshift=-30mm,
      font=\sffamily\bfseries\huge] 
      at (current page.north east)
      {\chaptername\ \thechapter};
    \node[fill=Sienna!80!black,text=white,
      font=\Huge\bfseries,
      inner sep=12pt, inner xsep=20pt,
      rounded rectangle,anchor=west,
      xshift=20mm,yshift=-30mm] 
      at ( current page.north west) {#1};
    \end{tikzpicture}
  }
  \fi
}
\titlespacing*{\chapter}{0pt}{0pt}{135mm}


\begin{document}
\renewcommand\chapterillustration{image1}
\chapter{First Chapter}

\renewcommand\chapterillustration{image2}
\chapter{Second Chapter}

\end{document}

Problema: Al compilar con pdflatex, el PDF de salida contiene solo "imagen2", para ambos títulos de capítulo.

es decir, la sección de código:

\renewcommand\chapterillustration{image1}
\chapter{First Chapter}

\renewcommand\chapterillustration{image2}
\chapter{Second Chapter}

está produciendo "imagen2" para ambos capítulos.

Por favor ayudame con este problema.

Respuesta1

Esto se debe al comportamiento asincrónico de TeX: las imágenes se colocan cuando se crean las páginas, lo que ocurre mucho después de la composición tipográfica. Si inserta un \newpagedelante de \renewcommand\chapterillustration{image2}, el problema desaparece.

Respuesta2

Quizás sea una solución más fea, pero te deshaces de \newpage:

Cambie las siguientes líneas en su preámbulo.

%% Command to hold chapter illustration image
\newcommand{\chapterillustration}[1]{%
\expandafter\newcommand\csname chillu\roman{chapter}\endcsname{#1}}

%% Define how the chapter title is printed
\titleformat{\chapter}{}{}{0pt}{
%% Background image at top of page
\ThisULCornerWallPaper{1}{\csname chillu\roman{chapter}\endcsname}

y úselo así en su documento:

\chapter{First Chapter}
\chapterillustration{image1}

\chapter{Second Chapter}
\chapterillustration{image2}

información relacionada