fc2ブログ
PythonからTeXをコンパイル
20年ほど前、学部の卒業論文を書くために初めてつかってTeXですが、こんなおっさんになっても、世話になっているなんて、当時は想像も出来ませんでした。

まあ、それはいいとして、TeXはちょっとコンパイルが面倒なので、MAKEファイルを作るのがいいです。

ただ、Pythonとか他の環境から、TeXをコンパイルしたいなーと思うこともあるかも知れません。通常TeXはエラーがあると、OSシェルからインタラクティブにユーザーに対して対応方法を聞いてきますが、Pythonからコンパイルしている時は、面倒なので、成功か失敗かを教えてくれると便利です。

そんな時使えるのが、-halt-on-errorオプション。コンパイル中にエラーが起こると、そこで処理を中断します。Pythonから使うイメージは、こんな感じでしょうか?


import subprocess
args = ['platex', '-halt-on-error', 'tex_doc']
ret = subprocess.call(args)
print(ret)


異常終了だと、retが0ではない数字になるので、その後の処理を分岐できます。

向こう5年で、3人くらいの人にしか役に立たなそうな記事だし、そのうちの1人は、忘れて、検索して、自分のブログに辿り着く私な気もしますが、ネットに書いておくとあとで探せるので便利です。


スポンサーサイト



【2016/07/17 12:45】 | プログラミング全般 | トラックバック(0) | コメント(0) | page top↑
Sublimeと恋に落ちられるか?
学生時代、研究室で使っていたときから数えると、20年くらいEmacsを使って来ました。途中、秀丸さんにお世話になったときもありますが、それも2年くらいなので、Emacs人生長いです。

しかし、最近、日本語を入力していると、変換を確定した瞬間に、たったいま入力した文字列が消失するという謎のエラーに見舞われるようになり、ちょっとストレスだなーと思っていました。思えば、Carbon Emacsではなくなった頃から、調子がおかしくなり始めたなーと思ったりしましたが、今回話題のSublimeへ乗り換えを検討してみることにしました。

まあ、とは言っても、Emacsキーバインドから抜けられる訳はないので、まずはPackage Controlをインストールしたあとに、SublemacsProを設定。

まあまあEmacsキーバインドを再現してくれますが、Ctrl-X,Ctrl-Fが効かないなーと思っていたら、Projectにフォルダを追加する必要がある模様。Projects-Add Folder to Project...で設定できます。

最近Sphinxでドキュメントを書くことが多いのですが、デフォルトのカラースキームが今一つ。
そこで少し探して、これを入れてみました。結構いい感じです。

少しずつ慣れてきてはいますが、まだまだ問題が噴出。特にバッファを切り替えるとき、IMEがONだと、「Ctrl-X お」ってなって、Emacsのインラインパッチあてたくなる。
ただ、Pythonのソースコード書いている時は、かなり便利。これまで、入力補完なんて、使うヤツは甘すぎると思ってましたが、歳とってきたので、少しは楽をしてもいいかなと最近思いはじめました。近代的なエディタはすごいです。まるで、浦島太郎。まだ、恋には落ちてませんが、Pythonでカスタマイズできることもあり、Sublime少し使ってみようかと思います。

【2015/10/30 19:14】 | プログラミング全般 | トラックバック(0) | コメント(0) | page top↑
HaskellをMacにインストール
ちょっとインストールしてみようと思っただけなのに、プチ嵌まり。
Macに入れるなら、ここからパッケージをダウンロードしてインストールすれば良いはずなんですが、

~$ ghci
GHCi, version 7.8.3: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... : can't load .so/.DLL for: libiconv.dylib (dlopen(libiconv.dylib, 9): image not found)

