
我用過這個答案來自關於如何從頭開始設計投影機主題的問題設計一個看起來像大學簡報 (Powerpoint) 範本的 Beamer 主題。 Powerpoint 範本有 3 種顏色選項(藍色、綠色、石板色)。我知道解決方案的一個選擇是創建 3 個單獨的顏色主題並直接調用它們;
\usecolortheme{mythemeblue}
\usecolortheme{mythemegreen}
\usecolortheme{mythemeslate}
我想做的是在一個顏色主題檔案中定義所有不同的顏色,然後能夠使用一個選項來呼叫它們,如下所示
\usetheme[blue]{mytheme} %or green or slate
我在網站上看到了似乎使用的問題\DeclareOption
(在這個問題上,但無法開始工作) 或\DeclareOptionBeamer
(這個問題&這個問題- 不太理解這些解決方案)
理想情況下,我想要的是一個解決方案,我可以beamercolorthememytheme.sty
根據選擇的選項對相同的顏色名稱進行不同的定義。例如,如果選擇藍色選項,Beamer 就會知道這一點,\definecolor{col1}{RGB}{104,7,90}
但如果選擇綠色選項,它就會知道\definecolor{col1}{RGB}{81,139,36}
等等
希望這是足夠的信息,但如果沒有,請在評論中告訴我
這就是我的beamercolorthememytheme.sty
\mode<presentation>
% define colours from NUIG stylesheet
\definecolor{col1}{RGB}{104,7,90}
\definecolor{col2}{RGB}{27,65,99}
\definecolor{col3}{RGB}{138,167,147}
\definecolor{col4}{RGB}{143,183,195}
\definecolor{col5}{RGB}{194,230,242}
% set colours for different elements
\setbeamercolor{structure}{fg=col3!100!col4}
\setbeamercolor{frametitle}{bg=col4,fg=col2}
\setbeamercolor*{title page header}{fg=col5}
\setbeamercolor*{subtitle}{fg=col5}
\setbeamercolor*{author}{fg=col5}
\setbeamercolor*{date}{fg=col5}
\setbeamercolor*{item}{fg=col5}
\setbeamercolor{block title}{bg=col1,fg=col5}
\mode
<all>
答案1
以下範例示範如何有條件地變更框架標題的顏色。blue
如果未指定選項,將用作預設顏色。
考慮以下 MWE:
\documentclass{beamer}
\usetheme[style=blue]{mytheme}
\begin{document}
\begin{frame}
\frametitle{test}
abc
\end{frame}
\end{document}
與相應的beamerthememytheme.sty
,它的作用只不過是將顏色選項傳遞給顏色主題。
\mode<presentation>
\DeclareOptionBeamer{style}{
\PassOptionsToPackage{style=#1}{beamercolorthememytheme}
}
\ExecuteOptionsBeamer{style=blue}
\ProcessOptionsBeamer
\usecolortheme{mytheme}
\mode
<all>
和顏色主題beamercolorthememytheme.sty
:
\mode<presentation>
\DeclareOptionBeamer{style}{\def\beamer@mytheme@style{#1}}
\ExecuteOptionsBeamer{style=blue} % blue will be default if nothing is given
\ProcessOptionsBeamer
\def\beamer@mytheme@stylegreen{green}%
\def\beamer@mytheme@styleblue{blue}%
\def\beamer@mytheme@stylered{red}%
\ifx\beamer@mytheme@style\beamer@mytheme@stylegreen%
\definecolor{col1}{RGB}{0,255,0} % green
\else%
\ifx\beamer@mytheme@style\beamer@mytheme@stylered%
\definecolor{col1}{RGB}{255,0,0} % red
\else%
\definecolor{col1}{RGB}{0,0,255} % blue
\fi%
\fi%
\setbeamercolor{frametitle}{bg=white,fg=col1}
\mode
<all>