Beamer:\llap 如果位于行首,则生成新行

Beamer:\llap 如果位于行首,则生成新行

\llap如果在行首使用in beamer,\llap则 ed 文本和以下文本之间会出现一个新行:

在此处输入图片描述

有没有办法来解决这个问题?

梅威瑟:

\documentclass{beamer}

\begin{document}
    \begin{frame}
        \llap{X}X
    \end{frame}
\end{document}

在命令前添加一些内容\llap然后\llap将其粘贴过去会产生正确的结果,但如果有更好的方法的话,这似乎不是一个好的做法:

在此处输入图片描述

这是由以下因素产生的:

\documentclass{beamer}

\begin{document}
    \begin{frame}
        X\llap{A\phantom{X}}
    \end{frame}
\end{document}

答案1

LaTeX 的明智做法是

\makebox[0pt][r]{X}

类似物\rlap

\makebox[0pt][l]{X}

如果你想知道“失败”的原因\llap,你必须看看它\llap是如何定义的:

% latex.ltx, line 5162:
\def\llap#1{\hb@xt@\z@{\hss#1}}

\hb@xt@\z@相同\hbox to 0pt。原始\hbox 没有启动水平模式,因此如果在段落之间发现它,它会自行形成一行。

\llap命令未出现在官方 LaTeX 手册中,因此想要使用它的人应该了解 TeX 的详细信息。从网上复制代码时要小心。

答案2

您必须在水平模式下使用\llap\rlap。显然,一种方法是保留垂直模式:

\documentclass{beamer}
\begin{document}
    \begin{frame}
        \leavevmode\llap{X}X
    \end{frame}
\end{document}

但你会发现,你也可以通过其他几种方式进入水平模式,例如,在前面写一些文本或其他命令,如\indent\noindent或 \mbox{},

在我看来,只要你能获得想要的结果,任何方法都没有错(也就是说,值得一提的是:\noindent如果你想保持默认缩进,就不要使用);-) ...但你真的需要用 来开始一个段落吗\llap?也许 MWE 更接近你的最终目标,有人可能会提供不同的方法:

相关内容