% \iffalse % %FlashCards LaTeX2e Class for Typesetting Double Sided Cards %Copyright (C) 2000 Alexander M. Budge % %This program is free software; you can redistribute it and/or modify %it under the terms of the GNU General Public License as published by %the Free Software Foundation; either version 2 of the License, or %(at your option) any later version. % %This program is distributed in the hope that it will be useful, %but WITHOUT ANY WARRANTY; without even the implied warranty of %MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %GNU General Public License for more details. % %You should have received a copy of the GNU General Public License %along with this program (the file COPYING); if not, write to the %Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. % %<*driver> \def\filename{flashcards.dtx} \def\fileversion{1.0.2} \def\filedate{20 February 2022} \def\docdate{16 March 2000} % % %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% % %\NeedsTeXFormat{LaTeX2e}[1996/12/01] %\ProvidesClass{flashcards}[2022/02/20 1.0.2 (matthew@debian.org)] %\ProvidesFile{samplecards.tex} %\ProvidesFile{avery5371.cfg} %\ProvidesFile{avery5388.cfg} %\RequirePackage{ifthen} %\LoadClass{article} % %<*driver> \documentclass{ltxdoc} \newcommand{\flashcards}{\textsc{FlashCards}} \begin{document} \title{\flashcards \thanks{Contains version \fileversion\ last revised \filedate}} \author{Alexander M. Budge \\ \texttt{}} \date{\docdate} \maketitle \DocInput{\filename} \end{document} % % % \fi % % \MakeShortVerb{\|} % % \changes{v1.0.2}{20 February 2022}{Bug-fix Release.} % \changes{v1.0.1}{13 August 2010}{Bug-fix Release.} % \changes{v1.0.0}{16 March 2000}{Full Release.} % \changes{v0.1.1}{14 March 2000}{Second Pre-release.} % \changes{v0.1.0}{12 March 2000}{First Pre-release.} % % \tableofcontents % % \section{Introduction} % The \flashcards\ class provides for the typesetting of flash % cards in \LaTeXe. By flash card, I mean a two sided card which % has a prompt or a question on one side and the response or the % answer on the flip (back) side. Flash cards come in many sizes % depending on the nature of the information they contain. In % particular, I like using both $3 \times 5''$ (index cards) and % $2 \times 3\frac{1}{2}''$ (business cards) which are available % in perforated sheets suitable for printing or copying onto. % % In order to use this package effectively, you will need to % accurately configure |dvips| (or similar) for your printer. % \LaTeX\ provides a helpful |testpage.tex| for this purpose. % % % \section{Using FlashCards} % \flashcards\ utilizes the standard \LaTeXe\ class interface. Your % document should be begin with: % \begin{center} % |\documentclass[|\textit{options}|]{flashcards}| % \end{center} % % \subsection{Options} % \DescribeMacro{avery5371} % All documents should specify the paper type. I have provided % the two that I use, business cards (Avery 5371 as well as Avery % 5376, 5377, 5911, 8371, 8376, 8377, 8471 and 8373) and % \DescribeMacro{avery5388} % index cards (Avery 5388), but variants are easy to generate. Please % refer to Section \ref{sec:paperconfig} for the details of creating % your own configuration file for a particular type of paper. % % \DescribeMacro{fronts} % If desired, you can typeset just the |fronts| of the cards or just % the |backs| of the cards. Useful if your printer does not print % \DescribeMacro{backs} % two sides without your help, although |dvips| offers the same % functionality with odd/even switches (|-A| or |-B|, respectively). % % \DescribeMacro{grid} % Useful for getting everything lined up as well as for examining % the cards as you create them, the |grid| option will draw lines % where the perforation will be. % % \DescribeMacro{frame} % The |frame| option will frame the contents of the card with a thin % line. There will be a uniform margin (see below for how to set it) % between the edge of the card and the frame. % % \DescribeMacro{dvips} % If you are using landscape oriented paper, you may want to use the % |dvips| option to send the right specials to |dvips| so that it % knows about the orientation without have to tell it from the % command line. Warning: this option displaces my margins, if the % same happens to you, then you will want to avoid it or create a % special configuration for this case. There must be some % alternative configuration file somewhere that gets used when this % option is specified for the |geometry| package. % % \subsection{Environment} % \DescribeEnv{flashcard} % The \flashcards\ class provideds the environment |flashcard| % for specifying the contents of each flash card. The |flashcard| % environment has one required argument, which becomes the % contents of the front side of the card (the question or prompt). % The body of the environment then becomes the contents of the % back side of the card. For example, % \begin{verbatim} % \begin{flashcard}{Dense Subset} % A subset $S$ of a normed space $B$ is called \emph{dense} % in $B$ if {\rm cl} $S$ = $B$. % \end{flashcard} % \end{verbatim} % will produce the front-back pair: % \begin{center} % \fbox{\parbox[t][1in][c]{2in}{% % \footnotesize\vspace*{\fill}\par % \centerline{\textbf{Dense Subset}}\par\vspace*{\fill}}} % \fbox{\parbox[t][1in][c]{2in}{% % \footnotesize\vspace*{\fill}\par\begin{center}% % A subset $S$ of a normed space $B$ is called \emph{dense} % in $B$ if {\rm cl} $S$ = $B$.\end{center}\par\vspace*{\fill}}} % \end{center} % This is not the end of the story, however, there are several % styles to choose from and an optional argument to the |flashcard| % environment. These will be descibed next. % % \subsection{Styles} % By default, \flashcards\ uses the |plain| style for both the front % and back of the flash card. The |plain| style centers the contents % horizontally and vertically. The front contents are also set in % in large bold face, but this can be changed while setting the % style as described below. % % \DescribeMacro{\cardfrontstyle} % The style of the front of the card can be conveniently selected % with the |\cardfrontstyle{|\textit{style}|}| command, where % \textit{style} can be one of |empty|, |plain|, or |headings|. % The |plain| style has already been described. The |empty| % style does not center the contents horizontally nor vertically, % allowing for more generic usage. The |headings| style allows you to % set a running footer with % \DescribeMacro{\cardfrontfoot} % the |\cardfrontfoot{|\textit{text}|}| command, as well % as set a header for each card with an optional argument to % the |flashcard| environment. For example, % \begin{verbatim} % \cardfrontstyle{headings} % \cardfrontfoot{Functional Analysis} % \begin{flashcard}[Definition]{Dense Subset} % A subset $S$ of a normed space $B$ is called \emph{dense} % in $B$ if {\rm cl} $S$ = $B$. % \end{flashcard} % \end{verbatim} % will produce the front-back pair: % \begin{center} % \fbox{\parbox[t][1in][c]{2in}{% % \footnotesize\textsc{Definition}\par\vspace*{\fill}\par % \centerline{\textbf{Dense Subset}}\par\vspace*{\fill}\par % \hspace*{\fill}\textsc{Functional Analysis}}} % \fbox{\parbox[t][1in][c]{2in}{% % \footnotesize\vspace*{\fill}\par\begin{center}% % A subset $S$ of a normed space $B$ is called \emph{dense} % in $B$ if {\rm cl} $S$ = $B$.\end{center}\par\vspace*{\fill}}} % \end{center} % % You can also change the default formatting of the contents of the % front of the card by including the new formatting commands as an % optional argument to |\cardfrontstyle|. For example, to set the % overall style to be |plain| (thus centering the contents of the % front of the card), as well as set the contents in a large % slanted face, you could issue the command: % \begin{center} % |\cardfrontstyle[\LARGE\slshape]{plain}| % \end{center} % % \DescribeMacro{\cardbackstyle} % The style of the back of the card can be conveniently selected % with the |\cardbackstyle{|\textit{style}|}| command, where % \textit{style} can either be |empty| or |plain|. The |plain| style % has already been described. The |empty| style does not center the % contents horizontally nor vertically, allowing for more generic % usage. % % The default formatting can also be changed through an optional % argument in the same manner as for the front of the card. % % \subsubsection{Headings Styles} % \DescribeMacro{\cardfrontheadstyle} % The header and footer provided for the front of the card by the % |headings| style can be customized through two style commands. % \DescribeMacro{\cardfrontfootstyle} % The available styles for the header and footer are |left|, % |center| and |right|, which will place the contents of the % header or footer as advertized. By default the header will be % |left| justified and the footer will be |right| justified. % % Here as well, you can provide an optional argument to specify % the formatting of the header and footer, for example to have % the footer centered and set in a small italic face: % \begin{center} % |\cardfrontfootstyle[\small\itshape]{center}| % \end{center} % % \subsection{Lengths} % \flashcards\ has one length (in addition to the those discussed in % paper configuration below) which allows you to set the size of the % uniform margin around the contents of both the front and back of % the card. For example, to set that uniform margin at $1/4''$, you % can do the following: % \begin{center} % |\setlength{\cardmargin}{0.25in}| % \end{center} % % % \section{Sample Document} % % \begin{macrocode} %<*sample> \documentclass[avery5388,grid,frame]{flashcards} \cardfrontstyle[\large\slshape]{headings} \cardbackstyle{empty} \begin{document} \cardfrontfoot{Functional Analysis} \begin{flashcard}[Definition]{Norm on a Linear Space \\ Normed Space} A real-valued function $||x||$ defined on a linear space $X$, where $x \in X$, is said to be a \emph{norm on} $X$ if \smallskip \begin{description} \item [Positivity] $||x|| \geq 0$, \item [Triangle Inequality] $||x+y|| \leq ||x|| + ||y||$, \item [Homogeneity] $||\alpha x|| = |\alpha| \: ||x||$, $\alpha$ an arbitrary scalar, \item [Positive Definiteness] $||x|| = 0$ if and only if $x=0$, \end{description} \smallskip where $x$ and $y$ are arbitrary points in $X$. \medskip A linear/vector space with a norm is called a \emph{normed space}. \end{flashcard} \begin{flashcard}[Definition]{Inner Product} Let $X$ be a complex linear space. An \emph{inner product} on $X$ is a mapping that associates to each pair of vectors $x$, $y$ a scalar, denoted $(x,y)$, that satisfies the following properties: \medskip \begin{description} \item [Additivity] $(x+y,z) = (x,z) + (y,z)$, \item [Homogeneity] $(\alpha \: x, y) = \alpha (x,y)$, \item [Symmetry] $(x,y) = \overline{(y,x)}$, \item [Positive Definiteness] $(x,x) > 0$, when $x\neq0$. \end{description} \end{flashcard} \begin{flashcard}[Definition]{Linear Transformation/Operator} A transformation $L$ of (operator on) a linear space $X$ into a linear space $Y$, where $X$ and $Y$ have the same scalar field, is said to be a \emph{linear transformation (operator)} if \medskip \begin{enumerate} \item $L(\alpha x) = \alpha L(x), \forall x\in X$ and $\forall$ scalars $\alpha$, and \item $L(x_1 + x_2) = L(x_1) + L(x_2)$ for all $x_1,x_2 \in X$. \end{enumerate} \end{flashcard} \end{document} % % \end{macrocode} % % \section{Paper Configuration} % \label{sec:paperconfig} % % A separate configuration file specifies the details of each % paper type. You should be able to create a new configuration % file from the information the paper manufacturer provides % with the product. Again, in order for this to work properly, % you must accurately configure your printer. I recommend % using |testpage.tex| and reading the |dvips| (or similar) % documentation (|info dvips| on a typical \textsc{Linux} % installation). Also, on my setup I have experienced variation % between portrait and landscape oriented papers. % % There are seven parameters which must be set. The names should be % somewhat self explanatory. I recommend making a copy of one of the % existing configuration files and modifying the copy as % necessary. % % For example, a $5 \times 2$ business card stock that I have been % using has a $0.75''$ left and right margins and a $0.50''$ top margin % which offset an array of $2''$ high and $3.5''$ wide business cards % arranged in $5$ vertical rows and $2$ horizontal columns. I use % the following configuration file: % \begin{verbatim} % \newcommand{\cardpaper}{letterpaper} % \newcommand{\cardpapermode}{portrait} % \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} % All four commands must be defined and all five lengths must be % specified. If the array of cards is not centered left-to-right % on the paper, you should set |\oddoffset| to the left margin of % the front and |\evenoffset| to the right margin of the front. % % % \StopEventually{} % % \section{Class Source} % The \LaTeXe\ source code follows. The flash cards are built up % in an array of save boxes which are flushed at the end of each % page and at the end of the document. % % \subsection*{Declare Booleans and Set Defaults} % % \begin{macrocode} %<*flashcards> \newboolean{flashcards@dvips}\setboolean{flashcards@dvips}{false} \newboolean{flashcards@grid}\setboolean{flashcards@grid}{false} \newboolean{flashcards@frame}\setboolean{flashcards@frame}{false} \newboolean{flashcards@fronts}\setboolean{flashcards@fronts}{true} \newboolean{flashcards@backs}\setboolean{flashcards@backs}{true} % \end{macrocode} % % \subsection*{Declare Lengths} % % \begin{macrocode} \newlength{\cardheight} \newlength{\cardwidth} \newlength{\topoffset} \newlength{\oddoffset} \newlength{\evenoffset} \newlength{\oddevenshift} % \newlength{\cardmargin} \newlength{\cardinnerheight} \newlength{\cardinnerwidth} % \end{macrocode} % % \subsection*{Declare and Process Options} % % \begin{macrocode} \DeclareOption{dvips}{ \setboolean{flashcards@dvips}{true}} \DeclareOption{grid}{ \setboolean{flashcards@grid}{true}} \DeclareOption{frame}{ \setboolean{flashcards@frame}{true}} \DeclareOption{fronts}{ \setboolean{flashcards@backs}{false}} \DeclareOption{backs}{ \setboolean{flashcards@fronts}{false}} \DeclareOption*{ \InputIfFileExists{\CurrentOption.cfg}{}{ \typeout{Coudln't find \CurrentOption.cfg, using defualt.} \OptionNotUsed}} \ProcessOptions \pagestyle{empty} %\RequirePackage[\cardpaper]{geometry} % \end{macrocode} % % \subsection*{Setup Paper} % % \begin{macrocode} \setlength{\oddevenshift}{\oddoffset} \addtolength{\oddevenshift}{-\evenoffset} \addtolength{\oddoffset}{-\oddevenshift} \addtolength{\evenoffset}{\oddevenshift} \geometry{\cardpapermode, \cardpaper, top=\topoffset, left=\oddoffset, right=\evenoffset, bottom=0.0in, noheadfoot} \ifthenelse{\boolean{flashcards@dvips}}{\geometry{dvips}}{} % \end{macrocode} % % \subsection*{Create Row/Column Counters} % % \begin{macrocode} \newcounter{flashcards@row} \newcounter{flashcards@col}[flashcards@row] % \end{macrocode} % % \subsection*{Create Frame and Grid Commands} % % \begin{macrocode} \ifthenelse{\boolean{flashcards@grid}} {\newcommand{\flashcards@gridbox}[1]{% \setlength{\fboxsep}{0in}\fbox{#1}} \addtolength{\cardwidth}{-2\fboxrule} \addtolength{\cardheight}{-2\fboxrule}} {\newcommand{\flashcards@gridbox}[1]{#1}} % \ifthenelse{\boolean{flashcards@frame}} {\newcommand{\flashcards@beginframebox}{% \begin{tabular}{|@{\hspace*{\fboxsep}}c@{\hspace*{\fboxsep}}|}% \hline}% \newcommand{\flashcards@endframebox}{\\ \hline \end{tabular}}} {\newcommand{\flashcards@beginframebox}{}% \newcommand{\flashcards@endframebox}{}} % \end{macrocode} % % \subsection*{Create Save Boxes} % % \begin{macrocode} \whiledo{\value{flashcards@row} < \cardrows}{% \stepcounter{flashcards@row}% \whiledo{\value{flashcards@col} < \cardcolumns}{% \stepcounter{flashcards@col}% \expandafter\newsavebox \csname flashcardFrontR\roman{flashcards@row}% C\roman{flashcards@col}\endcsname% \global\expandafter\setbox% \csname flashcardFrontR\roman{flashcards@row}% C\roman{flashcards@col}\endcsname% \hbox{\flashcards@gridbox{% \parbox[t][\cardheight] [c]{\cardwidth}% {\rule{\cardwidth}{0pt}% \rule{0pt}{\cardheight}}}}% \expandafter\newsavebox \csname flashcardBackR\roman{flashcards@row}% C\roman{flashcards@col}\endcsname% \global\expandafter\setbox% \csname flashcardBackR\roman{flashcards@row}% C\roman{flashcards@col}\endcsname% \hbox{\flashcards@gridbox{% \parbox[t][\cardheight] [c]{\cardwidth}% {\rule{\cardwidth}{0pt}% \rule{0pt}{\cardheight}}}}% } } % \end{macrocode} % % \subsection*{Initialize Row/Column Counters} % % \begin{macrocode} \setcounter{flashcards@row}{1} \setcounter{flashcards@col}{1} % \end{macrocode} % % \subsection*{Internal Formatting Commands} % % \begin{macrocode} \newcommand{\flashcards@frontfoot}{} % \newcommand{\flashcards@ps@front@empty}[3]{\@gobble{#1}\@gobble{#2}% \flashcards@format@front#3} \newcommand{\flashcards@ps@front@plain}[3]{\@gobble{#1}\@gobble{#2}% \vspace*{\fill}\par% \begin{center}\flashcards@format@front#3\end{center}% \par\vspace*{\fill}} \newcommand{\flashcards@ps@front@headings}[3]{% {\flashcards@ps@front@head{\flashcards@format@front@head#2}}\par% \vspace*{\fill}\begin{center}\flashcards@format@front#3\end{center}% \vspace*{\fill}% {\flashcards@ps@front@foot{\flashcards@format@front@foot#1}\par% \vspace*{\fboxsep}}% } % \newcommand{\flashcards@ps@back@begin@empty}{\flashcards@format@back} \newcommand{\flashcards@ps@back@end@empty}{} \newcommand{\flashcards@ps@back@begin@plain} {\vspace*{\fill}\center\flashcards@format@back} \newcommand{\flashcards@ps@back@end@plain}{\vspace*{\fill}} % \newcommand{\flashcards@ps@front@head@left}[1]{#1} \newcommand{\flashcards@ps@front@head@right}[1]{\hspace*{\fill}#1} \newcommand{\flashcards@ps@front@head@center}[1]{\centerline{#1}} % \newcommand{\flashcards@ps@front@foot@left}[1]{#1} \newcommand{\flashcards@ps@front@foot@right}[1]{\hspace*{\fill}#1} \newcommand{\flashcards@ps@front@foot@center}[1]{\centerline{#1}} % \newcommand{\flashcards@ps@front} {\flashcards@ps@front@plain} \newcommand{\flashcards@ps@front@head} {\flashcards@ps@front@head@left} \newcommand{\flashcards@ps@front@foot} {\flashcards@ps@front@foot@right} \newcommand{\flashcards@ps@back@begin} {\flashcards@ps@back@begin@plain} \newcommand{\flashcards@ps@back@end} {\flashcards@ps@back@end@plain} % \newlength{\flashcards@savelineskip} \newcommand{\flashcards@lineskip@zero} {\setlength{\flashcards@savelineskip}{\lineskip}% \setlength{\lineskip}{0pt}} \newcommand{\flashcards@lineskip@restore} {\setlength{\lineskip}{\flashcards@savelineskip}} % \newcommand{\flashcards@format@front} {\large\bfseries} \newcommand{\flashcards@format@front@head} {\normalsize\scshape} \newcommand{\flashcards@format@front@foot} {\normalsize\scshape} \newcommand{\flashcards@format@back}{} % \setlength{\cardmargin}{0.035\cardwidth} % \end{macrocode} % % \subsection*{Internal Flushing Commands} % % \begin{macrocode} \newcommand{\flashcards@flush} {\flashcards@flushfronts\flashcards@flushbacks} % \ifthenelse{\boolean{flashcards@fronts}}{% \newcommand{\flashcards@flushfronts}{% \flashcards@lineskip@zero% \noindent\raggedright\par% \setcounter{flashcards@row}{0} \whiledo{\value{flashcards@row} < \cardrows}{% \stepcounter{flashcards@row}% \whiledo{\value{flashcards@col} < \cardcolumns}{% \stepcounter{flashcards@col}% \flashcards@gridbox{\usebox{% \csname flashcardFrontR\roman{flashcards@row}% C\roman{flashcards@col}\endcsname}}% \global\expandafter\setbox% \csname flashcardFrontR\roman{flashcards@row}% C\roman{flashcards@col}\endcsname% \hbox{\flashcards@gridbox{% \parbox[t][\cardheight] [c]{\cardwidth}% {\rule{\cardwidth}{0pt}% \rule{0pt}{\cardheight}}}}% } \noindent\raggedright\par% } \clearpage% \flashcards@lineskip@restore% \setcounter{flashcards@row}{1}% \setcounter{flashcards@col}{1}% } }{% \newcommand{\flashcards@flushfronts}{}% } % \ifthenelse{\boolean{flashcards@backs}}{% \newcommand{\flashcards@flushbacks}{% \flashcards@lineskip@zero% \noindent\raggedright\par% \setcounter{flashcards@row}{0} \whiledo{\value{flashcards@row} < \cardrows}{% \stepcounter{flashcards@row}% \setcounter{flashcards@col}{\cardcolumns} \whiledo{\value{flashcards@col} > 0}{% \flashcards@gridbox{\usebox{% \csname flashcardBackR\roman{flashcards@row}% C\roman{flashcards@col}\endcsname}}% \global\expandafter\setbox \csname flashcardBackR\roman{flashcards@row}% C\roman{flashcards@col}\endcsname% \hbox{\flashcards@gridbox{% \parbox[t][\cardheight] [c]{\cardwidth}% {\rule{\cardwidth}{0pt}% \rule{0pt}{\cardheight}}}}% \addtocounter{flashcards@col}{-1}% } \noindent\raggedright\par% } \clearpage% \flashcards@lineskip@restore% \setcounter{flashcards@row}{1}% \setcounter{flashcards@col}{1}% } }{% \newcommand{\flashcards@flushbacks}{}% } % \AtEndDocument{% \ifthenelse{\value{flashcards@row} = 1}{% \ifthenelse{\value{flashcards@col} = 1}{}{% \flashcards@flush}}{\flashcards@flush}% } % \end{macrocode} % % \subsection*{User Commands and Environments} % % \begin{macrocode} % \newcommand{\cardfrontstyle}[2][] {\renewcommand{\flashcards@ps@front} {\csname flashcards@ps@front@#2\endcsname} \ifthenelse{\equal{#1}{}}{}{% \renewcommand{\flashcards@format@front}{#1}}} % \newcommand{\cardbackstyle}[2][] {\renewcommand{\flashcards@ps@back@begin} {\csname flashcards@ps@back@begin@#2\endcsname} \renewcommand{\flashcards@ps@back@end} {\csname flashcards@ps@back@end@#2\endcsname} \ifthenelse{\equal{#1}{}}{}{% \renewcommand{\flashcards@format@back}{#1}}} % \newcommand{\cardfrontheadstyle}[2][] {\renewcommand{\flashcards@ps@front@head} {\csname flashcards@ps@front@head@#2\endcsname} \ifthenelse{\equal{#1}{}}{}{% \renewcommand{\flashcards@format@front@head}{#1}}} % \newcommand{\cardfrontfootstyle}[2][] {\renewcommand{\flashcards@ps@front@foot} {\csname flashcards@ps@front@foot@#2\endcsname} \ifthenelse{\equal{#1}{}}{}{% \renewcommand{\flashcards@format@front@foot}{#1}}} % \newcommand{\cardfrontfoot}[1] {\renewcommand{\flashcards@frontfoot}{#1}} % \newenvironment{flashcard}[2][]{% \setlength{\cardinnerwidth}{\cardwidth}% \addtolength{\cardinnerwidth}{-2\cardmargin}% \setlength{\cardinnerheight}{\cardheight}% \addtolength{\cardinnerheight}{-2\cardmargin}% \ifthenelse{\boolean{flashcards@fronts}}{% \global\expandafter\setbox% \csname flashcardFrontR\roman{flashcards@row}% C\roman{flashcards@col}\endcsname% \hbox{\begingroup\aftergroup}% \begin{minipage}[t][\cardheight] [c]{\cardwidth}% \begin{center}% \flashcards@beginframebox% \begin{minipage}[t][\cardinnerheight] [t]{\cardinnerwidth}% \flashcards@ps@front{\flashcards@frontfoot}{#1}{#2}% \end{minipage}% \flashcards@endframebox% \end{center}% \end{minipage}% \endgroup% }{\@gobble{#1}}% \global\expandafter\setbox% \csname flashcardBackR\roman{flashcards@row}% C\roman{flashcards@col}\endcsname% \hbox{\begingroup\aftergroup}% \begin{minipage}[t][\cardheight] [c]{\cardwidth}% \begin{center}% \flashcards@beginframebox% \begin{minipage}[t][\cardinnerheight] [t]{\cardinnerwidth}% \flashcards@ps@back@begin% }{% \flashcards@ps@back@end% \end{minipage}% \flashcards@endframebox% \end{center}% \end{minipage}% \endgroup% \stepcounter{flashcards@col}% \ifthenelse{\value{flashcards@col} > \cardcolumns}{% \stepcounter{flashcards@row}% \ifthenelse{\value{flashcards@row} > \cardrows}{% \flashcards@flush% }{% \setcounter{flashcards@col}{1}% }% }{}% } % % \end{macrocode} % % \section*{Paper Types} % A separate configuration file specifies the details of each % paper type. % % \subsection*{Avery5371 Business Cards} % The $5 \times 2$ business card stock I have been using. It goes % by many other names as well, depending on color and quantity. % % \begin{macrocode} %<*avery5371> \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{macrocode} % % \subsection*{Avery5388 Index Cards} % Perforated index card stock. % % \begin{macrocode} %<*avery5388> \newcommand{\cardpapermode}{portrait} \newcommand{\cardpaper}{letterpaper} \newcommand{\cardrows}{3} \newcommand{\cardcolumns}{1} \setlength{\cardheight}{3.0in} \setlength{\cardwidth}{5.0in} \setlength{\topoffset}{1.0in} \setlength{\oddoffset}{1.75in} \setlength{\evenoffset}{1.75in} % % \end{macrocode} % \endinput % \Finale