请考虑以下文档:
\documentclass{article}
\usepackage{subcaption}
\usepackage{float}
\begin{document}
\begin{figure}[H]
\caption{A caption.}
\end{figure}
Some text after the figure.
\end{document}
直到最近,这个在我的 Devuan Beowulf (~= Debian Buster) 系统上编译得很好。然后一个apt-get dist upgrade
半月前,它停止了编译,抱怨 H 的位置:
LaTeX Error: Unknown float option `H'.
但是,在我的笔记本电脑上,使用 Ubuntu 18.04.3(Bionic),它可以继续工作。
为什么会发生这种情况?我该如何避免这种情况?
笔记:
源调整的效果
- 如果我删除
\usepackage{subcaption}
- 它就可以起作用。 - 如果我移动
\usepackage{subcaption}
浮点数之后的它 - 它仍然不起作用。 - 如果我
[H]
用[h]
- 替换,它就可以工作。
TeXLive 版本
- 新破系统:2018.20190227-2
- 工作笔记本系统:2017.20180305-1
完整日志:
Latexmk: This is Latexmk, John Collins, 18 June 2019, version: 4.65.
Latexmk: applying rule 'pdflatex'...
Rule 'pdflatex': The following rules & subrules became out-of-date:
'pdflatex'
------------
Run number 1 of rule 'pdflatex'
------------
------------
Running 'pdflatex --shell-escape -recorder "a.tex" -file-line-error -synctex=1'
------------
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex)
\write18 enabled.
entering extended mode
(./a.tex
LaTeX2e <2018-12-01>
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
Document Class: article 2018/09/03 v1.4i Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo))
(/usr/share/texlive/texmf-dist/tex/latex/caption/subcaption.sty
(/usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty
(/usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty
(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty))))
(/usr/share/texlive/texmf-dist/tex/latex/float/float.sty) (./a.aux)
! LaTeX Error: Unknown float option `H'.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.5 \begin{figure}[H]
?
答案1
tl;dr:您的发行版打包了一个错误的版本caption.sty
。
这是由于您的机器使用了 Debian SID texlive-latex-recommended 包的一个特别不合适的版本。漏洞导致caption.sty
了这次失败;虽然很快就修复了,但是texlive-latex-recommended
软件包中还是出现了缺陷caption.sty
。
如果您下载最新版本的subcaption
包裹,并将其放在您本地的 texmf 树中 - 该文档应该可以正常编译。
另外 - 检查你的/etc/apt/sources.list
。在升级到 Devuan Beowulf 的某些情况下存在已知故障,即在 APT 源中放置了 Devuan Unstable 存储库(ceres 而不是 beowulf)的 APT 行。
感谢@DavidCarlisle 为我指明了方向,并感谢@PhelypeOleinik 指出了确切的错误。