極楽せきゅあブログ

ときどきセキュリティ

Texに泣きました

国際学会に論文を提出しなきゃならなくなり、悪戦苦闘しました。まさしくバッドノウハウがたまってしまった(というほどでもないけど)ので、メモっときます。

ACM系SIN2011に論文通ったので、出せと言われたtexのソースとpsファイル、pdfファイルを出してみた。
基本的にtex系作業はtexworksというエディタ環境でやってる。まず往生したのがレターサイズってやつだった。作成されるPDFファイル等はデフォルトA4サイズ。しかしACMはこれをUSレターサイズにしろ、という。texworksには出力サイズを操作できるようなI/F、機能が無さそうだし、いろいろ調べたけれど結局、個別の生成を行うときにツールのオプションで設定するしか無いてことがわかった。
ソースの中に、
\document[letter]{acm_proc_article-sp}
とか書け、という情報があったんだけど、このまじない、ぜんぜん効き目無い。psファイルの生成とサイズ指定てことで、コマンドラインから以下のようにやって生成した。
dvips -t letter test1.dvi
→test1.psというファイルがUSレターサイズで生成される。
dvipdfmx -p letter test1.dvi
→test1.pdfというファイルがUSレターサイズで生成される。

ところが、これらを提出すると今度はtype 3フォントが入ってるので直して欲しい、というレスが来た。他にも、章とかの表題だけがページの最後に残るとか、そういうレイアウトはフィードして修正汁とか言われたけど、まあそっちは問題無かった。しかしこのtype 3フォント、つまりビットマップなのか?が入ってる問題の方は厄介だった。
生成ツールのオプションで何とかなる、という情報があったので試してみた。たとえば-P pdfとやってみろとか、漢字パッチが当たっていたらdvipsに-dNOKANJIつけろとか、そんなの。でもまあことごとく撃沈。どうやってもtype 3は無くならない。excelでグラフ作って、それをepsというファイル形式にしたままで読み込んでいるからか、まあとにかく効き目が無かったわけだ。
マップを書き換えろ、という情報もあった。こんな感じ。

% diff cid-x.map /home/workspace/cid-x.map 
66,69c66,73
< rml  H Ryumin-Light
< gbm  H GothicBBB-Medium
< rmlv V Ryumin-Light
< gbmv V GothicBBB-Medium
    • -
> %rml H Ryumin-Light > rml H :0:sazanami-mincho > %gbm H GothicBBB-Medium > gbm H :0:sazanami-gothic > %rmlv V Ryumin-Light > rmlv V :0:sazanami-mincho > %gbmv V GothicBBB-Medium > gbmv V :0:sazanami-gothic

行数とかは実際のものとは違うけれど、リュウミンライトんとこをMsのフォントとかに書き換えたら大丈夫!という話だったがこれも効き目が無かった。
MSなのはこんな設定。

rml  H :0:msmincho
gbm  H :0:msgothic
rmlv V :0:msmincho
gbmv V :0:msgothic

いろいろ試してみたけれど結局方法が見つからないので、仕方なくソースからデバッグしてみた。調べていくうちにわかった衝撃の事実(笑)がこれだ↓。
論文のソースはテンプレ使って書いてるんだけれど、どこにバグが潜むのかわからなかったので半分とか四分の1とかにして、それぞれPDFを生成してみた。しかし、どれだけ減らしてもtype3は撲滅できない。しまいにはこんなソースにまでしてみた。

\documentclass{acm_proc_article-sp}
\begin{document}
test
\end{document}

これでもtype3がしぶとく生き残る。というか、type3しか生き残らないんだ(笑)。どんだけ生命力あるのかと(笑)。
で、やることはもうこれしかない。

\documentclass{article}
\begin{document}
test
\end{document}

type3殲滅完了。
つかおめーらの用意したテンプレのせいなのか?なんじゃそりゃああ(松田優作)。
仕方なく中身もデバッグしてみると、最終的なPDFにtype3が忍び込むかどうかはフォントエンコードを呼ぶか呼ばないかで操作できることがわかった。
\RequirePackage[T1]{fontenc}
とりあえずこの行をON/OFFすると変わる。
ていうかコメントに、

% Using [T1]{fontenc} outright was not an option as this caused 99% of the authors to 'produce' a Type-3 (bitmapped)

