2011/03/06

TeXで好きなフォントを使おう

TeXで好きなフォントを使いたい!特にD論でGaramondを使いたい!という欲求を満たすべく調査開始。ざっくり見た感じでは、特定のフォントを使用可能にするものと、OSが認識しているフォントすべてを使用可能にしようというものがありますね。そりゃあ後者の方が断然いいな、というわけで使うのがこちらXeTeX (ずぃーてふ:  本家/日本語wiki)。マカーなので、以下ではMacでの作業手順のみを記録しますが、LinuxやWin32でもいけるみたいですね。
  1. XeTeXのインストール
  2. fontspecのインストール
  3. TeXshop (GUI front end; if needed) のインストール
という感じで必要なものを入れて行きます。が、全部MacTeXに入っているので、これ1つインストールすればいいです。ほとんど1-clickで作業完了ですが、細かいところはBallRWさんのサイトが詳しいので参考にしてください。TeXshopで文章を書く場合、最後に環境設定でエンコードをUTF-8にし、タイプセットコマンドをXeLaTeXに変更すれば準備完了。

というわけで凡例。こちらのサイトから拝借したひな形を少しいじったものです。

% !TEX encoding = UTF-8 Unicode
%%% XeLaTeX sample%%%

\documentclass{book}

%%%%%%%%%%%%%%%%%%%%%
\usepackage{fontspec,xltxtra,xunicode}

\setmainfont{AGaramondPro-Regular}

\usepackage{setspace}
\setstretch{1.2}
\usepackage{indentfirst}
\XeTeXlinebreaklocale "ja"
\XeTeXlinebreakskip=0em plus 0.1em minus 0.01em
\XeTeXlinebreakpenalty=0
\renewcommand{\baselinestretch}{1.4}
\settowidth{\parindent}{あ}
%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\chapter{Font availability with \XeLaTeX}

\section{Examples}

This page is mainly written with Adobe Garamond Pro.

\subsection{Roman letters}

\begin{itemize}

\item $G(x) = A \times \exp{(-\frac{1}{2}\cdot \frac{{(x-x_{0})}^2}{\sigma_x^2})}$: Not applied to equations by default.

\item $\it G(x) = A \times \exp{(-\frac{\rm1}{\rm2}\cdot \frac{{(x-x_{\rm0})}^2}{\sigma_x^2})}$: Can be written with Garamond by some tricks.

\item $\rm{ABCDEFG}$: In equations, letters escaped by $\backslash$rm or $\backslash$it are written with Garamond.

\item ABCDEFG: In plain text, regular style.

\item \textbf{ABCDEFG}: In plain text, bold style.

\item \textit{ABCDEFG}: In plain text, italic style.

\end{itemize}

\subsection{Japanese/Chinese letters}

\fontspec{Hiragino Mincho Pro W3}

ヒラギノ明朝 Pro W3 は、こんな感じ。

\fontspec{Hiragino Kaku Gothic Pro W3}

ヒラギノ角ゴシック Pro W3 は、こんな感じ。

\end{document}


コンパイル結果はこんな感じになりました。デフォルトでは数式にフォントの変更が適用されないみたいですねぇ。今回はちょっとズルをしましたが、正攻法でもどうにかできるはずだよなぁ。まぁこれはおいおい。


追記。

上記のサンプルだとendash (--)やemdash (---)などのコマンドがつうじない。

\defaultfontfeatures{Scale=MatchLowercase,Mapping=tex-text}
を追記するとこれらもうまく動くようになる。

参考↓
http://www.latex-community.org/forum/viewtopic.php?f=40&t=1398
さわだ

2011/03/05

BloggerへのSyntax Highlighterの導入

Bloggerのポストはdefaultではcode syntaxをきれいに整形表示してくれる機能がないようです。これを後から追加するためには、以下のjavascriptのいずれかを利用すればいいようです。
それぞれのdemoを眺めてみて、後者の方が好みだったので今回はそちらを使います。

具体的なBloggerへの導入は、Web2Bloggingの解説ページがわかりやすいです。手順としては、

  1. 上記解説ページのGeneratorでscriptを作成
  2. scriptをbloggerのtemplateに埋め込む
  3. codeつきのpostをしてみる

だけです。

まずはgeneratorでのscript作成。以下のようにTheme (見た目) をひとつ選んで、Brushes (syntax highlightさせたい言語のリスト) を選びます。Themeごとに表示がどのように変わるかはここを参照。
で、"Get Code"ボタンを押して出て来た文字列をcopyしておきます。

次はbloggerのtemplateへの埋め込み。自分のBlogger accountにloginした上で、右上からデザインの編集ページへ移動します。
左上のちょい下にあるボタンから"HTMLの編集"へ。HTMLの文章がずらっと並んでいる最後の"</head>"の直前に、さきほどcopyしておいたscriptをpaste、保存すれば準備は完了。

あとはcodeを含んだ文章をpostすればきれいに表示されます。
例えばこんなかんじ。

code部分は
<pre class="brush:language name;">
ほにゃらら
</pre>
と囲ってやります。記述するcodeにあわせ"language name"をpythonだったりc#だったり適当に変えるのと、ほにゃららはHTML文法からescapeさせる必要があるので、"<"などはそのまま書けない、という点だけ注意です。あ、それからものすごくしょうもないことですが、2つある編集モードのうち、code部分書くときは上記画像の例のように、"HTMLの編集"ってところを選択して書いてくださいね。でないとうまく表示されません。

結果例はこんな感じになります。

さわだ

Code highlight表示のテスト

この下にcodeが出るはず。

print('Hello, world!')

2011/03/04

Pythonによるデータ解析

天文業界は、比較的解析ツールが整備されていると思います。
波長によって使うツールは違って、例えばX線業界ならNASAのHeasoft。
可視•赤外ならIRAFとかでしょうか?(僕は使った事ありません。)

そんな恵まれた状況にあっても、思いついたアイディア(解析)を自分の手でさくっと試せるってのは、大事だと思うのです。用意されたツールだけでは、できる解析も限られてしまうので。既存の良くできたツールたちを有効利用しつつ、足りないところは自前で用意。コードのデバグに費やす時間を最小にし、手軽さ重視。

そういうわけで僕はPythonを使います。

実験バリバリな場合スクリプト言語は速度面でどうしても力不足ですが、天体データ解析ではどっちみちfits fileのread/writeなどが速度のボトルネックになるので (これ、なんとかならない?)、Python程度で十分です。なので、実行速度より大事なのは書く速度。

さすがに裸一貫にPythonだけでは心もとないので、
 * Numpy (数値計算ライブラリ)
 * Scipy (もう少し豪華な数値計算ライブラリ)
 * pyfits (fits fileを扱うためのモジュール)
 * matplotlib (いろいろ高機能なプロッタモジュール)
を一緒に使います。IRAF使いの人にはPyRAFなんてものもあるようです。それから、僕のデフォルトシェルは
 * IPython
です。正確には、デフォルトシェルのrcで最後にIPythonを起動しています。terminalから使うコマンドとpythonが同時に使えるシロモノで、ちょっとしたpythonの動作を調べたいときや、matplotlibを呼び出してさくっと何かplotしたいときに非常に便利です。

たぶんこのブログの半分くらいは、上にリストした人たちに関する話題になるでしょう。たまに誰かの役に立ったり、たまにツッコまれて僕の役に立ったりすれば本望です。

さわだ