我尝试在正文中使用双倍行距,在边距中使用单倍行距(和脚注大小)。但是,如果我更改边距中的行距,它似乎会向下移动。有没有办法让它再次正确对齐?
例子:
\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,甚至更加神秘和黑客化,但它确实有效。