将左边距注释与显示样式数学对齐

将左边距注释与显示样式数学对齐

对于我正在制作的一个包,我想在左边距中标出部分问题。我不想使用例如,\reversemarginpar因为这取决于用户的定义。练习总是在左边距。

我使用以下代码将文本放在左边距。它来自这里的一个答案,但我似乎找不到它!

\documentclass{article}
\setlength\parindent{0pt}
\begin{document}
  \def\hdr{1b)}
  % \steve (because I couldn't call it \mark, ref comments) 
  % will put 1b) into the left margin
  \def\steve{%
    \strut{%
      \vadjust{%
        \vbox to 0pt{%
            \kern-\dp\strutbox\relax%
            \smash{\llap{\hdr}}%
            \vss%
          }%
      }%
    }%
  }
   \steve Once upon a different time\\%<- Works nicely
   \steve Once upon an equation \( \displaystyle\sum_{i=1}^{\infty} \)%<- Unaligned
\end{document}

问题是,如果它与非常高的线一起使用,例如

\(\displaysyle\sum_{a}^{b}\)

练习标记的对齐方式(由 表示\steve)与等式变得不一致,如示例所示。

我的第一个想法是创建一个自己的盒子,它的工作方式与 strutbox 类似,但更大:

\newbox\ppmarkbox
\newlength\markskip
\setlength\markskip{4\baselineskip}

\setbox\ppmarkbox\hbox{%
\vrule\@height.7\markskip
        \@depth.3\markskip%
        \@width\z@}%
\def\markstrut{\unhcopy\ppmarkbox}

(如果您想测试这一点,请将其放在第一个代码上方,然后\strut\markstrut\strutbox替换\ppmarkbox

然而,这会导致正常高度的线条上方出现太多空白。

有什么想法吗?有没有更好的方法来标记左边距?

答案1

你不需要\vadjust在这里,因为你希望标记位于文本的基线上,所以只需

\def\steve{\leavevmode\smash{\llap{\hdr}}}

或更正确的乳胶

\newcommand\steve{\makebox[0pt][r]{\hdr}}

相关内容