Sie sind hier

\caption wird zweimal ausgeführt -> Probleme mit enotez

Hallo zusammen,

wenn ich mit einer KOMA-Script-Klasse Abbildungen einfüge, wird \caption zweimal ausgeführt (zur Längenmessung wurde mir gesagt). Das führt jedoch dazu, dass mit enotez erstellte Einträge eines Abbildungsverzeichnis doppelt aufgeführt werden bzw. teilweise die Nummerierung nicht stimmt. (Warum enotez verwendet wird, würde den Rahmen sprengen - das muss so.)

Nun wollte ich fragen, wie ich die zweifache Ausführung von \endnote in \caption unterdrücken kann, ohne captions=nooneline zu verwenden.

Das entsprechende Codebeispiel:

\begin{filecontents}{ref.bib}
@book{bildquelle,
    author={Name, V.},
    title={Titel},
}
\end{filecontents}
 
\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage{graphicx}
\usepackage{filecontents}
 
%bibliography
\usepackage[citestyle=authoryear-ibid,bibstyle=authoryear,]{biblatex}
\addbibresource{ref.bib}
 
%endnotes
\usepackage{enotez}
\renewcommand*\enotezwritemark[1]{[{#1}]}
\setenotez{
    list-name={Abbildungsverzeichnis}
    }
\DeclareInstance{enotez-list}{custom}{paragraph}{
    heading = \section{#1},
    format = \normalfont,
    number = {[#1]}
    }
 
 
\begin{document}
 
\begin{figure}
    \centering
    \includegraphics{example-image}
    \caption{Dies ist ein Bild \endnote{\fullcite[S. 30]{bildquelle}}}
\end{figure}
 
\printendnotes[custom]
\end{document}

Vielen Dank schonmal für die Hilfe!

Grüße
F. Ranke

[Admin-Edit:] Formatierung korrigiert (am Ende muss </latex> statt <latex/> stehen).

Bild von Markus Kohm

Die einfachste Lösung ist:

\usepackage{caption}

Die etwas kompliziertere Lösung wäre:

\usepackage{xpatch}
\makeatletter
\xpatchcmd{\@@makecaption}{\let\label\@gobble}{%
  \let\label\@gobble
  \let\endnote\@gobble
}{}{\PatchFailed}
\makeatother

Besser wäre eigentlich das noch kompliziertere:

\usepackage{xpatch}
\makeatletter
\xpatchcmd{\@@makecaption}{\let\label\@gobble}{%
  \let\label\@gobble
  \renewcommand{\endnote}[2][]{%
    \IfArgIsEmpty{##1}{\endnotemark}{\endnotemark[{##1}]}%
  }%
}{}{\PatchFailed}
\makeatother

Bei dem allerdings der Zähler verändert wird, weil enotez nicht mit \stepcounter oder \refstepcounter arbeitet, für das KOMA-Script bereits eine Sonderbehandlung enthält. Es geht also sicher noch besser. Aber eigentlich ist das eher ein Problem von enotez als von KOMA-Script. Denn seien wir mal ehrlich, mit article hast Du ein ganz ähnliches Problem:

\begin{filecontents}{ref.bib}
@book{bildquelle,
    author={Name, V.},
    title={Titel},
}
\end{filecontents}
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage{graphicx}
\usepackage{xpatch}
\usepackage{filecontents}
 
%bibliography
\usepackage[citestyle=authoryear-ibid,bibstyle=authoryear,]{biblatex}
\addbibresource{ref.bib}
 
%endnotes
\usepackage{enotez}
\show\endnote
\renewcommand*\enotezwritemark[1]{[{#1}]}
\setenotez{
    list-name={Abbildungsverzeichnis}
    }
\DeclareInstance{enotez-list}{custom}{paragraph}{
    heading = \section{#1},
    format = \normalfont,
    number = {[#1]}
    }
 
 
\begin{document}
 
\begin{figure}
    \centering
    \includegraphics{example-image}
    \caption[Die ist ein Bild]{Dies ist ein Bild mit einer mehrzeiligen
      Bildunterschrift von eben mehr als einer Zeile \endnote{\fullcite[S. 30]{bildquelle}}}
\end{figure}
 
\printendnotes[custom]
\end{document}

Ich würde aber schlicht empfehlen, den ebenfalls einfachen Weg über \endnotemark und \endnotetext zu gehen:

\begin{filecontents}{ref.bib}
@book{bildquelle,
    author={Name, V.},
    title={Titel},
}
\end{filecontents}
 
\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage{graphicx}
\usepackage{filecontents}
 
%bibliography
\usepackage[citestyle=authoryear-ibid,bibstyle=authoryear,]{biblatex}
\addbibresource{ref.bib}
 
%endnotes
\usepackage{enotez}
\renewcommand*\enotezwritemark[1]{[{#1}]}
\setenotez{
    list-name={Abbildungsverzeichnis}
    }
\DeclareInstance{enotez-list}{custom}{paragraph}{
    heading = \section{#1},
    format = \normalfont,
    number = {[#1]}
    }
 
\begin{document}
 
\begin{figure}
  \centering
  \includegraphics{example-image}
  \caption{Dies ist ein Bild \endnotemark}
  \endnotetext{\fullcite[S. 30]{bildquelle}}
\end{figure}
 
\printendnotes[custom]
\end{document}

Das funktioniert zumindest mit KOMA-Script sowohl mit ein- als auch mehrzeiligen Bildunterschriften. Bei den Standardklassen ist aber weiterhin die Nummer falsch.

Übrigens würde ich empfehlen, für das Abbildungsverzeichnis ein optionales Argument für \caption zu verwenden, das dann ohne \endnote bzw. \endnotemark ist.

Comments for "\caption wird zweimal ausgeführt -&gt; Probleme mit enotez" abonnieren