In folgendem Beispiel

Öffne in Overleaf
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage[amsmath]{ntheorem}
\newtheorem*{proof}{Beweis}
\usepackage[pdftex,hidelinks,bookmarksopen=false]{hyperref}

\begin{document}
\begin{proof}
  Das ist ein Text\footnotemark der keinen Sinn\footnotemark ergibt.
\end{proof}
\addtocounter{footnote}{-1}
\footnotetext{erste Fußnote}
\addtocounter{footnote}{1}
\footnotetext{zweite Fußnote}
\end{document}

erhalte ich die Warnung

name{Hfootnote.1} has been referenced but does not exist, replaced by a fixed one

und der Link der ersten Fußnote funktioniert nicht. Wie kann ich dies korrigieren, ohne die Nummer hinter \footnotemark explizit anzugeben?

Ergänzung:

Da ich auch mit shadedtheorems arbeite, bin ich auch \footnotemark und footnotetext angewiesen, weil die Fußnoten sonst nicht am Seitenende stehen:

Öffne in Overleaf
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage[amsmath,framed]{ntheorem}
\usepackage{framed}
\usepackage{xcolor}
\def\theoremframecommand{\colorbox{black!10}}
\newshadedtheorem{proof}{Beweis}
\usepackage{hyperref}

\begin{document}
\begin{proof}
  Das ist ein Text\footnote{erste Fußnote} der keinen Sinn\footnote{zweite Fußtnote}.
\end{proof}
\end{document}

bzw.

Öffne in Overleaf
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage[amsmath,framed]{ntheorem}
\usepackage{framed}
\usepackage{xcolor}
\def\theoremframecommand{\colorbox{black!10}}
\newshadedtheorem{proof}{Beweis}
\usepackage{hyperref}

\begin{document}
\begin{proof}
  Das ist ein Text\footnotemark der keinen Sinn\footnotemark.
\end{proof}
\addtocounter{footnote}{-1}
\footnotetext{erste Fußnote}
\addtocounter{footnote}{1}
\footnotetext{zweite Fußnote}
\end{document}

gefragt 25 Jan '17, 20:14

tom75's gravatar image

tom75
2.2k277984
Akzeptiert-Rate: 57%

bearbeitet 26 Jan '17, 09:50


Am einfachsten funktioniert das, wenn man \footnote verwendet:

Öffne in Overleaf
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage[amsmath]{ntheorem}
\newtheorem*{proof}{Beweis}
\usepackage{hyperref}

\begin{document}
\begin{proof}
  Das ist ein Text\footnote{erste Fußnote} der keinen Sinn\footnote{zweite Fußtnote}.
\end{proof}
\end{document}

Option pdftex sollte man übrigens bei allen Paketen weglassen. Die Pakete können PDFTeX selbst sehr gut erkennen, andererseits stört die Option, wenn man eben nicht PDFTeX verwendet. Also hat sie keinen Nutzen und im Zweifelsfall schadet sie erst. Damit man die Links auch sieht, was in einem Minimalbeispiel, bei dem es um die Links geht, sicher kein Schaden ist, habe ich außerdem Option hidelinks weggelassen. Die restlichen Optionen sind für das Beispiel unerheblich und wurden deshalb ebenfalls entfernt.

Bezüglich der Verlinkung von Fußnoten gibt es in der hyperref-Anleitung übrigens den dezenten Hinweis: »Easily broken«. Der Autor glaubt also offenbar selbst nicht, dass das immer funktioniert. Außerdem ist es gänzlich unabhängig von ntheorem oder der proof-Umgebung, der Klasse oder der Eingabecodierung:

Öffne in Overleaf
\documentclass{article}
\usepackage{hyperref}

\begin{document}
Das ist ein Text\footnotemark der keinen Sinn\footnotemark ergibt.
\addtocounter{footnote}{-1}%
\footnotetext{erste}%
\stepcounter{footnote}%
\footnotetext{zweite}%
\end{document}

Das Problem dabei ist, dass hyperref nicht nur einen eigenen Zähler Hfootnote verwendet. Es speichert außerdem bei jeden \footnotemark nur genau die daraus entstehende Referenz \Hy@footnote@currentHref, die dann beim nächsten Aufruf von \footnotetext verwendet wird. Hat man nun mehrere \footnotemark hintereinander, so wird \Hy@footnote@currentHref immer wieder überschrieben. Dadurch wird dann bei \footnotetext mehrfach derselbe Anker gesetzt. Das gibt zum einen eine Meldung wegen der mehrfachen Anker zum anderen referenzieren vom letzten Aufruf abgesehen alle \footnotemark der Sequenz einen Anker, der nie gesetzt wurde.

