10

I am writing a Beamer presentation that mixes normal-size font for some slides, and large-size font for other slides. When I use the itemize environment with a large font, the item symbol (a small ball) does not become larger, and the result is not aesthetically pleasant.

How can I make itemized lists with large item symbols, but only for those which have large text, not for the entire presentation (i.e., without globally changing the beamer template)?

4 Answers 4

9

itemize symbols have font size hardcoded in definition (look at beamerthemedefault.sty or beamerbaseauxtemplates.sty).

% Itemize items, circle

\defbeamertemplate{itemize item}{circle}{\small\raise0.5pt\hbox{\textbullet}}
\defbeamertemplate{itemize subitem}{circle}{\footnotesize\raise0.5pt\hbox{\textbullet}}
\defbeamertemplate{itemize subsubitem}{circle}{\footnotesize\raise0.5pt\hbox{\textbullet}}

Section 16.3 "Changing the Templates Used for Different Elements of a Presentation" form beamer manual explain how to change it. It seems that would be possible to define a template with an option for font size. I don't know how to do it but a fast solution could be redeclare itemize symbols with new hardcoded size, something like

\documentclass{beamer}
\begin{document}    
\begin{frame}[t]{}
    \begin{itemize}
        \item First item
        \item Second item
    \end{itemize}
    \bigskip
    {\setbeamertemplate{itemize item}{\Large\raise1.25pt\hbox{\donotcoloroutermaths$\blacktriangleright$}}
        \begin{itemize}
            \item Second first item
            \item Second second item
        \end{itemize}
    }
    \bigskip
    \begin{itemize}
        \item Third first item
        \item Third second item
    \end{itemize}
\end{frame}
\end{document}

enter image description here

EDIT: Changing balls for Madrid Theme.

Madrid Theme (beamerthemeMadrid.sty) uses \useinnertheme[shadow]{rounded} which declares \setbeamertemplate{items}[ball]. So we need to look for ball in beamerbaseauxtemplates.sty. To do it short, in this file some 'spheres' are defined and used. You can make your own definition,

\documentclass{beamer}
\usetheme{Madrid}

\makeatletter
\pgfdeclareradialshading[bg,parent.bg]{mysphere}{\pgfpoint{0.15cm}{0.15cm}}%
{color(0cm)=(bg!15);
 color(0.15cm)=(bg!75);
 color(0.3cm)=(bg!70!black);
 color(0.301cm)=(parent.bg)}

\defbeamertemplate{itemize item}{myball}%
{\raise-0.2cm\beamer@usesphere{item projected}{mysphere}}
\makeatother

\begin{document}    
\begin{frame}[t]{Frame title}
  \begin{itemize}
   \item First item
   \begin{itemize}
     \item first subitem
     \item second subitem
   \end{itemize}
   \item Second item
  \end{itemize}
  \bigskip
{\setbeamertemplate{itemize item}[myball]
  \begin{itemize}
   \item Third first item
   \item Third second item
   \end{itemize}
}
\end{frame}
\end{document}

The result is

enter image description here

I think sphere sizes are related with font size because they are declared using ex units but I'm not able to change its size with just a fontsize declaration. May be somebody else can help us.

3
  • Thanks! But can you do the same with spheres (like in the Mardid theme)? Jul 19, 2011 at 7:19
  • I edited my answer with a new partial solution for Madrid theme.
    – Ignasi
    Jul 19, 2011 at 9:22
  • Thanks a million! The results still need a bit of fine-tuning, depending on usage, but this is a pointer in the right direction. Jul 19, 2011 at 9:59
6

Unfortunately the @Ignasi solution for change of the ball size is lacking in aliasing so the spheres have rough edges as you can see in the screenshot. To solve the problem, I modified the original definition in beamerbaseauxtemplates.sty by adding to preamble the following code:

% * original ball definition in beamerbaseauxtemplates.sty
%\pgfdeclareradialshading[bg,parent.bg]{bigsphere}{\pgfpoint{-0.1849315ex} {.2260273ex}}%
%{%
%  color(0cm)=(bg!15);
%  color(0.1643835ex)=(bg!75);
%  color(0.3287671ex)=(bg!70!black);
%  color(0.4520547ex)=(bg!50!black);
%  color(0.53ex)=(parent.bg)}

% modified by 1.4x multiplication factor
\pgfdeclareradialshading[bg,parent.bg]{bigsphere}{\pgfpoint{-0.2589041ex}{0.3164382ex}}%
{%
color(0cm)=(bg!15);
color(0.2301369ex)=(bg!75);
color(0.4602739ex)=(bg!70!black);
color(0.6328766ex)=(bg!50!black);
color(0.742ex)=(parent.bg)}  

\defbeamertemplate{itemize item}{myball}{\raise0.2pt\beamer@usesphere{item projected}{bigsphere}}

\setbeamertemplate{itemize item}[myball]

Now all item bullet balls are 1.4 times bigger then in default template and they have smooth edges.

1

If Big bullet is needed (spare or ball shape), a little modification on enumerating can do that

\documentclass[11pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usetheme{Madrid}
\begin{document}
\begin{frame}{Bullets}
\begin{enumerate}
    \item  Item One
    \item  Item Two
    \item  Item Three
    \item  Item Four
\end{enumerate}

\begin{enumerate}[.]
    \item  Item One
    \item  Item Two
    \item  Item Three
    \item  Item Four
\end{enumerate}

\begin{enumerate}[....]
    \item  Item One
    \item  Item Two
    \item  Item Three
    \item  Item Four
\end{enumerate}

\begin{itemize}
    \item  Item One
    \item  Item Two
    \item  Item Three
    \item  Item Four
\end{itemize}
\end{frame}
\end{document}

The result is

enter image description here

1

As a quick and dirty hack, you could scale the sphere with the current font size:

\documentclass{beamer}

\usetheme{Warsaw}

\makeatletter
\def\beamer@usesphere#1#2{\hbox{\usebeamercolor{#1}\scalebox{0.1}{\scalebox{\f@size}{\normalsize\pgfuseshading{#2}}}}}
\makeatother

\begin{document}    
\begin{frame}[t]
  \frametitle{Frame title}
  \begin{itemize}
  \item First item
  \item Second item
  \end{itemize}
\bigskip
{\Huge
  \begin{itemize}
  \item Second first item
  \item Second second item
  \end{itemize}
}
\bigskip
  \begin{itemize}
  \item Third first item
  \item Third second item
  \end{itemize}
\end{frame}
\end{document}

enter image description here

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .