第11章 データー変換

目次

11.1. テキストデーター変換ツール
11.1.1. テキストファイルをiconvを使って変換
11.1.2. ファイルがUTF-8であるとiconvを使い確認
11.1.3. iconvを使ってファイル名変換
11.1.4. 行末変換
11.1.5. タブ変換
11.1.6. 自動変換付きエディター
11.1.7. プレーンテキスト抽出
11.1.8. プレーンテキストデーターをハイライトとフォーマット
11.2. XMLデーター
11.2.1. XMLに関する基本ヒント
11.2.2. XML処理
11.2.3. XMLデーター抽出
11.3. 印刷可能データー
11.3.1. Ghostscript
11.3.2. 2つのPSやPDFファイルをマージ
11.3.3. 印刷可能データーユーティリティー
11.3.4. CUPSを使って印刷
11.4. タイプセッティング
11.4.1. roffタイプセッティング
11.4.2. TeX/LaTeX
11.4.3. マニュアルページを綺麗に印刷
11.4.4. マニュアルページの作成
11.5. メールデーター変換
11.5.1. メールデーターの基本
11.6. グラフィクスデーターツール
11.7. その他のデーター変換

Debianシステム上のデーターフォーマット変換のツールとティップを記します。

標準に準拠したツールは非常に良い状態ですが、プロプライタリデーターフォーマットのサポートは限定的です。

11.1. テキストデーター変換ツール

テキストデーター変換のための次のパッケージが著者の目に止まりました。

表11.1 テキストデーター変換ツールのリスト

パッケージ ポプコン サイズ キーワード 説明
libc6 * V:96, I:99 9932 文字セット iconv(1)によるロケール間のテキスト符号化方式変換ソフト(基本的)
recode * V:1.5, I:7 772 文字セット+行末文字 ロケール間のテキスト符号化方式変換ソフト(機能豊富、より多いエリアスと機能)
konwert * V:0.4, I:4 192 文字セット ロケール間のテキスト符号化方式変換ソフト(高級機能)
nkf * V:0.3, I:2 300 文字セット 日本語のための文字セット翻訳ソフト
tcs * V:0.02, I:0.16 544 文字セット 文字セット翻訳ソフト
unaccent * V:0.02, I:0.09 60 文字セット アクセント付き文字をアクセントの無しの等価文字に置換
tofrodos * V:1.3, I:8 80 行末文字 DOSとUnix間のテキストフォーマット変換ソフト: fromdos(1)とtodos(1)
macutils * V:0.07, I:0.7 356 行末文字 MacintoshとUnix間のテキストフォーマット変換ソフト: frommac(1) and tomac(1)

11.1.1. テキストファイルをiconvを使って変換

[ティップ] ティップ

iconv(1)はlibc6パッケージの一部として提供されてい、文字の符号化方式変換のために実質的に全てのシステムで常に使用可能です。

次のようにするとテキストファイルをiconv(1)を使って変換できます。

$ iconv -f encoding1 -t encoding2 input.txt >output.txt

符号化方式(エンコーディング)値をマッチングする際には、大文字小文字の区別は無く、"-"や"_"を無視します。"iconv -l"コマンドにより、サポートされている符号化方法が確認できます。

表11.2 符号化方式値とその使い方リスト

符号化方式値 使い方
ASCII. 情報交換用米国標準コード(ASCII); アクセント文字無しの7ビットコード
UTF-8 全現代的OSのための現行多言語標準
ISO-8859-1 西欧州言語用の旧標準、ASCII + アクセント文字
ISO-8859-2 東欧州言語用の旧標準、ASCII + アクセント文字
ISO-8859-15 西欧州言語用の旧標準、ユーロ文字付きISO-8859-1
CP850 コードページ850、西欧州言語用グラフィック文字付きMicrosoft DOS文字、ISO-8859-1の変種
CP932 コードページ932、日本語用Microsoft WindowsスタイルShift-JISの変種
CP936 コードページ936、簡体中国語用Microsoft WindowsスタイルGB2312GBKGB18030の変種
CP949 コードページ949、韓国語用Microsoft WindowsスタイルEUC-KRか統一ハングルコードの変種
CP950 コードページ950、繁体中国語用Microsoft WindowsスタイルBig5の変種
CP1251 コードページ1251、キリル文字用Microsoft Windowsスタイル符号化方式
CP1252 コードページ1252、西欧州言語用Microsoft WindowsスタイルISO-8859-15の変種
KOI8-R キリル文字用の旧ロシアのUNIX標準
ISO-2022-JP 7ビットコードのみを用いる日本語e-mailの標準符号化方式
eucJP Shift-JISとはまったく違う、旧日本のUNIX標準8ビットコード
Shift-JIS 日本語のためのJIS X 0208 Appendix 1標準(CP932参照)

[注記] 注記

一部の符号化方式(エンコーディング)はデーター変換のみサポートされており、ロケール値としては使われません(「符号化方式の基本」参照)。

ASCIIISO-8859文字セットのような1バイトに収まる文字セットに付いては、文字の符号化方式(エンコーディング)とは文字セットとほとんど同じ事を意味します。

日本語のためのJIS X 0213や実質的に全ての言語のためのユニコード文字セット(UCS, Unicode, ISO-10646-1)のような多くの文字を含む文字セットの場合には、バイトデーター列に落とし込む多くの符号化手法があります。

これらに関しては、文字セットと文字符号化方式の間にはっきりとした区別があります。

コードページは、一部のベンダー固有のコードページで文字符号化テーブルと同義語として使用されています。

[注記] 注記

