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]{Frame title}
\begin{itemize}
\item First item
\item Second item
\end{itemize}
\bigskip
{\setbeamertemplate{itemize item}{\small\raise1.25pt\hbox{\donotcoloroutermaths$\blaktriangleright$}}
\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}
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
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.
I'm afraid there is no simple answer to your question. In TikZ
you usually do not want to scale nodes and the text within. (Till Tantau, the author of the package just calls it 'evil'. :) )
By specifying a scaling factor (e.g. \begin{tikzpicture}[scale=<scaling factor>]
), every item drawn in the current tikzpicture
environment should be scaled to its appropriate size. (This is possible because TikZ
produces vector graphics - 'scaleable' graphics, if you like - unlike bitmap graphics that become 'pixelated' when magnified.)
Nodes are a different breed of objects. For one thing they take the font size from the 'surroundings' and they are immune to 'external' transformations. And this is best left like that, I think. There is, however, an option to force nodes to scale according to the scaling factor of the environment: transform shape
. (It also forces rotations, etc.) It is also possible to place a node explicitly on a line, with the pos
option.
About the absolute dimensions now: you can specify document-specific dimensions too, if that is your need: e.g. \paperheight
and \paperwidth
work well. Use their fractions and the figures will be adjusted to new page sizes automatically. (They are also used to create the cover page of the TikZ 2.10 manual
.)
I'm not sure above=1cm of othernode
is a good idea. I'd rather set the node distance
parameter (create a new scope
, if it does not apply to the whole picture) and use above=of othernode
, letting TikZ
use the spacing specified earlier. (Of course, if there is only one such node in the whole picture, it can be more comfortable to set the distance only once, by hand.)
I hope I've been of any help.
Best Answer
The
adjustbox
package can be used to scale (or otherwise adjust) images or any other content, like atikzpicture
in several ways. You need themax size={<width>}{<height>}
option in your case, which does exactly what you requested, i.e. only shrink the content if it is larger than the given width and/or height. It always keeps the aspect-ratio.This is also possible for images. Here the same key can be used with
\adjustimage
:which uses
\includegraphics
internally, but wraps it in a\adjustbox
macro.