防止 KOMA-script 边注因分页符而分裂

防止 KOMA-script 边注因分页符而分裂

如果 KOMA-script 中的边注靠近页面末尾,KOMA-script 会将注释拆分到它决定的任意位置,并将尾部移至下一页的边注。对于简短的注释,它会在页面上单独创建非常混乱的文本行。

我宁愿将整个笔记向上移动一行而不是将其拆分,或者让它溢出到底部文本边缘以下一点。不幸的是,添加\vspace{-\baselineskip}命令\makenote没有帮助:它只会移动第二页的内容。参见下面的示例,它将第二行移动到了第一行上方。

有没有想过如何让音符在 KOMA 字体中向下溢出或向上移动?

MWE(抱歉,文字太多了):

在此处输入图片描述

\documentclass[12pt, oneside, paper = A4]{scrbook}

\usepackage{fontspec}
\usepackage{scrlayer-notecolumn}
\usepackage{scrlayer-scrpage}

\setkomafont{notecolumn.marginpar}{\scriptsize}

\setmainfont{Libertinus Serif}

\pagestyle{scrheadings}

\begin{document}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,
adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget,
consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi
tristique senectus et netus et malesuada fames ac turpisegestas. Mauris ut leo. Cras viverra metus
rhoncus sem. Nulla et lectus vestibulumurna fringilla ultrices. Phasellus eu tellus sit amet tortor
gravida placerat. Integersapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem
vel leo ultricesbibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac,
nulla. Curabitur auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congueeu, accumsan
eleifend, sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.

Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor loremnon justo.
Nam lacus libero, pretium at, lobortis vitae, ultricies et, tellus. Donecaliquet, tortor sed
accumsan bibendum, erat ligula aliquet magna, vitae ornare odiometus a mi. Morbi ac orci et nisl
hendrerit mollis. Suspendisse ut massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque
penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam tincidunt urna. Nulla
ullamcorper vestibulum turpis. Pellentesque cursus luctus mauris.

Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunttristique,
libero. Vivamus viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing
semper elit. Proin fermentum massa ac quam. Sed diam turpis, molestie vitae, placerat a, molestie
nec, leo. Maecenas lacinia. Nam ipsum ligula, eleifend at, accumsan nec, suscipit a, ipsum. Morbi
blandit ligula feugiat magna. Nunceleifend consequat lorem. Sed lacinia nulla vitae enim.
Pellentesque tincidunt purus velmagna. Integer non enim. Praesent euismod nunc eu purus. Donec
bibendum quamin tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate metus eu enim.
Vestibulum pellentesque felis eu massa.

Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo vitae lacus tinciduntultrices. Lorem
ipsum dolor sit amet, consectetuer adipiscing elit. In hac habitasseplatea dictumst. Integer tempus
convallis augue. Etiam facilisis. Nunc elementumfermentum wisi. Aenean placerat. Ut imperdiet, enim
sed gravida sollicitudin, felis odioplacerat quam, ac pulvinar elit purus eget enim. Nunc vitae
tortor. Proin tempus nibhsit amet nisl. Vivamus quis tortor vitae risus porta vehicula.

Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a faucibus sem-per, leo velit
ultricies tellus, ac venenatis arcu wisi vel nisl. Vestibulum diam. Aliquampellentesque, augue quis
sagittis posuere, turpis lacus congue quam, in hendrerit risuseros eget felis. Maecenas eget erat in
sapien mattis porttitor. Vestibulum porttitor. Nulla facilisi. Sed a turpis eu lacus commodo
facilisis. Morbi fringilla, wisi in dignissiminterdum, justo lectus sagittis dui, et vehicula libero
dui cursus dui. Mauris temporligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras nulla.
Nulla egestas. Curabitur a leo. Quisque egestas wisi eget nunc. Nam feugiat lacus vel est.
Curabiturconsectetuer.

Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit amet, laoreet vitae, arcu. Aenean
faucibus pede eu ante. Praesent enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus
eros, malesuada sit amet, fermentum eu, sodales cursus, magna. Donec eu purus. Quisque vehicula,
urna sed ultricies auctor, pede lorem egestasdui, et convallis elit erat sed nulla. Donec luctus.
Curabitur et nunc. Aliquam dolorodio, commodo pretium, ultricies non, pharetra in, velit. Integer
\makenote{\vspace{-2\baselineskip}first line\\second line} arcu est, nonummy in, fermentum faucibus,
egestas vel, odio.

Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio. Sed vehiculahendrerit sem. Duis
non odio. Morbi ut dui. Sed accumsan risus eget odio. In hac habitasseplatea dictumst. Pellentesque
non elit. Fusce sed justo eu urna porta tincidunt. Mauris felisodio, sollicitudin sed, volutpat a,
ornare ac, erat. Morbi quis dolor. Donec pellentesque, eratac sagittis semper, nunc dui lobortis
purus, quis congue purus metus ultricies tellus. Proinet quam. Class aptent taciti sociosqu ad
litora torquent per conubia nostra, per inceptoshymenaeos. Praesent sapien turpis, fermentum vel,
eleifend faucibus, vehicula eu, lacus.

\end{document}

答案1

我找到了一个解决方法。您需要将其添加到您的序言中:

\makeatletter
\ModifyLayer[
    contents = {%
        \textheight = 2\textheight%
        \slnc@processnotes{marginpar}%
      }
  ]{notecolumn.marginpar}
\makeatother

notecolumn用于\textheight判断是否应该拆分注释框。上面的代码暂时将其\textheight放大 2 倍,从而防止发生拆分。

相关内容