I use a custom Beamer theme for my presentations. In my presentations I'd like to use blocks (\begin{block}…\end{block}). These blocks are rendered slightly too wide to fit into my theme. Is there a way how I can set the default width of blocks, e.g. to .9\textwidth?
Asked
Active
Viewed 7.4k times
37
3 Answers
43
You could define your own block environment with an optional parameter for its width and provide a default value such as .9\textwidth.
Here's an example:
\documentclass{beamer}
\usetheme{Warsaw}
\usepackage[english]{babel}
\newenvironment<>{varblock}[2][.9\textwidth]{%
\setlength{\textwidth}{#1}
\begin{actionenv}#3%
\def\insertblocktitle{#2}%
\par%
\usebeamertemplate{block begin}}
{\par%
\usebeamertemplate{block end}%
\end{actionenv}}
\begin{document}
\begin{frame}
\begin{block}{Standard}
Normal block
\end{block}
\begin{varblock}[4cm]{New block}
Variable width, here 4cm
\end{varblock}
\begin{varblock}{New block}
If no width was given, .9\textbackslash textwidth will be used
\end{varblock}
\end{frame}
\end{document}

I posted this example here in 2008.
Stefan Kottwitz
- 231,401
28
If you do not require a new block environment with customizable width, but simply want to change the width of the original block environments, add the following to your preamble:
\addtobeamertemplate{block begin}{%
\setlength{\textwidth}{0.9\textwidth}%
}{}
\addtobeamertemplate{block alerted begin}{%
\setlength{\textwidth}{0.9\textwidth}%
}{}
\addtobeamertemplate{block example begin}{%
\setlength{\textwidth}{0.9\textwidth}%
}{}
lockstep
- 250,273
-
11Is there a way to do this but to make the block centered? For me it sticks to the left of the page. – mrbrich Aug 26 '14 at 14:31
-
@mrbrich, try wrapping your block in a minipage environment, as suggested on https://tex.stackexchange.com/a/180462/12065. As a matter of fact, once you have your block in a minipage, it will take the size of that minipage, so you can control block size there instead of using this answer. – Waldir Leoncio Jun 16 '17 at 12:38
2
Using the code from Stefan Kottwitz and doing minor changes, I have this in my preamble.
% Variable width block
\newenvironment<>{varblock}[2][0.9\textwidth]{%
\setlength{\textwidth}{#1}%
\setlength{\linewidth}{\textwidth}% required to itemize respect the width of block
\begin{actionenv}#3%
\def\insertblocktitle{#2}%
\par%
\usebeamertemplate{block begin}}
{\par%
\usebeamertemplate{block end}%
\end{actionenv}}
% Variable width example block
\newenvironment<>{varexampleblock}[2][0.9\textwidth]{%
\setlength{\textwidth}{#1}%
\setlength{\linewidth}{\textwidth}%
\begin{actionenv}#3%
\def\insertblocktitle{#2}%
\par%
\setbeamercolor{local structure}{parent=example text}%
\usebeamertemplate{block example begin}}
{\par%
\usebeamertemplate{block example end}%
\end{actionenv}}
% Variable width alert block
\newenvironment<>{varalertblock}[2][0.9\textwidth]{%
\setlength{\textwidth}{#1}%
\setlength{\linewidth}{\textwidth}%
\begin{actionenv}#3%
\def\insertblocktitle{#2}%
\par%
\setbeamercolor{local structure}{parent=alerted text}%
\usebeamertemplate{block alerted begin}}
{\par%
\usebeamertemplate{block alerted end}%
\end{actionenv}}
cacamailg
- 8,405
\begin{cenetr}\begin{minipage}{block_width}<shortened block> \end{minipage}\end{center}– Dror Jan 27 '12 at 09:38blockenvironment ... – Jan 31 '13 at 09:13<>in\newenvironment<>{varblock}[2][.9\textwidth]{...}? – Gilles Bonnet Sep 27 '17 at 09:35