![如何删除带有 marginpar 的嵌套枚举的换行符?](https://linux22.com/image/396342/%E5%A6%82%E4%BD%95%E5%88%A0%E9%99%A4%E5%B8%A6%E6%9C%89%20marginpar%20%E7%9A%84%E5%B5%8C%E5%A5%97%E6%9E%9A%E4%B8%BE%E7%9A%84%E6%8D%A2%E8%A1%8C%E7%AC%A6%EF%BC%9F.png)
下面的 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}