Вертикальное размещение символов перечисления/детализации в Beamer

Вертикальное размещение символов перечисления/детализации в Beamer

Вертикальное выравнивание стандартных символов 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

Есть несколько методов, которые вы можете использовать. Вот два простых:

  1. определить enumerate itemпод новым именем, например, mycircleвместоcircle

  2. Если вам не нужно переключаться между разными шаблонами, то вы можете использовать \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}

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

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