Closed liziwl closed 1 year ago
@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 则是浮动体与上下“盒子”之间的间距。最后,经过实验,我还是没有找到控制浮动体与下面正文之间额外间距的距离变量,不过有以下暂时的方案:
\captionsetup[figure]{belowskip=-12bp} % 表格与下文的额外距离不明显
\AfterEndEnvironment{figure}{\vskip-12bp}
\AfterEndEnvironment{table}{\vskip-6bp}
方案2
\AfterEndEnvironment{figure}{\vskip-12bp} \AfterEndEnvironment{table}{\vskip-6bp}
这个问题是,如果参数不为 h 就会出现一下情况。
使用 \nointerlineskip
一样会有类似的问题。
问题来自于 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
lineno
中致使图表位置不正确的代码片段(简化后)如下,我目前还理解不了原理(output routine),所以没找到解决方案。
\let\@tempa\output
\newtoks\output
\output=\expandafter{\the\@tempa}
\@tempa={\the\output}
lineno
中致使图表位置不正确的代码片段(简化后)如下,我目前还理解不了原理(output routine),所以没找到解决方案。\let\@tempa\output \newtoks\output \output=\expandafter{\the\@tempa} \@tempa={\the\output}
lineno
包已经17年没更新了,太久了。如果修复方式不太容易的话,可以可以给 minted
提需求要他们修算了。替代的 listings
除了代码高亮要自己配其实都还好。
https://github.com/latex-lineno/lineno/issues/1#issuecomment-1035886003 目前 lineno
的维护也看不懂历史代码了。
补充一下向上游提的问题 https://github.com/tuna/thuthesis/issues/614 ,也没有很好的解决方式。
目前的解决方式是建议使用 listings
而不是用有兼容性问题的 minted
格式化代码,并针对 minted
包的引入警告。
54 这个依旧没有正确修复,
似乎是patchcmd没有应用。