Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

图与前后段落的间距明显不同 #614

Closed
Bin-Cheng-THU opened this issue Mar 19, 2021 · 12 comments
Closed

图与前后段落的间距明显不同 #614

Bin-Cheng-THU opened this issue Mar 19, 2021 · 12 comments
Labels

Comments

@Bin-Cheng-THU
Copy link

Bin-Cheng-THU commented Mar 19, 2021

编译环境

编译的系统:Windows 10
TeX 发行版:TeX Live 2019
模板版本:v5.5.2
模板类型:doctor

描述问题

模板编译图与前后段落的间距明显不同,研究生院的模板里边并没有给出图的上下边距,所以不清楚latex的这个特性是否是对的。

截图:
image

复现上述问题的代码:

\documentclass[degree=doctor]{thuthesis}
\begin{document}
示了太阳系中可能存在某一普遍机制促进了陀螺地貌的形成。

\begin{figure}
  \centering
  \includegraphics[width=1.0\linewidth]{Chap061family.png}
  \caption{太阳系内已知的陀螺型小行星家族}
  \label{fig:Chap061family}
\end{figure}

带着这样的疑问,
\end{document}
@zepinglee
Copy link
Contributor

确实显得略小。模板中控制这个距离的命令是 \intextsep,设为 6 bp,但是图中的那个距离明显不够 6 bp。需要再研究下 LaTeX 是怎么算这个距离的,可能是从基线算起。

另外我找了一下《指南》上似乎没规定图与文字之间的空白是多少,只规定了图题的前后距离。

@Bin-Cheng-THU
Copy link
Author

确实显得略小。模板中控制这个距离的命令是 \intextsep,设为 6 bp,但是图中的那个距离明显不够 6 bp。需要再研究下 LaTeX 是怎么算这个距离的,可能是从基线算起。

另外我找了一下《指南》上似乎没规定图与文字之间的空白是多少,只规定了图题的前后距离。

翻了一下前些年的模板,图片的前后间距没有问题,里边的设置是
\setlength{\intextsep}{20bp @plus4pt @minus2pt}
\captionsetup[figure]{position=bottom,belowskip={12bp-\intextsep},aboveskip=6bp}
现在的是
\setlength{\intextsep}{6bp}

不清楚为何做出这个改动

@zepinglee
Copy link
Contributor

20 bp 太大了,尤其是很多同学的图留了一些白边,没有用类似 pdfcrop 的工具进行处理,就显得图与文字距离更大了。

我决定改成 12\p@ \@plus 2\p@ \@minus 2\p@

@Bin-Cheng-THU
Copy link
Author

20 bp 太大了,尤其是很多同学的图留了一些白边,没有用类似 pdfcrop 的工具进行处理,就显得图与文字距离更大了。

我决定改成 12\p@ \@plus 2\p@ \@minus 2\p@

试过了,上间距确实变大了,但是下间距还是远大于上间距,我现在暂时用vspace调了一下,在上边用\vspace{12bp},下边用\vspace{-6bp},看起来正常了一点。不过就得一个一个都手动调整。。。

@zepinglee
Copy link
Contributor

试过了,上间距确实变大了,但是下间距还是远大于上间距,我现在暂时用vspace调了一下,在上边用\vspace{12bp},下边用\vspace{-6bp},看起来正常了一点。不过就得一个一个都手动调整。。。

我再研究下这里的间距,避免手动调。

@zepinglee zepinglee reopened this Mar 22, 2021
@zepinglee
Copy link
Contributor

我尝试把 figure 前后距离、图与 caption 的距离都设置为 0 pt。

\input{regression-test.tex}
\documentclass[12pt]{book}
\makeatletter
\renewcommand\normalsize{%
  \@setfontsize\normalsize{12pt}{20pt}%
}
\usepackage{graphicx}
\usepackage{caption}
\def\test{%
  Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
  Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis.
  Curabitur dictum gravida mauris.
  Nam arcu libero nonummz ehyt consectetuer id a mahna.
}
\pagestyle{empty}
% \setlength\intextsep {20\p@}
% \setlength\intextsep {6\p@}
\setlength\intextsep{0pt}
\setlength\parskip{0pt}
\captionsetup{
  % skip = 0pt,
  aboveskip = 0pt,
  belowskip = 0pt,
}
\makeatother
\begin{document}
\START
\showoutput
\test\par
\begin{figure}[h]
  \centering
  \includegraphics[width=150pt,height=100pt]{example-image.pdf}
  \caption{\test}
