自动图表表

自动图表表

在我的许多项目中,我最终都会加入很多外部人物,比如

\begin{figure}[h]
\begin{center}\vspace{1cm}
    \includegraphics[width=\linewidth]{something.png}
    \caption{An illustration of something.}
    \label{fig:foo}
\end{center}
\end{figure}

这些图通常取自其他地方,并采用知识共享许可,其中一些需要注明出处。无论哪种方式,我通常会在文档末尾附上所有图的表格,例如

\begin{tabular}{ |c|c|c| }
\hline
 Figure & Author & License \\
 \hline
 1 & John Smith / Wikimedia Commons & CC-BY-SA 3.0 \\
 \hline
 2 & Jane Doe & CC-BY-NC 3.0 \\
 \hline
 3 & Own Work & Public Domain \\
 \hline
\end{tabular}

这样做的问题是:

  • 我必须为我做的每个项目做表格标记;
  • 归属和许可信息与源代码中其适用的数字相差甚远,使得维护更加困难;
  • 如果图形编号或图形的相对顺序发生变化,我需要手动更新表格。

我知道的存在\listoffigures,但它似乎没有我想要的那种格式;我不需要页码和标题,我更希望将图表列在像上面那样的表格中。

在我理想的用例中,我希望能够在创建图形时以内联方式包含此类信息,例如

\begin{figure}[h]
\begin{center}\vspace{1cm}
    \includegraphics[width=\linewidth]{something.png}
    \caption{An illustration of something.}
    \label{fig:foo}
    \author{Jane Doe}
    \license{CC-BY-NC 3.0}
\end{center}
\end{figure}

然后\tableoffigures在项目末尾添加类似这样的内容,以自动生成表格。我还希望能够将其放在一个单独的包中,这样我就可以\usepackage进行必要的更改(我知道这在技术上是一个不同的问题,但我不知道如何修改解决方案以包含此功能)。

我该怎么做?欢迎提供其他提示;我对 LaTeX 不太了解,因此如果使用不同的环境或单独的包更容易实现这一点,\begin{figure}那就没问题了。

答案1

看看,如果足以在图中指示图像来源,例如通过使用包copyright

\documentclass{article}
\usepackage{geometry}
\usepackage[font=small, labelfont=bf]{caption}
\usepackage{copyrightbox}
\usepackage{xurl}

\begin{document}
    \begin{figure}[ht]
    \centering
\copyrightbox[b]{\includegraphics[width=0.3\linewidth]{example-image-duck}}%
                {Source: \url{http://tex.stackexchange.com/}}
\caption{Caption title}
\label{fig:right}
    \end{figure}
    \begin{figure}[ht]
    \centering
\copyrightbox[r]{\includegraphics[width=0.3\linewidth]{example-image-duck-portrait}}%
                {Source: \url{http://tex.stackexchange.com/}}
\caption{Caption title}
\label{fig:right}
    \end{figure}
\end{document}

在此处输入图片描述

答案2

您可以将authorlicense信息添加到\listoffigures(我不明白为什么您不想要图表标题和它们所在的页面列表)。这是您的 MWE 的修订版

\begin{center}\vspace{1cm}
    \includegraphics[width=\linewidth]{something.png}
    \caption{An illustration of something.} %% puts it in the LoF
    \label{fig:foo}
    \author{Jane Doe}
    \addtocontents{lof}{Author Jane Doe}
    \license{CC-BY-NC 3.0}
    \addtocontents{License CC-BY-NC 3.0}
\end{center}
\end{figure}

当然,您可以更改\author\license宏以自动将参数添加到 LoF。

任何状况之下不要center在浮点数中使用环境因为它会增加不需要的垂直空间,所以只需使用\centering

相关内容