なんで?と思い、探してみると、/usr/lib/libiconv.dylibはちゃんとある。
カレントディレクトリを/usr/libに移すとちゃんと起動する。というわけで、
/Library/Frameworks/GHC.framework/Versions/7.8.3-x86_64/usr/lib/ghc-7.8.3/ghc-7.8.3$
に行って、
ln -s /usr/lib/libiconv.dylib libiconv.dylib
としてみた。
なんか、違うような気もするけど、動いてればいいかという感じで。
【2015/05/19 12:22】 | プログラミング全般 | トラックバック(0) | コメント(0) | page top↑
簡単なTex用のMakefile
そのまま実行するとmain.texをコンパイルしてPDFを作ります。main.texの中に別のソースがincludeされていてもOK。


.SUFFIXES: .tex .dvi .aux .log .toc .lof .lot .pdf .ps
F=main

all: $F.pdf

pdf: $F.pdf
ps: $F.ps
dvi: $F.dvi

$F.dvi: *.tex
$F.pdf: $F.dvi
$F.ps: $F.dvi

.tex.dvi:
platex $<
platex $<
platex $<
.dvi.pdf:
dvipdfmx -d 5 $<
.dvi.ps:
dvips -Ppdf -o $@ $<
clean:
rm -f *~ $F.dvi $F.aux $F.lof $F.toc $F.lot $F.log $F.pdf $F.ps

テーマ:プログラミング - ジャンル:コンピュータ

【2012/05/27 15:00】 | プログラミング全般 | トラックバック(0) | コメント(0) | page top↑
mercurialとbitbucketを使ってみた
分散型のバージョン管理システムと言うと、Linuxのソースコード管理に使われているGitが有名です。また、広く使われているホスティングサービスとしては、GitHubがあります。ちょっとしたプログラムのバージョン管理やソースの公開には、これらのソフトウェアやサービスがとても便利だと思っておりましたが、Python使っているんだったら、やはりmercurialとbitbucketでしょー、ということで今回これらを利用してみることにしました。

mercurialは、Pythonで作られた分散型のバージョン管理システムです。中央に管理サーバーがなくても利用できることや動作が軽快なところが売りのようです。また、使いやすさも強調されていますが、たしかに少し使ってみた感じではかなり使いやすいです。まあGitよりmercurialのほうが愛があるという話もありますが。mercurialをインストールしたら、管理したいソースコードが入っているディレクトリへ移動して、

$ hg init

とします。
.hgなる管理用のディレクトリが作成されますので、次に履歴を記録したいファイルを追加して、commitします。

$ hg add scripts.py
$ hg commit

viが起動してコメントを入力すれば完了です。-mオプションでコメントをコマンドラインから指定することも可能です。ちなみに、MacOSXでは最初「ユーザー名がわからない」旨のエラーが出ました。その場合は、ホームディレクトリに.hgrcを作成し、このなかにユーザー名等を記述します。起動するエディタなどさまざまな設定がこのファイルで出来るようです。

bitbucketは、mercurialを使っている方々に便利なコードホスティングサービスです。githubとものすごくサービスが似ているので、乗り換えても、一瞬どっちのサイトにいるのかわからなくなるほど操作性に違いはありません。ひとつだけgithubにあってbitbucketに無いサービスとしてこんな感じのプロジェクト紹介用の静的なWebページの作成機能があるように思えたのですが、ちょっとした裏技を紹介してくれている人がいます。世の中すごい人が多いです。

参考文献としては、日本語唯一のmercurial解説書だと思われる以下の書籍が秀逸です。最初はstep by stepで使い方を解説してくれて、本の中盤からはちょっと高度な利用法がわかります。しばらく、mercurialでローカルのファイルの管理をしてみようと思います。


入門Mercurial Linux/Windows対応入門Mercurial Linux/Windows対応
(2009/01)
藤原 克則

商品詳細を見る

テーマ:プログラミング - ジャンル:コンピュータ

【2011/09/03 15:06】 | プログラミング全般 | トラックバック(0) | コメント(0) | page top↑
| ホーム | 次ページ