ほとんどの符号化システムが7ビット文字に関してASCIIと同じコードを共有している事を覚えておいて下さい。もちろん例外はありますが。もし古い日本語のCプログラムやURLのデーターをカジュアルにシフトJISと呼ばれている符号化フォーマットからUTF-8フォーマットに変換する際には、期待される結果を得るために"shift-JIS"ではなく"CP932"を使いましょう: 0x5C → "\" と 0x7E → "~"。こうしないと、これらが間違った文字に変換されます。

[ティップ] ティップ

recode(1)は、十分使えますし、iconv(1)とfromdos(1)とtodos(1)とfrommac(1)とtomac(1)を組み合わせ以上の機能を提供します。詳しくは"info recode"を参照下さい。

11.1.2. ファイルがUTF-8であるとiconvを使い確認

次のようにするとテキストファイルがUTF-8でエンコードされているとiconv(1)を使って確認できます。

$ iconv -f utf8 -t utf8 input.txt >/dev/null || echo "non-UTF-8 found"
[ティップ] ティップ

最初の非UTF-8文字を見つけるには上記例中で"--verbose"オプションを使います。

11.1.3. iconvを使ってファイル名変換

次に、単一ディレクトリー中の旧OS下で作成されたファイル名から現代的なUTF-8のファイル名に符号化方式を変換するスクリプト例を示します。

#!/bin/sh
ENCDN=iso-8859-1
for x in *;
 do
 mv "$x" $(echo "$x" | iconv -f $ENCDN -t utf-8)
done

"$ENCDN"変数値は、表11.2「符号化方式値とその使い方リスト」中の符号化方式(エンコーディング)値によって設定されるべきです。

もっと複雑な場合にはそのようなファイル名を含有するファイルシステム(ディスクドライブ上のパーティション等)をmount(8)オプションに適切な符号化方式(エンコーディング)(「ファイル名の符号化方式」参照)を指定してマウントし、その全内容を他のUTF-8でマウントされたファイルシステムに"cp -a"コマンドを使ってコピーします。

11.1.4. 行末変換

テキストファイルのフォーマット、特に行末(EOL)コード、はプラットフォーム依存です。

表11.3 異なるプラットフォーム上での行末スタイルのリスト

プラットフォーム 行末コード コントロール 10進数 16進数
Debian (unix) LF ^J 10 0A
MSDOSとWindows CR-LF ^M^J 13 10 0D 0A
AppleのMacintosh CR ^M 13 0D

行末(EOL)フォーマット変換プログラムに関して、fromdos(1)とtodos(1)とfrommac(1)とtomac(1)は非常に便利です。recode(1)もまた役に立ちます。

[注記] 注記

python-moinmoinパッケージ用のwikiのデーター等のDebianシステム上の一部データーは、MSDOSスタイルのCR-LFを行末コードとして用います。あくまで上記は一般則と言うだけです。

[注記] 注記

ほとんどのエディター(例えばvimemacsgedit等)はMSDOSスタイルの行末を透過的に取り扱えます。

[ティップ] ティップ

MSDOSとUnixスタイルが混在する行末スタイルをMSDOSスタイルに統一するには、todos(1)を使う代わりに"sed -e '/\r$/!s/$/\r/'"を使う方がより好ましいです。(例えば、2つのMSDOSスタイルファイルをdiff3(1)を使ってマージした後。) todosは全ての行にCRを追加するというのがこの理由です。

11.1.5. タブ変換

タブコードを変換するための良く使われる専用プログラムがいくつかあります。

表11.4 bsdmainutilscoreutilsパッケージ中のタブ変換コマンドのリスト

機能 bsdmainutils coreutils
タブからスペースに展開する "col -x" expand
スペースからタブに逆展開する "col -h" unexpand

indentパッケージにあるindent(1)コマンドはCプログラム中のホワイトスペースを完全にリフォーマットします。

Editor programs such as vim and やemacs等のエディタープログラムもまたタブ変換に使えます。例えばvimを使うと、":set expandtab"として":%retab"するコマンドシーケンスでタブ変換が出来ます。これを元に戻すのは、":set noexpandtab"として":%retab!"とするコマンドシーケンスです。

11.1.6. 自動変換付きエディター

vimプログラムなどのインテリジェントな現代的なエディターは大変良く出来ていていかなる符号化方式やいかなるファイルフォーマットでも機能します。これらのエディターをUTF-8ロカール下でUTF-8を扱えるコンソール中で使用することで最良の互換性が得られます。

latin1(iso-8859-1)符号化方式で保存された古い西欧州のUnixテキストファイル"u-file.txt"は、単純にvimを使って次のようにして編集出来ます。

$ vim u-file.txt

vim中の符号化方式自動判定機構が、最初はUTF-8符号化方式を仮定し、それが上手く行かなかった際にlatin1を仮定するから可能です。

latin2(iso-8859-2)符号化方式で保存された古いポーランドのUnixテキストファイル"pu-file.txt"は、vimを使って次のようにして編集出来ます。

$ vim '+e ++enc=latin2 pu-file.txt'

eucJP符号化方式で保存された古い日本のUnixテキストファイル"ju-file.txt"は、vimを使って次のようにして編集出来ます。

$ vim '+e ++enc=eucJP ju-file.txt'

shift-JIS符号化方式(より正確には: CP932)で保存された古い日本のMS-Windowsテキストファイル"jw-file.txt"は、vimを使って次のようにして編集出来ます。

$ vim '+e ++enc=CP932 ++ff=dos jw-file.txt'

