From b1b620f92db9f9ca8df92a3963940ace1b6aaf4f Mon Sep 17 00:00:00 2001 From: Kenneth Odle Date: Fri, 7 Feb 2025 15:14:32 -0500 Subject: [PATCH] Added rules of acquisition example to chapter 2 --- 006/images/roa-card-back.png | Bin 0 -> 12159 bytes 006/images/roa-card-front.png | Bin 0 -> 11873 bytes 006/include/chap02.tex | 86 +++++++++++++++++++++++++++++++++- 3 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 006/images/roa-card-back.png create mode 100644 006/images/roa-card-front.png diff --git a/006/images/roa-card-back.png b/006/images/roa-card-back.png new file mode 100644 index 0000000000000000000000000000000000000000..5efd02b4c7827a35e413c511822089f5cf9a5286 GIT binary patch literal 12159 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 literal 0 HcmV?d00001 diff --git a/006/images/roa-card-front.png b/006/images/roa-card-front.png new file mode 100644 index 0000000000000000000000000000000000000000..4df7db364514baf31af999add430514f6bdf6069 GIT binary patch literal 11873 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 TC%szXcPM2A4SCF+`~Un8Cb=iJ literal 0 HcmV?d00001 diff --git a/006/include/chap02.tex b/006/include/chap02.tex index af2c18f..c04da17 100644 --- a/006/include/chap02.tex +++ b/006/include/chap02.tex @@ -14,7 +14,16 @@ Unfortunately, flash cards are a lot of work to make. (You can buy commercial ve Fortunately, \LaTeX{} has a number of packages that make the production of flash cards a fairly simple process. -\section{The FlashCards Package} +\subsection{Online Examples} + +I had a lot of fun playing around with these packages, and have created a number of example documents for you to download and play around with. I've posted these to both my personal git repository and Codeberg. You can see them here: + +\begin{itemize} +\item \textbf{Personal:} \kref{https://git.kjodle.net/kjodle/flashcard-examples}{https://git.kjodle.net/kjodle/flashcard-examples} +\item \textbf{Codeberg:} \kref{https://codeberg.org/kjodle/flashcard-examples}{https://codeberg.org/kjodle/flashcard-examples} +\end{itemize} + +\section{The \textsf{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.) @@ -46,7 +55,80 @@ The truly nice thing about the \textsf{FlashCards} package is that it automatica 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} +\subsection{Using the \textsf{FlashCards} Package} + +The \textsf{FlashCards} package defines a new document class (called, natch, ``\texttt{flashcards}'') with one required option and a few non-required options. The first option is the type of Avery cardstock you will be printing your cards on. Out of the box, it only supports business cards (Avery 5371) and index cards (Avery 5388) but it is easy enough to configure your own, which we'll see in a bit. + +The non-required options include \texttt{fronts} and \texttt{backs} for typesetting only the fronts or backs of your cards, \texttt{grid} to draw lines where the perforations are (which is handy if you are printing on non-perforated card stock, because you can just cut them apart on the lines), and \texttt{frame} to draw a frame around the content of each card. + +\textsf{FlashCards} defines a new environment (\texttt{flashcard}) with a single required argument, which is the text on the front of the card. Anything contained within the environment (which can include both math and \texttt{tikz} drawings) goes on the back of the card, like so: + +\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{FlashCards example}] +\begin{flashcard}[]{This is the front of the card} +This is the back of the card +\end{flashcard} +\end{Verbatim} + +The argument contained in square brackets (which are empty in our example) allows you to add a header to the card, which will only appear if you used the \verb|\cardfrontstyle{headings}| command. This allows you to describe some cards in your flash card deck according to what they are (definition, formula, etc.). If you then use the \verb|\cardfrontfoot{}| you can define a footer that will appear on \textit{every} card in your document (e.g. Biology 101). + +You do have some options for modifying how the headers are footers are typeset, which is described clearly in the package documentation. You can also look at the sample files I've posted online for other examples. + +\subsection{Having Fun with \textsf{FlashCards}} + +When I first set up my own Git repo, one of the first things I did was add a list of the Ferengi Rules of Acquisition. When I started playing around with flash cards in \LaTeX{} I didn't really have anything I was studying at the time, so I decided to use the Rules as an example. However, there were a couple of issues I wanted to see if the \textsf{FlashCards} package could deal with. + +The first is that I wanted the front side of the card to be in a unique font. That is, I wanted it to be something that didn't scream ``LaTeX'' when people saw it. The second is that the rules are numbered, and I have no desire to add all those numbers by hand, so I wanted to see how easy it was to use a counter with this package. + +The first thing to do was to add a new font. I looked around and liked the ``Roman Rustic'' font,\footnote{Which you can see at \kref{https://tug.org/FontCatalogue/romanrustic/}{https://tug.org/FontCatalogue/romanrustic/}.} so I added these lines to my preamble: + +\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, ] +% Font for front side of cards +% Use \rustfamily to apply font +\usepackage{rustic} +\usepackage[T1]{fontenc} + +\cardfrontstyle[\large\itshape\bfseries\rustfamily]{headings} +\cardbackstyle{plain} % plain option centers text +%\cardfrontfoot{Rules of Acquisition} +\end{Verbatim} + +Lines 3 and 4 add our font\footnote{Notice that I also added comments on lines 1 and 2 regarding what this was and how to use them. I am not going to remember this next week, much less a year from now. Comments are free. Use them often.} and line 5 applies it to the card front. That line also says that we are going to use the \texttt{headings} option, although I decided not to when wetting up the actual cards. + +I experimented with various fonts, and some of them contained a hash character (\#) and some of them did not. So I added a macro that would allow me to easily change that, based on the font. + +\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, ] +% A new command in case we want to separate what we use to indicate 'number' +% May need to change this based on the font +\newcommand{\ksep}{\\ \vspace{5mm} No.} +\end{Verbatim} + +(Is this a hack? No, not really. It's more of a kludge than anything else. Sometimes the thing you need is just a good hard slash through the Gordian knot of your current situation.) + +I then needed to add my counter, which I did with + +\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, ] +\newcounter{rule} +\setcounter{rule}{1} +\end{Verbatim} + +I then started adding my cards, making sure to increment the counter after each card: + +\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=\fbox{Rules of Acquisition FlashCards exampleS}] +\begin{flashcard}[]{Rule of Acquisition \ksep \arabic{rule}} +Once you have their money, you never give it back. +\end{flashcard} +\addtocounter{rule}{1} +\end{Verbatim} + +Compiling that document gave me these beautiful flash cards: + +\begin{center} +\includegraphics[scale=0.25]{roa-card-front} \hspace{10mm} \includegraphics[scale=0.25]{roa-card-back} +\end{center} + +You can see the full file in either the repos I mentioned earlier. + +\subsection{Modifying the \textsf{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.