formations/presentations/nc/pdfpcnotes.sty

71 lines
1.7 KiB
Plaintext
Raw Permalink Normal View History

\ProvidesPackage{pdfpcnotes}
% Handling of kv parameters.
% We have the following options, that all take time in the HH:MM format
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
family=PDFPC,
prefix=PDFPC@
}
\DeclareStringOption{duration}
\DeclareStringOption{starttime}
\DeclareStringOption{endtime}
\DeclareStringOption{lastminutes}
\DeclareStringOption{fontsize}
\ProcessKeyvalOptions*
% Small macro to make inserting options easier.
\newcommand\PDFPC@option[2]{
\ifx#2\@empty\else
\immediate\write\pdfpcnotesfile{[#1]}%
\immediate\write\pdfpcnotesfile{#2}%
\fi
}
% create a new file handle
\newwrite\pdfpcnotesfile
% open file on \begin{document}
\AtBeginDocument{%
\immediate\openout\pdfpcnotesfile\jobname.pdfpc\relax
\PDFPC@option{duration}{\PDFPC@duration}
\PDFPC@option{start_time}{\PDFPC@starttime}
\PDFPC@option{end_time}{\PDFPC@endtime}
\PDFPC@option{last_minutes}{\PDFPC@lastminutes}
\PDFPC@option{font_size}{\PDFPC@fontsize}
\immediate\write\pdfpcnotesfile{[notes]}
}
% define a # http://tex.stackexchange.com/a/37757/10327
\begingroup
\catcode`\#=12
\gdef\hashchar{#}%
\endgroup
\def\lastframenumber{0}
% define command \pnote{} that works like note but
% additionally writes notes to file in pdfpc readable format
\newcommand{\pnote}[1]{%
% keep normal notes working
\note{#1}%
% if frame changed - write a new header
\ifdim\theframenumber pt>\lastframenumber pt
\let\lastframenumber\theframenumber
\begingroup
\let\#\hashchar
\immediate\write\pdfpcnotesfile{\#\#\# \theframenumber}%
\endgroup
\fi
% write note to file
\immediate\write\pdfpcnotesfile{\unexpanded{#1}}%
}
% close file on \end{document}
\AtEndDocument{%
\immediate\closeout\pdfpcnotesfile
}