読者です 読者をやめる 読者になる 読者になる

Diary over Finite Fields

515ひかるが書き溜めたメモとコラムと雑記

tex の環境を色々と整えた話。

LaTeX

いろいろやりました。
とりあえず流石にもういいかなってところまできたのでそろそろ何したのかをまとめようかと思います。

ぶっちゃけ、 tex の補完などは全部yatex任せなので特に何も加えておりません。

やりたかったこと(実現したこと)をまとめておきます。

1. 使用エディタは emacsyatex を使っている
2. emacs からタイプセットをして、プレビューもしたい。
2. .tex , .aux, .pdf, ファイルは保存し、他の人たちはタイプセットするごとに自動で消したい。
3. .tex, .pdf はバックアップディレクトリとして別の場所に保管したい。
4. .pdf ファイルは ./pdf ディレクトリを作り移動したい(.tex ファイルと同じディレクトリにあるのがいや)
5. .aux はバックアップのみでよい


これくらいは目標に、色々とシェルスクリプトばかり書いてみました。

OS は ubuntu14.04
tex ディストリビューションはtexliveです。

まずは ~/.emacs.d/init.el の抜粋

;; command 類の定義
(add-hook 'yatex-mode-hook
  '(lambda ()
    (setq tex-command "~/tools/em-latexmk.sh") ; 自作
    (setq dvi2-command "~/tools/em-evince.sh") ; これも自作(簡単だけど)
    (setq tex-pdfview-command "evince") ; viewer コマンド
 )
)

実際にはもう少しあるけれど、要するに \C-c C-t j すると上の em-latexmk.sh が稼働して、
ビューワーは evince ってことです。このevince を起動するときに小細工しているのか ~/tools/em-evince.sh

僕は自作シェルスクリプトを基本的に ~/tools/ 直下に置いているのでこうしています。パスを通しているけれどなんとなく…

さて、 em-evince.sh の中身は簡単。

#!/bin/bash
evince ./pdf/$1

カレントディレクトリにあるpdf/以下の引数の.pdf を開け。という指示。
実は、 em-latexmk.sh で mkdir pdf && mv .pdf ./pdf/ という指示を出しているので、 こういう小細工をしています。
別にカレントディレクトリにtexファイルとpdfファイルが共存していてもいいという人はこんなことしなくてOK.

さて、 em-latexmk.sh は実は latexmk と ふたつの自作スクリプトからなります。めんどくせぇ。。。

#!/bin/bash

latexmk -bibtex $1 #説明省略
delete_typeset_files.sh $1 #自作
cp_pdf_and_tex.sh $1 #自作

ということで中身を見ていく。
delete_tyoeset_files.sh は実はこの前記事に載せたものとほぼ同様なので省略。

#!/bin/sh
## 絶対パスを取得する
path=$1
dir=$(cd $(dirname $path) && pwd)
file=$(/usr/bin/basename $path)
abs_path=$dir/$file
file_name=${file%.*}
file_ext=${file##*.}
pdf_file=${file_name}.pdf
if [ $file_ext = 'tex' ]; then
	backup_dir=~/Desktop/doc/$file_name
    # backup_dir がなければつくる
	if [ ! -d $backup_dir ]; then
		mkdir $backup_dir
	fi
	# バックアップをとる
	cp  $abs_path $backup_dir/$file
	cp  $dir/$pdf_file $backup_dir/$pdf_file
	mv  $dir/${file_name}.aux $backup_dir/${file_name}.aux

        # ./pdf/ がなければ作る
	if [ ! -d ./pdf ]; then
		mkdir ./pdf
	fi
	mv $dir/$pdf_file ./pdf/
else
	echo このスクリプトはtexファイルのバックアップを目的として作られています。引数は.texファイルを指定してください。
fi

基本的にはcp してるだけです。

これで たとえば test.texEmacs 上で \C-c \C-t j をすると、

~/Desktop/doc/test/ ディレクトリと ./pdf/ が作られ、
カレントディレクトリには test.tex
./pdf/ には test.pdf
~/Desktop/doc/test/ には test.tex, test.pdf, test.aux

が自動で作られます。楽ですね。

全く解説していないけれど疲れた。