如何将边注与紧接着其后的段落的第一行对齐?

如何将边注与紧接着其后的段落的第一行对齐?

我希望左边距的边注与段落第一行对齐,类似于这个问题。基本上,这些是段落的标题。在源代码中,我希望边注先行为了便于阅读,它要附加到的段落(读者将首先阅读边注,因此我想先写它)。

链接的问题说这应该可行,但对我来说,这将边注与最后一行对齐以前的段落:

\marginpar{Note}
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

答案1

\nextmarginpar这样可以在和下一段之间留一个空行。

我尝试过\everypar,但它也运行得太快了。

\documentclass[11pt]{article}
\usepackage{lipsum}% MWE only

\newcommand{\nextmarginpar}[2][\empty]{% same as \marginpar
  \ifx\empty#1\relax
    \leavevmode\marginpar{#2}\vspace{-\baselineskip}\vspace{-\parskip}\par
  \else
    \leavevmode\marginpar[#1]{#2}\vspace{-\baselineskip}\vspace{-\parskip}\par
  \fi
  \ignorespaces}

\begin{document}
\lipsum[1]

\nextmarginpar{Note}

\lipsum[2]
\end{document}

答案2

\marginpar不是适合这项工作的工具。如果这是节标题,则应使用\section格式将标题放在边距中。以下是我编写的一些未记录的代码,它们在级别上执行此操作\subsection

\def\subsection{\@afterindentfalse\secdef\@subsection\@ssubsection}

\def\@subsection[#1]#2{%
  \ifnum \c@secnumdepth>1
     \refstepcounter{subsection}
     \addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}#1}%
  \else
     \addcontentsline{toc}{subsection}{#1}%
  \fi
  \subsectionmark{#1}
  \vskip 12pt plus2pt minus1pt
  \def\@svsechd{\raggedright\reset@font\normalsize\textit{\ifnum\c@secnumdepth>1\relax\thesubsection~\fi#2}}
        \@@afterheading}

\def\@ssubsection#1{\def\@svsechd{\reset@font\raggedleft\large\sc#1}%
   \@@afterheading}

\def\@@afterheading{\global\@nobreaktrue    
      \everypar{\if@nobreak
                   \global\@nobreakfalse
                   \if@afterindent \else {\setbox0=\lastbox}\fi
%                   \interlinepenalty \@M                   
                   \vadjust{\llap{\vbox to0pt{\vskip-9pt
                     \vtop{\hsize\marginparwidth
                       \@svsechd}\vss}\hskip\marginparsep}}%
                   \clubpenalty \@M
                 \else \clubpenalty \@clubpenalty
                   \interlinepenalty \@interlinepenalty
                    \everypar{}\fi}}           

此代码有一个限制,即如果紧接着该\subsubsection代码,\subsection则标题将消失。¹

这个代码有点旧了,如果我现在从头开始创建它,我可能会做一些不同的事情,但它至少应该是一个很好的起点。


  1. “医生,我这样做会很痛。”

    “那就别这么做。”

相关内容