跟进下划线子节 - lineno、sectsty 和 ulem 之间不兼容

跟进下划线子节 - lineno、sectsty 和 ulem 之间不兼容

在回答这个问题时为小节添加下划线,我提供了一个依赖于该sectsty包的答案(与使用该包的@GonzaloMedina 的答案相比titlesec)。

最终,@GonzaloMedina 的答案更有帮助,因为 OP 也使用了行号,而且这个包和lineno之间似乎没有不兼容的地方,而titleseculemsectstylineno和之间明显存在联合不兼容性ulem

具体来说,至少当您使用提供的任何命令来sectsty修改部分的外观时(例如,,,,,\allsectionsfont{}\sectionfont{}\subsectionfont{}ETC。结合 ulem并且\underline,出现了一个问题,导致文档无法编译。我一直无法弄清楚为什么会这样,更不用说是否有任何解决方法。

我最好奇的是为什么会发生这种情况(为了学习),但如果您也可以提供一种解决方法,那就太棒了。

这是一个将会崩溃的 MWE:

\documentclass[11pt]{article}
\usepackage[normalem]{ulem}
\usepackage{sectsty}
\subsectionfont{\normalfont\large\itshape\underline} % document compiles fine without this line and/or without the \underline command in this line

\usepackage{lineno}
\linenumbers % or without this line; both lines, however, cause the compilation to crash

\begin{document}
\section*{Materials and Methods}
\subsection*{Sampling}
\subsection*{A very long sectional heading title that will probably have to be split over two lines}
Lorem ipsum
\end{document}

错误信息如下:

./test-sectsty.tex:11: 不正确的 \prevdepth。\prevdepth

l.11 \subsection*{采样}

? ./test-sectsty.tex:11: 紧急停止。\prevdepth

l.11 \subsection*{采样}

文档确实sectsty说明了以下内容(第 16 页):

sectsty包通过盲目地重新定义各种分段命令来工作,因此任何要求 LaTeX 的分段命令与标准类中定义的完全一致的包在使用时都会遇到麻烦sectsty

例如,该fncychap包重新定义了生成章节标题的代码。如果您使用fncychapwith sectsty,则必须fncychap在 之后加载sectsty

\usepackage{sectsty}
\usepackage{fncychap}

因此,我怀疑 的这个特定功能sectsty与下划线的工作方式有关,是罪魁祸首。但是,相对于加载和发出由和 提供的节字体命令之一,更改lineno(和) 的加载/发出顺序不会改变任何事情;代码仍然崩溃。\linenumberssectstysectsty\underline

我的怀疑正确吗?如果不是,那到底是怎么回事?如果正确,您能否更详细地解释一下这些软件包之间的不兼容性?而且,如果您喜欢冒险(如果可能的话),解决不兼容性的方法是什么?

相关内容