• このホームページは基本的にうちのPC(Desktop)のいろんな設定をメモするために作られたものです. なんか一週間ぐらい頑張ってしまった設定を忘れたらもったいない気がして.... (^o^;)
  • Beamer ghostscript gs PC1号 PDF ps2pdf Pstricks Vine Linux フォント 漢字
  • Blog Stats

    • 14,529 hits

TeX Beamer +Pstricksで日本語プレゼンテーション (漢字フォント問題の解決)

背景

最近, 国際学会に行くと, Beamer Classを使ったTeXのプレゼンをよく見掛けました. 5年前はProsperとHA-ProsperでTeXのプレゼンを挑戦しましたが当時とても大変でしょうがなかった事がずっと記憶に残っているので, それ以来
TeXでのプレゼンをやめました.

しかし, Beamer Classの綺麗さに誘惑されて, もう一回挑戦したくなった. BeamerでTeX日本語プレゼンを作るには二つの方法があります:

  • [1]. dvipdfm(x) で dvi->pdfに変換
  • [2]. dvips で dvi->ps , ps2pdf で ps->pdf.

複雑な画像処理をしなかったら [1]の方法では十分ですが, pstricksとか使いたかったら, ちょっと面倒になってしまいました. Pstricksと言うのはdvipdfm系との相性が悪いので, 今のところpstricksを使いたかったら[2]の方法しか無いと言えます. しかし,うちのPC1号では [2]の方法をそのままやると… 最終的に出来上がったpdfファイルのフォントが….本当にグチャグチャでしょうがなくて, 本当に見せる物ではない(-_-##)…….これじゃ, ダメだ!! 結局, いろいろいじってこの問題を解決するには三日間もかかってしまいました. 忘れない内に書いておこう,…で、このメモです.

参考物

世話になったホームページは以下の通りです.

残念ながら, 各ホームページにどういうものを参考にしたか忘れましたが, 一応これらを見て試行錯誤で出来てしまったって感じ…(^_^;;;) 上記のホームページの作者の皆様, 本当にありがとうございました…

基本環境

一応, もっと詳しく書くと, うちの環境はこうなります. .. Vine Linuxのapt-getから全部手に入れることができます. 基本的にrpm ベースなので, Vine LInuxではない方々はVine Linuxのホームページに行って、無理矢理手にいれる事もできます.

  • Vine Linux 4.2
  • tetex (ver. 3.0-0vl11.4 )
  • tetex-extra (ver. 3.0-0vl11.4, 3.0-0vl7.3, 3.0-0vl7.2
  • tetex-macros (ver. 3.0-0vl3 )
  • ghostscript (ver. 7.07-0vl30 )
  • VFlib (ver. 2.25.6-0vl2 )
  • TrueType フォント (さざなみ,IPAフォント,など)
  • Adobe Reader 8.0 + asian language pack 8.0 + asian language pack 7.0; 具体的にはRHEL4での日本語TeX環境に参考してください.

また、 このメモの前提では前提として下記のbeamer関連クラスは既にインストールされている..上記の[Beamerのインストール]に関連するホームページで示されている手順を従えば問題は無いはずです.

  • latex-beamer ver. 3.07
  • xcolor ver. 2.00
  • pgf ver. 1.01
  • pstricks ver. 2004/05/12 v0.2l

問題1(pstricks+beamerコンパイル問題)

latex-beamerについているbeameruserguide.pdfではpstricksを利用するには, まずdocumentclassのoptionを次の通りにしなければならないと書かれています. 大事なのは xcolorとdvipsのoptionだと書かれています.

\documentclass[14pt, xcolor=pst,dvips ]{beamer}
\usepackage{pstricks} % PSTricks package

しかし, うちの環境ではコンパイルがうまく通らない!! sample.texを使って披露します.

# cat sample.tex
\documentclass[14pt, xcolor=pst, dvips]{beamer}
\usepackage{pstricks}
\usetheme{Madrid}
\usecolortheme[named=Bittersweet]{structure} %<- Bittersweet 色を使いたい!
\begin{document}
\section{試験}
\begin{frame}
\begin{block}{これはテスト$(\mbox{TEST})$です}
\bfseries
TEST漢字テストTest1試験テスト1なのです.
\end{block}
\vspace{5cm}
\psgrid[linestyle=dotted](0,0)(1,1)\end{frame}
\end{document}


# platex sample.tex
:
:
:
(/usr/share/texmf-dist/tex/latex/graphics/color.sty
(/usr/share/texmf-dist/tex/latex/graphics/color.cfg)
(/usr/share/texmf-dist/tex/latex/graphics/dvipsnam.def)))
! Undefined control sequence.
\psset@bordercolor #1->\pst@getcolor
{#1}\psbordercolor
l.140 \@namedef
{ver@color.sty}{1999/02/16}
?

どうやら, …. なぜかここで止まってしまいました. もし, xcolor=pstをやめたら, 逆に「色が認識されていない!」というエラーが出ました.

# platex sample.tex
:
:
(/usr/share/texmf/tex/latex/latex-beamer/themes/color/beamercolorthemestructure.sty! Package xcolor Error: Undefined color `Bittersweet’.See the xcolor package documentation for explanation.
Type H <return> for immediate help.

l.20 \ProcessOptionsBeamer

?

問題1の解決方法

原因辿り

sample.texで使っている色, “Bittersweet”というのは/usr/share/texmf-dist/tex/latex/graphics/dvipsnam.def の中に定義されていて、普段 xcolor=pstを設定すると, pstcolを通して読んでくれるはずだったが,… 現在使っているpstricksは何とpstcolを必要ないらしい!! . sample.texの xcolor=pstをもう一回復活して, … コンパイルをずっとやると,…

# platex sample.tex
:
:
:
(/usr/share/texmf-dist/tex/latex/graphics/color.sty
(/usr/share/texmf-dist/tex/latex/graphics/color.cfg)
(/usr/share/texmf-dist/tex/latex/graphics/dvipsnam.def)))
! Undefined control sequence.
\psset@bordercolor #1->\pst@getcolor
{#1}\psbordercolor
l.140 \@namedef
{ver@color.sty}{1999/02/16}
?
:
:
! LaTeX Error: Undefined color `Bittersweet’.See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
…l.20 \ProcessOptionsBeamer

? ) (./sample.aux)

Package pstricks Warning: *************************************************
(pstricks) * The installed version of `pstricks.sty’ doesn’t
(pstricks) * need `pstcol’ any more. You should write only:
(pstricks) * \usepackage{pstricks}
(pstricks) *************************************************.

というのは出てきました……. xcolor=pstは要らない!! しかし, dvipsnam.defの色を使いたい!!/usr/share/texmf/tex/latex/xcolor/xcolor.sty を 読んだら, dvipsnamesというoptionがある!さっそく, sample.tex を次のように変更….

\documentclass[14pt, xcolor=dvipsnames, dvips]{beamer}
\usepackage{pstricks} % PSTricks package

これで、コンパイルはやっと無事に通りました!!…. V(^0^)///

問題2(漢字フォント問題)

  1. pstricksを使った .texファイルから.pdf を作るには, dvips+ps2pdf経由しかない.
  2. dvips+ps2pdfをそのままやると, pdfファイルにはType3の汚いビットマップ漢字フォントが埋め込まれてしまう. ただ「綺麗じゃない」とであれば, 別に構わないと思いましたが, 欧米フォントと組み合わせると大変な事になります…baselineがグチャグチャになりました. 下の画面を注意 !! 欧米フォントのbaselineが少し下がり, 漢字フォントのは少し上がってしまう!
  3. ps2pdf の代わりに ps2pdf -dNOKANJI をそのまま使うと (漢字フォントが埋め込まれないために定番の対策), ghostscriptが何かのフォント関係のエラーを出しました. …… どうしよう….?!
  4. 三重大学の奥村先生のGhostscript 7.07について」と「replacecjkfontsのホームページ」に進めではreplacecjkfonts スクリプトを使うと, ps2pdf (オプシホン -dNOKANJI 無し) で埋め込まれてしまったType3の漢字フォントをpdfファイルから取る事ができると主張されたのだが,…. やってみたところで, 全然ダメで,..Type3フォントはそのまま残ってしまって, 結果は上の「ぐちゃぐちゃ画面」とまったく同じです… どうしよう….???!!!

問題2の解決方法

原因辿り

ps2pdf -dNOKANJI が失敗した事は一番気になる点です. これはVine Linux 4.2のghostscript 7.07 の問題だけかも知れませんが, 他の環境を試す機会が無かったので断定はできません. 試行錯誤で, だいたい以下の事が分かりました.

  • ps2pdfのもとは/usr/bin/ps2pdfwr です. (これはVine Linux 4.2だけ…)
  • ps2pdfwrは/usr/share/ghostscript/7.07/lib/CIDFnmapを参照にしている. 正確に言うと、漢字フォントの場合にはどのフォントを埋め込むか/usr/share/ghostscript/7.07/lib/CIDFnmap.Alias と/usr/share/ghostscript/7.07/lib/CIDFnmap.CJKで決められている.
  • Vine Linux 4.2 の ghostscript 7.07では /usr/share/ghostscript/7.07/lib/CIDFnmap.AliasでMinchoとGothicの埋め込むフォント決められている.
    • Mincho は Alias-Mincho に名付けられ , 埋め込むフォントはTrueTypeFontの/usr/share/fonts/alias/TrueType/mincho-mr-jisx0208.1983-0.ttf.
    • Gothic は Alias-Gothic に名付けられ, 埋め込むフォントはTrueTypeFontの/usr/share/fonts/alias/TrueType/gothic-mr-jisx0208.1983-0.ttf.
    • % Alias Mincho and Gothic – CIDFontType 0
      %
      % Alias-Mincho: Public domain. Designed by Yasuyuki Furukawa.
      % Alias-Gothic: Wada Lab’s font license.
      %
      /Alias-Mincho (/usr/share/fonts/alias/TrueType/mincho-mr-jisx0208.1983-0.ttf) ;
      /Alias-Gothic (/usr/share/fonts/alias/TrueType/gothic-mr-jisx0208.1983-0.ttf) ;

    ここで止まっています……  ここでなぜか TrueTypeフォントにたいするCIDFnmapのサポートはまだ「若い」というのを思い出しました (参考:上記のgs-cjkについて),…と言っても7年前か? ま, 一応….何か..ここは原因だという匂いがしました.

本物の漢字のCIDフォントを使用する. (和田研フォント)

本物のCIDフォントを使えば問題が解決かも….と勝手に思って, ネット上で漢字のCIDフォントを探しました. 三重大学の奥村先生のGhostscript 7.07についてから以下のURLから本物の漢字のCIDフォントがダウンロードできる事が分かりました

ftp://ftp.oreilly.com/pub/examples/nutshell/ujip/adobe/samples/

そこから,

  • WadaGo-Bold, WadaMaruGo-Regular.
  • WadaMin-Bold. WadaMin-Regular. WadaMin-RegularH

を適当にダウンロードして/usr/share/ghostscript/7.07/Resource/CIDFont/ の下に全部置きます.

#cp Wada* /usr/share/ghostscript/7.07/Resource/CIDFont/.

そして、 新しいファイル /usr/share/ghostscript/7.07/lib/CIDFnmap.ps2pdfwr を作成します.

#less /usr/share/ghostscript/7.07/lib/CIDFnmap.ps2pdfwr
/Ryumin-Light /WadaMin-Regular ;
/GothicBBB-Medium /WadaGo-Bold ;
/HeiseiMin-W3 /WadaMin-Bold ;
/HeiseiKakuGo-W5 /WadaMaruGo-Regular ;/usr/share/ghostscript/7.07/lib/CIDFnmap.ps2pdfwr (END)

そして /usr/bin/ps2pdfwrの最後の部分を編集します. (新く作ったCIDFnmap.ps2pdfwrを使うため)

  • 従来

    #tail /usr/bin/ps2pdfwr

    exec gs $OPTIONS -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite “-sOutputFile=$outfile” $OPTIONS -c “.setpdfwrite <</NeverEmbed [$NeverEmbedFontList $NeverEmbedCIDFontList] /AlwaysEmbed [$AlwaysEmbedFontList $AlwaysembedCIDFontList]>> setdistillerparams” -f “$infile”

  • 新しい

    #tail /usr/bin/ps2pdfwr

    exec gs $OPTIONS -q -dNOPAUSE -dBATCH -sCIDFONTMAP=CIDFnmap.ps2pdfwr -sDEVICE=pdfwrite “-sOutputFile=$outfile” $OPTIONS -c “.setpdfwrite <</NeverEmbed [$NeverEmbedFontList $NeverEmbedCIDFontList] /AlwaysEmbed [$AlwaysEmbedFontList $AlwaysembedCIDFontList]>> setdistillerparams” -f “$infile”

これで, ps2pdf -dNOKANJI がちゃんと動くようになりました….!!! \ ( ^0^)///V つまり, Type3フォントが埋め込まれなく、adobe reader で綺麗に表示できました.

問題3(日本語しおりの文字化け)

上記のsample.texから出てきたpdfのしおりはここまでだと, 文字化けが起こってしまいます… Vine Linux のEUC-JPのコードをUNICODEに変換しなければならない. 幸い事にps2jpdfとスクリプトがあってそれさえインストールすれば, ps2pdfの代わりにps2jpdfを使えばよいです. ここからダウンロードできます

http://updates.vinelinux.org/apt/4.1/i386/RPMS.extras/ps2jpdf-1.0-0vl2.noarch.rpm

普通に rpm -i すれば、 OK です.

これで, BEAMER+PSTRICKSで綺麗な日本語プレゼンが作れるはず….. 実は、現在まだまだpstricksとbeamerを探りちゅう….(^_^;;;)