动态插入网页内容(Javascript?)

动态插入网页内容(Javascript?)

今年,我所在的领域有一个大型会议,与欧洲足球锦标赛同期举行。幸运的是,我的演讲与任何比赛都不重叠,但如果将来发生这种情况,我想知道是否可以在演示文稿中加入beamer一些 JavaScript 魔法,从互联网上获取实时结果并将其显示在底部栏中。

我研究过并看过一些在 TeX 中嵌入 JS 的示例,但一切似乎都只是在打开文档或提交 PDF 表单时执行一些简单操作的函数。具体来说,我现在的问题是:

  1. 我可以在 PDF 内部运行 AJAX 请求吗,或者安全限制是否太严格?

  2. 如何嵌入每隔 X 秒或者每次显示新幻灯片时调用一次的代码?

  3. 哪些软件包可以使我的编程工作更加轻松?

答案1

套餐media9为可选套餐。

此示例显示了我在网络上找到的基于 Flash 的 RSS 阅读器中的最新 FIFA 新闻。它嵌入在 Beamer 演示文稿中每张幻灯片的页脚中。但它似乎不会更新内容。但是,当移动到下一张演示文稿幻灯片时,它会重新加载(包含更新的内容)(需要 Acrobat Reader)。

\documentclass{beamer}
\usepackage{media9}

\setbeamertemplate{footline}{
\includemedia[
  width=\paperwidth,height=0.1\linewidth,
  activate=pageopen, deactivate=pageclose,
  flashvars={rss=http://www.fifa.com/rss/index.xml},
  url
]{}{http://rsstool.sanriotown.com/rssReader.swf}%
}

\begin{document}
\begin{frame}{Frame title}
Please concentrate on the slide content!
\end{frame}
\end{document}

↗另一个例子,使用SlideShow.swf(也media9)显示从网络加载的生活图像。

答案2

一种选择是使用 Lua 来获取数据当文件被编译时。然后,设置一个批处理脚本,每 30 秒左右重新编译一次 TeX 文件,并使用自动刷新 pdf 文件的 pdf 阅读器。

这是一个示例(在 ConTeXt 中),它从网络服务器获取特定位置的当前日期和时间,解析返回的 XML 文件,并显示结果。

\enabledirectives[schemes.threshold=10] % Don't cache downloaded file for more than 10 sec

% I use earth tools as an example, which returns data in XML format.
\startluacode
  thirddata = thirddata or {}
  thirddata.url = "http://www.earthtools.org/timezone-1.1/40.71417/-74.00639"

  function thirddata.getcurrenttime()
      -- Fetch remote url and store it in a file. ConTeXt automatically caches the
      -- file for a duration given by `schemes.threshold`
      local filename = resolvers.getreadfilename("loc",".", thirddata.url)

      -- Read the file for data
      local xmldata  = xml.load (filename)

      -- Parse XML data.to find localtime
      local time = xml.text(xmldata, "xml://timezone/localtime")
      print("DEBIG:", time)

      return time
  end
\stopluacode

\def\getCurrentTime{\ctxlua{context(thirddata.getcurrenttime())}}

\starttext
The current time is New York is \getCurrentTime.

\stoptext

当然,如果您正在运行批处理脚本来编译文件,您也可以使用您选择的任何编程语言来获取数据,但这有什么乐趣呢?

相关内容