From 40fe9708662f86fa78b25ecc2a94b477c1d9bf89 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Sun, 29 Jul 2012 16:57:52 +0000
Subject: autonum (23jun12)

git-svn-id: svn://tug.org/texlive/trunk@27224 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/tex/latex/autonum/autonum.sty | 204 +++++++++++++++++++-----
 1 file changed, 161 insertions(+), 43 deletions(-)

(limited to 'Master/texmf-dist/tex/latex/autonum/autonum.sty')

diff --git a/Master/texmf-dist/tex/latex/autonum/autonum.sty b/Master/texmf-dist/tex/latex/autonum/autonum.sty
index 303aa4f89c7..cb9833848fe 100644
--- a/Master/texmf-dist/tex/latex/autonum/autonum.sty
+++ b/Master/texmf-dist/tex/latex/autonum/autonum.sty
@@ -13,30 +13,73 @@
 %% ----------------------------------------------------------------
 %% 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{autonum}[2012/05/26 v0.1 autonum LaTeX package]
+\ProvidesPackage{autonum}[2012/06/21 v0.2 autonum LaTeX package]
+\PassOptionsToPackage{hypertexnames=false}{hyperref}
 \RequirePackage{etoolbox}
+\RequirePackage{amsmath}
+\RequirePackage[absolute]{textpos}
 
-\newcommand{\csxdefaux}[2]{%
+\def\csxdefaux#1#2{%
 \protected@write\@mainaux{}{%
 \expandafter\string\expandafter\xdef\expandafter\string\csname #1\endcsname{#2}%
 }%
 }
 
