File: //usr/share/texlive/texmf-dist/tex/latex/ltxmisc/flashcard.cls
%an experimental documentclass for flashcards.
%Use only with the understanding it may not work at all.
%More documentation after \endinput
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{flashcard}
[2000/25/01 document class for flashcards]
\newcommand\@ptsize{}
\DeclareOption{a4paper}
{\setlength\paperheight {297mm}%
\setlength\paperwidth {210mm}}
\DeclareOption{letterpaper}
{\setlength\paperheight {11in}%
\setlength\paperwidth {8.5in}}
\DeclareOption{landscape}
{\setlength\@tempdima {\paperheight}%
\setlength\paperheight {\paperwidth}%
\setlength\paperwidth {\@tempdima}}
\DeclareOption{centering}{\def\flashcardformat{\centering}}
\DeclareOption{raggedright}{\def\flashcardformat{\raggedright}}
\DeclareOption{raggedleft}{\def\flashcardformat{\raggedleft}}
\DeclareOption{justify}{\def\flashcardformat{\relax}}
\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
\DeclareOption{draft}{\setlength\overfullrule{5pt}}
\DeclareOption{final}{\setlength\overfullrule{0pt}}
\ExecuteOptions{10pt,oneside,justify,final}
\ProcessOptions\relax
\ifdim\paperwidth=0pt
\ClassError{Flashcard}{No papersize specified}
{Please specify one of `a4paper' or `letterpaper' \MessageBreak
as a option to the documentclass}
\fi
\RequirePackage{calc}
\input{size1\@ptsize.clo}
\setlength\lineskip{1\p@}
\setlength\normallineskip{1\p@}
\renewcommand\baselinestretch{}
\setlength\parskip{0pt}
\setlength\parindent{0pt}
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
\def\today{\ifcase\month\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or December\fi
\space\number\day, \number\year}
\setlength\columnsep{10\p@}
\setlength\columnseprule{0\p@}
\interlinepenalty=10000
\pagestyle{empty}
\newsavebox\flashcardi
\newsavebox\flashcardii
\newsavebox\flashcardiii
\newsavebox\flashcardiv
\newsavebox\flashcardv
\newsavebox\flashcardvi
\newsavebox\flashcardvii
\newsavebox\flashcardviii
\newcounter{flashcard}
\setcounter{flashcard}{1}
\newlength\flashcardwidth
\newlength{\flashcardheight}
\newlength{\halfflashcardwidth}
\setlength{\flashcardwidth}{0.5\textwidth-0.5\columnsep-2\fboxrule}
\setlength{\flashcardheight}{0.25\textheight-2\fboxrule-0.5\columnsep}
\setlength{\halfflashcardwidth}{0.5\flashcardwidth - 4pt}
\newcommand{\FC@pvbox}[1]{\fboxsep=2pt\fboxrule=0pt\fbox{\vbox{#1}}}
\newcommand\FC@nopadfbox{\fboxsep=0pt\fbox}
\newcommand{\flashcardtopic}[1]{\gdef\theflashcardtopic{#1}}
\flashcardtopic{}
\providecommand{\flashcardfrontword}{Question}
\providecommand{\flashcardbackword}{Answer}
\newcommand\flashcard{\@ifnextchar[{\@flashcardx}{\@flashcardx[]}}
\long\def\@flashcardx[#1]{\@ifnextchar[%
{\@flashcardy[#1]}
{\@flashcardy[#1][\theflashcardtopic]}}
\long\def\@flashcardy[#1][#2]#3#4{%
\noindent\FC@nopadfbox{%
\vbox to \flashcardheight{\@parboxrestore
\setlength{\hsize}{\flashcardwidth-4pt}%
\hbox to \flashcardwidth{\strut\FC@pvbox{%
\hsize=\halfflashcardwidth
\leavevmode\raggedright #1}%
\hss\vrule\hss
\FC@pvbox{
\hsize=\halfflashcardwidth
\leavevmode\raggedleft #2}}%
\hrule
\vss
\FC@pvbox{\advance\hsize by -4pt\flashcardformat #3}%
\vss
\hrule
\hbox to \flashcardwidth{\strut\hfill\FC@pvbox{\flashcardfrontword}}}}%
\ifodd\c@flashcard
\hskip\columnsep
\else
\hfill
\par
\fi
\expandafter\setbox\csname flashcard\romannumeral\c@flashcard\endcsname
\hbox{%
\FC@nopadfbox{%
\vbox to \flashcardheight{\@parboxrestore
\setlength{\hsize}{\flashcardwidth-4pt}%
\hbox to \flashcardwidth{\strut\FC@pvbox{%
\hsize=\halfflashcardwidth
\leavevmode\raggedright #1}%
\hss\vrule\hss
\FC@pvbox{%
\hsize=\halfflashcardwidth
\leavevmode\raggedleft #2}}%
\hrule
\vss
\FC@pvbox{\advance\hsize by -4pt\flashcardformat #4}%
\vss
\hrule
\hbox to \flashcardwidth{\strut\hfill\FC@pvbox{\flashcardbackword}}}}}%
\ifnum\value{flashcard}=8\relax
\vfill
\pagebreak
\noindent\hfill\unhbox\flashcardii\hskip\columnsep\unhbox\flashcardi\par
\noindent\hfill\unhbox\flashcardiv\hskip\columnsep\unhbox\flashcardiii\par
\noindent\hfill\unhbox\flashcardvi\hskip\columnsep\unhbox\flashcardv\par
\noindent\hfill\unhbox\flashcardviii\hskip\columnsep\unhbox\flashcardvii\par\par\vfill\pagebreak
\setcounter{flashcard}{1}%
\else
\stepcounter{flashcard}%
\fi\ignorespaces}
\AtEndDocument{\flushflashcards}
\newcommand\flushflashcards{%
\loop\ifnum\value{flashcard}>1\@flashcardy[][]{}{}\repeat}
%\newcount\@@endlinechar
%\@@endlinechar=\endlinechar
\endlinechar=32 %pars must be explicit.
\endinput
The use of this class is as follows:
\documentclass[a4paper]{flashcard}
\renewcommand{\flashcardformat}{\centering\LARGE}
\renewcommand{\flashcardbackword}{Solution}
\flashcardtopic{The Holy Grail}
\begin{document}
\flashcard{Who rescues Sir Galahad from the Castle Anthrax?}{Sir
Lancelot}
\flashcard[Ni!]{What is the one word the Knights of Ni can't hear?}{It}
\flashcard[][Credits]{What once bit the narrator's sister?}{A Moose}
\flashcard{How does King Arthur defeat the killer rabbit?}{Uses the Holy
Hand Grenade of Antioch}
\flashcard{What majority is required by the peasants council for
external matters?}{2/3}
\flashcard{What initial punishment is to be given to Zut for her setting
off the beacon?}{A spanking}
\flashcard{How much does it cost to `bring out your dead'}{Nine pence}
\flashcard{Who's last words are recorded in the cave?}{Joseph of
Arimathea}
\flashcard{What is the name of the enchanter}{There are some that call
him Tim}
\flashcard{What shape has the earth been proven to be?}{Banana shaped}
\end{document}