![从 beamer 中提取所有 \note 标签作为简单文本文件](https://linux22.com/image/270311/%E4%BB%8E%20beamer%20%E4%B8%AD%E6%8F%90%E5%8F%96%E6%89%80%E6%9C%89%20%5Cnote%20%E6%A0%87%E7%AD%BE%E4%BD%9C%E4%B8%BA%E7%AE%80%E5%8D%95%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6.png)
我正在使用一款很好的演示工具,叫做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{}
命令现在不起作用。