-\newcommand{\csxdefall}[2]{%
+\def\csxdefall#1#2{%
 \csxdefaux{#1}{#2}%
 \csxdef{#1}{#2}%
 }
 
-\newcounter{autonum@counter}
+\def\ifcsedef#1#2#3{%
+\edef\autonum@ifcsedefTemp{#1}%
+\expandafter\ifcsdef\expandafter{\autonum@ifcsedefTemp}{#2}{#3}%
+\undef{\autonum@ifcsedefTemp}%
+}
 
-\newcommand{\autonum@patchEnvironment}[1]{
-\csletcs{autonum@#1Old}{#1}%
-\csletcs{autonum@end#1Old}{end#1}%
-\autonum@saveOldEnvironment{#1}%
+\AtBeginDocument{%
+\forcsvlist{\autonum@patchFullEnvironment}{equation,gather,multline,align}%
+\def\[#1\]{%
+\begin{equation}#1\end{equation}%
+}%
+\autonum@generatePatchedReference{ref}%
+\ifdef{\cref}{%
+\autonum@generatePatchedReference{cref}%
+}{}%
+}
+
+\def\autonum@patchFullEnvironment#1{%
+\autonum@saveEnvironmentSubcommands{#1}{center}%
+\autonum@patchEnvironmentHelper{#1}%
+}
+\def\autonum@patchBlockEnvironment#1{%
+\autonum@saveEnvironmentSubcommands{#1}{equation*}%
+\autonum@patchEnvironmentHelper{#1}%
+}
+\def\autonum@patchEnvironmentHelper#1{%
+\autonum@renameEnvironment{#1}%
 \autonum@changeEnvironment{#1}%
+\autonum@generatePatchedLabel{#1}%
+\autonum@generatePatchedNewline{#1}%
 }
 
-\newcommand{\autonum@saveOldEnvironment}[1]{
+\def\autonum@saveEnvironmentSubcommands#1#2{%
+\begin{textblock}{1}[1,1](0,0)%
+\begin{#2}
+\begin{#1}%
+\global\cslet{autonum@newline#1}\\%
+\notag%
+\ifboolexpr{not test {\ifstrequal{#1}{multline}} or test {\ifcsundef{autonum@label#1}}}{%
+\global\cslet{autonum@label#1}{\label}%
+}%
+\notag%
+\end{#1}%
+\end{#2}
+\end{textblock}%
+}
+
+\def\autonum@renameEnvironment#1{%
+\csletcs{autonum@#1Old}{#1}%
+\csletcs{autonum@end#1Old}{end#1}%
 \newenvironment{#1+}{%
 \csuse{autonum@#1Old}%
 }{%
@@ -44,61 +87,136 @@
 }%
 }
 
-\newcommand{\autonum@changeEnvironment}[1]{
+\def\autonum@changeEnvironment#1{%
 \renewenvironment{#1}{%
-\autonum@IfReferenced{\Roman{autonum@counter}}{%
+\autonum@saveSubcommands
 \csuse{autonum@#1Old}%
+\autonum@patchSubcommands{#1}%
 }{%
-\begin{#1*}%
-}%
-}{%
-\autonum@IfReferenced{\Roman{autonum@counter}}{%
+\autonum@possiblyHideNumber
 \csuse{autonum@end#1Old}%
-}{%
-\end{#1*}%
-\ignorespacesafterend
+\autonum@restoreSubcommands
 }%
-\stepcounter{autonum@counter}%
+\global\csundef{#1*}%
+\global\csundef{end#1*}%
+}
+
+\def\autonum@saveSubcommands{%
+\let\autonum@labelNormal\label%
+\let\autonum@newlineNormal\\%
+}
+
+\def\autonum@patchSubcommands#1{%
+\global\letcs{\label}{autonum@patched#1Label}%
+\ifstrequal{#1}{multline}{%
+}{%
+  \global\letcs{\\}{autonum@patched#1Newline}%
 }%
 }
 
-\AfterPreamble{
-\autonum@patchEnvironment{equation}
-%%  \forcsvlist{\autonum@patchEnvironment}{gather,multline,align.flalign,alignat}
+\def\autonum@restoreSubcommands{%
+\global\let\label\autonum@labelNormal%
+\global\let\\\autonum@newlineNormal%
+}
 
-\ifcsundef{equation*}{%
-\newenvironment{equation*}{\[}{\]}%
+\def\autonum@generatePatchedLabel#1{%
+\csdef{autonum@patched#1Label}##1{%
+\ifdef{\autonum@currentLabel}{%
+\PackageError{autonum}{Two succeeding \string\label's detected}{Did you forget a \string\\?}%
+}{%
+\def\autonum@currentLabel{##1}%
+}%
+\ifcsedef{autonum@##1Referenced}{%
+\let\df@label\@empty%
+\csuse{autonum@label#1}{##1}%
 }{}
+}%
+}
+
+\def\autonum@generatePatchedNewline#1{%
+\csdef{autonum@patched#1Newline}{%
+\autonum@possiblyHideNumber
+\csuse{autonum@newline#1}%
+}
+}
 
-\newcommand{\autonum@IfReferenced}[3]{%
-\ifcsdef{autonum@#1Referenced}{#2}{#3}%
+\def\autonum@possiblyHideNumber{
+\ifdef{\autonum@currentLabel}{%
+\ifcsedef{autonum@\csuse{autonum@currentLabel}Referenced}{%
+}{%
+\notag%
+}
+}{%
+\notag%
+}%
 }
 
-\newcommand{\autonum@patchLabel}[1]{%
-\letcs{\autonum@labelOld}{#1}%
+\def\autonum@generatePatchedReference#1{%
+\csletcs{autonum@reference#1Old}{#1}%
 \csdef{#1}##1{%
-\csxdefall{autonum@##1Labeled}{\Roman{autonum@counter}}%
-\autonum@labelOld{##1}%
+\csxdefall{autonum@##1Referenced}{}%
+\csuse{autonum@reference#1Old}{##1}%
 }%
 }
-\ifdef{\label@in@display}{%
-\autonum@patchLabel{label@in@display}%
+
+\newcounter{autonum@counter}
+\def\autonum@patchShortcutEnvironment{%
+\def\[##1\]{%
+\ifcsedef{autonum@\Roman{autonum@counter}HasExactlyOneLine}{%
+\autonum@useWithMultipleLineDetection{equation}{##1}%
 }{%
-\autonum@patchLabel{label}%
+\autonum@useWithMultipleLineDetection{align}{##1}%
+}%
+\stepcounter{autonum@counter}%
+}%
 }
 
-\newcommand{\autonum@patchReference}[1]{%
-\letcs{\autonum@referenceOld}{#1}%
-\csdef{#1}##1{%
-\ifcsdef{autonum@##1Labeled}{%
-\csxdefall{autonum@\csuse{autonum@##1Labeled}Referenced}{}%
-}{}%
-\autonum@referenceOld{##1}%
+\def\autonum@useWithMultipleLineDetection#1#2{%
+\begin{#1}%
+\autonum@patchParentheses
+\global\let\autonum@patchedNewline\\%
+\ifstrequal{#1}{align}{%
+\gdef\\{%
+\autonum@patchedNewline
+\gdef\autonum@multipleLines{}%
+}%
+}{%
+\gdef\\{%
+\gdef\autonum@multipleLines{}%
 }%
 }
-\autonum@patchReference{ref}%
-\ifdef{\cref}{%
-\autonum@patchReference{cref}%
+#2%
+\global\let\\\autonum@patchedNewline%
+\ifdef{\autonum@multipleLines}{%
+\global\undef{\autonum@multipleLines}%
+}{%
+\csxdefaux{autonum@\Roman{autonum@counter}HasExactlyOneLine}{\Roman{autonum@counter}}%
+}%
+\autonum@restoreParentheses
+\end{#1}%
+}
+
+\global\def\autonum@patchParentheses{%
+\autonum@patchParenthesis{(}{Left}{}%
+\autonum@patchParenthesis{)}{Right}{end}%
+}
+
+\global\def\autonum@patchParenthesis#1#2#3{%
+\ifcsdef{#1}{%
+\global\csletcs{autonum@old#2Parenthesis}{#1}%
+}{}%
+\global\csletcs{#1}{#3split}%
+}
+
+\global\def\autonum@restoreParentheses{%
+\autonum@restoreParenthesis{(}{Left}%
+\autonum@restoreParenthesis{)}{Right}%
+}
+
+\global\def\autonum@restoreParenthesis#1#2{%
+\ifcsdef{autonum@old#2Parenthesis}{%
+\global\csletcs{#1}{autonum@old#2Parenthesis}%
+\global\csundef{autonum@old#2Parenthesis}%
 }{}%
 }
 
-- 
cgit v1.2.3