\end{figure}
\test\par
\test\par
\clearpage
\test\par
\test\par
\begin{table}[h]
  \centering
  \caption{\test}
  \includegraphics[width=150pt,height=100pt]{example-image.pdf}
\end{table}
\test\par
\clearpage
\clearpage
\OMIT
\end{document}

Screen Shot 2021-03-23 at 20 55 58

对于 caption 在下方的情况,图与上方的文字是紧贴的,caption 与下方的文字距离比普通的行距略大。

Screen Shot 2021-03-23 at 20 59 38

而 caption 在上方时,这个距离完全看不懂……

@zepinglee
Copy link
Contributor

感谢 @qinglee ,参考 https://www.zhihu.com/question/46618031/answer/102310514https://tex.stackexchange.com/a/40363/82731

这个浮动体前后距离不一致的问题应该算是 LaTeX2e kernel 的 bug(尽管项目组不太愿意承认),需要在模板中 patch 一下。

@liziwl
Copy link

liziwl commented Apr 19, 2022

这个 patch 和 minted 包中引入的 lineno 不兼容,导致 patch 失效。需要提醒一下,lineno 这个包已经很久没有维护了,坑可能有点大。

@zepinglee
Copy link
Contributor

这个 patch 和 minted 包中引入的 lineno 不兼容,导致 patch 失效。需要提醒一下,lineno 这个包已经很久没有维护了,坑可能有点大。

怎么复现?

@liziwl
Copy link

liziwl commented Apr 19, 2022

这个 patch 和 minted 包中引入的 lineno 不兼容,导致 patch 失效。需要提醒一下,lineno 这个包已经很久没有维护了,坑可能有点大。

怎么复现?

https://gist.github.com/liziwl/57ba2bd969332346ea73162f893bd8b1

启用 minted 或者 lineno 均会导致补丁失效,MWE中移除了浮动体周围的space看起来会明显点。

@zepinglee
Copy link
Contributor

https://gist.github.com/liziwl/57ba2bd969332346ea73162f893bd8b1

确实 lineno 会影响间距。好在论文一般也不会需要排版代码,所以影响也不算特别严重。

@lnyk
Copy link

lnyk commented Aug 19, 2022

诸位大神好,最近被类似的问题困扰了很久,我想在文章中引入tcolorbox环境,结果发现出现了严重的问题。

问题描述

tcolorbox激活breakable选项后,断页不正常

问题复现

创建一个很高的tcolorbox,保证需要断页,启用breakable选项,会看到前面的文字被tcolorbox分页的第一部分盖住了,而且tcolorbox的第一部分也被吃掉了。

\begin{tcolorbox}[breakable,enhanced jigsaw,before upper=\sanhao]
  \lipsum[1-5]
\end{tcolorbox}

判断过程

在tcolorbox前被吃掉的文字中添加一个footnote,错误消失,觉得可能跟脚注有关(footmisc),但经过尝试并不是。

继续判断是否是页脚的问题(fancyhdr),使用

\iftopfloat{topfloat}{no topfloat}
\ifbotfloat{botfloat}{no botfloat}
\iffloatpage{floatpage}{no floatpage}

判断浮动体对象,发现页眉页脚都是浮动体,设定tcolorbox为float,断页是正常了,但是会强制在下页开始显示tcolorbox,当前页出现了正文之后的大段空白(尝试过float=h!后无变化)。觉得可能跟浮动体有关,但不是页眉页脚造成的。

深入阅读ThuThesis源代码,找到对LaTeX2e Kernel的问题描述和patch,注释掉第三个patch之后

% \patchcmd{\@getpen}{\@M}{\@Mi}
%   {}{\thu@patch@error{\@getpen}}

问题消失,断页正常了。

希望

Tex这方面我还算基本入门,但再深一点的代码就看不懂了,借助ThuThesis严谨的风格写了好几年的文章了,感谢之余希望大神们能够解决这个兼容性问题。

Harry-Chen added a commit that referenced this issue Mar 29, 2024
zepinglee pushed a commit that referenced this issue Apr 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants