beamer: tikz para um ambiente personalizado usado no lugar de temas

beamer: tikz para um ambiente personalizado usado no lugar de temas

Eu costumava tikzfazer um ambiente beamerpara ser usado no lugar de um tema. O problema é que estou usando a overlay, remember pictureopção e ela requer execução latex/lualatexduas vezes todas as vezes. Como os elementos para os quais tikzé usado são simples, pode haver alternativas para tikz. Se alguém pudesse fornecer uma alternativa para tikzaqui ...?

Ao definir tmargina altura da régua decorativa superior, a centralização vertical é ajustada em relação à parte branca do slide.

Estou tentando obter um efeito de sombreamento claro nas bordas inferior e direita dessa regra superior... então, se alguém puder sugerir...?

aqui está o código:

\documentclass{beamer}
\mode<presentation>

\newlength{\slw}\setlength{\slw}{160mm}
\newlength{\slh}\setlength{\slh}{90mm}
\newlength{\topH}\setlength{\topH}{11mm}
\geometry{verbose,papersize={\slw,\slh},tmargin=\topH}

\usepackage{tikz,fontsize}
\usetikzlibrary{calc}
\definecolor{entete}{HTML}{80e3ff}
\definecolor{bleufon}{HTML}{000090}

\setbeamercolor{normal text}{fg=bleufon}
\newlength{\rulewid}\setlength{\rulewid}{.6\slw}

\NewDocumentEnvironment{diap}{ m +b }
  {
    \begin{tikzpicture}[overlay, remember picture]
    \fill[preaction={fill=black!20,transform canvas={shift={(2pt,-2pt)}}}]
      [fill=entete]
      (current page.north west)   -- ++(\rulewid,0) [rounded corners=.5\topH]
    -- ++(0,-\topH) [sharp corners] -- ++(-\rulewid,0) 
    -- cycle;

    \node at (current page.north west)
      [shift={($ (.3,-.5\topH) + (1pt,-1pt) $)},
       anchor=west,font=\LARGEr,black!30] {#1};
    \node at (current page.north west)
      [shift={(.3,-.5\topH)},anchor=west,font=\LARGEr,bleufon] {#1};
    \end{tikzpicture}
  }
  { #2 } {}
  
\setlength{\parindent}{0pt}
\begin{document}
  \begin{frame}
  \begin{diap}{title}
    content
  \end{diap}
  \end{frame}
\end{document}

Responder1

Seu código não compila. Nem \enttHnem \rulewidthestão definidos. Teste seu código de exemplo antes de postar perguntas!

Dito isto:

  • Eu não mexeria manualmente nas configurações de geometria. O Beamer é muito capaz de alterar a proporção dos slides e calcular a altura do título.

  • Em vez de criar um novo ambiente dentro dos seus quadros, eu ajustaria o frametitlemodelo.

  • Você não precisa compilar duas vezes todas as vezes. Contanto que você não exclua os arquivos auxiliares, compile duas vezes no início e no futuro compilar uma vez será suficiente. Além disso, muitos outros elementos no latex/beamer requerem duas compilações inicialmente, por exemplo, o toc, referências cruzadas, o número total de quadros... é provável que você precise de várias compilações.

  • Você pode evitar completamente a segunda compilação se não usar as remember picture, overlayopções. De qualquer forma, o frametitle está no topo da página.

  • TikZ oferece muitas sombras diferentes. Usá-los parece mais fácil do que sua pré-ação. Para recriar seu efeito, drop shadowprovavelmente é o que mais se aproxima.

  • Eu não usaria o fontsizepacote se você também não usasse uma fonte escalonável.

\documentclass[aspectratio=169]{beamer}

\newlength{\topH}\setlength{\topH}{11mm}

\usepackage{tikz}
\usetikzlibrary{calc}
\definecolor{entete}{HTML}{80e3ff}
\definecolor{bleufon}{HTML}{000090}

\setbeamercolor{normal text}{fg=bleufon}
\newlength{\rulewidth}\setlength{\rulewidth}{.6\paperwidth}
\usetikzlibrary{shadows}

\makeatletter
\setbeamertemplate{frametitle}{
  \nointerlineskip%
  \@tempdima=\textwidth%
  \advance\@tempdima by\beamer@leftmargin%
  \advance\@tempdima by\beamer@rightmargin%
  \vskip-1mm%
  \hskip-\beamer@leftmargin%
  \hskip-1mm%
  \begin{tikzpicture}
    \fill[drop shadow,fill=entete] (0,0)   -- ++(\rulewidth,0) [rounded corners=.5\topH] -- ++(0,-\topH) [sharp corners] -- ++(-\rulewidth,0) -- cycle;
    \node at (0,0) [shift={($ (.3,-.5\topH) + (1pt,-1pt) $)}, anchor=west,font=\LARGE,black!30] {\insertframetitle};
    \node at (0,0)     [shift={(.3,-.5\topH)},anchor=west,font=\LARGE,bleufon] {\insertframetitle};
  \end{tikzpicture}
}
\makeatother

\makeatletter
\define@key{beamerframe}{c}[true]{% centered
  \beamer@frametopskip=0pt plus 1fill\relax%
  \beamer@framebottomskip=0pt plus 1fill\relax%
  \beamer@frametopskipautobreak=0pt plus .4\paperheight\relax%
  \beamer@framebottomskipautobreak=0pt plus .6\paperheight\relax%
}
\makeatother

\begin{document}
  \begin{frame}
  \frametitle{title}
    content content content content content content content content
  \end{frame}
  
  \begin{frame}
    content content content content content content content content
  \end{frame}  
\end{document}

insira a descrição da imagem aqui insira a descrição da imagem aqui

informação relacionada