从 beamer 中提取所有 \note 标签作为简单文本文件

从 beamer 中提取所有 \note 标签作为简单文本文件

我正在使用一款很好的演示工具,叫做pdfpc

遗憾的是,它没有显示我在乳胶演示文稿中写下的笔记\note{}

有没有办法将所有\note{}标签的内容提取到一个文件中,然后将其转换为 pdfpc 可读的格式?

答案1

我根据有关文件 IO 的这两个问题想出了一个非常好的解决方案:

这是要放在前面的代码\begin{document}

% create a new file handle
\newwrite\pdfpcnotesfile

% open file on \begin{document}
\AtBeginDocument{%
    \immediate\openout\pdfpcnotesfile\jobname.pdfpc\relax
    \immediate\write\pdfpcnotesfile{[notes]}
}
% define a # https://tex.stackexchange.com/a/37757/10327
\begingroup
    \catcode`\#=12
    \gdef\hashchar{#}%
\endgroup
% define command \pnote{} that works exactly like \note but
% additionally writes notes to file in pdfpc readable format
\newcommand{\pnote}[1]{%
    % keep normal notes working
    \note{#1}%
    % write notes to file
    \begingroup
        \let\#\hashchar
        \immediate\write\pdfpcnotesfile{\#\#\# \theframenumber}%
        \immediate\write\pdfpcnotesfile{\unexpanded{#1}}%
    \endgroup
}
% close file on \end{document}
\AtEndDocument{%
    \immediate\closeout\pdfpcnotesfile
}

然后,您可以像以前一样使用该\pnote{}命令\note{}。行为将相同,但它还会将注释以 pdfpc 可读格式写入文件。

还有一些事情尚未解决:

  • 它不保留换行符,因此 a 中的所有内容\pnote最终都会出现在输出文件的一行中。要替换换行符和 pars,您可以使用以下命令:

    • sed -i "s/\\\\\\\\/\n/g" slides.pdfpc
    • sed -i "s/\\\\par/\n\n/g" slides.pdfpc
  • 每帧的多个\pnote{}命令现在不起作用。

相关内容