Das Problem außerhalb von hyperref zu lösen dürfte mit einigem Aufwand verbunden sein und würde sich darüber hinaus auf einigen internen Code von hyperref stützen. Eine wirkliche Lösung kann daher eigentlich nur als Teil oder als offizielle Ergänzung von hyperref geschaffen werden. Beispielsweise könnte man in hyperref mehrere \Hy@footnote<Nr>@currentHref definieren, wobei <Nr> beispielsweise von Hfootnote abgeleitet sein könnte. Auch eine Listen-Lösung wäre denkbar. Diese könnte eventuell auch das Problem mit dem optionalen Argument von \footnotemark lösen, das hyperref derzeit laut README nicht unterstützt. Für den Text wäre dann vermutlich ein Befehl ohne optionales Argument sinnvoll, der den nächsten Fußnotentext setzt, also etwas wie \nextfootnotetext. Der würde dann nicht vom aktuellen Zähler footnote, sondern von der aktuell via \footnotemark gespeicherten Liste ausgehen. Das wäre gleichzeitig eine deutliche Erweiterung des \footnotemark/\footnotetext-Mechanismus und würde bei Verwendung diverser Pakete/Klassen vermutlich Probleme bereiten. Ich habe wenig Hoffnung, dass es so etwas bald geben wird. Aber vielleicht fällt dem hyperref-Autor auf entsprechende Nachfrage ja eine einfachere Lösung ein.

Zusammenfassung: hyperref unterstützt derzeit nur direkte Abfolgen von \footnotemark und \footnotetext aber keine Sequenzen von \footnotemark gefolgt von Sequenzen von \footnotetext.


Mit den Standardklassen oder den KOMA-Script-Klassen scheint folgendes zu funktionieren:

Öffne in Overleaf
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{hyperref}

