2011年5月22日日曜日

Mac OS X Server 上の MediaWiki で TeX を使う設定

MacOS X Snow Lepard Server にインストールした MediaWiki で TeX を有効にする設定に意外と手間取ったので情報をメモしておきます.思い出しながら書いているので漏れがあるかもしれません.


  1. MacPorts で必要なソフトをインストール
    MacPorts を使って必要なパッケージをインストールします.MacPorts のインストールには Xcode が必要なので,もしまだ入れてなければサーバーのディスクからインストールします.必要なパッケージはpTeX, ghostscript, ImageMagick, OCaml です.具体的に入力するコマンドは

    $ sudo port self-update
    $ sudo port install pTeX +utf8
    $ sudo port install ocaml
    $ sudo port install ghostscript
    $ sudo port install imagemagick

    という感じだったと思います.
  2. texvc のコンパイル
    次に,(MediaWikiのインストールディレクトリ)/math/ にある texvc をコンパイルします.その際,そのままコンパイルすると texvcが tex等のパスを得られないので, math/render.ml に記述されているコマンドを部分を絶対パスを含むように編集します.具体的には

    let cmd_dvips tmpprefix = "dvips ・・・
    let cmd_latex tmpprefix = "latex ・・・
    let cmd_convert tmpprefix finalpath = "convert ・・・・
    let cmd_dvipng tmpprefix finalpath backcolor = "dvipng ・・・
    

     の4行を

    let cmd_dvips tmpprefix = "/opt/local/bin/dvips ・・・
    let cmd_latex tmpprefix = "/opt/local/bin/latex ・・・
    let cmd_convert tmpprefix finalpath = "/opt/local/bin/convert ・・・・
    let cmd_dvipng tmpprefix finalpath backcolor = "/opt/local/bin/dvipng ・・・
    
    
    のように書き換えます.修正が済んだら make で texvc をコンパイルします.
  3. MediaWikiの設定
    最後に LocalSettings.php で

    $wgUseTeX           = true;

    としてTeXを有効にし,imagesディレクトリの読み書きができるようパーミッションを設定して完了です.

2011年3月1日火曜日

PDF を生成したとき txfonts を使った TeX 文書でフォントが変わる問題の対処法メモ

txfonts.sty は TeX で Times 風のフォントを使うパッケージで良く用いられています.

このパッケージを Windows の TeXインストーラ3 な環境で使ったときに dviout では
のように出力されている数式が dvipdfmx 等で PDF に変換したあと
のように変化して添え字や他の記号との位置関係がおかしくなることがあります.この現象は PDF 生成時に Times の代替フォントとして Times New Roman が使われ,字形が微妙に変化するために起こるそうです. dviout で使われている ghostscript 付属の Times 代替フォントを PDF でも同様に用いたい場合,
(TeXのインストールディレクトリ)\share\texmf\dvipdfmx\config\dvipdfmx.cfg
の末尾に
f  txr2.map
という行を追加すれば PDF でも dviout と同様の出力が得られます.

2010年11月16日火曜日

TeXで複数のAppendixを出力する方法

本のような長い文書の場合,章ごとに付録を付けたい場合があります.標準の TeX でこれを実行するのは面倒ですが,便利なスタイルファイルがあることを知ったのでメモしておきます.
必要なスタイルファイルは appendix.sty で


からパッケージをダウンロードできます.コンパイル済みではないので,texmf の配下にファイルを配置して
$ latex appendix.ins
$ mktexlsr
といったコマンドを実行する必要があります.

典型的な使い方は
\usepackage[titletoc,title]{appendix}
% :
\chapter{My Idea} % 1つめの章
% :
\section{Analysis}
% :

\begin{subappendices} % 1つめの章の付録
\section{Proofs}
% :
\end{subappendices} % ここまでが付録

\chapter{Other Idea}  % 次の章
% :

のようになり,この場合出力される文書・目次は
1 My Idea
   1.1 Analysis
   Appendix 1.A Proofs
2 Other Idea
のような構造になります.他にも
\begin{appendices}
% この中身は章・節の配下ではなく文書直下の付録になる(多分)
\end{appendices}
といった環境や,様々なオプションがあるので詳しくはパッケージについてくるドキュメントを参照してください.

2010年11月7日日曜日

MATLABでサイズを指定してイメージファイルを出力する方法

MATLABの図を画像ファイルとして出力する場合,デフォルトでは印刷時と同様に適当なサイズの画像が保存されます.

しかし,プレゼン用画像の作成などでサイズを1024×768といった特別な値にしたい場合がしばしばあります.毎回やりかたを忘れて苦労するので,ここに方法をメモしておきます.


figure の PaperPositionMode を auto に設定し,print コマンドで '-r0' を付けるのがポイントのようです.ファイルを出力する際に幅が1ピクセル増える現象が発生しますが,バグなのか仕様なのか常に再現するのかもよく調べていません.バージョンによって挙動が異なる可能性もありますので注意してください.

2010年10月26日火曜日

RenameSheet - Excelでファイル名一括変更

