Introduzindo uma margem esquerda dentro de um ambiente de bloco no beamer

Introduzindo uma margem esquerda dentro de um ambiente de bloco no beamer

Estou fazendo um pôster usando beamerposter. O texto dentro de um bloco sempre parece não ter margem esquerda. Alguém pode me dizer uma maneira de introduzir uma margem esquerda em um bloco?

Aqui está um exemplo da aparência de um bloco. Observe que o texto começa sem margem esquerda.

insira a descrição da imagem aqui

Seria bom se você pudesse me dizer como definir as margens esquerda, direita, superior e inferior dentro do bloco. Observe que tenho blocos aninhados, embora os aninhados tenham um nome de ambiente diferente (chamei então insideBlocks). Portanto, eu não gostaria que as margens do blockmeio ambiente afetassem as margens do meu insideBlocksambiente.

Espero estar claro.

Responder1

Acho que isso pode ser alcançado de várias maneiras. Uma possibilidade é definir um novo ambiente de bloco com margens customizadas, como este:

 \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}

No novo ambiente (eu chamei de myblock) \leftskip, \rightskipe \vspacesão usados ​​para definir as margens. Por exemplo, configurei tudo para 10pt. Se você não quiser, por exemplo, uma margem direita, basta remover o rightskipdo código. Presumi que você também desejasse personalizar a margem do texto do título, se não quiser apenas remover o leftskipetc. \def\insertblocktitle{}o resultado é: insira a descrição da imagem aqui

Outra possibilidade seria com o tcolorboxpacote, que permite definir margens assim:

\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}

o resultado é: insira a descrição da imagem aqui

editar: não adicionei o beamerposterpacote no meu código de exemplo porque ele funciona com beamere beamerpostersem modificações.

Responder2

Você pode usar a próxima versão v0.3 do tema interno tcolorbox (https://www.ctan.org/pkg/beamertheme-tcolorbox). Usando este tema, os blocos aninhados serão automaticamente um pouco menores que o bloco circundante:

\documentclass{beamer}
\usetheme{Warsaw}
\usepackage[size=a4,orientation=portrait]{beamerposter}

\useinnertheme{tcolorbox}

\begin{document}

\begin{frame}
\begin{block}{title}
content...
\begin{block}{title}
content...
\end{block}
\end{block}
\end{frame}

\end{document}

insira a descrição da imagem aqui

informação relacionada