剥いだ布団とメモランダム.old

情報系のことをかいてゆく

LaTeXテンプレートを自動で生成するスクリプト

シェルスクリプトの練習も兼ねて、
ファイル名を引数に取って、そのファイル名でLaTeXの定型をすでに打ち込んだ状態のファイルを作るスクリプトを作ることにした。

シェルスクリプトなんて使わないと忘れてしまうけど、
書いているとやっぱり便利だなあなんて思ったりする。

やりたいこと

  • 自分でわかりやすい名前のコマンドをつくる
  • $ コマンド ファイル名 でファイル生成
  • 引数が足りないor多いでUsage出力
  • すでに同じ名前のファイルがあればエラー出力(上書き防止)
  • ファイル生成時に自分がよくつかうLaTeXの定型文が入っている

ちなみに、よくつかう定型文とはこんなかんじ。

\documentclass[12pt,a4paper]{jsarticle}
\begin{document}
\section*{}
\end{document}

大学のノートはその日のその授業ごとにファイルを分けてLaTeXで書くので、
このフォーマットが自分の中では定番になってる。
今回はこいつを出力させたい。

スクリプト

で、こんなふうに書いてみた。
~/Scriptsディレクトリを作って、そこへlatexTemplate.shという名前で置いた。

#!/bin/bash
if [ $# -ne 1 ]; then
	echo "Usage: $0 filename" 1>&2
	exit 1
fi
if [ -f $1 ]; then
	echo "$1 have already existed." 1>&2
	exit 1
fi
echo "\documentclass[12pt,a4paper]{jsarticle}
\begin{document}
\section*{}
\end{document}" > $1
exit 0

一応、備忘録的に忘れそうなとこだけメモっておくと、
$#でコマンドライン引数の数を参照
$0で0番目(つまりこのスクリプトのファイル名)の引数を参照
-neはノットイコール
1>&2は標準エラー出力
-fはそのファイルが存在していればtrue

これをbashからささっと使えるようにする

このままだと、いちいちこのスクリプトのあるディレクトリとファイル名を打たなきゃいけないので、これをbashでコマンド化する。
~/.bash_profileを編集する。(Mac OS Xでは.bashrcではない)

alias mktex='~/Scripts/latexTemplate.sh'

これでaliasも設定できて、他のコマンドと同じように使える。
使いたいときは、

$ mktex filename.tex

と打ってやればok。

aliasって便利だよね

aliasは覚えておいて損はないよねえ。
今回扱ったもの以外にも例えば

$ alias ll='ls -l'

っていうllで権限とかまで表示するように設定してたりしてる。
(これは結構メジャーなやつかな)