第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:95, I:99 9497 文字セット iconv(1) によるロケール間のテキスト符号化方式変換ソフト (基本的)
recode V:1.0, I:5 768 文字セット + 行末文字 ロケール間のテキスト符号化方式変換ソフト (機能豊富、より多いエリアスと機能)
konwert V:0.4, I:5 192 文字セット ロケール間のテキスト符号化方式変換ソフト (高級機能)
nkf V:0.2, I:1.6 205 文字セット 日本語のための文字セット翻訳ソフト
tcs V:0.02, I:0.10 544 文字セット 文字セット翻訳ソフト
unaccent V:0.02, I:0.10 76 文字セット アクセント付き文字をアクセントの無しの等価文字に置換
tofrodos V:0.8, I:6 67 行末文字 DOS と Unix 間のテキストフォーマット変換ソフト: fromdos(1)todos(1)
macutils V:0.04, I:0.3 320 行末文字 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ビットコードのみを用いる日本語 email の標準符号化方式
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 プログラム中のホワイトスペースを完全にリフォーマットします。

vimemacs 等のエディタープログラムもまたタブ変換に使えます。例えば 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:30, I:86 1924 html→text "w3m -dump" コマンドを使う HTML からテキストへの変換ソフト
html2text V:15, I:33 248 html→text 先進的 HTML からテキストへの変換ソフト (ISO 8859-1)
lynx I:18 242 html→text "lynx -dump" コマンドを使う HTML からテキストへの変換ソフト
elinks V:2, I:5 1364 html→text "elinks -dump" コマンドを使う HTML からテキストへの変換ソフト
links V:2, I:7 1225 html→text "links -dump" コマンドを使う HTML からテキストへの変換ソフト
links2 V:0.6, I:3 3036 html→text "links2 -dump" コマンドを使う HTML からテキストへの変換ソフト
antiword V:1.1, I:2 560 MSWord→text,ps MSWord ファイルをプレーンテキストか ps に変換
catdoc V:0.9, I:1.7 2668 MSWord→text,TeX MSWord ファイルをプレーンテキストか TeX に変換
pstotext V:0.7, I:1.0 148 ps/pdf→text PostScript と PDF ファイルからテキストを抽出
unhtml V:0.02, I:0.12 76 html→text HTML ファイルからマークアップタグを削除
odt2txt V:0.7, I:1.2 73 odt→text OpenDocument テキストからテキストへの変換ソフト

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

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

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

パッケージ ポプコン サイズ キーワード 説明
vim-runtime V:3, I:43 22298 ハイライト ":source $VIMRUNTIME/syntax/html.vim" を使ってソースコードを HTML に変換するための Vim MACRO
cxref V:0.04, I:0.2 1113 c→html C プログラムから latex か HTML への変換ソフト (C 言語)
src2tex V:0.02, I:0.18 1968 ハイライト 多くのソースコードの TeX への変換ソフト (C 言語)
source-highlight V:0.17, I:1.0 1939 ハイライト 多くのソースコードを HTML と XHTML と LaTeX と Texinfo と ANSI カラーエスケープシーケンスと DocBook にハイライト付きで変換 (C++)
highlight V:0.2, I:1.6 762 ハイライト 多くのソースコードを HTML と XHTML と LaTeX と Tex と AXSL-FO にハイライト付きで変換 (C++)
grc V:0.05, I:0.13 232 text→color 汎用着色化ソフト (Python)
txt2html V:0.07, I:0.4 296 text→html テキストから HTML への変換ソフト (Perl)
markdown V:0.07, I:0.4 96 text→html markdown テキスト文書の (X)HTML へのフォーマット化ソフト (Perl)
asciidoc V:0.17, I:1.2 3133 text→any AsciiDoc テキスト文書の XML/HTML へのフォーマット化ソフト (Python)
python-docutils V:0.3, I:3 1548 text→any ReStructured テキスト文書の XML へのフォーマット化ソフト (Python)
txt2tags V:0.05, I:0.2 1152 text→any テキストから HTML と SGML と LaTeX と man page と MoinMoin と Magic Point と PageMaker への文書変換 (Python)
udo V:0.00, I:0.05 556 text→any 汎用文書 - テキスト処理ユーティリティー (C 言語)
stx2any V:0.00, I:0.04 484 text→any 構造化プレーンテキストからたのフォーマットへの文書変換ソフト (m4)
rest2web V:0.00, I:0.06 576 text→html ReStructured Text から html への文書変換ソフト (Python)
aft V:0.00, I:0.04 259 text→any "自由フォーム" 文書準備システム (Perl)
yodl V:0.01, I:0.04 409 text→any プリ文書言語とその処理用のツール (C 言語)
sdf V:0.01, I:0.07 1414 text→any 単純文書処理ソフト (Perl)
sisu V:0.02, I:0.10 9132 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 何らかのタグ " エンティティ値 ">" と表現されます。

[注記] 注記

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:48 2488 xml DocBook 用 XML ドキュメントタイプ定義 (DTD)
xsltproc V:3, I:41 180 xslt XSLT コマンドラインプロセスソフト (XML→ XML, HTML, plain text, 他)
docbook-xsl I:13 11589 xml/xslt DocBook XML を XSLT を使って各種アウトプットへ処理する XSL スタイルシート
xmlto V:0.2, I:2 134 xml/xslt XSLT を用いて XML から全てへの変換ソフト
dblatex V:0.3, I:2 7264 xml/xslt XSLT を使って Docbook ファイルを DVI, PostScript, PDF 文書へ変換
fop V:0.6, I:4 90 xml/xsl-fo Docbook XML ファイルを PDF に変換

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

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

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

[ヒント] ヒント

GNOMEyelpDocBook XML ファイルを X 上に体裁良く表示するので時々便利です。

11.2.3. XML データー抽出

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

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

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

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

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

パッケージ ポプコン サイズ キーワード 説明
libxml2-utils V:4, I:49 138 xml↔html↔xhtml xmllint(1) (シンタクスチェック、リフォーマット、整形、他) を含むコマンドライン XML ツール
tidy V:0.5, I:4 82 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:17, I:62 198 GPL 版 Ghostscript PostScript/PDF インタープリタ
ghostscript-x V:6, I:15 193 GPL 版 Ghostscript PostScript/PDF インタープリタ - X ディスプレーサポート
gs-cjk-resource V:4, I:17 4528 gs-cjk 用リソースファイル、Ghostscript CJK-TrueType 拡張
cmap-adobe-cns1 V:0.04, I:0.2 1572 Adobe-CNS1 用 CMaps (繁体中国語サポート)
cmap-adobe-gb1 V:0.04, I:0.2 1552 Adobe-GB1 用 CMaps (簡体中国語サポート)
cmap-adobe-japan1 V:2, I:15 2428 Adobe-Japan1 用 CMaps (日本語標準サポート)
cmap-adobe-japan2 I:0.3 416 Adobe-Japan2 用 CMaps (日本語拡張サポート)
cmap-adobe-korea1 V:0.15, I:1.0 872 Adobe-Korea1 用 CMaps (韓国語サポート)
libpoppler13 V:7, I:17 2377 xpdf PDF ビューワー準拠 PDF レンダリングライブラリー
libpoppler-glib6 V:6, I:15 577 PDF レンダリングライブラリー (GLib 準拠共有ライブラリー)
poppler-data I:20 12240 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:9, I:54 542 pdf→ps,text,… PDF ユーティリティー: pdftops, pdfinfo, pdfimages, pdftotext, pdffonts
psutils V:2, I:19 243 ps→ps PostScript 文書変換ツール
poster V:0.4, I:3 80 ps→ps PostScript ページから大きなポスターを作る
enscript V:0.8, I:8 2147 text→ps, html, rtf ASCII テキストから PostScript か HTML か RTF か Pretty-Print への変換
a2ps V:1.4, I:8 4292 text→ps 全てを PostScript に変換するソフトと綺麗印刷ソフト
pdftk V:1.0, I:5 3039 pdf→pdf PDF 文書変換ツール: pdftk
mpage V:0.13, I:0.9 224 text,ps→ps シートに複数ページを印刷
html2ps V:0.2, I:1.4 320 html→ps HTML から PostScript への変換ソフト
pdfjam V:0.2, I:1.5 228 pdf→pdf PDF 文書変換ツール: pdf90, pdfjoin, pdfnup
gnuhtml2latex V:0.05, I:0.4 53 html→latex html から latex への変換ソフト
latex2rtf V:0.13, I:0.9 508 latex→rtf LaTeX から MS Word で読める RTF へと文書変換
ps2eps V:1.3, I:12 136 ps→eps PostScript から EPS (カプセル化済み PostScript) への変換ソフト
e2ps V:0.00, I:0.09 188 text→ps 日本語符号化サポート付きの Text から PostScript への変換ソフト
impose+ V:0.02, I:0.18 180 ps→ps PostScript ユーティリティー
trueprint V:0.01, I:0.09 188 text→ps 多くのソースコード (C, C++, Java, Pascal, Perl, Pike, Sh, Verilog) の PostScript への綺麗印刷 (C 言語)
pdf2svg V:0.10, I:0.6 60 ps→svg PDF からスケール可のベクトルグラフィクス (SVG) フォーマットへの変換ソフト
pdftoipe V:0.01, I:0.14 91 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:8 102 (La)TeX 組版、校正、印刷のための TeX システム
groff V:1.1, I:9 9388 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 パッケージのまともな選択を提供します。

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.d/95NonPath" を編集し update-texmf(8) を実行することで) "/etc/texmf/texmf.cnf" 中のプールの数を増やし修正しなければいけません。

[注記] 注記

"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. マニュアルページの作成

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

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

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

11.5. メールデーター変換

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

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

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

[ヒント] ヒント

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

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

