From: Nikolay Shaplov Date: Thu, 28 May 2026 09:42:47 +0000 (+0300) Subject: Некий промежуточный вариант новой версии LaTeX шаблона с современным дизайном X-Git-Url: http://gitweb.nataraj.world/?a=commitdiff_plain;h=3675d7778ec36d210d73eae2d8a3062849ce143e;p=articles.git Некий промежуточный вариант новой версии LaTeX шаблона с современным дизайном --- diff --git a/slides/0000 - LaTeX Stub/Makefile b/slides/0000 - LaTeX Stub/Makefile index e24f482..9eebed4 100644 --- a/slides/0000 - LaTeX Stub/Makefile +++ b/slides/0000 - LaTeX Stub/Makefile @@ -1,4 +1,4 @@ -THEME = pgpro2025.theme +THEME ?= pgpro2025.theme THEMES = theme.nonfree pgpro2025.theme @@ -9,7 +9,11 @@ all: "$(TOP_DIR)/bin/gen_font_config.pl" "$(FONTS_DIR)" ln -sf "$(THEME)/theme_setup.tex" theme_setup.tex FONTCONFIG_FILE="$(FONTS_DIR)/fonts.conf" fc-cache - FONTCONFIG_FILE="$(FONTS_DIR)/fonts.conf" xelatex example.tex && make clean + + # Надо в два прохода + FONTCONFIG_FILE="$(FONTS_DIR)/fonts.conf" xelatex example.tex + FONTCONFIG_FILE="$(FONTS_DIR)/fonts.conf" xelatex example.tex + make clean clean: rm -f *.log *.aux *.out *.snm *.nav *.toc *.vrb diff --git a/slides/0000 - LaTeX Stub/example.tex b/slides/0000 - LaTeX Stub/example.tex index 1a7d6f0..05a531d 100644 --- a/slides/0000 - LaTeX Stub/example.tex +++ b/slides/0000 - LaTeX Stub/example.tex @@ -1,4 +1,4 @@ -\documentclass[aspectratio=169]{beamer} +\documentclass{beamer} \usepackage{xltxtra} \defaultfontfeatures{Ligatures=TeX,Mapping=tex-text} @@ -12,7 +12,10 @@ \hypersetup{pdfstartview=FitH, linkcolor=linkcolor,urlcolor=urlcolor, colorlinks=true} \title{Название презентации} -\author{Автор} +\subtitle{Подзаголовок презентации} +\author{Константин Констанинович Константинопольский} +\institute{Шамбала, Гималаи, май 2026} + \input{theme_setup.tex} % Подгружаем тему из файла @@ -24,7 +27,7 @@ \titlepage \end{frame} -\begin{frame}{Первый слайд} +\begin{frame}[t]{Первый слайд} Какой-то список \begin{itemize} \item Элемент 1 diff --git a/slides/0000 - LaTeX Stub/pgpro2025.theme/beamercolorthemePgPro2025.sty b/slides/0000 - LaTeX Stub/pgpro2025.theme/beamercolorthemePgPro2025.sty index 30ea093..bd942f1 100644 --- a/slides/0000 - LaTeX Stub/pgpro2025.theme/beamercolorthemePgPro2025.sty +++ b/slides/0000 - LaTeX Stub/pgpro2025.theme/beamercolorthemePgPro2025.sty @@ -4,9 +4,6 @@ \mode % --- Шрифты ----------------------------------------------------------------- -% Roboto Regular — основной текст -% Roboto Medium — заголовки (через BoldFont) -% Roboto Mono — блоки кода \AtBeginDocument{% \setromanfont{Roboto}% \setsansfont[BoldFont={Roboto Medium}]{Roboto}% @@ -14,33 +11,49 @@ } % --- Цвета ------------------------------------------------------------------ -\definecolor{pgpro@blue}{HTML}{142D99} % основной синий -\definecolor{pgpro@gray}{HTML}{EFEFF2} % фон карточек/блоков кода -\definecolor{pgpro@divider}{HTML}{D4D4DC} % разделители -\definecolor{pgpro@muted}{HTML}{ADADBC} % метки, вторичный текст +\definecolor{pgpro@blue}{HTML}{142D99} +\definecolor{pgpro@gray}{HTML}{EFEFF2} +\definecolor{pgpro@divider}{HTML}{D4D4DC} +\definecolor{pgpro@muted}{HTML}{ADADBC} -% --- Титульный слайд -------------------------------------------------------- -% Заголовок 1: Roboto Medium, 40 pt (через \sffamily\bfseries) +% --- Титульный слайд: заголовок --------------------------------------------- +% Заголовок 1: Roboto Medium, 40 pt \setbeamercolor*{title page header}{fg=white} \setbeamerfont*{title}{size*={40pt}{1.1},family=\sffamily,series=\bfseries} + +% --- Титульный слайд: подзаголовок ------------------------------------------ +% Располагается под заголовком, Regular, чуть меньше +\definecolor{pgpro@subtitle}{HTML}{889BEF} +\setbeamercolor*{subtitle}{fg=pgpro@subtitle} +\setbeamerfont*{subtitle}{size*={20pt}{1.2},family=\sffamily} + +% --- Титульный слайд: автор ------------------------------------------------- +% Текст 1: Roboto Regular, 14 pt \setbeamercolor*{author}{fg=white} \setbeamerfont*{author}{size*={14pt}{1.3},family=\sffamily} +% --- Титульный слайд: byline (должность) ------------------------------------ +% Текст 2: Roboto Regular, 12 pt +\setbeamercolor*{byline}{fg=white} +\setbeamerfont*{byline}{size*={12pt}{1.3},family=\sffamily} + % --- Заголовок фрейма ------------------------------------------------------- % Заголовок 2: Roboto Medium, 28 pt \setbeamercolor*{frametitle}{fg=pgpro@blue} \setbeamerfont*{frametitle}{size*={28pt}{1.1},family=\sffamily,series=\bfseries} % --- Основной текст --------------------------------------------------------- -% Текст 1: Roboto Regular, 14 pt \setbeamercolor{normal text}{fg=pgpro@blue} -\setbeamerfont{normal text}{size*={14pt}{1.3},family=\sffamily} +\setbeamerfont{normal text}{size*={21pt}{1.95},family=\sffamily} \AtBeginDocument{\usebeamerfont{normal text}} % --- Списки ----------------------------------------------------------------- \setbeamertemplate{itemize items}{\textbullet} \setbeamercolor{itemize/enumerate body}{fg=pgpro@blue} -\setbeamerfont{itemize/enumerate body}{size*={14pt}{1.3},family=\sffamily} +\setbeamerfont{itemize/enumerate body}{size*={21pt}{1.95},family=\sffamily} +\addtobeamertemplate{itemize/enumerate body begin}{% + \setlength{\itemsep}{10.5pt}% +}{} % --- Блоки ------------------------------------------------------------------ \setbeamercolor{block title}{fg=white,bg=pgpro@blue} diff --git a/slides/0000 - LaTeX Stub/pgpro2025.theme/beamerinnerthemePgPro2025.sty b/slides/0000 - LaTeX Stub/pgpro2025.theme/beamerinnerthemePgPro2025.sty index 9e4069b..6b6e98c 100644 --- a/slides/0000 - LaTeX Stub/pgpro2025.theme/beamerinnerthemePgPro2025.sty +++ b/slides/0000 - LaTeX Stub/pgpro2025.theme/beamerinnerthemePgPro2025.sty @@ -1,20 +1,19 @@ % PgPro 2025 — внутренняя тема: фоны и шаблон титульного слайда \mode +\usetikzlibrary{calc} + \setbeamertemplate{background}{ \begin{tikzpicture} \ifnum\thepage=1\relax% - % Титульный слайд — тёмный фон с логотипом \node[anchor=south west,inner sep=0] at (0,0) {\includegraphics[width=\the\paperwidth,height=\the\paperheight]% {pgpro2025.theme/bgpics/title_bg}}; \fi \ifnum\thepage>1\relax% - % Контентный слайд — белый фон с логотипом \node[anchor=south west,inner sep=0] at (0,0) {\includegraphics[width=\the\paperwidth,height=\the\paperheight]% {pgpro2025.theme/bgpics/page_bg}}; - % Номер слайда — правый нижний угол, приглушённый цвет \node[anchor=east] at (\textwidth+1cm,0.5cm) {\color{pgpro@muted}\tiny\insertframenumber}; \fi @@ -22,18 +21,30 @@ } % Шаблон титульной страницы -% Охранное поле: верх 1.33 см — vskip подобран под тёмный фон +% Координаты абсолютные от верхнего края слайда через current page.north west. +% Требует двух прогонов xelatex (remember picture). +% Блок 1: Заголовок + Подзаголовок, верх на 0.52″ от верха слайда +% Блок 2: Автор + Должность, верх на 6.34″ от верха слайда \defbeamertemplate*{title page}{PgPro2025}[1][] -{ - \vskip3cm% - \begin{beamercolorbox}[leftskip=1.33cm,left,#1]{title page header} - \usebeamerfont{title}\inserttitle\par% - \end{beamercolorbox}% - \vskip0.75cm% - \begin{beamercolorbox}[leftskip=1.33cm,left,#1]{author} - \usebeamerfont{author}\insertauthor% - \end{beamercolorbox} - \vspace{9cm} +{% + \begin{tikzpicture}[remember picture, overlay] + % Блок 1: Заголовок + Подзаголовок + \node[anchor=north west, text width=\paperwidth-1.33cm-1.03cm, align=left] + at ($(current page.north west) + (1.33cm, -0.52in - 1cm)$) {% + {\usebeamerfont{title}\usebeamercolor[fg]{title page header}\inserttitle}% + \ifx\insertsubtitle\@empty\else\\[0.3cm]% + {\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle}% + \fi% + }; + % Блок 2: Автор + Должность + \node[anchor=north west, text width=\paperwidth-1.33cm-1.03cm, align=left] + at ($(current page.north west) + (1.33cm, -6.34in)$) {% + {\usebeamerfont{author}\usebeamercolor[fg]{author}\insertauthor}% + \ifx\insertinstitute\@empty\else\\[0.15cm]% + {\usebeamerfont{institute}\usebeamercolor[fg]{institute}\insertinstitute}% + \fi% + }; + \end{tikzpicture}% } \mode diff --git a/slides/0000 - LaTeX Stub/pgpro2025.theme/beamerouterthemePgPro2025.sty b/slides/0000 - LaTeX Stub/pgpro2025.theme/beamerouterthemePgPro2025.sty index 744f5fd..4b6f9a1 100644 --- a/slides/0000 - LaTeX Stub/pgpro2025.theme/beamerouterthemePgPro2025.sty +++ b/slides/0000 - LaTeX Stub/pgpro2025.theme/beamerouterthemePgPro2025.sty @@ -1,13 +1,12 @@ % PgPro 2025 — внешняя тема -% Навигация отключена в основном файле темы. -% Заголовок фрейма выравнивается по левому краю с учётом охранного поля. \mode \setbeamertemplate{frametitle}{% - \vskip0.4cm% + \vskip1.4cm% \begin{beamercolorbox}[wd=\paperwidth,leftskip=1.33cm]{frametitle}% \usebeamerfont{frametitle}\insertframetitle% \end{beamercolorbox}% + \vskip0.5cm% } \mode diff --git a/slides/0000 - LaTeX Stub/pgpro2025.theme/beamerthemePgPro2025.sty b/slides/0000 - LaTeX Stub/pgpro2025.theme/beamerthemePgPro2025.sty index 87cbad1..60e0f4b 100644 --- a/slides/0000 - LaTeX Stub/pgpro2025.theme/beamerthemePgPro2025.sty +++ b/slides/0000 - LaTeX Stub/pgpro2025.theme/beamerthemePgPro2025.sty @@ -4,6 +4,23 @@ \mode \RequirePackage{tikz} +\RequirePackage{etoolbox} + +% Контент фреймов прижат к верху (аналог [t] для всех фреймов). +% \beamer@frametopskip=0pt в преамбуле не работает: Beamer сбрасывает +% его в значение «0pt plus 1fill» при каждом \begin{frame} (default [c]). +% Поэтому ставим [t] принудительно перед каждым фреймом. +\BeforeBeginEnvironment{frame}{\setkeys{beamerframe}{t}} + +% Размер слайда = размеру фоновых PDF (960×540 bp) +% Патчим внутренние переменные Beamer напрямую, +% т.к. они кэшируются при загрузке класса до загрузки темы +\makeatletter +\setlength{\paperwidth}{960bp} +\setlength{\paperheight}{540bp} +\setlength{\beamer@paperwidth}{960bp} +\setlength{\beamer@paperheight}{540bp} +\makeatother \useinnertheme{PgPro2025} \useoutertheme{PgPro2025} @@ -13,7 +30,7 @@ \setbeamertemplate{blocks}[rounded][shadow=true] \setbeamertemplate{footline}{\vspace{1cm}} -% Охранное поле из шаблона: лево 1.33 см, право 1.03 см +% Охранное поле — после переопределения размеров \setbeamersize{text margin left=1.33cm,text margin right=1.03cm} \mode diff --git a/slides/0000 - LaTeX Stub/pgpro2025.theme/bgpics/page_bg.old.svg b/slides/0000 - LaTeX Stub/pgpro2025.theme/bgpics/page_bg.old.svg deleted file mode 100644 index 855e50d..0000000 --- a/slides/0000 - LaTeX Stub/pgpro2025.theme/bgpics/page_bg.old.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/slides/0000 - LaTeX Stub/pgpro2025.theme/bgpics/title_bg.old.svg b/slides/0000 - LaTeX Stub/pgpro2025.theme/bgpics/title_bg.old.svg deleted file mode 100644 index cbab11a..0000000 --- a/slides/0000 - LaTeX Stub/pgpro2025.theme/bgpics/title_bg.old.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/slides/0000 - LaTeX Stub/pgpro2025.theme/theme_setup.tex b/slides/0000 - LaTeX Stub/pgpro2025.theme/theme_setup.tex index 646dd40..0aac54e 100644 --- a/slides/0000 - LaTeX Stub/pgpro2025.theme/theme_setup.tex +++ b/slides/0000 - LaTeX Stub/pgpro2025.theme/theme_setup.tex @@ -1,5 +1,4 @@ -\makeatother -\def\input@path{{./pgpro2025.theme}} +\makeatletter +\def\input@path{{./pgpro2025.theme/}} \makeatother \usetheme{PgPro2025} - diff --git a/slides/0000 - LaTeX Stub/theme.nonfree/theme_setup.tex b/slides/0000 - LaTeX Stub/theme.nonfree/theme_setup.tex index 62c170d..20bf30e 100644 --- a/slides/0000 - LaTeX Stub/theme.nonfree/theme_setup.tex +++ b/slides/0000 - LaTeX Stub/theme.nonfree/theme_setup.tex @@ -1,4 +1,4 @@ -\makeatother +\makeatletter \def\input@path{{./theme.nonfree}} \makeatother \usetheme{PgPro}