下面的 MWE 演示了我的问题。
我认为 marginpar 以某种方式在线上引入了一些东西,然后 Latex 将该行视为非空。
%%%%%%%%%%%%%%%%%%%
\documentclass{article}
\newcommand{\mtext}{\makebox[0pt]{}\marginpar{(hello)}}
\begin{document}
\begin{enumerate}
\item \mtext%
\begin{enumerate}
\item This is a line too low, at least the marginpar is there!
\end{enumerate}
\end{enumerate}
\begin{enumerate}
\item
\begin{enumerate}
\item This line is fine vertically, but I can't use my marginpar!
\end{enumerate}
\end{enumerate}
\end{document}
答案1
最后,我可以提出两种解决问题的方法:一种是我在评论中提到的(在嵌套枚举中添加边注),另一种是在外部枚举中添加,使用以下可能性enumitem
:
\documentclass{article}
\usepackage{enumitem}
\newcommand{\mtext}{\leavevmode\marginpar{(hello)}}
\begin{document}
%
\begin{enumerate}%
\item%
\mtext
\begin{enumerate}[before =\vspace*{-\dimexpr\baselineskip+2\topsep }]
\item This is a line too low, at least the marginpar is there!
\end{enumerate}
\end{enumerate}
\begin{enumerate}
\item
\begin{enumerate}
\item This line is fine vertically, but I can't use my marginpar! \mtext%
\end{enumerate}
\end{enumerate}
\end{document}
答案2
在一行中间返回 vmode 的一种方法是使用 minipage。但这当然不是最简单的解决方案。
\documentclass{article}
\newcommand{\mtext}{\leavevmode\marginpar{(hello)}}
\begin{document}
\begin{enumerate}
\item \mtext
\begin{minipage}[t]{\linewidth}
\begin{enumerate}
\item This is a line too low, at least the marginpar is there!
\end{enumerate}
\end{minipage}
\end{enumerate}
\end{document}