LaTeXでポスターを作る

データ入稿までの全体の流れメモ.
まだ試行錯誤の段階なので,ポスターの作り方の詳しいところは触れない.

今回の最終目標はPDF/X-1a.
LaTeXで,と言っているけど,結局最後でAdobe製品に頼ります.
…誰か他の方法を教えてください.

環境

Mac OS X 10.6 (Snow Leopard).
MacPortsを用いてpTeXをインストール済み.

ポスター用スタイル

beamerposter

プレゼン用スタイルbeamerのポスター版,みたいな.
beamerに慣れている人とか,beamerのスタイルを流用したい人向け.
MacPortstex-beamerposterという名前で入っている.
使い方はこんな感じ.

\documentclass{beamer}
\usepackage[orientation=portrait,size=a0]{beamerposter}
\begin{document}
  \begin{frame}
  ...
  内容
  ...
  \end{frame}
\end{document}

なんと言ってもbeamerをそのまま使えるのが強み.

sciposter

特に難しいことを考えずに作れるので簡単・シンプル.
beamerなんて知らん,という人向け.
CTANから入手.
A0ポスターを作る場合には,a0posterスタイルも併せて入手すると良い.
使い方はこんな感じ.

\documentclass{sciposter}
\title{Title}
\author{hkhn}
\institute{Institute}
\email{user@example.com}
\conference{Conference}
\begin{document}
  \maketitle
  ...
  内容
  ...
\end{document}

最初から\conferenceなどのコマンドが用意されているので使いやすい.

PSまで

Adobe DistillerがPDFを受け付けてくれない関係上,今回はPostScriptを経由してPDFを作る.
今回はbeamerposterを仮定して話を進めます.

dvipsを使うため,beamerのオプションでdvipsを指定.

\documentclass[dvips]{beamer}

beamerposterのa0が微妙に小さいみたいなので,

\paperwidth = 841mm
\paperheight = 1189mm

と明示しておくと安心.
あとは適当に中身を埋めて普通にPSを作る.

platex poster.tex && dvips -P pdf poster.dvi

dvipsのバージョンによってオプション等は異なるかもしれない.

しおりやプロパティの文字化けを防ぐ

そのままやると日本語が化けてしまう可能性がある.
この場合は,松本隆太郎さんという方が作成なさったconvert-eucというスクリプトを使うと良い.

dvips -P pdf -f poster.dvi | convert-euc > poster.ps
フォントの埋め込み

上で作ったPSをAdobe Distillerに食わせれば良いのだけど,
フォントが見つからない,と言われることがあるので埋め込んでおく.

dvips -P pdf -u+ptex-ipa.map poster.dvi

...
はい,うまくいきません.

フォントのアウトライン化

フォントを埋め込めば良いだけのはずなんだけど,
埋め込み方がおかしいのか,
埋め込むと日本語が化けるという怪現象に遭遇しているので仕方なくアウトライン化を行う.

dvips -P pdf poster.dvi && ps2ps poster.ps poster2.ps

…アウトライン化だと思うんですが,実際にやってることは違うのかもしれない.よく分かってない.

ここまででPS完成.

PDF/X-1aの作成

データ入稿をしようとするとPDF/X-1aにしなさいと言われる場所が多いようなので,Adobe Distillerを使って作る.
PDF/X-1aを選んでPSを食わせるだけ.

トンボ/裁ち落とし

トンボを付けなさい,とか,裁ち落としは3mm,とか言われることがある.
これはAdobe Acrobat Proでできる.
# 少なくとも7ではできた.

裁ち落とし

塗り足しと同じ意味合い,だと思っている.
要するに,裁断のときに失敗しちゃうかもしれないからちょっと端の色を伸ばしておいてね,という部分.
印刷工程ツールからページのトリミングを選択して,
「裁ち落とし」を3mmで設定.
このとき「仕上がり」も3mmで設定しておくのが良いようだ?

余白

トンボを付けるため,外側に余白を入れる.
上と同じくトリミングから,カスタムページサイズに変更.
縦横を40mmくらいずつ増やしておけば十分.

トンボ

印刷工程ツールからトンボを追加を選択.
コーナートンボとセンタートンボを付けて完成.
忘れずにPDFを保存.

