\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 }