"++enc"や"++ff"オプションを使ってファイルが開かれた時は、Vimコマンドライン中の":w"がオリジナルのファイルフォーマットでオリジナルのファイルを上書きします。例えば":w ++enc=utf8 new.txt"等とVimコマンドライン中で保存フォーマットや保存ファイル名を指定することも出来ます。

vimオンラインヘルプ中のmbyte.txt "multi-byte text support"と、"++enc"に使われるロケール値に関する表11.2「符号化方式値とその使い方リスト」を参照下さい。

emacsファミリーのプログラムもまた同様の機能の実行ができます。

11.1.7. プレーンテキスト抽出

以下はウェッブページを読みテキストファイルに落とします。ウェッブから設定を取ってくる時やgrep(1)等の基本的なUnixテキストツールをウェッブページに適用するときに非常に有用です。

$ w3m -dump http://www.remote-site.com/help-info.html >textfile

同様に、次を用いることで他のフォーマットからプレーンテキストデーターを抽出出来ます。

表11.5 プレーンテキストデーター抽出ツールのリスト

パッケージ ポプコン サイズ キーワード 機能
w3m * V:22, I:84 1964 html→text "w3m -dump"コマンドを使うHTMLからテキストへの変換ソフト
html2text * V:13, I:39 308 html→text 先進的HTMLからテキストへの変換ソフト(ISO 8859-1)
lynx * I:24 248 html→text "lynx -dump"コマンドを使うHTMLからテキストへの変換ソフト
elinks * V:2, I:6 1444 html→text "elinks -dump"コマンドを使うHTMLからテキストへの変換ソフト
links * V:3, I:9 1372 html→text "links -dump"コマンドを使うHTMLからテキストへの変換ソフト
links2 * V:0.9, I:4 3280 html→text "links2 -dump"コマンドを使うHTMLからテキストへの変換ソフト
antiword * V:1.1, I:2 796 MSWord→text,ps MSWordファイルをプレーンテキストかpsに変換
catdoc * V:0.8, I:2 2664 MSWord→text,TeX MSWordファイルをプレーンテキストかTeXに変換
pstotext * V:0.8, I:1.4 160 ps/pdf→text PostScriptとPDFファイルからテキストを抽出
unhtml * V:0.02, I:0.17 76 html→text HTMLファイルからマークアップタグを削除
odt2txt * V:0.7, I:1.3 104 odt→text OpenDocumentテキストからテキストへの変換ソフト
wpd2sxw * V:0.02, I:0.13 156 WordPerfect→sxw WordPerfectからOpenOffice.org/StarOffice writerへの文書変換ソフト

11.1.8. プレーンテキストデーターをハイライトとフォーマット

次のようにしてプレーンテキストデーターをハイライトとフォーマット出来ます。

表11.6 プレーンテキストデーターをハイライトするツールのリスト

パッケージ ポプコン サイズ キーワード 説明
vim-runtime * V:3, I:37 24572 ハイライト ":source $VIMRUNTIME/syntax/html.vim"を使ってソースコードをHTMLに変換するためのVim MACRO
cxref * V:0.07, I:0.5 1104 c→html CプログラムからlatexかHTMLへの変換ソフト(C言語)
src2tex * V:0.02, I:0.2 1968 ハイライト 多くのソースコードのTeXへの変換ソフト(C言語)
source-highlight * V:0.14, I:1.0 3520 ハイライト 多くのソースコードをHTMLとXHTMLとLaTeXとTexinfoとANSIカラーエスケープシーケンスとDocBookにハイライト付きで変換(C++)
highlight * V:0.06, I:0.3 732 ハイライト 多くのソースコードをHTMLとXHTMLとLaTeXとTexとAXSL-FOにハイライト付きで変換(C++)
grc * V:0.03, I:0.13 164 text→color 汎用着色化ソフト(Python)
txt2html * V:0.07, I:0.4 296 text→html テキストからHTMLへの変換ソフト(Perl)
markdown * V:0.08, I:0.5 96 text→html markdownテキスト文書の(X)HTMLへのフォーマット化ソフト(Perl)
asciidoc * V:0.15, I:0.9 4644 text→any AsciiDocテキスト文書のXML/HTMLへのフォーマット化ソフト(Python)
python-docutils * V:0.3, I:3 5508 text→any ReStructuredテキスト文書のXMLへのフォーマット化ソフト(Python)
txt2tags * V:0.07, I:0.4 1028 text→any テキストからHTMLとSGMLとLaTeXとman pageとMoinMoinとMagic PointとPageMakerへの文書変換(Python)
udo * V:0.01, I:0.08 556 text→any 汎用文書-テキスト処理ユーティリティー(C言語)
stx2any * V:0.00, I:0.06 484 text→any 構造化プレーンテキストからたのフォーマットへの文書変換ソフト(m4)
rest2web * V:0.01, I:0.11 576 text→html ReStructured Textからhtmlへの文書変換ソフト(Python)
aft * V:0.01, I:0.07 340 text→any "自由フォーム"文書準備システム(Perl)
yodl * V:0.01, I:0.06 520 text→any プリ文書言語とその処理用のツール(C言語)
sdf * V:0.01, I:0.09 1940 text→any 単純文書処理ソフト(Perl)
sisu * V:0.00, I:0.07 7524 text→any 文書の構造化と出版と探索の枠組み(Ruby)

11.2. XMLデーター

Extensible Markup Language (XML)は構造化情報を含む文書のためのマークアップ言語です。

XML.COMにある入門情報を参照下さい。

11.2.1. XMLに関する基本ヒント

XMLテキストはちょっとHTMLのようにも見えます。これを使うと一つの文書から複数のフォーマットのアウトプット管理できるようになります。簡単なXMLシステムの一つはここで使っているdocbook-xslパッケージです。

