\documentstyle[epsf,ascmac,alltt,fancybox]{jarticle}
\title{プリンタ設定と印刷}
\date{}
\author{}
\newcommand{\dg}{\gt}
\newcommand{\dm}{\min}
\setlength{\topmargin}{-12mm}
\setlength{\textheight}{24.5truecm}
\setlength{\textwidth}{17truecm}
\setlength{\oddsidemargin}{-8.5mm}
\setlength{\evensidemargin}{-8.5mm}
\newcommand{\丸数字}[1]
{{\ooalign{\hfill\(\scriptstyle#1\)\hfill\crcr\(\bigcirc\)}}}
\newcommand{\CR}{\ovalbox{\ooalign{\hfill\(\scriptstyle\hookleftarrow\)\hfill\crcr}}}
\begin{document}
\maketitle
プリンタを使うためには，以下のコマンドを使えばよい．
\begin{center}\begin{tabular}{c|l}
\hline
{\tt lpq} & プリンタのキューを調べる(状態を調べる)．\\
\hline
{\tt lpr} & プリンタへ出力する(ファイルを送り，印刷する)．\\
\hline
{\tt lpc} & プリンタのキューを制御する(特権ユーザで実行)．\\
\hline
\end{tabular}\end{center}

\section{設定を確かめる}
レーザープリンタへ出力するためには，
{\tt rpm} により，{\tt /etc/printcap} の更新がが済んでいる必要がある．
それを確かめるために，以下の 2 つを実行してみよう．

\begin{itembox}[l]{{\tt rpm} によりパッケージを確かめる}
\begin{alltt}
prompt\% \underline{rpm -qi printcap-private-1.00-nanzan1}\CR
Name        : printcap-private         Distribution: (none)
Version     : 1.00                           Vendor: (none)
Release     : nanzan1                    Build Date: Thu 11 May 2000 04:16:21 PM JST
Install date: Sat 13 May 2000 10:34:12 PM JST   Build Host: dynabook.hnet
Group       : Applications/Publishing    Source RPM: printcap-private-1.00-nanzan1.src.rpm
Size        : 1628                    License: GPL
Packager    : HACHISU Yoshiari <hachisu@it.nanzan-u.ac.jp>
Summary     : printcap for seto-private
Description :
printcap for seto-private
\end{alltt}
\end{itembox}

\begin{itembox}[l]{{\tt /etc/printcap} の記述}
\begin{alltt}
prompt\% \underline{more /etc/printcap}\CR
#
# This printcap is being created with printtool v.3.40
# Any changes made here manually will be lost if printtool
# is run later on.
# The presence of this header means that no printcap
# existed when printtool was run.
#
##PRINTTOOL3## REMOTE 
c101p1:\verb:\:
        :sd=/var/spool/lpd/c101p1:\verb:\:
        :mx#0:\verb:\:
        :sh:\verb:\:
        \underline{:rm=samba1.seto-private:}\verb:\:
        :rp=c101p1:
##PRINTTOOL3## REMOTE 
c101p2:\verb:\:
        :sd=/var/spool/lpd/c101p2:\verb:\:
        :mx#0:\verb:\:
--More--(29%)
\end{alltt}
\end{itembox}
この {\tt rm} 欄 が，{\tt samba1.seto-private} になっていることを
確かめよう．

\section{{\tt a2ps} コマンド}
プリンタで印刷できる文字は，{\dg\bf 印刷可能文字}(printable character)
だけである．ファイルもこの印刷可能文字のみで記述されて
いなければならない．簡単には，{\tt cat} コマンドを使って表示できればよい．
このこのように，印刷可能文字のみで構成された
ファイルを {\dg\bf テキストファイル}(text file) という．

さらに，プリンタ自身は，Postscript 言語というプログラミング言語を
送らないと印刷できない仕組みとなっている(そのようなプリンタを
{\dg\bf ポストスクリプト(Postscript) プリンタ}(postscript printer)，
{\dg\bf PS プリンタ}(PS printer) という)．

まとめると，プリンタで印刷するためには，
\begin{itemize}
\item ファイルが印刷可能文字からなる．
\item プリンタへ送る前に，ポストスクリプト(Postscript)言語に変換する必要
がある．
\end{itemize}

この 2 点を考慮して処理してくれるコマンドが {\tt a2ps} である．
そのため，印刷するためにはこのコマンドを使わなければならない．

まず，インストールされているかどうかを調査しよう．

\begin{itembox}[l]{{\tt rpm} によりパッケージを確かめる}
\begin{alltt}
prompt\% \underline{rpm -qi a2ps.pl-1.44-nanzan1}\CR
Name        : a2ps.pl                 Distribution: (none)
Version     : 1.44                         Vendor: (none)
Release     : nanzan1                  Build Date: Wed 03 May 2000 02:55:15 PM JST
Install date: Sat 13 May 2000 10:33:25 PM JST   Build Host: dynabook.hnet
Group       : Applications/Publishing    Source RPM: a2ps.pl-1.44-nanzan1.src.rpm
Size        : 27798                       License: (c) 1990-1999 Kazumasa Utashiro <utashiro@iij.ad.jp>
Packager    : HACHISU Yoshiari <hachisu@it.nanzan-u.ac.jp>
Summary     : a2ps ascii to ps
Description :
a2ps.pl ascii to ps
\end{alltt}
\end{itembox}
このように表示されればよい．

では，{\tt a2ps} を実行してみよう．
\begin{itembox}[l]{{\tt a2ps -help} の実行}
\begin{alltt}
prompt\% \underline{a2ps -help}\CR
syntax: a2ps [switches] [files]
        switches are:
        -l @    label string
        -L @    sub-label string (%default="%month %mday %year %hour:%min")
        -[n]t   tail label (t)
        -[n]n   numbering (nn)
        -[n]h   header (h)
        -[n]s   scale (s)
        -[n]m   punch mark (nm)
        -[n]w   wide page (nw)
        -[n]p   portrait (np)
        -[n]f   folding (f)
        -[n]c   convert to jis code (c)
        -[n]r   reset sheet number on each file (r)
        -[n]b   use bold/gothic font for overstruck characters (b)
        -[n]o   use oblique font for underlined characters (o)
        -f[x]#  font size or maginificent (6.6 or 9.8)
        -fn#    normal font (C: Courier)
        -fb#    bold font (B: Courier-Bold)
        -fu#    underline font (O: Courier-BoldOblique)
        -k#     kanji:ascii font size ratio (1.0)
        -j[#]   adjust ascii font height to Japanese (1.0)
        -us/a4/b4
                US letter / A4 / B4
        -toc pattern
                specify table of contents pattern
        -help   print this message
(Id: a2ps,v 1.44 1999/03/09 16:12:17 utashiro Exp )
\end{alltt}
\end{itembox}
このように，多くのオプションがあるのですべてを説明するこはできないが，
いくつかのオプションは有用であるので，{\tt lpr} コマンドと共に説明する．

\section{{\tt lpq} コマンド，{\tt lpr} コマンド}
設定の確認をしたら，レーザプリンタを調べてみよう．
レーザプリンタは，自習室にあるので以下のどれかを選ばなければならない．
\begin{center}
\begin{tabular}{c|l}
\hline
c101p1 & C 棟 1 階 101 教室(自習室) にあるプリンタ 1 \\
\hline
c101p2 & C 棟 1 階 101 教室(自習室) にあるプリンタ 2 \\
\hline
c101p3 & C 棟 1 階 101 教室(自習室) にあるプリンタ 3 \\
\hline
c101p4 & C 棟 1 階 101 教室(自習室) にあるプリンタ 4 \\
\hline
c101p5 & C 棟 1 階 101 教室(自習室) にあるプリンタ 5 \\
\hline
c101p6 & C 棟 1 階 101 教室(自習室) にあるプリンタ 6 \\
\hline
c205p1 & C 棟 2 階 205 教室(自習室) にあるプリンタ 1 \\
\hline
c205p2 & C 棟 2 階 205 教室(自習室) にあるプリンタ 2 \\
\hline
c206p1 & C 棟 2 階 206 教室(自習室) にあるプリンタ 1 \\
\hline
c206p2 & C 棟 2 階 206 教室(自習室) にあるプリンタ 2 \\
\hline
c208p1 & C 棟 2 階 208 教室 にあるプリンタ 1 \\
\hline
c208p2 & C 棟 2 階 208 教室 にあるプリンタ 2 \\
\hline
\end{tabular}\end{center}
c208p1 と，c208p2 は，教室にあるプリンタなので，できるだけ使わないように
しよう．
各プリンタは，{\tt lpq} コマンド，{\tt lpr} コマンドの
{\tt P} オプションで選択することができる．

プリンタの状態を調べるには，以下のようにタイプすればよい．
\begin{itembox}[c]{{\tt lpq} コマンド}
\begin{alltt}
lpq -P \(<プリンタ名>\)\CR
\end{alltt}
\end{itembox}

自習室 {\tt c101} のプリンタ 1 のプリンタを調査する．
\begin{itembox}[l]{{\tt lpq} コマンド(1)}
\begin{alltt}
prompt\% \underline{lpq -P c101p1}\CR
status: idle
\end{alltt}
\end{itembox}
このように {\tt status: idle} になっていれば，印刷可能である．

\begin{itembox}[l]{{\tt lpq} コマンド(2)}
\begin{alltt}
prompt\% \underline{lpq -P c101p1}\CR
status: busy; source: Elsewhere
\end{alltt}
\end{itembox}
このように {\tt status: busy; source: Elsewhere} になっていれば，
印刷可能であるが，別の人の印刷を処理中であることを示す．

しかし，プリンタからの応答がなかったり，
\begin{itembox}[l]{{\tt lpq} コマンド(3)}
\begin{alltt}
prompt\% \underline{lpq -P c101p1}\CR
\ovalbox{CTRL}+\ovalbox{c}\ \ \ \ \ \(<処理の中断>\)
\end{alltt}
\end{itembox}

「紙切れ」の場合は，
\begin{itembox}[l]{{\tt lpq} コマンド(4)}
\begin{alltt}
prompt\% \underline{lpq -P c101p1}\CR
status: PrinterError: out of paper
\end{alltt}
\end{itembox}
印刷できないので，別のプリンタを選ぼう．
プリンタからの応答がない場合は，プリンタの電源を入れ直す(一度切って，
再び電源を入れる)ことにより，応答することがある．
\begin{center}\begin{tabular}{c|l|l|c}
\hline
プリンタのメッセージ & 状況 & 対処 & 印刷可/不可 \\
\hline
{\tt idle}	& 印刷要求待ち & なし & 可 \\
\hline
{\tt busy; source: Elsewhere} & 他の人が印刷中 & なし & 可 \\
\hline
{\tt PrintError: out of paper} & 紙切れ & 紙を入れる & 不可 \\
\hline
応答なし               & 応答なし & プリンタの電源を入れ直す & 不可 \\
\hline
\end{tabular}\end{center}


実際に，プリンタに出力するためには {\tt lpr} コマンドをつかう．
さらに，{\tt a2ps} と組み合わせる必要がある(前述)．
パイプをつかって，その 2 つの入力と，出力を繋げばよい．
\begin{itembox}[c]{{\tt lpr} コマンド}
\begin{alltt}
a2ps \(<ファイル名>\) | lpr -P \(<プリンタ名>\)\CR
\end{alltt}
\end{itembox}

\begin{itembox}[l]{{\tt lpr} コマンド}
\begin{alltt}
prompt\% \underline{a2ps test.txt | lpr -P c205p1}\CR
\end{alltt}\end{itembox}

この例では，プリンタ {\tt c205p1} にファイル {\tt test.txt} を印刷している．

最後に，{\tt a2ps} で使ういくつかのオプションを紹介する．
{\tt a2ps} コマンドはオプションを指定しなくても，テキストファイルを
印刷することができる．しかし，枠がついていたり，2 段組になっていたり，
不便を感じるときも多いかもしれない．
そのため，以下のオプションを紹介しよう．この通りにタイプすれば，
枠もなくファイルの内容ががそのまま印刷される．

\begin{itembox}[l]{{\tt a2ps} のオプション}
\begin{alltt}
a2ps -p -nh -nn -f11 -nt -nf -ns \(<ファイル名>\) | lpr -P \(<プリンタ名>\)
\end{alltt}
\end{itembox}

例えば，以下のようにタイプすればよい．
\begin{itembox}[l]{ファイルをそのまま印刷する}
\begin{alltt}
prompt\% \underline{a2ps -p -nh -nn -f11 -nt -nf -ns test.txt | lpr -P c205p1}\CR
\end{alltt}
\end{itembox}

その他の処理は，適当にオプションを外せば，枠が現れたりするので理解できる
だろう．{\tt f} オプション の {-f11} の 11 は，文字の大きさ(ポイント数)
を表しており，この値を変化させることにより文字を大きくしたり，
小さくしたりすることができる．
\end{document}
