summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/dozenal
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-12-09 01:35:17 +0000
committerKarl Berry <karl@freefriends.org>2008-12-09 01:35:17 +0000
commiteb75fe3927723cb3a78ff362893cf7c9788e7ba3 (patch)
treef3566f923a4fad67dce8dd60f42a16933d2cbd70 /Master/texmf-dist/tex/latex/dozenal
parent3daef8ea2757040a8f3c7237133dddf38bac23b8 (diff)
new font package dozenal (8dec08)
git-svn-id: svn://tug.org/texlive/trunk@11560 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/dozenal')
-rw-r--r--Master/texmf-dist/tex/latex/dozenal/dozenal.sty227
1 files changed, 227 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/dozenal/dozenal.sty b/Master/texmf-dist/tex/latex/dozenal/dozenal.sty
new file mode 100644
index 00000000000..a7b112fc91a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/dozenal/dozenal.sty
@@ -0,0 +1,227 @@
+% \iffalse
+% +AMDG This document was begun on 14 November 2008, the
+% feast of St. Josaphat, and it is humbly dedicated to him
+% and to the Immaculate Heart of Mary for their prayers, and
+% to the Sacred Heart of Jesus for His mercy.
+%
+% This document is copyright 2008 by Donald P. Goodman, and is
+% released publicly under the LaTeX Project Public License. The
+% distribution and modification of this work is constrained by the
+% conditions of that license. See
+% http://www.latex-project.org/lppl.txt
+% for the text of the license. This document is released
+% under version 1.3 of that license, and this work may be distributed
+% or modified under the terms of that license or, at your option, any
+% later version.
+%
+% This work has the LPPL maintenance status 'maintained'.
+%
+% The Current Maintainer of this work is Donald P. Goodman
+% (dgoodmaniii@gmail.com).
+%
+% This work consists of the files dozenal.dtx, dozenal.sty,
+% dozchars6.mf, dozchars7.mf, dozchars8.mf, dozchars9.mf,
+% dozchars10.mf, dozchars12.mf, dozchars17.mf, dozchsl8.mf,
+% dozchsl9.mf, dozchsl10.mf, dozchsl12.mf, dozchb10.mf,
+% dozchbx5.mf, dozchbx6.mf, dozchbx7.mf, dozchbx8.mf, dozchbx9.mf,
+% dozchbx10.mf, dozchbx12.mf, dozchit7.mf, dozchit8.mf,
+% dozchit9.mf, dozchit10.mf, dozchit12.mf, dozchbxi10.mf,
+% dozchbxsl10.mf, dozenal.mf, dozenalb.mf, dozenali.mf,
+% testdozchars.tex, dozenal.sty, and dozenal.pdf, along with
+% the README.
+% \fi
+%
+% \maketitle
+% \begin{abstract}
+% The |dozenal| package provides some simple mechanisms for
+% working with the dozenal (duodecimal or ``base 12'')
+% numerical system. It redefines all basic \LaTeX\
+% counters, provides a command for converting arbitrary
+% decimal numbers into dozenal, and provides new, real
+% Metafont characters for ten and eleven, though the
+% commands for producing them can be redefined to produce
+% any figure. This package uses the |\basexii| algorithm
+% by David Kastrup.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \section{Introduction}
+% \label{sect:intro}
+%
+% While most would probably call it at best overoptimistic and
+% at worst foolish, some people (the author included) do still
+% find themselves attracted to the dozenal (base-twelve)
+% system. These people, however, have been pretty hard
+% up\footnote{This is an Americanism for ``out of luck'' or
+% ``in difficult circumstances,'' for those who do not
+% know.} in the \LaTeX\ world. There is no package file
+% available which produces dozenal counters, like page and
+% chapter numbers, nor were there \emph{any} (I made a
+% pretty diligent search) dozenal characters for ten and
+% eleven, leaving dozenalists forced to use such makeshift
+% ugliness as the ``X/E'' or ``T/E'' or ``*/\#'' or whatever
+% other standard they decided to use. While this sort of
+% thing may be acceptable in ASCII, it's absolutely
+% unacceptable in a beautiful, typeset document.
+%
+% Enter the |dozenal| package. This package automates all
+% the messiness of being a dozenalist and using \LaTeX. It
+% redefines all the counters (though you'll have to redefine
+% them yourself if you're using your own), provides an
+% algorithm (generously donated by the intrepid David
+% Kastrup) for converting arbitrary positive whole numbers
+% into dozenal (this is e\TeX, but all modern distributions
+% will compile that), and finally, it includes original
+% dozenal characters, specifically designed to blend in well
+% with Knuth's Computer Modern fonts, though they should do
+% fine with the more common body fonts, as well.
+%
+% This document was typeset in accordance with the \LaTeX\
+% \textsc{docstrip} utility.
+%
+% \section{Usage}
+% \label{sect:usage}
+%
+% The |dozenal| package provides four new commands (though
+% I can only take credit for two of them). The first, and
+% by far the most important given the purpose and content of
+% this package, is |\basexii|\DescribeMacro{\basexii}. This
+% is a very simple command which takes the following
+% structure:
+% \begin{quote}
+% \cs{basexii}\marg{number}\marg{ten symbol}\marg{eleven symbol}
+% \end{quote}
+% What the above means is that the command is |\basexii| and
+% it takes three mandatory arguments: first, the symbol
+% that should be used for ten; second, the symbol that
+% should be used for eleven; and third, the number that
+% should be converted into dozenal using those two symbols.
+% This number should be positive and whole; that is, it
+% should be zero or higher, and it should not contain a
+% fractional part. \TeX\ is a typesetting program, after
+% all; if you want a robust decimal to dozenal converter,
+% there are many options that any dozenalists caring enough
+% to use this package will already know about.
+%
+% This |\basexii| algorithm was produced by David Kastrup,
+% well known and admired in the \TeX\ world for his many
+% useful packages and other contributions. He posted this
+% algorithm on comp.text.tex; it is included here with his
+% kind and generous permission.
+%
+% That one would want to use the same ten and eleven symbols
+% throughout a document seems a reasonable assumption;
+% therefore, I have provided a simplified version of the
+% |\basexii| command, |\dozens|\DescribeMacro{\dozens}.
+% |\dozens| takes only a single argument, the number to be
+% converted; the ten and eleven symbols used are those
+% produced by the commands |\x| and |\e|, to which we'll get
+% in a moment.
+%
+% |\x|\DescribeMacro{\x} and |\e|\DescribeMacro{\e} are the
+% commands used to quickly and easily access the symbols for
+% ten and eleven without having to use active characters
+% (the \TeX\ gurus will know what that means; if you don't
+% know, that's okay; you don't need to to use this package
+% effectively). In any case, |\x| and |\e| default to using
+% the special dozenal characters that are part of this
+% package; they could be easily redefined if for some reason
+% you don't like the Pitman characters (which this package,
+% and the Dozenal Society of Great Britain, prefer), in the
+% following manner:
+% \begin{quote}
+% |\renewcommand\x{X}|
+% \end{quote}
+% Or whichever characters you like to use. If you prefer
+% the Dozenal Society of America's proposed characters (a
+% stylized X and E), then this package will disappoint you.
+% May I suggest |$\chi$| ($\chi$) and |$\xi$| ($\xi$) as a
+% stopgap while you locate or produce real characters of
+% your own? Sorry; I'm an American myself, but I much
+% prefer the Pitman characters for a variety of reasons
+% (feel free to email me if you care), and creating fonts in
+% \MF, even small and inconsequential ones like this, is too
+% much work for characters that I don't even like.
+%
+% The |dozenal| package also redefines all the standard
+% \LaTeX\ counters, such as |section| and |enumii|. If
+% you've defined your own counters, you'll need to define
+% them yourself; however, this is an easy matter:
+% \begin{quote}
+% |\renewcommand\thecounter{\basexii{\arabic{counter}}{\x}{\e}}|
+% \end{quote}
+% For example. Of course, you can fill in the |\x| and |\e|
+% with whatever you want (though it would make more sense to
+% simply redefine |\x| and |\e|, so that all the counters
+% would use the same characters), or you could use the
+% |\dozens| command instead. Whatever your pleasure might
+% be.
+%
+% \section{Implementation}
+% \label{sect:code}
+%
+% First, we name the package that we provide. This is
+% not exactly the most difficult part of the code.
+% \begin{macrocode}
+\ProvidesPackage{dozenal}
+% \end{macrocode}
+% We then define the font that we're using for our
+% \MF-produced Pitman characters. Incidentally, we also
+% define the command |\doz|, though I can't foresee any
+% decent use for it except in packages and preambles; it is
+% then used to define |\x| and |\e|, which provide the ten
+% and eleven symbols for all the counter redefinitions.
+% \begin{macrocode}
+\DeclareFontFamily{OT1}{dozch}{}
+\DeclareFontShape{OT1}{dozch}{m}{n}{<-7> dozchars6 <7> dozchars7 <8> dozchars8 <9> dozchars9 <10-11> dozchars10 <12-16> dozchars12 <17-> dozchars17 }{}
+\DeclareFontShape{OT1}{dozch}{b}{n}{<-> dozchb10 }{}
+\DeclareFontShape{OT1}{dozch}{bx}{n}{<-6> dozchbx6 <7> dozchbx7 <8> dozchbx8 <9> dozchbx9 <10-11> dozchbx10 <12-> dozchbx12 }{}
+\DeclareFontShape{OT1}{dozch}{m}{sl}{<-8> dozchsl8 <9> dozchsl9 <10-11> dozchsl10 <12-> dozchsl12 }{}
+\DeclareFontShape{OT1}{dozch}{bx}{sl}{<-> dozchbxsl10 }{}
+\DeclareFontShape{OT1}{dozch}{m}{it}{<-7> dozchit7 <8> dozchit8 <9> dozchit9 <10-11> dozchit10 <12-> dozchit12 }{}
+\DeclareFontShape{OT1}{dozch}{bx}{it}{<-> dozchbxi10 }{}
+\newcommand\doz[1]{{\fontfamily{dozch}\selectfont #1}}
+\newcommand\x{\protect\doz{X}}%
+\newcommand\e{\protect\doz{E}}%
+% \end{macrocode}
+% Then we define our command which will produce the dozenal
+% numbers from decimal sources. This algorithm was taken
+% directly from the publicly available archives of
+% comp.text.tex, where it was posted by the well-known and
+% redoubtable David Kastrup. We also define the |\dozens|
+% command, a simplified |\basexii| (which, in fact, depends
+% utterly upon |\basexii|), just to make it easy for
+% everyone.
+% \begin{macrocode}
+\def\basexii#1#2#3{\ifcase\numexpr(#1)\relax
+0\or1\or2\or3\or4\or5\or6\or7\or8\or9\or#2\or#3\else
+\expandafter\basexii\expandafter{\number\numexpr((#1)-6)/12}{#2}{#3}\expandafter\basexii\expandafter{\number\numexpr(#1)-((#1)-6)/12*12}{#2}{#3}\fi}
+\newcommand\dozens[1]{\basexii{#1}{\x}{\e}}
+% \end{macrocode}
+% Now, of course, we simply redefine all the counters. This
+% covers only those counters included in the basic \LaTeX\
+% document classes, however, so if you've written your own,
+% you'll need to redefine them yourself.
+% \begin{macrocode}
+\@ifundefined{c@page}{}{\renewcommand\thepage{\basexii{\arabic{page}}{\x}{\e}}}
+\@ifundefined{c@chapter}{}{\renewcommand\thechapter{\basexii{\arabic{chapter}}{\x}{\e}}}
+\@ifundefined{c@footnote}{}{\renewcommand\thefootnote{\basexii{\arabic{footnote}}{\x}{\e}}}
+\@ifundefined{c@section}{}{\renewcommand\thesection{\basexii{\arabic{section}}{\x}{\e}}}
+\@ifundefined{c@subsection}{}{\renewcommand\thesubsection{\basexii{\arabic{subsection}}{\x}{\e}}}
+\@ifundefined{c@subsubsection}{}{\renewcommand\thesubsubsection{\basexii{\arabic{subsubsection}}{\x}{\e}}}
+\@ifundefined{c@part}{}{\renewcommand\thepart{\basexii{\arabic{part}}{\x}{\e}}}
+\@ifundefined{c@subparagraph}{}{\renewcommand\thesubparagraph{\basexii{\arabic{subparagraph}}{\x}{\e}}}
+\@ifundefined{c@paragraph}{}{\renewcommand\theparagraph{\basexii{\arabic{paragraph}}{\x}{\e}}}
+\@ifundefined{c@equation}{}{\renewcommand\theequation{\basexii{\arabic{equation}}{\x}{\e}}}
+\@ifundefined{c@figure}{}{\renewcommand\thefigure{\basexii{\arabic{figure}}{\x}{\e}}}
+\@ifundefined{c@table}{}{\renewcommand\thetable{\basexii{\arabic{table}}{\x}{\e}}}
+\@ifundefined{c@table}{}{\renewcommand\thempfootnote{\basexii{\arabic{mpfootnote}}{\x}{\e}}}
+\@ifundefined{c@enumi}{}{\renewcommand\theenumi{\basexii{\arabic{enumi}}{\x}{\e}}}
+\@ifundefined{c@enumii}{}{\renewcommand\theenumii{\basexii{\arabic{enumii}}{\x}{\e}}}
+\@ifundefined{c@enumiii}{}{\renewcommand\theenumiii{\basexii{\arabic{enumiii}}{\x}{\e}}}
+\@ifundefined{c@enumiv}{}{\renewcommand\theenumiv{\basexii{\arabic{enumiv}}{\x}{\e}}}
+% \end{macrocode}
+% And that's the end. Thanks for reading,
+% folks; please email me with any suggestions or improvements.
+% \printindex