\textblock 中的 \hrule(来自 textpos 包)未出现在输出中

\textblock 中的 \hrule(来自 textpos 包)未出现在输出中

我的代码:

\documentclass{beamer}
\usepackage[absolute,overlay]{textpos}
\begin{document}

\begin{frame}[fragile,t]
\frametitle{Demo}

\begin{textblock*}{\textwidth}(20mm,20mm)
\vspace{5mm}\hrule height 1mm\vspace{5mm}
\end{textblock*}

\end{frame}

\end{document}

输出:

在此处输入图片描述

为什么\hrule输出中没有出现?我该如何修复它?

答案1

环境textblock*使用内容的属性来确定框的大小(即使手册textpos指出的宽度textpos*是绝对的)。TeX 基元\hrule将包围内容的垂直框的宽度作为宽度\hrule(请参阅为什么 \hrule 需要在其周围绘制文本?),在本例中为空。

可能的解决方案是使用\leavevmode(将框的宽度设置为\textwidth,请参阅链接的问题),或手动指定宽度\hrule,或使用\rule具有指定宽度的命令。

下面的 MWE 给出了一些如何textpos*处理不同类型内容的示例以供说明(使用showboxes包选项)。

\documentclass{beamer}
\usepackage[absolute,overlay,showboxes]{textpos}
\begin{document}

\begin{frame}[fragile,t]
\frametitle{Demo}
\color{green}\vspace{5mm}\hrule height 1mm\vspace{5mm}
\begin{textblock*}{\textwidth}(10mm,20mm)
\vspace{2mm}\hrule height 1mm\vspace{2mm}% zero width
\end{textblock*}
\begin{textblock*}{\textwidth}(10mm,30mm)
\vspace{2mm}\leavevmode\hrule height 1mm\vspace{2mm}
\end{textblock*}
\begin{textblock*}{\textwidth}(10mm,40mm)
\color{red}\vspace{2mm}\hrule height 1mm width \textwidth\vspace{2mm}
\end{textblock*}
\begin{textblock*}{\textwidth}(10mm,50mm)
\color{blue}\rule{\textwidth}{1mm}
\end{textblock*}
%further examples of textblock*
\begin{textblock*}{\textwidth}(10mm,60mm)% width of the character
\phantom{X}
\end{textblock*}
\begin{textblock*}{\textwidth}(10mm,70mm)% does not show

\end{textblock*}
\begin{textblock*}{\textwidth}(10mm,80mm)% full width
\color{black}X
\end{textblock*}
\end{frame}

\end{document}

在此处输入图片描述

相关内容