各XMLファイルは次のような標準的なXML宣言でスタートします。

<?xml version="1.0" encoding="UTF-8"?>

XML要素の基本的シンタックスは次のようにマークアップされます。

<name attribute="value">content</name>

空のXML要素は次の短縮形を使ってマークアップされます。

<name attribute="value"/>

上記例中の"attribute="value""はオプションです。

XML中のコメントセクションは次のようにマークアップされます。

<!-- comment -->

マークアップを追加する以外に、XMLは次の文字に関して事前定義されたエンティティを使い内容を少し改変する必要があります。

表11.7 XMLで事前定義されているエントリーのリスト

事前定義されたエンティティ 変換される前の文字
&quot; " : 引用符
&apos; ' : アポストロフィ
&lt; < : 以下
&gt; > : 以上
&amp; & : アンパサンド

[注意] 注意

"<"と"&"はアトリビュートやエレメントには使えません。

[注記] 注記

例えば"&some-tag:"等のSGMLスタイルのユーザー定義エンティティが使われた場合、他の定義は無効で最初の定義が有効です。エンティティ定義は"<!ENTITY 何らかのタグ "エンティティ値">"と表現されます。

[注記] 注記

As long as the XMLのマークアップがタグ名の何らかの組み合わせで(あるデーターを内容としてであれアトリビュート値としてであれ)整合性を持ってされている限り、他のXMLの変換は拡張可能スタイルシート言語変換(XSLT)を使うととっても簡単な作業です。

11.2.2. XML処理

拡張可能スタイルシート言語(XSL)のようなXMLファイルを処理するツールは沢山あります。

基本的に、良くできたXMLファイルを一度作ると、いかなるフォーマットへも拡張可能なスタイルシート言語変換(XSLT)を使って変換できます。

フォーマットオブジェクト用拡張可能スタイルシート言語(XSL-FO)がフォーマットのための答えとなるはずです。fopパッケージはまだDebianの(mainではなく)contribアーカイブにまだあります。このため。通常XSLTを使ってLaTeXコードがXMLから作成され、LaTeXシステムを使ってDVIやPostScriptやPDF等のプリンタブルなファイルが作成されます。

表11.8 XMLツールのリスト

パッケージ ポプコン サイズ キーワード 説明
docbook-xml * I:51 2488 xml DocBook用XMLドキュメントタイプ定義(DTD)
xsltproc * V:5, I:49 152 xslt XSLTコマンドラインプロセスソフト(XML→ XML, HTML, plain text, 他)
docbook-xsl * V:0.7, I:7 12792 xml/xslt DocBook XMLをXSLTを使って各種アウトプットへ処理するXSLスタイルシート
xmlto * V:0.3, I:2 268 xml/xslt XSLTを用いてXMLから全てへの変換ソフト
dblatex * V:0.3, I:1.9 6820 xml/xslt XSLTを使ってDocbookファイルをDVI, PostScript, PDF文書へ変換
fop * V:0.19, I:1.4 2296 xml/xsl-fo Docbook XMLファイルをPDFに変換

XMLは標準一般化マークアップ言語(SGML)のサブセットなので、ドキュメントスタイル構文規程言語(DSSSL)等のSGML用の広範なツールで処理できます。

表11.9 仮想化ツールのリスト

パッケージ ポプコン サイズ キーワード 説明
openjade * V:0.5, I:3 1212 dsssl ISO/IEC 10179:1996標準DSSSLプロセッサ(最新版)
openjade1.3 * V:0.02, I:0.18 2336 dsssl ISO/IEC 10179:1996標準DSSSLプロセッサ(1.3.x版)
jade * V:0.5, I:2 1056 dsssl James Clarkの標準DSSSLプロセッサ(1.2.x版)
docbook-dsssl * V:0.7, I:4 3100 xml/dsssl DocBook XMLを各種出力フォーマットにDSSSLを使って処理するためのDSSSLスタイルシート
docbook-utils * V:0.2, I:2 440 xml/dsssl docbook2*コマンドでDSSSLを使ってDocBookファイルを他のフォーマットに(HTML, RTF, PS, man, PDF)変換するなどのユーティリティー
sgml2x * V:0.00, I:0.09 216 SGML/dsssl DSSSLスタイルシートを使うSGMLやXMLからの変換ソフト

[ティップ] ティップ

GNOMEyelp is sometimes handy to read DocBook XML files directly since it renders decently on X.

11.2.3. XMLデーター抽出

他のフォーマットから以下を使うとHTMLとかXMLのデーターを抽出出来ます。

表11.10 テキストデーター変換ツールのリスト

パッケージ ポプコン サイズ キーワード 説明
wv * V:1.3, I:3 2136 MSWord→any Microsoft WordからHTMLやLaTeX等への文書変換ソフト
texi2html * V:0.4, I:3 2076 texi→html TexinfoからHTMLへの変換ソフト
man2html * V:0.2, I:1.4 372 manpage→html manpageからHTMLへの変換ソフト(CGIサポート)
tex4ht * V:0.3, I:2 932 tex↔html (La)TeXとHTML間の変換ソフト
xlhtml * V:0.5, I:1.4 184 MSExcel→html MSExcel .xlsからHTMLへの変換ソフト
ppthtml * V:0.5, I:1.4 120 MSPowerPoint→html MSPowerPointからHTMLへの変換ソフト
unrtf * V:0.4, I:1.0 276 rtf→html RTFからHTML等への文書変換ソフト
info2www * V:0.5, I:1.3 156 info→html GNU infoからHTMLへの変換ソフト(CGIサポート)
ooo2dbk * V:0.03, I:0.2 941 sxw→xml OpenOffice.org SXW文書からDocBook XMLへの変換ソフト
wp2x * V:0.01, I:0.08 240 WordPerfect→any WordPerfect 5.0と5.1ファイルからTeXとLaTeXとtroffとGMLとHTMLへの変換ソフト
doclifter * V:0.00, I:0.04 420 troff→xml troffからDocBook XMLへの変換ソフト

