如何删除带有 marginpar 的嵌套枚举的换行符?

如何删除带有 marginpar 的嵌套枚举的换行符?

下面的 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}

相关内容