diff options
author | Karl Berry <karl@freefriends.org> | 2012-05-22 23:09:17 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-05-22 23:09:17 +0000 |
commit | d5687a28d4fd80665a04e1f3912e80ec7a5ba8fe (patch) | |
tree | 6de48ebf2fe6b02718b052a06c42ebd7e0c6f503 /Master/texmf-dist | |
parent | 780199d88743d4f05acb93c694a244896180e36a (diff) |
new latex package fnpct (22may12)
git-svn-id: svn://tug.org/texlive/trunk@26578 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/latex/fnpct/README | 39 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/fnpct/bigfoot_ex.tex | 48 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/fnpct/fixfoot_ex.tex | 48 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/fnpct/fnpct_en.pdf | bin | 0 -> 831930 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/fnpct/fnpct_en.tex | 957 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/fnpct/nested_ex.tex | 47 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/fnpct/nested_ex_a.tex | 47 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/fnpct/nested_ex_b.tex | 47 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/fnpct/nested_ex_c.tex | 47 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/fnpct/normal_ex.tex | 45 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/fnpct/pagenote_ex.tex | 48 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/fnpct/sepfootnotes_ex.tex | 50 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/fnpct/tufte_ex.tex | 36 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/fnpct/fnpct.sty | 684 |
14 files changed, 2143 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/fnpct/README b/Master/texmf-dist/doc/latex/fnpct/README new file mode 100644 index 00000000000..125f7357ad5 --- /dev/null +++ b/Master/texmf-dist/doc/latex/fnpct/README @@ -0,0 +1,39 @@ +-------------------------------------------------------------------------- +the FNPCT package v0.1 + + footnote kerning + +2012/05/22 +-------------------------------------------------------------------------- +Clemens Niederberger +Web: https://bitbucket.org/cgnieder/fnpct/ +E-Mail: contact@mychemistry.eu +-------------------------------------------------------------------------- +Copyright 2012 Clemens Niederberger + +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. + +This work has the LPPL maintenance status `maintained'. + +The Current Maintainer of this work is Clemens Niederberger. +-------------------------------------------------------------------------- +The fnpct package consists of the files + - fnpct.sty, + - fnpct_en.tex and fnpct_en.pdf + - bigfoot_ex.tex, fixfoot_ex.tex, normal_ex.tex, pagenote_ex.tex, + sepfootnotes_ex.tex, tufte_ex.tex + - nested_ex.tex, nested_ex_a.tex, nested_ex_b.tex, nested_ex_c.tex + - README +-------------------------------------------------------------------------- +the package is inspired by the following question on TeX.SE: + http://tex.stackexchange.com/q/56094/5049 +-------------------------------------------------------------------------- +If you have any ideas, questions, suggestions or bugs to report, please +feel free to contact me. +--------------------------------------------------------------------------
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/fnpct/bigfoot_ex.tex b/Master/texmf-dist/doc/latex/fnpct/bigfoot_ex.tex new file mode 100644 index 00000000000..cb982aa2f29 --- /dev/null +++ b/Master/texmf-dist/doc/latex/fnpct/bigfoot_ex.tex @@ -0,0 +1,48 @@ +% -------------------------------------------------------------------------- +% the FNPCT package +% +% footnote kerning +% +% 2012/05/22 +% -------------------------------------------------------------------------- +% Clemens Niederberger +% Web: https://bitbucket.org/cgnieder/fnpct/ +% E-Mail: contact@mychemistry.eu +% -------------------------------------------------------------------------- +% Copyright 2012 Clemens Niederberger +% +% 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. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Clemens Niederberger. +% -------------------------------------------------------------------------- +% If you have any ideas, questions, suggestions or bugs to report, please +% feel free to contact me. +% -------------------------------------------------------------------------- +\documentclass{article} +\usepackage[ + paperwidth=.5\textwidth, + paperheight=12\baselineskip, + margin=5pt, + bottom=1.5cm]{geometry} + +\usepackage[bigfoot-default-top,multiple]{fnpct} +\usepackage{bigfoot} +\DeclareNewFootnote[para]{B}[alph] + +\begin{document} + +\noindent The three little pigs built their houses +out of straw\footnote*{not to be confused with hay% +\footnoteB{let alone grass}}, sticks\footnote{or +lumber according to some sources} and bricks% +\footnote{probably fired clay bricks;or something}. + +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/fnpct/fixfoot_ex.tex b/Master/texmf-dist/doc/latex/fnpct/fixfoot_ex.tex new file mode 100644 index 00000000000..628e3b41a31 --- /dev/null +++ b/Master/texmf-dist/doc/latex/fnpct/fixfoot_ex.tex @@ -0,0 +1,48 @@ +% -------------------------------------------------------------------------- +% the FNPCT package +% +% footnote kerning +% +% 2012/05/22 +% -------------------------------------------------------------------------- +% Clemens Niederberger +% Web: https://bitbucket.org/cgnieder/fnpct/ +% E-Mail: contact@mychemistry.eu +% -------------------------------------------------------------------------- +% Copyright 2012 Clemens Niederberger +% +% 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. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Clemens Niederberger. +% -------------------------------------------------------------------------- +% If you have any ideas, questions, suggestions or bugs to report, please +% feel free to contact me. +% -------------------------------------------------------------------------- +\documentclass{article} +\usepackage[ + paperwidth=.55\textwidth, + paperheight=12\baselineskip, + margin=5pt, + bottom=1.5cm]{geometry} + +\usepackage{fixfoot} +\usepackage{fnpct} + +\DeclareFixedFootnote\myfn{I'm confused: what do I want to say?} + +\begin{document} + +\noindent The three little pigs\myfn\ built their houses +out of straw\myfn*, sticks\footnote{or lumber according +to some sources} and bricks\footnote{probably fired clay +bricks}. + +\end{document} diff --git a/Master/texmf-dist/doc/latex/fnpct/fnpct_en.pdf b/Master/texmf-dist/doc/latex/fnpct/fnpct_en.pdf Binary files differnew file mode 100644 index 00000000000..263d38881f9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/fnpct/fnpct_en.pdf diff --git a/Master/texmf-dist/doc/latex/fnpct/fnpct_en.tex b/Master/texmf-dist/doc/latex/fnpct/fnpct_en.tex new file mode 100644 index 00000000000..07b914cc490 --- /dev/null +++ b/Master/texmf-dist/doc/latex/fnpct/fnpct_en.tex @@ -0,0 +1,957 @@ +% -------------------------------------------------------------------------- +% the FNPCT package +% +% footnote kerning +% +% 2012/05/22 +% -------------------------------------------------------------------------- +% Clemens Niederberger +% Web: https://bitbucket.org/cgnieder/fnpct/ +% E-Mail: contact@mychemistry.eu +% -------------------------------------------------------------------------- +% Copyright 2012 Clemens Niederberger +% +% 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. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Clemens Niederberger. +% -------------------------------------------------------------------------- +% If you have any ideas, questions, suggestions or bugs to report, please +% feel free to contact me. +% -------------------------------------------------------------------------- +% the package is inspired by the following question on TeX.SE: +% http://tex.stackexchange.com/q/56094/5049 +% -------------------------------------------------------------------------- +% if you want to compile this documentation you'll need the document class +% `cnpkgdoc' which you can get here: +% https://bitbucket.org/cgnieder/cnpkgdoc/ +% the class is licensed LPPL 1.3 or later +\RequirePackage{sepfootnotes} +\documentclass[toc=index,toc=bib]{cnpkgdoc} +\docsetup{ + pkg = fnpct , + code-box = { + skipbelow = .5\baselineskip , + skipabove = .5\baselineskip , + } +} +\addcmds{ + AdaptNote, + AdaptNoteMark, + anote, + anotecontent, + arabic, + DeclareNewFootnote, + endnote, + footnoteB, + kfc, + kfp, + multendnote, + multfootnote, + multparnote, + multsidenote, + myfn, + newfootnotes, + parnote, + parnotes, + setfnpct, + sidenote, + theendnotes, + thempfootnote, + writeinnernotes +} +\setfnpct{multiple} +\usepackage{endnotes} +\usepackage{parnotes} + +\newfootnotes{a} + +\renewcommand\thempfootnote{\arabic{mpfootnote}} + +\usepackage[backend=biber]{biblatex} +\addbibresource{biblatex-examples.bib} +\addbibresource{\jobname.bib} + +% rudimentary solution for a `maintainer' field: +\DeclareFieldFormat{authortype}{\mkbibparens{#1}} +\renewbibmacro*{author}{% + \ifboolexpr{ + test \ifuseauthor + and + not test {\ifnameundef{author}} + } + {\printnames{author}% + \iffieldundef{authortype} + {} + {\setunit{\space}% + \usebibmacro{authorstrg}}} + {}} + +\begin{filecontents}{\jobname.bib} +@software{bigfoot, + title = {bigfoot}, + author = {David Kastrup}, + date = {2006/07/15}, + version = {1.25}, + url = {http://www.ctan.org/pkg/bigfoot} +} +@software{endnotes, + title = {endnotes}, + author = {Robin Fairbairns}, + authortype = {current maintainer}, + date = {2012/01/15}, + url = {http://www.ctan.org/pkg/endnotes} +} +@software{fixfoot, + title = {fixfoot}, + author = {Robin Fairbairns}, + date = {2007/12/12}, + version = {0.3a} , + url = {http://www.ctan.org/pkg/fixfoot} +} +@software{footmisc, + title = {footmisc}, + author = {Robin Fairbairns}, + date = {2011/06/06}, + version = {5.5b}, + url = {http://www.ctan.org/pkg/footmisc} +} +@software{footnote, + title = {footnote}, + author = {Mark Wooding}, + date = {1997/01/28}, + version = {1.13}, + url = {http://www.ctan.org/pkg/footnote} +} +@software{manyfoot, + title = {manyfoot}, + author = {Alexander I. Rozhenko}, + date = {2005/09/11}, + version = {1.10}, + url = {http://www.ctan.org/pkg/manyfoot} +} +@software{parnotes, + title = {parnotes}, + author = {Micheal Hughes}, + date = {2012/03/01}, + version = {1}, + url = {http://www.ctan.org/pkg/parnotes} +} +@software{pagenote, + title = {pagenote}, + author = {Will Robertson}, + authortype = {current maintainer}, + date = {2009/09/03}, + version = {1.1a}, + url = {http://www.ctan.org/pkg/pagenote} +} +@software{sepfootnotes, + title = {sepfootnotes}, + author = {Eduardo C. Louren\c{}o de Lima}, + date = {2012/03/06}, + version = {0.1}, + url = {http://www.ctan.org/pkg/sepfootnotes} +} +@software{tablefootnote, + title = {tablefootnote}, + author = {H.-Martin M\"{u}nch}, + date = {2012/01/14}, + version = {1.0g}, + url = {http://www.ctan.org/pkg/tablefootnote} +} +@software{yafoot, + title = {yafoot}, + author = {Hiroshi Nakashima}, + date = {1999/07/14}, + version = {1.0}, + url = {http://www.ctan.org/pkg/yafoot} +} +\end{filecontents} + +\begin{filecontents}{\jobname.ist} + preamble "\\begin{theindex}\n Section titles are indicated \\textbf{bold}, + packages \\textsf{sans serif}, commands \\code{\\textbackslash\\textcolor{code}{brown}} + and options \\textcolor{key}{\\code{green}}.\\newline\n\n" + heading_prefix "{\\bfseries " + heading_suffix "\\hfil}\\nopagebreak\n" + headings_flag 1 + delim_0 "\\dotfill " + delim_1 "\\dotfill " + delim_2 "\\dotfill " + delim_r "\\textendash" + suffix_2p "\\nohyperpage{\\,f.}" + suffix_3p "\\nohyperpage{\\,ff.}" +\end{filecontents} + +\newcommand\setapart[1]{\medskip\hspace{1em}#1\medskip} +\let\verb\lstinline + +\TitlePicture{\parbox{.75\textwidth}{The \fnpct package basically does two things +to footnotes: if footnote marks are followed by a comma or a dot the order of +footnote and punctuation mark is reversed and the kerning gets adjusted. As a side +effect a new method of creating multiple footnotes and some other features are +provided.}} + +\makeindex +\begin{document} + +\section{License and Requirements} +\fnpct is placed under the terms of the LaTeX Project Public License, +version 1.3 or later (\url{http://www.latex-project.org/lppl.txt}). +It has the status \enquote{maintained}. + +\fnpct depends on the \paket{l3kernel} and \paket*{xparse} which is part of the +\paket{l3packages} bundle. + +\section{What's it all about?} +\subsection{Basics}\secidx{basics} +The \fnpct package basically does two things to footnotes: if footnote marks are +followed by a comma or a dot the order of footnote and punctuation mark is reversed +and the kerning gets adjusted. As a side effect a new method of creating multiple +footnotes\footnote{like;this} is provided, see section \ref{sec:multiple} for details. + +All examples in this documentation use + +\setapart{\cmd{renewcommand}\cmd{thempfootnote}{\cmd{arabic}{mpfootnote}}} + +Now, let's see some action: +\begin{beispiel} + \begin{minipage}{.4\linewidth} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\footnote{probably fired clay bricks}. + \end{minipage} +\end{beispiel} + +To ensure that the kerning is set the right way the footnote \emph{must} be placed +\emph{before} the dot or the comma. The command can look ahead but not look back. +This means if you place the \cmd{footnote} command after a dot or a comma it is +treated as if following a word, \ie a thin space is inserted: effectivly the opposite +of the desired behaviour. + +The order-switching can be prevented using a package option since not all countries +and languages have the same typographic conventions. +\begin{beschreibung} + \option{punct-after}{\default{true}/false} when \code{true} the punctuation sign + will be placed \emph{after} the footnote. +\end{beschreibung} +which like all options can also be set using the setup command. +\begin{beschreibung} + \befehl{setfnpct}{<options>} set up options. Can be used anywhere in the document. + Some options can only be set in the preamble, though. +\end{beschreibung} +\begin{beispiel} + \setfnpct{punct-after} + \begin{minipage}{.4\linewidth} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\footnote{probably fired clay bricks}. + \end{minipage} +\end{beispiel} +\secidx*{basics} + +\subsection{Temporarily disable switching}\secidx{disable switching} +One maybe want to put some footnote marks \emph{before} the punctuation and some +after, for example because the first one describes a single word but the second +one a whole sentence. For this purpose \fnpct adds a \code{*} argument to \cmd{footnote} +and \cmd{footnotemark}: +\begin{beschreibung} + \befehl[footnotea]{footnote}*[<num>]{<footnote text>} new \code{*} argument added. + \befehl[footnotemarka]{footnotemark}*[<num>] new \code{*} argument added. +\end{beschreibung} +This argument temporarily turns off the punctuation/footnote switching. +\begin{beispiel} + \begin{minipage}{.4\linewidth} + \noindent The three little pigs built their houses + out of straw\footnote*{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\footnote{probably fired clay bricks}. + \end{minipage} +\end{beispiel} + +\achtung{Please be aware that this package is in an experimental state and there +hasn't been extensive testing with other footnote behaviour changing packages!} +\secidx*{disable switching} + +\newpage +\section{Options}\secidx{options} +All package options are listed below. They all can be set as a package option or +with the \cmd{setfnpct} command. Most of them are for adjusting the kerning. +\begin{beschreibung} + \option{after-dot-space}{<dim>} space to be inserted after a dot and before the + footnote mark. Default = \code{-.06em} + \option{after-comma-space}{<dim>} space to be inserted after a comma and before + the footnote mark. Default = \code{-.06em} + \option{after-punct-space}{<dim>} set both spaces. + \option{punct-after}{\default{true}/false} when \code{true} the punctuation sign + will be placed \emph{after} the footnote. + \option{before-dot-space}{<dim>} space to be inserted before a dot and after the + footnote mark, \ie with \key{punct-after}{true}. Default = \code{-.15em} + \option{before-comma-space}{<dim>} space to be inserted before a comma and after + the footnote mark, \ie with \key{punct-after}{true}. Default = \code{-.15em} + \option{before-punct-space}{<dim>} set both spaces. + \option{before-footnote-space}{<dim>} space to be inserted between a word and the + following footnote mark. Default = \code{.06em} + \option{dont-mess-around} sets all mentioned lengths to \code{0} and \key{punct-after}{true}. + Basically this is as if you hadn't loaded \fnpct except the multiple footnote + command is still available, see section \ref{sec:multiple}. + \option{multiple}{\default{true}/false} lets \cmd{footnote} be equal to + \cmd{multfootnote} + \option{mult-fn-delim}{<delimiter>} sets the delimiter for the \cmd{multfootnote} + command. + \option{mult-fn-sep}{<separator>} sets the separator between multiple footnote + marks. + \option{normal-marks}{\default{true}/false} sets the footnote marks in the foot + not as superscripts but as normal font. If you're not using a \paket[koma-script]{KOMA-Script} + class this option will load the package \paket*{scrextend}. See section \ref{sec:normal} + for more information. \emph{This option can only be set in the preamble}. Default + = \code{false} +\end{beschreibung} + +Let's take a look at an example with some ridiculous settings: +\begin{beispiel} + % some ridiculous settings: + \setfnpct{after-punct-space=2pt,before-footnote-space=2pt} + \begin{minipage}{.4\linewidth} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\footnote{probably fired clay bricks}. + \end{minipage} +\end{beispiel} + +And now the same with switched order: +\begin{beispiel} + % some ridiculous settings: + \setfnpct{punct-after,before-punct-space=2pt,before-footnote-space=2pt} + \begin{minipage}{.4\linewidth} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\footnote{probably fired clay bricks}. + \end{minipage} +\end{beispiel} + +Some of the options are explained in a bit more detail in the next sections. +\secidx*{options} + +\section{Multiple footnotes}\secidx{multiple footnotes}\label{sec:multiple} +\subsection{Basics}\secidx[basics]{multiple footnotes} +Since multiple footnotes have to be treated differently\footnote{see these footnotes;for an example}, +\fnpct provides an extra command for that: +\begin{beschreibung} + \befehl{multfootnote}*{<list>;<of>;<footnotes>} different footnotes are separated + with a semicolon. The \code{*} turns the footnote/punctuation switching temporarily + off. +\end{beschreibung} +\begin{beispiel} + \begin{minipage}{.4\linewidth} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\multfootnote{probably fired clay bricks;or + something else}. + \end{minipage} +\end{beispiel} + +Every of the items of the list has an optional argument equivalent to the optional +argument of \cmd{footnote}: +\begin{beispiel} + \begin{minipage}{.4\linewidth} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\multfootnote{probably fired clay bricks;[5]or + something else}. + \end{minipage} +\end{beispiel} + +Additionally every item has an optional \code{*} which only invokes \cmd{footnotetext}. +This enables for example to set nested footnotes\secidx[nested footnotes]{multiple footnotes} +without disrupting the multiple setting. The following example is shown in figure +\ref{fig:nested:mult}: +\begin{beispiel}[code only] +\documentclass{article} +\usepackage[ + paperwidth=.5\textwidth, + paperheight=12\baselineskip, + margin=5pt, + bottom=1.5cm]{geometry} + +\usepackage[multiple]{fnpct} + +\begin{document} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\multfootnote{probably fired clay bricks% + \footnotemark;*or something else;what do I know}. +\end{document} +\end{beispiel} + +\begin{figure}[h] + \centering + \fbox{\includegraphics{nested_ex.pdf}} + \caption{nested footnotes}\label{fig:nested:mult} +\end{figure} + + +\subsection{The delimiter and separator}\secidx[delimiter]{multiple footnotes}\secidx[separator]{multiple footnotes} +Since the semicolon might be part of the footnote text you might have some trouble. +But there are ways around. Maybe try enclosing it with braces: +\begin{beispiel} + \begin{minipage}{.4\linewidth} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\multfootnote{probably fired clay bricks{;} + or something else;what do I know}. + \end{minipage} +\end{beispiel} + +There are options which lets you choose the (input) delimiter and the (output) +separator: +\begin{beschreibung} + \option{mult-fn-delim}{<delimiter>} choose delimiter for the \cmd{multfootnote}. + Default = \code{;} + \option{mult-fn-sep}{<separator>} choose the separator that is put between footnote + marks. Default = \code{,} +\end{beschreibung} +\begin{beispiel} + \setfnpct{mult-fn-delim=//,mult-fn-sep=;} + \begin{minipage}[t]{.4\linewidth} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\multfootnote{probably fired clay bricks; + or something else//what do I know}. + \end{minipage}\hfil + \setfnpct{mult-fn-delim=;,mult-fn-sep=} + \renewcommand*\thempfootnote{\fnsymbol{mpfootnote}} + \begin{minipage}[t]{.4\linewidth} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\multfootnote{probably fired clay bricks; + or something else}. + \end{minipage} +\end{beispiel} + +\subsection{Automagic}\secidx[automagic]{multiple footnotes} +If you want you can turn all footnotes into \cmd{multfootnote}s. +\begin{beschreibung} + \option{multiple}{\default{true}/false} let \cmd{footnote} behave like \cmd{multfootnote}. + \emph{This option can only be set in the preamble}. Default = \code{false} +\end{beschreibung} +\begin{beispiel} + % in preamble: \setfnpct{multiple} + % or \usepackage[multiple]{fnpct} + \begin{minipage}{.4\linewidth} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\footnote{probably fired clay bricks;or + something else}. + \end{minipage} +\end{beispiel} +\secidx*{multiple footnotes} + +\section{Nested Footnotes}\secidx{nested footnotes} +\fnpct provides some support for nested footnotes. There are some restrictions, +though. The command below can be used inside \cmd{footnote} and \cmd{multfootnote}, +but not inside another \cmd{innernote}: +\begin{beschreibung} + \befehl{innernote}*[<mark>]{<text>} a nested footnote. +\end{beschreibung} +The output of the following code can be seen in figure \ref{fig:nested:a}. +\begin{beispiel}[code only] +\documentclass{article} +\usepackage[ + paperwidth=.5\textwidth, + paperheight=12\baselineskip, + margin=5pt, + bottom=1.5cm]{geometry} + +\usepackage{fnpct} + +\begin{document} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\footnote{probably fired clay bricks% + \innernote{or not}}. +\end{document} +\end{beispiel} + +\begin{figure}[h] + \centering + \fbox{\includegraphics{nested_ex_a.pdf}} + \caption{\cmd{innernote} example (a)}\label{fig:nested:a} +\end{figure} + +This is especially useful if you have more than one additional footnote inside a +footnote, a case that can't be solved satisfying (\ie automatic) way with the +method mentioned in section \ref{sec:multiple}. See figure \ref{fig:nested:b} for +the output of this code: +\begin{beispiel}[code only] +\documentclass{article} +\usepackage[ + paperwidth=.5\textwidth, + paperheight=12\baselineskip, + margin=5pt, + bottom=1.5cm]{geometry} + +\usepackage{fnpct} + +\begin{document} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\footnote{probably\innernote{just guessing} + fired clay bricks\innernote{or not}}. +\end{document} +\end{beispiel} + +\begin{figure}[h] + \centering + \fbox{\includegraphics{nested_ex_b.pdf}} + \caption{\cmd{innernote} example (b)}\label{fig:nested:b} +\end{figure} + +\cmd{innernote} can also be used to escape minipages. In this case use +\cmd{innernote} as a replacement for \cmd{footnote} and call this command +later: +\begin{beschreibung} + \befehl{writeinnernotes} writes all \cmd{footnotetext}s to the inner footnotes + when invoked +\end{beschreibung} +See figure \ref{fig:nested:c} for the output of the following code: +\begin{beispiel}[code only] +\documentclass{article} +\usepackage[ + paperwidth=.5\textwidth, + paperheight=12\baselineskip, + margin=5pt, + bottom=1.5cm]{geometry} + +\usepackage{fnpct} + +\begin{document} +\noindent\fbox{% +\begin{minipage}{.9\linewidth} + The three little pigs built their houses + out of straw\innernote{not to be confused with hay}, + sticks\innernote{or lumber according to some sources} + and bricks\innernote{probably}. +\end{minipage}}\writeinnernotes + +\end{document} +\end{beispiel} +\begin{figure}[h] + \centering + \fbox{\includegraphics{nested_ex_c.pdf}} + \caption{\cmd{innernote} example (c)}\label{fig:nested:c} +\end{figure} +\secidx*{nested footnotes} + +\section{Footcites}\secidx{footcites} +Preliminary testing suggests that \fnpct seems to be compatible with the +\cmd{footcite} and \cmd{footfullcite} commands provided by the \paket{biblatex} +package. However, the punctuation switching does not apply to them. + +The kerning works \ldots +\begin{beispiel} + \setfnpct{before-footnote-space=2pt} + \begin{minipage}{.5\linewidth} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\footnote{probably fired clay bricks}. The + companion\footfullcite{companion} has nothing on this + topic. + \end{minipage} +\end{beispiel} + +\ldots\ but the punctuation switching doesn't: +\begin{beispiel} + \begin{minipage}{.5\linewidth} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\footnote{probably fired clay bricks}. The + companion has nothing on this topic\footfullcite{companion}. + \end{minipage} +\end{beispiel} + +One can simulate that behaviour by actively setting one of these commands: +\begin{beschreibung} + \befehl{kfp} insert the \key{after-dot-space} or (if \key{punct-after}{true}) + the \key{before-dot-space}. + \befehl{kfc} insert the \key{after-comma-space} or (if \key{punct-after}{true}) + the \key{before-comma-space}. +\end{beschreibung} +\begin{beispiel} + \setfnpct{after-punct-space=-.15em} + \begin{minipage}{.5\linewidth} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\footnote{probably fired clay bricks}. The + companion has nothing on this topic.\kfp\footfullcite{companion} + \end{minipage} +\end{beispiel} + +In case of \key{punct-after}{true}: +\begin{beispiel} + \setfnpct{punct-after} + \begin{minipage}{.5\linewidth} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\footnote{probably fired clay bricks}. The + companion has nothing on this topic\footfullcite{companion}\kfp. + \end{minipage} +\end{beispiel} +\secidx*{footcites} + +\section{Normal notes}\secidx{normal notes} +The package option \key{normal-marks} (see p.\,\pageref{key:normal-marks}) changes +the layout of the footnote marks in the foot by using \paket[koma-script]{KOMA-Script}'s + +\setapart{\cmd{deffootnote}[<mark indent>]{<indent>}\ma{<par indent>}\ma{<format code>}.} + +The following code is shown in figure \ref{fig:normal}. +\begin{beispiel}[code only] +\documentclass{article} +\usepackage[ + paperwidth=.5\textwidth, + paperheight=12\baselineskip, + margin=5pt, + bottom=1.5cm]{geometry} + +\usepackage[normal-marks]{fnpct} + +\begin{document} + +\noindent The three little pigs built their houses +out of straw\footnote{not to be confused with hay}, +sticks\footnote{or lumber according to some sources} +and bricks\footnote{probably fired clay bricks}. + +\end{document} +\end{beispiel} + +\begin{figure}[h] + \centering + \fbox{\includegraphics{normal_ex.pdf}} + \caption{Demonstration of the \key{normal-marks} option.} + \label{fig:normal} +\end{figure} + +The three indent values used by \fnpct can be changed with the following options: +\begin{beschreibung} + \option{normal-mark-width}{<dim>} The width of the box within which the marks are + set. Default = \code{1em} + \option{normal-indent}{<dim>} The indent of each footnote line \emph{except} the + first. Default = \code{1.5em} + \option{normal-par-indent}{<dim>} Additional indent of a new paragraph inside the + footnote text. Default = \code{1em} +\end{beschreibung} +\secidx*{normal notes} + +\newpage +\section{Other packages}\secidx{other packages} +\fnpct tries its best to support other footnote and related packages\footnote{If +you find some package missing please let me know.}. Each of the following subsections +is dedicated to one of these packages and if and how they work together with \fnpct. +Fortunately most of them work do quite well. + +If the note command is simple enough and follows the standard \cmd{footnote} syntax +you can always try adapting the command yourself. +\begin{beschreibung} + \Befehl{AdaptNote}{<csname>}\ma{<new mult-variant>} this lets \code{<csname>} + adapt to the kerning behaviour and adds an optional \code{*}. It also creates a + corresponding mult-variant. The package option \key{multiple} will now turn + \code{<csname>} into its mult-variant. + \befehl{AdaptNoteMark}{<csname>} this lets \code{<csname>} adapt to the kerning + behaviour and adds an optional \code{*}. +\end{beschreibung} + +For example using the \cmd{sidenote} command from the \paket[tufte-latex]{tufte-handout} +class is easily possible, see also figure \ref{fig:tufte}: +\begin{beispiel}[code only] +\documentclass{tufte-handout} +\usepackage[multiple]{fnpct} +\AdaptNote\sidenote\multsidenote +\begin{document} +Some text in the document body\sidenote{Some +text in a sidenote.;A second sidenote.}. +\end{document} +\end{beispiel} + +\begin{figure}[h] + \centering + \fbox{\includegraphics[trim=2.5cm 24.5cm 2cm 1cm,scale=.75]{tufte_ex.pdf}} + \caption{Adapt {tufte-latex}.} + \label{fig:tufte} +\end{figure} + + +\subsection{bigfoot}\label{ssec:bigfoot}\secidx[bigfoot]{other packages} +The \paket{bigfoot} \cite{bigfoot} package extends the possibilities of the +\paket{manyfoot} package \cite{manyfoot}, see section \ref{ssec:manyfoot}. The main +feature is to use different classes of footnotes which are typeset in different +apparatus on the bottom of the page. + +\fnpct is compatible with \paket{bigfoot}. You need to be a bit cautious, though. +You need to +\begin{itemize} + \item declare footnotes with \cmd{DeclareNewFootnote} \emph{after} loading \fnpct + but in the document \emph{preamble}. +\end{itemize} +\emph{Also verbatim material won't work inside footnotes anymore}. Since \fnpct +does not redefine any \cmd{footnotetext} like command it will still work inside +one of them. + +For every footnote class defined with \cmd{DeclareNewFootnote} the commands +\cmd{footnote<class>} and \cmd{footnotemark<class>} are redefined with the starred +variant and a \cmd{multfootnote<class>} is defined. The \key{multiple} option +will turn all \cmd{footnote<class>} commands into the corresponding +\cmd{multfootnote<class>}. + +\fnpct has an additional package option which \emph{cannot} be set with \cmd{setfnpct} +and only has any effects if \paket{bigfoot} has been loaded: +\begin{beschreibung} + \option{bigfoot-default-top}{\default{true}/false} sets the \code{default} footnote + class as top layer. Default = \code{false} +\end{beschreibung} + +Since this document cannot easily combine \emph{every} footnote package at the same +time for demonstration purposes the following code is shown in figure \ref{fig:bigfoot}: +\begin{beispiel}[code only] +\documentclass{article} +\usepackage[ + paperwidth=.5\textwidth, + paperheight=12\baselineskip, + margin=5pt, + bottom=1.5cm]{geometry} + +\usepackage{bigfoot} +\usepackage[bigfoot-default-top]{fnpct} +\setfnpct{multiple} +\DeclareNewFootnote[para]{B}[alph] + +\begin{document} + +\noindent The three little pigs built their houses +out of straw\footnote*{not to be confused with hay% +\footnoteB{let alone grass}}, sticks\footnote{or +lumber according to some sources} and bricks% +\footnote{probably fired clay bricks;or something}. + +\end{document} +\end{beispiel} + +\begin{figure}[h] + \centering + \fbox{\includegraphics{bigfoot_ex.pdf}} + \caption{\paket*{bigfoot} example} + \label{fig:bigfoot} +\end{figure} + +\newpage +\subsection{endnotes}\secidx[endnotes]{other packages} +The \paket{endnotes} \cite{endnotes} package povides the commands \cmd{endnote} +and \cmd{endnotemark} which can be used to output all notes at the end of a chapter, +say. + +If the package is loaded both commands are adapted: +\begin{beispiel}[code only] + % `fnpct' does this for you: + \AdaptNote\endnote\multendnote + \AdaptNoteMark\endnotemark +\end{beispiel} + +Everything else stays the same: +\begin{beispiel} + \begin{minipage}[t]{.4\linewidth} + \noindent The three little pigs built their houses + out of straw\endnote{not to be confused with hay}, + sticks\endnote{or lumber according to some sources} + and bricks\endnote{probably fired clay bricks}. + + \theendnotes + \end{minipage}\hfil + \begin{minipage}[t]{.4\linewidth} + \noindent The three little pigs built their houses + out of straw\endnote*{not to be confused with hay}, + sticks\endnote{or lumber according to some sources} + and bricks\multendnote{probably fired clay bricks;or + something else}. + + \theendnotes + \end{minipage} +\end{beispiel} + +\subsection{fixfoot}\secidx[fixfoot]{other packages} +The \paket{fixfoot} \cite{fixfoot} package provides possibility to create repeating +footnotes. \fnpct supports this package provided you take care of the following: +\begin{itemize} + \item use \cmd{DeclareFixedFootnote} only in the preamble but \emph{after} loading + \fnpct. +\end{itemize} +\cmd{DeclareFixedFootnote}{\cmd{cs}}\ma{<footnote text>} is used to store the +\ma{<footnote text>} in \cmd{cs} and create a footnote mark for it but don't +repeat the footnote text on the same page in the bottom. The document needs +several runs to get all the numbers and footnotes right. + +Every fixed footnote declared with \cmd{DeclareFixedFootnote} gets an optional +\code{*} to prevent the punctuation switching. There is \emph{no} mult-variant +of the fixed notes! + +Since this document cannot easily combine \emph{every} footnote package at the same +time for demonstration purposes the following code is shown in figure \ref{fig:fixfoot}: +\begin{beispiel}[code only] +\documentclass{article} +\usepackage[ + paperwidth=.55\textwidth, + paperheight=12\baselineskip, + margin=5pt, + bottom=1.5cm]{geometry} + +\usepackage{fixfoot} +\usepackage{fnpct} + +\DeclareFixedFootnote{\myfn}{I'm confused: what do I want to say?} + +\begin{document} + +\noindent The three little pigs\myfn\ built their houses +out of straw\myfn*, sticks\footnote{or lumber according +to some sources} and bricks\footnote{probably fired clay +bricks}. + +\end{document} +\end{beispiel} + +\begin{figure}[h] + \centering + \fbox{\includegraphics{fixfoot_ex.pdf}} + \caption{\paket*{fixfoot} example} + \label{fig:fixfoot} +\end{figure} + +\subsection{footmisc}\label{ssec:manyfoot}\secidx[footmisc]{other packages} +The \paket{footmisc} package \cite{footmisc} provides a range of options to customize +footnotes, for example output them as margin notes or count footnotes per page. + +Testing showed no incompatibilities with \paket{footmisc}. The only thing is that +you won't have to use its \code{multiple} option. + +\subsection{footnote}\secidx[footnote]{other packages} +Unfortunately \fnpct is not compatible with the \paket{footnote} package \cite{footnote}. +Or more precisely it is not compatible if the command pair \cmd{savenotes}/\cmd{spewnotes} +is invoked. This disables \paket{footnote}'s environments as well as its environment +escaping mechanism through \cmd{makesavenoteenv}. + +\subsection{manyfoot}\secidx[manyfoot]{other packages} +The \paket{manyfoot} package \cite{manyfoot} is not and will not directly be +supported. It is loaded by \paket{bigfoot} (see section \ref{ssec:bigfoot}), anyway. +And since the latter states this in its documentation +\begin{zitat}[David Kastrup \cite{bigfoot}] + Purpose of this package is to provide a one-stop solution to almost all problems + related to footnotes. You can use it as a drop-in replacement of the `\paket{manyfoot}' + package, but without many of its shortcomings, and quite a few features of its + own. +\end{zitat} +you should probably prefer it anyway. + +If it is \emph{really} wanted by users I might change my opinion, though \ldots + +\subsection{pagenote}\secidx[pagenote]{other packages} +The package \paket{pagenote} \cite{pagenote} is supported and its \cmd{pagenote} +command is treated the same way as all other note commands: it got an optional +\code{*} argument and an additional \cmd{multpagenote} is defined. + +\subsection{parnotes}\secidx[parnotes]{other packages} +The \paket{parnotes} package \cite{parnotes} does something similar to the \paket{endnotes} +package. basically it allows to output the footnote text after a paragraph, either +by using a special environment or by invoking \cmd{parnotes}. + +If \paket{parnotes} is loaded \fnpct extends its functionality analogous +to the one of \paket{endnotes}. + +Again the \key{multiple} option turns all \cmd{parnote}s into \cmd{multparnote}s. +\begin{beispiel} + \begin{minipage}[t]{.4\linewidth} + \noindent The three little pigs built their houses + out of straw\parnote{not to be confused with hay}, + sticks\parnote{or lumber according to some sources} + and bricks\parnote{probably fired clay bricks}. + + \parnotes + \end{minipage}\hfil + \begin{minipage}[t]{.4\linewidth} + \noindent The three little pigs built their houses + out of straw\parnote*{not to be confused with hay}, + sticks\parnote{or lumber according to some sources} + and bricks\multparnote{probably fired clay bricks;or + something else}. + + \parnotes + \end{minipage} +\end{beispiel} + +\subsection{sepfootnotes}\secidx[sepfootnotes]{other packages} +\fnpct supports the \paket{sepfootnotes} package \cite{sepfootnotes}. Each note +type you have created with with one of the commands +\begin{description} + \item \cmd{newfootnotes}{<prefix>}, + \item \cmd{newendnotes}{<prefix>} or + \item \cmd{newsymbolfootnotes}{<prefix>} +\end{description} +gets the additional optional \code{*} to prevent punctuation switching. Also the +corresponding mult-variant \cmd{<prefix>multnote} is defined. The option \key{multiple} +again turns all note commands into their mult-variant. + +You have to use the \cmd{newfootnotes} commands in the document preamble after +loading \fnpct. + +\begin{beispiel} + % preamble \newfootnotes{a} + \anotecontent{first}{not to be confused with hay} + \anotecontent{second}{or lumber according to some sources} + \anotecontent{third}{probably fired clay bricks} + \begin{minipage}{.4\linewidth} + \noindent The three little pigs built their houses + out of straw\anote{first}, sticks\anote{second} and + bricks\anote{third}. + \end{minipage} +\end{beispiel} + +\subsection{tablefootnote}\secidx[tablefootnote]{other packages} +The package \paket{tablefootnote} \cite{tablefootnote} is supported and its +\cmd{tablefootnote} command is treated the same way as all other note commands: +it got an optional \code{*} argument and an additional \cmd{multtablefootnote} +is defined. + +\subsection{yafoot}\secidx[yafoot bundle]{other packages} +Currently no issues are known when using \fnpct with one or all of the packages +of the \paket{yafoot} \cite{yafoot} bundle. Just for reference: these packages are +\paket*{pfnote}, \paket*{fnpos} and \paket*{dblfnote}. +\secidx*{other packages} + +\newpage +\appendix +\printbibliography +\printindex +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/fnpct/nested_ex.tex b/Master/texmf-dist/doc/latex/fnpct/nested_ex.tex new file mode 100644 index 00000000000..9d656d182ff --- /dev/null +++ b/Master/texmf-dist/doc/latex/fnpct/nested_ex.tex @@ -0,0 +1,47 @@ +% -------------------------------------------------------------------------- +% the FNPCT package +% +% footnote kerning +% +% 2012/05/22 +% -------------------------------------------------------------------------- +% Clemens Niederberger +% Web: https://bitbucket.org/cgnieder/fnpct/ +% E-Mail: contact@mychemistry.eu +% -------------------------------------------------------------------------- +% Copyright 2012 Clemens Niederberger +% +% 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. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Clemens Niederberger. +% -------------------------------------------------------------------------- +% If you have any ideas, questions, suggestions or bugs to report, please +% feel free to contact me. +% -------------------------------------------------------------------------- +\documentclass{article} +\usepackage[ + paperwidth=.5\textwidth, + paperheight=12\baselineskip, + margin=5pt, + bottom=1.5cm]{geometry} + +\usepackage[multiple]{fnpct} + +\begin{document} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\multfootnote{probably fired clay bricks% + \footnotemark;*or something else;what do I know}. +\end{document} + + + diff --git a/Master/texmf-dist/doc/latex/fnpct/nested_ex_a.tex b/Master/texmf-dist/doc/latex/fnpct/nested_ex_a.tex new file mode 100644 index 00000000000..6085527aa34 --- /dev/null +++ b/Master/texmf-dist/doc/latex/fnpct/nested_ex_a.tex @@ -0,0 +1,47 @@ +% -------------------------------------------------------------------------- +% the FNPCT package +% +% footnote kerning +% +% 2012/05/22 +% -------------------------------------------------------------------------- +% Clemens Niederberger +% Web: https://bitbucket.org/cgnieder/fnpct/ +% E-Mail: contact@mychemistry.eu +% -------------------------------------------------------------------------- +% Copyright 2012 Clemens Niederberger +% +% 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. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Clemens Niederberger. +% -------------------------------------------------------------------------- +% If you have any ideas, questions, suggestions or bugs to report, please +% feel free to contact me. +% -------------------------------------------------------------------------- +\documentclass{article} +\usepackage[ + paperwidth=.5\textwidth, + paperheight=12\baselineskip, + margin=5pt, + bottom=1.5cm]{geometry} + +\usepackage{fnpct} + +\begin{document} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\footnote{probably fired clay bricks% + \innernote{or not}}. +\end{document} + + + diff --git a/Master/texmf-dist/doc/latex/fnpct/nested_ex_b.tex b/Master/texmf-dist/doc/latex/fnpct/nested_ex_b.tex new file mode 100644 index 00000000000..0349ddaa147 --- /dev/null +++ b/Master/texmf-dist/doc/latex/fnpct/nested_ex_b.tex @@ -0,0 +1,47 @@ +% -------------------------------------------------------------------------- +% the FNPCT package +% +% footnote kerning +% +% 2012/05/22 +% -------------------------------------------------------------------------- +% Clemens Niederberger +% Web: https://bitbucket.org/cgnieder/fnpct/ +% E-Mail: contact@mychemistry.eu +% -------------------------------------------------------------------------- +% Copyright 2012 Clemens Niederberger +% +% 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. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Clemens Niederberger. +% -------------------------------------------------------------------------- +% If you have any ideas, questions, suggestions or bugs to report, please +% feel free to contact me. +% -------------------------------------------------------------------------- +\documentclass{article} +\usepackage[ + paperwidth=.5\textwidth, + paperheight=12\baselineskip, + margin=5pt, + bottom=1.5cm]{geometry} + +\usepackage{fnpct} + +\begin{document} + \noindent The three little pigs built their houses + out of straw\footnote{not to be confused with hay}, + sticks\footnote{or lumber according to some sources} + and bricks\footnote{probably\innernote{just guessing} + fired clay bricks\innernote{or not}}. +\end{document} + + + diff --git a/Master/texmf-dist/doc/latex/fnpct/nested_ex_c.tex b/Master/texmf-dist/doc/latex/fnpct/nested_ex_c.tex new file mode 100644 index 00000000000..1379fa6fae9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/fnpct/nested_ex_c.tex @@ -0,0 +1,47 @@ +% -------------------------------------------------------------------------- +% the FNPCT package +% +% footnote kerning +% +% 2012/05/22 +% -------------------------------------------------------------------------- +% Clemens Niederberger +% Web: https://bitbucket.org/cgnieder/fnpct/ +% E-Mail: contact@mychemistry.eu +% -------------------------------------------------------------------------- +% Copyright 2012 Clemens Niederberger +% +% 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. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Clemens Niederberger. +% -------------------------------------------------------------------------- +% If you have any ideas, questions, suggestions or bugs to report, please +% feel free to contact me. +% -------------------------------------------------------------------------- +\documentclass{article} +\usepackage[ + paperwidth=.5\textwidth, + paperheight=12\baselineskip, + margin=5pt, + bottom=1.5cm]{geometry} + +\usepackage{fnpct} + +\begin{document} +\noindent\fbox{% +\begin{minipage}{.9\linewidth} + The three little pigs built their houses + out of straw\innernote{not to be confused with hay}, + sticks\innernote{or lumber according to some sources} + and bricks\innernote{probably}. +\end{minipage}}\writeinnernotes + +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/fnpct/normal_ex.tex b/Master/texmf-dist/doc/latex/fnpct/normal_ex.tex new file mode 100644 index 00000000000..af02311ef34 --- /dev/null +++ b/Master/texmf-dist/doc/latex/fnpct/normal_ex.tex @@ -0,0 +1,45 @@ +% -------------------------------------------------------------------------- +% the FNPCT package +% +% footnote kerning +% +% 2012/05/22 +% -------------------------------------------------------------------------- +% Clemens Niederberger +% Web: https://bitbucket.org/cgnieder/fnpct/ +% E-Mail: contact@mychemistry.eu +% -------------------------------------------------------------------------- +% Copyright 2012 Clemens Niederberger +% +% 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. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Clemens Niederberger. +% -------------------------------------------------------------------------- +% If you have any ideas, questions, suggestions or bugs to report, please +% feel free to contact me. +% -------------------------------------------------------------------------- +\documentclass{article} +\usepackage[ + paperwidth=.5\textwidth, + paperheight=12\baselineskip, + margin=5pt, + bottom=1.5cm]{geometry} + +\usepackage[normal-marks]{fnpct} + +\begin{document} + +\noindent The three little pigs built their houses +out of straw\footnote{not to be confused with hay}, +sticks\footnote{or lumber according to some sources} +and bricks\footnote{probably fired clay bricks}. + +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/fnpct/pagenote_ex.tex b/Master/texmf-dist/doc/latex/fnpct/pagenote_ex.tex new file mode 100644 index 00000000000..b3710fb9026 --- /dev/null +++ b/Master/texmf-dist/doc/latex/fnpct/pagenote_ex.tex @@ -0,0 +1,48 @@ +% -------------------------------------------------------------------------- +% the FNPCT package +% +% footnote kerning +% +% 2012/05/22 +% -------------------------------------------------------------------------- +% Clemens Niederberger +% Web: https://bitbucket.org/cgnieder/fnpct/ +% E-Mail: contact@mychemistry.eu +% -------------------------------------------------------------------------- +% Copyright 2012 Clemens Niederberger +% +% 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. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Clemens Niederberger. +% -------------------------------------------------------------------------- +% If you have any ideas, questions, suggestions or bugs to report, please +% feel free to contact me. +% -------------------------------------------------------------------------- +\documentclass{article} +\usepackage[ + paperwidth=.55\textwidth, + paperheight=12\baselineskip, + margin=5pt, + bottom=1.5cm]{geometry} + +\usepackage{pagenote} +\usepackage[multiple]{fnpct} + +\makepagenote +\begin{document} +\section{Text} +\noindent The three little pigs built their houses +out of straw\pagenote{not to be confused with hay}, +sticks\pagenote{or lumber according to some sources} +and bricks\pagenote{probably fired clay bricks;or whatever}. + +\printnotes +\end{document} diff --git a/Master/texmf-dist/doc/latex/fnpct/sepfootnotes_ex.tex b/Master/texmf-dist/doc/latex/fnpct/sepfootnotes_ex.tex new file mode 100644 index 00000000000..5aec78ecd93 --- /dev/null +++ b/Master/texmf-dist/doc/latex/fnpct/sepfootnotes_ex.tex @@ -0,0 +1,50 @@ +% -------------------------------------------------------------------------- +% the FNPCT package +% +% footnote kerning +% +% 2012/05/22 +% -------------------------------------------------------------------------- +% Clemens Niederberger +% Web: https://bitbucket.org/cgnieder/fnpct/ +% E-Mail: contact@mychemistry.eu +% -------------------------------------------------------------------------- +% Copyright 2012 Clemens Niederberger +% +% 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. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Clemens Niederberger. +% -------------------------------------------------------------------------- +% If you have any ideas, questions, suggestions or bugs to report, please +% feel free to contact me. +% -------------------------------------------------------------------------- +\documentclass{article} +\usepackage[ + paperwidth=.55\textwidth, + paperheight=12\baselineskip, + margin=5pt, + bottom=1.5cm]{geometry} + +\usepackage[multiple]{fnpct} + +\usepackage{sepfootnotes} +\newfootnotes{a} +\anotecontent{first}{not to be confused with hay} +\anotecontent{second}{or lumber according to some sources} +\anotecontent{third}{probably fired clay bricks} + +\begin{document} + +\noindent The three little pigs built their houses +out of straw\anote{first}, sticks\anote{second} and +bricks\anote{third}. + +\end{document} diff --git a/Master/texmf-dist/doc/latex/fnpct/tufte_ex.tex b/Master/texmf-dist/doc/latex/fnpct/tufte_ex.tex new file mode 100644 index 00000000000..9b48b87a7e1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/fnpct/tufte_ex.tex @@ -0,0 +1,36 @@ +% -------------------------------------------------------------------------- +% the FNPCT package +% +% footnote kerning +% +% 2012/05/22 +% -------------------------------------------------------------------------- +% Clemens Niederberger +% Web: https://bitbucket.org/cgnieder/fnpct/ +% E-Mail: contact@mychemistry.eu +% -------------------------------------------------------------------------- +% Copyright 2012 Clemens Niederberger +% +% 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. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Clemens Niederberger. +% -------------------------------------------------------------------------- +% If you have any ideas, questions, suggestions or bugs to report, please +% feel free to contact me. +% -------------------------------------------------------------------------- +\documentclass{tufte-handout} +\usepackage[multiple]{fnpct} +\AdaptNote\sidenote\multsidenote +\begin{document} + +Some text in the document body\sidenote{Some text in a sidenote.;A second sidenote}. + +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/fnpct/fnpct.sty b/Master/texmf-dist/tex/latex/fnpct/fnpct.sty new file mode 100644 index 00000000000..d46bdbbe357 --- /dev/null +++ b/Master/texmf-dist/tex/latex/fnpct/fnpct.sty @@ -0,0 +1,684 @@ +% -------------------------------------------------------------------------- +% the FNPCT package +% +% footnote kerning +% +% 2012/05/22 +% -------------------------------------------------------------------------- +% Clemens Niederberger +% Web: https://bitbucket.org/cgnieder/fnpct/ +% E-Mail: contact@mychemistry.eu +% -------------------------------------------------------------------------- +% Copyright 2012 Clemens Niederberger +% +% 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. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Clemens Niederberger. +% -------------------------------------------------------------------------- +% If you have any ideas, questions, suggestions or bugs to report, please +% feel free to contact me. +% -------------------------------------------------------------------------- +% the package is inspired by the following question on TeX.SE: +% http://tex.stackexchange.com/q/56094/5049 +% -------------------------------------------------------------------------- +\RequirePackage { xparse , l3keys2e , scrlfile } +\ProvidesExplPackage + {fnpct} + {2012/05/22} + {0.1} + {footnote kerning} + +% -------------------------------------------------------------------------- +% SETTING THINGS UP: +% this is plain's \nobreak: +\cs_new:Npn \fnpct_no_break: { \tex_penalty:D \c_ten_thousand } + +\cs_new:Npn \fnpct_dont_mess_around: + { + \iow_log:n { ................................................. } + \iow_log:n { . ~ fnpct~info: } + \iow_log:n { . } + \iow_log:n { . ~ All~right,~not~messing~around.~:( } + \iow_log:n { . ~ But~I'd~really~love~to~(http://www.youtube.com/watch?v=Bqz876VkwwY). } + \iow_log:n { ................................................. } + } + +% rigid lengths: +\dim_new:N \l_fnpct_after_comma_dim +\dim_set:Nn \l_fnpct_after_comma_dim { -.06em } +\dim_new:N \l_fnpct_after_dot_dim +\dim_set:Nn \l_fnpct_after_dot_dim { -.06em } +\dim_new:N \l_fnpct_before_comma_dim +\dim_set:Nn \l_fnpct_before_comma_dim { -.16em } +\dim_new:N \l_fnpct_before_dot_dim +\dim_set:Nn \l_fnpct_before_dot_dim { -.16em } +\dim_new:N \l_fnpct_before_footnote_dim +\dim_set:Nn \l_fnpct_before_footnote_dim { .06em } +\dim_new:N \l_fnpct_normal_mark_width_dim +\dim_set:Nn \l_fnpct_normal_mark_width_dim { 1em } +\dim_new:N \l_fnpct_normal_indent_dim +\dim_set:Nn \l_fnpct_normal_indent_dim { 1.5em } +\dim_new:N \l_fnpct_normal_parindent_dim +\dim_set:Nn \l_fnpct_normal_parindent_dim { 1em } + +% multiple footnote input and output variables: +\tl_new:N \l_fnpct_multiple_footnotes_delimiter_tl +\tl_set:Nn \l_fnpct_multiple_footnotes_delimiter_tl { ; } +\tl_new:N \l_fnpct_multiple_footnote_separator_tl +% check for KOMA-Script's or anyone's \multfootsep: +\cs_if_exist:NTF \multfootsep + { \tl_set:Nn \l_fnpct_multiple_footnote_separator_tl { \multfootsep } } + { \tl_set:Nn \l_fnpct_multiple_footnote_separator_tl { , } } + +% basic booleans for punctuation order switch and multiple footnotes +\bool_new:N \l_fnpct_punct_after_bool +\bool_new:N \l_fnpct_multiple_default_bool +\bool_new:N \l_fnpct_multiple_footnotes_bool +\bool_new:N \l_fnpct_dont_switch_bool +\bool_new:N \l_fnpct_bigfoot_default_top_bool +\bool_new:N \l_fnpct_normal_marks_bool + +% options: +\keys_define:nn { fnpct } + { + after-comma-space .dim_set:N = \l_fnpct_after_comma_dim , + after-dot-space .dim_set:N = \l_fnpct_after_dot_dim , + before-comma-space .dim_set:N = \l_fnpct_before_comma_dim , + before-dot-space .dim_set:N = \l_fnpct_before_dot_dim , + after-punct-space .code:n = + \dim_set:Nn \l_fnpct_after_comma_dim { #1 } + \dim_set:Nn \l_fnpct_after_dot_dim { #1 } , + before-punct-space .code:n = + \dim_set:Nn \l_fnpct_before_comma_dim { #1 } + \dim_set:Nn \l_fnpct_before_dot_dim { #1 } , + before-footnote-space .dim_set:N = \l_fnpct_before_footnote_dim , + punct-after .bool_set:N = \l_fnpct_punct_after_bool , + punct-after .default:n = true , + dont-mess-around .code:n = + \dim_zero:N \l_fnpct_after_comma_dim + \dim_zero:N \l_fnpct_after_dot_dim + \dim_zero:N \l_fnpct_before_comma_dim + \dim_zero:N \l_fnpct_before_dot_dim + \dim_zero:N \l_fnpct_before_footnote_dim + \bool_set_true:N \l_fnpct_punct_after_bool + \fnpct_dont_mess_around: , + mult-fn-delim .tl_set:N = \l_fnpct_multiple_footnotes_delimiter_tl , + mult-fn-sep .tl_set:N = \l_fnpct_multiple_footnote_separator_tl , + multiple .bool_set:N = \l_fnpct_multiple_default_bool , + multiple .default:n = true , + bigfoot-default-top .bool_set:N = \l_fnpct_bigfoot_default_top_bool , + bigfoot-default-top .default:n = true , + normal-marks .bool_set:N = \l_fnpct_normal_marks_bool , + normal-marks .default:n = true , + normal-mark-width .dim_set:N = \l_fnpct_normal_mark_width_dim , + normal-indent .dim_set:N = \l_fnpct_normal_indent_dim , + normal-parindent .dim_set:N = \l_fnpct_normal_parindent_dim , + verb-format .tl_set:N = \l_fnpct_verbatim_format_tl + } + +\ProcessKeysOptions { fnpct } + +% -------------------------------------------------------------------------- +% MAIN INTERNAL FOOTNOTE FUNCTION: +% #1: original command +% #2: optional argument of original command +% #3: mandatory argument of original command +% #4: boolean flag for starred version +\cs_new_protected:Npn \fnpct_dot_or_comma:Nnnn #1#2#3#4 + { + % if a dot follows remove it, insert dot, skip back + % and then insert footnote + \fnpct_no_break: + \IfBooleanT { #4 } { \bool_set_true:N \l_fnpct_dont_switch_bool } + \peek_meaning_remove:NTF . + { + \bool_if:nTF { \l_fnpct_punct_after_bool || \l_fnpct_dont_switch_bool } + { \fnpct_no_break: \skip_horizontal:N \l_fnpct_before_footnote_dim } + { . \fnpct_no_break: \skip_horizontal:N \l_fnpct_after_dot_dim } + \IfNoValueTF { #2 } + { #1 { #3 } } + { #1 [ #2 ] { #3 } } + \fnpct_write_inner:N #1 + \bool_if:nT { \l_fnpct_punct_after_bool || \l_fnpct_dont_switch_bool } + { \skip_horizontal:N \l_fnpct_before_dot_dim \fnpct_no_break: . } + \bool_set_false:N \l_fnpct_dont_switch_bool + } + { + % else do the same with comma + \peek_meaning_remove:NTF , + { + \bool_if:nTF { \l_fnpct_punct_after_bool || \l_fnpct_dont_switch_bool } + { \fnpct_no_break: \skip_horizontal:N \l_fnpct_before_footnote_dim } + { , \fnpct_no_break: \skip_horizontal:N \l_fnpct_after_comma_dim } + \IfNoValueTF { #2 } + { #1 { #3 } } + { #1 [ #2 ] { #3 } } + \fnpct_write_inner:N #1 + \bool_if:nT { \l_fnpct_punct_after_bool || \l_fnpct_dont_switch_bool } + { \skip_horizontal:N \l_fnpct_before_comma_dim \fnpct_no_break: , } + \bool_set_false:N \l_fnpct_dont_switch_bool + } + { + % what about multiple footnotes? (their usage is discouraged with + % this package, but anyway...) + % this check should probably/maybe be removed (?!) + \tl_set:Nx \l_tmpa_tl { \cs_to_str:N #1 } + \prop_get:NVN \g_fnpct_adapted_notes_prop \l_tmpa_tl \l_tmpb_tl + \exp_args:No + \peek_meaning:NTF \l_tmpb_tl + { + \bool_set_true:N \l_fnpct_multiple_footnotes_bool + % else insert space and then note + \fnpct_no_break: \skip_horizontal:N \l_fnpct_before_footnote_dim + \IfNoValueTF { #2 } + { #1 { #3 } } + { #1 [ #2 ] { #3 } } + \fnpct_write_inner:N #1 + \fnpct_no_break: + \textsuperscript { \l_fnpct_multiple_footnote_separator_tl } + % \bool_set_false:N \l_fnpct_dont_switch_bool + } + { + % else insert space and then note + \bool_if:NTF \l_fnpct_multiple_footnotes_bool + { \bool_set_false:N \l_fnpct_multiple_footnotes_bool } + { \fnpct_no_break: \skip_horizontal:N \l_fnpct_before_footnote_dim } + \IfNoValueTF { #2 } + { #1 { #3 } } + { #1 [ #2 ] { #3 } } + \fnpct_write_inner:N #1 + \bool_set_false:N \l_fnpct_dont_switch_bool + } + } + } + } +\cs_generate_variant:Nn \fnpct_dot_or_comma:Nnnn { cnnn } + +% -------------------------------------------------------------------------- +% MULTIPLE FOOTNOTES +\seq_new:N \l_fnpct_multiple_footnotes_seq +\cs_generate_variant:Nn \seq_set_split:Nnn { NVn } + +% #1: original note command +% #2: star +% #3: multiple notes separated by \l_fnpct_multiple_footnotes_delimiter_tl +\cs_new_protected:Npn \fnpct_mult_note:Nnn #1#2#3 + { + \IfBooleanT { #2 } { \bool_set_true:N \l_fnpct_dont_switch_bool } + % split input: + \seq_set_split:NVn \l_fnpct_multiple_footnotes_seq + \l_fnpct_multiple_footnotes_delimiter_tl + { #3 } + \fnpct_no_break: + % look for dot and do magic: + \peek_meaning_remove:NTF . + { + \bool_if:nTF { \l_fnpct_punct_after_bool || \l_fnpct_dont_switch_bool } + { \fnpct_no_break: \skip_horizontal:N \l_fnpct_before_footnote_dim } + { . \fnpct_no_break: \skip_horizontal:N \l_fnpct_after_dot_dim } + \fnpct_write_notes:N #1 + \bool_if:nT { \l_fnpct_punct_after_bool || \l_fnpct_dont_switch_bool } + { \skip_horizontal:N \l_fnpct_before_dot_dim \fnpct_no_break: . } + \bool_set_false:N \l_fnpct_dont_switch_bool + } + { + % else look for comma and do magic: + \peek_meaning_remove:NTF , + { + \bool_if:nTF { \l_fnpct_punct_after_bool || \l_fnpct_dont_switch_bool } + { \fnpct_no_break: \skip_horizontal:N \l_fnpct_before_footnote_dim } + { , \fnpct_no_break: \skip_horizontal:N \l_fnpct_after_comma_dim } + \fnpct_write_notes:N #1 + \bool_if:nT { \l_fnpct_punct_after_bool || \l_fnpct_dont_switch_bool } + { \skip_horizontal:N \l_fnpct_before_comma_dim \fnpct_no_break: , } + \bool_set_false:N \l_fnpct_dont_switch_bool + } + { + % else insert space and notes: + \tl_set:Nx \l_tmpa_tl { \cs_to_str:N #1 } + \prop_get:NVN \g_fnpct_adapted_notes_prop \l_tmpa_tl \l_tmpb_tl + \exp_args:No + \peek_meaning:NTF \l_tmpb_tl + { + \bool_set_true:N \l_fnpct_multiple_footnotes_bool + \fnpct_no_break: \skip_horizontal:N \l_fnpct_before_footnote_dim + \fnpct_write_notes:N #1 + \bool_set_false:N \l_fnpct_dont_switch_bool + \textsuperscript { \l_fnpct_multiple_footnote_separator_tl } + } + { + \bool_if:NTF \l_fnpct_multiple_footnotes_bool + { \bool_set_false:N \l_fnpct_multiple_footnotes_bool } + { \fnpct_no_break: \skip_horizontal:N \l_fnpct_before_footnote_dim } + \fnpct_write_notes:N #1 + \bool_set_false:N \l_fnpct_dont_switch_bool + } + } + } + } +\cs_generate_variant:Nn \fnpct_mult_note:Nnn { cnn } + +% #1: original note command +\cs_new_protected:Npn \fnpct_write_notes:N #1 + { + \int_zero:N \l_tmpa_int + \seq_map_inline:Nn \l_fnpct_multiple_footnotes_seq + { + \fnpct_read_footnote_with_option:w ##1 \q_stop { #1 } + \int_incr:N \l_tmpa_int + } + } + +% this shouldn't be a document command but is an really easy way to make +% biblatex's \footcite et.al. compatible with the `multiple' option +% #1: optional star => only invoke \footnotetext +% #2: optional argument to original note command +% #3: mandatory argument to original note command +% #4: original note command +\bool_new:N \g_fnpct_only_text_bool +\NewDocumentCommand \fnpct_read_footnote_with_option:w { sou{\q_stop}m } + { + % FIXME: change \seq_length into \seq_count when it has been renamed + \bool_if:nT + { + \int_compare_p:n { \l_tmpa_int > 0 } + && + \int_compare_p:n { \l_tmpa_int < \seq_length:N \l_fnpct_multiple_footnotes_seq } + } + { + \IfBooleanTF { #1 } + { \tex_unskip:D } + { \textsuperscript { \l_fnpct_multiple_footnote_separator_tl } } + } + \IfBooleanTF { #1 } + { + \bool_gset_true:N \g_fnpct_only_text_bool + \IfNoValueTF { #2 } + { \footnotetext { #3 } } + { \footnotetext [ #2 ] { #3 } } + } + { + \IfNoValueTF { #2 } + { #4 { #3 } } + { #4 [ #2 ] { #3 } } + } + \fnpct_write_inner:N #4 + } + +% -------------------------------------------------------------------------- +% NESTED FOOTNOTES: +% 1 layer of nesting... +\prop_new:N \g_fnpct_inner_footnote_prop +\prop_new:N \g_fnpct_inner_footnote_hyperref_prop +\cs_generate_variant:Nn \prop_gput:Nnn { Nxn , Nxo } + +% this shouldn't be a document command! But for the time being I'll stick to +% this easy solution... +\NewDocumentCommand \fnpct_inner_footnote:w { o+m } + { + \IfNoValueTF { #1 } + { + % TODO: maybe detect what type of note we're in and use the appropriate mark? + \fnpct_orig_footnotemark:w + \prop_gput:Nxn \g_fnpct_inner_footnote_prop { \thefootnote } { #2 } + \bool_if:NT \l_fnpct_hyperref_bool + { + \prop_gput:Nxo \g_fnpct_inner_footnote_hyperref_prop + { \thefootnote } { \Hy@footnote@currentHref } + } + } + { + \fnpct_orig_footnotemark:w [ #1 ] + \prop_gput:Nnn \g_fnpct_inner_footnote_prop { #1 } { #2 } + \bool_if:NT \l_fnpct_hyperref_bool + { + \prop_gput:Nno \g_fnpct_inner_footnote_hyperref_prop + { #1 } { \Hy@footnote@currentHref } + } + } + } + +\cs_new:Npn \fnpct_write_inner:N #1 + { + \token_if_eq_meaning:NNF #1 \fnpct_inner_footnote:w + { + \prop_map_inline:Nn \g_fnpct_inner_footnote_prop + { + \footnotetext [ ##1 ] + { + \bool_if:NT \l_fnpct_hyperref_bool + { + \prop_get:NnN \g_fnpct_inner_footnote_hyperref_prop + { ##1 } \l_tmpa_tl + \Hy@raisedlink + { \exp_args:No \hyper@@anchor { \l_tmpa_tl } } + } + ##2 + } + } + \prop_gclear:N \g_fnpct_inner_footnote_prop + } + } + +\cs_new:Npn \writeinnernotes + { \fnpct_write_inner:N X } + +% -------------------------------------------------------------------------- +% MANUAL KERNING: +\cs_new:Npn \kfp + { + \bool_if:NTF \l_fnpct_punct_after_bool + { \skip_horizontal:N \l_fnpct_before_dot_dim } + { \skip_horizontal:N \l_fnpct_after_dot_dim } + } +\cs_new:Npn \kfc + { + \bool_if:NTF \l_fnpct_punct_after_bool + { \skip_horizontal:N \l_fnpct_before_comma_dim } + { \skip_horizontal:N \l_fnpct_after_comma_dim } + } + +% -------------------------------------------------------------------------- +% NORMAL MARKS: +\AtBeginDocument + { + \bool_if:NT \l_fnpct_normal_marks_bool + { + \cs_if_exist:NF \KOMAoption + { \RequirePackage { scrextend } } + \deffootnote + [ \l_fnpct_normal_mark_width_dim ] + { \l_fnpct_normal_indent_dim } + { \l_fnpct_normal_parindent_dim } + { \thefootnotemark . \enskip } + } + } + +% -------------------------------------------------------------------------- +% LET'S MAKE IT EASIER TO ADAPT EXISTIUNG FUNCTIONS: +\prop_new:N \g_fnpct_adapted_notes_prop +\cs_generate_variant:Nn \prop_put:Nnn { Nxn } + +% COPY, RENEW AND CREATE MULT +% standard \footnote[<mark>]{<text>} like commands +% #1: old new name +% #2: internal name of old definition +% #3: mult-variant +\cs_new:Npn \fnpct_renew_and_mult:NNN #1#2#3 + { + \prop_gput:Nxn \g_fnpct_adapted_notes_prop { \cs_to_str:N #2 } { #1 } + \cs_new_eq:NN #2 #1 + \fnpct_create_mult_variant:NN #3 #2 + \bool_if:NTF \l_fnpct_multiple_default_bool + { \cs_set_eq:NN #1 #3 } + { + \RenewDocumentCommand #1 { so+m } + { \fnpct_dot_or_comma:Nnnn #2 { ##2 } { ##3 } { ##1 } } + } + } +\cs_generate_variant:Nn \fnpct_renew_and_mult:NNN { ccc , NcN } + +\cs_new:Npn \fnpct_renew_and_mult_no_opt:NNN #1#2#3 + { + \prop_gput:Nxn \g_fnpct_adapted_notes_prop { \cs_to_str:N #2 } { #1 } + \cs_new_eq:NN #2 #1 + \fnpct_create_mult_variant:NN #3 #2 + \bool_if:NTF \l_fnpct_multiple_default_bool + { \cs_set_eq:NN #1 #3 } + { + \RenewDocumentCommand #1 { s+m } + { \fnpct_dot_or_comma:Nnnn #2 { \NoValue } { ##2 } { ##1 } } + } + } +\cs_generate_variant:Nn \fnpct_renew_and_mult_no_opt:NNN { ccc } + +% renew but don't create mult-variant: +\cs_new:Npn \fnpct_renew:NN #1#2 + { + \prop_gput:Nxn \g_fnpct_adapted_notes_prop { \cs_to_str:N #2 } { #1 } + \cs_new_eq:NN #2 #1 + \RenewDocumentCommand #1 { sm } + { \fnpct_dot_or_comma:Nnnn #2 { \NoValue } { ##2 } { ##1 } } + } +\cs_generate_variant:Nn \fnpct_renew:NN { cc } + +\cs_new:Npn \fnpct_renew_no_arg:NN #1#2 + { + \prop_gput:Nxn \g_fnpct_adapted_notes_prop { \cs_to_str:N #2 } { #1 } + \cs_new_eq:NN #2 #1 + \RenewDocumentCommand #1 { s } + { \fnpct_dot_or_comma:Nnnn #2 { \NoValue } { } { ##1 } } + } +\cs_generate_variant:Nn \fnpct_renew_no_arg:NN { cc } + +\cs_new:Npn \fnpct_new:NN #1#2 + { + \prop_gput:Nxn \g_fnpct_adapted_notes_prop { \cs_to_str:N #2 } { #1 } + \NewDocumentCommand #1 { so+m } + { \fnpct_dot_or_comma:Nnnn #2 { ##2 } { ##3 } { ##1 } } + } +\cs_generate_variant:Nn \fnpct_renew:NN { cc } + +% create mult-variant +\cs_new:Npn \fnpct_create_mult_variant:NN #1#2 + { + \NewDocumentCommand #1 { s+m } + { \fnpct_mult_note:Nnn #2 { ##1 } { ##2 } } + } + +% \footnotemark[<mark>] like commands: +\cs_new:Npn \fnpct_renew_mark:NN #1#2 + { + \prop_gput:Nxn \g_fnpct_adapted_notes_prop { \cs_to_str:N #2 } { #1 } + \cs_new_eq:NN #2 #1 + \RenewDocumentCommand #1 { so } + { \fnpct_dot_or_comma:Nnnn #2 { ##2 } { } { ##1 } } + } +\cs_generate_variant:Nn \fnpct_renew_mark:NN { cc , Nc } + +% user commands: +\NewDocumentCommand \AdaptNote { mm } + { + \exp_args:NNx + \fnpct_renew_and_mult:NcN #1 { fnpct_orig_ \cs_to_str:N #1 :w } #2 + } + +\NewDocumentCommand \AdaptNoteMark { m } + { \exp_args:NNx \fnpct_renew_mark:Nc #1 { fnpct_orig_ \cs_to_str:N #1 :w } } + +% -------------------------------------------------------------------------- +% DO THE REDEFINING: +% +% before we start make the testing more comfortable: +\cs_new:Npn \fnpct_treatment:nn #1#2 + { \@ifpackageloaded { #1 } { #2 } { } } +\cs_new:Npn \fnpct_special_treatment:nn #1#2 + { \@ifpackageloaded { #1 } { #2 } { \AfterPackage * { #1 } { #2 } } } + +% and now get going: +\AtBeginDocument + { + \@ifpackageloaded { hyperref } + { \bool_set_true:N \l_fnpct_hyperref_bool } + { + \cs_if_exist:NF \AfterBeginDocument + { \cs_new:Npn \AfterBeginDocument #1 { #1 } } + } + \AfterBeginDocument + { + \AdaptNote \footnote \multfootnote + \AdaptNoteMark \footnotemark + \fnpct_new:NN \innernote \fnpct_inner_footnote:w + %% the `endnotes' package: + \fnpct_treatment:nn { endnotes } + { + \AdaptNote \endnote \multendnote + \AdaptNoteMark \endnotemark + } + %% the `parnotes' package: + \fnpct_treatment:nn { parnotes } { \AdaptNote \parnote \multparnote } + %% the `pagenote' package: + \fnpct_treatment:nn { pagenote } + { + \bool_if:NT \l_fnpct_makepagenote_bool + { \AdaptNote \pagenote \multpagenote } + } + %% the `tablefootnote' package: + \fnpct_treatment:nn { tablefootnote } + { + \fnpct_renew_and_mult_no_opt:NNN \tablefootnote + \fnpct_orig_tablefootnote:w \multtablefootnote + } + %% the `bigfoot' package: + \fnpct_treatment:nn { bigfoot } + { + \prop_map_inline:Nn \l_fnpct_footnote_class_prop + { + \fnpct_renew_and_mult:ccc { footnote#2 } + { fnpct_orig_footnote#2:w } { multfootnote#2 } + \fnpct_renew_mark:cc { footnotemark#2 } { fnpct_orig_footnotemark#2:w } + } + % re-set basics: + \cs_set_eq:NN \footnote \footnotedefault + \cs_set_eq:NN \footnotemark \footnotemarkdefault + \cs_set_eq:NN \multfootnote \multfootnotedefault + } + %% the `fixfoot' package: + \fnpct_treatment:nn { fixfoot } + { + \prop_map_inline:Nn \l_fnpct_footnote_fixfoot_prop + { \fnpct_renew_no_arg:cc { #2 } { fnpct_orig_fix_#2:w } } + } + %% the `sepfootnotes' package: + \fnpct_treatment:nn { sepfootnotes } + { + \prop_map_inline:Nn \l_fnpct_sepfootnote_foot_classes_prop + { + \fnpct_renew_and_mult_no_opt:ccc { #2note } + { fnpct_orig_sep_#2:w } { #2multnote } + \fnpct_renew:cc { #2notemark } { fnpct_orig_sep_#2_mark:w } + } + \prop_map_inline:Nn \l_fnpct_sepfootnote_end_classes_prop + { + \fnpct_renew_and_mult_no_opt:ccc { #2note } + { fnpct_orig_sep_#2:w } { #2multnote } + \fnpct_renew:cc { #2notemark } { fnpct_orig_sep_#2_mark:w } + } + } + } + } + +% the `bigfoot' package neads special treatment: +\prop_new:N \l_fnpct_footnote_class_prop +\fnpct_special_treatment:nn { bigfoot } + { + % hook into \DeclareNewFootnote so we can redefine all footnote + % classes defined be users + \cs_new_eq:NN \fnpct_new_footnote:w \DeclareNewFootnote + \RenewDocumentCommand \DeclareNewFootnote { omo } + { + \prop_put:Nnn \l_fnpct_footnote_class_prop { #2 } { #2 } + \IfNoValueTF { #1 } + { + \IfNoValueTF { #3 } + { \fnpct_new_footnote:w { #2 } } + { \fnpct_new_footnote:w { #2 } [ #3 ] } + } + { + \IfNoValueTF { #3 } + { \fnpct_new_footnote:w [ #1 ] { #2 } } + { \fnpct_new_footnote:w [ #1 ]{ #2 } [ #3 ] } + } + } + \bool_if:NT \l_fnpct_bigfoot_default_top_bool + { \DeclareNewFootnote { default } } + } + +% as does the `fixfoot' package +\prop_new:N \l_fnpct_footnote_fixfoot_prop +\fnpct_special_treatment:nn { fixfoot } + { + % hook into \DeclareFixedFootnote so we can redefine all footnote + % classes defined be users + \cs_new_eq:NN \fnpct_new_fixnote:w \DeclareFixedFootnote + \RenewDocumentCommand \DeclareFixedFootnote { smm } + { + \prop_put:Nnx \l_fnpct_footnote_fixfoot_prop { #2 } + { \cs_to_str:N #2 } + \IfBooleanTF { #1 } + { \fnpct_new_fixnote:w * { #2 } { #3 } } + { \fnpct_new_fixnote:w { #2 } { #3 } } + } + } + +% and the `pagenote' package: +\bool_new:N \l_fnpct_makepagenote_bool +\fnpct_special_treatment:nn { pagenote } + { + \tl_put_left:Nn \makepagenote + { \bool_set_true:N \l_fnpct_makepagenote_bool } + } + +% aaand... the `sepfootnotes' package: +\prop_new:N \l_fnpct_sepfootnote_foot_classes_prop +\prop_new:N \l_fnpct_sepfootnote_end_classes_prop +\fnpct_special_treatment:nn { sepfootnotes } + { + \cs_new_eq:NN \fnpct_orig_new_footnotes:n \newfootnotes + \cs_new_eq:NN \fnpct_orig_new_endnotes:n \newendnotes + \cs_new_eq:NN \fnpct_orig_new_symbolnotes:w \newsymbolfootnotes + \RenewDocumentCommand \newfootnotes { m } + { + \prop_put:Nnn \l_fnpct_sepfootnote_foot_classes_prop { #1 } { #1 } + \fnpct_orig_new_footnotes:n { #1 } + } + \RenewDocumentCommand \newendnotes { m } + { + \prop_put:Nnn \l_fnpct_sepfootnote_end_classes_prop { #1 } { #1 } + \fnpct_orig_new_endnotes:n { #1 } + } + } + +% -------------------------------------------------------------------------- +% SETUP COMMAND: +\NewDocumentCommand \setfnpct { m } + { \keys_set:nn { fnpct } { #1 } } + +\tex_endinput:D + +% -------------------------------------------------------------------------- +% HISTORY: +2012/05/18 v0.1alpha - various changes still possible without announcement + until declared `v0.1' +2012/05/19 v0.1beta - considered ready for public use, needs feedback, though +2012/05/20 v0.1beta-a - minor changes +2012/05/20 v0.1beta-b - added `pagenote' support + - added `tablefootnote' support +2012/05/20 v0.1beta-c - optional star argument to \multfootnote that only invokes + \footnotetext + - option `dont-mess-around': disable switching and kerning +2012/05/21 v0.1beta-d - \innernote for nesting + - `hyperref' support + - bugfix in \multfootnote +2012/05/21 v0.1beta-e - `sepfootnotes' support +2012/05/22 v0.1beta-f - reorganized code +2012/05/22 v0.1 - a bit more cleaning up of the code + - completed documentation + - ready for CTAN + +% -------------------------------------------------------------------------- +% NOTES: +- `footnote' package => not compatible => see todo +- `ednotes' package => not tested; who knows? + +% -------------------------------------------------------------------------- +% TODO: +- solve incompatibility with the `footnote' package |