Seite 1 von 1

Referenzierung auf Fussnote erzeugt ungewolltes Leerzeichen

Verfasst: Mi 29. Aug 2012, 09:39
von Basti
Hi, ich habe aus dem netz folgenden Code, welcher eine Fussnote "speichert" und referenzieren lässt.
%---Fußnoten mehrfach referenzieren
\newcommand{\footnoteremember}[2]{%
  \footnote{#2}
  \newcounter{#1}
  \setcounter{#1}{\value{footnote}}
}
\newcommand{\footnoterecall}[1]{%
  \footnotemark[\value{#1}]
}
Die Commands funktionieren auch soweit, mit der Ausnahme, dass im Text selbst nach der hochgestellten Fussnote ein ungewolltes Leerzeichen auftaucht.
Weiss jemand wie ich dieses entfernen kann?

Anbei ein Bild des Phänomens.

Verfasst: Mo 17. Sep 2012, 01:38
von Speravir
Du warst ja etwas schweigsam darüber, ob das ungewollte Leerzeichen bei Verwendung von „\footnoterember“ oder „\footnoterecall“ oder bei beiden auftritt. Ohne selbst Experte zu sein, vermute ich, dass Du mindestens ein signifikantes Leerzeichen übersehen hast. Als Test noch ein paar Prozentzeichen einzufügen, hätte nichts geschadet (mit „<--“ markiert):
%---Fußnoten mehrfach referenzieren
\newcommand{\footnoteremember}[2]{%
  \footnote{#2}% <--
  \newcounter{#1}% <--
  \setcounter{#1}{\value{footnote}}% <--
}
\newcommand{\footnoterecall}[1]{%
  \footnotemark[\value{#1}]% <--
}

Es gibt übrigens auch ein LaTeX-Paket für diesen Zweck namens „savefnmark“. Da es die Dokumentation dazu in MiKTeX leider fehlt, hier eine (tex-live-basierte) Online-Quelle:

http://texdoc.net/texmf-dist/doc/latex/ ... fnmark.pdf

Verfasst: Mo 17. Sep 2012, 06:53
von Sepp99
Leider kein vollständiges Minimalbeispiel [4] - bei den KOMA-Script-Klassen gibt es den Befehle
\footref{Referenz}
Näheres in scrguide.pdf mit Beispiel.

Gruß, Sepp.-

Verfasst: Fr 9. Nov 2012, 16:37
von cgnieder
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

Verfasst: Fr 9. Nov 2012, 18:17
von Besserwisser
Zu der Geschichte mit den Leerzeichen kann ich übrigens diese Seite empfehlen: http://www.komascript.de/signifikanteLeerzeichen