비머: 테마 대신 사용되는 사용자 정의 환경을 위한 tikz

비머: 테마 대신 사용되는 사용자 정의 환경을 위한 tikz

테마 대신 사용할 tikz환경을 만들어 두곤 했습니다 . beamer문제는 이 옵션을 사용하고 있는데 매번 두 번 overlay, remember picture실행해야 한다는 것입니다 . 가 사용되는 latex/lualatex요소는 tikz단순하므로 에 대한 대안이 있을 수 있습니다 tikz. 누구든지 여기에 대한 대안을 제공할 수 있다면 tikz...?

tmargin상단 장식자의 높이를 설정하면 슬라이드의 흰색 부분을 기준으로 세로 중심이 조정됩니다.

나는 그 상단 규칙의 아래쪽과 오른쪽 가장자리에 밝은 음영 효과를 얻으려고 노력하고 있습니다. 누구든지 제안할 수 있다면...?

코드는 다음과 같습니다.

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

답변1

코드가 컴파일되지 않습니다. 정의되지 \enttH도 않았습니다 \rulewidth. 질문을 게시하기 전에 예제 코드를 테스트해 보세요!

즉 :

  • 나는 형상 설정을 수동으로 조작하지 않을 것입니다. Beamer는 슬라이드의 종횡비를 변경하고 헤드라인의 높이를 계산하는 기능이 매우 뛰어납니다.

  • 프레임 내부에 새로운 환경을 만드는 대신 frametitle템플릿을 조정하겠습니다.

  • 매번 두 번 컴파일할 필요는 없습니다. 보조 파일을 삭제하지 않는 한 처음에는 두 번 컴파일하고 이후에는 한 번만 컴파일해도 충분합니다. 또한 라텍스/비머의 다른 많은 요소에는 처음에 두 개의 컴파일이 필요합니다(예: toc, 상호 참조, 총 프레임 수 등). 어쨌든 여러 개의 컴파일이 필요할 가능성이 있습니다.

  • 옵션을 사용하지 않으면 두 번째 컴파일을 완전히 피할 수 있습니다 remember picture, overlay. 프레임 제목은 어쨌든 페이지 상단에 있습니다.

  • TikZ는 다양한 그림자를 제공합니다. 그것들을 사용하는 것은 당신의 사전 조치보다 더 쉬워 보입니다. 효과를 재현하려면 drop shadow아마도 가장 가깝습니다.

  • fontsize확장 가능한 글꼴도 사용하지 않으면 패키지를 사용하지 않을 것입니다 .

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

여기에 이미지 설명을 입력하세요 여기에 이미지 설명을 입력하세요

관련 정보