thesisuestc icon indicating copy to clipboard operation
thesisuestc copied to clipboard

如何满足subfigure图过多需要跨页排版需求?

Open dnsilence opened this issue 5 years ago • 10 comments

一幅图里面有六个子图,希望可以跨页排版,实现学校规范里面的(二,5.图(5)):“有分图时,分图过多不能在一页内编排时,可转到下页,但总图题只编排在下页。”需求,请问如何解决?

dnsilence avatar Jan 06 '20 02:01 dnsilence

这个问题可以使用\ContinuedFloat命令解决,比如下面的例子:

\documentclass{article}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}

\begin{document} 
    \begin{figure}[tb]
\begin{subfigure}[t]{0.5\hsize}
    \includegraphics[width=0.9\linewidth]{example-image}
    \caption{}
\end{subfigure} 
\begin{subfigure}[t]{0.5\hsize}
    \includegraphics[width=0.9\linewidth]{example-image}
    \caption{}
\end{subfigure}
    \caption{first part of my figure}
    \end{figure}
\clearpage   
    \begin{figure}[tb]\ContinuedFloat
\begin{subfigure}[t]{0.5\hsize}
    \includegraphics[width=0.9\linewidth]{example-image}
    \caption{}
\end{subfigure}
\begin{subfigure}[t]{0.5\hsize}
    \includegraphics[width=0.9\linewidth]{example-image}
    \caption{}
\end{subfigure}
    \caption{second part of my figure}
    \end{figure}
\end{document}

bdebye avatar Jan 24 '20 04:01 bdebye

我试了楼主的方法,也看了楼主最近的模板更新,但是有两个新的问题

  • 在排版多张图片时(4张:2*2),上一页的子图放置后仍留有空白,但是后面段落的文字不会自动顶上去,不知道是不是因为 \floatcontinue 里面的 \clearpage 导致的 image
  • 如果我只用figure环境(1张图),不使用subfloat,若当前页放不下图片被放置后一页时,紧接的段落文字是可以自动顶到前页空白的,不过这时候图片标题的段后间距出现了问题, 例如这是正常间距 image 这是图片被放置到下一页后 image 可以看到,后面的标题段后明显大于前一个

dnsilence avatar Jan 26 '20 12:01 dnsilence

我试了楼主的方法,也看了楼主最近的模板更新,但是有两个新的问题

