我曾經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
。不需要每次都編譯兩次。只要不刪除輔助文件,一開始編譯兩次,以後編譯一次就夠了。另外,latex/beamer 中的許多其他元素最初需要兩次編譯,例如目錄、交叉引用、總幀數…您很可能需要多次編譯。
如果不使用這些
remember picture, overlay
選項,則可以完全避免第二次編譯。無論如何,框架標題位於頁面頂部。TikZ 提供了許多不同的陰影。使用它們似乎比你的預想更容易。為了重現你的效果, a
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}