印刷フィルタオプションの定義には 13 個の情報源があり、それぞれが「キーワード」で表されています。各オプションは「テンプレート」内で定義されます。テンプレートとは、フィルタのいずれかの特性値に基づいてフィルタコマンドに渡されるオプションを定義する、フィルタ定義内のステートメントです。
フィルタ定義で指定するオプションには、13 個のキーワードを使用しなくても、すべて使用しても、そのサブセットを使用してもかまいません。また、完全なフィルタ定義に複数の定義が必要な場合は、1 つのキーワードを複数回指定することもできます。印刷フィルタ定義における Options を定義するための 13 個のキーワードについては、表 7–6 を参照してください。
表 7–6 印刷フィルタオプションのキーワード| キーワード | 考えられるパターン | 例 | |
|---|---|---|---|
| 内容形式 (入力) | INPUT | 内容形式 | troff | 
| 内容形式 (出力) | OUTPUT | 内容形式 | postscript, impress | 
| プリンタタイプ | TERM | プリンタタイプ | att495 | 
| プリンタ名 | PRINTER | プリンタ名 | lp1 | 
| 文字ピッチ | CPI | 四捨五入された 10 進数 | 10 | 
| 行ピッチ | LPI | 四捨五入された 10 進数 | 6 | 
| ページ長 | LENGTH | 四捨五入された 10 進数 | 66 | 
| ページ幅 | WIDTH | 四捨五入された 10 進数 | 80 | 
| 印刷ページ数 | PAGES | ページリスト | 1-5,13-20 | 
| 文字セット | CHARSET | 文字セット | finnish | 
| フォーム名 | FORM | フォーム名 | invoice2 | 
| 部数 | COPIES | 整数 | 3 | 
| MODES | モード | landscape | 
印刷フィルタ定義には、複数のテンプレートを含めることができます。複数のテンプレートを指定する場合は、1 行にコンマで区切って入力するか、先頭に Options: を付けて複数行に入力します。
テンプレートの形式は次のとおりです。
keywordpattern = replacement
keyword は、フィルタの特定の特性に関して登録されたオプションのタイプを識別します。
pattern は、キーワードの特定のオプションです。
replacement は、キーワードが指定した値のときに発生する動作です。
特定のフィルタのオプションを定義する方法を示す例として、印刷サービススケジューラを使って次の条件でフィルタに印刷要求を割り当てたいものと仮定します。
フィルタで生成される OUTPUT のタイプが impress の場合は、フィルタに -I オプションを渡す。
フィルタで生成される OUTPUT のタイプが postscript の場合は、フィルタに -P オプションを渡す。
上記の条件を指定するには、lpfilter コマンドのオプションとして次のテンプレートを与えます。
| Options: OUTPUT impress=-I, OUTPUT postscript=-P | 
Options 行が長くなりすぎる場合は、次のように各テンプレートを別々の行に入れます。
| Options: OUTPUT impress=-I Options: OUTPUT postscript=-P | 
どちらのテンプレートでも、keyword は OUTPUT として定義されています。第 1 のテンプレートでは、パターンは impress で、replacement の値は -I です。第 2 のテンプレートでは、pattern の値は postscript で、replacement の値は -P です。
各種テンプレート (つまり、各キーワードの pattern 引数と replacement 引数) に与える値を見つけるには、次のことに注意する必要があります。
INPUT テンプレートの値は、フィルタによる変換が必要なファイル内容形式からとっています。
OUTPUT テンプレートの値は、フィルタが生成すべき出力タイプからとっています。
TERM テンプレートの値はプリンタタイプです。
PRINTER テンプレートの値は、最終出力を印刷するプリンタ名です。
CPI、LPI、LENGTH、WIDTH の各テンプレートの値は、ユーザーの印刷要求、使用するフォーム、またはプリンタのデフォルト値からとっています。
PAGES テンプレートの値は、印刷すべきページのリストです。通常、これはコンマで区切ったページ範囲のリストです。各ページ範囲は、ダッシュで区切った 1 対の数値、または単一の数字からなります (たとえば、1–5,6,8,10 は 1 ページから 5 ページまでと、6 ページ、8 ページ、10 ページを示します)。ただし、印刷要求に -P オプションで値を与えると、印刷要求は変更されずに渡されます。
CHARSET テンプレートの値は、使用する文字セット名です。
FORM テンプレートの値は、lp -fコマンド (印刷要求を出すのに使用するコマンド) で要求したフォーム名です。
COPIES テンプレートの値は、ファイルの印刷部数です。フィルタがこのテンプレートを使用する場合、この「1 部」にはフィルタによって生成される複数のコピーが含まれるので、LP 印刷サービスはフィルタがかけられたファイルの印刷部数から 1 を引きます。
MODES テンプレートの値は、lp -y コマンドからとっています。ユーザーは複数の -y オプションを指定できるので、MODES テンプレートは複数の値をとることがあります。値はユーザーが与えた順に左から右に適用されます。
テンプレートの replacement 部は、テンプレートの値をフィルタプログラムに与える方法を示します。通常はリテラルオプションですが、値の位置を示すプレースホルダのアスタリスク (*) が付いていることがあります。pattern と replacement には、ユーザー入力オプションからフィルタオプションへの複雑な変換を行うために、ed コマンドの正規表現の構文を使用することもできます。ed の正規表現の構文はすべて使用できます。たとえば、\( ... \) や \n 構成を使用すると、pattern の各部を抽出して replacement にコピーできます。また、& を使用すると、pattern 全体を replacement にコピーできます。詳細は、ed(1) のマニュアルページを参照してください。
pattern または replacement にコンマまたは等号 (=) を含める場合は、その前にバックスラッシュ (\) を付けてください。これらの文字の前にバックスラッシュが付いていると、pattern または replacement が使用されるときに削除されます。