PDFをEPSに一括変換する

2011/12/19未分類import
次のコマンドをバッチファイルとして記述し,実行すると良いです.
TeXにPDFの図を取り込む際に威力を発揮します.
ただし,gswin32cをインストールしておかないといけません(TeXがインストールされれば普通は入っていますが).
for %%A in (%1) do gswin32c -q -sDEVICE=epswrite -sOutputFile="%%A".eps -dNOPAUSE -dBATCH -dSAFER -dEPSCrop "%%A"

図のcaptionを再定義する

2011/11/08未分類import
TeXの図や表のcaptionは書式を大きく変更するのには不便な仕様になっている.
なので次のようなコマンドを定義してみました.
\newcommand{\parcaption}[2]{
\addtocounter{figure}{1}
{\bf 図 \arabic{chapter}.\arabic{figure}}\parbox[t]{#1zw}{\rule{0pt}{2.5ex}
\quad#2\rule[-0.5zh]{0pt}{2.5ex}}
}
使い方は次のようになります.つまらないマクロですが,意外と便利です.
\begin{figure}[htbp]
\begin{center}
\includegraphics[width=35zw,bb=0 0 1024 768]{figure/IMGP0000.jpg}
\parcaption{25}{ああああああああああああああああああああああああああああああああああああ}
\label{aaaaa}
\end{center}
\end{figure}
さすが自分で適当に書いたパッケージ.
カウンタが正常に動かなかったり,参照できなかったりしますので次の方法の方が良いでしょう.

captionパッケージの使用

そんなパッケージがあるなんて知りませんでした.
このコマンドを簡単かつ自由に書式設定できるようにしてしまうマクロがcaptionパッケージなのです.
CTANというサイトのcaptionパッケージのある場所からinsファイルとdtxをすべて落として,
一つのフォルダに放り込み,platex caption.insと叩くとstyファイルが出来ますので,
それらをTeXの文書のあるフォルダに入れればインストール完了です.
プリアンブルに
\usepackage[hang,small,bf]{caption}
と書き,\captionの前に
\captionsetup{margin=90pt}
などと書けば完璧です.もっと早くに知っておくべきでした.

hyperrefは読み込ませる順番に気をつけましょう

2011/11/04未分類import
今まで私の作成していたtexファイルを使ってコンパイルしたdvi・pdfファイルではjpeg,pngなどの通常の画像ファイル読み込みが行われず,正常なファイルを出力できなかった.
このときdvipdfmxを走らせると次の一文を含むエラーを吐き出す.
Unparsed material at end of special ignored.
これはdviをpdfに変換すると画像出力されないと同じ症状だが,同じ対策をしても改善しなかった.
別の理由によるものらしいが,解決策が見つからなかったので1年以上放置していた
(EPSは正常に出力されるので,jpgやpngをepsに変換して使っていた).

そして,今日やっと気がついた!
hyperrefが悪さをしていたようだ.hyperrefとgraphixパッケージの読み込み順序を
「graphix→hyperref」から「hyperref→graphix」に変えただけで何事もなかったかのようにjpgやpngを使えるようになった.めでたしめでたし.
hyperrefはお行儀の悪いプログラムのようですので*1,皆さんお気をつけください.

また,Windows環境でdvioutを使っている人がjpgやpngを使いたい場合はsusieのプラグインをdvioutのインストール先に放り込まないと実現できません.

*1 : ただし,個人でpdf文書を作るときはすばらしい機能を付加してくれるので大変有用です.

ちょっと前にddで消した行を呼び出す

2011/10/05未分類import
ddやyy等で切り取り,コピーした行はvimに番号を振られて保存されています.
1つ前にddで削除した行を呼び出したい場合,
"2p
とコマンドモードで入力するとできます.
この数字は新しくddやyyなどを使うごとに流れていきます.

また,頻繁に使うものに関してはアルファベットを振って記憶させることが可能で,対象文字列を選択した後,
"ay
などと打てばaという名前でその文字列が記憶されます.
ちょっとした際に便利なコマンドです.

指定した間隔で行頭へ文字列を挿入する

2011/10/05未分類import
23行目から35行目までの範囲で,24行目から5行ずつ\tcc\tという文字列を行頭に挿入.
:23,35g/^/ if (line('.')- 23)%6|s/^/\tcc\t/
あるいは明示的に0以外と書きたければ
:23,35g/^/ if (line('.')- 23)%6>0|s/^/\tcc\t/
これを削除にしたければ,パイプ以下をdとする.
:23,35g/^/ if (line('.')- 23)%6|d
要は,計算式「(line('.')- 23)%6」が0でない場合に処理を行うという操作です.
ただし,このdを使ったコマンドは失敗することがあるようなので,
行頭などにフラグの文字列を一度入れて,改めてその行を削除するのがより確実だと思います.
:23,35g/^/ if (line('.')- 23)%6|s/^/delete/
:23,35g/delete/d