将来源添加到图片标题

将来源添加到图片标题

如何为图片添加来源?我需要添加\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}

结果:

MWE 的结果

相关内容