% \iffalse meta-comment % % Extracted from makebase.xml % makebase.dtx is copyright © 2016 by Peter Flynn % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either % version 1.3 of this license or (at your option) any later % version. The latest version of this license is in: % % http://www.latex-project.org/lppl.txt % % and version 1.3 or later is part of all distributions of % LaTeX version 2005/12/01 or later. % % This work has the LPPL maintenance status `maintained'. % % The current maintainer of this work is Peter Flynn % % This work consists of the files makebase.dtx and makebase.ins, % the derived file makebase.sty, and any ancillary files listed % in the MANIFEST. % % \fi % \iffalse %\NeedsTeXFormat{LaTeX2e}[2014/09/29] %\ProvidesPackage{makebase}[2016/05/10 v0.2 % Typeset counters in a different base] %<*driver> \RequirePackage{fix-cm} \PassOptionsToPackage{svgnames}{xcolor} \PassOptionsToPackage{hyphens}{url} \documentclass[12pt]{ltxdoc} %% %% Packages added automatically %% \usepackage{classpack}% included by default. (0) \usepackage{mflogo}% included by default. (23) \usepackage[british]{babel}% included by default. (31) \usepackage{ccaption}% included by default. (34) \captionnamefont{\bfseries} \captionstyle{\raggedright} \usepackage{fancyvrb}% use of 'programlisting' was detected (41) \usepackage{makeidx}% included by default. (57) \makeindex %% %% Packages specified by author %% \let\SavedShow\show \usepackage[utf8x]{inputenc}[2008/03/30] \AtBeginDocument{\let\show\SavedShow} \DeclareUnicodeCharacter{9251}{\textvisiblespace} \PrerenderUnicode{–} \PrerenderUnicode{š} \PrerenderUnicode{ć} \PrerenderUnicode{Å} \PrerenderUnicode{ı} \PrerenderUnicode{É} \usepackage[T1]{fontenc} \usepackage{dox}[2010/12/16] \makeatletter \doxitem[idxtype=attribute]{Attribute}{CPK@attribute}{attributes} \makeatother \makeatletter \doxitem[idxtype=attributevalue]{AttributeValue}{CPK@attributevalue}{attribute values} \makeatother \makeatletter \doxitem[idxtype=class]{Class}{CPK@class}{classes} \makeatother \makeatletter \doxitem[idxtype=colour]{Colour}{CPK@colour}{colours} \makeatother \makeatletter \doxitem[idxtype=counter]{Counter}{CPK@counter}{counters} \makeatother \makeatletter \doxitem[idxtype=DTD]{DTD}{CPK@dtd}{DTDs/Schemas} \makeatother \makeatletter \doxitem[idxtype=element]{Element}{CPK@element}{element types} \makeatother \makeatletter \doxitem[idxtype=entity]{Entity}{CPK@entity}{entities} \makeatother \makeatletter \doxitem[idxtype=error]{Error}{CPK@error}{errors} \makeatother \makeatletter \doxitem[idxtype=function]{Function}{CPK@function}{functions} \makeatother \makeatletter \doxitem[idxtype=language]{Language}{CPK@language}{languages} \makeatother \makeatletter \doxitem[macrolike,idxtype=length]{Length}{CPK@length}{lengths} \makeatother \makeatletter \doxitem[idxtype=mode]{Mode}{CPK@mode}{modes} \makeatother \makeatletter \doxitem[idxtype=option]{Option}{CPK@option}{options} \makeatother \makeatletter \doxitem[idxtype=package]{Package}{CPK@package}{packages} \makeatother \makeatletter \doxitem[idxtype=template]{Template}{CPK@template}{templates} \makeatother \makeatletter \doxitem[idxtype=typeface]{Typeface}{CPK@typeface}{typefaces} \makeatother \makeatletter \doxitem[idxtype=font]{Font}{CPK@font}{fonts} \makeatother \newcommand{\LabelFont}[2][\relax]{\strut {\fontencoding\encodingdefault \fontfamily{lmtt}\fontseries{lc}#1\selectfont#2}\space} \makeatletter \let\CPK@macro\macro\let\CPK@endmacro\endmacro \makeatother \makeatletter \let\CPK@environment\environment\let\CPK@endenvironment\endenvironment \makeatother \makeatletter \def\PrintAttributeName#1{\LabelFont{@#1}} \makeatother \def\PrintAttributeValueName#1{\LabelFont{"#1"}} \def\PrintClassName#1{\LabelFont[\fontfamily{lmss}]{#1}} \def\PrintColourName#1{\LabelFont[\color{#1}]{#1}} \def\PrintCounterName#1{\LabelFont{#1}} \def\PrintDTDName#1{\LabelFont{#1}} \def\PrintElementName#1{\LabelFont{<#1>}} \def\PrintEntityName#1{\LabelFont{\}} \def\PrintEnvironmentName#1{\LabelFont[\fontfamily{lmss}]{#1}} \def\PrintErrorName#1{\LabelFont[\color{Red}!]{#1}} \def\PrintFunctionName#1{\LabelFont[\bfseries\itshape]{#1}} \def\PrintLanguageName#1{\LabelFont{#1}} \def\PrintLengthName#1{\LabelFont{#1}} \def\PrintMacroName#1{\LabelFont{#1}} \def\PrintModeName#1{\LabelFont[\sffamily]{\textlangle#1\textrangle}} \def\PrintOptionName#1{\LabelFont[\bfseries]{#1}} \def\PrintPackageName#1{\LabelFont[\fontfamily{lmss}]{#1}} \def\PrintTemplateName#1{\LabelFont[\bfseries]{#1}} \usepackage[textwidth=159mm, textheight=229mm,a4paper,left=1in,right=1in, textwidth=160mm,textheight=9in]{geometry} \usepackage{url} \usepackage{parskip} \usepackage{varioref} \vrefwarning \labelformat{chapter}{Chapter~#1} \makeatletter \labelformat{chapter}{\@chapapp~#1} \makeatother \labelformat{section}{section~#1} \labelformat{subsection}{section~#1} \labelformat{subsubsection}{section~#1} \labelformat{paragraph}{section~#1} \labelformat{figure}{Figure~#1} \labelformat{table}{Table~#1} \labelformat{item}{item~#1} \renewcommand{\reftextcurrent}{elsewhere on this page} \def\reftextafter{on the \reftextvario{next}{following} page} \usepackage{lmodern} \usepackage{calc} \usepackage{fmtcount} \usepackage{listings} \lstdefinelanguage{dummy} {morekeywords={dummy}} \lstdefinelanguage{DocBook}[]{XML} {morekeywords={abstract,address,affiliation,annotation,arg, author,book,chapter,classname,cmdsynopsis,command, constraintdef,contrib,copyright,cover,date,email,emphasis, envar,filename,firstname,footnote,guibutton,guilabel, guimenu,guimenuitem,guisubmenu,holder,info,itemizedlist, listitem,literal,member,option,orderedlist,orgdiv,orgname, package,para,parameter,part,personname,phrase,procedure, productname,programlisting,quote,refsection,remark, constructorsynopsis,methodparan,modifier,funcparams,olink, bibliography,biblioentry,biblioset,subtitle,artpagenums, volumenum,issuenum,DOCTYPE,SYSTEM,xml:id,releaseinfo, replaceable,revdescription,revhistory,revision,sect1,sect2, sect3,sect4,seg,seglistitem,segmentedlist,segtitle, simplelist,step,surname,systemitem,tag,term,title,uri, userinput,variablelist,varlistentry,wordasword,xref,year, xlink:href},} \makeatletter \lstdefinelanguage{bash} {morestring=[s]{[]},morekeywords={exit,logout,yes,no,@, password,ssh,URL,cd,dvips,latex,ls,makeindex,man,mkdir, pdflatex,sudo,texconfig,texdoc,updmap,xelatex}} \makeatother \lstdefinelanguage{APA}[]{XML} {morekeywords={TTL}} \lstdefinelanguage{OOXML}[]{XML} {morekeywords={w:p,w:pPr,w:pStyle,w:rPr,w:rFonts, w:r,w:t,w:lang}} \lstdefinelanguage{SGML}[]{XML} {morekeywords={sec,ttl}} \lstdefinelanguage{DTD}[]{XML} {morekeywords={ELEMENT,ENTITY,ATTLIST,CDATA,ID,REQUIRED, IMPLIED,PCDATA}} \lstdefinelanguage{Runoff} {morekeywords={h1}} \lstdefinelanguage{GML} {morekeywords={h1}} \lstdefinelanguage{Scribe} {morekeywords={Heading},morestring=[s]{[]}} \lstdefinelanguage{RTF}[]{TeX} {moretexcs={rtf,ansi,deff,adeflang,fonttbl,f,froman,fprq, fcharset,f1,fswiss,falt,fnil,colortbl,red,green,blue, stylesheet,s,snext,nowidctlpar,hyphen,hyphlead,hyphtrail, hyphmax,cf,kerning,dbch,af,langfe,afs,alang,loch,fs, pgndec,pard,plain,qc,sb,sa,keepn,b,ab,rtlch,ltrch,par}} \lstdefinelanguage{TEI}[]{XML} {morekeywords={TEI,TEI.2,teiHeader,fileDesc,sourceDesc, titleStmt,title,author,editor,respStmt,resp,name, editionStmt,edition,text,body,publicationStmt,publisher, div,div1,placeName,lg,l,s,cl,phr,w,list,distinct,p,pb, mls,div2,head,num,val,app,lem,rdg,q,sup,uncl,note, DOCTYPE,SYSTEM,xml:id}}[keywords,comments,strings] \lstdefinelanguage{XSLT2}[]{XML} {morekeywords={xsl:stylesheet,xsl:transform, xsl:apply-imports,xsl:attribute-set,xsl:decimal-format, xsl:import,xsl:include,xsl:key,xsl:namespace-alias, xsl:output,xsl:param, xsl:preserve-space,xsl:strip-space,xsl:template, xsl:variable,xsl:character-map,xsl:function, xsl:import-schema,xsl:param,xsl:variable, xsl:apply-imports,xsl:apply-templates,xsl:attribute, xsl:call-template,xsl:choose,xsl:comment,xsl:copy, xsl:copy-of,xsl:element,xsl:fallback,xsl:for-each, xsl:if,xsl:message,xsl:number,xsl:otherwise, xsl:processing-instruction,xsl:text,xsl:value-of, xsl:variable,xsl:when,xsl:with-param,xsl:sort, xsl:for-each-group,xsl:next-match,xsl:analyze-string, xsl:namespace,xsl:result-document,xsl:copy, xsl:fallback,xsl:document,xsl:sequence, xsl:matching-substring,xsl:non-matching-substring, xsl:perform-sort,xsl:output-character}, alsodigit={-}} \lstdefinelanguage{LaTeXe}[LaTeX]{TeX} {morekeywords = {selectlanguage,foreignlanguage, textbrokenbar,textlangle,textrangle,subsection,url, chapter,tableofcontents,part,subsubsection,paragraph, subparagraph,maketitle,setlength,listoffigures, listoftables,color,arraybackslash,includegraphics, textcite,parencite,graphicspath,lstinline, DeclareLanguageMapping,textcolor,definecolor,colorbox, fcolorbox}} \lstdefinelanguage{BIBTeX}{ morekeywords = {title,author,edition,publisher,year, address}, morestring=[b]", } \lstdefinelanguage{Email}{ morekeywords={From,Subject,To,Date}, } \lstset{defaultdialect=LaTeXe,frame=single, framesep=.5em,backgroundcolor=\color{AliceBlue}, rulecolor=\color{LightSteelBlue},framerule=1pt} \lstloadlanguages{LaTeXe,DocBook,XML,XSLT2,bash} \lstnewenvironment{listingsdoc} {\lstset{language={[LaTeX]TeX}}} {} \newcommand\basicdefault[1]{\footnotesize \color{Black}\ttfamily#1} \lstset{basicstyle=\basicdefault{\spaceskip.5em}} \lstset{literate= {§}{{\S}}1 {©}{{\raisebox{.125ex}{\copyright}\enspace}}1 {«}{{\guillemotleft}}1 {»}{{\guillemotright}}1 {Á}{{\'A}}1 {Ä}{{\"A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ö}{{\"O}}1 {Ú}{{\'U}}1 {Ü}{{\"U}}1 {ß}{{\ss}}2 {à}{{\`a}}1 {á}{{\'a}}1 {ä}{{\"a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ö}{{\"o}}1 {ú}{{\'u}}1 {ü}{{\"u}}1 {ı}{{\i}}1 {—}{{---}}1 {’}{{'}}1 {…}{{\dots}}1 {␣}{{\textvisiblespace}}1, keywordstyle=\color{DarkGreen}\bfseries, identifierstyle=\color{DarkRed}, commentstyle=\color{Gray}\upshape, stringstyle=\color{DarkBlue}\upshape, emphstyle=\color{Chocolate}\upshape, showstringspaces=false, columns=fullflexible, keepspaces=true} \usepackage{graphicx} \usepackage[svgnames]{xcolor} \makeatletter \@ifundefined{T}{% \newcommand{\T}[2]{{\fontencoding{T1}\selectfont#2}}}{} \makeatother \usepackage{sectsty} \allsectionsfont{\sffamily} \renewcommand*{\descriptionlabel}[1]{\hspace\labelsep \sffamily\bfseries #1} \usepackage{nicefrac} \def\textonehalf{\ensuremath{\nicefrac12}} \usepackage{fancybox} \usepackage[inline]{enumitem} \setlist[description]{style=unboxed} \usepackage{array} \newcommand{\classorpackage}{package} \usepackage{classpack} %% %% Settings for docstrip and latexdoc %% \EnableCrossrefs \CodelineIndex \RecordChanges \begin{document} \DocInput{makebase.dtx} \end{document} % % \fi % % \CheckSum{133} % % \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 \~} % % \changes{v0.2}{2016/05/10}{Regenerated: Recreated package with new classpack code to create zip file to the CTAN standard.} % \changes{v0.1}{2016/04/28}{Initial test: Rewritten from an earlier test.} % % \GetFileInfo{makebase.dtx} % % \DoNotIndex{\@,\@@par,\@beginparpenalty,\@empty} % \DoNotIndex{\@flushglue,\@gobble,\@input} % \DoNotIndex{\@makefnmark,\@makeother,\@maketitle} % \DoNotIndex{\@namedef,\@ne,\@spaces,\@tempa} % \DoNotIndex{\@tempb,\@tempswafalse,\@tempswatrue} % \DoNotIndex{\@thanks,\@thefnmark,\@topnum} % \DoNotIndex{\@@,\@elt,\@forloop,\@fortmp,\@gtempa,\@totalleftmargin} % \DoNotIndex{\",\/,\@ifundefined,\@nil,\@verbatim,\@vobeyspaces} % \DoNotIndex{\|,\~,\ ,\active,\advance,\aftergroup,\begingroup,\bgroup} % \DoNotIndex{\mathcal,\csname,\def,\documentstyle,\dospecials,\edef} % \DoNotIndex{\egroup} % \DoNotIndex{\else,\endcsname,\endgroup,\endinput,\endtrivlist} % \DoNotIndex{\expandafter,\fi,\fnsymbol,\futurelet,\gdef,\global} % \DoNotIndex{\hbox,\hss,\if,\if@inlabel,\if@tempswa,\if@twocolumn} % \DoNotIndex{\ifcase} % \DoNotIndex{\ifcat,\iffalse,\ifx,\ignorespaces,\index,\input,\item} % \DoNotIndex{\jobname,\kern,\leavevmode,\leftskip,\let,\llap,\lower} % \DoNotIndex{\m@ne,\next,\newpage,\nobreak,\noexpand,\nonfrenchspacing} % \DoNotIndex{\obeylines,\or,\protect,\raggedleft,\rightskip,\rm,\sc} % \DoNotIndex{\setbox,\setcounter,\small,\space,\string,\strut} % \DoNotIndex{\strutbox} % \DoNotIndex{\thefootnote,\thispagestyle,\topmargin,\trivlist,\tt} % \DoNotIndex{\twocolumn,\typeout,\vss,\vtop,\xdef,\z@} % \DoNotIndex{\,,\@bsphack,\@esphack,\@noligs,\@vobeyspaces,\@xverbatim} % \DoNotIndex{\`,\catcode,\end,\escapechar,\frenchspacing,\glossary} % \DoNotIndex{\hangindent,\hfil,\hfill,\hskip,\hspace,\ht,\it,\langle} % \DoNotIndex{\leaders,\long,\makelabel,\marginpar,\markboth,\mathcode} % \DoNotIndex{\mathsurround,\mbox,\newcount,\newdimen,\newskip} % \DoNotIndex{\nopagebreak} % \DoNotIndex{\parfillskip,\parindent,\parskip,\penalty,\raise,\rangle} % \DoNotIndex{\section,\setlength,\TeX,\topsep,\underline,\unskip,\verb} % \DoNotIndex{\vskip,\vspace,\widetilde,\\,\%,\@date,\@defpar} % \DoNotIndex{\[,\{,\},\]} % \DoNotIndex{\count@,\ifnum,\loop,\today,\uppercase,\uccode} % \DoNotIndex{\baselineskip,\begin,\tw@} % \DoNotIndex{\a,\b,\c,\d,\e,\f,\g,\h,\i,\j,\k,\l,\m,\n,\o,\p,\q} % \DoNotIndex{\r,\s,\t,\u,\v,\w,\x,\y,\z,\A,\B,\C,\D,\E,\F,\G,\H} % \DoNotIndex{\I,\J,\K,\L,\M,\N,\O,\P,\Q,\R,\S,\T,\U,\V,\W,\X,\Y,\Z} % \DoNotIndex{\1,\2,\3,\4,\5,\6,\7,\8,\9,\0} % \DoNotIndex{\!,\#,\$,\&,\',\(,\),\+,\.,\:,\;,\<,\=,\>,\?,\_} % \DoNotIndex{\discretionary,\immediate,\makeatletter,\makeatother} % \DoNotIndex{\meaning,\newenvironment,\par,\relax,\renewenvironment} % \DoNotIndex{\repeat,\scriptsize,\selectfont,\the,\undefined} % \DoNotIndex{\arabic,\do,\makeindex,\null,\number,\show,\write,\@ehc} % \DoNotIndex{\@author,\@ehc,\@ifstar,\@sanitize,\@title,\everypar} % \DoNotIndex{\if@minipage,\if@restonecol,\ifeof,\ifmmode} % \DoNotIndex{\lccode,\newtoks,\onecolumn,\openin,\p@,\SelfDocumenting} % \DoNotIndex{\settowidth,\@resetonecoltrue,\@resetonecolfalse,\bf} % \DoNotIndex{\clearpage,\closein,\lowercase,\@inlabelfalse} % \DoNotIndex{\selectfont,\mathcode,\newmathalphabet,\rmdefault} % \DoNotIndex{\bfdefault,\DeclareRobustCommand} % \DoNotIndex{\classorpackage} % \DoNotIndex{\Sil@MB@maxdiv} % \DoNotIndex{\makebase} % \DoNotIndex{\divide} % \DoNotIndex{\multiply} % \DoNotIndex{\repeat} % \setcounter{tocdepth}{5} % \setcounter{secnumdepth}{5} % \makeatletter % \def\@@doxdescribe#1#2{\endgroup \ifdox@noprint\else\marginpar{\raggedleft \textcolor{DarkRed}{\@nameuse{PrintDescribe#1}{#2}}}\fi \ifdox@noindex\else\@nameuse{Special#1Index}{#2}\fi \endgroup\@esphack\ignorespaces} % \makeatother % % \def\fileversion{0.2} % \def\filedate{2016/05/10} % \title{The \textsf{makebase} \LaTeXe\ package\thanks{% % This document corresponds to \textsf{makebase} % \textit{v.}\ \fileversion $\alpha$, dated \filedate.} % \\[1em]\Large % Typeset counters in a different base} % \author{Peter Flynn\\\normalsize Silmaril Consultants\\[-.25ex]\normalsize Textual Therapy Division\\\normalsize(\url{peter@silmaril.ie})} % \maketitle % \renewcommand{\abstractname}{Summary}\thispagestyle{empty} % \begin{abstract} % \parskip=0.5\baselineskip % \advance\parskip by 0pt plus 2pt % \parindent=0pt% \noindent % This package typesets a \LaTeX{} counter such as {\ttfamily{}page} in an arbitrary base (default % 16). It does not change font or typeface.\par % The package extends the functionality of the existing % \textsf{hex} \LaTeX{}2.09 package and provides % documentation. However, the author is not a mathematician, and % suggestions for rewriting the code are welcomed.\par % Warning: this is alpha software and may contain bugs. % Please report problems to the author.\par % \end{abstract} % \clearpage % \tableofcontents % \clearpage % \section{Description} % This package was developed for an application which % typeset smoke proofs of font characters from the Private Use % areas of Unicode, where the codepoint is a very large number % usually expressed in hexadecimal, and this was required for % the page numbers.\par % The package contains two macros:\par % \begin{enumerate} % \item {\ttfamily{}\textbackslash{}Sil@MB@maxdiv} finds the highest % power of the selected base which is smaller than the value % of the counter and makes it the primary divisor; % \item {\ttfamily{}\textbackslash{}makebase} divides the counter % repeatedly by the divisor found in % {\ttfamily{}\textbackslash{}Sil@MB@maxdiv}, reducing it by one power % each time, and outputting the quotient as a digit. % \end{enumerate} % This has only been tested in page numbering so far (see % the accompanying file % {\ttfamily{}makebase-test.tex}, for example:\par % \iffalse %<*ignore> % \fi \begin{lstlisting}[language={[LaTeX]TeX}] \setcounter{page}{57635} \makebase{page} \end{lstlisting} % \iffalse % % \fi % will produce \texttt{0xE123} (the default base is % 16). Using\par % \iffalse %<*ignore> % \fi \begin{lstlisting}[language={[LaTeX]TeX}] \makebase[8]{page} \end{lstlisting} % \iffalse % % \fi % produces 0160443.\par % Warning: this is alpha software and may contain bugs. % Please report problems to the author.\par % \StopEventually{\label{endcode} % \clearpage % \newgeometry{left=3cm} % \addcontentsline{toc}{section}{Change History} % \label{} % \PrintChanges % \clearpage % \label{codeindex} % \addcontentsline{toc}{section}{Index} % \PrintIndex} % \addtolength{\revmarg}{\widthof{\LabelFont{Sil@MB@postnum}}} % \newgeometry{left=\revmarg} % \iffalse %<*package> % \fi % \clearpage % \section{Implementation}\label{implementation} %\iffalse %% %% Packages required %% % \fi % \subsection{Packages required for the package itself}\label{stypackages} % \begin{CPK@package}{calc} % Required for calculations involving lengths or counters, % such as changes to widths for margin adjustment. % \iffalse %% Required for calculations involving lengths or counters, such as changes to widths for margin adjustment. % \fi % \begin{macrocode} \RequirePackage{calc} % \end{macrocode} % \end{CPK@package} % % \subsection{Counters}\label{counters} % \begin{CPK@counter}{Sil@MB@prenum} % The value of the counter before calculations start.\par % \begin{macrocode} \newcounter{Sil@MB@prenum} % \end{macrocode} % \end{CPK@counter} % \begin{CPK@counter}{Sil@MB@postnum} % The value of the counter after calculations.\par % \begin{macrocode} \newcounter{Sil@MB@postnum} % \end{macrocode} % \end{CPK@counter} % \begin{CPK@counter}{Sil@MB@quot} % The quotient (number of times the computed divisor % goes into the current value of the counter {\ttfamily{}Sil@MB@postnum}.\par % \begin{macrocode} \newcounter{Sil@MB@quot} % \end{macrocode} % \end{CPK@counter} % \begin{CPK@counter}{Sil@MB@rem} % The remainder after division.\par % \begin{macrocode} \newcounter{Sil@MB@rem} % \end{macrocode} % \end{CPK@counter} % \begin{CPK@macro}{\Sil@MB@div} % The divisor (initially the base).\par % \begin{macrocode} \newcounter{Sil@MB@div} % \end{macrocode} % \end{CPK@macro} % \subsection{Macros}\label{macros} % Two macros are defined: one internal for calculating the % largest dividor needed to start with, and one public, for % implementing the conversion.\par % \begin{CPK@macro}{\Sil@MB@maxdiv} % This is the internal (private) macro.\par % \begin{macrocode} \newcommand{\Sil@MB@maxdiv}[2][16]{% % \end{macrocode} % Record the counter value and the base (default % 16)\par % \begin{macrocode} \setcounter{Sil@MB@div}{#1}% \setcounter{Sil@MB@prenum}{#2}% % \message{Testing \theSil@MB@prenum\space for divisibility % by powers of \theSil@MB@div}% % \end{macrocode} % It repeatedly divides the counter by the base using % \TeX{}'s {\ttfamily{}\textbackslash{}divide} primitive and then % re-multiplies it using {\ttfamily{}\textbackslash{}multiply} to see % if the result is zero yet, and if not, increases the base % by a power and tries again.\par % \begin{macrocode} \loop % \message{...dividing \theSil@MB@prenum\space by \theSil@MB@div}% \divide\c@Sil@MB@prenum by\c@Sil@MB@div \multiply\c@Sil@MB@prenum by\c@Sil@MB@div \multiply\c@Sil@MB@div by#1 \ifnum\c@Sil@MB@prenum>0 \repeat % \end{macrocode} % Because the repeating condition above cannot include % anything other than the {\ttfamily{}\textbackslash{}repeat} command, % it is necessary to compute the increase of the power % \emph{before} the condition.\par % We therefore need to decrease it on exit to % compensate, before decreasing it yet again to the previous % successful level, which is the one we want to use in the % actual computation as the initial divisor.\par % \begin{macrocode} \divide\c@Sil@MB@div by#1 \divide\c@Sil@MB@div by#1 % \message{Need to start at \theSil@MB@div.}% } % \end{macrocode} % \end{CPK@macro} % \begin{CPK@macro}{\makebase} % This is the user-level macro which performs the % conversion. It too defaults to base 16.\par % \begin{macrocode} \newcommand{\makebase}[2][16]{% % \end{macrocode} % The first action is to call the internal macro % {\ttfamily{}\textbackslash{}Sil@MB@maxdiv} to compute the initial % divisor as above.\par % \begin{macrocode} \Sil@MB@maxdiv[#1]{#2}% % \end{macrocode} % The prefix \texttt{0x} is output if the base is % 16; for base 8 the prefix is \texttt{0}. These should % probably be developed for other bases with an option to % use \TeX{}'s double-quote and single-quote prefixes.\par % \begin{macrocode} \ifnum#1=16 0x\else\ifnum#1=8 0\fi\fi % \end{macrocode} % Set the initial values for before-and-after % calculation.\par % \begin{macrocode} \setcounter{Sil@MB@prenum}{#2}% \setcounter{Sil@MB@postnum}{#2}% % \message{Formatting \theSil@MB@prenum\space in base#1 % starting at \theSil@MB@div}% % \end{macrocode} % Loop through the calculations. If the current divisor % is bigger than the counter, output a zero and decrement % the power.\par % \begin{macrocode} \loop \ifnum\c@Sil@MB@div>\c@Sil@MB@prenum 0\divide\c@Sil@MB@div by#1 % \message{skipped a power, divisor now \theSil@MB@div}% \fi % \end{macrocode} % Perform the division and record the quotient, then % re-multiply the value so the remainder can be computed.\par % \begin{macrocode} % \message{Dividing \theSil@MB@postnum\space by \theSil@MB@div}% \divide\c@Sil@MB@postnum by\c@Sil@MB@div % \message{...got \theSil@MB@postnum}% \setcounter{Sil@MB@quot}{\value{Sil@MB@postnum}}% % \message{Multiplying \theSil@MB@postnum\space by \theSil@MB@div}% \multiply\c@Sil@MB@postnum by\c@Sil@MB@div % \message{...got \theSil@MB@postnum, setting remainder}% \setcounter{Sil@MB@rem}{\value{Sil@MB@prenum}-\value{Sil@MB@postnum}}% % \message{...got \theSil@MB@rem}% % \end{macrocode} % Output the quotient, allowing for alphabetic % hexadecimal digits.\par % \begin{macrocode} % \par\dots divided \theSil@MB@prenum\ by \theSil@MB@div\ % \theSil@MB@quot\ times (\theSil@MB@postnum) leaving \theSil@MB@rem: \ifcase\c@Sil@MB@quot 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or 9\or A\or B\or C\or D\or E\or F\else !Z\fi % \end{macrocode} % As in the internal macro, make the resetting of the % next values for the % next loop \emph{before} testing the loop % condition. If the remainder is zero, exit.\par % \begin{macrocode} \setcounter{Sil@MB@prenum}{\value{Sil@MB@rem}}% \setcounter{Sil@MB@postnum}{\value{Sil@MB@rem}}% \divide\c@Sil@MB@div by#1 \ifnum\c@Sil@MB@rem>0 \repeat } % \end{macrocode} % \end{CPK@macro} % \iffalse % % \fi % \appendix % \iffalse %<*testdoc> % \fi % \clearpage % \section{Test of package}\label{testdoc} % \iffalse %% Test of package% \fi % \begin{macrocode} \documentclass{article} \usepackage{makebase} \setcounter{page}{"E123} \renewcommand{\thepage}{\ttfamily\makebase[16]{\value{page}}} \begin{document} This is page number \arabic{page}. \end{document} % \end{macrocode} % \iffalse % % \fi % \newgeometry{left=3cm} % \clearpage % \section{The \LaTeX{} Project Public License}\label{LPPL:LPPL} % \begin{quotation}\small\noindent % Everyone is allowed to distribute verbatim copies of this % license document, but modification of it is not allowed. % \end{quotation} % \subsection{Preamble}\label{LPPL:Preamble} % The \LaTeX{} Project Public License (\textsc{lppl}) % is the primary license under which the \LaTeX{} kernel and the % base \LaTeX{} packages are distributed.\par % You may use this license for any work of which you hold the % copyright and which you wish to distribute. This license may be % particularly suitable if your work is \TeX{}-related (such as a % \LaTeX{} package), but it is written in such a way that you can % use it even if your work is unrelated to \TeX{}.\par % The section \emph{Whether and How to Distribute Works under This % License}, below, gives instructions, examples, and % recommendations for authors who are considering distributing % their works under this license.\par % This license gives conditions under which a work may be % distributed and modified, as well as conditions under which % modified versions of that work may be distributed.\par % We, the \LaTeX{3} Project, believe that the conditions below % give you the freedom to make and distribute modified versions of % your work that conform with whatever technical specifications % you wish while maintaining the availability, integrity, and % reliability of that work. If you do not see how to achieve your % goal while meeting these conditions, then read the document % {\ttfamily{}cfgguide.tex} and {\ttfamily{}modguide.tex} in the base \LaTeX{} % distribution for suggestions.\par % \subsection{Definitions}\label{LPPL:Definitions} % In this license document the following terms are used:\par % \begin{description}[style=unboxed] % \item[Work\thinspace:]Any work being distributed under this License. % \item[Derived Work\thinspace:]Any work that under any applicable law is derived from % the Work. % \item[Modification\thinspace:]Any procedure that produces a Derived Work under any % applicable law~--- for example, the production of a file % containing an original file associated with the Work or a % significant portion of such a file, either verbatim or % with modifications and/or translated into another % language. % \item[Modify\thinspace:]To apply any procedure that produces a Derived Work % under any applicable law. % \item[Distribution\thinspace:]Making copies of the Work available from one person to % another, in whole or in part. Distribution includes (but % is not limited to) making any electronic components of the % Work accessible by file transfer protocols such as % \textsc{ftp} or \textsc{http} or by % shared file systems such as Sun's Network File System % (\textsc{nfs}). % \item[Compiled Work\thinspace:]A version of the Work that has been processed into a % form where it is directly usable on a computer system. % This processing may include using installation facilities % provided by the Work, transformations of the Work, copying % of components of the Work, or other activities. Note that % modification of any installation facilities provided by % the Work constitutes modification of the Work. % \item[Current Maintainer\thinspace:]A person or persons nominated as such within the Work. % If there is no such explicit nomination then it is the % `Copyright Holder' under any applicable % law. % \item[Base Interpreter\thinspace:]A program or process that is normally needed for % running or interpreting a part or the whole of the % Work.\par % A Base Interpreter may depend on external components % but these are not considered part of the Base Interpreter % provided that each external component clearly identifies % itself whenever it is used interactively. Unless % explicitly specified when applying the license to the % Work, the only applicable Base Interpreter is a % `\LaTeX{}-Format' or in the case of files % belonging to the `\LaTeX{}-format' a program % implementing the `\TeX{} language'. % \end{description} % \subsection{Conditions on Distribution and Modification}\label{LPPL:Conditions} % \begin{enumerate} % \item Activities other than distribution and/or modification % of the Work are not covered by this license; they are % outside its scope. In particular, the act of running the % Work is not restricted and no requirements are made % concerning any offers of support for the Work. % \item \label{LPPL:item:distribute}You may distribute a complete, unmodified copy of the % Work as you received it. Distribution of only part of the % Work is considered modification of the Work, and no right to % distribute such a Derived Work may be assumed under the % terms of this clause. % \item You may distribute a Compiled Work that has been % generated from a complete, unmodified copy of the Work as % distributed under Clause~item~\ref{LPPL:item:distribute} above above, as % long as that Compiled Work is distributed in such a way that % the recipients may install the Compiled Work on their system % exactly as it would have been installed if they generated a % Compiled Work directly from the Work. % \item \label{LPPL:item:currmaint}If you are the Current Maintainer of the Work, you may, % without restriction, modify the Work, thus creating a % Derived Work. You may also distribute the Derived Work % without restriction, including Compiled Works generated from % the Derived Work. Derived Works distributed in this manner % by the Current Maintainer are considered to be updated % versions of the Work. % \item If you are not the Current Maintainer of the Work, you % may modify your copy of the Work, thus creating a Derived % Work based on the Work, and compile this Derived Work, thus % creating a Compiled Work based on the Derived Work. % \item \label{LPPL:item:conditions}If you are not the Current Maintainer of the Work, you % may distribute a Derived Work provided the following % conditions are met for every component of the Work unless % that component clearly states in the copyright notice that % it is exempt from that condition. Only the Current % Maintainer is allowed to add such statements of exemption to % a component of the Work. % \begin{enumerate} % \item If a component of this Derived Work can be a direct % replacement for a component of the Work when that % component is used with the Base Interpreter, then, % wherever this component of the Work identifies itself to % the user when used interactively with that Base % Interpreter, the replacement component of this Derived % Work clearly and unambiguously identifies itself as a % modified version of this component to the user when used % interactively with that Base Interpreter. % \item Every component of the Derived Work contains % prominent notices detailing the nature of the changes to % that component, or a prominent reference to another file % that is distributed as part of the Derived Work and that % contains a complete and accurate log of the % changes. % \item No information in the Derived Work implies that any % persons, including (but not limited to) the authors of % the original version of the Work, provide any support, % including (but not limited to) the reporting and % handling of errors, to recipients of the Derived Work % unless those persons have stated explicitly that they do % provide such support for the Derived Work. % \item You distribute at least one of the following with % the Derived Work: % \begin{enumerate} % \item A complete, unmodified copy of the Work; if your % distribution of a modified component is made by % offering access to copy the modified component from % a designated place, then offering equivalent access % to copy the Work from the same or some similar place % meets this condition, even though third parties are % not compelled to copy the Work along with the % modified component; % \item Information that is sufficient to obtain a % complete, unmodified copy of the Work. % \end{enumerate} % \end{enumerate} % \item If you are not the Current Maintainer of the Work, you % may distribute a Compiled Work generated from a Derived % Work, as long as the Derived Work is distributed to all % recipients of the Compiled Work, and as long as the % conditions of Clause~item~\ref{LPPL:item:conditions} above, above, are met % with regard to the Derived Work. % \item The conditions above are not intended to prohibit, and % hence do not apply to, the modification, by any method, of % any component so that it becomes identical to an updated % version of that component of the Work as it is distributed % by the Current Maintainer under Clause~item~\ref{LPPL:item:currmaint} above, above. % \item Distribution of the Work or any Derived Work in an % alternative format, where the Work or that Derived Work (in % whole or in part) is then produced by applying some process % to that format, does not relax or nullify any sections of % this license as they pertain to the results of applying that % process. % \item % \begin{enumerate} % \item A Derived Work may be distributed under a different % license provided that license itself honors the % conditions listed in Clause~item~\ref{LPPL:item:conditions} above above, in % regard to the Work, though it does not have to honor the % rest of the conditions in this license. % \item If a Derived Work is distributed under a different % license, that Derived Work must provide sufficient % documentation as part of itself to allow each recipient % of that Derived Work to honor the restrictions in % Clause~item~\ref{LPPL:item:conditions} above above, concerning % changes from the Work. % \end{enumerate} % \item This license places no restrictions on works that are % unrelated to the Work, nor does this license place any % restrictions on aggregating such works with the Work by any % means. % \item Nothing in this license is intended to, or may be used % to, prevent complete compliance by all parties with all % applicable laws. % \end{enumerate} % \subsection{No Warranty}\label{LPPL:Warranty} % There is no warranty for the Work. Except when otherwise % stated in writing, the Copyright Holder provides the Work % `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 Work is with you. Should the Work prove defective, you % assume the cost of all necessary servicing, repair, or % correction.\par % In no event unless required by applicable law or agreed to % in writing will The Copyright Holder, or any author named in the % components of the Work, or any other party who may distribute % and/or modify the Work as permitted above, be liable to you for % damages, including any general, special, incidental or % consequential damages arising out of any use of the Work or out % of inability to use the Work (including, but not limited to, % loss of data, data being rendered inaccurate, or losses % sustained by anyone as a result of any failure of the Work to % operate with any other programs), even if the Copyright Holder % or said author or said other party has been advised of the % possibility of such damages.\par % \subsection{Maintenance of The Work}\label{LPPL:Maintenance} % The Work has the status `author-maintained' % if the Copyright Holder explicitly and prominently states near % the primary copyright notice in the Work that the Work can only % be maintained by the Copyright Holder or simply that it is % `author-maintained'.\par % The Work has the status `maintained' if there % is a Current Maintainer who has indicated in the Work that they % are willing to receive error reports for the Work (for example, % by supplying a valid e-mail address). It is not required for the % Current Maintainer to acknowledge or act upon these error % reports.\par % The Work changes from status `maintained' to % `unmaintained' if there is no Current Maintainer, % or the person stated to be Current Maintainer of the work cannot % be reached through the indicated means of communication for a % period of six months, and there are no other significant signs % of active maintenance.\par % You can become the Current Maintainer of the Work by % agreement with any existing Current Maintainer to take over this % role.\par % If the Work is unmaintained, you can become the Current % Maintainer of the Work through the following steps:\par % \begin{enumerate} % \item Make a reasonable attempt to trace the Current % Maintainer (and the Copyright Holder, if the two differ) % through the means of an Internet or similar search. % \item If this search is successful, then enquire whether the % Work is still maintained. % \begin{enumerate} % \item If it is being maintained, then ask the Current % Maintainer to update their communication data within one % month. % \item \label{LPPL:item:intention}If the search is unsuccessful or no action to resume % active maintenance is taken by the Current Maintainer, % then announce within the pertinent community your % intention to take over maintenance. (If the Work is a % \LaTeX{} work, this could be done, for example, by % posting to \url{news:comp.text.tex}.) % \end{enumerate} % \item % \begin{enumerate} % \item If the Current Maintainer is reachable and agrees to % pass maintenance of the Work to you, then this takes % effect immediately upon announcement. % \item \label{LPPL:item:announce}If the Current Maintainer is not reachable and the % Copyright Holder agrees that maintenance of the Work be % passed to you, then this takes effect immediately upon % announcement. % \end{enumerate} % \item \label{LPPL:item:change}If you make an `intention announcement' % as described in~item~\ref{LPPL:item:intention} above above and after three % months your intention is challenged neither by the Current % Maintainer nor by the Copyright Holder nor by other people, % then you may arrange for the Work to be changed so as to % name you as the (new) Current Maintainer. % \item If the previously unreachable Current Maintainer becomes % reachable once more within three months of a change % completed under the terms of~item~\ref{LPPL:item:announce} above % or~item~\ref{LPPL:item:change} above, then that % Current % Maintainer must become or remain the Current Maintainer upon % request provided they then update their communication data % within one month. % \end{enumerate} % A change in the Current Maintainer does not, of itself, % alter the fact that the Work is distributed under the % \textsc{lppl} license.\par % If you become the Current Maintainer of the Work, you should % immediately provide, within the Work, a prominent and % unambiguous statement of your status as Current Maintainer. You % should also announce your new status to the same pertinent % community as in~item~\ref{LPPL:item:intention} above % above.\par % \subsection{Whether and How to Distribute Works under This % License}\label{LPPL:Distribute} % This section contains important instructions, examples, and % recommendations for authors who are considering distributing % their works under this license. These authors are addressed as % `you' in this section.\par % \subsubsection{Choosing This License or Another License}\label{LPPL:Choosing} % If for any part of your work you want or need to use % \emph{distribution} conditions that differ % significantly from those in this license, then do not refer to % this license anywhere in your work but, instead, distribute % your work under a different license. You may use the text of % this license as a model for your own license, but your license % should not refer to the \textsc{lppl} or otherwise % give the impression that your work is distributed under the % \textsc{lppl}.\par % The document {\ttfamily{}modguide.tex} in the base \LaTeX{} % distribution explains the motivation behind the conditions of % this license. It explains, for example, why distributing % \LaTeX{} under the \textsc{gnu} General Public % License (\textsc{gpl}) was considered inappropriate. % Even if your work is unrelated to \LaTeX{}, the discussion in % {\ttfamily{}modguide.tex} may still be % relevant, and authors intending to distribute their works % under any license are encouraged to read it.\par % \subsubsection{A Recommendation on Modification Without % Distribution}\label{LPPL:WithoutDistribution} % It is wise never to modify a component of the Work, even % for your own personal use, without also meeting the above % conditions for distributing the modified component. While you % might intend that such modifications will never be % distributed, often this will happen by accident~--- you may % forget that you have modified that component; or it may not % occur to you when allowing others to access the modified % version that you are thus distributing it and violating the % conditions of this license in ways that could have legal % implications and, worse, cause problems for the community. It % is therefore usually in your best interest to keep your copy % of the Work identical with the public one. Many works provide % ways to control the behavior of that work without altering any % of its licensed components.\par % \subsubsection{How to Use This License}\label{LPPL:HowTo} % To use this license, place in each of the components of % your work both an explicit copyright notice including your % name and the year the work was authored and/or last % substantially modified. Include also a statement that the % distribution and/or modification of that component is % constrained by the conditions in this license.\par % Here is an example of such a notice and statement:\par % \iffalse %<*ignore> % \fi \begin{lstlisting}[language={[LaTeX]TeX}] %%% pig.dtx %%% Copyright 2005 M. Y. Name %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 %% of this license or (at your option) any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt %% and version 1.3 or later is part of all distributions of LaTeX %% version 2005/12/01 or later. %% %% This work has the LPPL maintenance status `maintained'. %% %% The Current Maintainer of this work is M. Y. Name. %% %% This work consists of the files pig.dtx and pig.ins %% and the derived file pig.sty. \end{lstlisting} % \iffalse % % \fi % Given such a notice and statement in a file, the % conditions given in this license document would apply, with % the `Work' referring to the three files % {\ttfamily{}pig.dtx}, {\ttfamily{}pig.ins}, and {\ttfamily{}pig.sty} (the last being generated % from {\ttfamily{}pig.dtx} using {\ttfamily{}pig.ins}), the `Base % Interpreter' referring to any % `\LaTeX{}-Format', and both `Copyright % Holder' and `Current Maintainer' % referring to the person % M.~Y.~Name\index{!}.\par % If you do not want the Maintenance section of % \textsc{lppl} to apply to your Work, change % `maintained' above into % `author-maintained'. However, we recommend that % you use `maintained' as the Maintenance % section was added in order to ensure that your Work remains % useful to the community even when you can no longer maintain % and support it yourself.\par % \subsubsection{Derived Works That Are Not Replacements}\label{LPPL:NotReplacements} % Several clauses of the \textsc{lppl} specify % means to provide reliability and stability for the user % community. They therefore concern themselves with the case % that a Derived Work is intended to be used as a (compatible or % incompatible) replacement of the original Work. If this is not % the case (e.g., if a few lines of code are reused for a % completely different task), then clauses 6b and 6d shall not % apply.\par % \subsubsection{Important Recommendations}\label{LPPL:Recommendations} % \paragraph{Defining What Constitutes the Work} % The \textsc{lppl} requires that distributions % of the Work contain all the files of the Work. It is % therefore important that you provide a way for the licensee % to determine which files constitute the Work. This could, % for example, be achieved by explicitly listing all the files % of the Work near the copyright notice of each file or by % using a line such as:\par % \iffalse %<*ignore> % \fi \begin{lstlisting}[language={[LaTeX]TeX}] %% This work consists of all files listed in manifest.txt. \end{lstlisting} % \iffalse % % \fi % in that place. In the absence of an unequivocal list it % might be impossible for the licensee to determine what is % considered by you to comprise the Work and, in such a case, % the licensee would be entitled to make reasonable % conjectures as to which files comprise the Work.\par % \Finale