\hrule внутри \textblock (из пакета textpos) не отображается в выводе

\hrule внутри \textblock (из пакета 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}

введите описание изображения здесь

Связанный контент