とか書いてあるんだけど(笑)。
まあ、もっとピンポイントに絞り込めそうだけど時間も無いし、ここまでとして生成した。つかこれOFFにすると、論文の本文にパイプ(|)を入れておいたら文字化けしやがるんだけどね。それも\midに置き換えて見た目上は対応した。
http://texblog.net/latex-archive/fonts/symbols/

そしたら今度はpsファイルからAcrobat Distillerを使ってPDF作ったらtype3なんで、これも直して欲しいとレスが。もうこのあたりになると正直自分的に近年まれに見るくらいに怒り心頭になってきて(笑)、つかなんでこんなくだらねーことにこんな時間とられにゃならんのかとw。事務方がやりゃいい話じゃねえのかカネばっか取りやがってksgとか思いましたよ。
気を取り直して確認してみた。やり方は以下の通り。
ps2pdf -dNOKANJI test1.ps test2.pdf
pdffonts test2.pdf
うわー・・・。確かに全部type3とかになっとるわ(笑)。ヒドスwww。
そこでふと以前いろいろ調べていたのを思い出して、フォントを埋め込んでみた。
dvips -P pdf -t letter test1.dvi
この-Pつーのを使えばWindows角籐版はイケルってな古めの情報を読んだので、まあtexworksにも統合されとるだと的な安易なノリでやってみたわけだ。そしたらもろもろ埋め込まれて明らかにサイズが違うpsファイルが生成され、type3は撲滅できた。
前にこのpsファイル作ってからPDFファイル作るルートは試していたけれど、type3撲滅できなかったので念頭から消えていたのだ。
はーなんとかこれですべてのルート整備できたのかな。

つか、T1のエンコードってのを外してどんな影響があんのかわかんないままだから、けっこうリスクあるんだけどねえw。まあ(http://glc.l.u-tokyo.ac.jp/pukiwiki/index.php?TeX%2FFont%2FOutLine)とか見てる限りでは、拡張文字セットに該当するものが入っていなければ問題ないんかなーなんて思いますが。ちなみにOT1とかにしてもtype3は出現しましたな。ムカついてるのでさらに調査して原因つきとめに行きたいところだけど自重。
まあ、あっしの方でもっと個別パーツのツールに精通していれば対応できるのかも知れないが、正直情報が古かったり散逸的だったりするのでかなり嫌気がさしてる(笑)。論文を認めてくれたのは素直に嬉しいのだけれども、texのおかげでつきあいきれないなーという気になってる。
このドキュメント(http://www.free-soft.org/FSM/english/issue03/rick.pdf)なんか、

$ dvips -Pwww file_name.dvi -o file_name.ps
$ ps2pdf file_name.ps
That’s it! The first command tells dvips to convert the
DVI file into a PostScript file, and the second line tells
GhostScript to distill the PostScript file into a PDF file.

とか書いてあるんだけど、ぜんぜん効き目無かった。もうなんでしょうね。自分がチョイスした環境が悪かったのか。まあ普通*unixとかでやるんだろうけどね。

ついでに秀丸エディタでコメント行だけ削除したい場合とかの命令も調べたすよ。
置換でのパターン指定で「^%.*\n」とやれば良いみたい。意味は、行頭に%があって、任意の文字が1文字以上入っている行を、改行コードごとマッチング→合致行を丸ごと削除、です。参考にしたのはこのあたり>http://pc.dearie.jp/hidemaru/replace/7.htmlhttp://crocro.com/pc/write/hide/chimarl09_01.html

参考情報:
http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?PDF%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9
http://www.osaka-kyoiku.ac.jp/~enakai/memo/dvipdf.html
http://oku.edu.mie-u.ac.jp/tex/mod/forum/discuss.php?d=423
http://www.aise.ics.saitama-u.ac.jp/~gotoh/SubstituteDvipdfmx.html
http://www.nn.iij4u.or.jp/~tutimura/tex/dvipdfm.html
http://www.i-product.biz/jsme/data/note_tex.pdf
http://www.nsknet.or.jp/~tony/TeX/faq/error.htm
http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/19787.html
http://glc.l.u-tokyo.ac.jp/pukiwiki/index.php?TeX%2FFont%2FOutLine
http://www.nsknet.or.jp/~tony/TeX/faq/error.htm
http://www.geocities.jp/tanaken_1018/tex/dvipdfmx.html

なお、以上の情報は時間的に切羽詰まってる中でなんとかかんとかやりくりしたもので、今このときのスナップショット情報かも知れないわけですよ。だから話半分にして聞いておいてねー。もう。