테스트 1

테스트 1

에 대한 토론에서 영감을 얻었습니다.https://github.com/josephwright/beamer/issues/388

이 사이트에는 "테마 X를 사용하지만 테마 Y의 바닥글/머리글/무엇이든 갖고 싶습니다."와 같은 질문이 많이 있습니다. 예를 들면 다음과 같습니다.바르샤바와 마드리드 비머 테마 믹스

이를 더 쉽게 하려면 테마에서 특정 템플릿(예: 각주)을 어떻게 로드할 수 있습니까?


테스트 케이스

테스트 1: 간단한 사례

\useoutertheme{infolines}
\setbeamertemplate{footline}[infolines theme] 

테스트 2: 상위 테마와 작동하는지 테스트

\usetheme{Boadilla} 
\setbeamertemplate{footline}[infolines theme] 

테스트 3: 옵션과 함께 작동하는지 테스트

\usetheme[height=3cm]{Rochester}
\setbeamertemplate{headline}[sidebar theme]

답변1

테스트 1

이것은 작동하는 것 같습니다.

\documentclass{beamer}
    \usecolortheme{whale}
    \useoutertheme{split}
\makeatletter
    \let\beamer@@@@sbto@old=\beamer@@@@sbto
    \def\text@footline{footline}
    \long\def\beamer@@@@sbto#1#2[#3]#4[#5]#6{
        \def\text@element{#1}
        \ifx\text@footline\text@element
            \beamer@@@@sbto@old{#1}{#2}[#3]{#4}[#5]{#6}
        \fi
    }
    \useoutertheme{infolines}
    \let\beamer@@@@sbto=\beamer@@@@sbto@old
\makeatother

\begin{document}
    \begin{frame}
        Test
    \end{frame}
\end{document}

테스트 2

색상을 제어하려면 \beamer@clearbeamercolor및 에서 동일한 작업을 수행합니다 \beamer@setbeamercolor.

\setbeamerfont( 및 에도 동일 \setbeamersize)

\documentclass{beamer}
    \usecolortheme{whale}
    \useoutertheme{split}
\makeatletter
    \let\beamer@@@@sbto@old=\beamer@@@@sbto
    \def\text@footline{footline}
    \long\def\beamer@@@@sbto#1#2[#3]#4[#5]#6{
        \def\text@element{#1}
        \ifx\text@footline\text@element
            \beamer@@@@sbto@old{#1}{#2}[#3]{#4}[#5]{#6}
        \fi
    }
    \let\beamer@clearbeamercolor@old=\beamer@clearbeamercolor
    \let\beamer@setbeamercolor@old=\beamer@setbeamercolor
    \def\beamer@clearbeamercolor#1#2{}
    \def\beamer@setbeamercolor#1#2{}
    \usetheme{Boadilla}
    \setbeamertemplate{footline}[infolines theme]
    \let\beamer@@@@sbto=\beamer@@@@sbto@old
    \let\beamer@clearbeamercolor=\beamer@clearbeamercolor@old
    \let\beamer@setbeamercolor=\beamer@setbeamercolor@old
\makeatother

\begin{document}
    \begin{frame}
        Test
    \end{frame}
\end{document}

테스트 3

\beamer@@@@sbto이 테스트에서는 긴 매크로가 필수적입니다 .

\documentclass{beamer}
    \usecolortheme{whale}
    \useoutertheme{split}
\makeatletter
    \let\beamer@@@@sbto@old=\beamer@@@@sbto
    \def\text@headline{headline}
    \long\def\beamer@@@@sbto#1#2[#3]#4[#5]#6{
        \def\text@element{#1}
        \ifx\text@headline\text@element
            \beamer@@@@sbto@old{#1}{#2}[#3]{#4}[#5]{#6}
        \fi
    }
    \usetheme[height=3cm]{Rochester}
    \setbeamertemplate{headline}[sidebar theme]
    \let\beamer@@@@sbto=\beamer@@@@sbto@old
\makeatother

\begin{document}
    \section{TEST}
    \begin{frame}
        Test
    \end{frame}
\end{document}

답변2

서투른 해결 방법: catchfilebetweentags패키지 사용. 그러나 이를 위해서는 파일에 몇 가지 추가 설명이 필요합니다 .sty.

\documentclass{beamer}

\usecolortheme{whale}
\useoutertheme{split}

\usepackage{catchfilebetweentags}
\newcommand\fromtheme[2]{\ExecuteMetaData[beamertheme#1.sty]{#2}}
\newcommand\fromcolortheme[2]{\ExecuteMetaData[beamercolortheme#1.sty]{#2}}  
\newcommand\fromfonttheme[2]{\ExecuteMetaData[beamerfonttheme#1.sty]{#2}}  
\newcommand\fromoutertheme[2]{\ExecuteMetaData[beameroutertheme#1.sty]{#2}}
\newcommand\frominnertheme[2]{\ExecuteMetaData[beamerinnertheme#1.sty]{#2}}  

\fromoutertheme{infolines}{footline:infolines}

\begin{document}
    \begin{frame}
        Test
    \end{frame}
\end{document}  

파일 .sty에는 다음과 같은 주석이 필요합니다.

%<*footline:infolines>
\defbeamertemplate*{footline}{infolines theme}
{
  \leavevmode%
  \hbox{%
  \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,center]{author in head/foot}%
    \usebeamerfont{author in head/foot}\insertshortauthor\expandafter\beamer@ifempty\expandafter{\beamer@shortinstitute}{}{~~(\insertshortinstitute)}
  \end{beamercolorbox}%
  \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,center]{title in head/foot}%
    \usebeamerfont{title in head/foot}\insertshorttitle
  \end{beamercolorbox}%
  \begin{beamercolorbox}[wd=.333333\paperwidth,ht=2.25ex,dp=1ex,right]{date in head/foot}%
    \usebeamerfont{date in head/foot}\insertshortdate{}\hspace*{2em}
    \insertframenumber{} / \inserttotalframenumber\hspace*{2ex} 
  \end{beamercolorbox}}%
  \vskip0pt%
}
%</footline:infolines>

%<*headline:infolines>
\defbeamertemplate*{headline}{infolines theme}
{
  \leavevmode%
  \hbox{%
  \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.65ex,dp=1.5ex,right]{section in head/foot}%
    \usebeamerfont{section in head/foot}\insertsectionhead\hspace*{2ex}
  \end{beamercolorbox}%
  \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.65ex,dp=1.5ex,left]{subsection in head/foot}%
    \usebeamerfont{subsection in head/foot}\hspace*{2ex}\insertsubsectionhead
  \end{beamercolorbox}}%
  \vskip0pt%
}
%</headline:infolines>

위 Ansatz의 문제점:

  • 양식의 주석은 코드에 삽입되어야 하며 사용자 정의 테마는 아마도 이 작업을 수행하지 않을 것이며 사용자는 어떤 템플릿이 작동하고 어떤 템플릿이 작동하지 않는지 혼동하게 될 것입니다 %<*footline:infolines>.%</footline:infolines>

  • 템플릿이 테마 내에 정의된 것을 템플릿 외부에서 사용하려고 하면 특정 템플릿을 로드하는 것만으로도 중단된다는 것을 알고 있습니다. 예를 들어 다음과 같은 항목은 \pgfdeclareverticalshading{beamer@topshade}{...}템플릿 내부에 있어야 합니다 <*tag>.</tag>

  • 물론 템플릿이 어떤 하위 테마에 정의되어 있는지 알 필요가 없지만 일반 테마를 삽입하면 이 명령이 로드된 하위 테마에서 지정된 태그를 반복적으로 검색할 수 있다면 더 편리할 것입니다.

  • 나는 아직 테마의 선택적 인수가 이것에 어떻게 들어맞는지 생각해 본 적이 없습니다...

  • ....


테스트 사례 결과:

테스트 1: 간단한 사례

공장

테스트 2: 상위 테마와 작동하는지 테스트

실패하다

테스트 3: 옵션과 함께 작동하는지 테스트

실패하다

답변3

다음 코드는 내가 받은 답변의 louisstuart96에서 가져온 것입니다.https://github.com/josephwright/beamer/issues/388#issuecomment-296338235

[그가 직접 답변을 추가하기로 결정한 경우 이 CM을 삭제하겠습니다]

\documentclass{beamer}

\usecolortheme{whale}
\useoutertheme{split}

\makeatletter
\let\beamer@original@defbeamertemplate\beamer@defbeamertemplate
\def\beamer@defbeamertemplate{\beamer@sbtfalse\@ifstar{\beamer@sbtoo}{\beamer@sbtoo}}
\useoutertheme{infolines}
\setbeamertemplate{footline}[infolines theme] 
% This \set must be done manually, 
% since generally theme names have nothing to do with file names
\let\beamer@defbeamertemplate\beamer@original@defbeamertemplate
\makeatother

\begin{document}
    \begin{frame}
        Test
    \end{frame}
\end{document}

테스트 사례 결과:

테스트 1: 간단한 사례

공장

테스트 2: 상위 테마와 작동하는지 테스트

작품 [색상 같은 것은 테마에 의해 덮어씌워진다는 약간의 단점이 있습니다]

테스트 3: 옵션과 함께 작동하는지 테스트

공장

관련 정보