\chapter{Easy Flashcards in \LaTeX{} } \section{Introduction} I was a biology major in college (the first time around, that is) and so I had to memorize \textit{lots} of information. \kdivb{Is it worth it?}{3} A sidebar debate of the usefulness of memorizing anything. \kdive{3} One of the best ways I've found to memorize information is to use flash cards. As I see it, flash cards have three main advantages. First, you have to write this information onto the flash cards, so you have yet another opportunity to review the information. (I tend to learn better by reading and writing than by listening.) Second, because you to fit the information on an index card, you have to edit the information, which is yet another opportunity to process the information. Third, because each bit of information is on a separate card, you can easily sort these cards as you study them, gradually setting aside the cards you know, so that you can focus on the material you still need to learn. Unfortunately, flash cards are a lot of work to make. (You can buy commercial versions, but they are expensive and may not suit your exact purposes.) Because you have to make them by hand, you're essentially a medieval scribe, copying a text very laboriously by hand. It's not a fun process for most people.\footnote{I will admit to being an exception here.} Fortunately, \LaTeX{} has a number of packages that make the production of flash cards a fairly simple process. \section{The FlashCards Package} The \textsf{FlashCards} package (and note that it is written in CamelCase) allows you to easily create flashcards and then print them on standard sheet-fed business-card stock which is equivalent to Avery 5371.\footnote{This is for North American business-card stock, which is 8.5 $\times$ 11 inches.} (Avery products are pretty expensive, but I can usually find a less expensive off-brand version elsewhere.) \textsf{FlashCards} offers you a limited set of options, which is just fine, since it's more about the information on these cards, rather than how they look. Flash cards don't need to be fancy, but you can do a certain amount of customization with this package. The truly nice thing about the \textsf{FlashCards} package is that it automatically sets up the cards for two-sided printing. That is, if the front of your document looks like this: \begin{center} \begin{tikzpicture}[scale=0.6] \draw (0,0) rectangle (11,4); \draw (1,1) rectangle (5,3); \node at (3,2) {{\Huge A}}; \draw (6,1) rectangle (10,3); \node at (8,2) {{\Huge B}}; \end{tikzpicture} \end{center} \noindent{}then the back of your document needs to look like this for the cards to print properly: \begin{center} \begin{tikzpicture}[scale=0.6] \draw (0,0) rectangle (11,4); \draw (1,1) rectangle (5,3); \node at (3,2) {{\Huge B}}; \draw (6,1) rectangle (10,3); \node at (8,2) {{\Huge A}}; \end{tikzpicture} \end{center} This way, the back of card A and front of card A will appear on opposite sides of the same card.\footnote{This is an incredibly difficult concept for some people to understand. (If you don't beleive me, just ask anyone who's ever worked in a copy shop.) Some people just have a lot of trouble re-orienting three-dimensional ojbects in their mind. I have a funny feeling that these are the people who just never got to build anything when they were children, or who never got to play with building toys like Lego or Tinker Toys.} \subsection{Modifying the FlashCards Configuration Files} There's just one catch with the FlashCards package: it only includes support for business cards and $3\times5$ index cards. The documentation says that variants are easy to generate, so there has to be a way to do that, right? As it turns out, there is. The first step is to find those configuration files. The first step is to find those configuration files. We have a couple of options here. The first is to look in the \texttt{.log} file of any project we've used the \texttt{flashcards} package. Looking at my ``Rules of Acquisition'' log file showed me this on line 9: \begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{Location of FlashCards class file}] (/usr/share/texlive/texmf-dist/tex/latex/flashcards/flashca rds.cls \end{Verbatim} and this on lines 41-43: \begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{Location of FlashCards configuration file}] (/usr/share/texlive/texmf-dist/tex/latex/flashcards/avery537 1.cfg File: avery5371.cfg ) \end{Verbatim} If we're on the command line, we could also the \texttt{kpsewhich} command to look for the package name \texttt{.cls} file, like this: \input{include/kpsewhich} which gives us this output: \begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{Output of kpsewhich Command}] ls /usr/share/texlive/texmf-dist/tex/latex/flashcards/flashcar ds.cls \end{Verbatim} Since I don't want to poke around in my default \texttt{/usr} directory (which would require \texttt{sudo} and is not something that can be backed up easily), the solution is to use our own \texttt{texmf} directory, where we can install our own packages and make modifications to them easily.\footnote{See \S 7.1.2 ``Method \#2'' in issue \#3 for more information.} I already had that folder, so I duplicated the file path (\texttt{/tex/latex/flas\\hcards}) there, copied over the \texttt{avery5371.cfg} file, and renamed it to \texttt{avery5389.cfg}, which is the format for a 2-up $4\times6$ index card, and opened it up for editing. The first thing I did was to do a quick search and replace, swapping out ``5389'' for ``5371''. The second thing I did was to change the relevant lines in the config file to fit the $4\times6$ card format. So I changed all of these lines: \begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{Configuration for Avery 5371 Stock}] \newcommand{\cardpapermode}{portrait} \newcommand{\cardpaper}{letterpaper} \newcommand{\cardrows}{5} \newcommand{\cardcolumns}{2} \setlength{\cardheight}{2.0in} \setlength{\cardwidth}{3.5in} \setlength{\topoffset}{0.50in} \setlength{\oddoffset}{0.75in} \setlength{\evenoffset}{0.75in} \end{Verbatim} to have these values: \begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{Configuration for Avery 5389 Stock}] \newcommand{\cardpapermode}{portrait} \newcommand{\cardpaper}{letterpaper} \newcommand{\cardrows}{2} \newcommand{\cardcolumns}{1} \setlength{\cardheight}{4.0in} \setlength{\cardwidth}{6.0in} \setlength{\topoffset}{1.5in} \setlength{\oddoffset}{1.25in} \setlength{\evenoffset}{1.25in} \end{Verbatim} I then saved the file and closed it. The only thing left to do was to inform \TeX{} about this new file by running \input{include/mktexlsr} I then changed the first line of my ``Rules of Acquistion'' flashcards project to \begin{Verbatim}[] \documentclass[avery5389,grid]{flashcards} \end{Verbatim} I re-compiled the project, and indeed, I now had the Ferengi Rules of Acquistion on $4\times6$ index cards! Easy-peasy! \section{The flacards Package} \section{The elzcards Package}