Hatena::Groupmkdir

作業ログとかをメモする場所。

2012-12-01

Illustrator で作った図を .ai ファイルのまま LaTeX に埋め込む

| 04:22

LaTeXで図を使うにはEPSを作れ」という太古の昔からの伝承を信じて、Illustratorで作った図をわざわざEPSファイルを作って\includegraphicsしていたのだけど、よく調べたら普通にPDFを埋め込んだりもできるらしいので、「じゃあ.aiファイルもPDFとして開いたりできるんだし.aiファイルそのまま埋め込めるんじゃないの?」とか思ってやってみたらできた。

Illustratorで図を作るときの設定はだいたいこんな感じにする

http://gyazo.com/444b46e5d54ededb7c05a43685ad59e4.png

ポイントは、「単位」を「ピクセル」にしておくこと。これはあとからでも「ドキュメント設定」で変更できるけど。

そして図を作ったら、「アートボードツール」でアートボードの大きさを調整する。馴染みがない機能かもしれないけど、こういうアイコンのやつです。http://gyazo.com/c750ff4ccaa57293f63d84eb62d41de5.png

それができたら、「情報」ウィンドウでアートボードの位置と大きさを確認する(出てない場合はメニューバーの「ウィンドウ」から表示させる)。アートボードをクリックすると以下のようになるので、この数値をメモるか覚える*1。単位がpxでなかったら「ドキュメント設定」にて単位を「ピクセル」にする。

http://gyazo.com/c9edbdc10112baf174eb54597784c645.png

そして.aiファイルとして保存する。このときに「PDF互換ファイルを作成」にチェックを入れておくのを忘れないようにする。

あとはLaTeXの作業。図を挿入したいところに以下の様な感じで挿入する

\begin{figure}[htbp]
  \begin{center}
  \includegraphics[width=60mm,bb=0 0 478.07 539.196]{my_figure.ai}
  \end{center}
  \caption{キャプション} 
  \label{fig:myFigure}
\end{figure}

ポイントは、includegraphicsのオプションにbb (Bounding Box)を入れるところで、ここにアートボードの位置と大きさを入れないとうまくいかない。ebbというツールを使うと自動で計算してくれるのだけど、なんかズレたしファイルが増えるのも嫌なので手でやる。

あとはコンパイルすればうまくいった。

追記

@ さんに教えてもらったのだけど、本当ならbbの指定なしで埋め込めるはずらしい。でもなぜか手元で作業してるファイルだと上手くいかなかった。とりあえず最初はbb指定なしで埋め込んでみてだめだったら上のやり方をやってみるといいと思う。

http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?Illustrator#l3862bb1

*1Mac OS XだとIllustrator以外のアプリケーションにフォーカスした途端に消えちゃうので

JohnJohn2013/02/04 06:31That's an apt aswner to an interesting question