ssh越しのgit

たぶん git-daemon を使うのが正しい方法.
でも使い方をよく知らないので,
svnの場合と似た方法でやってみる.

鍵指定 ssh

git でのやり方は知らないので,とりあえず

.ssh/config

Host hoge
  User user
  HostName hoge.example.com
  Port 22
  IdentityFile /path/id_dsa

とか書いておく.
これで

ssh hoge

とするだけで hoge.example.com に鍵を用いてアクセスできるようになった.

サーバ側

hoge.example.com

authorized_keys

command="/path/git shell -c \"$SSH_ORIGINAL_COMMAND\"" ...

みたいな感じで記述.

アクセス

git pull ssh://hoge/path master

等としてアクセス.

git remote add hoge ssh://hoge/path

とかやっておくと便利,というのは蛇足.

beamer-3-10 を使う

beamer-3-10 のインストールが少しだけ面倒だったので記述.

環境

Mac OS X 10.6 (Snow Leopard).
MacPorts を用いて pTeX をインストール済み.
(ちょっと失敗して texlive のパッケージも少し入っている)

追記

texlive のない状態だと,pgf のインストールも別途必要.

beamer のインストール

bitbucketから beamer-3-10.tar.bz2 をもらってきて,
$TEXMFLOCAL 下に解凍.

エラー

この状態で mktexlsr して使おうとすると,

\beamer@frameslide ...duration=}\thispdfpagelabel 
                                                  {\insertframenumber } \xde...

みたいなことを言われる.
調べてみたところ,これは hyperref パッケージの問題らしい.

解決策その1

ここの人の助言に従って,
preamble に

\providecommand\thispdfpagelabel[1]{}

と記述.
おわり.お疲れ様でした.

解決策その2

解決策その1でも良いんだけど,beamer ファイルに毎回書くのも面倒くさいので別の解決策.
ずばり hyperref をアップデートすれば良い.

hyperref パッケージのダウンロード

CTANから最新の hyperref パッケージを入手して $TEXMFLOCAL 下に解凍.

latex hyperref.ins

とかやって sty ファイルを作れば良いのだが,その前に別のパッケージを入手する必要.

ifxetex / oberdiek パッケージのインストール

それぞれ CTAN でパッケージをもらってきてインストール.
oberdiek はファイル数が多くて一瞬げんなりするが,

latex oberdiek.ins

だけで OK.
この後改めて hyperref パッケージの sty ファイルを作って mktexlsr してやれば,
問題なく beamer-3-10 を使えるようになる.

MacBookセットアップ

MacBookを入手したのでその設定メモ。主にリカバリ時の復旧用。
自分にとって大事なところだけ書いていく。大事な順?

ファイアウォール

どんな動きをするのか全く知らないけど、一応[セキュリティ>ファイアウォール]でファイアウォールを有効に。
ついでに「詳細」で「署名されたソフトウェアが受信接続を受信するのを自動的に許可」のチェックを外す。なんか怖いじゃん。

Sophos for Mac

入れる決まりになっている?ようなので導入。
けどアップデートに失敗することが。。

光学メディア無視

[システム環境設定>CDとDVD]にある項目を全部「無視」。
でもこれで完全ではなさそう。。

消音

[システム環境設定>サウンド]で音量バーを全部最小にしておく。警告音の再生も全部切る。

Bluetooth無効

[システム環境設定>Bluetooth]で無効化。

ネットワーク経由のスリープ解除無効

[システム環境設定>省エネルギー>電源アダプタ]で「ネットワークアクセスによってスリープを解除」のチェックを外す。

iSight無効

http://techslaves.org/iSight Disablerなるものをもらってきて実行。
OS起動時に自動実行する必要がある?
どうせ普通のシェルコマンドが書いてあるだけだろうから、そんな深く考えなくても自動化できるだろう。

Caps LockをControlに

[システム環境設定>キーボード]で「修飾キー」を選んでCaps LockをControlに変更。

キーの速度

[システム環境設定>キーボード]で「キーのリピート速度」を最大に「リピート入力認識までの時間」を最短に。

最近使った項目の数

[システム環境設定>アピアランス>最近使った項目の数]で、全部「なし」に。

Xcode

MacPortsをインストールするために必要。
付属のMac OS X Install DVD中のオプションインストールから選択。

MacPorts

The MacPorts Projectからパッケージをもらってきてインストール。

Eclipse Monkeyを使ってみる

Eclipseでちょっとした作業を自動化したいとき,Eclipse Monkeyというものが流行っている (いた?) らしい.
ちゃんとしたプログラム言語 (JavaScript/Ruby/Python など) を使って,自分のやりたいことを書けるので,可能性は色々.
# デフォルトは JavaScript

一応導入からスクリプト書くまで追ってみる.
個人メモなので,詳しいことはマイコミジャーナルさんやトゥスクルの裏さんを参考にしてください.

導入

Eclipse Monkey

Eclipse の新規ソフトウェアインストールの機能を用いて,

http://download.eclipse.org/technology/dash/update/

からインストール.

Adobe JSEclipse

必須ではないけど,JavaScript を編集する時に有用そうなので試しに導入.
公式はたぶんここだけど,単独提供はされないらしい.
普通にダウンロードするには Adobe のアカウントが必要だとか.
アカウント取らなくても,

http://download.macromedia.com/pub/labs/jseclipse/autoinstall

から古い (?) バージョンをインストールできる.
ものぐさな私は当然後者.

使ってみる

Eclipse メニューバーに Scripts というメニューが追加されるので,Examples を選んでサンプルプログラムを見ると良い.
だいたいコードの作り方がわかるはず.

作ってみる

適当なプロジェクトのトップに,scripts もしくは monkey という新規フォルダを作成し,そこに *.js を放りこめば良い.
要らないと思うけどサンプルコード.

/**
 * Menu: Alert
 * Kudos: hkhn
 * Key: M3+A
 * DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript
 */
 
 function main()
 {
 	alert("Hello, world!");
 }

M3 が Option or Alt なので,M3+A は Alt+A って意味ね.
ALT って書いても良いらしいけど,ここによると not preferred らしい.

LaTeX Beamer で日本語プレゼン PDF を作るまで

プレゼン用に Beamer を入れたので,その記録.

Beamer のインストール

以下のパッケージを全て $TEXMFLOCAL 配下のディレクトリに入れます.
# 私は $TEXMFLOCAL/tex/platex に入れました.
全部放り込んだ後,最低でも一度は mktexlsr を実行しておくこと.

LaTeX Beamer class

bitbucket からメインパッケージをもらってきます.
執筆時点での最新版は 3-10.

PGF

SourceForge から PGF パッケージをもらってきます.
執筆時点での最新版は 2.00.

xcolor

CTAN から xcolor スタイルをもらってきます.
執筆時点での最新版は 2.11.

プレゼンの作り方

雛形
\documentclass{beamer}

\title{Title}
\author{Author}
\institute{Institute}
\date{\today}

\begin{document}
\frame[plain]{\titlepage}
\end{document}

とか?

栞の制御

栞をどうしても入れたい場合は

\documentclass[hyperref={bookmarks=true}]{beamer}

どうしても入れたくない場合は

\documentclass[hyperref={bookmarks=false}]{beamer}

日本語プレゼンの作り方

最新版だと,基本的には何もしなくて良いみたい.
# 当然ながら,platex の --kanji オプションは適切に使う必要がありますが.

栞の日本語表示

よくある話として,栞の日本語が化ける,というものがあり,これは

\ifnum 42146=\euc"A4A2 %"
\AtBeginDvi{\special{pdf:tounicode EUC-UCS2}}
\else
\AtBeginDvi{\special{pdf:tounicode 90ms-RKSJ-UCS2}}
\fi

とすれば良いみたい.
# 最初の行の末尾にある %" は要らない.YaTeX のハイライトを騙すためのもの.
以前どこかのページに掲載されていたのを流用させていただいているだけなのですが,コピペして随分経つのでどこだったか忘れてしまいました.ごめんなさい.

日本語フォント埋め込み

IPA フォント

ライセンス的に問題のなさそうな IPA フォントを使います.
公式ページからフォントをもらってきてインストール.

map ファイルの作成

dvipdfm(x) が探すパスの中に map ファイルを作成.

% ipa.map
rml  H  :0:ipam
gbm  H  :0:ipag
rmlv V  :0:ipam
gbmv V  :0:ipag

私は $TEXMFLOCAL/fonts/map/dvipdfm というディレクトリを作ってそこに放り込みました.
何か問題があったりして,パスが通っている場所を手っ取り早く知りたい場合は

kpsewhich --expand-var '$TEXFONTMAPS'

というコマンドを使うと良いでしょう.

埋め込み
dvipdfmx -f ipa.map foo.dvi

など.dvipdfmx のオプションに指定するのが嫌な場合は,プリアンブルに

\AtBeginDvi{\special{pdf:mapfile ipa.map}}

と書いても OK な様.

Windows で TeX 環境を整えるまで

とりあえずやっつけで TeX 環境を整えたが,環境移行のたびにいちいち調べていては効率が悪いのでメモを残しておく.
途中で emacs のセットアップなんかに脱線します.その上過去の .emacs を使い回しているため完全に自分用.

TeXインストーラ

あべのりさんのページからTeXインストーラをもらってきてセットアップ.
執筆時点での最新版はTeXインストーラ3 0.81r2.
インストールされた bin を環境変数 PATH に追記しておくと良い.

emacs

YaTeX 環境を使ってみたいので,emacs をインストール.
Windows だと Meadow が有名だが,今回は NTEmacs にした.なんとなく.
本家 GNU Emacs を使っても良いのだけど,IME 関係が面倒なのでやめた.

スペルチェッカ

英語の文章を書くときにはあると便利なのでスペルチェッカも入れておく.

aspell

スペルチェッカとして Aspell が欲しいのでインストール.
Windowsインストーラ版は Aspell 0.50.3 とかなり古そう (執筆時点での最新版は 0.60.6) だが,別に困らないのでこれにしておく.
辞書ファイルも aspell-en-0.50-2-3.最低限使えれば良いし.なにより面倒だし.

補完用辞書

たぶん使わないのだけど,

M-x ispell-complete-word

で補完するための辞書も念のため入れておく.
手元には words.lzh とかいうのがあったのでこれを入れた.が,公式の配布元がどこなのか分からないのでリンクは貼らない.

(setq ispell-grep-command "grep")
(setq ispell-alternate-dictionary $WORDS) ;; $WORDS は words へのフルパス

とか書く場合には grep が必要になるが,TeX インストーラがインストールしてくれているのでこれを使う.

flyspell

デフォルトで使えたのでスキップ.

YaTeX 環境

最初に書いてしまうと身も蓋もないけど,あんまり私には向かないかもしれない.従来通り make 環境を整えた方が良いかもしれぬ.
さて,公式ページからパッケージをもらってきて,emacs のパスが通っているところ (site-lisp とか) で展開.
あとは適当に使いやすくなるように .emacs に追記.

(autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t)
(setq auto-mode-alist (cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist))
(setq tex-command "platex --kanji=utf8"
      dvi2-command "dviout"
      dviprint-command-format "dvipdfmx -f msembed.map -f dlbase14.map %s"
      bibtex-command "pbibtex --kanji=utf8"
      makeindex-command "mendex")

とか?dviprint-command-format を dvipdfmx にするのは邪道な感じだが,PDF にする機会が多いのでとりあえず.

dired-x

不要なファイルを削除するために dired-x があると良い.

M-x dired-very-clean-tex

というコマンドが非常に便利.

  • dired-tex-unclean-extensions
  • dired-texinfo-unclean-extensions
  • dired-latex-unclean-extensions
  • dired-bibtex-unclean-extensions

という四つの変数で削除対象を制御できる,らしい
いちいち dired 開くの嫌だなあと思ってとりあえず書いてみたのが下.

(defun do-very-clean-tex ()
  (interactive)
  (dired default-directory)
  (dired-very-clean-tex)
  (dired-do-flagged-delete)
  (kill-buffer))

Emacs の作法が分からない人が書くとこんな感じ,という阿呆なコードになってる気がします.
良い子は真似しないようにね.