summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/regstats
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-01-03 00:12:57 +0000
committerKarl Berry <karl@freefriends.org>2012-01-03 00:12:57 +0000
commitcbf65851c8af3ba21e626490b1f76b35dc74c434 (patch)
treeb6fd2a089dc7cfc937312e79a7e6ce6d3f616868 /Master/texmf-dist/tex/latex/regstats
parent224a648436551066fb5b3e68c2029d6ab179d0f9 (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.sty433
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
}%
}%
}%