From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/flashcards/COPYING | 339 +++++++++++ macros/latex/contrib/flashcards/README | 71 +++ macros/latex/contrib/flashcards/flashcards.dtx | 776 +++++++++++++++++++++++++ macros/latex/contrib/flashcards/flashcards.ins | 34 ++ macros/latex/contrib/flashcards/flashcards.pdf | Bin 0 -> 144601 bytes 5 files changed, 1220 insertions(+) create mode 100644 macros/latex/contrib/flashcards/COPYING create mode 100644 macros/latex/contrib/flashcards/README create mode 100644 macros/latex/contrib/flashcards/flashcards.dtx create mode 100644 macros/latex/contrib/flashcards/flashcards.ins create mode 100644 macros/latex/contrib/flashcards/flashcards.pdf (limited to 'macros/latex/contrib/flashcards') diff --git a/macros/latex/contrib/flashcards/COPYING b/macros/latex/contrib/flashcards/COPYING new file mode 100644 index 0000000000..e77696ae8d --- /dev/null +++ b/macros/latex/contrib/flashcards/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. + + 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.) + +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. + + 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. + + 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 + + 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. + + + Copyright (C) 19yy + + 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. + + , 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/macros/latex/contrib/flashcards/README b/macros/latex/contrib/flashcards/README new file mode 100644 index 0000000000..038291524e --- /dev/null +++ b/macros/latex/contrib/flashcards/README @@ -0,0 +1,71 @@ + FlashCards + + A LaTeX Class for Typesetting Flash Cards. + + v1.0.1 + 30 July 2010 + + Alexander M. Budge +(bug-fixes from v1.0.0 to v1.0.1 by Matthew Vernon ) + +---------------------------------------------------------------------- + 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 + +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/macros/latex/contrib/flashcards/flashcards.dtx b/macros/latex/contrib/flashcards/flashcards.dtx new file mode 100644 index 0000000000..307c2694dd --- /dev/null +++ b/macros/latex/contrib/flashcards/flashcards.dtx @@ -0,0 +1,776 @@ +% \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.1} +\def\filedate{13 August 2010} +\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}[2010/08/13 1.0.1 (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.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@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}% + }% + }{}% +} +% +% \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 diff --git a/macros/latex/contrib/flashcards/flashcards.ins b/macros/latex/contrib/flashcards/flashcards.ins new file mode 100644 index 0000000000..d850494d0a --- /dev/null +++ b/macros/latex/contrib/flashcards/flashcards.ins @@ -0,0 +1,34 @@ +\def\filedate{13 August 2010} +\def\fileversion{1.0.1} +\def\batchfile{flashcards.ins} +\input docstrip.tex + +\keepsilent + +\preamble + +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. + +\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/macros/latex/contrib/flashcards/flashcards.pdf b/macros/latex/contrib/flashcards/flashcards.pdf new file mode 100644 index 0000000000..153139ac0b Binary files /dev/null and b/macros/latex/contrib/flashcards/flashcards.pdf differ -- cgit v1.2.3