メイル (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:9, I:46 13086 画像 (bitmap) GNU イメージ操作プログラム
imagemagick V:20, I:48 200 画像 (bitmap) 画像操作プログラム
graphicsmagick V:1.1, I:2 4394 画像 (bitmap) 画像操作プログラム (imagemagick のフォーク)
xsane V:5, I:34 1368 画像 (bitmap) GTK+ に基づく SANE (Scanner Access Now Easy) 用の X11 フロントエンド
netpbm V:5, I:46 4564 画像 (bitmap) 画像変換ツール
icoutils V:0.4, I:2 160 png↔ico(bitmap) MS Windows のアイコンやカーソールと PNG フォーマット間の変換 (favicon.ico)
scribus V:1.2, I:3 54492 ps/pdf/SVG/… Scribus DTP エディター
openoffice.org-draw V:13, I:29 164 画像 (vector) OpenOffice.org office スイート - ドロー
inkscape V:18, I:37 80264 画像 (vector) SVG (スケーラブルベクトルグラフィクス) エディター
dia-gnome V:1.1, I:2 617 画像 (vector) ダイアグラムエディター (GNOME)
dia V:2, I:4 617 画像 (vector) ダイアグラムエディター (Gtk)
xfig V:1.9, I:3 1597 画像 (vector) X11 下でインテラクティブ生成するソフト
pstoedit V:2, I:35 679 ps/pdf→画像(vector) PostScript と PDF ファイルから編集可能なベクトルグラフィクスへの変換ソフト (SVG)
libwmf-bin V:2, I:31 118 Windows/画像(vector) Windows メタファイル (ベクトル画像データー) 変換ツール
fig2sxd V:0.02, I:0.16 200 fig→sxd(vector) XFig ファイルを OpenOffice.org Draw フォーマットに変換
unpaper V:0.2, I:1.6 736 画像→画像 OCR 用のスキャンしたページの後処理ツール
tesseract-ocr V:0.5, I:3 435 画像→テキスト HP の商用 OCR エンジンの基づくフリーの OCR ソフトウエアー
tesseract-ocr-eng I:3 58870 画像→テキスト OCR エンジンデーター: tesseract-ocr の英文用言語ファイル
gocr V:0.6, I:4 473 画像→テキスト フリー OCR ソフト
ocrad V:0.2, I:2 254 画像→テキスト フリー OCR ソフト
gtkam V:0.19, I:1.2 1255 画像(Exif) デジタルカメラ写真を操作 (GNOME) - GUI
gphoto2 V:0.3, I:2 844 画像(Exif) デジタルカメラ写真ファイルを操作 (GNOME) - コマンドライン
kamera V:0.3, I:7 245 画像(Exif) デジタルカメラ写真を操作 (KDE)
jhead V:0.4, I:2 126 画像(Exif) Exif に準拠の JPEG (デジタルカメラ写真) ファイルの非画像部を操作
exif V:0.2, I:1.6 212 画像(Exif) JPEG ファイル中の EXIF 情報を表示するコマンドラインユーティリティー
exiftags V:0.10, I:0.8 198 画像(Exif) デジタルカメラの JPEG ファイルから Exif タグを読むユーティリティー
exiftran V:0.5, I:3 91 画像(Exif) デジタルカメラの jpeg 画像を変換
exifprobe V:0.06, I:0.4 484 画像(Exif) デジタル写真からメタデーターを読み出す
dcraw V:0.7, I:4 424 画像(Raw)→ppm 生のデジタルカメラ画像のデコード
findimagedupes V:0.04, I:0.2 123 画像→fingerprint 視覚的に類似もしくは複製の画像を発見
ale V:0.02, I:0.12 757 画像→画像 忠実度を上げたりモザイクを作成するための画像のマージ
imageindex V:0.03, I:0.15 192 画像(Exif)→html イメージから静的な HTML ギャラリーを生成
f-spot V:0.3, I:1.2 8219 画像(Exif) 個人写真管理アプリケーション (GNOME)
bins V:0.01, I:0.10 2008 画像(Exif)→html XML と EXIF タグを使って静的 HTML 写真アルバムを作成
gallery2 V:0.11, I:0.2 62548 画像(Exif)→html 閲覧可能なサムネイル付き HTML 写真アルバム生成
outguess V:0.02, I:0.11 252 jpeg,png 普遍的 Steganographic ツール
qcad V:0.7, I:1.9 31 DXF CAD データーエディター (KDE)
blender V:0.5, I:2 54560 blend, TIFF, VRML, … アニメーション等用の 3D コンテントエディター
mm3d V:0.03, I:0.18 4465 ms3d, obj, dxf, … OpenGL 準拠の 3D モデルエディター
open-font-design-toolkit I:0.06 27 ttf, ps, … オープンフォントデザイン用のメタパッケージ
fontforge V:0.2, I:1.4 6696 ttf, ps, … PS と TrueType と OpenType のフォント用フォントエディター
xgridfit V:0.01, I:0.10 1060 ttf TrueType フォントをグリッドフィッティングヒンティング用のプログラム

[ヒント] ヒント

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.3, I:11 208 rpm/tgz→deb 外来のパッケージの Debian パッケージへの変換ソフト
freepwing V:0.00, I:0.02 568 EB→EPWING "Electric Book" (日本で人気) から単一の JIS X 4081 フォーマット (EPWING V1 のサブセット) への変換ソフト

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

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