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

关于图表距离的修复 #56

Closed
liziwl opened this issue Apr 16, 2022 · 8 comments
Closed

关于图表距离的修复 #56

liziwl opened this issue Apr 16, 2022 · 8 comments

Comments

@liziwl
Copy link
Member

liziwl commented Apr 16, 2022

#54 这个依旧没有正确修复,似乎是patchcmd没有应用

@liziwl
Copy link
Member Author

liziwl commented Apr 17, 2022

@iydon 继续在这边讨论吧。

转发讨论:
有一个疑问,“图题在图之下,段前空 6 磅,段后空 12 磅”,其中的段前是否指图题与图之间间隔 6 磅,与下面正文间隔 12 磅;相应地,表题与表之间间隔 6 磅,与上面正文间隔 12 磅。

如果是这样理解的话,清华模板文档中的 \captionsetup{skip=6bp} 才能和表述对应上,因为 skip 选项用来修改标题与图或表之间的间距的,而与上下文空 12 磅按理说对应着修改 intextsep=12bp 即可(浮动体为 h 时),源码中则用到了 \p@ (pt, 1bp=1.00374pt) 加伸缩距离,应该为了一些极端情况排起来不突兀。

\captionsetup{skip=6bp} 可以简单等价于 \captionsetup[figure]{aboveskip=6bp} 与 \captionsetup[table]{aboveskip=6bp},其中 aboveskip 不是字面意思,可以理解为标题与图或表之间的间距,相应地 \belowskip 就是标题与另一个方向“盒子”之间的间距;\intextsep 则是浮动体与上下“盒子”之间的间距。最后,经过实验,我还是没有找到控制浮动体与下面正文之间额外间距的距离变量,不过有以下暂时的方案:

方案1

\captionsetup[figure]{belowskip=-12bp} % 表格与下文的额外距离不明显

方案2

  \AfterEndEnvironment{figure}{\vskip-12bp}
  \AfterEndEnvironment{table}{\vskip-6bp}

image

@liziwl
Copy link
Member Author

liziwl commented Apr 17, 2022

方案2

  \AfterEndEnvironment{figure}{\vskip-12bp}
  \AfterEndEnvironment{table}{\vskip-6bp}

这个问题是,如果参数不为 h 就会出现一下情况。
image

使用 \nointerlineskip 一样会有类似的问题。

@iydon
Copy link
Collaborator

iydon commented Apr 18, 2022

\usepackage{minted}

问题来自于 minted 宏包中导入了 lineno 宏包,lineno 宏包中貌似对 penalty 的修改挺多的,但是涉及到 TeX primitives,所以具体是哪些行还没有找出来(debug 思路就是明面上的代码没问题,那么问题可能是引入的宏包带来的,所以依次检查 RequirePackage 与 usepackage)。

清华的模板中使用 minted 宏包依然会有浮动体上下间隔不一致的情况,以下为通过简单遍历后发现的导入了 lineno 的文类或者宏包。未完善的遍历脚本见 gist

BMSTU-IU8.cls
aastex631.cls
ametsoc.cls
ascelike.cls
asmeconf.cls
asmejour.cls
beilstein.cls
buctthesis.cls
cc.cls
cje.cls
einfart.cls
gammas.cls
grant.cls
hepthesis.cls
hithesis.cls
hitszthesis.cls
iwhdp.cls
langscibook.cls
lectures.cls
legislation.cls
lyluatexbase.cls
minimart.cls
minimbook.cls
pdfArticle.cls
revtex4-1.cls
revtex4-2.cls
simplivre.cls
simurgh-doc.cls
skdoc.cls
uothesis.cls
verifica.cls

10-IU8-titlepage.sty
cclayout.sty
dline-shipunov.sty
dtx-style.sty
edcntwd0.sty
ednotes.sty
edtable.sty
ekdosis.sty
feupphdteses.sty
ffcode.sty
fvextra.sty
linenoamsmath.sty
local.sty
mftinc.sty
mindflow.sty
minimalist.sty
minorrevision.sty
minted.sty
nucleardata.sty
plantuml.sty
puyotikz.sty
pythontex.sty
runcode.sty
stdpage.sty
ver-doc.sty
vertbars.sty
vplref.sty

@iydon
Copy link
Collaborator

iydon commented Apr 19, 2022

lineno 中致使图表位置不正确的代码片段(简化后)如下,我目前还理解不了原理(output routine),所以没找到解决方案。

\let\@tempa\output
\newtoks\output
\output=\expandafter{\the\@tempa}
\@tempa={\the\output}

@liziwl
Copy link
Member Author

liziwl commented Apr 19, 2022

lineno 中致使图表位置不正确的代码片段(简化后)如下,我目前还理解不了原理(output routine),所以没找到解决方案。

\let\@tempa\output
\newtoks\output
\output=\expandafter{\the\@tempa}
\@tempa={\the\output}

lineno 包已经17年没更新了,太久了。如果修复方式不太容易的话,可以可以给 minted 提需求要他们修算了。替代的 listings 除了代码高亮要自己配其实都还好。

latex-lineno/lineno#1 (comment) 目前 lineno 的维护也看不懂历史代码了。

@liziwl
Copy link
Member Author

liziwl commented Apr 19, 2022

https://tex.stackexchange.com/questions/40863/parskip-inserts-extra-space-after-floats-and-listings/40896#40896 看来这个问题有点历史了,大佬也没好的解决方式。

liziwl added a commit that referenced this issue Apr 20, 2022
@liziwl
Copy link
Member Author

liziwl commented Feb 9, 2023

补充一下向上游提的问题 tuna/thuthesis#614 ,也没有很好的解决方式。
目前的解决方式是建议使用 listings 而不是用有兼容性问题的 minted 格式化代码,并针对 minted 包的引入警告。

@liziwl liziwl closed this as completed Feb 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants