Wie hoffentlich bekannt ist wird das Ende einer Zeile von TeX als Leerzeichen interpretiert. Da in der Definition mehrere Zeilenenden vorhanden sind, werden diese als Leerzeichen eingefügt. Daher müssen die Zeilenenden versteckt werden:
\newcommand{\footnoteremember}[2]{%
\footnote{#2}% <= hier fehlte %
\newcounter{#1}% <= hier fehlte %
\setcounter{#1}{\value{footnote}}% <= hier fehlte %
}
\newcommand{\footnoterecall}[1]{%
\footnotemark[\value{#1}]% <= hier fehlte %
}
Zeilenenden treten nicht auf, wenn ein Makro ohne Argument endet:
\documentclass{article}
\newcommand*\blubber{blubber}
\newcommand*\test{%
% nach blubber braucht man kein % da nach Makros Leerzeichen ignoriert werden:
\blubber
}
\newcommand*\Blubber[1]{#1}
\newcommand*\Test[1]{%
\Blubber{#1}% jetzt muss versteckt werden
}
\begin{document}
Text \test{} Text \Test{bla} Text
\end{document}
Es ist übrigens keine gute Idee, für jede mehrfach referenzierte Fußnote einen neuen Zähler zu definieren. Besser wäre etwas derartiges:
\makeatletter
\newcommand{\footnoteremember}[2]{%
\footnote{#2}%
\@namedef{remember@fn@#1}{\arabic{footnote}}%
}
\newcommand{\footnoterecall}[1]{%
\footnotemark[\@nameuse{remember@fn@#1}]%
}
\makeatother
Einfacher ist es aber, bestehende Lösungen zu verwenden, wie das schon erwähnte \footref von KOMA-Script:
% mindestens zweimal kompilieren
\documentclass{article}
\usepackage{scrextend}% nicht nötig mit einer KOMA-Klasse
\begin{document}
Text\footnote{blub\label{fn:bla}}
Text\footref{fn:bla}
\end{document}
oder bei vielen immer wieder kehrenden Fußnoten vielleicht das »fixfoot« Paket:
% mindestens zweimal kompilieren
\documentclass{article}
\usepackage{fixfoot}
\DeclareFixedFootnote\bla{blub}
\begin{document}
Text\bla{}
Text\bla
\end{document}
Grüße