Я использовал 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 изначально требуют двух компиляций, например toc, перекрестные ссылки, общее количество кадров... скорее всего, вам в любом случае понадобится несколько компиляций.
Вы можете вообще избежать второй компиляции, если не используете опции
remember picture, overlay
. Заголовок фрейма в любом случае находится вверху страницы.TikZ предлагает много разных теней. Использование их кажется проще, чем ваше preaction. Чтобы воссоздать ваш эффект, 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}