chiark / gitweb /
Initial commit, version 1.0.0
authorMatthew Vernon <matthew@debian.org>
Sun, 20 Feb 2022 12:27:51 +0000 (12:27 +0000)
committerMatthew Vernon <matthew@debian.org>
Sun, 20 Feb 2022 12:27:51 +0000 (12:27 +0000)
This is upstream v1.0.0, from the zip file

COPYING [new file with mode: 0644]
README [new file with mode: 0644]
flashcards.dtx [new file with mode: 0644]
flashcards.dvi [new file with mode: 0644]
flashcards.ins [new file with mode: 0644]
flashcards.pdf [new file with mode: 0644]

diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..e77696a
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,339 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                          675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    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; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..1fb2719
--- /dev/null
+++ b/README
@@ -0,0 +1,70 @@
+                             FlashCards
+
+             A LaTeX Class for Typesetting Flash Cards.
+
+                               v1.0.0
+                           16 March 2000
+
+                Alexander M. Budge <ambudge@mit.edu>
+
+----------------------------------------------------------------------
+                            DESCRIPTION
+
+The FlashCards  class provides for  the typesetting of flash  cards in
+LaTeX2e.  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
+3x5'' (index  cards) and 2x3.5'' (business cards)  which are available
+in perforated sheets suitable for printing or copying onto.
+
+
+----------------------------------------------------------------------
+                      CONTENTS OF DISTRIBUTION
+
+The package files:
+  README                       This file
+  COPYING                      The GNU Public License
+  flashcards.dtx               Documentation and source code
+  flahcards.ins                        Installation driver
+
+These files generate:
+  flashcards.cls               FlashCards class source code
+  avery5371.cfg                        Avery business cards configuration
+  avery5388.cfg                        Avery index cards configuration
+  samplecards.tex              Sample document
+
+
+----------------------------------------------------------------------
+                            INSTALLATION
+
+To generate the documentation, run LaTeX on the file "flashcards.dtx".
+
+To generate the class file, sample document and configuration files,
+run LaTeX on the file "flashcards.ins".  Place the class file (ending
+with '.cls') and the configuration files (ending with '.cfg') in your
+LaTeX path.
+
+
+----------------------------------------------------------------------
+                       DISTRIBUTION CONDITIONS
+
+     FlashCards LaTeX2e Class for Typesetting Double Sided Cards
+       Copyright (C) 2000  Alexander M. Budge <ambudge@mit.edu>
+
+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.
+
+
+
diff --git a/flashcards.dtx b/flashcards.dtx
new file mode 100644 (file)
index 0000000..9acda8b
--- /dev/null
@@ -0,0 +1,776 @@
+% \iffalse
+%
+%FlashCards LaTeX2e Class for Typesetting Double Sided Cards
+%Copyright (C) 2000  Alexander M. Budge <ambudge@mit.edu>
+%
+%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.0}
+\def\filedate{16 March 2000}
+\def\docdate{16 March 2000}
+%</driver>
+%
+%% \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         \~}
+%%
+%
+%<flashcards|sample|avery5371|avery5388>\NeedsTeXFormat{LaTeX2e}[1996/12/01]
+%<flashcards>\ProvidesClass{flashcards}[2000/03/14 0.1.1 (ambudge@mit.edu)]
+%<sample>\ProvidesFile{samplecards.tex}
+%<avery5371>\ProvidesFile{avery5371.cfg}
+%<avery5388>\ProvidesFile{avery5388.cfg}
+%<flashcards>\RequirePackage{ifthen}
+%<flashcards>\RequirePackage{geometry}
+%<flashcards>\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{<ambudge@mit.edu>}}
+\date{\docdate}
+\maketitle
+\DocInput{\filename}
+\end{document}
+%</driver>
+%
+% \fi
+%
+% \MakeShortVerb{\|}
+%
+% \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}
+%</sample>
+%    \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}
+%    \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,
+          twosideshift=\oddevenshift,
+          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@emtpy}{}
+\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}%
+    }%
+  }{}%
+}
+%</flashcards>
+%    \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}
+%</avery5371>
+%    \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}
+%</avery5388>
+%    \end{macrocode}
+%
+
+\endinput
+
+% \Finale
diff --git a/flashcards.dvi b/flashcards.dvi
new file mode 100644 (file)
index 0000000..b39951d
Binary files /dev/null and b/flashcards.dvi differ
diff --git a/flashcards.ins b/flashcards.ins
new file mode 100644 (file)
index 0000000..506b28a
--- /dev/null
@@ -0,0 +1,34 @@
+\def\filedate{16 March 2000}
+\def\fileversion{1.0.0}
+\def\batchfile{flashcards.ins}
+\input docstrip.tex
+
+\keepsilent
+
+\preamble
+
+FlashCards LaTeX2e Class for Typesetting Double Sided Cards
+Copyright (C) 2000  Alexander M. Budge <ambudge@mit.edu>
+
+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.
+
+\endpreamble
+
+\generateFile{samplecards.tex}{f}{\from{flashcards.dtx}{sample}}
+\generateFile{flashcards.cls}{f}{\from{flashcards.dtx}{flashcards}}
+\generateFile{avery5371.cfg}{f}{\from{flashcards.dtx}{avery5371}}
+\generateFile{avery5388.cfg}{f}{\from{flashcards.dtx}{avery5388}}
+
+\endinput
diff --git a/flashcards.pdf b/flashcards.pdf
new file mode 100644 (file)
index 0000000..66241dc
Binary files /dev/null and b/flashcards.pdf differ