Have you also looked at the adapted self-answer by Mathieu? It provides (nearly) everything you need.
I have taken his code and added these lines:
Code: Select all
\makeatletter
\renewcommand\footnote[1]{%
\footnotemark\footmarginnote{\textsuperscript{\@thefnmark}\,#1}}
\makeatother
Now the complete code looks as follows:
Code: Select all
\documentclass{article}
\usepackage[%
a4paper,
left=2cm,
textheight=24cm,
textwidth=10cm,
marginparsep=2cm,
marginparwidth=5cm
]{geometry}
\usepackage{forarray,etoolbox,xifthen,,graphicx,picture,calc,atbegshi,lipsum,color}
\newlength{\vincrement}
\newlength{\fmvorigin}
\newlength{\fmhorigin}
\newlength{\fmvoffset}
\newlength{\nextfmvoffset}
\newlength{\fmvskip}
\setlength{\fmvorigin}{-1in-\voffset-\topmargin-\headheight-\headsep-\textheight}
\makeatletter
\ifthenelse{\isundefined{\Gm@lmargin}}%
{\setlength{\fmhorigin}{1in+\hoffset+\oddsidemargin+\textwidth+\marginparsep}}%
{\setlength{\fmhorigin}{\Gm@lmargin+\textwidth+\marginparsep}}
\makeatother
\setlength{\fmvoffset}{0pt}
\setlength{\fmvskip}{3ex}
\newlength{\tmvorigin}
\newlength{\tmhorigin}
\newlength{\tmvoffset}
\newlength{\nexttmvoffset}
\newlength{\tmvskip}
\newlength{\maxtmnheight}
\setlength{\tmvorigin}{-1in-\voffset-\topmargin-\headheight-\headsep-\baselineskip}
\setlength{\tmhorigin}{\fmhorigin}
\setlength{\tmvoffset}{0pt}
\setlength{\tmvskip}{6ex}
\newcounter{fmn}
\newcounter{tmn}
\newboolean{marginisfull}
\newcommand{\fmnbuffer}{}
\newcommand{\currentfmnqueue}{}
\newcommand{\nextfmnqueue}{}
\newcommand{\tmnbuffer}{}
\newcommand{\currenttmnqueue}{}
\newcommand{\nexttmnqueue}{}
\newcommand{\append}[2]{%
\ifdefempty{#1}{}{\eappto{#1}{,}}%
\eappto{#1}{#2}%
}
\newcommand{\prepend}[2]{%
\ifdefempty{#1}{}{\epreto{#1}{,}}%
\epreto{#1}{#2}%
}
\newcommand{\footmarginnote}[1]{%
\addtocounter{fmn}{1}%
\expandafter\newsavebox\csname fmnbox\roman{fmn}\endcsname%
\expandafter\savebox\csname fmnbox\roman{fmn}\endcsname{\parbox[b]{\marginparwidth}{#1}}%
\append{\currentfmnqueue}{\roman{fmn}}%
}
\newcommand{\topmarginnote}[1]{%
\addtocounter{tmn}{1}%
\expandafter\newsavebox\csname tmnbox\roman{tmn}\endcsname%
\expandafter\savebox\csname tmnbox\roman{tmn}\endcsname{\parbox[t]{\marginparwidth}{\vskip-0.75\baselineskip#1}}%
\append{\currenttmnqueue}{\roman{tmn}}%
}
\newcommand{\printfmn}{%
\setlength{\fmvoffset}{0pt}%
\setboolean{marginisfull}{false}%
\ifdefempty{\currentfmnqueue}{}{%
\gdef\nextfmnqueue{}%
\gdef\fmnbuffer{}%
\ForEachX{,}{%
\ifthenelse{\boolean{marginisfull}}%
{\append{\nextfmnqueue}{\thislevelitem}}%
{%
\setlength{\vincrement}%
{\fmvskip+\expandafter\ht\csname fmnbox\thislevelitem\endcsname+\dp\csname fmnbox\thislevelitem\endcsname}%
\setlength{\nextfmvoffset}{\fmvoffset+\vincrement}%
\ifthenelse{\lengthtest{\nextfmvoffset>\textheight}}{%
\setboolean{marginisfull}{true}%
\append{\nextfmnqueue}{\thislevelitem}%
}{%
\prepend{\fmnbuffer}{\thislevelitem}%
\addtolength{\fmvoffset}{\vincrement}%
}%
}%
}%
{\currentfmnqueue}%
\setlength{\fmvoffset}{0pt}%
\ForEachX{,}{%
\put(\fmhorigin,\fmvorigin+\fmvoffset){\expandafter\usebox\csname fmnbox\thislevelitem\endcsname}%
\setlength{\vincrement}%
{\fmvskip+\expandafter\ht\csname fmnbox\thislevelitem\endcsname+\dp\csname fmnbox\thislevelitem\endcsname}%
\addtolength{\fmvoffset}{\vincrement}%
}%
{\fmnbuffer}%
\global\let\currentfmnqueue\nextfmnqueue%
}%
}
\newcommand{\printtmn}{%
\setlength{\maxtmnheight}{\textheight-\fmvoffset}%
\setlength{\tmvoffset}{0pt}%
\setboolean{marginisfull}{false}%
\ifdefempty{\currenttmnqueue}{}{%
\gdef\nexttmnqueue{}%
\gdef\tmnbuffer{}%
\ForEachX{,}{%
\ifthenelse{\boolean{marginisfull}}%
{\append{\nexttmnqueue}{\thislevelitem}}%
{%
\setlength{\vincrement}%
{\tmvskip+\expandafter\ht\csname tmnbox\thislevelitem\endcsname+\dp\csname tmnbox\thislevelitem\endcsname}%
\setlength{\nexttmvoffset}{\tmvoffset+\vincrement}%
\ifthenelse{\lengthtest{\nexttmvoffset>\maxtmnheight}}{%
\setboolean{marginisfull}{true}%
\append{\nexttmnqueue}{\thislevelitem}%
}{%
\append{\tmnbuffer}{\thislevelitem}%
\addtolength{\tmvoffset}{\vincrement}%
}%
}%
}%
{\currenttmnqueue}%
\setlength{\tmvoffset}{0pt}%
\ifdefempty{\tmnbuffer}{}{%
\ForEachX{,}{%
\put(\tmhorigin,\tmvorigin-\tmvoffset){\expandafter\usebox\csname tmnbox\thislevelitem\endcsname}%
\setlength{\vincrement}%
{\tmvskip+\expandafter\ht\csname tmnbox\thislevelitem\endcsname+\dp\csname tmnbox\thislevelitem\endcsname}%
\addtolength{\tmvoffset}{\vincrement}%
}%
{\tmnbuffer}%
}%
\global\let\currenttmnqueue\nexttmnqueue%
}%
}
\AtBeginShipout{\AtBeginShipoutUpperLeft{\printfmn\printtmn}}
\makeatletter
\renewcommand{\footnote}[1]{\footnotemark\footmarginnote{\textsuperscript{\@thefnmark}\,#1}}
\makeatother
\begin{document}
Text\footnote{This is the first footnote.} \lipsum[1]
Text\footnote{This is the second and somewhat longer footnote.} \lipsum[1]
Text\footnote{This is the third footnote.} \lipsum[1]
Text\footnote{This is the fourth footnote.} \lipsum[1]
\end{document}

- bottomsidenotes.png (34.37 KiB) Viewed 10446 times
Regards