调整 marginpar 中的行距会使 marginpar 下移

调整 marginpar 中的行距会使 marginpar 下移

我尝试在正文中使用双倍行距,在边距中使用单倍行距(和脚注大小)。但是,如果我更改边距中的行距,它似乎会向下移动。有没有办法让它再次正确对齐?

例子:

\documentclass[A4]{article}

\newcommand*{\anchor}[1]{The #1 {\it marginpar} should appear aligned to the very top of this paragraph.}

\newcommand*{\thoreau}{A man is rich in proportion to the number of things he can afford to let alone.}

\newcommand*{\sep}{%
    \vspace{-1em}
    \noindent\makebox[\linewidth]{\rule{\paperwidth}{0.4pt}}
    \vspace{-2.5em}
}

\usepackage{lipsum}
\usepackage{setspace}

\newcommand{\mymarparA}[1]{%
    \marginpar{{\footnotesize #1 (A)\par}}
}

\newcommand{\mymarparB}[1]{%
    \marginpar{{\footnotesize\singlespacing #1 (B)\par}}
}

\newcommand{\mymarparC}[1]{%
    \marginpar{\footnotesize\singlespacing #1 (C)}
}

\begin{document}

\doublespacing

\sep

\anchor{\mymarparA{\thoreau}} \lipsum[2]

\sep

\anchor{\mymarparB{\thoreau}} \lipsum[2]

\sep

\anchor{\mymarparC{\thoreau}} \lipsum[2]

\sep

\end{document}

我在 \mymarparA 和 \mymarparB 中有一个额外的 {... \par},因为我实际上正在修改一种不同的样式,我必须重写一些我不想碰的东西才能摆脱这种需要。如果它可以在 \mymarparB 情况下重新对齐,那将是理想的,但如果它只在 \mymarparC 情况下有效,那将是一个开始,我可能会重写其他内容以使其工作。

我的示例渲染

答案1

在对各种类型的框进行了一些调整后,似乎当 parbox 或 marginpar 中的行距发生变化时,其高度会分别下降 0.5 和 1 个 baselineskip。(不确定为什么在 parbox 中它只下降 0.5\baselineskip,而且我还没有测试这是否对 \baselinestretch 或字体大小敏感。)

因此,使其再次对齐的一种方法是将所有内容提升 0.5 或 1 个基线跳跃,具体取决于情况:

\newcommand{\mymarparB}[1]{%
    \marginpar{{\footnotesize\vspace{-\baselineskip}\singlespacing #1 (B)\par}}
}

\newcommand{\mymarparC}[1]{%
    \marginpar{\footnotesize\vspace{-\baselineskip}\singlespacing #1 (C)}
}

上述示例的渲染

当修改 classicthesis 时,我发现我需要 1.65\baselineskip,甚至更加神秘和黑客化,但它确实有效。

相关内容