
С помощью Latex Beamer мне хотелось бы выровнять содержимое мини-страниц или аналогичной среды по высоте, как если бы мини-страницы не было.
Минимальный пример:
\documentclass[t]{beamer}
\usepackage{tikz}
\begin{document}
\setlength\pdfpageheight{1.60cm}%
\setlength\pdfpagewidth{6cm}%
\begin{frame}{A\strut}
\begin{itemize}
\item X
\end{itemize}
\end{frame}
\begin{frame}{B\strut}
\begin{minipage}[t]{2cm}
\vskip 0pt%
\begin{itemize}
\item X
\end{itemize}
\end{minipage}%
\nolinebreak%
\begin{minipage}[t]{2cm}
\vskip 0pt%
\begin{tikzpicture}
\node[fill=gray,minimum width=2cm,minimum height=1cm] {};
\end{tikzpicture}
\end{minipage}%
\end{frame}
\begin{frame}{C\strut}
\begin{tikzpicture}
\node[fill=gray,minimum width=4cm,minimum height=1cm] {};
\end{tikzpicture}
\end{frame}
\end{document}
Как можно заметить, \item X
по-разному выровнен по верхнему краю в кадрах A и B, tikzpicture
по-разному выровнен по верхнему краю в кадрах B и C, и, что самое запутанное, разница в выравнивании также различается между \item X
и tikzpicture
.
- Что является причиной такого разного выравнивания?
- Как можно изменить выравнивание в кадре B так, чтобы оно стало таким же, как в кадрах A и C?
решение1
Выравнивание по верхнему краю, а не по базовой линии
\begin{minipage}[t]
выравнивает мини-страницы по базовой линии первой строки контента. Как уже использовалось в вопросе, начало minipage
с \vskip 0pt%
приводит к тому, что базовая линия оказывается в верхней части мини-страницы, тем самым создавая истинное выравнивание по верхнему краю.
Перевести minipage
в горизонтальный режим
Чтобы добиться того же поведения на мини-странице, что и снаружи, мини-страницу необходимо перевести в горизонтальный режим с помощью \leavemode%
, а затем \vskip -\baselineskip%
скорректировать вертикальное смещение.
Собираем все вместе
Желаемый эффект можно создать, начиная каждую мини-страницу следующим образом:
\begin{minipage}[t]{2cm}
\leavevmode%
\vskip 0pt%
\vskip -\baselineskip%
Полный минимальный пример:
\documentclass[t]{beamer}
\usepackage{tikz}
\begin{document}
\setlength\pdfpageheight{1.6cm}%
\setlength\pdfpagewidth{6cm}%
\begin{frame}{A\strut}
\begin{itemize}
\item X
\end{itemize}
\end{frame}
\begin{frame}{B\strut}
\begin{minipage}[t]{2cm}%
\leavevmode%
\vskip 0pt%
\vskip -\baselineskip%
\begin{itemize}
\item X
\end{itemize}
\end{minipage}%
\nolinebreak%
\begin{minipage}[t]{2cm}%
\leavevmode%
\vskip 0pt%
\vskip -\baselineskip%
\begin{tikzpicture}
\node[fill=gray,minimum width=2cm,minimum height=0.55cm] {};
\end{tikzpicture}
\end{minipage}%
\end{frame}
\begin{frame}{C\strut}
\begin{tikzpicture}
\node[fill=gray,minimum width=4cm,minimum height=0.55cm] {};
\end{tikzpicture}
\end{frame}
-\end{document}
решение2
Это то, что вы ищете?
\documentclass[t]{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
\begin{minipage}[t]{.1\textwidth}
A
\end{minipage}
\begin{minipage}[t]{.2\textwidth}
\begin{itemize}
\item X
\item Y
\item Z
\end{itemize}
\end{minipage}
\begin{minipage}[t]{.3\textwidth}
\begin{tikzpicture}
\node[fill=gray,minimum width=2cm,minimum height=1cm] {tikz};
\end{tikzpicture}
\end{minipage}
\end{frame}
\end{document}
Также, пожалуйста, смотрите--https://tex.stackexchange.com/a/272260/197451для проблемы с\itemize
Если вы считаете, что ответ соответствует вашим требованиям, пожалуйста, проголосуйте за ответ, нажав на красный треугольник слева и на галочку под ним.