マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

TeX で Windows をシャットダウンする件について

2012/12/01 〜 2012/12/25

TeX & LaTeX Advent Calendar

←@egtra さん(12/17)|(12/19)@neruko3114 さん→

残念ながら、18 日目の担当が登録されなかったので、再び私(ZR)が担当します。

*  *  *

LaTeX で文書を作成している時に、今使っている PC をシャットダウンしたくなった、というのは (La)TeX ユーザの多くが経験していることでしょう。*1しかし、シャットダウンは文書を構成する要素と見做されていないせいか、LaTeX にはマシンをシャットダウンする命令は用意されていません。その上、CTAN を漁ってみても、シャットダウンする機能を提供するパッケージは、未だに誰も作っていないようです。これでは、PC をシャットダウンする LaTeX 文書を作成しようとした時に途方に暮れることになりそうです。

というわけで、作ってみました。

ただし、シャットダウンの処理は使用する OS に依存するので、このパッケージは Windows 専用*2となっています。処理系は LuaLaTeX(または plain LuaTeX)に限ります。

インストール

例えば W32TeX を C:\usr\local にインストールしている場合、アーカイブに含まれるファイルを次の場所にコピーした後、(ls-R を使う運用をしている場合は)mktexlsr を実行してください。*3

  • tcshutwindown.sty → C:\usr\local\share\texmf-local\tex\lualatex\tcshutwindown\
  • shutwindown.dll → C:\usr\local\bin\lib\lua\

なお、shutwindown.c は上記の shutwindown.dll のソースですが動作には必要ありません。(コンパイルには Visual Studio が必要。*4)

使い方

LuaLaTeX 文書のプレアンブル中に次の記述を行います。

\usepackage[grace=<æ•´æ•°>]{tcshutwindown}

ここで <整数> にはシャットダウン開始までの猶予時間を秒単位で指定します。(オプションの記述は必須。)

使用例
[test-tcshutwindown.tex]
\documentclass[a4paper]{article}
\usepackage[grace=10]{tcshutwindown}
\begin{document}
Welcome to Lua{\TeX} world!
\end{document}

コマンドプロンプトでこの文書を lualatex でコンパイルすると以下の表示が出て Windows のシャットダウンが開始されます。

C>lualatex test-tcshutwindown.tex
This is LuaTeX, Version beta-0.70.2-2012052919 (TeX Live 2012/W32TeX)
 restricted \write18 enabled.
……(中略)……!!!!!!!!WARNING!!!!!!!!

System will be shutdown in 10 seconds...
System will be shutdown in 5 seconds...
System will be shutdown in 4 seconds...
System will be shutdown in 3 seconds...
System will be shutdown in 2 seconds...
System will be shutdown in 1 second...
System will be shutdown right now...
FAREWELL!
(→シャットダウン開始)

そういう訳で、文書の組版と PC のシャットダウンとで別々の操作を行う必要がなくなりました。世の中が少しだけ便利になった感じがしますね。

*1:異論はクリスマスまで保留しておくことにしよう。

*2:現在製品サポートが続けられているバージョンに限る。

*3:Windows 上の TeX Live の場合のインストール手順は README ファイルを参照。

*4:ただし数万円から数十万円以上する専門的な有償版を入手する必要はなくて Express Edition で十分である。