minitoc 和 onehalfspacing 文本的错误

minitoc 和 onehalfspacing 文本的错误

我在用着米尼托克设置空间包(前者将文本间距设置为onehalfspacing)。

正如您在下面的屏幕截图和 MWE 中看到的,当使用这两个包(带有onehalfspacingsetspace 选项)时会出现图形错误。当onehalfspacing选项处于活动状态时,目录的第一个项目设置得太靠近由 创建的线minitoc

维护者minitoc(Jean-Pierre Drucbert) 已去世,据我所知,没有人接手。因此,我对修复持悲观态度。

您是否想到了一种解决方法,可以让onehalfspacing文本和minitoc部分协同工作?

问题: 在此处输入图片描述

没有该\onehalfspacing选项,没问题: 在此处输入图片描述

梅威瑟:

\documentclass[12pt,twoside,a4paper]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{palatino}
\usepackage{setspace}
\usepackage{graphicx} 

\usepackage{minitoc}

\doparttoc

\begin{document}
\doparttoc
\faketableofcontents

\onehalfspacing


\part{1st part}
\parttoc


\chapter{With OneHalfSpacing, the Title is Too Close to the Line}

\singlespacing
\parttoc


\chapter{With SingleSpacing, No Problem}

\end{document}

编辑:如果我删除包,会出现同样的问题palatino。我们只是看到“更少”的问题。

在此处输入图片描述 在此处输入图片描述

答案1

一个可以解决的解决方法\parttoc

\parttoc@执行

\leavevmode\\\mtc@BBR\vskip -.5\baselineskip

就在末尾,即向上移动位置以放置下一个内容。虽然这对于正常的跳过值来说是可以的,但对于etc\baselineskip提供的值来说,这很可能太多了。\onehalfspacing

最简单的方法是定义一个校正长度,然后\mtc@startparttocbaselineskip将其设置为0pt并应用补丁!这样,就没有间距依赖的升档。

\documentclass[12pt,twoside,a4paper]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xpatch}
\usepackage{palatino}
\usepackage{graphicx} 

\usepackage{setspace}
\usepackage{minitoc}

\makeatletter

\newlength{\mtc@startparttocbaselineskip}
\setlength{\mtc@startparttocbaselineskip}{0pt}

\xpatchcmd{\parttoc@}{%
  \leavevmode\\\mtc@BBR\vskip -.5\baselineskip
}{%
  \leavevmode\\\mtc@BBR\vskip -\mtc@startparttocbaselineskip
}{\typeout{Patch successfully performed}}{\typeout{Patch failed!}}
\makeatother




\doparttoc

\begin{document}

\onehalfspacing

\faketableofcontents
\part{1st part}
\parttoc

\chapter{With OneHalfSpacing, the Title is Too Close to the Line}
\chapter{With SingleSpacing, No Problem}
\end{document}

在此处输入图片描述

相关内容