我想要做的是这样的:
Figure 1: Caption of the figure.
_____________________________________
Figure
_____________________________________
Source: Images from Jhon¹ and Joseph²
(Bottom of the page)
_______
1 Source of one image
2 Source of the other image
我尝试了很多方法,但没有一个能像这样工作。我使用的代码实现了这个结果(但有一些“错误”)是这样的:
\newcommand{\footnotelabeled}[2]{%
\addtocounter{footnote}{1}%
\footnotetext[\thefootnote]{\label{#1}#2}}
\newcommand{\footnoteref}[1]{$^{\ref{#1}}$}
\afterpage{
\begin{figure}[htbp]
\centering
\includegraphics[width=0.9\linewidth]{fig.png}
\caption{Caption of the figure}
\label{fig:test}
\end{figure}
\begingroup
\captionof*{figure}{Source: Images from Jhon\footnoteref{one} and Joseph\footnoteref{another}}
\footnotelabeled{one}{Source of one image}
\footnotelabeled{another}{Source of the other image}
\endgroup}
但是,这会导致两个源位于同一个图形,而下一个图形没有源(因为它位于顶部的另一个图形)的情况。
有任何想法吗?
答案1
\queuepage 的工作方式与 \afterpage 类似,但是只有在前一个 \queuepage 完成后才会运行。
\documentclass{article}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{afterpage}
\usepackage{mwe}
\newcounter{nextqpage}% incremented when queued
\newcounter{lastqpage}% incremented when used
\newcommand{\queuepage}[1]% #1 = same as \afterpage
{\global\long\expandafter\def\csname queuepage\thenextqpage\endcsname{%
\stepcounter{lastqpage}%
\ifnum\value{lastqpage}<\value{nextqpage}\relax%
\afterpage{\csname queuepage\thelastqpage\endcsname}
\fi
#1}%
\ifnum\value{lastqpage}=\value{nextqpage}\relax%
\afterpage{\csname queuepage\thelastqpage\endcsname}%
\fi
\stepcounter{nextqpage}%
}
\newcommand{\footnotelabeled}[2]{%
\addtocounter{footnote}{1}%
\footnotetext[\thefootnote]{\label{#1}#2}}
\newcommand{\footnoteref}[1]{$^{\ref{#1}}$}
\begin{document}
\queuepage{%
\begin{figure}[t]
\caption{Caption of the figure}
\label{fig:test}
\medskip
\centering
\includegraphics[width=0.9\linewidth]{example-image-a}
\par\medskip
Source: Images from Jhon\footnoteref{one} and Joseph\footnoteref{another}
\end{figure}
\footnotelabeled{one}{Source of one image}
\footnotelabeled{another}{Source of the other image}}
\lipsum[1]
\queuepage{%
\begin{figure}[t]
\caption{Caption of the figure}
\label{fig:test2}
\medskip
\centering
\includegraphics[width=0.9\linewidth]{example-image-b}
\par\medskip
Source: Images from Jhon\footnoteref{third} and Joseph\footnoteref{fourth}
\end{figure}
\footnotelabeled{third}{Source of one image}
\footnotelabeled{fourth}{Source of the other image}}
\lipsum[2-12]
\end{document}
答案2
最佳做法是永远不要在浮动元素内使用页面脚注。您可以使用\foonotemark
浮动元素内和浮动元素外的更“正统”的方式显示脚注,或者使用包中的浮动元素内显示\footnotetext[2]{Source of the other image}
普通脚注。\footnote{}
ftnxtra
但是,请记住,浮动环境中的内容会像风一样瞬息万变,而所有在/留在外面的内容都会像石头一样静止不动。如果浮动移至其他页面,脚注仍会保留在周围文本的位置(可能在几页之前)。
此外,当浮动元素位于同一页面底部时,脚注可能会默认出现在浮动元素上方(“头注”)。也有软件包可以解决这个问题(参见示例),但主要问题仍然存在:浮动元素有浮动的坏习惯。
因此,您有两种解决方法:
(1)手动移动figure
代码,使其显示在同一页面。但在最终版本之前,你永远无法确定这一点。
(2)使用包强制浮动代码自动移动到下一页的顶部afterpage
。(比较安全,但请注意,之前未处理的浮动可能会强制图形超出范围)。示例:
\documentclass{article}
\usepackage[paperheight=5in,paperwidth=6in,top=.3in,margin=.5in]{geometry}
% custom page size for the example
\usepackage{graphicx} % you know ...
\usepackage{lipsum} % dummy text
\usepackage{afterpage} % put something after the actual page
\usepackage{ftnxtra} % footnote in floats, sections, ...
\usepackage{fnpos} % Avoid floats under the footnotes
% or use \usepackage{stfloats} and \fnbelowfloat
\begin{document}
\begin{figure}[htp]
\caption{The caption of A}\centering
\includegraphics[width=.5\linewidth,height=1in]{example-image-a}\par
Source: Images from Jhon\footnote{Source of one image}
and Joseph\footnote{Source of the other image}
\end{figure}
% use \afterpage if you know that only can be placed in the next page
\afterpage{
\begin{figure}
\caption{The caption of B}\centering
\includegraphics[width=.5\linewidth,height=1in]{example-image-b}\par
Source: Images from Peter\footnote{About Peter}
and David\footnote{Some about David}
\end{figure}
}
\lipsum[1-2] % dummy text
\end{document}
答案3
您可以使用该copyrightbox
包来实现这一点。它可以与hyperref
、cleveref
和配合使用tablefootnotes
,前提是您的图形设置在表格environment and you use
\captionof{figure]{…} from the
caption` 包中:
\documentclass{article}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{afterpage}
\usepackage{mwe}
\usepackage{copyrightbox}
\usepackage[pdfborder = 0 0 0,colorlinks]{hyperref}
\usepackage{cleveref}
\crefformat{footnote}{footnote\,\textsuperscript{#2#1#3}}
\Crefformat{footnote}{Footnote\,\textsuperscript{#2#1#3}}
\labelcrefformat{footnote}{\textsuperscript{#2#1#3}}
\crefmultiformat{footnote}{footnotes\,\textsuperscript{#2#1#3}}{\textsuperscript{,#2#1#3}}{\textsuperscript{,#2#1#3}}{\textsuperscript{,#2#1#3}}
\Crefmultiformat{footnote}{Footnotes\,\textsuperscript{#2#1#3}}{\textsuperscript{,#2#1#3}}{\textsuperscript{,#2#1#3}}{\textsuperscript{,#2#1#3}}
\labelcrefmultiformat{footnote}{#2\textsuperscript{#1}#3}{#2\textsuperscript{,#1}#3}{#2\textsuperscript{,#1}#3}{#2\textsuperscript{,#1}#3}
\usepackage{tablefootnote}
\begin{document}
\lipsum[2]
We see in\labelcref{one} and in \cref{two}…
\begin{table}[!ht]
\captionof{figure}{Caption of the figure}
\label{fig:test}
\medskip
\centering
\copyrightbox[b]{\includegraphics[width=0.9\linewidth]{example-image-a}}
{Source: Images from Jhon\tablefootnote{\label{one}Source of one image} and Joseph\tablefootnote{\label{two}Source of the other image}}
\end{table}
\afterpage{
\begin{table}[t]
\captionof{figure}{Caption of the figure}
\label{fig:test}
\medskip
\centering
\copyrightbox[b]{\includegraphics[width=0.9\linewidth]{example-image-b}}
{Source: Images from Jhon\tablefootnote{\label{third}Another source of one image} and Joseph\tablefootnote{\label{fourth}Further source of the other image}}
\end{table}
}
And now, grouped references\labelcref{third,fourth}!
\lipsum[3-4]
\end{document}
答案4
以下是使用强制位置对浮动放置的稍微修改的视图 - 使用[H]
来自的浮动说明符float
:
\documentclass{article}
\usepackage{graphicx,float,etextools,lipsum,refcount}
\makeatletter
\newcommand{\markfootnote}{\edef\@currentlabel{\thefootnote}}
\g@addto@macro{\footnotemark}{\markfootnote}
\makeatother
\begin{document}
\lipsum[1]
\begin{figure}[H]
\caption{Caption of the figure}
\vspace{\belowcaptionskip}
\centering
\includegraphics[width=0.9\linewidth]{example-image}
\par\medskip
Source: Images from Jhon\footnotemark\label{fnmarkA} and Joseph\footnotemark\label{fnmarkB}.
\AfterGroup{%
\footnotetext[\getrefnumber{fnmarkA}]{Source of one image}%
\footnotetext[\getrefnumber{fnmarkB}]{Source of the other image}%
}
\end{figure}
\lipsum[2-10]
\end{document}
浮动,嗯...浮动,因此并不总是能确定它们是否会落在调用它们的页面上。因此,强制放置到[H]
ere 可以避免这种情况。
但是,浮动通常会吞噬脚注。可以通过调用脚注文本放置After
(...Group
构造)来完成此操作。\begin{figure}
\end{figure}
\arabic
请注意,如果您将脚注编号设置为除以下以外的任何值,则上述设置将不起作用refcount
通过数字值\footnotetext
作为参考。