![编辑:](https://linux22.com/image/351140/%E7%BC%96%E8%BE%91%EF%BC%9A.png)
我有以下 MWE:
\documentclass[a4paper,12pt, oneside, final, headsepline]{scrartcl}
\usepackage{endnotes}
\usepackage[perpage, multiple]{footmisc}
\renewcommand{\notesname}{Linkverzeichnis}
\usepackage{float}
\usepackage[bf]{caption}
\begin{document}
\section{Grundlagen}
Bla bla bla Link\endnote{url1}
\begin{figure}[h]
\centering
\caption[Short caption without endnote to avoid errors]{Blubber. (Quelle\endnote{url2})}
\end{figure}
Bla bla bla Link\endnote{url3}
\theendnotes
\end{document}
结果是:
而不是尾注计算
1. url1
2. url2
3. url3
我明白了
1. url1
3. url2
4. url3
或者:
1. url1
2. url2
3. url2
4. url3
在这种情况下,您可以通过注释掉该\usepackage[bf]{caption}
行来触发最后一个,但我的文本中出现了这两个。我已经弄清楚如果浮点数中有尾注就会发生这种情况,但我真的不知道为什么。
我怎样才能解决这个问题?
编辑:
根据接受的答案中提供的解决方案,我构建了以下命令以供将来重复使用:
\newcommand{\endnoteouter}[1]{\sbox0{\endnotemark}\endnotetext{\sloppy#1}}
\newcommand{\endnoteinner}{\usebox0}
\endnoteouter{Text}
在图前用 声明尾注,并\endnoteinner
在正确位置用 调用它。如果图中有多个尾注,可以传递一个参数来指定框号。
答案1
答案已提供这里你可以像这样工作:
\documentclass[a4paper,12pt, oneside, final, headsepline]{scrartcl}
\usepackage{endnotes}
\usepackage[perpage, multiple]{footmisc}
\renewcommand{\notesname}{Linkverzeichnis}
\usepackage{float}
\usepackage[bf]{caption}
\begin{document}
\section{Grundlagen}
Bla bla bla Link\endnote{url1}
\sbox0{\endnotemark}
\begin{figure}[h]
\centering
\caption[Short caption without endnote to avoid errors]{Blubber.
(Quelle\usebox0)}
\end{figure}
\endnotetext{url2}
Bla bla bla Link\endnote{url3}
\theendnotes
\end{document}
对于为什么会发生这种情况的问题:的内容\endnote
可能会被评估两次(因为\caption
被评估了两次)导致endnote
-counter 的额外增加。
编辑:根据要求,这里有一个(非常丑陋的)命令,可能会简化这个过程:
\documentclass[a4paper,12pt, oneside, final, headsepline]{scrartcl}
\usepackage{endnotes}
\usepackage[perpage, multiple]{footmisc}
\renewcommand{\notesname}{Linkverzeichnis}
\usepackage{float}
\usepackage[bf]{caption}
\newcommand\mycaption[4]{
\sbox0{\endnotemark}
\caption[#1]{#2\usebox0#3}
\endnotetext{#4}
}
\begin{document}
\section{Grundlagen}
Bla bla bla Link\endnote{url1}
\sbox0{\endnotemark}
\begin{figure}[h]
\centering
\caption[Short caption without endnote to avoid errors]{Blubber.
(Quelle\usebox0)}
\end{figure}
\endnotetext{url2}
Bla bla bla Link\endnote{url3}
\begin{figure}[h]
\centering
\mycaption{Short caption without endnote to avoid errors}{Blubber. (Quelle}{)}{url4}
\end{figure}
\theendnotes
\end{document}
该命令的语法为:
\mycaption[<short caption for lot/lof>]{<caption until the endnote-mark>}{<caption after the endnote-mark>}{<content of the endnotemark>}
编辑 2:如果应该endnotemark
始终位于同一位置 (Quelle#),您可以将命令更改为:
\newcommand\mycaption[3][]{
\sbox0{\endnotemark}
\ifx&
\caption[#2]{#2 (Quelle\usebox0)}
\else
\caption[#1]{#2 (Quelle\usebox0)}
\fi
\endnotetext{#3}
}
并按以下方式使用它:\mycaption[<short caption>]{<caption>}{<endnote text>}
如果您省略<short caption>
没有“(Quelle#)”的标题,则会在命令中显示\listof...
。