Lyx で Beamer

Lyx で、というより platex + dvipdfmx で beamer な日本語スライドを作るときのメモ。

プリアンブルで

\documentclass[dvipdfmx]{beamer}
\usefonttheme[onlymath]{serif}

\AtBeginDocument{%
  \renewcommand\mcdefault{gt}%
  \kanjifamily \gtdefault \selectfont
}

とする。
下4行はすべてのフォントをゴシック体に置き換える設定。
\usefonttheme[onlymath]{serif} で数式だけはローマン体のままにしている。

各設定の出典は忘れてしまった。

hoge.mpkg.dmgをLinuxで展開

目的

Session StringsのMac版イメージからサンプルデータだけ取り出してWindowsで使いたい。
手元にMacが無いので、作業はArch Linux上で行う。

手順1. mpkg.dmgの展開

  1. dmg2imgでhoge.mpkg.dmgをhoge.mpkg.imgに変換
  2. mount -t hfsplus -o loop hoge.mpkg.img でマウント

マウント先にはhoge.mpkgがある。mpkgはただのディレクトリ。

手順2. pax.gzの展開

目的のブツはfuga.pax.gzという見慣れない形式で圧縮されていた。

  1. gzip -d fuga.pax.gz でgzを展開
  2. cat fuga.pax | cpio -idv でpaxを展開

zcat fuga.pax.gz | cpio -idv で一発でいけそう

反省

なぜWindows版イメージのバックアップを取らなかったのか…
(NIのダウンロード販売は、購入後5日間しかダウンロードできない)

PDFの各ページを分割して組み直すスクリプト

目的

下のように、パワポのスライドが4枚印刷された資料が講義のレジュメとしてよく配られる。

--------
| 1  2 |
| 3  4 |
--------

これをスキャンして、スキャナ付属のソフト(Windows上)でPDFにしたのだが、Kindleでは読みにくいため下のように2つのPDFに分割したい。

-----  -----
| 1 |  | 3 |
| 2 |  | 4 |
-----  -----

方法

縦に半分に分割するだけなら簡単なのだが、それでは順番がおかしくなってしまうのが厄介。
pyPdfを使ってPDFのmediaboxあたりを弄ってどうにかしようとしたが上手くいかず。
そこで一度PDFから画像を抜き出し、imagemagickで処理して、再びPDFに戻すことにする。

スクリプト

#!/bin/sh
#
# version 1

# Create a working directory
src=$1
dest=out.pdf
date=`date +%y%m%d%H%M%S`
dir=/tmp/mypdf-$src-$date
mkdir $dir

# Split PDF to pbm images
pdfimages $src $dir/image
cd $dir

# Force images turn portrait
convert image* -rotate "-90<" rotated-%d.pbm
        
# Split each images to 4 images
for file in rotated-*
do
    convert $file -crop 50%x50% cropped-%d.pbm
    # Append each 2 images
    convert cropped-0.pbm cropped-1.pbm -append merged-$file-0.pbm
    convert cropped-2.pbm cropped-3.pbm -append merged-$file-1.pbm
    rm -f cropped-*
done

# Compress and merge all images to a PDF
convert merged-* -monochrome compressed-%d.png
cd - > /dev/null
convert $dir/compressed-* $dest

# Remove temporary directory/files
rm -rf $dir

結果

一応、目的のPDFは出来た。ビュアーで開いて見た限りでは画質の劣化はなし。ただし解像度は10倍近く大きい。
ファイルサイズも元のファイルの3倍くらいになってしまう。時間もかかるし、メモリも喰う。
これはPDFの画像がadobeの独自フォーマットになっているので、どうしようもないはず。Adobe Acrobatを買うか? バッチ処理とか出来るんだろうか。

PDFのメタデータを直接いじる方向ならあるいは…また気が向いたら調べるかも。

Lyx 2.0 の設定

概要

platexでコンパイルするためのソースをLyxに吐かせるための設定。
少なくとも初期設定ではうまく行かない上、少々トリッキーな設定が必要。もっとまともな方法があるのか?

なぜか今までCJKパッケージを使っていたので、platexにすると文字が綺麗になって嬉しい。

弄るところ

ツール->設定->言語設定->言語:
言語パッケージを"任意設定"にして、そのコマンド欄は空欄にする。

ツール->設定->ファイル処理->変換子:
LaTeX (plain) -> DVI の変換子を"platex"に、追加フラグを"latex=platex"に変更し、右上の「修正」をクリック。

ツール->設定->ファイル処理->ファイル形式:
既定出力形式を"PDF (dvipdfmx)"にする。

補足

これで、目玉アイコンや更新アイコンで直接PDFを出力してプレビューできるようになる。

言語パッケージを"任意設定"にしてコマンドを空欄にするのがミソで、言語パッケージを"なし"にするとなぜかLyxさんは"\usepackage[japanese]{babel}"などと挿入してくださって、変換時にエラーが出る。
Babelをちゃんと設定すればいいのかもしれないけど、どうせ日本語と英語しか書かないので使う必要はないし。