| ||||||||
adm | Find | login register |
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
| |||||||||||||
想深入的朋友請參考: http://www.tug.org/tugboat/Articles/tb22-3/tb72story.pdf
http://www.adobe.com/devnet/acrobat/pdfs/AcroJSGuide.pdf
不過,那個大部頭的書,大概不會有人真的去讀完吧?通常是有需要時再來查,主要是看有什麼物件可以用,和 HTML/web 不一樣。 edited: 1
| |||||||||||||
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 | |||||||||||||
Hi, Danai. Welcome! :)
I'm afraid, no. You need acroread. |
| ||||||||
adm | Find | login register |