按出现顺序将图表和表格添加到同一页

按出现顺序将图表和表格添加到同一页

有没有办法让表格和图片出现在同一个目录中,按照文档中的出现顺序排列,但单独编号?完全一样这个帖子,但表格和图片却按照页码顺序混在一起?我知道这听起来很奇怪,但我有一个应用程序特别需要这种格式。

编辑:感谢贾加斯,主要问题已解决。但是,这稍微打乱了格式。要使用他的 MWE:

\documentclass{article}
\usepackage{lipsum,tocloft}

\makeatletter
\newcommand{\listfloatname}{List of Floats}
\newlistof{float}{flt}{\listfloatname}
\long\def\@caption#1[#2]#3{%
\par
\refstepcounter{float}%
\addcontentsline{\csname ext@#1\endcsname}{#1}%
 {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}%
\addcontentsline{flt}{float}%
 {\protect\numberline{\csname thefloat\endcsname}{\ignorespaces #2}}%
\begingroup
\@parboxrestore
\if@minipage
  \@setminipage
\fi
\normalsize
\@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
\endgroup}
\makeatother
% my formatting 
\renewcommand{\cfttabfont}{Table }
\renewcommand{\cftfigfont}{Figure }
\renewcommand{\cfttabaftersnum}{:}
\renewcommand{\cftfigaftersnum}{:}

\begin{document}
\listoffloat
\listoftables
\listoffigures

\newpage
\lipsum[1]

\begin{figure}
\caption{First figure.}
\end{figure}

\begin{table}[h]
\caption{First table.}
\end{table}

\lipsum[1]

\begin{figure}[h]
\caption{Second figure.}
\end{figure}

\lipsum[1]

\begin{table}
\caption{Second table.}[h]
\end{table}

\lipsum[1]

\end{document}

答案1

使用包可以实现以下目的tocloft

\documentclass{article}

\usepackage{lipsum,tocloft}

\makeatletter
\newcommand{\listfloatname}{List of Floats}
\newlistof{float}{flt}{\listfloatname}
\long\def\@caption#1[#2]#3{%
  \par
  \refstepcounter{float}%
  \addcontentsline{\csname ext@#1\endcsname}{#1}%
    {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}%
  \addcontentsline{flt}{float}%
    {\protect\numberline{\csname thefloat\endcsname}{\ignorespaces #2}}%
  \begingroup
    \@parboxrestore
    \if@minipage
      \@setminipage
    \fi
    \normalsize
    \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
  \endgroup}
\makeatother

\begin{document}

\listoffloat

\lipsum[1]

\begin{figure}
\caption{First figure.}
\end{figure}

\lipsum[1]

\begin{table}
\caption{First table.}
\centering
\begin{tabular}{cccc}
      \multicolumn{1}{c}{$C$}  & \multicolumn{1}{c}{$M_i$} & \multicolumn{1}{c}{$m$}  & \multicolumn{1}{c}{$G'_i$}  \\ \hline
      28,3 & 1 & 22 & 43  \\
      28,4 & 3 & 25 & 141
\end{tabular}
\end{table}

\lipsum[1]

\begin{figure}
\caption{Second figure.}
\end{figure}

\lipsum[1]

\begin{table}
\caption{Second table.}
\centering
\begin{tabular}{cccc}
      \multicolumn{1}{c}{$C$}  & \multicolumn{1}{c}{$M_i$} & \multicolumn{1}{c}{$m$}  & \multicolumn{1}{c}{$G'_i$}  \\ \hline
      28,2 & 2 & 21 & 80  \\
      28,4 & 3 & 25 & 141
\end{tabular}
\end{table}

\lipsum[1]

\end{document}

如果编号应该分开,则更改:

  \addcontentsline{flt}{float}%
    {\protect\numberline{\csname thefloat\endcsname}{\ignorespaces #2}}%

  \addcontentsline{flt}{float}%
    {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}%

不同之处在于\csname thefloat\endcsname改为\csname the#1\endcsname

更新答案:

以下代码将生成具有浮点名称的 PDF。

\documentclass{article}
\usepackage{lipsum,tocloft}

\makeatletter
\newcommand{\listfloatname}{List of Floats}
\newlistof{float}{flt}{\listfloatname}
\long\def\@caption#1[#2]#3{%
\par
\refstepcounter{float}%
\addcontentsline{\csname ext@#1\endcsname}{#1}%
 {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}%
\addcontentsline{flt}{#1}%
 {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}%
\begingroup
\@parboxrestore
\if@minipage
  \@setminipage
\fi
\normalsize
\@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
\endgroup}
\makeatother
% my formatting 
\renewcommand{\cfttabfont}{Table }
\renewcommand{\cftfigfont}{Figure }
\renewcommand{\cfttabaftersnum}{:}
\renewcommand{\cftfigaftersnum}{:}

\begin{document}
\listoffloat
\listoftables
\listoffigures

\newpage
\lipsum[1]

\begin{figure}
\caption{First figure.}
\end{figure}

\begin{table}[h]
\caption{First table.}
\end{table}

\lipsum[1]

\begin{figure}[h]
\caption{Second figure.}
\end{figure}

\lipsum[1]

\begin{table}
\caption{Second table.}[h]
\end{table}

\lipsum[1]

\end{document}

相关内容