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}

シンボルを中央に配置する正確な位置は好みの問題かもしれませんが、一部のシンボルは正しく表示されません。また、複数のシンボル (たとえば、1 つはアイテム用、もう 1 つはサブアイテム用) を使用する場合、不一致は明らかに問題です。(ここでは、Beamer の改善の余地があるようです。) どうすれば修正できますか?

私は、ballitemize にはデフォルトで を使用しますが、circleenumerate には を使用します (数字をより明確に表示する)。これらの記号は両方とも、私の目には低すぎるように思われます。以下の編集に従って垂直方向の配置を調整できることが分かりました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

使用できる方法はいくつかあります。ここでは 2 つの簡単な方法を紹介します。

  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}

ここに画像の説明を入力してください

関連情報