\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 更接近你的最终目标,有人可能会提供不同的方法: