platex + dvips + convbkmk + ps2pdf で文字化け

platex + dvips + convbkmk + ps2pdf で文字化け

- 浮亭 夢介 の投稿
返信数: 12

既知の質問でしたら申し訳けありません.

下記のLaTeXファイル(foo.tex)において

1) platex foo.tex
2) platex foo.tex
3) dvips foo.dvi
4) convbkmk -s foo.ps
5) ps2pdf foo-convbkmk.ps foo.pdf

と操作して,得られた foo.pdf のプロパティを見ると
添付の「property.png」のように日本語の文字化けが
ありました.対処方法よろしくお願いします.

==========================
%foo.tex
%encoding:sjis

\documentclass{jsarticle}
\usepackage{hyperref}
\hypersetup{%
bookmarksnumbered=true,%
bookmarkstype=toc,%
colorlinks=true,%
pdftitle={文芸作品},%
pdfsubject={吾輩は猫である,他},%
pdfauthor={進撃の巨人},%
pdfkeywords={TeX,PostScript,夏目漱石}}

\begin{document}
\section{文芸作品について}
\subsection{吾輩は猫である}
吾輩は猫である.名前はまだ無い.

\subsection{草枕}
山路を登りながら,こう考えた.

\end{document}
==========================



添付 property.png
浮亭 夢介 への返信

Re: platex + dvips + convbkmk + ps2pdf で文字化け

- 浮亭 夢介 の投稿
追加です.

ruby ver 1.9.3

convbkmk ver 0.08

です.
浮亭 夢介 への返信

Re: platex + dvips + convbkmk + ps2pdf で文字化け

- Akira Kakuto の投稿
よくわかりませんが,おそらく

... /Subject
(吾輩は猫である,他)
... /Keywords
(TeX,PostScript,夏目漱石)

のように,contents が次行にある場合をうまく扱えないのでは
ないかと思います(間違っていたらすみません)。
すぐに fix してもらうと思います。
Shift_JIS の場合は,bkmk2uni でもできますから,それまで

bkmk2uni foo2.ps
ps2pdf foo2.ps foo.pdf

を使って下さい。
Akira Kakuto への返信

Re: platex + dvips + convbkmk + ps2pdf で文字化け

- Akira Kakuto の投稿
> bkmk2uni foo2.ps
> ps2pdf foo2.ps foo.pdf

上の使用法は,明らかに間違っていますから,
bkmk2uni --help
による使用法に従ってください。
Akira Kakuto への返信

Re: platex + dvips + convbkmk + ps2pdf で文字化け

- 匿 名 の投稿

64-bit バイナリの bkmk2uni で処理しようとすると bkmk2uni の動作が停止します.
bkmk2uni.c の qsort を使用する箇所で qsort の第3引数に固定値の 4 を渡していますが
p はポインタの配列なので正しくはポインタのサイズを渡さないといけないと思います.
32-bit Windows ではポインタのサイズは 4-byte ですが
64-bit Windows ではポインタのサイズは 8-byte になります.
以下のように修正したところ動作するようになりました.

$ diff -urN bkmk2uni.c bkmk2unifix.c
--- bkmk2uni.c  2014-02-27 15:22:46 +0900
+++ bkmk2unifix.c       2014-02-27 15:29:01 +0900
@@ -1787,7 +1787,7 @@
       }
     }
     else {         /* some p[i] non null */
-      qsort((unsigned char **)&p, (size_t)NOFSTR, (size_t)4, cmp);
+      qsort((unsigned char **)&p, (size_t)NOFSTR, sizeof(unsigned char *), cmp);
       q = b_in;
       while(*q == ' ') q++;
       if(inproc == 0) {
Akira Kakuto への返信

Re: platex + dvips + convbkmk + ps2pdf で文字化け

- Akira Kakuto の投稿
> Shift_JIS の場合は,bkmk2uni でもできますから

UTF-8 (つまり uplatex 用) についても
サポートしておきました。オプション -u :

bkmk2uni -u ...
浮亭 夢介 への返信

Re: platex + dvips + convbkmk + ps2pdf で文字化け

- t tk の投稿
ご指摘のケースは気づいていませんでした。
添付の修正で直るのではないか、と思います。
もう少しテストして大丈夫でしたらリリースします。

t tk への返信

Re: platex + dvips + convbkmk + ps2pdf で文字化け

- t tk の投稿
浮亭 夢介様

バグ報告ありがとうございました。

修正したものを convbkmk.rb Ver0.09 としてuptexのページでリリースしました。
CTANにも投稿したので、そちらもそのうち反映されると思います。


t tk への返信

Re: platex + dvips + convbkmk + ps2pdf で文字化け

- Akira Kakuto の投稿
バイナリ セクションがあるとき,ファイル入出力の場合は問題ありませんが,
フィルタの場合,Windows では出力が壊れるようです。
Unix では問題ないはずです。
Windows では以下のパッチで壊れないようになりました。

--- convbkmk.rb.orig Mon Mar 03 18:16:40 2014
+++ convbkmk.rb Mon Mar 03 18:14:08 2014
@@ -489,8 +489,8 @@

### main
if ARGV.size == 0
-  ifile = STDIN
-  ofile = STDOUT
+  ifile = STDIN.binmode
+  ofile = STDOUT.binmode
  file_treatment(ifile, ofile, enc)
else
  ARGV.each {|fin|
Akira Kakuto への返信

Re: platex + dvips + convbkmk + ps2pdf で文字化け

- t tk の投稿
角藤様

ご指摘ありがとうございます。
Windows以外では、示していただいたパッチは(無視されて)問題ないと理解しました。convbkmk.rb Ver0.10 としてuptexのページでリリースしました。
CTANにも投稿したので、そちらもそのうち反映されると思います。