我在 macOS Catalina 上运行 TeX Live 2021,并应用了所有可用的软件包和系统更新(再次应用了所有可用的更新)。我正在编辑上次于 2021 年 12 月 5 日处理的软件包文档,LuaLaTeX
突然看到 12 月 5 日并不存在的许多Underfull \hbox
警告Overfull \hbox
。一些tcolorbox
环境现在显示换行符,而以前没有换行符,脚注的排版不同,一些逐字文本的排版不正确。文档被分成三个.dtx
文件,从第一个文件开始处理,显然提供所有这些代码是不可行的,所以我将一些具体的示例提取到一个独立mwe.tex
文件中,它的处理方式与 12 月 5 日完全一样。我很困惑为什么.dtx
文件中的相同代码现在会产生警告。在今天之前,该代码自 2021 年 12 月 5 日以来就没有被触碰过。当然,CTAN 的所有可用更新都已照常应用tlmgr
。
我检查了这些.log
文件,发现的唯一区别是,在文件内部处理代码时出现了 8 个Overfull \hbox
警告和 1 个警告。在处理时没有出现这些警告,12 月 5 日也没有出现这些警告。Underfull \hbox
.dtx
mwe.tex
我知道这两者tcolorbox
,并且fontspec
最近都进行了更新,但如果它们是问题的根源,那么它就会出现在mwe.tex
文档中。
.dtx
处理自 12 月 5 日以来发生变化的文件中的代码会有什么不同?
更新:显然,我不能在这里发布三个.dtx
文件和文件,.log
否则我会被告知将其缩减为 MWE,而这正是我在这里尝试做的。整个项目可以在https://github.com/heafnerj/mandi/tree/dev以防有人想进一步调查。
我提供了一个 mwe 和屏幕截图,展示了 2021 年 12 月 5 日和今天(2022 年 1 月 22 日)的排版输出。
这是mwe.tex
文件。
% !TEX program = lualatexmk
% !TEX encoding = UTF-8 Unicode
\documentclass{article}
\PassOptionsToPackage{listings,documentation}{tcolorbox} % prevent option clash
\usepackage{mandi} % load mandi.sty
\usepackage{mandistudent} % load mandistudent.sty
\usepackage{mandiexp} % load mandiexp.sty
\usepackage[left = 1.00in,% %
right = 1.00in,% %
marginparwidth = 0.70in]{geometry} % main documentation
\usepackage[listings,documentation]{tcolorbox} % workhorse package
\tcbset{% % tcolorbox options
index german settings,%
index colorize = false,%
lefthand ratio = 0.50,%
color hyperlink = blue,%
color command = purple,%
color environment = purple!65!black,%
doc left = 0.5in,%
doc marginnote = {colframe = blue!50!white,colback = blue!5!white},%
doc head command = {interior style = {fill,left color = blue!15!white}},%
doc head environment = {interior style = {fill,left color = blue!15!white}},%
doc head key = {interior style = {fill,left color = blue!15!white}},%
docexample/.style = {%
colback = gray!10!white,sidebyside,lefthand ratio = 0.5,center},%
listing style = vpython,%
}%
% We need a new command for in-line listings to prevent overfull boxes.
% Anything in |...| will be in small plain text.
% Previously used !...! but that conflicts with colors.
\hypersetup{colorlinks=true} % colored links; no borders
\lstMakeShortInline[basicstyle=\normalfont\ttfamily\small]|
\listfiles
\begin{document}
The \textsf{mandi} \footnote{The bundle name can be pronounced either with two
syllables, to rhyme with \emph{candy}, or with three syllables, as
\emph{M and I}.} bundle consists of three packages: \textsf{mandi},
\textsf{mandistudent}, and \textsf{mandiexp}.
\begin{dispExample*}{lefthand ratio = 0.80}
\( \vec{p} \) or \( \vec*{p} \) \\
\( \vec{p}_{\symup{final}} \) or \( \vec*{p}_{\symup{final}} \) \\
\( \magnitude{\vec{p}} \) or \( \magnitude*{\vec{p}_{\symup{final}}} \) \\
\( \dirvec{p} \) or \( \dirvec*{p} \) \\
\( \changein \vec{p} \) or \( \changein t \) \\
\( \zerovec \) or \( \zerovec* \) \\
\( 6.02\timestento{-19} \)
\end{dispExample*}
Commands that include the name of a physical quantity typeset units, so
they shouldn't be used for algebraic or symbolic values of components.
For example, one shouldn't use |\vectormomentum{mv_x,mv_y,mv_z}| but
instead the generic |\mivector{mv_x,mv_y,mv_z}| instead.
\end{document}
下面是一个屏幕截图,显示了dispExample*
tcolorbox
12 月 5 日文件中.dtx
和今天mwe.tex
文件中正确排版的环境。
这里是完全相同的代码今天从文件内部排版.dtx
。
这是一个正确排版的段落,包含 12 月 5 日.dtx
文件中以及今天mwe.tex
文件中的一些逐字文本。
这里是完全相同的代码今天从文件内部排版.dtx
。
.dtx
最后,这是 12 月 5 日文件中和今天文件中正确排版的脚注mwe.tex
。
这是完全相同的代码今天从文件内部排版.dtx
。
答案1
您展示的两种布局是
\documentclass{article}
和
\documentclass[a4paper]{article}
你没有提供代码,但我猜你正在使用ltxdoc
类,并且(现在)正在选择ltxdoc.cfg
哪个
\PassOptionsToClass{a4paper}{article}
因此,您可能希望明确强制使用信纸尺寸
答案2
(我不太愿意回答自己的问题,但我这样做主要是为了为初学者提供问题及其解决方案的详细记录。我不会接受我自己的,而是接受大卫卡莱尔的,因为他确实提供了解决方案。)
David Carlisle 提到,会拾取将默认纸张尺寸设置为的ltxdoc.cls
配置文件。果然,我查看了一下,文件的新时间戳为 2021/12/07,而软件包的文档文件显示的日期为 2021 年 12 月 6 日。ltxdoc.cfg
a4paper
/usr/local/texlive/2021/texmf-dist/tex/latex-dev/base/ltxdoc.cfg
doc
所以确实发生了一些变化!我将此文件直接复制到我的工作目录并注释掉该行\PassOptionsToClass{a4paper}{article}
,现在一切都像 2021 年 12 月 5 日一样正常。CTAN 显示LaTeX
基础发行版的某些部分显然已于 2021 年 12 月 6 日更新,这解释了差异。
在软件包的文档中,doc
有一个解决方案可以避免拾取,那就是在文件中ltxdoc.cfg
替换为\documentclass{ltxdoc}
.dtx
documentclass[options]{article}
\usepackage{doc}
我根本不知道这种区别的存在并且想让初学者了解它。