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)?

chl
  • 8,890

4 Answers4

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.

Lorents
  • 170
Ignasi
  • 136,588
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

Wofu
  • 11
  • 2
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