Вертикальное выравнивание стандартных символов itemize и enumerate не согласовано в Beamer. Ниже приведен MWE с некоторыми общими символами и вручную размещенными опорными линиями. Вывод, код:
\documentclass{beamer}
\usepackage[absolute,overlay]{textpos}
\begin{document}
\begin{frame}
\begin{columns}[onlytextwidth]
\column{0.15\textwidth}
\setbeamertemplate{enumerate item}[circle]
\setbeamertemplate{itemize item}[circle]
\begin{itemize}
\item Txq
\end{itemize}
\begin{enumerate}
\item Txq
\end{enumerate}
\column{0.15\textwidth}
\setbeamertemplate{enumerate item}[ball]
\setbeamertemplate{itemize item}[ball]
\begin{itemize}
\item Txq
\end{itemize}
\begin{enumerate}
\item Txq
\end{enumerate}
\column{0.7\textwidth}
\setbeamertemplate{enumerate item}[square]
\setbeamertemplate{itemize item}[default]
\begin{itemize}
\item Txq
\end{itemize}
\begin{enumerate}
\item Txq
\end{enumerate}
\end{columns}
\begin{textblock*}{3cm}(11mm,37.58mm)
\rule{46mm}{0.1pt}
\end{textblock*}
\begin{textblock*}{3cm}(11mm,44.46mm)
\rule{46mm}{0.1pt}
\end{textblock*}
\end{frame}
\end{document}
Где именно должны располагаться символы, возможно, дело вкуса, но некоторые из них выглядят неправильно, а при использовании более одного символа (например, одного для элементов, другого для подэлементов) непоследовательность явно плохая. (Кажется, здесь есть место для некоторого улучшения Beamer.) Как это исправить?
Я использую ball
по умолчанию для itemize, но circle
для enumerate (чтобы сделать числа более заметными). Оба этих символа, на мой взгляд, расположены слишком низко. Я обнаружил, что вертикальное размещение можно скорректировать, отредактировав beamerbaseauxtemplates.sty
в соответствии с нижеприведенным. Смотрите комментарии, где были внесены изменения.
% Itemize items, ball
\defbeamertemplate{itemize item}{ball}{\raise0.9pt\beamer@usesphere{item projected}{bigsphere}} % "raise" increased to lift the ball
[...]
% Enumerate items, circle
\defbeamertemplate{enumerate item}{circle}
{
\usebeamerfont*{item projected}%
\usebeamercolor[bg]{item projected}%
\begin{pgfpicture}{-1ex}{-0.3ex}{1ex}{2ex} % second argument lowered to raise the circle
\pgfpathcircle{\pgfpoint{0pt}{.75ex}}{1.2ex}
\pgfusepath{fill}
\pgftext[base]{\color{fg}\insertenumlabel}
\end{pgfpicture}
}
Однако, кажется, лучше вносить изменения в сами файлы (чтобы везде был гарантированно одинаковый вывод). Я застрял, когда пытался адаптировать эти изменения к преамбуле документа.
решение1
Есть несколько методов, которые вы можете использовать. Вот два простых:
определить
enumerate item
под новым именем, например,mycircle
вместоcircle
Если вам не нужно переключаться между разными шаблонами, то вы можете использовать
\setbeamertemplate{enumerate item}{...}
для прямого определения шаблона
Преимущество обоих методов в том, что у вас по-прежнему остается доступ к исходному определению.
Помимо этого, вы можете отменить определение шаблонов перед их переопределением, как предложил @Marijn в комментариях, или вы можете исправить шаблоны.
\documentclass{beamer}
% methode 1:
\defbeamertemplate{enumerate item}{mycircle}
{
\usebeamerfont*{item projected}%
\usebeamercolor[bg]{item projected}%
\begin{pgfpicture}{-1ex}{-2ex}{1ex}{2ex} % second argument lowered to raise the circle
\pgfpathcircle{\pgfpoint{0pt}{.75ex}}{1.2ex}
\pgfusepath{fill}
\pgftext[base]{\color{fg}\insertenumlabel}
\end{pgfpicture}%
}
[action]
{\setbeamerfont{item projected}{size=\scriptsize}}
\setbeamertemplate{enumerate item}[mycircle]
\makeatletter
\defbeamertemplate{itemize item}{myball}{\raise4pt\beamer@usesphere{item projected}{bigsphere}}
\makeatother
\setbeamertemplate{itemize item}[myball]
% methode 2:
%\setbeamertemplate{enumerate item}
%{
% \usebeamerfont*{item projected}%
% \usebeamercolor[bg]{item projected}%
% \begin{pgfpicture}{-1ex}{-2ex}{1ex}{2ex} % second argument lowered to raise the circle
% \pgfpathcircle{\pgfpoint{0pt}{.75ex}}{1.2ex}
% \pgfusepath{fill}
% \pgftext[base]{\color{fg}\insertenumlabel}
% \end{pgfpicture}%
%}
%\setbeamerfont{item projected}{size=\scriptsize}
%
%\makeatletter
%\setbeamertemplate{itemize item}{\raise4pt\beamer@usesphere{item projected}{bigsphere}}
%\makeatother
\begin{document}
\begin{frame}
\begin{enumerate}
\item Txq
\end{enumerate}
\begin{itemize}
\item Txq
\end{itemize}
\end{frame}
\end{document}