非XMLのHTMLファイルの場合は、これらを整合性あるXMLであるXHTMLに変換できます。XHTMLはXMLツールで処理できます。

表11.11 仮想化ツールのリスト

パッケージ ポプコン サイズ キーワード 説明
libxml2-utils * V:5, I:51 156 xml↔html↔xhtml xmllint(1) (シンタクスチェック、リフォーマット、整形、他)を含むコマンドラインXMLツール
tidy * V:1.4, I:12 108 xml↔html↔xhtml HTMLシンタックスチェックソフトとリフォーッマトソフト

一度訂正なXMLが生成されれば、XSLT技術を使ってマークアップの文脈他に基づきデーターを抽出出来ます。

11.3. 印刷可能データー

Debianシステム上では印刷可能なデーターはPostScriptフォーマットで表現されます。共通Unix印刷システム(CUPS)は非PostScriptプリンタ用のラスタ化のバックエンドプログラムとしてGhostscriptを使用します。

11.3.1. Ghostscript

印刷データー処理の核心はラスタ画像を生成するGhostscriptというPostScript (PS)インタープリタです。

最新のArtifexからのアップストリーム版Ghostscriptは統合リリースである8.60リリースにてAFPLからGPLにライセンス変更され最新のESPバージョンによるCUPS関連等の変更をマージしました。

表11.12 Ghostscript PostScriptインタープリタのリスト

パッケージ ポプコン サイズ 説明
ghostscript * V:18, I:53 3180 GPL版Ghostscript PostScript/PDFインタープリタ
ghostscript-x * V:14, I:32 176 GPL版Ghostscript PostScript/PDFインタープリタ - Xディスプレーサポート
gs-cjk-resource * I:0.4 4652 gs-cjk用リソースファイル、Ghostscript CJK-TrueType拡張
cmap-adobe-cns1 * I:0.4 1620 Adobe-CNS1用CMaps(繁体中国語サポート)
cmap-adobe-gb1 * I:0.4 1612 Adobe-GB1用CMaps(簡体中国語サポート)
cmap-adobe-japan1 * I:0.9 2508 Adobe-Japan1用CMaps(日本語標準サポート)
cmap-adobe-japan2 * I:0.4 444 Adobe-Japan2用CMaps(日本語拡張サポート)
cmap-adobe-korea1 * I:0.2 920 Adobe-Korea1用CMaps(韓国語サポート)
libpoppler5 * I:11 2352 xpdf PDFビューワー準拠PDFレンダリングライブラリー
libpoppler-glib4 * V:5, I:13 492 PDFレンダリングライブラリー (GLib準拠共有ライブラリー)
poppler-data * I:0.5 12488 PDFレンダリングライブラリー用CMaps(CJKサポート: Adobe-*)

[ティップ] ティップ

"gs -h"とするとGhostscriptの設定が表示されます。

11.3.2. 2つのPSやPDFファイルをマージ

2つのPostScript (PS)Portable Document Format (PDF)ファイルはGhostscriptのgs(1)をつかってマージできます。

$ gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite -sOutputFile=bla.ps -f foo1.ps foo2.ps
$ gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=bla.pdf -f foo1.pdf foo2.pdf
[注記] 注記

PDFは、クロスプラットフォームの印刷可能フォーマットとして広範に使われていて、本質的にいくつかの追加機能や拡張された圧縮されたPSフォーマットです。

[ティップ] ティップ

コマンドラインの場合、psutilsパッケージ中のpsmerge(1)等のコマンドはPostScript文書を操作するのに便利です。pdfjamパッケージ中のコマンドはPDF文書を操作するのに便利です。pdftkパッケージのpdftk(1)もPDF文書を操作するのに便利です。

11.3.3. 印刷可能データーユーティリティー

印刷可能なデーターに用いる次のパッケージが著者の目に止まりました。

表11.13 プリントできるデーターのユーティリティーのリスト

パッケージ ポプコン サイズ キーワード 説明
poppler-utils * V:7, I:50 524 pdf→ps,text,… PDFユーティリティー: pdftops, pdfinfo, pdfimages, pdftotext, pdffonts
psutils * V:3, I:24 408 ps→ps PostScript文書変換ツール
poster * V:2, I:13 80 ps→ps PostScriptページから大きなポスターを作る
xpdf-utils * V:1.4, I:6 4688 pdf→ps,text,… PDFユーティリティー: pdftops, pdfinfo, pdfimages, pdftotext, pdffonts
enscript * V:2, I:18 2444 text→ps, html, rtf ASCIIテキストからPostScriptかHTMLかRTFかPretty-Printへの変換
a2ps * V:1.7, I:9 4288 text→ps 全てをPostScriptに変換するソフトと綺麗印刷ソフト
pdftk * V:0.8, I:4 192 pdf→pdf PDF文書変換ツール: pdftk
mpage * V:0.2, I:1.8 224 text,ps→ps シートに複数ページを印刷
html2ps * V:0.2, I:1.9 260 html→ps HTMLからPostScriptへの変換ソフト
pdfjam * V:0.3, I:1.8 112 pdf→pdf PDF文書変換ツール: pdf90, pdfjoin, pdfnup
gnuhtml2latex * V:0.09, I:0.7 24 html→latex html からlatexへの変換ソフト
latex2rtf * V:0.16, I:1.0 544 latex→rtf LaTeXからMS Wordで読めるRTFへと文書変換
ps2eps * V:1.3, I:11 116 ps→eps PostScriptからEPS(カプセル化済みPostScript)への変換ソフト
e2ps * V:0.02, I:0.14 188 text→ps 日本語符号化サポート付きのTextからPostScriptへの変換ソフト
impose+ * V:0.03, I:0.19 180 ps→ps PostScriptユーティリティー
trueprint * V:0.03, I:0.16 188 text→ps 多くのソースコード(C, C++, Java, Pascal, Perl, Pike, Sh, Verilog)のPostScriptへの綺麗印刷(C言語)
pdf2svg * V:0.08, I:0.4 60 ps→svg PDFからスケール可のベクトルグラフィクス(SVG)フォーマットへの変換ソフト
pdftoipe * V:0.02, I:0.18 648 ps→ipe PDFからIPEのXMLフォーマットへの変換ソフト

11.3.4. CUPSを使って印刷

Common Unix Printing System (CUPS)が提供する、lp(1)とlpr(1)コマンドの両方が印刷可能なデーターの印刷をカスタム化するオプションを提供します。

このエディターは次のコマンドの内のひとつを使いファイルに対し直接起動できます。

$ lp -n 3 -o Collate=True filename
$ lpr -#3 -o Collate=True filename

さらに、コマンドライン印刷とオプションに書かれているように"-o number-up=2"や"-o page-set=even", "-o page-set=odd"や"-o scaling=200"や"-o natural-scaling=200"等の印刷オプションを使ってカスタム化できます。

11.4. タイプセッティング

Unixのtroffプログラムは最初AT&Tで開発されました。それはマンページを作成するのに通常使われます。

Donald Knuth氏によって作成されたTeXは非常に強力な組版ツールでデファクト標準です。最初Leslie Lamport氏によって書かれたLaTeXはTeXの力への高レベルアクセスそ可能にします。

表11.14 タイプ設定ツールのリスト

パッケージ ポプコン サイズ キーワード 説明
texlive * I:10 120 (La)TeX 組版、校正、印刷のためのTeXシステム
groff * V:0.9, I:7 9352 troff GNU troff テキストフォーマティングシステム

11.4.1. roffタイプセッティング

伝統的には、roffが主なUnixテキスト処理システムです。roff(7)とgroff(7)とgroff(1)とgrotty(1)とtroff(1)とgroff_mdoc(7)とgroff_man(7)とgroff_ms(7)とgroff_me(7)とgroff_mm(7)と"info groff"を参照下さい。

groffパッケージをインストールすると"/usr/share/doc/groff/"中に"-me"マクロに関する良い入門書や参考書が読めます。

[ティップ] ティップ

"groff -Tascii -me -"はANSIエスケープコードを含むプレーンテキストを生成します。もしマンページのような多くの"^H"や"_"を含む出力が欲しい場合には、この代わりに"GROFF_NO_SGR=1 groff -Tascii -me -"を使います。

[ティップ] ティップ

groffが生成した"^H"や"_"をテキストから削除するには、それを"col -b -x"でフィルターします。

11.4.2. TeX/LaTeX

TeX Liveソフトウエアーディストリビューションは完全なTeXシステムを提供します。texliveメタパッケージは、ほとんどの一般的タスクに十分なTeX Liveパッケージのまともな選択を提供します。

There are many references available for TeXLaTeXに関する多くの参考書があります。

  • The teTeX HOWTO: The Linux-teTeX Local Guide
  • tex(1)
  • latex(1)
  • "The TeXbook"、Donald E. Knuth著(Addison-Wesley)
  • "LaTeX - A Document Preparation System"、Leslie Lamport著(Addison-Wesley)
  • "The LaTeX Companion"、GoossensとMittelbachとSamarin著(Addison-Wesley)

これはもっとも強力な組版環境です。多くのSGML処理ソフトはこれをバックエンドのテキスト処理ソフトとしています。多くの人がEmacsVimをソースのエディターとして使う一方、lyxパッケージが提供するLyxtexmacsパッケージが提供するGNU TeXmacsは洒落たLaTeXWYSIWYG編集環境を提供します。

多くのオンラインリソースが利用可能です。

文書が大きくなると、TeXはエラーを発生する事があります。この問題の解決には"/etc/texmf/texmf.cnf" (or more appropriately edit "/etc/texmf/texmf.d/95NonPath"中のプールの数を増やしupdate-texmf(8))を実行しなければいけません。

[注記] 注記

"The TeXbook"のTeXソースはhttp://tug.ctan.org/tex-archive/systems/knuth/dist/tex/texbook.texにあります。

このファイルには必要なマクロのほとんど全てが含まれます。この文書は7から10行をコメントして"\input manmac \proofmodefalse"を追加するとtex(1)で処理できると聞いた事があります。オンラインバージョンを使うのではなくこの本(とDonald E. Knuth氏による全ての本)を購入される事を強く勧めます。しかし、ソースはTeXの入力の非常に良い例です!

11.4.3. マニュアルページを綺麗に印刷

次のコマンドでマンページをPostScriptで上手く印刷できます。

$ man -Tps some_manpage | lpr
$ man -Tps some_manpage | mpage -2 | lpr

二番目の例は一枚のシートに2ページ印刷します。

11.4.4. マニュアルページの作成

Although writing a manual page (manpage) in the plain プレーンなtroffフォーマットでマンページ(マニュアル ページ)を書く事は可能ですが、それを作成するヘルパーパッケージがあります。

表11.15 マンページ作成を補助するパッケージのリスト

パッケージ ポプコン サイズ キーワード 説明
docbook-to-man * V:0.5, I:3 248 SGML→manpage DocBook SGMLからroff manマクロへの変換ソフト
help2man * V:0.14, I:1.1 276 text→manpage --helpからの自動マンページ生成ソフト
info2man * V:0.02, I:0.15 204 info→manpage GNU infoからPODかマンページへの変換ソフト
txt2man * V:0.03, I:0.2 88 text→manpage ベタのASCIIテキストからマンページ形式へ変換

11.5. メールデーター変換

テキストデーター変換のための次のパッケージが著者の目に止まりました。

表11.16 メールデーター変換を補助するパッケージのリスト

パッケージ ポプコン サイズ キーワード 説明
sharutils * V:3, I:46 948 メール shar(1)とunshar(1)とuuencode(1)とuudecode(1)
mpack * V:2, I:37 84 MIME MIMEメッセージの符号化と逆符号化のソフト: mpack(1)とmunpack(1)
tnef * V:0.5, I:1.5 164 ms-tnef Microsoftのみのフォーマットの"application/ms-tnef"タイプのMIMEアタッチメントを開梱
uudeview * V:0.2, I:1.3 132 メール 次のフォーマットのエンコーダーとデコーダー: uuencode, xxencode, BASE64, quoted printable, BinHex
readpst * V:0.05, I:0.3 228 PST MicrosoftのOutlook PSTファイルからmboxフォーマットへ変換

[ティップ] ティップ

インターネットメッセージアクセスプロトコル バージョン4(IMAP4)サーバー(「POP3/IMAP4サーバー」参照)は、プロプライエタリメールシステムのクライアントソフトがIMAP4サーバーも使えるように設定できる場合、プロプライエタリメールシステムからメールを取り出すのに利用できるかもしれません。

11.5.1. メールデーターの基本

Mail (SMTP)データーは7ビットに限定されるべきです。だからバイナリーデーターや8テキストデーターは7ビットのフォーマットにMultipurpose Internet Mail Extensions (MIME)と選択された文字セット(「符号化方式の基本」参照)を使ってエンコードされます。

標準のメールストレージフォーマットはRFC2822 (RFC822の更新版)により定義されるmboxフォーマットです。mbox(5) (muttパッケージが提供)を参照下さい。

欧州言語の場合、ほとんど8ビット文字が無いのでISO-8859-1文字セットとともに"Content-Transfer-Encoding: quoted-printable"が通常メールに使われます。欧州のテキストがUTF-8符号化された場合、ほとんどが7ビット文字なので"Content-Transfer-Encoding: quoted-printable"が大体使われます。

日本語には、テキストを7ビットにしておくために伝統的に"Content-Type: text/plain; charset=ISO-2022-JP"がメールに使われるます。しかし、古いMicrosoftシステムは適切な宣言無しにShift-JISでメールデーターを送るかもしれません。日本語のテキストがUTF-8で符号化される場合、多くの8ビットデーターを含むのでBase64が大体使われます。他のアジアの言語でも状況は同様です。

[注記] 注記

もしIMAP4サーバー(「POP3/IMAP4サーバー」参照)と話せる非Debianクライアントからあなたの非Unixメールデーターがアクセス出きるなら、あなた自身のIMAP4サーバーを実行することでメールデーターを引き出せるかもしれません。

[注記] 注記

もし他のメールストレージフォーマットを使っている場合、mboxフォーマットに移動するのが良い第一歩です。mutt(1)のような汎用クライアントプログラムはこれに非常に便利です。

メールボックスの内容はprocmail(1)とformail(1)を使って各メッセージに分割できます。

各メールメッセージはmpackパッケージにあるmunpack(1)(または他の専用ツール)を使って開梱してMIME符号化された内容を取り出せます。

11.6. グラフィクスデーターツール

印刷可能なデーターに用いる次のパッケージが著者の目に止まりました。

表11.17 画像データーツールのリスト

