diff options
author | Karl Berry <karl@freefriends.org> | 2012-01-03 00:12:57 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-01-03 00:12:57 +0000 |
commit | cbf65851c8af3ba21e626490b1f76b35dc74c434 (patch) | |
tree | b6fd2a089dc7cfc937312e79a7e6ce6d3f616868 /Master/texmf-dist/tex/latex/regstats | |
parent | 224a648436551066fb5b3e68c2029d6ab179d0f9 (diff) |
regstats (2jan12)
git-svn-id: svn://tug.org/texlive/trunk@25002 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/regstats')
-rw-r--r-- | Master/texmf-dist/tex/latex/regstats/regstats.sty | 433 |
1 files changed, 238 insertions, 195 deletions
diff --git a/Master/texmf-dist/tex/latex/regstats/regstats.sty b/Master/texmf-dist/tex/latex/regstats/regstats.sty index 7dcfb48e24f..b729d234c0b 100644 --- a/Master/texmf-dist/tex/latex/regstats/regstats.sty +++ b/Master/texmf-dist/tex/latex/regstats/regstats.sty @@ -9,12 +9,12 @@ %% This is a generated file. %% %% Project: regstats -%% Version: 2011/08/23 v1.0f +%% Version: 2012/01/01 v1.0g %% -%% Copyright (C) 2011 by +%% Copyright (C) 2011 - 2012 by %% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de> %% -%% The usual disclaimer applys: +%% The usual disclaimer applies: %% If it doesn't work right that's your problem. %% (Nevertheless, send an e-mail to the maintainer %% when you find an error in this package.) @@ -33,13 +33,15 @@ %% %% The Current Maintainer of this work is H.-Martin Muench. %% -%% This work consists of the main source file regstats.dtx -%% and the derived files -%% regstats.sty, regstats.pdf, regstats.ins, regstats.drv, -%% regstats-example.tex. +%% This work consists of the main source file regstats.dtx, +%% the README, and the derived files +%% regstats.sty, regstats.pdf, +%% regstats.ins, regstats.drv, +%% regstats-example.tex, regstats-example.pdf, +%% regstats-example.log. %% \NeedsTeXFormat{LaTeX2e}[2011/06/27] -\ProvidesPackage{regstats}[2011/08/23 v1.0f +\ProvidesPackage{regstats}[2012/01/01 v1.0g Counting used registers (HMM)] %% Allows to count the number of used registers @@ -49,6 +51,7 @@ \RequirePackage{kvoptions}[2010/12/23]% v3.10 \RequirePackage{atveryend}[2011/06/30]% v1.8 +\RequirePackage{ltxcmds}[2011/04/18]% v1.20 %% regstats may work with earlier versions of LaTeX and these %% packages, but this was not tested. Please consider updating @@ -64,189 +67,249 @@ \ifregstats@proof \PackageInfo{regstats}{% - This package will use one of each kind of register itself!\MessageBreak% + This package will use one of each kind of register itself!% + \MessageBreak% (And other packages used by this package\MessageBreak% probably use additional resources,\MessageBreak% if those packages are not used anyway.)\MessageBreak% } \else \PackageInfo{regstats}{% - This package will use one counter itself!\MessageBreak% - (And other packages used by this package\MessageBreak% - probably use additional resources,\MessageBreak% - if those packages are not used anyway.)\MessageBreak% + This package will not use registers itself,\MessageBreak% + but packages used by this package\MessageBreak% + (and packages loaded by those packages)\MessageBreak% + use additional resources,\MessageBreak% + if those packages are not used anyway.\MessageBreak% } \fi \ifregstats@timer - \RequirePackage{intcalc}[2007/09/27]% v1.1 + \RequirePackage{intcalc}[2007/09/27]% v1.1 + \RequirePackage{ifluatex}[2010/03/01]% v1.3 + \RequirePackage{ifpdf}[2011/01/30]% v2.3 \fi -\@ifl@t@r\fmtversion{2011/06/27}% - {\@ifpackagelater{atveryend}{2011/06/29}% - {% 2011/06/30, v1.8, or even more recent - }{% older version - \PackageError{regstats}{Outdated atveryend package}% - {You use \fmtname \space <\fmtversion>, but only \MessageBreak% - `\csname ver@atveryend.\@currext\endcsname',\MessageBreak% - which is incompatibel with \fmtname \space <\fmtversion>.\MessageBreak% - Please update your atveryend package!\MessageBreak% - The regstats package now replaces \string\AtVeryVeryEnd \MessageBreak% - by \string\AtEndAfterFileList.\MessageBreak% - }% - \let\AtVeryVeryEnd\AtEndAfterFileList% - }% - }{% - } - -\AtBeginDocument{% - \newif\ifetex - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname eTeXversion\endcsname\relax - \etexfalse +\ifregstats@timer +\newcommand{\regst@ts@timer}{% + \message{^^J} + \ifluatex + \@tempcnta=% + \directlua{ + if starttime then + tex.sprint((os.clock()-starttime)*65536) + else + tex.sprint(0) + end + }\relax + \ifnum \the\@tempcnta = 0 + \PackageError{regstats}{Did you forget to start the timer?}{% + Before \string\documentclass\space you need to say% + \MessageBreak% + \string\directlua{starttime = os.clock()} \MessageBreak% + } + \fi \else - \@ifpackageloaded{etex}{\etextrue}{\etexfalse} + \ifpdf + \@tempcnta=\the\pdfelapsedtime\relax + \else + \PackageError{regstats}{Option timer only works with pdf(la)tex% + \MessageBreak% + and with lua(la)tex}{% + Neither appear to be used here. Announced compilation time % + will be zero. + } + \@tempcnta=0\relax + \fi \fi - \ifetex - \PackageInfo{regstats}{e-TeX found.} + \edef\regstatselapsedtime{\the\@tempcnta} + \divide \@tempcnta by 65536% scaledseconds -> seconds + \edef\regstatsseconds{\the\@tempcnta} + \ifnum \regstatsseconds > 59 + \edef\regstatsseconds{\intcalcMod{\the\@tempcnta}{60}} + \divide \@tempcnta by 60% seconds -> minutes \else - \PackageWarning{regstats}{Could not find e-TeX.\MessageBreak% - That can mean that e-TeX was disabled or\MessageBreak% - that your distribution of TeX does not contain e-TeX\MessageBreak% - or that you forgot to say \string\usepackage{etex}\MessageBreak% - in the preamble of \jobname.tex.\MessageBreak% - Some packages will not work without e-TeX,\MessageBreak% - but should give according messages.\MessageBreak% - } + \@tempcnta=0\relax% minutes = 0 \fi + \ifnum \regstatsseconds < 10 + \message{Time elapsed for the last compiler run:^^J% + about \the\@tempcnta:0\regstatsseconds\space% + (m:ss; \regstatselapsedtime /65536 s).^^J} + \else + \message{Time elapsed for the last compiler run:^^J% + about \the\@tempcnta:\regstatsseconds \space% + (m:ss; \regstatselapsedtime /65536 s).^^J} + \fi + } +\else +\newcommand{\regst@ts@timer}{\relax} +\fi + +\let\regst@ts@statistics\AtVeryVeryEnd% + +\@ifl@t@r\fmtversion{2011/06/27}% or possibly even newer +{\@ifpackagelater{atveryend}{2011/06/29}% + {% 2011/06/30, v1.8, or even more recent: OK + }{% else: older package version, no \AtVeryVeryEnd + \let\regst@ts@statistics\ltx@firstofone% + } +}{% else: older fmtversion: OK +} - \AtEndDocument{% - \BeforeClearDocument{% - \AfterLastShipout{% - \AtVeryEndDocument{% - \AtEndAfterFileList{% - \AtVeryVeryEnd{% +\AtBeginDocument{% + \AtEndDocument{% + \BeforeClearDocument{% + \AfterLastShipout{% + \AtVeryEndDocument{% + \AtEndAfterFileList{% + \ltx@ifclassloaded{seminar}{% no \AtVeryVeryEnd + \let\regst@ts@statistics\ltx@firstofone% + }{% else + \ltx@ifpackageloaded{slidesec}{% no \AtVeryVeryEnd + \let\regst@ts@statistics\ltx@firstofone% + }{% else: OK + }% + }% + \regst@ts@statistics{% + \ltx@ifpackageloaded{etex}{% + \PackageInfo{regstats}{e-TeX-package found.} + }{% else + \PackageWarning{regstats}{Could not find the e-TeX-package.% + \MessageBreak% + That can mean that e-TeX was disabled or\MessageBreak% + that your distribution of TeX does not contain e-TeX% + \MessageBreak% + or that you simply forgot to say \string\usepackage{etex}% + \MessageBreak% + in the preamble of \jobname.tex.\MessageBreak% + The number of available counter, dimen, skip,\MessageBreak% + muskip, box, and toks registers as well as the\MessageBreak% + number of insertions would be larger when using% + \MessageBreak% + the e-TeX-package.% + } + } \def\regstats@lft{}% \newcommand{\regstats@regstat}[5]{% - \setcounter{regstatscount}{#1} - \ifnum \value{regstatscount}=0 - \setcounter{regstatscount}{2} - \fi - \ifnum \value{regstatscount}>1 - \gdef\regstats@pl{#3} - \else - \gdef\regstats@pl{#2} - \fi - \ifetex\edef\regstats@max{#5}\else\edef\regstats@max{#4}\fi - \ifregstats@left - \setcounter{regstatscount}{\regstats@max} - \addtocounter{regstatscount}{-#1} - \ifnum \value{regstatscount}>0 - \edef\regstats@lft{, left: \arabic{regstatscount}} + \@tempcnta=#1 \relax + \ifnum \the\@tempcnta = 0 + \@tempcnta=2 \relax + \fi + \ifnum \the\@tempcnta > 1 + \gdef\regstats@pl{#3} \else - \ifnum \value{regstatscount}=0 - \edef\regstats@lft{, left: \arabic{regstatscount} !!!} - \else% \value{regstatscount}<0 - \edef\regstats@lft{, left: \arabic{regstatscount} **********} + \gdef\regstats@pl{#2} + \fi + \ltx@ifpackageloaded{etex}{\edef\regstats@max{#5}}{% + \edef\regstats@max{#4}} + \ifregstats@left + \@tempcnta=\regstats@max \relax + \advance\@tempcnta by -#1% + \ifnum \the\@tempcnta > 0 + \edef\regstats@lft{, left: \the\@tempcnta} + \else + \ifnum \the\@tempcnta = 0 + \edef\regstats@lft{, left: \the\@tempcnta !!!} + \else% \the\@tempcnta < 0 + \edef\regstats@lft{, left: \the\@tempcnta **********} + \fi \fi \fi - \fi - } - \newcounter{regstatscount} - \edef\regstats@counter{\the\allocationnumber} - \ifregstats@proof - \PackageWarning{regstats}{% - Package regstats loaded with option 'proof'.\MessageBreak% - This package itself will now use\MessageBreak% - one of each register for testing!% - }% - \def\regstats@proof{1} - \edef\regstats@test{\the\count10} - \ifx\regstats@counter\regstats@test - \else - \message{Discrepancy when counting count registers.^^J} - \def\regstats@proof{0} - \fi - \newdimen{\regstatsdimen} - \edef\regstats@dimen{\the\allocationnumber} - \edef\regstats@test{\the\count11} - \ifx\regstats@dimen\regstats@test - \else - \message{Discrepancy when counting dimen registers.^^J} - \def\regstats@proof{0} - \fi - \newskip\regstatsskip - \edef\regstats@skip{\the\allocationnumber} - \edef\regstats@test{\the\count12} - \ifx\regstats@skip\regstats@test - \else - \message{Discrepancy when counting skip registers.^^J} - \def\regstats@proof{0} - \fi - \newmuskip\regstatsmuskip - \edef\regstats@muskip{\the\allocationnumber} - \edef\regstats@test{\the\count13} - \ifx\regstats@muskip\regstats@test - \else - \message{Discrepancy when counting muskip registers.^^J} - \def\regstats@proof{0} - \fi - \newbox\regstatsbox - \edef\regstats@box{\the\allocationnumber} - \edef\regstats@test{\the\count14} - \ifx\regstats@box\regstats@test - \else - \message{Discrepancy when counting box registers.^^J} - \def\regstats@proof{0} - \fi - \newtoks\regstatstoks - \edef\regstats@toks{\the\allocationnumber} - \edef\regstats@test{\the\count15} - \ifx\regstats@toks\regstats@test - \else - \message{Discrepancy when counting toks registers.^^J} - \def\regstats@proof{0} - \fi - \newread\regstatsread - \edef\regstats@read{\the\allocationnumber} - \edef\regstats@test{\the\count16} - \ifx\regstats@read\regstats@test - \else - \message{Discrepancy when counting read registers.^^J} - \def\regstats@proof{0} - \fi - \newwrite\regstatswrite - \edef\regstats@write{\the\allocationnumber} - \edef\regstats@test{\the\count17} - \ifx\regstats@write\regstats@test - \else - \message{Discrepancy when counting write registers.^^J} - \def\regstats@proof{0} - \fi - \newfam\regstatsfam - \edef\regstats@fam{\the\allocationnumber} - \edef\regstats@test{\the\count18} - \ifx\regstats@fam\regstats@test - \else - \message{Discrepancy when counting fam registers.^^J} - \def\regstats@proof{0} - \fi - \newlanguage\regstatslanguage - \edef\regstats@language{\the\allocationnumber} - \edef\regstats@test{\the\count19} - \ifx\regstats@language\regstats@test - \else - \message{Discrepancy when counting language registers.^^J} - \def\regstats@proof{0} - \fi - \newinsert\regstatsinsert - \edef\regstats@insert{\the\allocationnumber} - \edef\regstats@test{\the\count20} - \ifx\regstats@insert\regstats@test - \else - \message{Discrepancy when counting insert registers.^^J} - \def\regstats@proof{0} - \fi + } + \ifregstats@proof + \PackageWarning{regstats}{% + Package regstats loaded with option 'proof'.\MessageBreak% + This package itself will now use\MessageBreak% + one of each register for testing!\MessageBreak% + }% + \def\regstats@proof{1} + \newcounter{regstatscount} + \edef\regstats@counter{\the\allocationnumber} + \edef\regstats@test{\the\count10} + \ifx\regstats@counter\regstats@test + \else + \message{Discrepancy when counting count registers.^^J} + \def\regstats@proof{0} + \fi + \newdimen{\regstatsdimen} + \edef\regstats@dimen{\the\allocationnumber} + \edef\regstats@test{\the\count11} + \ifx\regstats@dimen\regstats@test + \else + \message{Discrepancy when counting dimen registers.^^J} + \def\regstats@proof{0} + \fi + \newskip\regstatsskip + \edef\regstats@skip{\the\allocationnumber} + \edef\regstats@test{\the\count12} + \ifx\regstats@skip\regstats@test + \else + \message{Discrepancy when counting skip registers.^^J} + \def\regstats@proof{0} + \fi + \newmuskip\regstatsmuskip + \edef\regstats@muskip{\the\allocationnumber} + \edef\regstats@test{\the\count13} + \ifx\regstats@muskip\regstats@test + \else + \message{Discrepancy when counting muskip registers.^^J} + \def\regstats@proof{0} + \fi + \newbox\regstatsbox + \edef\regstats@box{\the\allocationnumber} + \edef\regstats@test{\the\count14} + \ifx\regstats@box\regstats@test + \else + \message{Discrepancy when counting box registers.^^J} + \def\regstats@proof{0} + \fi + \newtoks\regstatstoks + \edef\regstats@toks{\the\allocationnumber} + \edef\regstats@test{\the\count15} + \ifx\regstats@toks\regstats@test + \else + \message{Discrepancy when counting toks registers.^^J} + \def\regstats@proof{0} + \fi + \newread\regstatsread + \edef\regstats@read{\the\allocationnumber} + \edef\regstats@test{\the\count16} + \ifx\regstats@read\regstats@test + \else + \message{Discrepancy when counting read registers.^^J} + \def\regstats@proof{0} + \fi + \newwrite\regstatswrite + \edef\regstats@write{\the\allocationnumber} + \edef\regstats@test{\the\count17} + \ifx\regstats@write\regstats@test + \else + \message{Discrepancy when counting write registers.^^J} + \def\regstats@proof{0} + \fi + \newfam\regstatsfam + \edef\regstats@fam{\the\allocationnumber} + \edef\regstats@test{\the\count18} + \ifx\regstats@fam\regstats@test + \else + \message{Discrepancy when counting fam registers.^^J} + \def\regstats@proof{0} + \fi + \newlanguage\regstatslanguage + \edef\regstats@language{\the\allocationnumber} + \edef\regstats@test{\the\count19} + \ifx\regstats@language\regstats@test + \else + \message{Discrepancy when counting language registers.^^J} + \def\regstats@proof{0} + \fi + \newinsert\regstatsinsert + \edef\regstats@insert{\the\allocationnumber} + \edef\regstats@test{\the\count20} + \ifx\regstats@insert\regstats@test + \else + \message{Discrepancy when counting insert registers.^^J} + \def\regstats@proof{0} + \fi \edef\regstats@test{0} \ifx\regstats@proof\regstats@test \message{Regstats test for register numbers failed.^^J} @@ -254,6 +317,7 @@ right numbers.^^J} \fi \else + \edef\regstats@counter{\the\count10} \edef\regstats@dimen{\the\count11} \edef\regstats@skip{\the\count12} \edef\regstats@muskip{\the\count13} @@ -265,10 +329,10 @@ \edef\regstats@language{\the\count19} \edef\regstats@insert{\the\count20} \fi - \setcounter{regstatscount}{233} - \addtocounter{regstatscount}{-\regstats@insert} - \addtocounter{regstatscount}{+1} - \edef\regstats@insert{\arabic{regstatscount}} + \@tempcnta = 233 \relax + \advance\@tempcnta by -\regstats@insert% + \advance\@tempcnta by +1% + \edef\regstats@insert{\the\@tempcnta} \message{^^J} \message{Here is how much of TeX's registers you used^^J}% \message{\space (numbers of available registers are estimated!):^^J}% @@ -294,28 +358,7 @@ \message{ \regstats@language\space language code\regstats@pl\space out of \regstats@max \regstats@lft ^^J} \regstats@regstat{\regstats@insert}{}{s}{101}{124} \message{ \regstats@insert\space insertion\regstats@pl\space out of \regstats@max \regstats@lft ^^J} - \ifregstats@timer - \message{^^J} - \setcounter{regstatscount}{\the\pdfelapsedtime} - \edef\regstatselapsedtime{\arabic{regstatscount}} - \divide \value{regstatscount} by 65536% scaledseconds -> seconds - \edef\regstatsseconds{\arabic{regstatscount}} - \ifnum \value{regstatscount} > 59 - \edef\regstatsseconds{\intcalcMod{\value{regstatscount}}{60}} - \divide \value{regstatscount} by 60% seconds -> minutes - \else - \setcounter{regstatscount}{0}% minutes = 0 - \fi - \ifnum \regstatsseconds < 10 - \message{Time elapsed for the last compiler run:^^J% - about \arabic{regstatscount}:0\regstatsseconds\space% - (m:ss; \regstatselapsedtime /65536 s).^^J} - \else - \message{Time elapsed for the last compiler run:^^J% - about \arabic{regstatscount}:\regstatsseconds \space% - (m:ss; \regstatselapsedtime /65536 s).^^J} - \fi - \fi + \regst@ts@timer }% }% }% |