解释

解释

marginfix软件包似乎对 KOMA 的\marginline命令做了一些奇怪的事情。以下是 MWE:

\documentclass[mpinclude=true]{scrbook}
\usepackage{lipsum}
\usepackage{marginfix}
\newcommand\mnote[1]{\marginpar{\ifthispageodd{\raggedright}{\raggedleft} #1}}
\begin{document}
\lipsum[1]
\marginline{Hereabouts is some text}
\mnote{Hereabouts is some text}
\lipsum[3-4]
\vspace{4\baselineskip}
\lipsum[5]
Notes here
\marginline{Hereabouts is some text}
\mnote{Hereabouts is some text}
\end{document}

注释掉后\usepackage{marginfix},奇数页的内容会向左刷新,偶数页的内容会向右刷新,就像我预期的那样。marginfix似乎可以逆转这种行为(内容会从文本块中移除)。这是错误吗?

同样的事情发生在scrarctcl:marginfix 使内容向右对齐而不是向左对齐。

奇怪的是如果你定义自己的命令来执行或多或少\marginline应该做的事情,就像这样:

\newcommand\mnote[1]{\marginpar{\ifthispageodd{\raggedright}{\raggedleft} #1}}

然后一切就如预期一样了。发生了什么?

marginfix 注释对齐错误

仔细观察图像,marginfix 版本甚至没有对齐!

如果这只是一个软件包版本冲突的问题,那么这里有一个\listfiles

 *File List*
 scrbook.cls    2009/07/24 v3.04a KOMA-Script document class (book)
scrkbase.sty    2009/07/24 v3.04a KOMA-Script package (KOMA-Script-dependent basics and keyval usage)
 scrbase.sty    2009/07/24 v3.04a KOMA-Script package (KOMA-Script-independent basics and keyval usage)
  keyval.sty    1999/03/16 v1.13 key=value parser (DPC)
scrlfile.sty    2009/03/25 v3.03 KOMA-Script package (loading files)
tocbasic.sty    2009/06/08 v3.03b KOMA-Script package (handling toc-files)
scrsize11pt.clo    2009/07/24 v3.04a KOMA-Script font size class option (11pt)
typearea.sty    2009/07/24 v3.04a KOMA-Script package (type area)
  lipsum.sty    2005/01/26 v1.0 150 paragraphs of Lorem Ipsum dummy text
marginfix.sty    2010/08/28 v0.9.1 Fix Margin Paragraphs
 ***********

答案1

在我看来,这似乎是marginfix软件包中的一个错误。(我已经报告过一个问题

解释

这里同时发生了几件事。首先,如文档中所述(可以通过 查看\show\marginline):

\marginline=\long macro:
#1->\marginpar [\raggedleft {#1}]{\raggedright #1}.

因此可以说 KOMA 并没有什么奇怪的。问题在于marginfix包“切换”了 的可选(用于左边距)和常规(用于右边距)参数的含义\marginpar。即使是标准article类也会发生这种情况,可以通过添加 来验证\marginpar[left]{right}

您的自定义解决方案仅使用单一参数形式,\marginpar因此不受此错误的影响。

仔细观察会发现,对齐不充分是因为您的\marginparwidth宽度不够,无法包含第一个单词“Hereabouts”:

Overfull \hbox (7.3223pt too wide) in paragraph at lines 7--7

\setlength{\marginparwidth}{1.5\marginparwidth}例如,如果您通过发出命令来增加宽度,那么您将看到事物确实是对齐的。

如果你仔细观察就会发现还有一个问题真的最密切的一点是,修复溢出注释的方式marginfix会破坏文本基线和注释基线的对齐。这本身并不是一个错误,但从排版上来说却是不理想的。(图片来自页面上方第一个注释。)

使用 marginfix 包时文本和注释基线不匹配

相关内容