Quack, Quack, Quack. Give My Hat Back!

image of book cover
Author:
Nicola L. C. Talbot
Illustrator:
Magdalene Pritchett
Recommended Age:
Preschool and Key Stage 1 (up to 7 or 8 years old)
Format:
Paperback saddle-stitch
ISBN:
978-1-909440-03-6 (This title is now out of print but there may be some remaining copies in store.)

Description

Little Duck lives on the Amazon River and he loves his big, black hat, but one day the naughty wind steals his hat. Little Duck chases after it, and on the way he meets his friends the arara (macaw) parrot, the sloth, the caiman and the capybara who all join in the chase.

Extract

There once was a little duck who lived by the side of the Amazon river.

He liked to row his little wooden dinghy on the river, but most of all he liked his big, black top hat.

But one day the naughty wind sneaked up and stole the little duck's hat! Away rushed the wind with the big, black hat.

The little duck said:

"Quack, quack, quack. Give my hat back!"

And he rowed his dinghy, chasing after the wind.

Soon the duck met his friend the arara parrot fishing from his catamaran.

Audio Extract

Book Launch

The book launch for "Quack, Quack, Quack. Give My Hat Back!" and "Cuac, Cuac, Cuac. ¡Devuélveme mi sombrero ya!" was on Sunday 17th November 2013 at 10:10am in Poringland.

Book Launch Photos

image of cake
image of cake
image of cake being cut

Background

This story was inspired by Paulo Cereda's duck and arara, and chatting on TeX, LaTeX and Friends.

Book Production

Those who know me may not be surprised to find I used LaTeX to typeset this book. As with The Foolish Hedgehog, the document code used my flowfram package, and I used Jpgfdraw to define the frames. The hedgehog book was relatively straight-forward. It had a flow frame on the left (verso) page for the text, and a dynamic frame on the right (recto) page for the illustrations. The images were numbered sequentially. I defined a counter called image and I set the contents of the dynamic frame to check for the existence of the image file. If it existed, the image was included and the image counter was incremented. If the file didn't exist, we'd come to the end of the images and the dynamic frame was switched off. Here's the code fragment (the hedgehog class loaded the extarticle class, the dynamic frame was labelled image and the flow frame was labelled main.):
\newcounter{image}
\setcounter{image}{1}

\newcommand*{\mainmatter}{%
 \setdynamicframe*{image}{pages=odd}%
 \setflowframe*{main}{pages=even}%
 \setdynamiccontents*{image}{%
   \edef\img@name{images/\three@digits\c@image}%
   \IfFileExists{\img@name.jpg}%
   {%
     \includegraphics[width=\linewidth]{\img@name}%
   }%
   {%
   }%
   \stepcounter{image}%
   \check@nextimage
 }%
}

\newcommand{\check@nextimage}{%
   \edef\img@name{images/\three@digits\c@image}%
   \IfFileExists{\img@name.jpg}%
   {%
   }%
   {%
     \setdynamicframe*{image}{pages=none}%
     \setflowframe*{main}{pages=all}%
   }%
}

\newcommand*{\three@digits}[1]{%
  \ifnum#1<100 0\fi\ifnum#1<10 0\fi\number#1%
}

Unfortunately Lightning Source (my printer and distributor) doesn't do landscape books. The best I could get was a 8.5in square page format. This was okay for the hedgehog book, but the duck book has much wider illustrations. The best layout is to have the illustrations spanning a double-page spread, with the text above. This can be done with a saddle-stitch binding, but it's more complicated to code. Now I have a short flow frame at the top of the page and two dynamic frames, one that's only displayed on even (left/verso) pages and one that's only displayed on odd (right/recto) pages.

Image of page layout

As before, the image files for the illustrations are named sequentially, but here we want only the left half of the image in the left dynamic frame and the right half of the image in the right dynamic frame. The image also needs to be scaled so that it fits across the double-spread. The dynamic frames are now labelled image-left and image-right. First define the image counter, as before:

\newcounter{image}
\setcounter{image}{1}
The flowfram package has a command called \getdynamicbounds that gets the dimensions of the given dynamic frame. I've used this command so that I don't have to keep track of the size of the dynamic frame in case I need to adjust its dimensions. \getdynamicbounds sets \ffareaheight to the height of the frame:
\newlength\imageheight

\getdynamicbounds*{image-left}

\setlength{\imageheight}{\ffareaheight}
There are some other lengths I need to define that I'll use later in calculations:
\newlength\imagehalfwidth
\newlength\imagetotalwidth
And I also need a box:
\newsavebox\imagebox
Since I'm going to use \IfFileExists I'll need to use the image extension (which I could get by without referencing if I was simply using \includegraphics). To make it easier to change my mind about the image format, I define a command that stores the file extension:
\newcommand*{\duckimage@ext}{png}
Now here's the code that sets the contents of the dynamic frames:
 \setdynamiccontents*{image-left}{%
   \edef\img@name{images/\three@digits\c@image}%
   \IfFileExists{\img@name.\duckimage@ext}%
   {%
     \sbox\imagebox{\includegraphics[height=\imageheight]{\img@name}}%
     \settowidth{\imagetotalwidth}{\usebox\imagebox}%
     \setlength{\imagehalfwidth}{0.5\imagetotalwidth}%
     \null\hfill\makebox[\imagehalfwidth][l]{\usebox\imagebox}%
   }%
   {%
   }%
 }%
 \setdynamiccontents*{image-right}{%
   \edef\img@name{images/\three@digits\c@image}%
   \IfFileExists{\img@name.png}%
   {%
     \sbox\imagebox{\includegraphics[height=\imageheight]{\img@name}}%
     \settowidth{\imagetotalwidth}{\usebox\imagebox}%
     \setlength{\imagehalfwidth}{0.5\imagetotalwidth}%
     \makebox[\imagehalfwidth][r]{\usebox\imagebox}%
   }%
   {%
   }%
   \stepcounter{image}%
   \check@nextimage
 }%
This scales the image so that it's the height of the dynamic frames. Then \imagetotalwidth is set to the width of the scaled image, and \imagehalfwidth is set to half this value. The image is then put in a left aligned box of width \imagehalfwidth. This means that the left half of the image is visible in the left frame. The other half of the image gets clipped by the page boundary and doesn't show. The right hand image frame does something similar except that it puts the image in a right-aligned box of half the image width. This means that the right half of the image is showing in the frame, but the left half gets clipped by the page boundary. As long as the book is correctly bound, this will have the effect of the image spanning across the double-page spread.

\check@nextimage needs a slight modification:

\newcommand{\check@nextimage}{%
   \edef\img@name{images/\three@digits\c@image}%
   \IfFileExists{\img@name.\duckimage@ext}%
   {%
   }%
   {%
     \setdynamicframe*{image-left,image-right}{pages=none}%
     \setflowframe*{main}{pages=none}%
     \setflowframe*{frontmatter}{pages=all}%
   }%
}
(The flow frame labelled frontmatter is a larger flow frame that's only used in the front matter and on the final verso page.)