[Tex/LaTex] Introducing a left margin inside a block environment in beamer

beamerbeamerpostermargins

I am doing a poster using beamerposter . The text inside a block always seems to have no left margin. Can anyone tell me a way of introducing a left margin in a block ?

Here is a sample of how a block looks. Notice that the text starts off with no left margin.

enter image description here

It would be nice if you could tell me how to define left, right, top and bottom margins within the block. Please note that I have nested blocks, though the nested ones have a different environment name (i called then insideBlocks). Hence I wouldn't want the margins for the block environment to affect the margins for my insideBlocks environment.

Hope I am clear.

Best Answer

I think this can be achieved in many ways. One possibility is to define a new block environment with custom margins, like this:

 \documentclass{beamer}
 \usetheme{Frankfurt}

\newenvironment<>{myblock}[1]{%
 \begin{actionenv}#2%
 \def\insertblocktitle{\leftskip=10pt\rightskip=10pt\vspace{10pt} #1\vspace{10pt}}%
 \par%
 \usebeamertemplate{block begin}\leftskip=10pt\rightskip=10pt\vspace{10pt}}
 {\par\vspace{10pt}\usebeamertemplate{block end}
 \end{actionenv}}


\begin{document}
\begin{frame}

\begin{myblock}{example title to show 10pt up, down, left and right margins}
 example text to show 10pt up, down, left and right margins
\end{myblock}

\begin{block}{example title to show standard margins}
 example text to show standard margins
\end{block}

\end{frame}
\end{document}

In the new environment (I called it myblock) \leftskip, \rightskip and \vspace are used to set the margins. As an example I set everything to 10pt. If you don't want, e.g. a right margin, just remove the rightskip from the code. I assumed you also wanted to customize the title text margin, if you don't want to just remove the leftskip etc. from \def\insertblocktitle{}. the result is: enter image description here

Another possibility would be with the tcolorbox package, which lets you set margins like this:

\documentclass{beamer} 
\usepackage{tcolorbox}                                 
\tcbuselibrary{skins}                                  


\tcbset{                                               % custom tcolorbox  
        skin=enhanced,                                 
        frame style={fill=blue},                       % sets the frame color
        bottom=10pt,                                    % distance between the body text and the bottom frame
        top=10pt,                                      % distance between the body text and the top frame
        left=10pt,
        right=10pt,
        boxrule=0pt,                                   % frame width
        bottomtitle=10pt,                               % distance between the title text and the bottom title frame               
        toptitle=10pt,                                  % distance between the title text and the top title frame
        lefttitle=10pt,                                  % title text left margin
        righttitle=10pt
}  
\begin{document}
\begin{frame}  
\begin{tcolorbox}[title=test]
 test
\end{tcolorbox}
\end{frame}
\end{document}

result is: enter image description here

edit: I didn't add the beamerposterpackage in my example code because it works both in beamer and beamerposter without modifications.