如何为图片添加来源?我需要添加\ref
,\cite
或者只是自由文本。类似这样的内容:
\begin{figure} [ht]
\centering
\includegraphics[width=0.95\textwidth]{res/figure.pdf}
\caption{Caption}
\source{\ref{},\cite{} or free Text}
\label{fig:gliederung}
\end{figure}
应该给我:
来源不应该出现在\listoffigures
。
答案1
有很多方法可以做到这一点。源可以放在标题内。如果标题适合,LaTeX 会将标题放在一行中。\hspace{\linewidth}
以下示例中可以通过 来防止这种情况。当 LaTeX 通过将宽度放在 中来测试宽度时\hbox
,\hspace
会将 考虑在内。LaTeX 认为标题不适合一行,因此将其设置为多行,然后执行换行符并忽略紧随其后的空格 ( \hspace{\linewidth}
):
\documentclass{article}
\newcommand*{\captionsource}[2]{%
\caption[{#1}]{%
#1%
\\\hspace{\linewidth}%
\textbf{Source:} #2%
}%
}
\begin{document}
\begin{figure} [ht]
\centering
\captionsource{Caption}{ref, cite or free Text}
\label{fig:gliederung}
\end{figure}
\end{document}
另外,软件包还caption
提供了一个选项singlelinecheck
,可以禁用适合一行的测试,而始终使用可能的多行模式。
答案2
我知道这篇文章会浪费很多时间,但我遇到了同样的问题,并找到了你要找的解决方案。我会发布它,以防有人觉得它有用。
我从 Gonzalo Medina 的帖子中得到了这个想法A:加载的图片下面如何写来源说明?。
解决方案:加载caption
包(即\usepackage{caption}
在文档的序言中写入)并添加此行:
\newcommand{\source}[1]{\caption*{Source: {#1}} }
如何使用它:我定义这个命令的方式非常直观:
\begin{figure}
\includegraphics{./imageName}
\caption{Caption of the image.} \label{imageLabel}
\source{Source of the image.}
\end{figure}
怎么运行的:添加的行创建了一个\source{}
具有单个输入参数的新命令(你的来源)。*
中的\caption*{}
会阻止图形标题被考虑在 LaTeX 中并显示在\listoffigures
事实上,如果您输入:
\begin{figure}
\includegraphics{./imageName}
\caption{Caption of the image.}\label{imageLabel}
\caption*{Source: Source of the image.}
\end{figure}
样式修改:
我个人喜欢将所有来源都对齐到右侧,因此我通常像这样定义上述命令:
\newcommand{\source}[1]{\caption*{\hfill Source: {#1}} }
\vspace{}
此外,还可以通过添加如下命令来修改标题和源之间的垂直间距:
\newcommand{\source}[1]{\vspace{-3pt} \caption*{ Source: {#1}} }
([+] 值将增加空间,[-] 值将减少空间)
我希望它有帮助!
答案3
根据@Xavi 的答案,可以用来实现类似结果的替代命令可能如下所示:
\usepackage{caption}
\newcommand{\captionwithsource}[2]{
\caption{#1}
\vspace{-0.5\baselineskip}
\caption*{Źródło: {#2}}
}
然后当需要带源的标题时,可以使用\captionwithsource{Caption text}{Source text}
其他正常的命令\caption{Caption text}
。该命令的好处是您不必使用 2 个单独的命令。
人们还可以将命令重命名为他们想要的任何名称,据我所知,这captionwithsource
可能有点拗口。:)
此外,在我的解决方案中,\vspace
我决定使用硬编码值而不是负值\vspace{-0.5\baselineskip}
,这应该对大多数字体大小都适用。(假设使用\captionsetup[font=<size>]
命令进行更改。)
梅威瑟:
\documentclass{article}
\usepackage{blindtext}
\usepackage{caption}
\captionsetup{font=footnotesize}
\newcommand{\captionwithsource}[2]{
\caption{#1}
\vspace{-0.5\baselineskip}
\caption*{Source: {#2}}
}
\begin{document}
\begin{table}[h]
\centering
\captionwithsource{This is a table}{https://example.com/}
\begin{tabular}{|c|c|c|}
\hline
Lorem ipsum dolor & Lorem ipsum & dolor sit amet \\
\hline
1 & 2 & 3 \\
\hline
\end{tabular}
\end{table}
\blindtext
\begin{figure}[h]
\centering
\rule{0.5\textwidth}{0.5\textwidth}
\captionwithsource{This is a figure}{https://example.com/}
\end{figure}
\end{document}
结果: