LaTeXから生成するPDFが、SlideShareで日本語が表示できるようにしてみた。¶
Debian勉強会資料のGitリポジトリを用いて、LaTeXからPDFを生成する場合、フォントは埋め込まれていないので、SlideShareでは日本語が表示されない。 1
で、フォントを埋め込むためにはどうすればいいかなぁとやってみた。今回はきろ字フォントをPDFに埋め込む、という例。
システム全体の設定¶
まず、dvipdfmxコマンドがフォントを読む込めるようにする。Squeeze/Sidでは/etc/texmf/texmf.d/75DviPS.cnfのOSFONTDIRの値がダミーの値になっているので、これを/usr/share/fontsに変更する。/etc/texmf/texmf.cnfは、このファイルにも書いてあるとおり直接編集してはならない。
$ sudo git diff
diff --git a/texmf/texmf.d/75DviPS.cnf b/texmf/texmf.d/75DviPS.cnf
index ade8f9f..f23b179 100644
--- a/texmf/texmf.d/75DviPS.cnf
+++ b/texmf/texmf.d/75DviPS.cnf
@@ -6,7 +6,7 @@ TEXPSHEADERS.gsftopk = .;$TEXMF/{dvips,fonts/{enc,type1,type42,t
ype3,truetype}}/
% OSFONTDIR is to provide a convenient hook for allowing TeX to find
% fonts installed on the system (outside of TeX). An empty default
% value would add "//" to the search paths, so we give it a dummy value.
-OSFONTDIR = /please/set/osfontdir/in/the/environment
+OSFONTDIR = /usr/share/fonts
% PostScript Type 1 outline fonts.
T1FONTS = .;$TEXMF/fonts/{type1,hbf}//;$OSFONTDIR//
変更後、update-texmfで/etc/texmf/texmf.cnfファイルを生成する。
$ sudo update-texmf -v
Merging information from /etc/texmf/texmf.d/ into /etc/texmf/texmf.cnf ... Replacing config file /etc/texmf/texmf.cnf with new version
done
実行すると、以下のようにファイルが更新される。
$ sudo git diff
diff --git a/texmf/texmf.cnf b/texmf/texmf.cnf
index 63c392d..406a2c0 100644
--- a/texmf/texmf.cnf
+++ b/texmf/texmf.cnf
@@ -370,7 +370,7 @@ TEXPSHEADERS.gsftopk = .;$TEXMF/{dvips,fonts/{enc,type1,type
42,type3,truetype}}/
% OSFONTDIR is to provide a convenient hook for allowing TeX to find
% fonts installed on the system (outside of TeX). An empty default
% value would add "//" to the search paths, so we give it a dummy value.
-OSFONTDIR = /please/set/osfontdir/in/the/environment
+OSFONTDIR = /usr/share/fonts
% PostScript Type 1 outline fonts.
T1FONTS = .;$TEXMF/fonts/{type1,hbf}//;$OSFONTDIR//
diff --git a/texmf/texmf.d/75DviPS.cnf b/texmf/texmf.d/75DviPS.cnf
index ade8f9f..f23b179 100644
--- a/texmf/texmf.d/75DviPS.cnf
+++ b/texmf/texmf.d/75DviPS.cnf
@@ -6,7 +6,7 @@ TEXPSHEADERS.gsftopk = .;$TEXMF/{dvips,fonts/{enc,type1,type42,t
ype3,truetype}}/
% OSFONTDIR is to provide a convenient hook for allowing TeX to find
% fonts installed on the system (outside of TeX). An empty default
% value would add "//" to the search paths, so we give it a dummy value.
-OSFONTDIR = /please/set/osfontdir/in/the/environment
+OSFONTDIR = /usr/share/fonts
% PostScript Type 1 outline fonts.
T1FONTS = .;$TEXMF/fonts/{type1,hbf}//;$OSFONTDIR//
diff --git a/texmf/texmf.d/75DviPS.cnf b/texmf/texmf.d/75DviPS.cnf
index ade8f9f..f23b179 100644
--- a/texmf/texmf.d/75DviPS.cnf
+++ b/texmf/texmf.d/75DviPS.cnf
@@ -6,7 +6,7 @@ TEXPSHEADERS.gsftopk = .;$TEXMF/{dvips,fonts/{enc,type1,type42,t
ype3,truetype}}/
% OSFONTDIR is to provide a convenient hook for allowing TeX to find
% fonts installed on the system (outside of TeX). An empty default
% value would add "//" to the search paths, so we give it a dummy value.
-OSFONTDIR = /please/set/osfontdir/in/the/environment
+OSFONTDIR = /usr/share/fonts
% PostScript Type 1 outline fonts.
T1FONTS = .;$TEXMF/fonts/{type1,hbf}//;$OSFONTDIR//
ユーザ個別で指定する場合¶
ホームディレクトリ直下に、.texmf-config として、texmf.cnfを用意してやれば良いみたいだが、未検証。
PDF生成前の準備¶
フォントマップを用意する。きろ字フォントは、/usr/share/fonts/truetype/kiloji/ディレクトリの下に、
ls /usr/share/fonts/truetype/kiloji/
kiloji.ttf kiloji_b.ttf kiloji_d.ttf kiloji_p.ttf
のように存在する。拡張子の.ttfはフォントマップには書かない。プロポーショナルフォントのkiloji_pを指定する場合は以下のようになる。
rml H kiloji_p
gbm H kiloji_p
rmlv V kiloji_p
gbmv V kiloji_p
あとは、dvipdfmxコマンドを実行するときに、このファイル(custfont.mapとでもしておこう)を-fオプションで指定すればよい。
$ dvipdfmx -f custfont.map hoge.dvi
するとフォントを埋め込んだPDFを生成できる。Debian勉強会のMakefileだと、
%.pdf: %.dvi
umask 002 ; dvipdfmx -o $@.tmp $<
となっているところを、
%.pdf: %.dvi
umask 002 ; dvipdfmx -f custfont.map -o $@.tmp $<
とすれば良い。
- 1
Debian勉強会ではGitや勉強会のWebサイトで資料配布しているので別に困らないのだけど、他の勉強会で資料を作るときは、このリポジトリをfork、カスタマイズしているのだが、他の人は大体SlideShareを使っているので、まぁちょっと不便。
LaTeXで<, >を表示する方法。¶
いつもverb//を使って、
\verb/<>/
としていたのだが、もっと簡単に記述する方法があったのね。
\(<>\)
これは楽だ。
追記¶
dancerjに
$<>$
だろjk、と 教えてもらった 。thx。
SargeからEtchにアップデート途中にトラブったのでメモ。¶
$ lspci
(snip)
0000:01:09.0 Ethernet controller: Marvell Technology Group Ltd. Yukon Gigabit Ethernet 10/100/1000Base-T Adapter (rev 13)
このNICに対応するLinux 2.6.8でのカーネルモジュールは、sk98linと。
$ sudo modprobe -av sk98lin
sk98lin: Network Device Driver v6.23
(C)Copyright 1999-2004 Marvell(R).
ACPI: PCI interrupt 0000:01:09.0[A] -> GSI 20 (level, low) -> IRQ 225
eth2: Yukon Gigabit Ethernet 10/100/1000Base-T Adapter
PrefPort:A RlmtMode:Check Link State
eth2: network connection up using port A
speed: 100
autonegotiation: yes
duplex mode: full
flowctrl: symmetric
irq moderation: disabled
scatter-gather: enabled
eth2: no IPv6 routers present
オンボードのNICが最初はeth0だったのに、eth1 -> eth2とインクリメントされているのは、また別の問題だ。w
couchapp 0.7.1が動かん。¶
Githubにあるmaster 1 から持ってきているcouchappが、Sidだと動かないことに気づいた。
$ couchapp
Traceback (most recent call last):
File "/usr/bin/couchapp", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 2675,
in <module>
parse_requirements(__requires__), Environment()
File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 552, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: restkit>=2.2.0
$ dpkg -l python-restkit
(snip)
ii python-restkit 2.1.5-1 Restkit is an HTTP resource kit for Python
0.7.1からrestkitのバージョンは2.2.0以上でないとアカンらしい。仕方ないので、0.7.0にときに作っておいたdebパッケージをインストールして、0.7.0にダウングレードしておいた。
10/28対応。¶
10/28のアップデートで、python-restkitが2.2.2になったので、問題解決したなり。うーむ、debian/control見直し必要ですな。
- 1
git:// github.com/couchapp/couchapp. git
そして実はSargeでもNTLM認証行けちゃった。¶
Sargeでは環境変数http_proxyを設定してもrootでパッケージのアップデートができなかったのだが、もしやと思い、一台だけ残っているSargeのサーバに先ほどの/etc/apt/apt.confにプロキシ認証の設定をして、ディストリビューションをsargeからstableに変更してsudo
apt-get updateを実行してみたところ、ものの見事にProxyのNTLM認証行けてしまった。なんだ、こっちに設定しなくてはならなかったのか、アハハー。
とまぁそんな訳なのだが、SargeはおろかEtchのリポジトリももう既に廃止になっているので、SargeからLennyへいっきにアップグレードすることなんて怖すぎてできません…。
orz サーバもリプレースというか、新規に構築しなおす予定なので、済んだら試してみるかなぁ。