通过这个最小的例子:
\documentclass{article}
\usepackage{parskip}
\usepackage{titlesec}
\titlespacing*{\section}{0pt}{1ex plus .2ex minus 0.1ex}{1ex plus .2ex minus 0.1ex}
\titlespacing*{\subsection}{0pt}{1ex plus .2ex minus 0.1ex}{1ex plus .2ex minus 0.1ex}
\begin{document}
\section{Foo}
Lorem.
\subsection{Foobar}
Ipsum.
\section{Bar}
Dolor.
\end{document}
使用两个不同的 Docker 镜像时,输出结果并不相同。使用一个构建时,标题前后的间距更大。我正在使用这两个 Docker 镜像。当我在本地生成 2 页文档时,我的 CI 生成了 3 页文档,我注意到了这个问题。
$ docker images --digests | grep nowox/latex
nowox/latex 1.0 sha256:4743340934972f31e0bbfaeafda1202c0c94f442251595c9c91f83a7aa02bd5f 2 weeks ago 1.9GB
nowox/latex <none> sha256:252e2811d18e8b69dbe036a789c109cbfa72e4a9397eaa84e07fb0cc12cdc10d 12 months ago 2.43GB
要运行 LaTeX,我使用:
docker run -v$(pwd)/home -w/home <image-id> xelatex test.tex
我设置间距的方式有问题吗?或者这些包有问题?
以下是\listfiles
后一个版本:
$ docker run -v$(pwd):/home -w/home 019287608dc1 xelatex tutu.tex
This is XeTeX, Version 3.14159265-2.6-0.999991 (TeX Live 2019/Debian)
restricted \write18 enabled.
entering extended mode
LaTeX2e <2018-12-01>
...
*File List*
article.cls 2018/09/03 v1.4i Standard LaTeX document class
size10.clo 2018/09/03 v1.4i Standard LaTeX file (size option)
titlesec.sty 2016/03/21 v2.10.2 Sectioning titles
parskip.sty 2019-01-16 v2.0c non-zero parskip adjustments
kvoptions.sty 2016/05/16 v3.12 Key value format for package options (HO)
keyval.sty 2014/10/28 v1.15 key=value parser (DPC)
ltxcmds.sty 2016/05/16 v1.23 LaTeX kernel commands for general use (HO)
kvsetkeys.sty 2016/05/16 v1.17 Key value parser (HO)
infwarerr.sty 2016/05/16 v1.4 Providing info/warning/error messages (HO)
etexcmds.sty 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO)
ifluatex.sty 2016/05/16 v1.4 Provides the ifluatex switch (HO)
etoolbox.sty 2018/08/19 v2.5f e-TeX tools for LaTeX (JAW)
***********
前者的输出:
$ docker run -v$(pwd):/home -w/home 2d2b58e23f53 xelatex tutu.tex
This is XeTeX, Version 3.14159265-2.6-0.99998 (TeX Live 2017/Debian)
restricted \write18 enabled.
entering extended mode
LaTeX2e <2017-04-15>
...
*File List*
article.cls 2014/09/29 v1.4h Standard LaTeX document class
size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
titlesec.sty 2016/03/21 v2.10.2 Sectioning titles
parskip.sty 2001/04/09 non-zero parskip adjustments
***********
我意识到我对 Dockerfile 进行了更改但没有更改其标签,因此后一个版本有这个 Dockerfile:
FROM ubuntu:bionic
LABEL maintainer="Yves Chevallier <[email protected]>"
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get install -y make
RUN apt-get install -y texlive-xetex
RUN apt-get install -y texlive-lang-french
RUN apt-get install -y texlive-fonts-extra
RUN apt-get install -y latexmk
RUN rm -rf /var/lib/apt/lists/*
ENV USER=latex
而且我认为前者应该仅在ubuntu
使用的版本上有所不同。
答案1
从已加载软件包的版本可以看出,该parskip
软件包最近已更新。它所做的一件事是删除了标题中的多余空格,这是上一个版本(可追溯到 2001 年)所做的。引用新文档中的一段话:
如果使用该包时没有任何选项或者只使用选项,
parfill
它的行为与早期版本类似,只是现在标题周围的间距也会调整(不添加额外的\parskip
)。
您可以通过在加载包时指定明确的发布版本来使用新版本复制旧版本的行为:
\usepackage{parskip}[=v1]
您无法使用旧包复制新的行为,但您可以将新版本安装到texmf
旧映像的本地文件夹中。