\begin{filecontents*}{nextfootnote.sty}
% nextfootnote.sty
% Copyright (c) Ijon Tichy, 2017
% 
% 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 Ijon Tichy.
% 
% This work consists of the file nextfootnote.sty only.
% This work is a result of <http://texwelt.de/wissen/fragen/19464>.
% For support see there.
% Please do not remove the link above!
\ProvidesPackage{nextfootnote}[2017/01/26 v0.1 print next footnote mark]
\ProcessOptions\relax
% Some definitions for the case hyperref is not used.
\providecommand*{\Hy@footnote@currentHref}{}
\providecommand*{\theHfootnote}{}
% The list of current footnote marks
\newcommand*{\@hfootnotelist}{}
% Print the next footnote mark (like \footnotemark without optional agument)
\newcommand*{\nextfootnotemark}{%
  \footnotemark
  \@cons\@hfootnotelist{{\arabic{footnote}}{\theHfootnote}{\Hy@footnote@currentHref}}%
}
% Setup the footnote text for the first footnote in the list of current
% footnote marks (like \footnotetext without optional argument)
\newcommand*{\nextfootnotetext}[1]{%
  \ifx\@hfootnotelist\@empty
  \else
    \begingroup
      \def\@elt ##1##2##3\@elt##4\@nnil{%
        \gdef\@hfootnotelist{##4}%
        \let\@elt\relax
        \if\relax\detokenize{##4}\relax
          \global\let\@hfootnotelist\@empty
        \else
          \gdef\@hfootnotelist{\@elt##4}%
        \fi
        \setcounter{footnote}{##1}%
        \def\Hy@footnote@currentHref{##3}%
      }%
      \@hfootnotelist\@elt\@nnil
      \footnotetext{#1}%
    \endgroup
  \fi
}
\endinput
\end{filecontents*}
\usepackage{nextfootnote}

\begin{document}
Das Paket \texttt{nextfootnote} stellt die Befehle \verb|\nextfootnotemark|
und \verb|\nextfootnotetext| bereit. Diese arbeiten generell wie
\verb|\footnotemark| und \verb|\footnotetext| mit drei gravierenden
Unterschieden: Die Befehle erlauben kein optionales Argument und bei Abfolgen
mehrere \verb|\nextfootnotemark|, gefolgt von mehreren
\verb|\nextfootnotetext{...}| entsprechen die Nummern der Fußnoten ohne
weiteres Zutun den Nummern der Fußnotenmarkierungen und die Verlinkung
funktioniert bei Verwendung von \texttt{hyperref} einwandfrei.

\paragraph*{Beispiel:}
\begin{quote}
\begin{verbatim}
Erste Fußnote\nextfootnotemark, zweite Fußnote\nextfootnotemark.

\nextfootnotetext{erste Fußnote}
\nextfootnotetext{zweite Fußnote}
\end{verbatim}
\end{quote}
Erzeugt als Text:
\begin{quotation}
Erste Fußnote\nextfootnotemark, zweite Fußnote\nextfootnotemark.

\nextfootnotetext{erste Fußnote}
\nextfootnotetext{zweite Fußnote}
\end{quotation}
Die zugehören Fußnoten finden sich am Ende dieser Seite.
\end{document}
Permanenter link

beantwortet 26 Jan '17, 08:28

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 26 Jan '17, 18:30

Die Lösung scheint mir mit shadedtheorems nicht zu funktionieren. Hier kann ich nicht direkt mit \footnote arbeiten sondern muss \footnotemark verwenden.

(26 Jan '17, 09:45) tom75

@tom75 Das war ursprünglich in Deiner Frage ja auch nicht enthalten. Trotzdem bleibt der Nachsatz seiner Antwort bestehen: Es ist ein generelles Problem und vermutlich ist sich der hyperref-Autor darüber im Klaren, weshalb es auch besagte Anmerkung in der Anleitung gibt.

(26 Jan '17, 10:06) saputello

@saputello Das ist richtig, weil ich nicht wusste, dass schattierte und nicht schattierte Theorem-Umgebungen sich unterschiedlich bezüglich der Fußnoten verhalten.

(26 Jan '17, 10:09) tom75

@tom75: Dann ist deine eigentliche Frage also nicht, wie man mit hyperref verlinkte Fußnoten in Umgebungen von ntheorem erhalten kann, sondern wie man mit hyperref auch bei aufeinanderfolgenden \footnotemark einen korrekten Link auf die jeweilige mit \footnotetext gesetzte Fußnote erhält. Du hast also mit der Frage und deren Titel das Problem verfehlt. Auch wenn dir die Antwort vermutlich nicht gefällt, habe ich dir trotzdem nun auch diese Frage beantwortet.

(26 Jan '17, 11:44) gast3

@Ijon Tichy Herzlichen Dank für die Antwort.

(26 Jan '17, 11:48) tom75
1

@tom75: Es hat mir keine Ruhe gelassen. Ich bin aber ziemlich sicher, dass das min. so anfällig ist wie der Fußnotenmechanismus in hyperref selbst. Außerdem habe ich bisher keine Unterstützung für das optionale Argument von \footnotemark und \footnotetext. Die hat hyperref laut README aber auch nicht.

(26 Jan '17, 18:34) gast3

@Ijon Tichy Und nochmal danke für die Ergänzung!

(26 Jan '17, 22:38) tom75
Ergebnis 5 von 7 show 2 more comments

Für besonders hervorgehobene Umgebungen kann ich das Paket tcolorbox empfehlen. Dabei bleibt dann auch bei der Verwendung von Fußnoten alles schön zusammen:

Öffne in Overleaf
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{tcolorbox}
\usepackage{hyperref}
\tcbuselibrary{theorems}
\newtcbtheorem[number within=section]{proof}{Beweis}%
{colback=green!5,colframe=green!35!black,fonttitle=\bfseries}{th}

\begin{document}
\begin{proof}{}{}
  Das ist ein Text\footnote{erste Fußnote} der keinen Sinn\footnote{zweite Fußtnote}.
\end{proof}
\end{document}

Das geht sogar zusammen mit breakable:

Öffne in Overleaf
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[breakable]{tcolorbox}
\usepackage{hyperref}
\tcbuselibrary{breakable,theorems}
\newtcbtheorem[number within=section]{proof}{Beweis}%
{breakable,colback=green!5,colframe=green!35!black,fonttitle=\bfseries}{th}

\usepackage{mwe}

\begin{document}
\begin{proof}{}{}
  Das ist ein Text\footnote{erste Fußnote} der keinen Sinn\footnote{zweite
    Fußtnote}.

  \lipsum
\end{proof}
\end{document}
Permanenter link

beantwortet 26 Jan '17, 10:20

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

@saputello Danke für den Tipp. Wenn ich aber die Fußnoten am Seitenende und nicht im Theorem haben will, hab ich dasselbe Problem wie mit ntheorem.

(26 Jan '17, 10:29) tom75

@tom75 Wie bereits von @Ijon oben gezeigt ist das kein Problem von ntheorem, sondern ein generelles Problem von hyperref bei Verwendung von mehreren aufeinanderfolgenden \footnotemark und später entsprechend aufeinander folgenden \footnotetext. Das ist quasi ein Missfeature des Pakets. Das mag Dir als Antwort nicht gefallen, ist aber nun einmal so. Du kannst es ja mit einem Bugreport probieren.

(26 Jan '17, 10:55) saputello

@saputello Das hab ich verstanden. Ich hatte nur zunächst die Hoffnung, mit deinem alternativen Vorschlag das Problem umgehen zu können.

(26 Jan '17, 10:58) tom75

@tom75 Wenn Du die Fußnote unten auf der Seite haben willst, wird der Leser bei Beweisen mit Seitenumbruch übrigens erwarten, dass die Fußnote unten auf der jeweiligen Seite steht und nicht unten auf der letzten Seite. Das dürfte nicht einfach werden. Auch aus diesem Grund halte ich Fußnoten am Ende der Umgebung statt am Ende der Seite für die bessere Lösung. Außerdem machst Du ohnehin durch die Hervorhebung eine Art Konsultationsobjekt aus dem Beweis. Da gehört die Fußnote in das Objekt nicht an das Ende der Seite.

(26 Jan '17, 11:00) saputello
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×62
×44
×8

gestellte Frage: 25 Jan '17, 20:14

Frage wurde gesehen: 8,733 Mal

zuletzt geändert: 26 Jan '17, 22:38