![longtable 中的 captionof 给出了放错位置的 \noalign](https://linux22.com/image/280366/longtable%20%E4%B8%AD%E7%9A%84%20captionof%20%E7%BB%99%E5%87%BA%E4%BA%86%E6%94%BE%E9%94%99%E4%BD%8D%E7%BD%AE%E7%9A%84%20%5Cnoalign.png)
尝试制作一个多页图形面板,其中 50 个相同大小的图形以 2x5 的排列方式分布在 5 页上,整个图形的标题位于第一页的顶部,所有内容都放置在边距已减小的页面上。
使用 subfigure、subfig、subcaption 时,我只收到“未处理的浮动框太多”的错误,虽然 \usepackage{morefloats} 消除了错误,但也删除了图形。切换到简单的“表格”会导致其他问题,与“minipage”类似,其中图形面板必须拆分为每页一个面板,然后其他浮动框会出现在面板之间,尽管之前已多次使用 \clearpage。
使用 'longtable' 几乎可以正常工作。但表格不计入图形中。
\documentclass{article}
\usepackage{longtable}
\usepackage{capt-of}
\begin{document}
\begin{longtable}{cc}
\captionof{figure}{This gives a Misplaced noalign error \label{fig:dummy1}} \\
%\caption[This]{Works} \\
Test & test 2 \\
Test & test 2 \\
% later need to include this: \addtocounter{table}{-1} %
\end{longtable}
\end{document}
如何让 captionof 起作用……?
答案1
longtable
有其自己的定义,\caption
这使得使用\captionof
加倍困难:即使你绕过Misplaced \noalign
,你也会注意到 floattypetable
是硬编码的......
正如\captionof
总是所说的那样,如果不完全重写的版本,\caption
就很难以一种可以在 内部和外部工作的方式对其进行修补。这是一个基于 的想法:longtable
longtable
\caption
\multicolumn
\documentclass{article}
\usepackage{longtable}
\usepackage{etoolbox}
\makeatletter
\let\o@caption\caption
\newcommand\LT@captionof[2]
{%
\multicolumn{\LT@cols}{p{\textwidth}}{\def\@captype{#1}\o@caption{#2}}%
}
\patchcmd\LT@array{\let\caption\LT@caption}
{\let\caption\LT@caption\let\captionof\LT@captionof}{}{}
\makeatother
\begin{document}
\listoffigures
\begin{longtable}{cc}
\captionof{figure}{This gives a Misplaced noalign error \label{fig:dummy1}} \\
%\caption[This]{Works} \\
Test & test 2 \\
Test & test 2 \\
% later need to include this: \addtocounter{table}{-1} %
\end{longtable}
reference to figure \ref{fig:dummy1}.
\end{document}
答案2
不要脸地自我宣传:/Myltcaption
包(它是包束的一部分caption
)提供了一种重新定义所使用的浮点类型的方法longtable
:
\documentclass{article}
\usepackage{longtable}
\usepackage{ltcaption}
\begin{document}
\renewcommand\LTcaptype{figure}
\begin{longtable}{cc}
\caption{This does not give a Misplaced noalign error \label{fig:dummy1}} \\
Test & test 2 \\
Test & test 2 \\
% not needed: \addtocounter{table}{-1} %
\end{longtable}
\end{document}