TeX で PDF 用外部アプリケーション起動ボタンを作る

そんなことができるのかと思ってやってみたらできた.

ただしこの例だと texコンパイルしないといけないので,勢いで platex 用にマクロを作ってみました.

\documentclass{jarticle}
\makeatletter
\newcommand{\extapp}[5][]{%
\special{pdf: ann width #2cm height #3cm
<< /Type /Annot /Subtype /Link
   /Border [0 0 #4]
   /A
   << /Type /Action
      /S /Launch
      \if#1w/Win << /F (#5)\else/F (#5)\fi
      >>
   >>
>>}
}
\makeatother
\begin{document}
Click the squares below to launch external applications.
C:/windows/system32/winmine.exe (for Windows)
\vspace{1cm}
\extapp{1}{1}{2}{C:/windows/system32/winmine.exe}
\%WINDOWS/system32/winmine.exe (for Windows)
\vspace{1cm}
\extapp[w]{1}{1}{2}{winmine.exe}
/usr/local/bin/xdvi (for UNIX/Linux)
\vspace{1cm}
\extapp{1}{1}{2}{/usr/local/bin/xdvi}
\end{document}

このマクロ \extapp

\extapp[set "w" here to use the %WINDOWS folder]{box width}{box height}{line width}{/path/to/command}

といった感じで使います.オプションで w を指定すると %WINDOWS フォルダをパス内で省略可能.コマンドのパスのデリミタはバックスラッシュや円マークでなくてスラッシュ「/」にしてください.

platexコンパイルし,dvipdfm で PDF にします.dvips は多分使えない.パスにスラッシュが入ってると,

[1
Unparsed material at end of special ignored...
Current input buffer is -->>><--
]

みたいな warning が出ますが,無視してください(激ぉ



以下がサンプル.PDF 文書内の四角をクリックするとマインスイーパや xdvi が起動します (まともな PDF ビューアなら一応事前に確認を取るためのダイアログボックスが出るはず.念のため,「以後,このメッセージを表示しない」をチェックしないようにして下さい).

VBA マクロと同様,安全性には十分に注意しないといけないが,うまく使えば便利かも知れない.何かいいアプリケーションがありそうだが,思い付かん….



追記: ウェブブラウザ内で PDF を開いた場合./Win を使った方法 (2 番目の四角) しか使えないっぽいですね (Firefox 2.0.0.6,IE 6.0 で確認) .1 番目の四角は「ファイルのダウンロード」になってしまう.PDF をダウンロードして直接 Acrobat Reader で開くと 1 番目の四角も有効のようです.