| adm | Find | login register |
| 本人已不在此站活動 joined: 2007-09-19 posted: 4946 promoted: 325 bookmarked: 206 歸隱山林 |
LaTeX 中排版時間日期或時鐘,通常都是靜態的,畢竟 LaTeX 本身是一個平面排版系統,在很多情形下要印刷至紙本上的。 通常要排版時間日期標誌,可以使用 datetime 或 clock package 來排版。但這些當然都是靜態的。近年來的 TeX/LaTeX 輸出,漸漸的以 PDF 格式為常,於是一些花樣就出來了,畢竟電子版的書現在已為大眾普遍接受。 PDF 格式可以嵌入 JavaScript,這可以做一些動態版面的處理,例如,即時時鐘之類的。本文就是想探討即時時鐘要怎麼達成。也就是說 JavaScript 要怎麼嵌入 PDF 檔裡頭。
但這些 JavaScript 並不是一般的 web JavaScript,基本語法差不多,但物件就差異頗大,無法把 web JavaScript 完全不修改就用在 PDF JavaScript。PDF 界面畢竟和 web 界面是不同的。而且,你要使用支援 JavaScript 的 PDF 瀏覽器,例如 acroread。 powerdot class 有很方便的選項(clock=true)來排版即時時鐘,畢竟即時時鐘是用在 presentation 時較有意義存在。 如果不是簡報型式的話,要嵌入 JavaScript,我們可以使用 insdljs package。但要在 PDF 格式呈現,則需要一個 form 容器,所以我們可以使用 eforms package,eforms package 會事先載入 insdljs 及 hyperref 兩個 package。以下是一個簡單的例子:
\documentclass[pdftex,12pt]{article}
\usepackage[bookmarks=false,pdfstartview=FitH]{hyperref}
\usepackage{eforms}
\begin{insDLJS}{x}{}
function CLOCK(){
d = util.printd("yyyy.mm.dd, hh:MM:sst", new Date());
this.getField("TIME").value = d;
this.getField("TIME").readonly = true;
}
t = app.setInterval("CLOCK()",1000);
\end{insDLJS}
\newcommand{\JClock}{%
\textField[\BC{0 0.4 0}\BG{0 0.4 0}%
\textSize{10}%
\textColor{1 1 1 rg}]%
{TIME}{9em}{2ex}}
\begin{document}
\section*{Clock Test}
Here is a digital clock test. \JClock
\end{document}
實際的 PDF 可以在此下載:
edited: 3
| |||||||||
| 本人已不在此站活動 joined: 2007-09-19 posted: 4946 promoted: 325 bookmarked: 206 歸隱山林 |
想深入的朋友請參考: http://www.tug.org/tugboat/Articles/tb22-3/tb72story.pdf
http://www.adobe.com/devnet/acrobat/pdfs/AcroJSGuide.pdf
不過,那個大部頭的書,大概不會有人真的去讀完吧?通常是有需要時再來查,主要是看有什麼物件可以用,和 HTML/web 不一樣。
edited: 1
| |||||||||
| guest |
Looks cool. However, on Linux I have tried evince and gv, and neither supports JavaScript. Is there a PDF viewer on Linux that works (apart from AcroRead)? Best regards
Danai Sae-Han | |||||||||
| 本人已不在此站活動 joined: 2007-09-19 posted: 4946 promoted: 325 bookmarked: 206 歸隱山林 |
Hi, Danai. Welcome! :)
I'm afraid, no. You need acroread.
|
| adm | Find | login register |