beamer: tikz für eine benutzerdefinierte Umgebung, die anstelle von Themen verwendet wird

beamer: tikz für eine benutzerdefinierte Umgebung, die anstelle von Themen verwendet wird

Früher habe ich tikzeine Umgebung erstellt, beamerdie anstelle eines Designs verwendet werden sollte. Das Problem ist, dass ich die overlay, remember pictureOption verwende und sie latex/lualatexjedes Mal zweimal ausgeführt werden muss. Da die Elemente, für die tikzverwendet wird, einfach sind, gibt es möglicherweise Alternativen zu tikz. Wenn jemand hier eine Alternative zu bereitstellen könnte tikz...?

Durch die Einstellung tmarginauf die Höhe der obersten Zierlinie wird die vertikale Zentrierung relativ zum weißen Teil der Folie angepasst.

Ich versuche, an der unteren und rechten Kante dieser oberen Linie einen leichten Schattierungseffekt zu erzielen. Hat also jemand einen Vorschlag?

hier ist der Code:

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

Antwort1

Ihr Code lässt sich nicht kompilieren. Weder \enttHnoch \rulewidthsind definiert. Bitte testen Sie Ihren Beispielcode, bevor Sie Fragen stellen!

Davon abgesehen:

  • Ich würde die Geometrieeinstellungen nicht manuell ändern. Beamer kann das Seitenverhältnis der Folien sehr gut ändern und die Höhe der Überschrift berechnen.

  • Anstatt innerhalb Ihrer Frames eine neue Umgebung zu erstellen, würde ich die frametitleVorlage anpassen.

  • Sie müssen nicht jedes Mal zweimal kompilieren. Solange Sie die Hilfsdateien nicht löschen, kompilieren Sie zu Beginn zweimal und in Zukunft wird einmaliges Kompilieren ausreichen. Auch viele andere Elemente in Latex/Beamer erfordern zunächst zwei Kompilierungen, z. B. das Inhaltsverzeichnis, Querverweise, die Gesamtzahl der Frames ... wahrscheinlich werden Sie sowieso mehrere Kompilierungen benötigen.

  • Wenn Sie die Optionen nicht verwenden, können Sie die zweite Kompilierung ganz vermeiden remember picture, overlay. Der Frametitle steht ohnehin oben auf der Seite.

  • TikZ bietet viele verschiedene Schatten. Sie zu verwenden scheint einfacher zu sein als Ihre Vorgabe. Um Ihren Effekt nachzubilden, drop shadowkommt a wahrscheinlich am nächsten.

  • Ich würde das Paket nicht verwenden, fontsizewenn Sie nicht auch eine skalierbare Schriftart verwenden.

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

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

verwandte Informationen