Anomalously, today's post is about a DIY physical artifact.
A while back, I made a custom page-a-day calendar as a gift for my girlfriend. Each page tears off and has a picture on it. (Unfortunately, I don't have any photos of the finished product.)
With just a little effort, you can make one of these things and have it look quite professional. You can fill the pages with whatever photos, comics, etc. you want. And, I can virtually guarantee you, your recipient has never had a page-a-day calendar typeset in Computer Modern.
Here are skeletal instructions for making your own. You'll need a printer, ink or toner, most of a ream of paper, some padding compound, a paper cutting device/facility, cardboard, LaTeX, and time.
1. Get source images
Acquire 365 images from Flickr, your photo collection, your favorite CC-licensed webcomic, or whatever strikes your fancy. This post on curl may come in handy. Some notes: (1) Layout is much easier if the images are the same aspect ratio. (2) Consider upsampling the images if needed, e.g. with imagemagick, so you can print at a respectable DPI. Henceforth I'll assume you've named the images imgs/001.jpg, imgs/002.jpg, etc. If this is not the case, simply adjust the code in Steps 2 and 3 accordingly.
2. Use this LaTeX skeleton
Make a new TeX file and fill it with this:
\documentclass[17pt,oneside,final,showtrims]{memoir} \usepackage{marvosym} \setstocksize{11in}{8.5in} \settrims{0in}{0in} \settrimmedsize{4in}{6in}{*} \settypeblocksize{3.5in}{1.75in}{*} \setlrmargins{0.25in}{*}{*} \setulmargins{0.05in}{*}{*} \setheadfoot{0.01in}{0.1in} \setheaderspaces{*}{*}{*} \setmarginnotes{0.25in}{3.5in}{0in} \checkandfixthelayout \pagestyle{empty} \usepackage[final]{graphicx} \pagestyle{empty} \newcommand{\daypage}[6] { \marginpar{\includegraphics[height=3.4in]{imgs/#1.jpg}} \begin{center} \Large{#2} \\ \HUGE{\textbf{#3}} \\ \large{#4} \vspace{0.4in} \small{#5} \vspace{0.2in} \scriptsize{\textit{#6}} \end{center} \newpage } \begin{document} % Cover page \marginpar{\includegraphics[height=3.4in]{imgs/cover.png}} \newpage \include{tex-days} \end{document}
Salient points:
- The \daypage command generates a new page. You supply arguments specifying the parameters for each page: the filename of the image to include, the day and date, a line indicating whatever holiday it might be, etc. Play around with the layout, especially if you're using images of different aspect ratios than I did or if you have a calendar stand of a particular size.
- If you want a cover page, supply a cover.png; otherwise, remove the corresponding lines from the template.
3. Generate the pages
The template above includes tex-days.tex, which might look something like this:
[...] \daypage{182}{Sunday}{03}{Jul 2005}{~}{~} \daypage{183}{Monday}{04}{Jul 2005}{Independence Day}{~} \daypage{184}{Tuesday}{05}{Jul 2005}{~}{~} \daypage{185}{Wednesday}{06}{Jul 2005}{~}{~} \daypage{186}{Thursday}{07}{Jul 2005}{~}{~} [...]
You can generate a skeletal version of this, sans holidays, with a quick Python program. I've provided a sample tex-days.tex file for the year 2010.
The first argument on each line indicates the filename, e.g. 182 indicates that 182.jpg should be included. Make sure these match the filenames you are using. The sample file assumes your images are named 1.jpg, 2.jpg, etc. If this is not the case, either create your own version or rename your files.
If you're interested in embellishing the output, the 5th and 6th arguments on each line provide supplementary text to go on each page (#6 is printed in smaller type than #5). You can fill in, by hand or programmatically, whatever notations you want here, e.g., holidays, birthdays, anniversaries, or a countdown to whatever.
Arguments 2, 3, and 4 give the day of week, date, and month/year respectively that are displayed, in case that wasn't clear.
4. Produce and print
Run the file through pdflatex and print it! Make sure the alignment is consistent across pages.
The showtrims argument in the template file makes LaTeX print trim marks on each page. However, you really only need trim marks on the first page. If you're obsessive-compulsive, you could print the first page with trim marks and the rest without to guarantee the marks won't show on the finished product.
5. Trim it
I took the stack of paper, with pieces of thin cardboard above and below it, to my local Kinko's (now Fedex Kinko's, I guess). I asked them to cut the stack along the trim marks (2 cuts, since 2 of the edges already run up again against the page edges). They did this for a fee of just $1/cut.
6. Bind it
Get some padding compound, e.g. Sparco padding compound. (I bought a quart, so I can probably make gift calendars/notepads for years.) Align the cut pages, leaving one piece of cardboard on the bottom, and put the stack in a vise. (In a jam, "under a pile of hardcover books" will do.) Using a paintbrush, paint the top edge of the stack with padding compound. Wait for it to dry. Paint another coat.
If you have random loose paper, padding compound is also handy for recycling it into notepads.
7. Mount it
This is not really needed, but is a nice touch. Find an old stand for a page-a-day calendar. Glue the cardboard backing in.
I hereby place the LaTeX template and LaTeX snippets in this post into the public domain.