※ 本記事は2022年に書いた記事を更新したものです.少々情報が古いかもしれません.
はじめに
LaTeX で論文や資料を作成していると,「ビルドが終わるまで何度も画面を確認してしまう…」そんな経験はありませんか?
特に,図表や数式が多い大規模なプロジェクトでは,ビルドに数十秒〜数分かかることも珍しくありません.
本記事では,VSCode(MacOS)の LaTeX Workshop でビルド完了時に自動で通知を出す方法を,実用的な観点から丁寧に解説します.
この記事で得られること
- ビルド完了を見逃さず,作業効率を向上できる
- Mac の通知センターを活用したスマートなワークフロー
- 設定のカスタマイズや応用例も紹介
本記事の内容で通知を行った結果(右上)
なぜ「通知」が必要なのか?
LaTeX のビルドは,ちょっとした修正でも意外と時間がかかります.
その間,エディタやターミナルを何度も見に行くのは非効率ですよね.
通知を活用すれば,
- 他の作業に集中できる
- ビルド完了を確実にキャッチできる
- エラー時のアラートにも応用可能
といったメリットがあります.
実現のアイデアと全体像
VSCode の LaTeX Workshop には,ビルド時に任意のコマンドを実行できる「ツール」機能があります.
ここでは,Mac 標準の osascript
コマンドを使い,ビルド完了時に通知を出す仕組みを組み込みます.
ステップ1:通知コマンドの動作確認
まずはターミナルで,下記コマンドを実行してみてください.
osascript -e 'display notification "ビルドが完了しました!" with title "LaTeX Workshop"'
右上に通知が表示されれば準備OKです.
通知結果(右上)
ステップ2:LaTeX Workshop の設定
VSCode の settings.json
に,通知用ツールを追加します.
latex-workshop.latex.tools
に以下の設定を追記してください.
"latex-workshop.latex.tools": [
{
"name": "notify", // 通知用のツール
"command": "osascript",
"args": [
"-e",
"display notification \"TeXファイル(%DOCFILE_EXT%)のビルドが完了し,%OUTDIR% に保存されました!\" with title \"LaTeX Workshop\""
]
},
// ...他のツール設定
]
ポイント
name
は分かりやすくnotify
などにしましょう.args
の通知メッセージやタイトルは自由にカスタマイズできます.
ステップ3:レシピに通知ツールを組み込む
ビルドレシピ(latex-workshop.latex.recipes
)に,先ほど定義した notify
ツールを追加します.
通常のビルドツールの後に notify
を並べることで,ビルド完了時に通知が出ます.
"latex-workshop.latex.recipes": [
{
"name": "with-notify",
"tools": [
"pdflatex", // 例:ビルド用ツール
"notify" // 通知用ツール
]
},
// ...他のレシピ
]
Tips
- 既存のレシピに
notify
を追加するだけでもOKです.- 複数のビルドツールを組み合わせる場合も,最後に
notify
を入れると便利です.
おまけ:通知音でさらに快適に
通知だけでなく,音でもビルド完了を知らせたい場合は,Mac 標準の afplay
コマンドを使う方法もあります.
"latex-workshop.latex.tools": [
{
"name": "bell",
"command": "afplay",
"args": [
"/System/Library/Sounds/Hero.aiff" // 任意の音声ファイル
]
},
// ...他のツール設定
]
レシピに bell
を追加すれば,ビルド完了時に通知音が鳴ります.
補足・注意点
- MacOS専用
osascript
やafplay
は MacOS 固有のコマンドです.Windows や Linux では動作しません. - 通知内容のカスタマイズ
メッセージやタイトルは自由に編集できます.用途に応じて工夫してください. - エラー通知への応用
ビルド失敗時にのみ通知を出す設定も可能です.詳細は LaTeX Workshop の公式ドキュメントを参照してください.
まとめ
LaTeX のビルド完了通知を活用すれば,作業効率が大きく向上します.
「ビルド待ちのストレス」から解放され,より快適な執筆環境を手に入れてみませんか?