diff options
Diffstat (limited to 'macros/latex/contrib/pdfpc/pdfpc.sty')
-rw-r--r-- | macros/latex/contrib/pdfpc/pdfpc.sty | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/macros/latex/contrib/pdfpc/pdfpc.sty b/macros/latex/contrib/pdfpc/pdfpc.sty new file mode 100644 index 0000000000..8a7c357063 --- /dev/null +++ b/macros/latex/contrib/pdfpc/pdfpc.sty @@ -0,0 +1,149 @@ +% This file is part of pdfpc. +% Copyright (C) 2020 Evgeny Stambulchik +% +% This program is free software; you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation; either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License along +% with this program; if not, write to the Free Software Foundation, Inc., +% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +% ------------------------------------------------------------------------------------------- +% +% Allow for defining some meta data and simple textual notes for use +% with the pdfpc presentation application <https://pdfpc.github.io>. +% +% ------------------------------------------------------------------------------------------- +% +% Inspired by Carsten Brandt's <https://github.com/cebe/pdfpc-latex-notes>. +% +% ------------------------------------------------------------------------------------------- +% +% Please report bugs and other problems as well as suggestions for improvements +% to the issue tracker at github <https://github.com/pdfpc/pdfpc/> +% +% ------------------------------------------------------------------------------------------- +% +\ProvidesPackage{pdfpc}[2020/06/10 v0.4.0 PDFPC] +\NeedsTeXFormat{LaTeX2e} +% +% Require additional packages needed by \sty{pdfpc}: +\RequirePackage{kvoptions} +\RequirePackage{xstring} +\RequirePackage{pdfcomment} +\RequirePackage{hyperxmp} +% +\SetupKeyvalOptions{ + family=PDFPC, + prefix=PDFPC@ +} +% +\DeclareStringOption{duration} +\DeclareStringOption{starttime} +\DeclareStringOption{endtime} +\DeclareStringOption{enduserslide} +\DeclareStringOption{lastminutes} +\DeclareBoolOption{hidenotes} +\DeclareBoolOption{overridenote} +\DeclareStringOption{notesposition} +\DeclareStringOption{defaulttransition} +\DeclareDefaultOption{\@unknownoptionerror} +% +\ProcessKeyvalOptions* +% +\ifx\PDFPC@duration\@empty +\else + \IfInteger{\PDFPC@duration}{} + {\PackageWarningNoLine{pdfpc}{`duration' should be an integer}}% +\fi +% +\ifx\PDFPC@enduserslide\@empty +\else + \IfInteger{\PDFPC@enduserslide}{} + {\PackageWarningNoLine{pdfpc}{`enduserslide' should be an integer}}% +\fi +% +\ifx\PDFPC@lastminutes\@empty +\else + \IfInteger{\PDFPC@lastminutes}{} + {\PackageWarningNoLine{pdfpc}{`lastminutes' should be an integer}}% +\fi +% +\ifPDFPC@overridenote + \renewcommand{\note}[2][]{% + \IfStrEq{#1}{item}% + % Imitate a bullet + {\pdfpcnote{* #2}}% + {\pdfpcnote{#2}}% + }% +\fi +% +\def\pdfpc@notespositionauto{auto}% +\ifx\PDFPC@notesposition\@empty% + \def\PDFPC@notesposition{auto}% +\fi% +% +% Guesswork for beamer/pgfpages notes +\ifx\PDFPC@notesposition\pdfpc@notespositionauto% + \def\PDFPC@notesposition{none}% + \def\pdfpc@onepaperheight{\paperheight}% + \def\pdfpc@twopaperheight{2\paperheight}% + \def\pdfpc@onepaperwidth{\paperwidth}% + \def\pdfpc@twopaperwidth{2\paperwidth}% + \def\pdfpc@pagecenter{\pgfpoint{.5\paperwidth}{.5\paperheight}}% + + \ifx\pgfpageoptiontwoheight\pdfpc@onepaperheight% + \ifx\pgfpageoptiontwowidth\pdfpc@twopaperwidth% + \ifx\pgfpageoptionfirstcenter\pdfpc@pagecenter% + \def\PDFPC@notesposition{right}% + \else% + \def\PDFPC@notesposition{left}% + \fi% + \fi% + \fi% + \ifx\pgfpageoptiontwoheight\pdfpc@twopaperheight% + \ifx\pgfpageoptiontwowidth\pdfpc@onepaperwidth% + \ifx\pgfpageoptionfirstcenter\pdfpc@pagecenter% + \def\PDFPC@notesposition{top}% + \else% + \def\PDFPC@notesposition{bottom}% + \fi% + \fi% + \fi% +\fi% +% +% Our schema +\newcommand*{\pdfpc@schema}{% + \hyxmp@add@to@xml{% +______<rdf:Description xmlns:pdfpc="https://github.com/pdfpc/pdfpc">^^J% + }% + \hyxmp@add@simple{pdfpc:Duration}{\PDFPC@duration}% + \hyxmp@add@simple{pdfpc:StartTime}{\PDFPC@starttime}% + \hyxmp@add@simple{pdfpc:EndTime}{\PDFPC@endtime}% + \hyxmp@add@simple{pdfpc:EndUserSlide}{\PDFPC@enduserslide}% + \hyxmp@add@simple{pdfpc:LastMinutes}{\PDFPC@lastminutes}% + \hyxmp@add@simple{pdfpc:NotesPosition}{\PDFPC@notesposition}% + \hyxmp@add@simple{pdfpc:DefaultTransition}{\PDFPC@defaulttransition}% + \hyxmp@add@to@xml{% +______</rdf:Description>^^J% + }% +} +% +% Piggybacking on the hyperxmp schema... +\let\oldhyxmp@pdf@schema\hyxmp@pdf@schema +\renewcommand{\hyxmp@pdf@schema}{{\oldhyxmp@pdf@schema}{\pdfpc@schema}} +% +% Note command +\ifPDFPC@hidenotes% + \newcommand{\pdfpcnote}[1]{} +\else% + \newcommand{\pdfpcnote}[1]{\pdfmargincomment{#1}} +\fi% +% +\endinput |