在一篇包含模拟生成的图形的论文中,我想在附录部分指定用于运行模拟的参数。如何在每个图形环境中实现一个命令,该命令将向附录中的某个部分添加一个子部分,该部分指定每个图形的详细信息。我想象的是这样的:
\begin{figure}
\centering
\includegraphics[width=\linewidth]{fig1.png}
\caption{Description of figure 1...}
\label{fig:fig1}
\altcaption{Nitty-gritty details of figure \ref{fig:fig1}...}
\end{figure}
... some body text ...
\begin{figure}
\centering
\includegraphics[width=\linewidth]{fig2.png}
\caption{Description of figure 2...}
\label{fig:fig2}
\altcaption{Nitty-gritty details of figure \ref{fig:fig2}... Maybe even contains a reference to \ref{fig:fig1}}
\end{figure}
... rest of body text...
\appendix
\section{Appendix 1}
... appendix 1 text ...
\section{Figure details}
\altcaptionlist
这将输出一个标题为“图形细节”的附录部分,其子部分标题为“图 1 细节”和“图 2 细节”,其内容分别包括“图 1 的细节”和“图 2 的细节……甚至可能包含对图 1 的引用”。
理想的实现方式应具有上述形式,但如果能够在无需手动组织附录小节的情况下产生此类结果,我们将不胜感激。
谢谢你!
答案1
你可以使它\altcaption
与将项目添加到列表中的宏同义,同时\altcaptionlist
处理此存储项目列表。使用etoolbox
的列表处理能力,这是相当简单的。
\documentclass{article}
\usepackage{etoolbox}
\NewDocumentCommand{\altcaption}{}{\listgadd{\altcaplist}}% Store \altcaption in list \altcaplist
\NewDocumentCommand{\altcaptionlist}{}{%
% Process \altcaplist
\begin{itemize}
\RenewDocumentCommand{\do}{ m }{\item ##1}% Each item is an \item
\dolistloop{\altcaplist}%
\end{itemize}
}
\begin{document}
\begin{figure}
\caption{Description of first figure}
\label{fig:fig1}
\altcaption{Nitty-gritty details of Figure~\ref{fig:fig1}\ldots}
\end{figure}
\ldots some body text\ldots
\begin{figure}
\caption{Description of second figure}
\label{fig:fig2}
\altcaption{Nitty-gritty details of Figure~\ref{fig:fig2}\ldots Maybe even contains a reference to Figure~\ref{fig:fig1}}
\end{figure}
\ldots rest of body text\ldots
\appendix
\section{Appendix 1}
\ldots Appendix text\ldots
\section{Figure details}
\altcaptionlist
\end{document}