我的论文中有许多图表。其中有些图表我想同时包含在二listof:标准的“图表列表”和非标准的“学习系统列表”。
例如,我有以下图表,它是一个研究系统。因此,它应该在图表列表中,也应该在研究系统列表中。请注意两个列表中的不同标题。
我希望它出现在标准图形列表中,如下所示:
并同时出现在自定义学习系统列表中,如下所示:
答案1
以下是使用 caption 包提供的功能的一种可能解决方案。基本思路是system
使用声明一个名为 的新浮点数\DeclareCaptionType
,然后使用一个带有一个强制参数的新命令,该命令只会增加计数器system
,并将其参数写入 LoF 和新列表:
\documentclass{article}
\usepackage{caption}
\newcommand\listofsystemname{List of Study Systems}
\DeclareCaptionType[fileext=sys]{system}[\listofsystemname]
\renewcommand\thesystem{\Roman{system}}
\newcommand\DoubleCaption[1]{%
\stepcounter{system}%
\caption{Study system \thesystem: #1}
\addcontentsline{sys}{figure}{\protect\numberline{\thesystem}#1}}
\begin{document}
\listofsystems
\listoffigures
\begin{figure}
\centering A
\DoubleCaption{IEEE 13-bus unbalanced}
\label{fig:test1}
\end{figure}
\begin{figure}
\centering B
\caption{A standard figure caption}
\label{fig:test2}
\end{figure}
\begin{figure}
\centering C
\DoubleCaption{IEEE 16-bus balanced}
\label{fig:test3}
\end{figure}
\end{document}
根据实际需要,我之前的解决方案可能有点过头了;毕竟,如果唯一的要求是“新的列表”,那么创建新的浮点类型并不是必要的。在这种情况下,简单使用\@starttoc
就足够了:
\documentclass{article}
\newcommand\listofsystemname{List of Study Systems}
\newcounter{system}
\renewcommand\thesystem{\Roman{system}}
\makeatletter
\newcommand\listofsystems{\section*{\listofsystemname}\@starttoc{sys}}
\makeatother
\newcommand\DoubleCaption[1]{%
\stepcounter{system}%
\caption{Study system \thesystem: #1}
\addcontentsline{sys}{figure}{\protect\numberline{\thesystem}#1}}
\begin{document}
\listofsystems
\listoffigures
\begin{figure}
\centering A
\DoubleCaption{IEEE 13-bus unbalanced}
\label{fig:test1}
\end{figure}
\begin{figure}
\centering B
\caption{A standard figure caption}
\label{fig:test2}
\end{figure}
\begin{figure}
\centering C
\DoubleCaption{IEEE 16-bus balanced}
\label{fig:test3}
\end{figure}
\end{document}
答案2
我自己就是这么做的:
在序言中增加以下内容:
% Add a list of study systems
\usepackage{tocloft}
\newcommand{\tocloftclearpage}{\cleardoublepage\phantomsection}
% tocloft won't print listofs on new pages otherwise
\newcommand{\liststudysystemname}{List of Study Systems}
\newlistof[chapter]{studysystem}{sts}{\liststudysystemname}
\newcounter{studysystemdiagram}
\newcommand{\studysystem}[1]{%
\stepcounter{studysystemdiagram}
\addcontentsline{sts}{figure}{\protect\numberline{\Roman{studysystemdiagram}}#1}}
\newcommand{\studysystemcaption}[1]{Default caption}
\newcommand{\studysystemcaptionprefix}{Study system \Roman{studysystemdiagram}:\ }
\newcommand{\definesystemlabel}[1]{%
\newcommand{#1}{\Roman{studysystemdiagram}}}
然后对于每个“特殊图形”,更新其图形环境类似于此:
\begin{figure}
\centering
\includegraphics[width=0.65\textwidth]{Figs/systemIEEE13bus}
\renewcommand{\studysystemcaption}{IEEE 13-bus unbalanced test feeder with the augmented DER unit and load.}
\studysystem{\studysystemcaption}
\caption[\studysystemcaptionprefix\studysystemcaption]{\studysystemcaptionprefix \studysystemcaption\ Loads and shunt capacitors of the original test feeder are not shown.}
\label{fig:SPAACE_systemIEEE13bus}
\end{figure}