summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/fonts/dozenal/dozenal.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/fonts/dozenal/dozenal.dtx')
-rw-r--r--Master/texmf-dist/source/fonts/dozenal/dozenal.dtx594
1 files changed, 578 insertions, 16 deletions
diff --git a/Master/texmf-dist/source/fonts/dozenal/dozenal.dtx b/Master/texmf-dist/source/fonts/dozenal/dozenal.dtx
index 5be174d5ebe..4024348b6bb 100644
--- a/Master/texmf-dist/source/fonts/dozenal/dozenal.dtx
+++ b/Master/texmf-dist/source/fonts/dozenal/dozenal.dtx
@@ -19,28 +19,590 @@
% 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.
+% This work consists of the files listed in dozenalfilelist.txt.
% \fi
-\documentclass{ltxdoc}
-\title{The \texttt{dozenal} Package, v3.3}
-\author{Donald P.\ Goodman III}
-\date{\today}
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{dozenal}[2015/01/01 v5.1 support for dozenal fonts]
+%<*driver>
+\documentclass{ltxdoc}
\usepackage{doc}
-\usepackage{dozenal}
+\usepackage{url}
+\usepackage[typeone]{dozenal}
\usepackage{mflogo}
\usepackage{makeidx}
+\makeindex
\begin{document}
-\DocInput{dozenal.sty}
+\DocInput{dozenal.dtx}
\end{document}
+%</driver>
+% \fi
+% \title{The \texttt{dozenal} Package, v5.1}
+% \author{Donald P.\ Goodman III}
+% \date{\today}
+%
+% \maketitle
+% \begin{abstract}\noindent
+% 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. As of v2.0, it also includes Type 1 versions
+% of the fonts, used automatically whenever T1 encoding is
+% selected for the document. 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 number to
+% be converted into dozenal; second, the symbol that should
+% be used for ten; and third, the symbol that should be used
+% for eleven. 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.
+%
+% The |nocounters|\DescribeMacro{nocounters}\ option to the
+% package prevents the redefinition of these counters. The
+% effect of this is that the commands of the package
+% (|\basexii|, |\dozens|, etc.) are made available, but
+% all the counters will still be in decimal. This permits
+% using dozenal characters in an otherwise decimal document;
+% it also proves useful in dozenal document in which these
+% counters are undefined (e.g., |minimal|).
+%
+% The |typeone|\DescribeMacro{typeone}\ option forces
+% |dozenal| to provide Postscript Type 1 fonts rather than
+% \MF\ bitmaps to \TeX. Both of these are produced from the
+% same font files, though, so the difference is very slight.
+%
+% Finally, as of v5.0, we can convert numbers back to
+% decimal from dozenal, if we wish. We do this with the
+% \DescribeMacro{\basex}|\basex| macro, which takes a single
+% argument, which is the dozenal number you wish to convert
+% to decimal. This is subject to some pretty harsh
+% restrictions, however. First, the only tokens allowed in
+% the number are 0--9, |\x|, and |\e|. Second, these will
+% only work with \emph{unexpanded} |\x| and |\e|. If you
+% don't know what this means, then good for you; \TeX\
+% programmers will sympathize.
+%
+% To illustrate these limitations, let's define a new
+% counter and dozenize it. Here, we define the counter and
+% give it a nice value which will ensure that its dozenal
+% value will have an |\e| in it:
+%
+% \newcounter{testcount}\setcounter{testcount}{47}
+% \begin{quotation}
+% |\newcounter{testcount}\setcounter{testcount}{47}|
+% \end{quotation}
+%
+% In dozenal, of course, ``47'' is ``3\e.'' Now, let's
+% redefine that counter so that its results will be dozenal:
+%
+% \renewcommand\thetestcount{\basexii{\value{testcount}}{\x}{\e}}
+% \begin{quotation}
+% |\renewcommand\thetestcount{\basexii{\value{testcount}}{\x}{\e}}|
+% \end{quotation}
+%
+% Now we get to do lovely things like the following:
+%
+% \begin{quotation}
+% |\thetestcount| = \thetestcount
+% \end{quotation}
+%
+% Now we can try to get that number in decimal with
+% |\basex|. But don't try it; |\basex{\thetestcount}|
+% doesn't work because the |\x| and |\e| are already
+% expanded. Instead, use \LaTeX's built-in functions for
+% chores like this:
+%
+% \begin{quotation}
+% |\arabic{testcount}| = \arabic{testcount}
+% \end{quotation}
+%
+% On the other hand, if you have an actual string you want
+% converted, you can send it directly to |\basex| without
+% worrying about expansion, because through much trial and
+% error and banging head against wall, the expansion issues
+% have already been resolved:
+%
+% \begin{quotation}
+% |\basex{3\e}| = \basex{3\e}
+% \end{quotation}
+%
+% So |\basex| is of limited utility, but it's a nice tool to
+% add to the box.
+%
+% \section{The Fonts}
+% \label{sect:fonts}
+%
+% The fonts provided by the dozenal package are essentially
+% complete fonts which contain only the Pitman dozenal
+% characters; these are \x\ for ten and \e\ for eleven.
+% These characters are designed to blend well with the
+% Computer Modern fonts; they work passable well with
+% Times-type fonts and with kpfonts, and possibly with
+% others.
+%
+% The characters also come in all the appropriate shapes and
+% sizes; a few examples follow.
+%
+% \begin{center}
+% \begin{tabular}{lccc}
+% {} & Roman & \textit{Italic} & \textbf{Boldface} \\
+% \footnotesize Footnotesize & \footnotesize\x\ \e & \footnotesize\itshape
+% \x\ \e & \footnotesize\bfseries \x \e \\
+% \normalsize Normalsize & \normalsize\x\ \e & \normalsize\itshape
+% \x\ \e & \normalsize\bfseries \x \e \\
+% \LARGE LARGE & \LARGE\x\ \e & \LARGE\itshape
+% \x\ \e & \LARGE\bfseries \x \e \\
+% \Huge Huge & \Huge\x\ \e & \Huge\itshape
+% \x\ \e & \Huge\bfseries \x \e \\
+% \end{tabular}
+% \end{center}
+%
+% They will work in paragraph or math mode without
+% distinction.
+%
+% As of v4.0, |dozenal| also includes fonts for tally marks
+% specifically designed for use in the dozenal base. In many
+% European countries tallies are kept in a very similar way;
+% this font demonstrates a way that such tally marks can be
+% made consistent as well as dozenal.
+%
+% \begin{center}
+% \begin{tabular}{cccccc}
+% 1 & 2 & 3 & 4 & 5 & 6 \\
+% \Huge\tally{2}{\usefont{T1}{dozch}{m}{n}\selectfont 1} & \Huge\tally{2} & \Huge\tally{3} & \Huge\tally{4} & \Huge\tally{5} & \Huge\tally{6} \\
+% \end{tabular}
+% \end{center}
+%
+% These are accessed by the \DescribeMacro{\tally}|\tally|
+% command, which takes one argument: the number, 1--6,
+% which you want to put in tallies. Entering ``X'' or ``E''
+% will yield ``\x'' or ``\e'' respectively. Other
+% characters will produce nothing. Any character produced
+% by |\tally| is a \MF\ bitmap, not an outline, even if your
+% document is otherwise producing outlines.
+%
+% The fonts are called |dozch|, if for some reason direct
+% access to them is needed. The Type 1 versions are
+% prefixed |fdz|; e.g., |fdzr8a|.
+%
+% \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}[2012/05/13 v4.0 support for dozenal fonts]
+% \end{macrocode}
+% Now we need to make sure that we have fixltx2e loaded, so
+% that the |\TextorMath| magic will work.
+% \begin{macrocode}
+\RequirePackage{fixltx2e}
+% \end{macrocode}
+% Now we ensure that |ifpdf| is loaded, so that we can test
+% for pdf or dvi modes.
+% \begin{macrocode}
+\RequirePackage{ifpdf}
+% \end{macrocode}
+% Now we declare the option ``nocounters'', which prevents
+% |dozenal| from redefining all the counters. This prevents
+% errors in document classes which don't have these counters,
+% such as |minimal|. Defines the command |\nocounters| if
+% and only if the options is named.
+% \begin{macrocode}
+\DeclareOption{nocounters}{%
+ \def\nocounters{}%
+}%
+\newif\iftypeone\typeonefalse
+\DeclareOption{typeone}{\typeonetrue}
+\ProcessOptions\relax
+% \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.
+% This includes definitions for both T1 and OT1 encodings,
+% so it will work with either.
+% \begin{macrocode}
+\DeclareFontFamily{OT1}{dozch}{}
+\DeclareFontShape{OT1}{dozch}{m}{n}{<-6> 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 }{}
+\ifpdf
+ \pdfmapfile{=fdz.map}
+\fi
+\DeclareFontFamily{T1}{dozch}{}
+\DeclareFontShape{T1}{dozch}{m}{n}{<-> fdzr8r }{}
+\DeclareFontShape{T1}{dozch}{bx}{n}{<-> fdzb8r }{}
+\DeclareFontShape{T1}{dozch}{m}{sl}{<-> fdzs8r }{}
+\DeclareFontShape{T1}{dozch}{bx}{sl}{<-> fdzbo8r }{}
+\DeclareFontShape{T1}{dozch}{m}{it}{<-> fdzso8r }{}
+\DeclareFontShape{T1}{dozch}{bx}{it}{<-> fdzbi8r }{}
+%\newcommand\doz[1]{{\fontfamily{dozch}\selectfont #1}}
+\iftypeone%
+ \def\doz#1{{\fontfamily{dozch}\fontencoding{T1}\selectfont #1}}%
+\else%
+ \def\doz#1{{\fontfamily{dozch}\fontencoding{OT1}\selectfont #1}}%
+\fi%
+\newcommand\x{\TextOrMath{\protect\doz{{X}}}{\X}}%
+\newcommand\e{\TextOrMath{\protect\doz{{E}}}{\E}}%
+\DeclareSymbolFont{dozens}{OT1}{dozch}{m}{n}
+\DeclareMathSymbol{\X}{\mathord}{dozens}{88}
+\DeclareMathSymbol{\E}{\mathord}{dozens}{69}
+% \end{macrocode}
+% Put in some additional code for the tally marks.
+% \begin{macrocode}
+\newcommand\tally[1]{%
+ \usefont{OT1}{dozch}{m}{n}\selectfont{#1}%
+}%
+% \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 that we can convert numbers \emph{to} dozenal, let's
+% set it up so that we can convert them \emph{from} dozenal.
+% This is pretty ugly stuff here, because it's mostly
+% straight \TeX\ (and e-\TeX) without higher-level
+% conveniences, and because it's an expansion nightmare. If
+% we didn't have to account for |\x| and |\e| because
+% included in such strings, it's fairly easy; but it took a
+% great deal of troubleshooting to make it work with them.
+%
+% First, we work up some macros to help us count the
+% characters in an argument (the same, more or less, as is
+% used in the |basicarith| package, adapted from those by
+% ``Florent'' at \url{tex-and-stuff.blogspot.com}); then, we convert to
+% decimal with |\basex|.
+% \begin{macrocode}
+\newcount\b@charcount
+\def\gobblechar{\let\char= }
+\def\assignthencheck{\afterassignment\checknil\gobblechar}
+\def\countunlessnil{%
+ \ifx\char\nil \let\next=\relax%
+ \else%
+ \let\next=\auxcountchar%
+ \advance\b@charcount by1%
+ \fi%
+ \ifx\char\backslash\advance\b@charcount by-1\fi%
+ \next%
+}%
+\def\auxcountchar{%
+ \afterassignment\countunlessnil\gobblechar%
+}%
+\def\countchar#1{\def\xx{#1}\b@charcount=0\expandafter\auxcountchar\xx\nil}
+%end Florent code
+\def\gobble#1{}%
+\newcount\@numdigs%
+\newcount\@decmult%
+\newcount\@loopindex\@loopindex=1%
+\newcount\@decnum\@decnum=0%
+\newcount\@digit\@digit=1%
+\def\basex#1{%
+ \countchar{#1}\@numdigs=\b@charcount%
+ \@decmult=1\@loopindex=1%
+ \loop\ifnum\@loopindex<\@numdigs%
+ \multiply\@decmult by12%
+ \advance\@loopindex by1%
+ \repeat%
+ \@loopindex=0%
+ \def\isten{x}\def\iselv{e}\def\isquote{\backslash}%
+ \edef\@doznum{\detokenize{#1}\relax}%
+ \@decnum=0%
+ \loop\ifnum\@loopindex<\@numdigs%
+ \def\@firstchar{\expandafter\@car\@doznum\@nil}%
+ \if\@firstchar\@backslashchar
+ \edef\@doznum{\@removefirstdig{\@doznum}}%
+ \else
+ \if\@firstchar\isten\def\@firstchar{10}\fi
+ \if\@firstchar\iselv\def\@firstchar{11}\fi
+ \advance\@loopindex by1%
+ \@digit=\@firstchar%
+ \edef\@doznum{\@removefirstdig{\@doznum}}%
+ \multiply\@digit by\@decmult%
+ \advance\@decnum by\@digit%
+ \divide\@decmult by12%
+ \fi
+ \repeat
+ \the\@decnum%
+}
+\def\@removefirstdig#1{%
+ \expandafter\expandafter\expandafter\gobble\expandafter\string#1%
+}
+% \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.
+%
+% This first bit ensures that the counters are redefined
+% even if the command |\mainmatter| is not defined. We have
+% to do this outside of the |\g@addto@macro| below;
+% otherwise, in documents where |\mainmatter| is defined but
+% not used, the counters will not be redefined. This way,
+% they're redefined in all cases.
+%
+% This also takes care of ensuring that the counters are
+% only redefined if the ``nocounters'' options was
+% \emph{not} specified.
+% \begin{macrocode}
+\@ifundefined{nocounters}{%
+ \@ifundefined{c@page}{}{%
+ \renewcommand\thepage{\basexii{\value{page}}{\x}{\e}}}
+ \@ifundefined{c@footnote}{}{%
+ \renewcommand\thefootnote{%
+ \basexii{\value{footnote}}{\x}{\e}}}
+ \@ifundefined{c@part}{}{%
+ \renewcommand\thepart{%
+ \basexii{\value{part}}{\x}{\e}}}
+ \@ifundefined{c@subparagraph}{}{%
+ \renewcommand\thesubparagraph{%
+ \basexii{\value{subparagraph}}{\x}{\e}}}
+ \@ifundefined{c@paragraph}{}{%
+ \renewcommand\theparagraph{%
+ \basexii{\value{paragraph}}{\x}{\e}}}
+ \@ifundefined{c@equation}{}{%
+ \renewcommand\theequation{%
+ \basexii{\value{equation}}{\x}{\e}}}
+ \@ifundefined{c@figure}{}{%
+ \renewcommand\thefigure{%
+ \basexii{\value{figure}}{\x}{\e}}}
+ \@ifundefined{c@table}{}{%
+ \renewcommand\thetable{%
+ \basexii{\value{table}}{\x}{\e}}}
+ \@ifundefined{c@table}{}{%
+ \renewcommand\thempfootnote{%
+ \basexii{\value{mpfootnote}}{\x}{\e}}}
+ \@ifundefined{c@enumi}{}{%
+ \renewcommand\theenumi{%
+ \basexii{\value{enumi}}{\x}{\e}}}
+ \@ifundefined{c@enumii}{}{%
+ \renewcommand\theenumii{%
+ \basexii{\value{enumii}}{\x}{\e}}}
+ \@ifundefined{c@enumiii}{}{%
+ \renewcommand\theenumiii{%
+ \basexii{\value{enumiii}}{\x}{\e}}}
+ \@ifundefined{c@enumiv}{}{%
+ \renewcommand\theenumiv{%
+ \basexii{\value{enumiv}}{\x}{\e}}}
+ \@ifundefined{c@chapter}{%
+ \renewcommand\thesection{%
+ \basexii{\value{section}}{\x}{\e}}
+ \renewcommand\thesubsection{%
+ \thesection.\basexii{\value{subsection}}{\x}{\e}}
+ \renewcommand\thesubsubsection{%
+ \thesubsection.\basexii{\value{subsubsection}}{\x}{\e}}
+ }{
+ \renewcommand\thechapter{%
+ \basexii{\value{chapter}}{\x}{\e}}
+ \renewcommand\thesection{%
+ \thechapter.\basexii{\value{section}}{\x}{\e}}
+ \renewcommand\thesubsection{%
+ \thesection.\basexii{\value{subsection}}{\x}{\e}}
+ \renewcommand\thesubsubsection{%
+ \thesubsection.\basexii{\value{subsubsection}}{\x}{\e}}
+ }
+% \end{macrocode}
+% Finally, if the |\mainmatter| command is used, we need to
+% make sure that it doesn't mess up our numbering scheme.
+% \begin{macrocode}
+\@ifundefined{mainmatter}{}{%
+ \g@addto@macro\mainmatter{%
+ \@ifundefined{c@page}{}{%
+ \renewcommand\thepage{\basexii{\value{page}}{\x}{\e}}}
+ \@ifundefined{c@footnote}{}{%
+ \renewcommand\thefootnote{\basexii{\value{footnote}}{\x}{\e}}}
+ \@ifundefined{c@part}{}{%
+ \renewcommand\thepart{\basexii{\value{part}}{\x}{\e}}}
+ \@ifundefined{c@subparagraph}{}{%
+ \renewcommand\thesubparagraph{%
+ \basexii{\value{subparagraph}}{\x}{\e}}}
+ \@ifundefined{c@paragraph}{}{%
+ \renewcommand\theparagraph{%
+ \basexii{\value{paragraph}}{\x}{\e}}}
+ \@ifundefined{c@equation}{}{%
+ \renewcommand\theequation{%
+ \basexii{\value{equation}}{\x}{\e}}}
+ \@ifundefined{c@figure}{}{%
+ \renewcommand\thefigure{%
+ \basexii{\value{figure}}{\x}{\e}}}
+ \@ifundefined{c@table}{}{%
+ \renewcommand\thetable{%
+ \basexii{\value{table}}{\x}{\e}}}
+ \@ifundefined{c@table}{}{%
+ \renewcommand\thempfootnote{%
+ \basexii{\value{mpfootnote}}{\x}{\e}}}
+ \@ifundefined{c@enumi}{}{%
+ \renewcommand\theenumi{%
+ \basexii{\value{enumi}}{\x}{\e}}}
+ \@ifundefined{c@enumii}{}{%
+ \renewcommand\theenumii{%
+ \basexii{\value{enumii}}{\x}{\e}}}
+ \@ifundefined{c@enumiii}{}{%
+ \renewcommand\theenumiii{%
+ \basexii{\value{enumiii}}{\x}{\e}}}
+ \@ifundefined{c@enumiv}{}{%
+ \renewcommand\theenumiv{%
+ \basexii{\value{enumiv}}{\x}{\e}}}
+ \@ifundefined{c@chapter}{
+ \renewcommand\thesection{%
+ \basexii{\value{section}}{\x}{\e}}
+ \renewcommand\thesubsection{%
+ \thesection.\basexii{\value{subsection}}{\x}{\e}}
+ \renewcommand\thesubsubsection{%
+ \thesubsection.\basexii{\value{subsubsection}}{\x}{\e}}
+ }{
+ \renewcommand\thechapter{%
+ \basexii{\value{chapter}}{\x}{\e}}
+ \renewcommand\thesection{%
+ \thechapter.\basexii{\value{section}}{\x}{\e}}
+ \renewcommand\thesubsection{%
+ \thesection.\basexii{\value{subsection}}{\x}{\e}}
+ \renewcommand\thesubsubsection{%
+ \thesubsection.\basexii{\value{subsubsection}}{\x}{\e}}
+ } % end if it's defined
+ }
+}
+}{} % end redefinition of counters block
+% \end{macrocode}
+% And that's the end. Thanks for reading,
+% folks; please email me with any suggestions or improvements.
+% \printindex