diff options
author | Karl Berry <karl@freefriends.org> | 2008-12-09 01:35:17 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-12-09 01:35:17 +0000 |
commit | eb75fe3927723cb3a78ff362893cf7c9788e7ba3 (patch) | |
tree | f3566f923a4fad67dce8dd60f42a16933d2cbd70 /Master/texmf-dist/tex/latex/dozenal | |
parent | 3daef8ea2757040a8f3c7237133dddf38bac23b8 (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.sty | 227 |
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 |