dnmjrgpdnmjrgp2013/02/05 15:20GK1Tt4 , [url=http://vlvoakzghdtd.com/]vlvoakzghdtd[/url], [link=http://xzgxtjurqbmm.com/]xzgxtjurqbmm[/link], http://muxflxozzgbk.com/

vesateiqvesateiq2013/02/06 20:221Y3APz <a href="http://yagddjldqgsf.com/">yagddjldqgsf</a>

2012-11-25

ランダムな文字列を生成するのに36進数を使う

| 01:26

ものすごく小ネタだけど。

ランダムな文字列を使いたいことがなぜかよくあって、for文で何度も乱数をつかって1個ずつ選ぶということをしてたのだけど、36進数を使うほうが楽だし短いことに気づいた。

以下はJavaScriptだけど、他の言語でも文字列を36進数の整数として整数にするのとその逆ができれば同じことができる。たとえばrubyだとto_i(36)とto_s(36)を使う。

Math.floor(Math.random()*parseInt('10000',36)).toString(36); //=> "b8dn"とか出てくる

これだと4文字であることが保証できないので、確実に4文字で出るようにするには以下のようにする。

Math.floor(Math.random()*parseInt('z000',36) + parseInt('1000',36)).toString(36);

文字列を長くしたり短くしたりするのは、0の数を増やしたり減らしたりすればいい。

2012-11-12

修士論文用のテンプレートを作った

| 02:58

https://github.com/ymrl/thesis-template

学部卒論では研究室の同期だった黒井さん(@)が作った卒論テンプレート のお世話になったのだけど、大学院には黒井さんがいないので修士論文用に自分で改造した。ついでにまたちょっとLaTeXに詳しくなった。

Makefile

卒論のときはTeXShopを使っていたけど、やっぱり普段使いのエディタで書きたいし、そうするとコンパイルをわざわざTeXShopでやる必要はないし、platex→pbibtex→platexplatexをいちいちやるのは面倒くさいし、先人の知恵にしたがってMakefileを作った。

PDFさえ作れればそれ以上求めるものはないので、makeするとplatex→pbibtex→platexplatex→dvipdfmxしてPDFができる。

文字コード

イマドキのpTeXにはUpTeXというのがあって、内部的にもUTF-8になっているらしい。ということはつまりEUC-JPShift_JISを使わなきゃいけない理由なんてどこにもないんだ!ということで全部のファイルをUTF-8にした。いちおうMakefileではぎりぎりUTF-8に対応したころのpTeXでも使えるように -kanji=utf8 というオプションをつけてある。

余白設定

修士論文はバインダーに綴じて提出するみたいで、オリジナルの卒論テンプレートでは片面印刷用だったのだけど、読みやすさからいったら両面印刷な気がするので両面印刷しても綴じ側の余白が広くなるようにした。

\documentclass[a4j,twoside,openright,11pt]{jreport} % 両面印刷の場合。余白を綴じ側に作って右起こし。

のところで、twosideを指定していれば両面印刷用の設定になるし、openrightを指定していれば右起こし(章の始まり等がすべて右ページで始まる)になる。

体裁

どこまで正確に従う必要があるのかよくわからないのだけど、大学院の資料修士論文の体裁が載っているのでそれに準拠したようにした。元々研究室にあったテンプレートとか、WIDEプロジェクトな人たちの論文とか見ると必ずしもぴったり体裁が大学院の求めているそれと一致していないので、わりと適当でもいいのかもしれない。

.gitignore

Gitを使うときわりとみんな.gitignore書かないけど、ゴミファイルをaddしてコミットログにいろいろ変なものが混じりこむのは気持ち悪いし、.gitignoreがあったほうがいいと思う。気軽に git add . できるほうが絶対いい。

とりあえず紛れ込みそうなものはひととおり.gitignoreに書いた。

使い方

とりあえず、

make 

コマンドさえ覚えていればPDFが作れる。

GitHubからzipで落として解凍して使うでもいいのだけど、修論を機会にgitを初めてみるのもいいと思う。作業過程を記録できるし、GitHubにpushしておけばバックアップ代わりにもなる。だいたい毎年卒論修論の提出が近づくとTwitterとかにハードディスクがクラッシュした話が流れてくる。

学生は https://github.com/edu から申請すればGitHubの有料版(Micro)がタダで貰えて、非公開なリポジトリを作れるようになるので、もらっておいて損はないと思う。非公開なら恥ずかしくないし、自分の友達とか研究室の先生だけCollaboratorsに登録しておけば勝手に校正してもらえたりするかもしれないし、お互いの進捗具合が確認しあえていいと思う。あらかじめGitHubに.ac.jpなメールアドレスを追加してから先ほどのページに行って I'm a student を選択して「Computer Human Interactionを研究してるんだけど、プロトタイプとして開発中のサービスのソースコードとか論文とかを置くのにGitHubを使いたい」みたいなことを書いたら一瞬で有料版がもらえた。たぶん機械がやってる。

あとは、Github修論用の非公開リポジトリを作って、以下のようにすればいい(はず)。

git clone git://github.com/ymrl/thesis-template.git my-thesis
cd my-thesis
git remote set-url remote git@github.com:myname/thesis.git
git push origin master

このあいだほとんどgitを使ったことがないしプログラミングもほとんど素人みたいな人と一緒にGitHubで共有しながらLaTeX論文を書いたけど、pull と add と commit と push が使えればとりあえずなんとかなりそうな感じだった。git作法としてはかなり汚いけど、論文書くくらいらこれだけでもたぶんなんとかなる。

AliAli2013/02/03 07:04Thinking like that is really amzanig

lgselllgsell2013/02/05 10:51aGFv5l , [url=http://wazyxmlagnxm.com/]wazyxmlagnxm[/url], [link=http://cndqewrfcpgn.com/]cndqewrfcpgn[/link], http://hzuovtmxdsci.com/

lsxsobwdvhlsxsobwdvh2013/02/06 00:15z1gRBi , [url=http://ravtkegpupoh.com/]ravtkegpupoh[/url], [link=http://fhfdmmwyccty.com/]fhfdmmwyccty[/link], http://djgvhbskvsqv.com/

2012-11-05

Mac OS X Mountain Lion でのpLaTeX環境構築

| 10:51

学部4年生のときにMac OS X Snow LeopardでのLaTeX環境についてまとめたのがあったのだけど、そろそろまた必要な季節になってきたのでMountain Lion版を書きます。

GhostscriptとImagemagickインストール

これは、元々Homebrewで入れていた環境をそのまま持ってきていたので書いているのですが、「Homebrewって何?」という人は次のMacTexに進んだほうがいいと思います。

Homebrewを使っている人であれば、TeXHomebrewで入れたいところですが、やろうとするとMacTeX使えと言われるので、ここではGhostscriptとImagemagickだけ入れます。

brew install ghostscript
brew install imagemagick

MacTeXのインストール

以前はDrag&Drop pTeXを使っていたのだけど、今回はMacTeXを使います。MacTeXはパッケージサイズが大きくてダウンロードがしんどいのですが、/usr/texbinというわりと普通な場所にインストールされるので、コマンドラインから使いたい人には向いているはずです。大きいファイルのダウンロードが嫌で、TeXShopやその他のGUIソフトしか使わないよ!という方は以前の記事のほうを参考にしてください。

インストール方法については2012年、Mac(Lion)とTeXと日本語と、あとhomebrew - A Way of Codeを参考にしました。ただし、この記事だとまだTex Live 2011ベースなので注意が必要です。

http://www.tug.org/mactex/アクセスして、MacTeX.pkg というリンクをクリックしてダウンロード。サイズがなんと2GBあるのでおとなしく待つ。

インストールが終わったら、しばらく「続ける」をクリック。利用許諾契約に同意すると、4.06GBを使う旨が表示されるので、

http://gyazo.com/773bde0150cbea6cbfa0f7f21da2da91.png

ここで、「カスタマイズ」を押して、パッケージ選択画面を出す。

http://gyazo.com/ff9056b11a37bba5e9c3e9a8d6868a17.png

必要なのは一番上のTeXLive-2012だけなので、これ以外のチェックを外す。ただし、上でGhostscriptとImagemagickを入れてない場合はGhostscriptとConvert-IMは入れておいたほうがいいかもしれない(よく知らない)

あとはしばらく待っていればインストールが終わる。

コマンドラインでの使用

(飛ばしてもいい)

最低限必要なものがインストールし終わったので、この時点で既にコマンドラインでの使用は既にできるようになっているはず。LaTeXの書類があるディレクトリに移動して以下のコマンドを叩けばPDFが生成されるはず

platex -kanji=euc paper # paper.texをコンパイルする。文字コードがShift_JISなら-kanji=sjisにする
dvipdfmx paper # paper.pdfを生成

TeXShopでの使用

MacTeX + TeXShop で日本語を参考にした。

ナウでヤングな若者はコマンドラインで作業できないので、GUIで全作業ができるTeXShopインストールする。

http://pages.uoregon.edu/koch/texshop/

このサイトは昔からどこからダウンロードすればいいのかわからないのだけど、右上の方に小さく「Direct Download: TeXShop 3 for Lion」という部分があるのでそこから。zipで落ちてくるので解凍してApplicationsに放り込む。

そのままだと使えないので、まずTeXShopの環境設定を開いて、左下の「設定プロファイル」から「pTeX (Shift_JIS)」「pTeX (EUC)」を選ぶ。「タイプセット」に移動して「デフォルトスクリプト」をTeX+DVIにして、さらに「内部設定」に移動して、

  • 「パス設定」を /usr/texbin に
  • TeX + dvips + distiller」の「Latex」を「simpdftex platex --mode dvipdfmx --maxpfb --extratexopts "-file-line-error -kanji=sjis" 」(EUCの書類を扱う場合はkanji=eucにする)に

この2つの設定で動くはず。メインウインドウに戻って「タイプセット」を押せばPDFを作るところまでやってプレビューしてくれる。

JosueJosue2013/02/04 02:06These topics are so confusing but this hleepd me get the job done.

AancelalulastfriendAancelalulastfriend2013/02/04 02:06That's a mold-barkeer. Great thinking!

wyglfieknwyglfiekn2013/02/05 14:57pBeYlL , [url=http://nrxdbpfmgkpg.com/]nrxdbpfmgkpg[/url], [link=http://rjbunchqesce.com/]rjbunchqesce[/link], http://wirxnfijfgwe.com/

ixkcrivixkcriv2013/02/05 21:39p1MzT8 <a href="http://xlvuixibxpre.com/">xlvuixibxpre</a>

2012-09-07

Passenger+ApacheでSinatraやRailsで作ったアプリを動かす

| 15:24

なんだかPassengerSinatraRailsで作ったアプリを動かす設定をしたりしてあげたりすることがおおいのだけど、その都度調べ直してることが多かったのでまとめます。

環境はUbuntu 12.04を標準とします。

Passengerインストール

passengergemインストール

$ sudo gem install passenger 

これだけだとApacheで動かせないので、モジュールインストールする。

$ sudo passenger-install-apache2-module 

指示にしたがってEnterを押していくと、「必要なライブラリ類が足りないからインストールしろ」と言われたり*1モジュールビルドが始まったりする。ライブラリ類をインストールしろと言われたら言われた通りのパッケージをaptとかで入れる。きのう新しく立てたUbuntuのホストでやったら以下のパッケージが必要だった。

libcurl4-openssl-dev libssl-dev zlib1g-dev apache2-prefork-dev libapr1-dev libaprutil1-dev

モジュールビルドが終わるとApacheの設定方法が出てくる。DebianUbuntuのお作法では、モジュールのロード用のファイルと設定用のファイルを分けてmods-availableディレクトリにそれぞれ保存して、a2enmodで有効化する(mods-enabledディレクトリからシンボリックリンクを張る)みたいなのでそれに従う。

まずpassenger.load

$ sudo vim /etc/apache2/mods-available/passenger.load
LoadModule passenger_module /var/lib/gems/1.9.1/gems/passenger-3.0.17/ext/apache2/mod_passenger.so

そしてpassenger.conf

$ sudo vim /etc/apache2/mods-available/passenger.conf
PassengerRoot /var/lib/gems/1.9.1/gems/passenger-3.0.17
PassengerRuby /usr/bin/ruby1.9.1

終わったらa2enmodで有効化してapache再起動する。

$ a2enmod passenger
$ sudo service apache2 restart

サイトごとの設定

たとえば、 http://hogehoge.死ぬ.jp/*2アクセスした場合にSinatraRailsで書いた(Rackの)アプリケーションが表示されるようにしたいとする。

アプリケーション本体はどこに置いてもいいのだけど、僕はわりと/var/www/サイト名 みたいなところに置いている。普通 /var/www はdefaultのサイトのDocumentRootとして It Works! みたいなHTMLが置いてあるのだけど、これは /var/www/default に移している。今回は /var/www/hogehoge というディレクトリにいろいろ置く。

var/
  +-- wwww/
  |     +-- default/
  |           +-- index.html
  +-- hogehoge/
  |     +-- public/
  |     +-- tmp/
  |     +-- logs/
  |     +-- vendor/
  |     |     +-- bundle/
  |     ...
  ...

DebianUbuntuの場合、モジュールと同じようにVirtualHostごとに設定ファイルをsites-availableディレクトリに入れてa2ensiteで有効化するという手順を踏むのがお作法っぽい。そこでとりあえず sites-available/hogehoge というファイルに hogehoge.死ぬ.jp での設定を記述する。

$ sudo vim /etc/apache2/sites-available/hogehoge
<VirtualHost *:80>
  ServerAdmin hogehoge@example.com
  ServerName hogehoge.xn--s9j219o.jp
  DocumentRoot /var/www/hogehoge/public
  CustomLog /var/log/apache2/access-hogehoge.log combined
  ErrorLog  /var/log/apache2/error-hogehoge.log
  LogLevel warn
  SetEnv GEM_HOME /var/www/hogehoge/vendor/bundle/ruby/1.9.1
  <Directory /var/www/hogehoge/public>
    Options -Multiviews
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

ここでのポイントは、

$ bundle install --path vendor/bundle
$ GEM_HOME=vendor/bundle gem install your-gem

あと、特定のディレクトリの下で(たとえば http://hogehoge.死ぬ.jp/myapp/)でRackアプリを動かしたい場合は<VirtualHost>内に以下のようにRackBaseURIを追加する。

RackBaseURI /myapp

設定が終わったらapache再起動する。これでちゃんとアプリが動けばOK。bundlerを使っている場合はbundler自身がGemfileに書かれていないとGEM_HOMEにインストールされておらずrequireできなかったりするので注意。

*1:英語で

*2日本語ドメインなので、設定するときは http://hogehoge.xn--s9j219o.jp/ というURLを使う