对于我正在制作的一个包,我想在左边距中标出部分问题。我不想使用例如,\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}}