* 在排版多张图片时(4张:2*2),上一页的子图放置后仍留有空白,但是后面段落的文字不会自动顶上去,不知道是不是因为 **\floatcontinue** 里面的 **\clearpage** 导致的
  ![image](https://user-images.githubusercontent.com/24773583/73134975-060d2780-4078-11ea-8c2f-1ceaa152cedb.png)

* 如果我只用figure环境(1张图),不使用subfloat,若当前页放不下图片被放置后一页时,紧接的段落文字是可以自动顶到前页空白的,不过这时候图片标题的段后间距出现了问题,
  例如这是正常间距
  ![image](https://user-images.githubusercontent.com/24773583/73135048-dca0cb80-4078-11ea-95e3-2ffe9526afd0.png)
  这是图片被放置到下一页后
  ![image](https://user-images.githubusercontent.com/24773583/73135058-0fe35a80-4079-11ea-8e1c-4d95b0d761ba.png)
  可以看到,后面的标题段后明显大于前一个

没有阅读源码,盲猜是因为 \textfloatsep\intextsep 长度不同导致的,这是设计如此,不是 bug,可以参考如何改变浮动体前后与正文的间距texdoc latex2esec 5.6 Floats,手动修改,使得它们长度一致即可

sikouhjw avatar Mar 15 '20 10:03 sikouhjw

这个间距学校并没有明确的规定,使用latex默认的设置或者遵循一般美观的原则应该都是可以的。

bdebye avatar Mar 16 '20 00:03 bdebye

这个间距学校并没有明确的规定,使用latex默认的设置或者遵循一般美观的原则应该都是可以的。

这样会导致如果图表被挤到下一页开头,图表段后就比要求的12磅大,能很明显的看出来。我自己用ctex宏包尝试发现没有这个问题。感觉有可能是楼上说的问题,但是自己不会改

dnsilence avatar Mar 16 '20 05:03 dnsilence

这个间距学校并没有明确的规定,使用latex默认的设置或者遵循一般美观的原则应该都是可以的。

这样会导致如果图表被挤到下一页开头,图表段后就比要求的12磅大,能很明显的看出来。我自己用ctex宏包尝试发现没有这个问题。感觉有可能是楼上说的问题,但是自己不会改

MWE 如下,自己根据要求改吧,顺便

图表段后就比要求的12磅大

真的有这要求的话,叫作者改吧

\documentclass{article}
\usepackage{mwe,lipsum}
\setlength\textfloatsep{12pt}
\setlength\intextsep{12pt}
\begin{document}
  \lipsum[1]
  \begin{figure}[h]
    \includegraphics[width=\textwidth]{example-image.pdf}
  \end{figure}
  \lipsum[1-2]
  \begin{figure}[t]
    \includegraphics[width=\textwidth]{example-image.pdf}
  \end{figure}
\end{document}

sikouhjw avatar Mar 16 '20 05:03 sikouhjw

@dnsilence

  • 在排版多张图片时(4张:2*2),上一页的子图放置后仍留有空白,但是后面段落的文字不会自动顶上去,不知道是不是因为 \floatcontinue 里面的 \clearpage 导致的

是。删了 \claerpage 就好。

\ContinuedFloat 的功能是(参考 caption 宏包文档 3.3 节),让所在的浮动体环境中的

  • 总题注的编号不自增
  • 子图题注接着上一个浮动体连续编号。

相当于

\begin{figure}
  子图 1(a)
  子图 1(b)
\end{figure}

\begin{figure}
  子图 1(c)
  子图 1(d)
  总图题注 1
\end{figure}

muzimuzhi avatar Mar 16 '20 09:03 muzimuzhi

@dnsilence

  • 在排版多张图片时(4张:2*2),上一页的子图放置后仍留有空白,但是后面段落的文字不会自动顶上去,不知道是不是因为 \floatcontinue 里面的 \clearpage 导致的

是。删了 \claerpage 就好。

\ContinuedFloat 的功能是(参考 caption 宏包文档 3.3 节),让所在的浮动体环境中的

  • 总题注的编号不自增
  • 子图题注接着上一个浮动体连续编号。

相当于

\begin{figure}
  子图 1(a)
  子图 1(b)
\end{figure}

\begin{figure}
  子图 1(c)
  子图 1(d)
  总图题注 1
\end{figure}

恩恩,这个问题已经解决了,主要是第二个间距问题,可能需要更新下模板

dnsilence avatar Mar 16 '20 09:03 dnsilence

恩恩,这个问题已经解决了,主要是第二个间距问题,可能需要更新下模板

你在导言区设置一下不就好了,为什么要更新模板

sikouhjw avatar Mar 17 '20 02:03 sikouhjw

这个问题可以使用\ContinuedFloat命令解决,比如下面的例子:

\documentclass{article}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}

\begin{document} 
    \begin{figure}[tb]
\begin{subfigure}[t]{0.5\hsize}
    \includegraphics[width=0.9\linewidth]{example-image}
    \caption{}
\end{subfigure} 
\begin{subfigure}[t]{0.5\hsize}
    \includegraphics[width=0.9\linewidth]{example-image}
    \caption{}
\end{subfigure}
    \caption{first part of my figure}
    \end{figure}
\clearpage   
    \begin{figure}[tb]\ContinuedFloat
\begin{subfigure}[t]{0.5\hsize}
    \includegraphics[width=0.9\linewidth]{example-image}
    \caption{}
\end{subfigure}
\begin{subfigure}[t]{0.5\hsize}
    \includegraphics[width=0.9\linewidth]{example-image}
    \caption{}
\end{subfigure}
    \caption{second part of my figure}
    \end{figure}
\end{document}

这个能够用于2022年的图间距要求吗

cloveryun123 avatar Mar 04 '22 16:03 cloveryun123