summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/sepfootnotes/sepfootnotes.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-01-21 00:04:18 +0000
committerKarl Berry <karl@freefriends.org>2013-01-21 00:04:18 +0000
commit2bc4b75f9c1e05e394bbfc9c298b2506223b1451 (patch)
tree8655a714c8600f42180fee89b886ee6145742d60 /Master/texmf-dist/tex/latex/sepfootnotes/sepfootnotes.sty
parent57efe333991905d9fd5ba8ef1ee7ce110cdf4b83 (diff)
sepfootnotes (19jan13)
git-svn-id: svn://tug.org/texlive/trunk@28885 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/sepfootnotes/sepfootnotes.sty')
-rw-r--r--Master/texmf-dist/tex/latex/sepfootnotes/sepfootnotes.sty195
1 files changed, 82 insertions, 113 deletions
diff --git a/Master/texmf-dist/tex/latex/sepfootnotes/sepfootnotes.sty b/Master/texmf-dist/tex/latex/sepfootnotes/sepfootnotes.sty
index 2571daf0ee5..31e8be64fd4 100644
--- a/Master/texmf-dist/tex/latex/sepfootnotes/sepfootnotes.sty
+++ b/Master/texmf-dist/tex/latex/sepfootnotes/sepfootnotes.sty
@@ -1,12 +1,4 @@
-%%
-%% This is file `sepfootnotes.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% sepfootnotes.dtx (with options: `package')
-%%
-%% Copyright (C) 2012 Eduardo C. Lourenço de Lima
+%% Copyright (C) 2013 Eduardo C. Lourenço de Lima
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -19,111 +11,88 @@
%% version 2005/12/01 or later.
%%
\NeedsTeXFormat{LaTeX2e}[1996/06/01]
-\ProvidesPackage{sepfootnotes}[2012/03/06 v0.1 Footnotes in separate file]
-\newcommand\@SFnNamespace{Notes@}
-\newcommand\@SFnNew [1]{%
- \newcounter{#1}%
- \expandafter
- \newcommand\csname #1notecontent\endcsname [2]
- {\@SFnStoreText {#1} {##1} {##2}}%
- \expandafter
- \newcommand\csname #1noteref\endcsname [1]
- {\@SFnGetReference {#1} {##1}}%
- \expandafter
- \newcommand\csname #1nmark\endcsname
- {\csname the#1\endcsname}}%
-\newcommand\newfootnotes [1]
- {\@SFnNew{#1}%
- \expandafter
- \newcommand\csname #1notemark\endcsname [1]
- {\@SFnInsertMark {#1} {##1}}%
- \expandafter
- \newcommand\csname #1notetext\endcsname [1]
- {\@SFnSetMark {#1}%
- \@SFnTypesetText {#1} {##1}}
- \expandafter
- \newcommand\csname #1note\endcsname [1]
- {\csname #1notemark\endcsname{##1}%
- \csname #1notetext\endcsname{##1}}}
-\newcommand\newsymbolfootnotes [2][page]
- {\newfootnotes {#2}%
- \@addtoreset {#2} {#1}%
- \expandafter
- \renewcommand\csname #2nmark\endcsname
- {\fnsymbol {#2}}}
+\ProvidesPackage{sepfootnotes}[2013/01/17 v0.2 Footnotes in separate file]
+
+\newcommand\sep@packagename{sepfootnotes}
+
+% ********************************* Public ************************************
+
+% ==================== shared by footnotes and endnotes =======================
+
+\newcommand\sep@new [1]
+{\newcounter{#1note}%
+ \expandafter\newcommand\csname #1note\endcsname [1] {\csname #1notemark\endcsname{##1}\csname #1notetext\endcsname{##1}}%
+ \expandafter\newcommand\csname #1notecontent\endcsname [2] {\sep@namedef {#1} {##1} {##2}}%
+ \expandafter\newcommand\csname print#1note\endcsname [1] {\sep@nameuse {#1} {##1}}%
+ \expandafter\newcommand\csname the#1mark\endcsname {\csname the#1note\endcsname}}%
+
+% -------------------------------- footnotes ----------------------------------
+
+\newcommand\newfootnotes{\@ifstar\sep@newfootnotesfree\sep@newfootnotes}
+
+\newcommand\sep@newfootnotes [1]
+{\sep@new{#1}%
+ \expandafter\renewcommand\csname #1note\endcsname [1] {\footnote {\csname print#1note\endcsname{##1}}}%
+ \expandafter\newcommand\csname #1notetext\endcsname [1] {\footnotetext {\csname print#1note\endcsname{##1}}}%
+ \expandafter\newcommand\csname #1notemark\endcsname [1] {\footnotemark}%
+ \expandafter\renewcommand\csname the#1mark\endcsname {\thefootnote}}
+
+\newcommand\sep@newfootnotesfree [1]
+{\sep@new{#1}%
+ \expandafter\newcommand\csname #1notemark\endcsname [1] {\sep@mark {#1} {##1}}%
+ \expandafter\newcommand\csname #1notetext\endcsname [1] {\sep@markset {#1}\@footnotetext{\csname print#1note\endcsname {##1}}}}
+
+\newcommand\newsymbolfootnotes [2] [page]
+{\newfootnotes* {#2}%
+ \@addtoreset {#2note} {#1}%
+ \expandafter\renewcommand\csname the#2mark\endcsname {\fnsymbol {#2note}}}
+
+% -------------------------------- endnotes -----------------------------------
+
\newcommand\newendnotes [1]
- {\@SFnNew {#1}%
- \@SFnOpenFileOut {#1}%
- \expandafter
- \newcommand\csname #1notemark\endcsname [1]
- {\@SFnInsertMark {#1} {##1}%
- \@SFnWriteToFile {#1} {##1}}%
- \expandafter
- \newcommand\csname #1note\endcsname [1]
- {\csname #1notemark\endcsname {##1}}%
- \expandafter
- \newcommand\csname #1notetext\endcsname [1]
- {\csname #1endnotemark\endcsname
- {\@SFnGetReference {#1} {##1}}%
- \@SFnRetrieveText {#1} {##1}\par}%
- \expandafter
- \newcommand\csname #1notes\endcsname
- {\@SFnCloseFile {#1}%
- \begin{#1endnotes}
- \input\@SFnFileName{#1}%
- \end{#1endnotes}}%
- \expandafter
- \newcommand\csname #1endnotemark\endcsname [1]
- {\noindent\makebox[0pt][r]{\mbox{{\normalfont ##1.\,}}}}
- \newenvironment{#1endnotes}
- {\footnotesize\setlength\parskip\footnotesep}
- {}}%
-\newcommand\@SFnFileName [1]
- {\jobname.notes-#1}
-\newcommand\@SFnOpenFileOut [1]
- {\expandafter\newwrite\csname @SFnFileOut#1\endcsname
- \immediate\expandafter\openout
- \csname @SFnFileOut#1\endcsname=\@SFnFileName#1\relax}
-\newcommand\@SFnWriteToFile [2]
- {\immediate\write\csname @SFnFileOut#1\endcsname
- {\expandafter\string\csname #1notetext\endcsname
- {#2}}}%
-\newcommand\@SFnCloseFile [1]
- {\immediate\expandafter
- \closeout\csname @SFnFileOut#1\endcsname\relax}
-\newcommand\@SFnStoreText [3]
- {\@ifundefined{\@SFnNamespace text@#1@#2}
- {\@SFnNameDef {#1} {#2} {#3}}
- {\PackageError
- {\@SFnPackageName}
- {`#1' is already in use.}
- {The note identifier `#1' already identifies a piece of
- text.\MessageBreak Solution: Use another identifier.}}}
-\newcommand\@SFnRetrieveText [2]
- {\@ifundefined{\@SFnNamespace text@#1@#2}
- {}
- {\@SFnNameUse {#1} {#2}}}
-\newcommand\@SFnTypesetText [2]
- {\@footnotetext{\@SFnRetrieveText {#1} {#2}}}
-\newcommand\@SFnInsertMark [2]
- {\@SFnStepCounter {#1}%
- \@SFnSetReference {#1} {#2}%
- \@SFnSetMark {#1}%
- \@SFnTypesetMark}
-\newcommand\@SFnSetMark [1]
- {\protected@xdef\@thefnmark{\csname #1nmark\endcsname}}
-\newcommand\@SFnTypesetMark
- {\@footnotemark}
-\newcommand\@SFnSetReference [2]
- {\label{\@SFnNamespace refs@#1@#2}}
-\newcommand\@SFnGetReference [2]
- {\ref{\@SFnNamespace refs@#1@#2}}
-\newcommand\@SFnStepCounter [1]
- {\refstepcounter{#1}}
-\newcommand\@SFnNameDef [3]
- {\@namedef{\@SFnNamespace text@#1@#2}{#3}}
-\newcommand\@SFnNameUse [2]
- {\@nameuse{\@SFnNamespace text@#1@#2}}
+{\sep@new {#1}%
+ \sep@openout {#1}%
+ \expandafter\newcommand\csname #1notemark\endcsname [1] {\sep@mark {#1} {##1}}%
+ \expandafter\newcommand\csname #1notetext\endcsname [1] {\sep@markset {#1}\sep@write {#1} {\expandafter\noexpand\csname do#1note\endcsname{\arabic{#1note}}{\unexpanded{##1}}}}%
+ \expandafter\newcommand\csname addto#1notes\endcsname [1] {\sep@write {#1} {\unexpanded{##1}}}%
+ \expandafter\newcommand\csname the#1notes\endcsname {\sep@close {#1}\setcounter {#1note} {0}\begin{#1notes}\input\sep@filename{#1}\end{#1notes}}%
+ \expandafter\newcommand\csname make#1mark\endcsname {\hbox{\normalfont\csname the#1mark\endcsname.\ }}%
+ \expandafter\newcommand\csname #1noteformat\endcsname {\noindent\rightskip\z@ \leftskip\z@ \leavevmode\llap{\csname make#1mark\endcsname}}%
+ \expandafter\newcommand\csname do#1note\endcsname [2] {\sep@refsetcounter{#1note}{##1}\par\csname #1noteformat\endcsname\csname print#1note\endcsname{##2}\par}%
+ \expandafter\newcommand\csname #1notesize\endcsname {\footnotesize}
+ \newenvironment {#1notes} {\csname #1notesize\endcsname\setlength\parskip\footnotesep} {}}
+
+
+% ********************************* Private ***********************************
+
+% ---------------------------------- files ------------------------------------
+
+\newcommand\sep@filename [1] {\jobname.ent-#1}
+\newcommand\sep@openout [1] {\expandafter \newwrite\csname sep@fileout#1\endcsname\immediate\expandafter\openout\csname sep@fileout#1\endcsname=\sep@filename#1\relax}
+\newcommand\sep@write [2] {\immediate \write\csname sep@fileout#1\endcsname {#2}}%
+\newcommand\sep@close [1] {\immediate\expandafter\closeout\csname sep@fileout#1\endcsname\relax}
+
+% ---------------------------------- table ------------------------------------
+
+\newcommand\sep@nameuse [2] {\@ifundefined{sepfootnotes@text@#1@#2} {} {\@nameuse{sepfootnotes@text@#1@#2}}}
+\newcommand\sep@namedef [3] {\@ifundefined{sepfootnotes@text@#1@#2} {\@namedef{sepfootnotes@text@#1@#2}{#3}} {\PackageError {\sep@packagename} {`#2' is already in use} {The key `#2' already identifies a note content.\MessageBreak Solution: Use another key.}}}
+
+% ---------------------------------- marks ------------------------------------
+
+\newcommand\sep@markset [1] {\protected@xdef\@thefnmark{\csname the#1mark\endcsname}}
+\newcommand\sep@mark [2] {\stepcounter {#1note}\sep@markset {#1}\@footnotemark}
+
+% ---------------------- cross-references and counters ------------------------
+
+\newcommand\sep@refsetcounter [2] {\setcounter{#1}{#2}\protected@edef\@currentlabel{\csname p@#1\endcsname\csname the#1\endcsname}}
+
+% ********************************* Default ***********************************
+
+% ------------------------- footnotes: \sepfootnote ---------------------------
+
+%% Default: The default \sepfootnote family relies on \footnote
+\newfootnotes{sepfoot}
+
\endinput
%%
%% End of file `sepfootnotes.sty'.