ファイル名を Excel のシート上で操作してリネームすることが出来ます.Excel のスプレッドシートなので
  • 連番を振る
  • 連番を逆にする
  • 作成日などをファイル名に加える
  • 作成した順に連番を振る
  • etc...
といった操作がいとも簡単にできることが特長です.下は連番の形式を変更している動画です.




次の動画はファイルの最終更新日を元にファイル名をリネームしている様子です.




このように高度な規則に基づいたリネームも Excel を使えば楽々です.

  • 逆再生動画の作成
  • デジカメ写真などの整理・連番化・日付によるラベリング

等で需要がある気がしたので一応ダウンロードできるようにしておきます.

このソフトは Excel 2010 のマクロ(VBA)で作ってあります.Excel でマクロを書くのは初めてなのでよくわかりませんが,他環境では動作しないかもしれません.
また,このソフトの使用によって生じた結果に関して一切の責任を負うことは出来ません.一応ファイルを操作するソフトなので,万全のバックアップ・テストを行い,自己責任でご利用ください.

反応できるかはわかりませんが,要望質問などがありましたらコメント欄かメールでお願いいたします.

2010年10月10日日曜日

こんなポータブルDVDドライブが欲しい

僕が参加する学会の資料はCD配布の場合が多いのですが,CDドライブがあるノートPCやポータブルCDドライブを用意するのは結構かさばります.CDドライブはCDのサイズより小さくならないのがよろしくないですね.

そこで,こんなポータブルDVDドライブがあったらいいなーというのを考えてみました.何かのはずみで材料が手に入ったら作りたいので,ここに記録しておきます.

こんな感じで回転中のメディアが露出してるドライブは,近未来な設定の漫画とかでは出てきますが,レーザーや回転部の危険があるせいか実際の製品では見ませんね.ミスでレーザーを見ないようにするカバーと,そこそこ安定した足は実用上必要なんじゃないかなぁ…

あと,絵では画力の関係で省略していますが,背面と側面の足は収納時にはゴミがヘッドに入るのを塞ぐような構造にすると良いと思います.

でもそのうち学会の配付資料もネット配布がメインになって,こんな悩みはなくなるんでしょうね.

2010年7月16日金曜日

MATLAB MEXでCUDAを使う

GPU 関連のプログラミングでは大抵、C言語+αを使ってプログラムを書くみたいですが、データの処理や結果の可視化は普段使っている MATLAB のほうが楽です。

そこで、 CUDA な MEXファイルを作って MATLAB で使う方法を試してみました。
結構簡単ですが、ハマるところがいくつかあったので記録を残しておきます。

現在僕が使っている環境は

  • Windows 7 (64bit)
  • MATLAB 2010a (64bit)
  • CUDA 3.1 (64bit)
  • Visual Studio 2008 Professional
なので、参考にするときは注意してください。以下順にハマったところを挙げていきます。


64bitのコンパイラをインストールする

これはCUDAに限りませんが、mexファイルのコンパイルにVisual C++を使う際、64bitの環境では64bit用のコンパイラをインストールしておく必要があります。VS2008では64bit用のコンパイラはデフォルトではインストールされません。また、Express Edition には64bit用のコンパイラが含まれていないようです。

最新版のMATLAB plug-in for CUDAを入手する

実は一番ハマったのがここです(笑)
このページで右側のフォームに住所氏名などなどを記入するとダウンロードできるのが最新版です。
こっちのページでダウンロードできるのは古いバージョンです。(古いMATLABだとこっちを使うべきなのかもしれません。)最初新しいバージョンは非公開と勘違いしていました・・・

ちなみに日本語版のサイトには新しいバージョンへのリンクすら存在してないようです。

nvmex.mを修正する

MATLAB plug-in for CUDA と一緒に入手できるガイドラインにも書いてありますが、使用環境に応じてnvmex.mを修正する必要があります。ぼくの環境では
Host_Compiler_Location = '-ccbin "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin"';
としました。ソースファイルで変更しろと書かれているのはここだけですが、実際にはあといくつか修正が必要で、下のほうの nvccCommandLine を作る部分で、インクルードファイルのパスを指定している部分にダブルクォーテーションが抜けてるバグがあります。Linux環境では問題が発生しなくて見逃したのでしょうか?あと、ついでにCUDAのサンプルでよく使われているcutilを使うためのヘッダファイルのパスも追加しておきます。
    ' -I"' matlabroot '\extern\include" ' ...
    ' -I"C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK\C\common\inc"'...
これに対応してリンカのオプションも mexCommandLine の作成の部分に追加しておきます。
mexCommandLine = ['mex (''' filename '.o' ''', ''' '-L' CUDA_LIB_Location ''', ''-LC:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK\C\common\lib''' ', ''-lcudart'', ' '''-lcutil64'')'];
あと、cutilを使っているプログラムを実行する際には cutil64.dll をパスが通っている場所に置かなければならないので注意してください。


とりあえず、ここまでの修正でサンプルが動くところまではいけたはずですが、
何か思い出したことがあったらまた追記します。