[ubuntu-jp:6076] Re: 日本語のマンページを ps に直すには
KUBO Koichi
k @ obuk.org
2018年 11月 4日 (日) 09:10:10 UTC
ありがとうございます。
$ sudo apt install mandoc paps
$ zcat `man -w apt` | mandoc | sed 's/\x5f\x08//g; s/\x08.//g' | paps
| ps2pdf - apt.pdf
試してみました。 groff より mandoc の方が扱いやすいですね。
皆さんのご助言から、日本語のマンページ utf8 から mandoc や groff で直
接 ps を出力するのは難しい、フォーマットや文字飾りを諦めらめられるなら
html 出力など別の形式を介して ps を出力する方がやさしいといったことな
ど勉強になりました。
フォーマットや文字飾りは私も詳しくありませんが、たとえばページ割のよう
なものでは、やもめ widow、表や図形の分割、再配置等、読みやすくする工夫
があると聞きました。おそらく簡単に無くせるようなものではないのだと思い
ます。
しばらくの間、皆さんからご案内頂いた方法を使いながら少し時間を置いて考
えてみようと思います。
くぼ
On 11/4/18 1:03 AM, Mitsuya Shibata wrote:
> 久保さん、
>
>>> どなたか日本語のマンページを ps に直す方法を教えて頂けないでしょうか。
>
> ものすごく無理矢理感がありますが、以下のような感じでいかがでしょう?
>
> $ sudo apt install mandoc paps
> $ zcat `man -w apt` | mandoc | sed 's/\x5f\x08//g; s/\x08.//g' | paps
> | ps2pdf - apt.pdf
>
> ただし、もっとスマートなやり方がありそうな気はしています。
>
> 1. zcatは任意のsectionのpathをmandocに渡す方法が
> わからなかったためにこうしてます。
>
> 2. mandocはgroffではうまくutf8なplain textにできなかったために
> 代替として使っています。
>
> 3. sedはmandocが出す書式指定子(太字と下線)を消しています。
> 他にもケアしなければいけないものがあるかもしれません。
>
> 4. papsはUTF-8なtextをpsに変換するツールです。
> glibとかpangoに依存しているので、デスクトップ環境以外だと
> 依存関係でいろいろ入ってしまうかもしれません。
>
> 5. ps2pdfは単純にEvinceで確認したかったから使っています。
> PostScriptで良ければこの手前で止めて問題ありません。
>
> ただしフォーマットがすごく残念な感じになるので、
> mandoc -T htmlで一度HTMLにしてからPDFにするほうが
> まだまともかもしれません。
>
> 以上、よろしくお願いいたします。
>
> 2018年11月3日(土) 21:38 KUBO Koichi <k @ obuk.org>:
>>
>> 皆さん、ありがとうございます。ここまでをまとめてみました。
>>
>> 1. 真っ新の ubuntu 18.04 を起動します。
>>
>> https://app.vagrantup.com/boxes/search
>>
>> 2. ローケル ja_JP.utf8 を追加します。
>>
>> $ locale -a | grep ^ja
>> $ sudo locale-gen ja_JP.utf8
>>
>> いまのロケールは
>>
>> $ localectl
>> System Locale: LANG=en_US.UTF-8
>> VC Keymap: n/a
>> X11 Layout: us
>> X11 Model: pc105
>>
>> 3. 日本語のマンページをターミナルに表示します。
>>
>> $ sudo apt-get -y install manpages-ja
>> $ man -L ja man
>>
>> ターミナルでは問題なく表示できます。
>>
>> 4. しかし、man -t (ps 出力) では警告が出力されます。
>>
>> $ man -L ja -t man >/dev/null
>> <standard input>:21: warning: can't find special character `u30DE'
>> <standard input>:21: warning: can't find special character `u30CB'
>> <standard input>:21: warning: can't find special character `u30E5'
>> ...
>>
>> uXXXX は UCS-2BE で、u30DE u30CB u30E5 ... はマニュ ... になります。
>>
>> # これが [ubuntu-jp:6062] の質問になりました。
>>
>>
>> (この先は、昨夜、試行錯誤した際のメモから拾いました)
>>
>> 5. 日本語フォントを追加します。
>>
>> sudo apt-get install fonts-ipaexfont
>>
>> 5-2. groff にフォントを追加します。
>>
>> 上の 5. でインストールされた ipaexg.ttf と ipaexm.ttf を groff では
>> G と M という名前にします。手順とスクリプトは次を使いました。
>>
>> 手順 - http://www.schaffter.ca/mom/momdoc/appendices.html
>> スクリプト - http://www.schaffter.ca/mom/bin/install-font.sh
>>
>> G と M は、jgroff に敬意を表しました。jgroff は、EUC-JP なら日本語の
>> マンページから ps を出力できますが、いまは UTF-8 のようで残念です。
>>
>> 5-3. devps (grops) の DESC ファイルを直します。
>>
>> /usr/share/groff/1.22.3/font/devps/DESC を site-fonts/devps/ にコピー
>> し、jgroff の DESC から必要と思われる行を加えました。
>>
>> fonts 11 0 0 0 0 0 SS S ZD ZDR G M
>> unicode
>>
>> DESC の説明は groff_font(5) にあります。DESC を作り unicode を追加する
>> と、上の 4. の警告 warning: can't find ... が止まります。
>>
>> 6. groff を実行します。
>>
>> groff の入力ファイルを用意します。途中で日本語のフォントを指定します。
>>
>> $ vi hello
>> .ft TB
>> hello
>> .ft M
>> こんにちは
>>
>> groff でフォントの指定は https://www.gnu.org/software/groff/manual/
>> html_node/Changing-Fonts.html にあります。
>>
>> 6-2. フォントのディレクトリを指定して groff を実行します。
>>
>> $ groff -F フォントディレクトリ hello # hello は 6 で作成したファイル
>>
>> 出力された ps の一部を示します。
>>
>> /F0 10/Times-Bold @ 0 SF(hello)72 12 Q/F1 10/Ryumin-Light-UniJIS-UTF8-H SF
>> <e3e3e3abe3a1e3af>2.5 E 0 Cg EP
>>
>> 「こんにちは」は utf8 で <e38193e38293e381abe381a1e381af> ですが、ここ
>> では <e3e3e3abe3a1e3af> になったようです。 gs に入力すると文字化けしま
>> す。とりあえず、手で直せば文字化けは直りますが、、、
>>
>> もっと簡単なものかと思いましたが、なかなか難しいものです。
>>
>> あと少しで ps 出力できそうに見えなくもありませんが、まったくの見当違い
>> かもしれません。どうなんでしょう。
>>
>>
>> On 11/3/18 7:22 AM, Ito Jazz wrote:
>>> 久保様
>>> はじめまして、伊藤と申します。
>>> 小生、UBUNTU歴4年目のアマチュアです。
>>>
>>> 下記リンク先がご質問の参考になるかも?
>>> https://sekisuiseien.com/computer/10753/
>>>
>>> 全くトンチンカンであれば、ご容赦ください。
>>> ご参考になればと思い、ご連絡させていただきます。
>>>
>>>
>>>
>>> 2018年11月2日(金) 10:07 KUBO Koichi <k @ obuk.org <mailto:k @ obuk.org>>:
>>>
>>> はじめまして久保と申します。
>>>
>>> マンページを印刷して読みたくなり、man -t で ps を出力しましたが、漢字
>>> やかなが欠けてしまいます。
>>>
>>> $ LANG=ja_JP.UTF-8 man -t man > man.ps <http://man.ps> # 漢字やか
>>> なが欠ける?
>>>
>>> テキストで出力してターミナルで参照する分には問題はありません。手元の
>>> ubuntu 16.04 と 18.04 のどちらも同じ結果になります。
>>>
>>> 問題を特定するために、下記の小さな日本語の ps を gs に入力しましたが、
>>> 漢字やかなが欠けることはありません。
>>>
>>> /Ryumin-Light-UniJIS-UTF8-H findfont 24 scalefont setfont
>>> 10 10 moveto (お早うございます) show
>>>
>>> どなたか日本語のマンページを ps に直す方法を教えて頂けないでしょうか。
>>>
>>> よろしくお願い致します。
>>>
ubuntu-jp メーリングリストの案内