パッケージ ポプコン サイズ キーワード 説明
gimp * V:12, I:47 13472 画像(bitmap) GNUイメージ操作プログラム
imagemagick * V:14, I:34 316 画像(bitmap) 画像操作プログラム
graphicsmagick * V:1.5, I:3 3696 画像(bitmap) 画像操作プログラム(imagemagickのフォーク)
xsane * V:6, I:39 748 画像(bitmap) GTK+に基づくSANE(Scanner Access Now Easy)用のX11フロントエンド
netpbm * V:4, I:25 4408 画像(bitmap) 画像変換ツール
icoutils * V:0.06, I:0.4 200 png↔ico(bitmap) MS WindowsのアイコンやカーソールとPNGフォーマット間の変換(favicon.ico)
xpm2wico * V:0.02, I:0.11 80 xpm→ico(bitmap) XPMからMS Windowsアイコンフォーマットへの変換
scribus * V:0.5, I:3 26864 ps/pdf/SVG/… Scribus DTPエディター
openoffice.org-draw * V:19, I:43 9256 画像(vector) OpenOffice.org office スイート - ドロー
inkscape * V:11, I:30 87444 画像(vector) SVG(スケーラブルベクトルグラフィクス)エディター
dia-gnome * V:1.4, I:3 620 画像(vector) ダイアグラムエディター(GNOME)
dia * V:2, I:5 620 画像(vector) ダイアグラムエディター(Gtk)
xfig * V:1.8, I:4 1684 画像(vector) X11下でインテラクティブ生成するソフト
pstoedit * V:1.3, I:10 880 ps/pdf→画像(vector) PostScriptとPDFファイルから編集可能なベクトルグラフィクスへの変換ソフト(SVG)
libwmf-bin * V:1.1, I:9 88 Windows/画像(vector) Windowsメタファイル(ベクトル画像データー)変換ツール
fig2sxd * V:0.04, I:0.2 200 fig→sxd(vector) XFigファイルをOpenOffice.org Drawフォーマットに変換
unpaper * V:0.2, I:1.5 736 画像→画像 OCR用のスキャンしたページの後処理ツール
tesseract-ocr * V:0.5, I:2 3200 画像→テキスト HPの商用OCRエンジンの基づくフリーのOCRソフトウエアー
tesseract-ocr-eng * V:0.2, I:1.3 1760 画像→テキスト OCRエンジンデーター: tesseract-ocrの英文用言語ファイル
gocr * V:1.0, I:6 480 画像→テキスト フリーOCRソフト
ocrad * V:0.7, I:6 364 画像→テキスト フリーOCRソフト
gtkam * V:0.3, I:1.9 1348 画像(Exif) デジタルカメラ写真を操作(GNOME) - GUI
gphoto2 * V:0.4, I:2 1008 画像(Exif) デジタルカメラ写真ファイルを操作(GNOME) - コマンドライン
kamera * V:0.9, I:18 236 画像(Exif) デジタルカメラ写真を操作(KDE)
jhead * V:0.6, I:3 128 画像(Exif) Exifに準拠のJPEG(デジタルカメラ写真)ファイルの非画像部を操作
exif * V:0.2, I:1.7 184 画像(Exif) JPEGファイル中のEXIF情報を表示するコマンドラインユーティリティー
exiftags * V:0.16, I:1.0 248 画像(Exif) デジタルカメラのJPEGファイルからExifタグを読むユーティリティー
exiftran * V:0.4, I:2 92 画像(Exif) デジタルカメラのjpeg画像を変換
exifprobe * V:0.08, I:0.5 484 画像(Exif) デジタル写真からメタデーターを読み出す
dcraw * V:1.1, I:6 408 画像(Raw)→ppm 生のデジタルカメラ画像のデコード
findimagedupes * V:0.07, I:0.4 140 画像→fingerprint 視覚的に類似もしくは複製の画像を発見
ale * V:0.02, I:0.18 768 画像→画像 忠実度を上げたりモザイクを作成するための画像のマージ
imageindex * V:0.03, I:0.3 192 画像(Exif)→html イメージから静的なHTMLギャラリーを生成
f-spot * V:0.6, I:1.9 8972 画像(Exif) 個人写真管理アプリケーション(GNOME)
bins * V:0.03, I:0.2 2008 画像(Exif)→html XMLとEXIFタグを使って静的HTML写真アルバムを作成
galrey * V:0.01, I:0.15 116 画像(Exif)→html 閲覧可能なサムネイル付きHTML写真アルバム生成
outguess * V:0.03, I:0.14 252 jpeg,png 普遍的Steganographicツール
qcad * V:1.1, I:2 3828 DXF CADデーターエディター(KDE)
blender * V:0.6, I:3 28952 blend, TIFF, VRML, … アニメーション等用の3Dコンテントエディター
open-font-design-toolkit * I:0.02 36 ttf, ps, … オープンフォントデザイン用のメタパッケージ
fontforge * V:0.3, I:1.9 6436 ttf, ps, … PSとTrueTypeとOpenTypeのフォント用フォントエディター
xgridfit * V:0.00, I:0.06 972 ttf TrueTypeフォントをグリッドフィッティングヒンティング用のプログラム
gbdfed * V:0.01, I:0.13 536 bdf BDFフォント用エディター

[ティップ] ティップ

aptitude(8)の正規表現"~Gworks-with::image"(「aptitudeを使った探索方法」参照)を使ってさらなる画像ツールを探しましょう。

gimp(1)のようなGUIプログラムは非常に強力ですが、imagemagick(1)等のコマンドラインツールはスクリプトでイメージ操作を自動化するのに非常に便利です。

デジタルカメラのファイルフォーマットのデファクト標準は、追加のメタデーター付きのJPEG画像ファイルフォーマットである交換可能な画像ファイルフォーマット(EXIF)です。EXIFは日付や時間やカメラ設定等の情報を保持できます。

Lempel-Ziv-Welch (LZW)ロス無しデーター圧縮特許の期限は切れました。LZWデーター圧縮を使う画像交換フォーマット(GIF)ユーティリティーはDebianシステム上でフリーに使えるようになりました。

[ティップ] ティップ

リムーバブル記録メディア付きのどのデジタルカメラやスキャナーも、カメラファイルシステム用デザインルール に準拠しFATファイルシステムを使っているのでUSBストレージ読取り機を経由すればLinuxで必ず機能します。「リムーバブルストレージデバイス」参照下さい。

11.7. その他のデーター変換

多くのデーター変換プログラムがあります。aptitude(8)で"~Guse::converting"という正規表現(「aptitudeを使った探索方法」参照)を使い次のプログラムが私の目に止まりました。

表11.18 その他のデーター変換ツールのリスト

パッケージ ポプコン サイズ キーワード 説明
alien * V:1.4, I:11 248 rpm/tgz→deb 外来のパッケージのDebianパッケージへの変換ソフト
freepwing * V:0.00, I:0.03 568 EB→EPWING "Electric Book" (日本で人気)から単一のJIS X 4081フォーマット(EPWING V1のサブセット)への変換ソフト

RPMフォーマットからのデーター抽出もまた次のようにするとできます。

$ rpm2cpio file.src.rpm | cpio --extract