The bounty has already been awarded, but here's the beamer
way:
beamer
uses six horizontal lengths:
\beamer@leftsidebar
and \beamer@rightsidebar
store
the (horizontal) sizes of the side bars.
\beamer@leftmargin
and \beamer@rightmargin
store the
distance between sidebar and text.
The macros \Gm@lmargin
and \Gm@rmargin
store the distance from the
edge of the paper to the edge of the text.
Thus the sum \beamer@leftsidebar
and \beamer@leftmargin
is exactly \Gm@lmargin
.
Thus, if you wish to put some text right next to the left edge of paper with the proper separation, you need a horizontal skip equal to \beamer@leftsidebar
to get there.
\documentclass{beamer}
\usetheme{Berkeley}
\usepackage{lipsum}
\newlength\leftsidebar
\newlength\rightsidebar
\makeatletter
\setlength\leftsidebar{\beamer@leftsidebar}
\setlength\rightsidebar{\beamer@rightsidebar}
\makeatother
\begin{document}
\begin{frame}[t]
\lipsum[4]
\end{frame}
\hoffset=-\leftsidebar
\begin{frame}[plain,t]
\lipsum[4]
\end{frame}
\end{document}
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:
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:
edit: I didn't add the beamerposter
package in my example code because it works both in beamer
and beamerposter
without modifications.
Best Answer
I hope I did understand you right. Here is a simplified version of the block definitions we use in the mtheme, which is as far as I can tell exactly what you want.
The rectangle inner theme by the way does not do any changes with respect to the block definitions. So I removed it from your MWE.