这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 版本甚至没有对齐!
如果这只是一个软件包版本冲突的问题,那么这里有一个\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
会破坏文本基线和注释基线的对齐。这本身并不是一个错误,但从排版上来说却是不理想的。(图片来自页面上方第一个注释。)