From 3df29732a227369865130ba46a92913fd09cb7c0 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 7 Mar 2012 00:36:57 +0000 Subject: new latex package sepfootnotes (6mar12) git-svn-id: svn://tug.org/texlive/trunk@25574 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/sepfootnotes/README | 33 + .../doc/latex/sepfootnotes/sepfootnotes.pdf | Bin 0 -> 128776 bytes .../source/latex/sepfootnotes/sepfootnotes.dtx | 1003 ++++++++++++++++++++ .../source/latex/sepfootnotes/sepfootnotes.ins | 47 + .../tex/latex/sepfootnotes/sepfootnotes.sty | 129 +++ Master/tlpkg/bin/tlpkg-ctan-check | 2 +- Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc | 1 + Master/tlpkg/tlpsrc/sepfootnotes.tlpsrc | 0 8 files changed, 1214 insertions(+), 1 deletion(-) create mode 100644 Master/texmf-dist/doc/latex/sepfootnotes/README create mode 100644 Master/texmf-dist/doc/latex/sepfootnotes/sepfootnotes.pdf create mode 100644 Master/texmf-dist/source/latex/sepfootnotes/sepfootnotes.dtx create mode 100644 Master/texmf-dist/source/latex/sepfootnotes/sepfootnotes.ins create mode 100644 Master/texmf-dist/tex/latex/sepfootnotes/sepfootnotes.sty create mode 100644 Master/tlpkg/tlpsrc/sepfootnotes.tlpsrc (limited to 'Master') diff --git a/Master/texmf-dist/doc/latex/sepfootnotes/README b/Master/texmf-dist/doc/latex/sepfootnotes/README new file mode 100644 index 00000000000..97f51af5f1e --- /dev/null +++ b/Master/texmf-dist/doc/latex/sepfootnotes/README @@ -0,0 +1,33 @@ +Package: sepfootnotes +Description: Footnotes in separate file +Motto: Notes defined before notes inserted + +This package allows the content of footnotes to be defined before their marks +are inserted in a document. Footnotes and endnotes can, thus, be easily +grouped together in a separate file, so that the main body is less cluttered. + +2012/03/06 v0.1 + Initial version + +-------------------------------------------------------------------------------- +Installation: + +*Run: (This will generate sepfootnotes.sty) + latex sepfootnotes.ins + +*Copy sepfootnotes.sty to a location where LaTeX will find it. + See http://www.tex.ac.uk/faq + +-------------------------------------------------------------------------------- +Usage: + +*See sepfootnotes.pdf + +-------------------------------------------------------------------------------- +Copyright (C) 2012 Eduardo C. Lourenço de Lima + +This material is subject to the LaTeX Project Public License. See +http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html +for the details of that license + +This work has the LPPL maintenance status "author-maintained" diff --git a/Master/texmf-dist/doc/latex/sepfootnotes/sepfootnotes.pdf b/Master/texmf-dist/doc/latex/sepfootnotes/sepfootnotes.pdf new file mode 100644 index 00000000000..00836773ea4 Binary files /dev/null and b/Master/texmf-dist/doc/latex/sepfootnotes/sepfootnotes.pdf differ diff --git a/Master/texmf-dist/source/latex/sepfootnotes/sepfootnotes.dtx b/Master/texmf-dist/source/latex/sepfootnotes/sepfootnotes.dtx new file mode 100644 index 00000000000..7a5ab7800d8 --- /dev/null +++ b/Master/texmf-dist/source/latex/sepfootnotes/sepfootnotes.dtx @@ -0,0 +1,1003 @@ +% \iffalse meta-comment +% +% Copyright (C) 2012 Eduardo C. Lourenço de Lima +% +% 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. +% +% \fi +% \iffalse +% +%\NeedsTeXFormat{LaTeX2e}[1996/06/01] +%\ProvidesPackage{sepfootnotes}[2012/03/06 v0.1 Footnotes in separate file] +%<*driver> +\documentclass{ltxdoc} +\usepackage{sepfootnotes} +\newenvironment{Description} + {\par\medskip\noindent\ignorespaces}{} +\newenvironment{synopsis} + {\begin{list}{} + {\setlength\parsep{0pt} + \setlength\itemsep{0pt}}} + {\end{list}} +\newenvironment{Example}[1] + {\if#1\else\paragraph{Example.}#1\fi} + {} +\newenvironment{page} + {\begin{center}\begin{minipage}[t]{0.5\linewidth}} + {\end{minipage}\end{center}} +\newcommand\TODO{\texttt{Todo:}} +\begin{document} + \DocInput{sepfootnotes.dtx} +\end{document} +% +% \fi +% \changes{0.1}{2012/03/06}{Initial version} +% \GetFileInfo{sepfootnotes.sty} +% \CheckSum{185} +% \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 \~} +% \DoNotIndex{\,,\@addtoreset,\begin,\closeout,\csname,\end,\endcsname} +% \DoNotIndex{\expandafter,\fnsymbol,\@footnotemark,\footnotesep,\footnotesize} +% \DoNotIndex{\@footnotetext,\@ifundefined,\immediate,\input,\jobname,\label} +% \DoNotIndex{\@makebox,\makebox,\mbox,\MessageBreak,\@namedef,\@nameuse} +% \DoNotIndex{\newcommand,\newcounter,\newenvironment,\newwrite,\noindent} +% \DoNotIndex{\normalfont,\openout,\PackageError, \par,\parskip,\ref} +% \DoNotIndex{\refstepcounter,\relax,\renewcommand,\setlength,\string} +% \DoNotIndex{\@thefnmark\write} +% \title{The \textsf{sepfootnotes} package,\thanks{This document +% corresponds to \textsf{sepfootnotes}~\fileversion, +% dated~\filedate.}\\{or a footnote to Plato}} +% \author{Eduardo C. Louren\c{c}o de Lima \\ \texttt{elourenco@phi.pro.br}} +% \maketitle +% +% +% \begin{abstract}\noindent This package allows the content of footnotes +% to be defined before their marks are inserted in a document. +% Footnotes and endnotes can, thus, be easily grouped together +% in a separate file, so that the main body is less +% cluttered.\end{abstract} +% +% +% \section*{Introduction} +% +% Footnotes and endnotes can be a problem when reading {\LaTeX} code. If there +% are many notes to a document, or if some of them are too long, as is often +% the case with philosophers and people from the humanities in general, reading +% and editing the main body may be quite difficult. +% +% They can be a problem for the simple reason that standard |\footnote| and +% |\endnote| both take the text of a note as a mandatory argument. For one +% thing, a verb and its complement may be\footnote{Notice that this footnote +% does precisely that to the main body of this document. There are ten or more +% lines of code between `may be' and `severed' in such an otherwise short +% paragraph. In a posting to \texttt{texhax.tug.org} in April 2010, someone +% complained that using footnotes ``tends to disrupt the flow of the document +% on the screen and makes editing the text itself harder'', and asked about the +% possibility of ``putting all of the footnotes in a separate file''~\cite{Nicholas Cole}. +% Another user, back in 2004, remarked that the ``only thing I +% missed about word processors was the ability to keep footnote text at the +% bottom of the page, or in a separate window. I often have extensive +% footnotes, and don't want them cluttering up my main body text when I'm +% composing''~\cite{Luecking}. Some people circumvent that issue by +% other artful maneuvering, such as indenting or folding footnote code lines.} +% severed by a dozen lines of code. +% +% This package aims to get around this inconvenience by means of +% macros that take as arguments mere \emph{identifiers,} instead of text, thus +% allowing the content of footnotes and endnotes to be defined \emph{before} +% their marks are inserted in a document. Notes can, thus, be easily grouped +% together in a \emph{separate file,} so that the main body is less +% cluttered. +% +% The point is not to prevent writers from indulging in footnotes. Quite the +% contrary. +% +% +% \section*{Synopsis} +% +% \begin{synopsis} +% \item |\newfootnotes| \marg{prefix} +% \item |\newendnotes| \marg{prefix} +% \item |\newsymbolfootnotes| \oarg{master counter} \marg{prefix}\medskip +% \item |\|\meta{prefix}|note| \marg{id} +% \item |\|\meta{prefix}|notemark| \marg{id} +% \item |\|\meta{prefix}|notetext| \marg{id} +% \item |\|\meta{prefix}|notecontent| \marg{id} \marg{text}\medskip +% \item |\|\meta{prefix}|notes| \marg{id} +% \end{synopsis} +% +% \setcounter{tocdepth}{2} +% \tableofcontents +% \newpage +% \section{Basic Usage} +% +% \subsection{Footnotes} +% +% \begin{Description} +% \DescribeMacro{\newfootnotes} +% The first step is to create a new footnote apparatus. +% \begin{synopsis} +% \item |\newfootnotes| \marg{prefix} +% \end{synopsis} +% The +% argument \meta{prefix} can be any sequence of letters, such as `a' +% or `dog', except `foot' and other names that have already been taken. +% For example, executing |\newfootnotes{a}| creates a number of new commands, the +% names of which all begin with~`a-': |\anotemark|, |\anotetext|, |\anote|, and |\anotecontent|. +% \end{Description} +% \begin{Description} +% \DescribeMacro{\notemark} +% \DescribeMacro{\notetext} +% The first two correspond to {\LaTeX} +% |\footnotemark|, and |\footnotetext|. +% They also produce a footnote, or rather, a mark without a footnote, and a footnote without a mark. But the important difference +% to their analogues is that they do not have the text of the footnote as +% arguments. They take a \emph{identifier} instead. +% \begin{synopsis} +% \item |\|\meta{prefix}|notemark| \marg{id} +% \item |\|\meta{prefix}|notetext| \marg{id} +% \end{synopsis} +% \end{Description} +% \begin{Description} +% \DescribeMacro{\notecontent} +% The identifier \meta{id} identifies the text of a footnote. +% It can be any arbitrary sequence of letters, numbers, space and punctuation marks. +% But it is not +% itself the text +% of the footnote; it is more like a tag, or a name. This naming is brought +% about by: +% \begin{synopsis} +% \item |\|\meta{prefix}|notecontent| \marg{id} \marg{text} +% \end{synopsis} +% \end{Description} +% \begin{Description} +% \DescribeMacro{\note} +% And once \meta{text} bears a name it can be identified +% by |\|\meta{prefix}|note| to produce a footnote. +% \begin{synopsis} +% \item |\|\meta{prefix}|note| \marg{id} +% \end{synopsis} +% \end{Description} +% \begin{Example} +% {How to typeset `Aristotle's master' as a footnote.} +% \iffalse +%<*example> +% \fi +\begin{verbatim} +\newfootnotes{a} +\anotecontent{Plato}{Aristotle's master.} + +This was first brought up by +the great Plato\anote{Plato} +in the \textit{Sophist}. +\end{verbatim} +% \iffalse +% +% \fi +% \begin{page} +% \newfootnotes{a} +% \anotecontent{PlatoFoot}{Aristotle's master.} +% This was first brought up by +% the great Plato\anote{PlatoFoot} +% in the \textit{Sophist}. +% \end{page} +% +% \medskip\noindent That sentence will take three lines of code however long the footnote to +% Plato is. No pun intended. +% \end{Example} +% +% +% \subsection{Endnotes} +% +% \begin{Description} +% \DescribeMacro{\newendnotes} +% \DescribeMacro{\notes} +% Endnote and footnote commands are essentially the same but for two +% differences. To use endnotes first substitute |\newendnotes| +% for |\newfootnotes|, and then insert |\|\meta{prefix}|notes|, +% plural, at the end of the document. +% \begin{synopsis} +% \item |\newendnotes| \marg{prefix} +% \item |\|\meta{prefix}|notes| +% \end{synopsis} +% \end{Description} +% \begin{Example} +% {How to effortlessly convert all footnotes into endnotes.} +% \iffalse +%<*example> +% \fi +% \begin{verbatim}\newendnotes{a} +\anotecontent{Plato}{Aristotle's master.} + +This was first brought up by +the great Plato\anote{Plato} +in the \textit{Sophist}. + +\section*{Notes} +\anotes +\end{verbatim} +% \iffalse +% +% \fi +% \end{Example} +% +% \subsection{Symbol footnotes} +% +% \begin{Description} +% \DescribeMacro{\newsymbolfootnotes} +% To get footnotes with symbols, such as *, $\dag$, and $\ddag$, instead of +% numbers, just declare |\newsymbolfootnotes| instead of |\newfootnotes|. +% (See section~\ref{Roman} for notes with Roman numerals or letters.) +% \begin{synopsis} +% \item |\newsymbolfootnotes| \oarg{master counter} \marg{prefix} +% \end{synopsis} +% \end{Description} +% The optional argument \meta{master counter} can be anything like |page|, +% |section|, |chapter|, etc. The default master counter is |page|. The series +% of symbols is reset each new page, so that * marks the first symbol footnote +% on any page, whereas $\dag$ marks the second, $\ddag$ the third, and so on. +% \begin{Example}{} +% \iffalse +%<*example> +% \fi +%\begin{verbatim}\newsymbolfootnotes[page]{a} +\anotecontent{Plato}{Aristotle's master.} + +This was first brought up by +the great Plato\anote{Plato} +in the \textit{Sophist}. +\end{verbatim} +% \iffalse +% +% \fi +% No need to modify the main body. Symbol footnotes are just footnotes using +% the same commands as before. +% \end{Example} +% \newpage +% +% \subsection{Footnotes in separate file} +% +% It is now easy to see how footnotes can be stored in a separate file. It is +% just a matter of moving all |\|\meta{prefix}|notecontent| declarations to a +% new file, say, |notes.tex|, and then loading it in the preamble with |\input|. +% +% \begin{Example}{How to move all footnotes to a separate file.} +% +% \bigskip This is |notes.tex| +% \iffalse +%<*example> +% \fi +% \begin{verbatim} +\anotecontent{Homer}{Everybody's master.} +\anotecontent{Plato}{Aristotle's master.} +\end{verbatim} +% +% And here is |document.tex| +%\begin{verbatim}\documentclass{article} +\usepackage{sepfootnotes} +\newfootnotes{a} +\input{notes.tex} +\begin{document} + This was first brought up by + the great Plato\anote{Plato} + in the \textit{Sophist}. But + nobody could suppose that an + antecedent is to be found in + Homer.\anote{Homer} +\end{document} +\end{verbatim} +% \iffalse +% +% \fi +% Notice that |Homer| is the first entry in |notes.tex| though it will be +% typeset as note~\ref{homer}, whereas |Plato| is the first footnote here but +% the second entry there. +%\begin{page}\makeatletter\let\c@a\undefined\makeatother +%\newfootnotes{a} +%\anotecontent{HomerSep}{Everybody's master.} +%\anotecontent{PlatoSep}{Aristotle's master.} +%This was first brought up by +%the great Plato\anote{PlatoSep} +%in the \textit{Sophist}. But +%nobody could suppose that an +%antecedent is to be found in +%Homer.\anote{HomerSep}\label{homer} +% \end{page} +% \end{Example} +% +% \medskip\noindent Fortunately, the order in which content declarations +% appear in |notes.tex| is \textbf{not} particularly important when it comes to +% numbering footnotes. Numbering depends solely upon the order in which +% |\|\meta{prefix}|note| commands appear in the document. +% +% Content declarations can be either randomly inserted into +% |notes.tex|, or more interestingly perhaps, grouped together by similarity of +% subject or size. +% +% \newpage +% \section{Advanced Usage} +% +% \subsection{Footnotes and endnotes together} +% +% If a writer wants to insert footnotes and endnotes in the same document, all +% he has to do is declare |\newfootnotes| \marg{prefix$_1$} and +% |\newendnotes| \marg{prefix$_2$} in the preamble. Each |\new...notes| creates +% an independent note apparatus with its own counter, |\|\meta{prefix}|note|, +% |\|\meta{prefix}|notecontent|, etc. +% +% The trick though is to give each apparatus a different prefix, say, `a' and +% `b': +% \begin{Example}{} +% \iffalse +%<*example> +% \fi +\begin{verbatim}\newfootnotes{a} +\newendnotes{b} +\end{verbatim} +% \iffalse +% +% \fi +% and then substitute prefix~`b' for `a' whenever a note is to be identified by +% the |b| apparatus. In our example if |Plato| is a footnote, but |Homer| is to be made into an endnote, +% just replace |\anotecontent{Homer}| with |\bnotecontent{Homer}| in +% |notes.tex| +% \iffalse +%<*example> +% \fi +% \begin{verbatim} +\bnotecontent{Homer}{Everybody's master.} +\anotecontent{Plato}{Aristotle's master.} +\end{verbatim} +% \iffalse +% +% \fi +% And do the same to |\anote{Homer}| and |\bnote{Homer}| in |document.tex|. +% But don't forget the |\bnotes|, plural, at the end. +% \iffalse +%<*example> +% \fi +%\begin{verbatim}\newfootnotes{a} +\newendnotes{b} +\input{notes.tex} +\begin{document} + This was first brought up by + the great Plato\anote{Plato} + in the \textit{Sophist}. But + nobody could suppose that an + antecedent is to be found in + Homer.\bnote{Homer} +\section*{Notes} +\bnotes +\end{document} +\end{verbatim} +% \iffalse +% +% \fi +% Here |Plato| will be typeset as a footnote, whereas |Homer| as an endnote. +% \end{Example} +% +% Now imagine that, for whatever reason, a writer or editor needs +% footnotes, endnotes, and symbol footnotes all together in the +% same document. He just has to declare three independent note apparatus taking +% three distinct prefixes: +% \begin{Example}{} +% \iffalse +%<*example> +% \fi +\begin{verbatim}\newfootnotes{a} +\newendnotes{b} +\newsymbolfootnotes{c} +\end{verbatim} +% \iffalse +% +% \fi +% and then use |\anote| and |\anotecontent| for footnotes, but reserve |\bnote| +% and |\bnotecontent| for endnotes, as well as |\cnote| and |\cnotecontent| for +% symbol footnotes. +% \end{Example} +% +% +% \subsection{Cross-references} +% +% \begin{Description} +% \DescribeMacro{\noteref} +% Footnotes and endnotes can be referenced to with |\|\meta{prefix}|noteref|. +% \begin{synopsis} +% \item |\|\meta{prefix}|noteref| \marg{id}. +% \end{synopsis} +% \end{Description} +% \begin{Example} +% {How to produce the number of that footnote to Plato.} +% \iffalse +%<*example> +% \fi +% \begin{verbatim} + This was first brought up by + the great Plato\anote{Plato} + in the \textit{Sophist}. + + See note~\anoteref{Plato}. +\end{verbatim} +% \iffalse +% +% \fi +% \end{Example} +% It is okay to use {\LaTeX} |\label| and |\ref| to refer the reader to notes +% created by |sepfootnotes|. However, because both |\label|, and |\|\meta{prefix}|note|, +% assign a unique identifier---or label, tag, marker, or name---to a particular +% note number, it may in most cases be just superfluous to label it twice. Compare: +% \begin{Example}{} +% \iffalse +%<*example> +% \fi +% \begin{verbatim} + This was first brought up by + the great Plato\anote{Plato}\label{Plato} + in the \textit{Sophist}. + + See note~\ref{Plato}. +\end{verbatim} +% \iffalse +% +% \fi +% \end{Example} +% But imagine our writer would rather stick to |\ref|. Since the labels |sepfootnotes| +% internally assigns to note numbers all have names like +% |Notes@refs@|\meta{prefix}|@|\meta{id}, the footnote number to |Plato| in our example +% may also be typeset, though somewhat clumsily, by +% |\ref{Notes@refs@a@Plato}|. +% +% +% \subsection{Roman numerals and letters} +% \label{Roman} +% +% \begin{Description} +% \DescribeMacro{\the} +% To change the style of footnote or endnote marks, simply redefine +% |\the|\meta{prefix} to use another style: |roman|, |Roman|, |alph|, |Alph|, or +% |fnsymbol|. +% \begin{synopsis} +% \item |\renewcommand\the|\meta{prefix} |{\|\meta{style}| {|\meta{prefix}|}}| +% \end{synopsis} +% \end{Description} +% \begin{Example} +% {How to typeset lowercase Roman numerals in footnotes.} +% \iffalse +%<*example> +% \fi +\begin{verbatim} +\renewcommand\thea{\roman{a}} + +This was first brought up by +the great Plato\anote{Plato} +in the \textit{Sophist}. +\end{verbatim} +% \iffalse +% +% \fi +%\begin{page}\makeatletter\let\c@a\undefined\makeatother +%\newfootnotes{a} +%\renewcommand\thea{\roman{a}} +%\anotecontent{PlatoRoman}{Aristotle's master.} +%This was first brought up by +%the great Plato\anote{PlatoRoman} +%in the \textit{Sophist}. +%\end{page} +% \end{Example} +% +% +% \subsection{Endnotes customization} +% +% To customize how the text of endnotes is typeset at the end of the document, +% you may redefine |\|\meta{prefix}|endnotemark| and the +% \meta{prefix}|endnotes| environment. +% \begin{Description} +% \DescribeMacro{\endnotemark} Numbers right before the text of +% endnotes are typeset by |\|\meta{prefix}|endnotemark|, which is not to be +% confused with |\the|\meta{prefix}. See section~\ref{Roman}. +% \begin{synopsis} +% \item |\|\meta{prefix}|endnotemark| \marg{number} +% \end{synopsis} +% \end{Description} +% \begin{Description} +% \DescribeEnv{endnotes} +% The text of all endnotes is typeset within the \meta{prefix}|endnotes| +% environment. +% \end{Description} +% \iffalse +%<*example> +% \fi +% \begin{Example}{How to typeset endnotes as a list of numbers, instead of numbered paragraphs, and in boldface.} +%\begin{verbatim} +\newendnotes{a} +\anotecontent{Homer}{Everybody's master.} +\anotecontent{Plato}{Aristotle's master.} + +\renewcommand \aendnotemark [1] {\item[\textbf{#1.}]} +\renewenvironment {aendnotes} {\begin{list}{}{}} + {\end{list}} +This was first brought up by +the great Plato\anote{Plato} +in the \textit{Sophist}. But +nobody could suppose that an +antecedent is to be found in +Homer.\anote{Homer} +\section*{Notes} +\anotes +\end{verbatim} +% \begin{page}\makeatletter\let\c@a\undefined\makeatother +% \newendnotes{a} +% \anotecontent{HomerCustom}{Everybody's master.} +% \anotecontent{PlatoCustom}{Aristotle's master.} +% \renewcommand \aendnotemark [1] {\item[\textbf{#1.}]} +% \renewenvironment {aendnotes} +% {\begin{list}{} +% {\setlength\topsep {0pt} +% \setlength\parsep {0pt} +% \setlength\itemsep{0pt}}} +% {\end{list}} +% This was first brought up by +% the great Plato\anote{PlatoCustom} +% in the \textit{Sophist}. But +% nobody could suppose that an +% antecedent is to be found in +% Homer.\anote{HomerCustom} +% \par\smallskip\noindent\textbf{Notes} +% \anotes +% \end{page} +% \end{Example} +% \iffalse +% +% \fi +% +%\begin{thebibliography}{1} +% +% \bibitem{Nicholas Cole} +% At \texttt{http://tug.org/mailman/htdig/texhax/2010-April/014558.html} +% +% \bibitem{Luecking} +% At \texttt{http://www.44342.com/tex-f809-t9440-p1.htm}. +% +% \bibitem{Companion} +% Frank Mittelbach, and Michel Goossens, with Johannes Braams, David Carlisle, +% and Chris Rowley. +% \newblock \emph{The {\LaTeX} Companion}. 2nd +% \newblock Addison~Wesley, 2004. +% \newblock ISBN~\mbox{0-201-36299-6}. +% +%\end{thebibliography} +% +% +% \StopEventually +% +% \section{Implementation} +% +% \subsection*{Namespace} +% +% First we define a namespace for labels and identifiers. +% \begin{macrocode} +\newcommand\@SFnNamespace{Notes@} +% \end{macrocode} +% +% \subsection{Public macros} +% +% This section comments on public macros dynamically named, and defined, using a user provided prefix. +% They fall into four categories: footnote macros, endnote macros, symbol footnote macros, and +% macros that are common to all of them. +% +% \subsubsection{Common macros} +% +% \begin{macro}{\@SFnNew} +% The public |\newfootnotes|, |\newsymbolfootnotes|, and |\newendnotes| +% commented upon in the next sections first call +% the private |\@SFnNew| \marg{prefix}, which dynamically defines a counter and +% three public macros common to both footnotes and endnotes. They are all named with \meta{prefix}: if +% `bar' is provided as the prefix then |\barnotecontent|, |\barnoteref|, |\barnmark|, +% and the counter |bar| are defined. +% \begin{macrocode} +\newcommand\@SFnNew [1]{% +% \end{macrocode} +% The counter \meta{prefix} will only track notes typeset by macros named with \meta{prefix}. +% \begin{macrocode} + \newcounter{#1}% +% \end{macrocode} +% \begin{macro}{\notecontent} +% The macro |\|\meta{prefix}|notecontent| \marg{id} \marg{text} stores +% \meta{text} as \meta{id}, which is in the \meta{prefix} namespace itself. +% \begin{macrocode} + \expandafter + \newcommand\csname #1notecontent\endcsname [2] + {\@SFnStoreText {#1} {##1} {##2}}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\noteref} +% The macro |\|\meta{prefix}|noteref| \marg{id} typesets the reference to the label +% associated with \meta{id}. See |\|\meta{prefix}|notemark| in \ref{footnotes} below. +% \begin{macrocode} + \expandafter + \newcommand\csname #1noteref\endcsname [1] + {\@SFnGetReference {#1} {##1}}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\nmark} +% Finally |\|\meta{prefix}|nmark| typesets the default note mark. +% \begin{macrocode} + \expandafter + \newcommand\csname #1nmark\endcsname + {\csname the#1\endcsname}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsubsection{Footnotes} +% \label{footnotes} +% +% \begin{macro}{\newfootnotes} +% The macro |\newfootnotes| \marg{prefix} dynamically defines three public +% macros. They also are all named with \meta{prefix}. +% \begin{macrocode} +\newcommand\newfootnotes [1] + {\@SFnNew{#1}% +% \end{macrocode} +% \begin{macro}{\notemark} +% The macro |\|\meta{prefix}|notemark| \marg{id} steps the counter, assigns it a +% label, links that label up with \meta{id}, and typesets a footnote mark. See +% |\@SFnInsertMark|. +% \begin{macrocode} + \expandafter + \newcommand\csname #1notemark\endcsname [1] + {\@SFnInsertMark {#1} {##1}}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\notetext} +% The macro |\|\meta{prefix}|notetext| \meta{id} typesets the text that was +% previously associated with \meta{id} by |\|\meta{prefix}|notecontent|. +% \begin{macrocode} + \expandafter + \newcommand\csname #1notetext\endcsname [1] + {\@SFnSetMark {#1}% + \@SFnTypesetText {#1} {##1}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\note} +% The macro |\|\meta{prefix}|note| \meta{id} typesets the mark and text of a +% footnote. +% \begin{macrocode} + \expandafter + \newcommand\csname #1note\endcsname [1] + {\csname #1notemark\endcsname{##1}% + \csname #1notetext\endcsname{##1}}} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Symbol footnotes} +% +% \begin{macro}{\newsymbolfootnotes} +% The macro |\newsymbolfootnotes| \oarg{master counter} \marg{prefix} dynamically +% define all of the footnote macros commented upon in \ref{footnotes}, but it also +% redefines |\|\meta{prefix}|nmark| so as to render symbols instead of numbers. Further, +% it creates a counter to be reset when \meta{master counter} is stepped. +% The default master counter is |page|. +% \begin{macrocode} +\newcommand\newsymbolfootnotes [2][page] + {\newfootnotes {#2}% + \@addtoreset {#2} {#1}% + \expandafter + \renewcommand\csname #2nmark\endcsname + {\fnsymbol {#2}}} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Endnotes} +% \label{endnotes} +% +% Endnote identifiers, but not endnote number and text, need to be stored in a file +% for later processing. The list of endnote identifiers may then be converted into +% endnotes at the end of the document within a suitable environment. +% +% The following is similar to \ref{footnotes} on footnotes but for +% the fact that now we have to deal with files, and delayed typesetting of +% endnote text. Another difference to the footnote set is that +% |\|\meta{prefix}|notemark| and |\|\meta{prefix}|note| are the same here. +% +% \begin{macro}{\newendnotes} +% The macro |\newendnotes| \marg{prefix} dynamically defines a corresponding +% environment \meta{prefix}|endnotes|, as well as five public macros +% available to endnotes only. They also are +% all named with \meta{prefix}. +% \begin{macrocode} +\newcommand\newendnotes [1] + {\@SFnNew {#1}% + \@SFnOpenFileOut {#1}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\note} +% \begin{macro}{\notemark} +% Both |\|\meta{prefix}|note| \marg{id} and |\|\meta{prefix}|notemark| \marg{id} +% typeset an endnote mark, and write down its \meta{id} for later +% processing. +% \begin{macrocode} + \expandafter + \newcommand\csname #1notemark\endcsname [1] + {\@SFnInsertMark {#1} {##1}% + \@SFnWriteToFile {#1} {##1}}% + \expandafter + \newcommand\csname #1note\endcsname [1] + {\csname #1notemark\endcsname {##1}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\notetext} +% Though public, |\|\meta{prefix}|notetext| \marg{id} is not meant to be directly used +% when applied to endnotes. It typesets a single +% endnote mark and text, preferably within the \meta{prefix}|endnotes| +% environment. +% \begin{macrocode} + \expandafter + \newcommand\csname #1notetext\endcsname [1] + {\csname #1endnotemark\endcsname + {\@SFnGetReference {#1} {##1}}% + \@SFnRetrieveText {#1} {##1}\par}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\notes} +% The |\|\meta{prefix}|notes| immediately closes the auxiliary file, and typesets all endnotes +% within a \meta{prefix}|endnotes| environment. +% \begin{macrocode} + \expandafter + \newcommand\csname #1notes\endcsname + {\@SFnCloseFile {#1}% + \begin{#1endnotes} + \input\@SFnFileName{#1}% + \end{#1endnotes}}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\endnotemark} +% Now, the macro |\|\meta{prefix}|endnotemark| \marg{number} +% typesets marks preferably within the \meta{prefix}|endnotes| +% environment.\footnote{From \cite[p.114]{Companion}.} +% \begin{macrocode} + \expandafter + \newcommand\csname #1endnotemark\endcsname [1] + {\noindent\makebox[0pt][r]{\mbox{{\normalfont ##1.\,}}}} +% \end{macrocode} +% \end{macro} +% \begin{environment}{endnotes} +% And here is the environment where to typeset all endnotes. +% \begin{macrocode} + \newenvironment{#1endnotes} + {\footnotesize\setlength\parskip\footnotesep} + {}}% +% \end{macrocode} +% \end{environment} +% +% \newpage +% \subsection{Private macros} +% +% This section comments on private macros. +% +% \subsubsection{Files} +% +% The following apply to endnotes only. See~\ref{endnotes}. +% +% \begin{macro}{\@SFnFileName} +% The macro |\@SFnFileName| \marg{prefix} returns a filename based on, +% surprise, \meta{prefix}. \TODO{} 3 letter extension: |sep|. +% \begin{macrocode} +\newcommand\@SFnFileName [1] + {\jobname.notes-#1} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@SFnOpenFileOut} +% \begin{macro}{\@SFnWriteToFile} +% \begin{macro}{\@SFnCloseFile} +% Here are three macros that operate on file descriptors: +% +% The first, +% |\@SFnOpenFileOut| \marg{prefix}, opens for writing a dynamically named +% file |\@SFnFileOut|\meta{prefix}. +% \begin{macrocode} +\newcommand\@SFnOpenFileOut [1] + {\expandafter\newwrite\csname @SFnFileOut#1\endcsname + \immediate\expandafter\openout + \csname @SFnFileOut#1\endcsname=\@SFnFileName#1\relax} +% \end{macrocode} +% The macro |\@SFnWriteToFile| \marg{prefix} \marg{id} writes down a +% note identifier, \meta{id}, for later processing. See +% |\|\meta{prefix}|notes| in section~\ref{endnotes}. +% \begin{macrocode} +\newcommand\@SFnWriteToFile [2] + {\immediate\write\csname @SFnFileOut#1\endcsname + {\expandafter\string\csname #1notetext\endcsname + {#2}}}% +% \end{macrocode} +% And |\@SFnCloseFile| \marg{prefix} closes the file containing note +% identifiers related to \meta{prefix}. +% \begin{macrocode} +\newcommand\@SFnCloseFile [1] + {\immediate\expandafter + \closeout\csname @SFnFileOut#1\endcsname\relax} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{Text} +% +% These are private macros to store, retrieve, and typeset the text of notes. +% They apply to both footnotes and endnotes. +% +% \begin{macro}{\@SFnStoreText} +% First |\@SFnStoreText| \marg{prefix} \marg{id} \marg{text} stores the +% text of a note as \meta{id} in the \meta{prefix} |text| namespace. The +% package aborts if \meta{id} is already in use in that namespace. +% \begin{macrocode} +\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.}}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@SFnRetrieveText} +% And |\@SFnRetrieveText| \marg{prefix} \marg{id} retrieves a previously +% stored piece of text identified by \meta{id} in the \meta{prefix} |text| +% namespace. It silently ignores undefined content. +% \begin{macrocode} +\newcommand\@SFnRetrieveText [2] + {\@ifundefined{\@SFnNamespace text@#1@#2} + {} + {\@SFnNameUse {#1} {#2}}} +% \end{macrocode} +% ^^A {\PackageWarningNoLine +% ^^A {\@SFnPackageName} +% ^^A {Empty note `#2' on page \thepage}} +% ^^A% {Note `#2' has no content assigned to it.\MessageBreak +% ^^A% Solution: Insert \expandafter\protect\csname #1notetext\endcsname{#2}{...} +% ^^A% before it.} +% \end{macro} +% \begin{macro}{\@SFnTypesetText} +% Finally, |\@SFnTypesetText| \marg{prefix} \marg{id} not only retrieves +% but also typesets a note text identified by \meta{id} in the \meta{prefix} +% |text| namespace. +% \begin{macrocode} +\newcommand\@SFnTypesetText [2] + {\@footnotetext{\@SFnRetrieveText {#1} {#2}}} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Marks} +% +% These are private macros to typeset note marks. +% They apply to both footnotes and endnotes. +% +% \begin{macro}{\@SFnInsertMark} +% The macro |\@SFnInsertMark| \marg{prefix} \marg{id} steps the counter, +% assigns it a label, links that label up with \meta{id}, and then typesets a note +% mark. It does the real work behind |\|\meta{prefix}|notemark| in sections \ref{footnotes} and~\ref{endnotes}. +% \begin{macrocode} +\newcommand\@SFnInsertMark [2] + {\@SFnStepCounter {#1}% + \@SFnSetReference {#1} {#2}% + \@SFnSetMark {#1}% + \@SFnTypesetMark} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@SFnSetMark} +% Now, |\@SFnSetMark| \marg{prefix} sets\footnote{From {\LaTeX} Kernel (Floats), +% 2002/10/01 v1.1v.: |base/ltfloat.dtx|.} \LaTeX{} internal note engine to typeset a mark as +% publicly defined by |\|\meta{prefix}|nmark|. +% \begin{macrocode} +\newcommand\@SFnSetMark [1] + {\protected@xdef\@thefnmark{\csname #1nmark\endcsname}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@SFnTypesetMark} +% And |\@SFnTypesetMark| is just a more descriptive wrapper to the +% internal macro that typesets the note mark. +% \begin{macrocode} +\newcommand\@SFnTypesetMark + {\@footnotemark} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Labels and cross-references} +% +% This package relies heavily on labels and cross-references to keep track of endnote +% numbers. But every note number, be it footnote or endnote, is assigned a +% label in the \meta{prefix} |label| namespace. Thus note numbers can be +% directly referenced to with |\ref{Notes@refs@|\meta{prefix}|@|\meta{id}|}|, or +% indirectly, but more simply, with |\|\meta{prefix}|noteref| \meta{id}. +% +% On the one hand, labels require running |latex| at least twice to get +% cross-references right. But on the other they allow us not to bother +% with note numbers. As long as note text and labels are implicitly connected by a unique +% identifier \meta{id} in \meta{prefix} namespace, the explicit connection between note +% content and number does not need to be hard coded into the endnote auxiliary +% file, as it is in the |endnotes| package. +% +% But the motivation for the identifier approach---notes defined before notes +% inserted---is quite independent of such a feature, if it is a feature. +% +% \TODO{} However it be, the identifier approach might prove itself useful in solving +% \LaTeX{} misnumbering footnotes when two or more |\footnotemark| precedes two +% or more |\footnotetext|. Since the |sepfootnotes| package requires note text to +% be defined before note marks are inserted, even in a separate file, it no +% longer matters how many times |\|\meta{prefix}|notemark| \meta{id} is invoked before +% |\|\meta{prefix}|notetext| \meta{id}. That is precisely what goes on with endnotes. +% \begin{macro}{\@SFnSetReference} +% The macro |\@SFnSetReference| \marg{prefix} \marg{id} assigns a note +% number a label in the \meta{prefix} |refs| namespace. +% \begin{macrocode} +\newcommand\@SFnSetReference [2] + {\label{\@SFnNamespace refs@#1@#2}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@SFnGetReference} +% And |\@SFnGetReference| \marg{prefix} \marg{id} simply returns that +% number. +% \begin{macrocode} +\newcommand\@SFnGetReference [2] + {\ref{\@SFnNamespace refs@#1@#2}} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Counters} +% +% \begin{macro}{\@SFnStepCounter} +% The macro |\@SFnStepCounter| \marg{prefix} steps the counter |prefix|, +% and makes sure it can be properly labeled afterwards. +% \begin{macrocode} +\newcommand\@SFnStepCounter [1] + {\refstepcounter{#1}} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Names} +% \label{names} +% +% \begin{macro}{\@SFnNameDef} +% The macro |\@SFnNameDef| \marg{prefix} \marg{id} \marg{text} stores +% \meta{text} as \meta{id} in the \meta{prefix} |text| +% namespace.\footnote{I owe Dan Luecking the idea of using \LaTeX{} internal +% table to store note text.~\cite{Luecking}} +% \begin{macrocode} +\newcommand\@SFnNameDef [3] + {\@namedef{\@SFnNamespace text@#1@#2}{#3}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@SFnNameUse} +% And |\@SFnNameUse| \marg{prefix} \marg{id} retrieves a previously stored +% piece of text identified by \meta{id} in the \meta{prefix} |text| namespace. +% Undefined content is silently ignored. +% \begin{macrocode} +\newcommand\@SFnNameUse [2] + {\@nameuse{\@SFnNamespace text@#1@#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +%\Finale diff --git a/Master/texmf-dist/source/latex/sepfootnotes/sepfootnotes.ins b/Master/texmf-dist/source/latex/sepfootnotes/sepfootnotes.ins new file mode 100644 index 00000000000..69792d228a8 --- /dev/null +++ b/Master/texmf-dist/source/latex/sepfootnotes/sepfootnotes.ins @@ -0,0 +1,47 @@ +%% sepfootnotes.ins +%% +%% Copyright (C) 2012 Eduardo C. Lourenço de Lima +%% +%% 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. +%% +\input docstrip.tex +\keepsilent +\preamble + +Copyright (C) 2012 Eduardo C. Lourenço de Lima + +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. + +\endpreamble +\generate{\file{sepfootnotes.sty}{\from{sepfootnotes.dtx}{package}}} +\obeyspaces +\Msg{****************************************************} +\Msg{* *} +\Msg{* To finish the installation you have to move the *} +\Msg{* following file into a directory searched by TeX: *} +\Msg{* *} +\Msg{* sepfootnotes.sty *} +\Msg{* *} +\Msg{* To produce the documentation run the file *} +\Msg{* sepfootnotes.dtx through LaTeX. *} +\Msg{* *} +\Msg{* Happy TeXing! *} +\Msg{* *} +\Msg{****************************************************} +\endbatchfile diff --git a/Master/texmf-dist/tex/latex/sepfootnotes/sepfootnotes.sty b/Master/texmf-dist/tex/latex/sepfootnotes/sepfootnotes.sty new file mode 100644 index 00000000000..2571daf0ee5 --- /dev/null +++ b/Master/texmf-dist/tex/latex/sepfootnotes/sepfootnotes.sty @@ -0,0 +1,129 @@ +%% +%% 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 +%% +%% 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. +%% +\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}}} +\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}} +\endinput +%% +%% End of file `sepfootnotes.sty'. diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index f2bd4a18c5d..3e4e074de1b 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -346,7 +346,7 @@ my @TLP_working = qw( scalebar schemabloc schwalbe-chess sciposter screenplay sdrt secdot section sectionbox sectsty selectp semantic semaphor - seminar semioneside sepnum seqsplit + seminar semioneside sepfootnotes sepnum seqsplit serbian-apostrophe serbian-date-lat serbian-def-cyr serbian-lig serbianc setspace seuthesis sf298 sffms sfg diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc index 74584856581..7871c6d7a15 100644 --- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc @@ -617,6 +617,7 @@ depend sectsty depend selectp depend semantic depend semioneside +depend sepfootnotes depend seqsplit depend serbian-apostrophe depend serbian-date-lat diff --git a/Master/tlpkg/tlpsrc/sepfootnotes.tlpsrc b/Master/tlpkg/tlpsrc/sepfootnotes.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d -- cgit v1.2.3