diff options
author | Fukang Chen <loader@FreeBSD.org> | 2008-09-01 19:16:56 +0000 |
---|---|---|
committer | Fukang Chen <loader@FreeBSD.org> | 2008-09-01 19:16:56 +0000 |
commit | 07c879b96fac6182bfd0c6e20a2b98783d514af0 (patch) | |
tree | e0da9e93feca7cc3cdc9052361f681ea966757ba /zh_CN.GB2312/books/handbook/printing/chapter.sgml | |
parent | 755d80474b24cbee8a226e8bd0f088430e072437 (diff) |
Notes
Diffstat (limited to 'zh_CN.GB2312/books/handbook/printing/chapter.sgml')
-rw-r--r-- | zh_CN.GB2312/books/handbook/printing/chapter.sgml | 537 |
1 files changed, 272 insertions, 265 deletions
diff --git a/zh_CN.GB2312/books/handbook/printing/chapter.sgml b/zh_CN.GB2312/books/handbook/printing/chapter.sgml index 2dee297f03..37f65ffbbf 100644 --- a/zh_CN.GB2312/books/handbook/printing/chapter.sgml +++ b/zh_CN.GB2312/books/handbook/printing/chapter.sgml @@ -2,7 +2,7 @@ The FreeBSD Documentation Project The FreeBSD Simplified Chinese Project - Original Revision: 1.114 + Original Revision: 1.120 $FreeBSD$ --> @@ -33,20 +33,21 @@ <indexterm><primary>LPD spooling system</primary></indexterm> <indexterm><primary>printing</primary></indexterm> - <para>FreeBSD 可以支持众多种类的打印机, + <para>&os; 可以支持众多种类的打印机, 从最古老的针式打印机到最新的激光打印机以及它们之间所有类型的打印机。 您可以使运行的应用程序产生高质量的打印输出。</para> - <para>FreeBSD 也可以被设置成一个网络上的打印服务器。 它可以从包括 - FreeBSD、 &windows; 及 &macos; 在内的多种其他计算机上接收打印任务。 - FreeBSD 将保证任务在某时被打印, 并且可以把哪台机器, 哪位用户打印的最多记录在统计表中, - 生成 <quote>横幅</quote> 页, 显示哪份打印输出的是哪位用户的等等。</para> + <para>&os; 也可以被设置成一个网络上的打印服务器。 它可以从包括 + &os;、 &windows; 及 &macos; 在内的多种其他计算机上接收打印任务。 + &os; 将保证任务在某时被打印, 并且可以把哪台机器, + 哪位用户打印的最多记录在统计表中,生成 <quote>横幅</quote> 页, + 显示哪份打印输出的是哪位用户的等等。</para> <para>在读完这章后,您将知道:</para> <itemizedlist> <listitem> - <para>怎样配置FreeBSD后台打印。</para> + <para>怎样配置 &os; 后台打印。</para> </listitem> <listitem> @@ -92,10 +93,10 @@ <sect1 id="printing-intro-spooler"> <title>介绍</title> - <para>为了在 FreeBSD 中使用打印机, + <para>为了在 &os; 中使用打印机, 需要首先配置好伯克利行式打印机后台打印系统即 <application>LPD</application>。 - 它是 FreeBSD 的标准打印控制系统。 这章介绍 <application>LPD</application> + 它是 &os; 的标准打印控制系统。 这章介绍 <application>LPD</application> 后台打印系统, 在接下来将简称为 <application>LPD</application>, 并且将指导您完成其配置。</para> @@ -241,7 +242,7 @@ <para>这部分讲述了打印机连接到计算机的多种 途径。 主要讨论了多种接口和 - 连接线, 还有允许 FreeBSD 与打印机通讯所需的 + 连接线, 还有允许 &os; 与打印机通讯所需的 内核配置。</para> <para>如果您已经连接好了您的打印机而且已经 @@ -309,12 +310,12 @@ (计算机到打印机), 而串口和 USB 则可以提供双向通讯。 新的并口 (EPP 和 ECP) 及打印机在使用了 - IEEE-1284 标准的电缆之后, 可以在FreeBSD下双向通讯。</para> + IEEE-1284 标准的电缆之后, 可以在 &os; 下双向通讯。</para> <indexterm><primary>PostScript</primary></indexterm> <para>与打印机通过并口双向通讯通常由这两种方法中的一种来完成。 - 第一个方法是使用为 FreeBSD + 第一个方法是使用为 &os; 编写的可以通过打印机使用的语言与打印机通讯的驱动程序。 这通常用在喷墨打印机上, 且可以用来报告剩余墨水多少和其他状态信息。 @@ -342,10 +343,12 @@ 或者干脆两个上面都有。</para> <para>记住您用的计算机上的哪个并口。 - 第一个并口在 FreeBSD 上叫 <filename>/dev/ppc0</filename>; - 第二个叫 <filename>/dev/ppc1</filename>, 依此类推。 - 打印机设备也用同样的方法命名: - <filename>/dev/lpt0</filename> + 第一个并口在 &os; 上叫 + <filename class="devicefile">/dev/ppc0</filename>; + 第二个叫 + <filename class="devicefile">/dev/ppc1</filename>, + 依此类推。打印机设备也用同样的方法命名: + <filename class="devicefile">/dev/lpt0</filename> 是接在第一个并口上的打印机, 依此类推。</para> </sect4> @@ -406,7 +409,7 @@ <sect3 id="printing-software"> <title>软件设置</title> - <para>这部分描述了要使用FreeBSD系统中的 + <para>这部分描述了要使用 &os; 系统中的 <application>LPD</application> 后台打印系统进行打印所需的软件设置。 </para> @@ -455,7 +458,7 @@ <para>要想知道您现在使用的内核是否支持串口, 输入:</para> - <screen>&prompt.root; <userinput>grep sio<replaceable>N</replaceable> /var/run/dmesg.boot</userinput></screen> + <screen>&prompt.root; <userinput><command>grep sio<replaceable>N</replaceable> <filename>/var/run/dmesg.boot</filename></command></userinput></screen> <para>其中 <replaceable>N</replaceable> 是串口的 编号, 从0开始。 如果您看到 @@ -469,7 +472,7 @@ sio2: type 16550A</screen> <para>要想知道您现在使用的内核是否支持并口, 输入:</para> - <screen>&prompt.root; <userinput>grep ppc<replaceable>N</replaceable> /var/run/dmesg.boot</userinput></screen> + <screen>&prompt.root; <userinput><command>grep ppc<replaceable>N</replaceable> /var/run/dmesg.boot</command></userinput></screen> <para>其中 <replaceable>N</replaceable> 是并口的 编号, 同样从0开始。 如果得到类似 @@ -496,8 +499,8 @@ ppc0: FIFO with 16/16/8 bytes threshold</screen> <title>设置并口的通讯模式</title> <para>在使用并口时, 您可以选择 - 让 FreeBSD 用中断方式还是轮询方式来 - 与打印机通讯。 在 FreeBSD 上, + 让 &os; 用中断方式还是轮询方式来 + 与打印机通讯。 在 &os; 上, 通用的打印机驱动 (&man.lpt.4;) 使用 &man.ppbus.4; 系统, 它利用 &man.ppc.4; 驱动来控制端口芯片。</para> @@ -560,7 +563,7 @@ ppc0: FIFO with 16/16/8 bytes threshold</screen> <programlisting>hint.ppc.0.irq="<replaceable>N</replaceable>"</programlisting> - <para>在 FreeBSD 下, 有时上面的方法并不能使并口工作在轮询方式。 + <para>在 &os; 下, 有时上面的方法并不能使并口工作在轮询方式。 大多数情况是由于 &man.acpi.4; 驱动造成的, 它可以自动侦测到设备并将其挂载到系统上, 但也因此, 它控制着打印机端口的访问模式. 您需要检查 &man.acpi.4; @@ -583,7 +586,7 @@ ppc0: FIFO with 16/16/8 bytes threshold</screen> <step> <para>输入:</para> - <screen>&prompt.root; <userinput>lptcontrol -i -d /dev/lpt<replaceable>N</replaceable></userinput></screen> + <screen>&prompt.root; <userinput><command>lptcontrol <option>-i</option> <option>-d</option> <filename class="devicefile">/dev/lpt<replaceable>N</replaceable></filename></command></userinput></screen> <para>将 <literal>lpt<replaceable>N</replaceable></literal> 设置成中断方式。</para> @@ -592,7 +595,7 @@ ppc0: FIFO with 16/16/8 bytes threshold</screen> <step> <para>输入:</para> - <screen>&prompt.root; <userinput>lptcontrol -p -d /dev/lpt<replaceable>N</replaceable></userinput></screen> + <screen>&prompt.root; <userinput><command>lptcontrol <option>-p</option> <option>-d</option> <filename class="devicefile">/dev/lpt<replaceable>N</replaceable></filename></command></userinput></screen> <para>将 <literal>lpt<replaceable>N</replaceable></literal> 设置成轮询方式。</para> @@ -648,7 +651,7 @@ showpage</programlisting> <primary>printers</primary> <secondary>parallel</secondary> </indexterm> - <para>这部分内容将指导您怎样检测 FreeBSD + <para>这部分内容将指导您怎样检测 &os; 是否可以与一台已经连接在并口上的打印机通讯。</para> <para><emphasis>要测试并口上的打印机:</emphasis></para> @@ -666,7 +669,7 @@ showpage</programlisting> <para>如果打印机可以直接打印纯文本, 可以用 &man.lptest.1;。 输入:</para> - <screen>&prompt.root; <userinput>lptest > /dev/lpt<replaceable>N</replaceable></userinput></screen> + <screen>&prompt.root; <userinput><command>lptest > <filename class="devicefile">/dev/lpt<replaceable>N</replaceable></filename></command></userinput></screen> <para>其中 <replaceable>N</replaceable> 是并口的编号, 从0开始。</para> @@ -676,7 +679,8 @@ showpage</programlisting> <para>如果打印机支持 &postscript; 或其他打印机语言, 可以发送一段小程序到打印机。 输入:</para> - <screen>&prompt.root; <userinput>cat > /dev/lpt<replaceable>N</replaceable></userinput></screen> + <screen>&prompt.root; <userinput><command>cat > <filename class="devicefile">/dev/lpt<replaceable>N</replaceable></filename></command></userinput></screen> + <para>然后, 一行一行地 <emphasis>输入</emphasis> 输入这段程序。 因为在按下 <literal>换行</literal> 或者 @@ -688,7 +692,7 @@ showpage</programlisting> <para>另外一种办法, 您可以把这段程序写在一个文件里, 并输入:</para> - <screen>&prompt.root; <userinput>cat <replaceable>file</replaceable> > /dev/lpt<replaceable>N</replaceable></userinput></screen> + <screen>&prompt.root; <userinput><command>cat <filename><replaceable>file</replaceable></filename> > <filename class="devicefile">/dev/lpt<replaceable>N</replaceable></filename></command></userinput></screen> <para>其中 <replaceable>file</replaceable> 是包含这您要发给打印机程序的文件名。</para> @@ -709,7 +713,7 @@ showpage</programlisting> <primary>printers</primary> <secondary>serial</secondary> </indexterm> - <para>这部分将告诉您如何检测 FreeBSD + <para>这部分将告诉您如何检测 &os; 是否可以与连接在串口上的打印机通讯。</para> <para><emphasis>要测试连接在串口上的打印机:</emphasis></para> @@ -723,7 +727,7 @@ showpage</programlisting> <para>修改 <filename>/etc/remote</filename> 这个文件。 增加下面这些内容:</para> - <programlisting>printer:dv=/dev/<replaceable>port</replaceable>:br#<replaceable>bps-rate</replaceable>:pa=<replaceable>parity</replaceable></programlisting> + <programlisting>printer:dv=<filename class="devicefile">/dev/<replaceable>port</replaceable></filename>:br#<replaceable>bps-rate</replaceable>:pa=<replaceable>parity</replaceable></programlisting> <indexterm><primary>bits-per-second</primary></indexterm> <indexterm><primary>serial port</primary></indexterm> @@ -742,20 +746,20 @@ showpage</programlisting> 它连接在第三个串口上, 速度为 19200 波特, 不进行校验:</para> - <programlisting>printer:dv=/dev/ttyd2:br#19200:pa=none</programlisting> + <programlisting>printer:dv=<filename class="devicefile">/dev/ttyd2</filename>:br#19200:pa=none</programlisting> </step> <step> <para>用 &man.tip.1; 连接打印机。 输入:</para> - <screen>&prompt.root; <userinput>tip printer</userinput></screen> + <screen>&prompt.root; <userinput><command>tip</command> printer</userinput></screen> <para>如果没能成功, 则要再次修改 <filename>/etc/remote</filename> 这个文件, 并且试试用 - <filename>/dev/cuaa<replaceable>N</replaceable></filename> + <filename class="devicefile">/dev/cuaa<replaceable>N</replaceable></filename> 代替 - <filename>/dev/ttyd<replaceable>N</replaceable></filename>。</para> + <filename class="devicefile">/dev/ttyd<replaceable>N</replaceable></filename>。</para> </step> <step> @@ -853,7 +857,7 @@ showpage</programlisting> </step> <step> - <para>在 <filename>/dev</filename> 下设置打印机设备节点, + <para>在 <filename class="directory">/dev</filename> 下设置打印机设备节点, 并且在写在 <filename>/etc/printcap</filename> 文件中 <literal>lp</literal> 项目里; 参见 <link linkend="printing-device">识别打印机设备</link> @@ -991,7 +995,7 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ <para>由于后台打印队列目录的变量本质, 通常 把这些目录安排在 - <filename>/var/spool</filename> 下。 您也没有必要去 + <filename class="directory">/var/spool</filename> 下。 您也没有必要去 备份后台打印队列目录里的内容。 重新建立它们只要简单的使用 &man.mkdir.1; 命令。</para> @@ -999,7 +1003,7 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ 打印机一样的名字, 像下面 这样:</para> - <screen>&prompt.root; <userinput>mkdir /var/spool/<replaceable>printer-name</replaceable></userinput></screen> + <screen>&prompt.root; <userinput><command>mkdir <filename class="directory">/var/spool/<replaceable>printer-name</replaceable></filename></command></userinput></screen> <para>然而, 如果您有很多网络打印机, 您可能想要把这些后台打印的队列目录目录放在一个单独的专为使用 @@ -1008,9 +1012,9 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ <literal>rattan</literal> 和 <literal>bamboo</literal> 作为例子:</para> - <screen>&prompt.root; <userinput>mkdir /var/spool/lpd</userinput> -&prompt.root; <userinput>mkdir /var/spool/lpd/rattan</userinput> -&prompt.root; <userinput>mkdir /var/spool/lpd/bamboo</userinput></screen> + <screen>&prompt.root; <userinput><command>mkdir <filename class="directory">/var/spool/lpd</filename></command></userinput> +&prompt.root; <userinput><command>mkdir <filename class="directory">/var/spool/lpd/rattan</filename></command></userinput> +&prompt.root; <userinput><command>mkdir <filename class="directory">/var/spool/lpd/bamboo</filename></command></userinput></screen> <note> <para>如果担心用户任务的保密性, @@ -1020,10 +1024,10 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ 组拥有读写和搜索的权限,但其他用户没有。 接下来用我们的两台打印机作为例子:</para> - <screen>&prompt.root; <userinput>chown daemon:daemon /var/spool/lpd/rattan</userinput> -&prompt.root; <userinput>chown daemon:daemon /var/spool/lpd/bamboo</userinput> -&prompt.root; <userinput>chmod 770 /var/spool/lpd/rattan</userinput> -&prompt.root; <userinput>chmod 770 /var/spool/lpd/bamboo</userinput></screen> + <screen>&prompt.root; <userinput><command>chown daemon:daemon <filename class="directory">/var/spool/lpd/rattan</filename></command></userinput> +&prompt.root; <userinput><command>chown daemon:daemon <filename class="directory">/var/spool/lpd/bamboo</filename></command></userinput> +&prompt.root; <userinput><command>chmod 770 <filename class="directory">/var/spool/lpd/rattan</filename></command></userinput> +&prompt.root; <userinput><command>chmod 770 <filename class="directory">/var/spool/lpd/bamboo</filename></command></userinput></screen> </note> <para>最后, 您需要通过<filename>/etc/printcap</filename> 文件告诉 <application>LPD</application> @@ -1033,31 +1037,30 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ # /etc/printcap for host rose - added spooling directories # rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :sh:sd=/var/spool/lpd/rattan: + :sh:sd=<filename class="directory">/var/spool/lpd/rattan</filename>: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:sd=/var/spool/lpd/bamboo:</programlisting> + :sh:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:</programlisting> <para>注意打印机的名字要从第 1 列开始, 其他记录每行都要用 TAB 键缩进一次, 写不开需要换行在最后加上反斜杠。</para> <para>如果您没用 <literal>sd</literal> 标记指定后台打印队列目录, 后台打印系统会将 - <filename>/var/spool/lpd</filename> 目录作为默认目录。</para> + <filename class="directory">/var/spool/lpd</filename> 目录作为默认目录。</para> </sect4> <sect4 id="printing-device"> <title>识别打印机设备</title> - <para>在 端口与对应的设备项 章节中, 我们确定了使用 - <filename>/dev</filename> 目录中的哪个节点来让 FreeBSD 与打印机 - 通讯。 现在, 我们来告诉 - <application>LPD</application> 这个 - 信息。 当后台打印系统有任务需要打印, 它 - 将为过滤程序(负责传送数据到打印机)打开 - 指定的设备。</para> + <para>在 <link linkend="printing-hardware">Hardware Setup</link> + 一节中,我们说明了 &os; 与打印机通讯将使用哪个端口和 + <filename class="directory">/dev</filename> 目录下的节点。 + 我们要告诉 <application>LPD</application> 这些信息。 + 当后台打印系统有任务需要打印,它将为过滤程序 + (负责传送数据到打印机) 打开指定的设备。</para> - <para>用 <literal>lp</literal> 标记在 <filename>/etc/printcap</filename> 里列出 <filename>/dev</filename> + <para>用 <literal>lp</literal> 标记在 <filename>/etc/printcap</filename> 里列出 <filename class="directory">/dev</filename> 下的设备节点。</para> <para>在我们的例子中, 假设打印机 @@ -1069,19 +1072,19 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ # /etc/printcap for host rose - identified what devices to use # rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :sh:sd=/var/spool/lpd/rattan:\ - :lp=/dev/lpt0: + :sh:sd=<filename class="directory">/var/spool/lpd/rattan</filename>:\ + :lp=<filename class="devicefile">/dev/lpt0</filename>: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:sd=/var/spool/lpd/bamboo:\ - :lp=/dev/ttyd5:</programlisting> + :sh:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:\ + :lp=<filename class="devicefile">/dev/ttyd5</filename>:</programlisting> <para>如果您没在您的 <filename>/etc/printcap</filename> 文件中 用 <literal>lp</literal> 标记指定设备节点, - <application>LPD</application> 将默认使用 <filename>/dev/lp</filename> + <application>LPD</application> 将默认使用 <filename class="devicefile">/dev/lp</filename> 。 - <filename>/dev/lp</filename> 目前在 - FreeBSD 中不存在。</para> + <filename class="devicefile">/dev/lp</filename> 目前在 + &os; 中不存在。</para> <para>如果您正在安装的打印机是连接在 并口上的, 请跳到 <link @@ -1166,8 +1169,8 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ 用 <literal>crtscts</literal> 设置成硬件流量控制:</para> <programlisting>bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:sd=/var/spool/lpd/bamboo:\ - :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:</programlisting> + :sh:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:\ + :lp=<filename class="devicefile">/dev/ttyd5</filename>:ms#-parenb cs8 clocal crtscts:</programlisting> </sect4> <sect4 id="printing-textfilter"> @@ -1196,7 +1199,7 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ <para>对于简单的打印机设置, 文本过滤器可以仅仅是一段 执行 <command>/bin/cat</command> 的 shell 脚本来 发送任务到打印机。 - FreeBSD 还提供了一个叫做 + &os; 还提供了一个叫做 <filename>lpf</filename> 的过滤器, 它可以处理退格和下划线来 使那些可能不能很好处理这类字符流的打印机正常工作。 而且, 当然, 您可以用任何其他的 @@ -1222,7 +1225,7 @@ exit 2</programlisting> <para>使这个文件可以被执行:</para> - <screen>&prompt.root; <userinput>chmod 555 /usr/local/libexec/if-simple</userinput></screen> + <screen>&prompt.root; <userinput><command>chmod 555 <filename>/usr/local/libexec/if-simple</filename></command></userinput></screen> <para>然后用 <literal>if</literal> 标记在 @@ -1234,14 +1237,13 @@ exit 2</programlisting> # /etc/printcap for host rose - added text filter # rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :sh:sd=/var/spool/lpd/rattan:\ - :lp=/dev/lpt0:\ - :if=/usr/local/libexec/if-simple: + :sh:sd=<filename class="directory">/var/spool/lpd/rattan</filename>:\ :lp=<filename class="devicefile">/dev/lpt0</filename>:\ + :if=<filename>/usr/local/libexec/if-simple</filename>: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:sd=/var/spool/lpd/bamboo:\ - :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:\ - :if=/usr/local/libexec/if-simple:</programlisting> + :sh:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:\ + :lp=<filename class="devicefile">/dev/ttyd5</filename>:ms#-parenb cs8 clocal crtscts:\ + :if=<filename>/usr/local/libexec/if-simple</filename>:</programlisting> <note> <para><filename>if-simple</filename> 脚本的副本可以在 <filename @@ -1263,7 +1265,7 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ <para>到 <filename>/etc/rc.conf</filename> 文件当中, 然后既可以重启您的 机器, 也可以直接运行 &man.lpd.8;。</para> - <screen>&prompt.root; <userinput>lpd</userinput></screen> + <screen>&prompt.root; <userinput><command>lpd</command></userinput></screen> </sect4> <sect4 id="printing-trying"> @@ -1288,7 +1290,7 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ <para>输入:</para> - <screen>&prompt.root; <userinput>lptest 20 5 | lpr -P<replaceable>printer-name</replaceable></userinput></screen> + <screen>&prompt.root; <userinput><command>lptest 20 5 | lpr <option>-P</option><replaceable>printer-name</replaceable></command></userinput></screen> <para>其中 <replaceable>printer-name</replaceable> 是 在 <filename>/etc/printcap</filename> 中指定的打印机的一个名字 ( 或者一个别名) @@ -1304,11 +1306,11 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ 结果。 而如果您使用的 &man.lptest.1;, 则您得到的 结果应该看起来像下面这样:</para> - <programlisting>!"#$%&'()*+,-./01234 + <screen>!"#$%&'()*+,-./01234 "#$%&'()*+,-./012345 #$%&'()*+,-./0123456 $%&'()*+,-./01234567 -%&'()*+,-./012345678</programlisting> +%&'()*+,-./012345678</screen> <para>要更进一步的测试打印机, 尝试下载一些大的 程序 (为基于特定语言的打印机 ) 或者运行 @@ -1344,25 +1346,26 @@ $%&'()*+,-./01234567 工作还是由 <emphasis>过滤器</emphasis>。 过滤器是 一种与打印机通讯并且处理设备依赖和特殊需要的 程序。 在简单打印机设置这节里, - 我们安装了一个纯文本过滤器 — 一个应该可以用在大多数 - 打印机上的极简单的过滤器 ( <link - linkend="printing-textfilter">安装 - 文本过滤器</link>)。</para> + 我们安装了一个纯文本过滤器 — + 一个应该可以用在大多数打印机上的极简单的过滤器 + (<link linkend="printing-textfilter"> + 安装文本过滤器</link>)。</para> - <para>然而, 为了进行格式转换, 打印 - 记帐, 适应特殊的打印机, 等等, + <para>然而,为了进行格式转换, 打印记帐, + 适应特殊的打印机, 等等, 您需要明白过滤器是怎样工作的。 在根本上过滤器负责处理这些方面。 但坏消息是大多数时候 - <emphasis>您</emphasis> 必须自己提供过滤器。 好消息 - 是很多过滤器通常都已经有了; 当没有的时候, 它们 - 通常也是很好写的。</para> - - <para>FreeBSD 也提供了一个过滤器, - <filename>/usr/libexec/lpr/lpf</filename>, 可以让大多数可以打印纯文本的 - 打印机工作。 ( 它处理文件里的退格和 - 跳格, 并且进行记帐, 但这基本就是它所有能做的了。 ) - 这里还有几个过滤器和过滤器组件在 FreeBSD + <emphasis>您</emphasis> 必须自己提供过滤器。 + 好消息是很多过滤器通常都已经有了; 当没有的时候, + 它们通常也是很好写的。</para> + + <para>&os; 也提供了一个过滤器, + <filename>/usr/libexec/lpr/lpf</filename>, + 可以让大多数可以打印纯文本的打印机工作。 + ( 它处理文件里的退格和跳格,并且进行记帐, + 但这基本就是它所有能做的了。) + 这里还有几个过滤器和过滤器组件在 &os; Ports Collection 里。</para> <para>这是在这节里您将找到的内容:</para> @@ -1401,10 +1404,13 @@ $%&'()*+,-./01234567 linkend="printing-advanced-convfilters">转换过滤器</link> 这节讲述了一个自动把指定格式文件, 比如图像或排版数据, 转换成您打印机可以理解的格式的方法。 在阅读了这节之后, - 您就应该可以配置打印机, 让用户可以用 <command>lpr -t</command> + 您就应该可以配置打印机, 让用户可以用 + <command>lpr <option>-t</option></command> 来打印 troff 数据、 用 - <command>lpr -d</command> 来打印 &tex; DVI 数据, 或用 <command>lpr - -v</command> 来打印光栅图像数据等工作了。 建议您阅读这节。</para> + <command>lpr <option>-d</option></command> + 来打印 &tex; DVI 数据, 或用 + <command>lpr <option>-v</option></command> + 来打印光栅图像数据等工作了。 建议您阅读这节。</para> </listitem> <listitem> @@ -1417,13 +1423,12 @@ $%&'()*+,-./01234567 </listitem> <listitem> - <para><link linkend="printing-advanced-lpf">lpf: 一个文本 - 过滤器</link> 描述了 <command>lpf</command>, 一个 FreeBSD 自带的相当 - 完整而又简单的文本过滤器, 可以使用在行式打印机 (和那些担当行式打印机功能的激光 - 打印机 ) 上。 如果 - 您需要一个快速的方法来让打印机统计打印纯文本的工作量 - , 或者您有一台遇到退格字符就冒烟的打印机 - , 您应该考虑 + <para><link linkend="printing-advanced-lpf">lpf: + 一个文本过滤器</link> 描述了 <command>lpf</command>, + 一个 &os; 自带的相当完整而又简单的文本过滤器, + 可以使用在行式打印机(和那些担当行式打印机功能的激光打印机 )上。 + 如果您需要一个快速的方法来让打印机统计打印纯文本的工作量, + 或者您有一台遇到退格字符就冒烟的打印机, 您应该考虑 <command>lpf</command>。</para> </listitem> </itemizedlist> @@ -1447,23 +1452,22 @@ $%&'()*+,-./01234567 标准输出设置成打印机, 并且把错误信息定向到 错误日志文件 (在 <literal>lf</literal> 标识里指定, 默认在 <filename>/etc/printcap</filename>, 或者 - <filename>/dev/console</filename> 文件里 )。</para> + <filename class="devicefile">/dev/console</filename> 文件里 )。</para> <indexterm> <primary><command>troff</command></primary> </indexterm> - <para>过滤器被 <application>LPD</application> 启动, 并且 - 过滤器的参数依赖于 - <filename>/etc/printcap</filename> 文件中所列出的和 - 用户为任务用 + <para>过滤器被 <application>LPD</application> 启动, + 并且过滤器的参数依赖于 <filename>/etc/printcap</filename> + 文件中所列出的和用户为任务用 &man.lpr.1; 命令所指定的。 例如, 如果用户输入 - <command>lpr -t</command>, <application>LPD</application> 会 - 启动 troff 过滤器, 即在 - 目标打印机的 <literal>tf</literal> 标签里所列出的过滤器。 + <command>lpr <option>-t</option></command>, + <application>LPD</application> 会启动 troff 过滤器, + 即在目标打印机的 <literal>tf</literal> 标签里所列出的过滤器。 如果用户想要打印纯文本, 它将会启动 - <literal>if</literal> ***过滤器 ( 这是通常的情况: 参见 <link + <literal>if</literal> 过滤器 (这是通常的情况: 参见 <link linkend="printing-advanced-of">输出过滤器</link> 来得到 - 细节 )。</para> + 细节)。</para> <para>在 <filename>/etc/printcap</filename> 文件中, 您可以指定三种过滤器:</para> @@ -1502,7 +1506,7 @@ $%&'()*+,-./01234567 <listitem> <para>当任务用 <command>lpr - -l</command> 这个命令提交时出现 </para> + <option>-l</option></command> 这个命令提交时出现 </para> </listitem> </varlistentry> @@ -1529,7 +1533,7 @@ $%&'()*+,-./01234567 <listitem> <para>这里是来自 <command>lpr - -i</command> 命令的总缩进量, 默认为 0</para> + <option>-i</option></command> 命令的总缩进量, 默认为 0</para> </listitem> </varlistentry> @@ -1642,7 +1646,7 @@ $%&'()*+,-./01234567 </varlistentry> </variablelist> - <para>文本过滤器随 FreeBSD 一起发布, + <para>文本过滤器随 &os; 一起发布, 文件名为 <filename>/usr/libexec/lpr/lpf</filename>, 它利用页宽和页长参数来决定何时发送送纸指令, 并提供位打印记帐的方法。 它使用登录名、 主机名, @@ -1691,7 +1695,7 @@ $%&'()*+,-./01234567 <command>lprps</command> 提供的程序) 转换文本到 &postscript;。 然后它会用 <command>lprps</command> 将任务发送到打印机。</para> - <para><command>lprps</command> 可以在 FreeBSD Ports Collection + <para><command>lprps</command> 可以在 &os; Ports Collection (详见 <link linkend="ports">The Ports Collection</link>) 中找到。 你可以根据页面的尺寸选择安装 <filename role="package">print/lprps-a4</filename> @@ -1703,7 +1707,7 @@ $%&'()*+,-./01234567 <filename>/etc/printcap</filename> 文件中 &postscript; 打印机的记录部分中:</para> - <programlisting>:if=/usr/local/libexec/psif:</programlisting> + <programlisting>:if=<filename>/usr/local/libexec/psif</filename>:</programlisting> <para>同时还需要指定 <literal>rw</literal> 标签来告诉 <application>LPD</application> 使用读-写模式打开打印机。</para> @@ -1739,7 +1743,7 @@ fi</programlisting> <para>在上面的脚本中, <command>textps</command> 命令是一个独立安装的程序用来将纯文本转换成 &postscript;。 您可以使用任何您喜欢的文本到 &postscript; 转换程序。 - FreeBSD Ports Collection (详见 <link linkend="ports">Ports Collection</link>) + &os; Ports Collection (详见 <link linkend="ports">Ports Collection</link>) 中包含了一个功能非常完整的文本到 &postscript; 的转换程序, 它叫做 <literal>a2ps</literal>。</para> </sect3> @@ -1757,7 +1761,7 @@ fi</programlisting> 标准。 而 &postscript; 也是一个 <emphasis> 昂贵 </emphasis> 的标准。 幸好, Aladdin 开发了一个和 &postscript; 类似的叫做 - <application>Ghostscript</application> 的程序可以用在 FreeBSD 上。 + <application>Ghostscript</application> 的程序可以用在 &os; 上。 <application>Ghostscript</application> 可以读取大多数 &postscript; 的文件并处理其中的页面交给多种设备,包括许多品牌的非 &postscript; 打印机。 通过安装 <application>Ghostscript</application> @@ -1765,7 +1769,7 @@ fi</programlisting> 打印机用起来就像真的 &postscript; 打印机一样。</para> <para><application>Ghostscript</application> 被收录在 - FreeBSD Ports Collection 中,有许多可用的版本, + &os; Ports Collection 中,有许多可用的版本, 比较常用的版本是 <filename role="package">print/ghostscript-gpl</filename>。</para> @@ -1778,7 +1782,7 @@ fi</programlisting> Hewlett Packard DeskJet 500 打印机的文本过滤器。 对于其他打印机, 替换 <command>gs</command> (<application>Ghostscript</application>) 命令中的 <option>-sDEVICE</option> 参数就可以了。 (输入 - <command>gs -h</command> 来获得当前安装的 + <command>gs <option>-h</option></command> 来获得当前安装的 <application>Ghostscript</application> 所支持的设备列表。)</para> <programlisting>#!/bin/sh @@ -1818,10 +1822,10 @@ exit 2</programlisting> <para>最后, 需要告知 <application>LPD</application> 所使用的过滤器, 通过 <literal>if</literal> 标签完成:</para> - <programlisting>:if=/usr/local/libexec/ifhp:</programlisting> + <programlisting>:if=<filename>/usr/local/libexec/ifhp</filename>:</programlisting> - <para>您可以输入 <command>lpr <replaceable>plain.text</replaceable></command> - 和 <filename>lpr <replaceable>whatever.ps</replaceable></filename>, + <para>您可以输入 <command>lpr <filename><replaceable>plain.text</replaceable></filename></command> + 和 <command>lpr <filename><replaceable>whatever.ps</replaceable></filename></command>, 它们都应该可以成功打印。</para> </sect3> @@ -1846,14 +1850,14 @@ exit 2</programlisting> 我们都不能直接打印它直到我们将 DVI 文件转换成 &postscript;。 转换的命令应该是下面的样子:</para> - <screen>&prompt.user; <userinput>dvips <replaceable>seaweed-analysis.dvi</replaceable></userinput> -&prompt.user; <userinput>lpr seaweed-analysis.ps</userinput></screen> + <screen>&prompt.user; <userinput><command>dvips <filename><replaceable>seaweed-analysis.dvi</replaceable></filename></command></userinput> +&prompt.user; <userinput><command>lpr <filename><replaceable>seaweed-analysis.ps</replaceable></filename></command></userinput></screen> <para>通过安装 DVI 文件的转换过滤器, 我们可以跳过每次手动转换这一步, 而让 <application>LPD</application> 来完成这个步骤。 现在, 每次要打印 DVI 文件, 我们只需要一步就可以打印它:</para> - <screen>&prompt.user; <userinput>lpr -d <replaceable>seaweed-analysis.dvi</replaceable></userinput></screen> + <screen>&prompt.user; <userinput><command>lpr <option>-d</option> <filename><replaceable>seaweed-analysis.dvi</replaceable></filename></command></userinput></screen> <para>我们要 <application>LPD</application> 转换 DVI 文件是通过指定 <option>-d</option> 选项完成的。 <link @@ -1946,7 +1950,7 @@ exit 2</programlisting> </tgroup> </informaltable> - <para>在例子中, <command>lpr -d</command>就是指 + <para>在例子中, <command>lpr <option>-d</option></command>就是指 打印机需要在<filename>/etc/printcap</filename>文件中 <literal>df</literal>变量所指的过滤器。</para> @@ -1959,17 +1963,17 @@ exit 2</programlisting> publishing 程序生成), 而且不打算打印 plot 文件, 就可以安装一个 Printerleaf 转换过滤器并且用 <literal>gf</literal> 变量指定它。 然后就可以告诉您的用户使用 - <command>lpr -g</command> 就可以 <quote>打印 Printerleaf + <command>lpr <option>-g</option></command> 就可以 <quote>打印 Printerleaf 文件。</quote></para> </sect4> <sect4> <title>安装转换过滤器</title> - <para>以为安装的转换过滤器不是 FreeBSD 基本系统的一部分, + <para>以为安装的转换过滤器不是 &os; 基本系统的一部分, 所以它们可能是在 - <filename>/usr/local</filename> 目录下。 通常目录 - <filename>/usr/local/libexec</filename> 是保存它们的地方, + <filename class="directory">/usr/local</filename> 目录下。 通常目录 + <filename class="directory">/usr/local/libexec</filename> 是保存它们的地方, 因为它们通常是通过 <application>LPD</application> 运行的; 普通用户应该并不需要直接运行它们。</para> @@ -1988,15 +1992,15 @@ exit 2</programlisting> # /etc/printcap for host rose - added df filter for bamboo # rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :sh:sd=/var/spool/lpd/rattan:\ - :lp=/dev/lpt0:\ - :if=/usr/local/libexec/if-simple: + :sh:sd=<filename class="directory">/var/spool/lpd/rattan</filename>:\ + :lp=<filename class="devicefile">/dev/lpt0</filename>:\ + :if=<filename>/usr/local/libexec/if-simple</filename>: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:sd=/var/spool/lpd/bamboo:\ - :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\ - :if=/usr/local/libexec/psif:\ - :df=/usr/local/libexec/psdf:</programlisting> + :sh:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:\ + :lp=<filename class="devicefile">/dev/ttyd5</filename>:ms#-parenb cs8 clocal crtscts:rw:\ + :if=<filename>/usr/local/libexec/psif</filename>:\ + :df=<filename>/usr/local/libexec/psdf</filename>:</programlisting> <para>这里的 DVI 过滤器是一段 shell 脚本, 名字叫做 <filename>/usr/local/libexec/psdf</filename>。 @@ -2055,9 +2059,9 @@ giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \ # /etc/printcap for host orchid # teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ - :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\ - :if=/usr/local/libexec/hpif:\ - :vf=/usr/local/libexec/hpvf:</programlisting> + :lp=<filename class="devicefile">/dev/lpt0</filename>:sh:sd=<filename class="directory">/var/spool/lpd/teak</filename>:mx#0:\ + :if=<filename>/usr/local/libexec/hpif</filename>:\ + :vf=<filename>/usr/local/libexec/hpvf</filename>:</programlisting> <para>下面的脚本是一个在名叫 <literal>bamboo</literal> 的这台 &postscript; @@ -2084,7 +2088,7 @@ exec grops</programlisting> <para>这里是我们要启用过滤器需要在 <filename>/etc/printcap</filename> 里增加的内容:</para> - <programlisting>:tf=/usr/local/libexec/pstf:</programlisting> + <programlisting>:tf=<filename>/usr/local/libexec/pstf</filename>:</programlisting> <para>下面的例子也许会让许多 FORTRAN 老手羞愧。 它是一个 FORTRAN- 文本 的过滤器, 能在任意一台 @@ -2105,7 +2109,7 @@ exit 2</programlisting> <filename>/etc/printcap</filename> 中为打印机能够 <literal>teak</literal> 启用这个过滤器添加下面的内容:</para> - <programlisting>:rf=/usr/local/libexec/hprf:</programlisting> + <programlisting>:rf=<filename>/usr/local/libexec/hprf</filename>:</programlisting> <para>最后, 再给出一个有些复杂的例子。 我们将给以前介绍过的 <literal>teak</literal> 这台激光打印机添加一个 DVI @@ -2113,10 +2117,10 @@ exit 2</programlisting> <filename>/etc/printcap</filename> 加入 DVI 过滤器的路径:</para> - <programlisting>:df=/usr/local/libexec/hpdf:</programlisting> + <programlisting>:df=<filename>/usr/local/libexec/hpdf</filename>:</programlisting> <para>现在, 该困难的部分了: 编写过滤器。 为了实现过滤器, 我们需要一个 - DVI-到-LaserJet/PCL 转换程序。 FreeBSD Ports + DVI-到-LaserJet/PCL 转换程序。 &os; Ports Collection (详见 <link linkend="ports">Ports Collection</link> 这一节) 中有一个: <filename role="package">print/dvi2xx</filename>。 安装这个 port 就会得到我们需要的程序, @@ -2128,17 +2132,17 @@ exit 2</programlisting> <command>dvilj2p</command> 不能读取标准输入。 它需要从文件中读取数据。 更糟糕的是, 这个文件的名字必须以 <filename>.dvi</filename> 结尾。 所以使用 - <filename>/dev/fd/0</filename> 作为标准输入是有问题的。 + <filename class="devicefile">/dev/fd/0</filename> 作为标准输入是有问题的。 我们可以通过连接 (符号连接) 来解决这个问题。 连接一个临时的文件名 (一个以 <filename>.dvi</filename> 结尾的文件名) - 到 <filename>/dev/fd/0</filename>, 从而强制 + 到 <filename class="devicefile">/dev/fd/0</filename>, 从而强制 <command>dvilj2p</command> 从标准输入读取。</para> <para>现在迎面而来的是另外一个问题, 我们不能使用 - <filename>/tmp</filename> 存放临时连接。 符号连接是被用户和组 + <filename class="directory">/tmp</filename> 存放临时连接。 符号连接是被用户和组 <username>bin</username> 拥有的。 而过滤器则是以 <username>daemon</username> 用户运行的。 - 并且 <filename>/tmp</filename> 目录设置了 sticky 位。 + 并且 <filename class="directory">/tmp</filename> 目录设置了 sticky 位。 所以过滤器只能建立符号连接, 但它不能在用完之后清除掉这些连接。 因为它们属于不同的用户。</para> @@ -2149,7 +2153,7 @@ exit 2</programlisting> <filename>/etc/printcap</filename> 中指定)。 这是一个非常好的让过滤器完成它工作的地方, 特别还是因为 (有时) 这个目录比起 - <filename>/tmp</filename> 来有更多的可用磁盘空间。</para> + <filename class="directory">/tmp</filename> 来有更多的可用磁盘空间。</para> <para>最后, 给出过滤器的代码:</para> @@ -2241,7 +2245,7 @@ exit 0</programlisting> <secondary>filters</secondary> <tertiary>apsfilter</tertiary> </indexterm> - <para>FreeBSD 的 Ports 套件提供了一个可以自动进行转换的文本过滤器, + <para>&os; 的 Ports 套件提供了一个可以自动进行转换的文本过滤器, 名字叫做 <command>apsfilter</command> (<filename role="package">print/apsfilter</filename>)。 它可以检测纯文本、 &postscript;、 DVI 以及几乎任何格式的文件, 并在执行相应的转换之后完成打印工作。</para> @@ -2334,10 +2338,11 @@ exit 0</programlisting> <title><command>lpf</command>: 一个文本过滤器</title> <para><filename>/usr/libexec/lpr/lpf</filename> 这个程序包含在 - FreeBSD 的二进制程序中, 它是一个文本过滤器 (输入过滤器)。 - 它可以缩排输出 (用 <command>lpr - -i</command> 命令提交的任务), 可以打印控制字符禁止断页 - 用 <command>lpr -l</command> 提交的任务), + &os; 的二进制程序中, 它是一个文本过滤器 (输入过滤器)。 + 它可以缩排输出 (用 + <command>lpr <option>-i</option></command> 命令提交的任务), + 可以打印控制字符禁止断页用 + <command>lpr <option>-l</option></command> 提交的任务), 可以调整任务中退格和制表符打印的位置, 还可以对打印进行记帐。 它同样可以像输出过滤器一样工作。</para> @@ -2424,15 +2429,15 @@ exec /usr/libexec/lpr/lpf</programlisting> # /etc/printcap for host orchid # teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ - :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\ - :if=/usr/local/libexec/hpif:\ - :vf=/usr/local/libexec/hpvf:\ - :of=/usr/local/libexec/hpof:</programlisting> + :lp=<filename class="devicefile">/dev/lpt0</filename>:sd=<filename class="directory">/var/spool/lpd/teak</filename>:mx#0:\ + :if=<filename>/usr/local/libexec/hpif</filename>:\ + :vf=<filename>/usr/local/libexec/hpvf</filename>:\ + :of=<filename>/usr/local/libexec/hpof</filename>:</programlisting> <para>现在, 当用户再发任务给打印机 <literal>teak</literal> 的时候, 每个任务都会有一个报头页。 如果用户想要花时间来寻找他们自己打印的文件, 那么他们可以通过 - <command>lpr -h</command> 命令来提交任务; 参考 <link + <command>lpr <option>-h</option></command> 命令来提交任务; 参考 <link linkend="printing-lpr-options-misc">报头页选项</link> 这一节来得到更多关于 &man.lpr.1; 的选项。</para> @@ -2453,7 +2458,7 @@ teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ 下面是一个例子 (<username>kelly</username> 从主机 <hostid>rose</hostid> 打印了一个叫做 <quote>outline</quote> 的任务):</para> - <programlisting> k ll ll + <screen> k ll ll k l l k l l k k eeee l l y y @@ -2499,7 +2504,7 @@ teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ Job: outline - Date: Sun Sep 17 11:04:58 1995</programlisting> + Date: Sun Sep 17 11:04:58 1995</screen> <para><application>LPD</application> 会附加一个换页符在这段文本之后, 所以任务会在新的一页上开始 @@ -2513,7 +2518,7 @@ teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ 在文件 <filename>/etc/printcap</filename> 中。 报头页就会看起来像下面这样:</para> - <programlisting>rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995</programlisting> + <screen>rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995</screen> <para>同样是默认的, <application>LPD</application> 也是先打印报头页, 然后才是任务。 @@ -2535,16 +2540,16 @@ teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ 但却没有提供给它任何 <emphasis>用户或者主机</emphasis> 的信息或者记帐文件, 所以它无法知道谁应该为打印机的使用付费。 如果仅仅是 - <quote>增加一页</quote> 给文本过滤器或者其他过滤器 - (它们有用户和主机的信息) 是不够的, 因为 - 用户可以用 <command>lpr -h</command> 命令跳过报头页。 + <quote>增加一页计数</quote> 给文本过滤器或者其他过滤器 + (它们有用户和主机的信息) 是不够的, 因为用户可以用 + <command>lpr <option>-h</option></command> 命令跳过报头页。 他还是需要为自己并没有打印的报头页付钱。 - 基本上, <command>lpr -h</command> 是明知用户的首选, + 基本上, <command>lpr <option>-h</option></command> 是明知用户的首选, 但也不能强制让别人使用它。</para> <para>让每个过滤器生成自己的报头页 (因此可以为它们计费) 是 <emphasis>仍然不够的</emphasis>。 - 如果用户想要用 <command>lpr -h</command> + 如果用户想要用 <command>lpr <option>-h</option></command> 命令禁止报头页, 它们将仍然印出报头页并且为它们付费。 因为 <application>LPD</application> 不会把 @@ -2603,8 +2608,9 @@ teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ <para>一个显而易见的方法来得到报头页就是让每个转换过滤器和文本过滤器都来生成报头页。 这些过滤器应该用用户名和主机的参数来生成一个相对应的报头页。 这种方法的缺点就是用户总是打印出报头页, - 无论他们是否用 <command>lpr - -h</command> 命令来提交的任务。</para> + 无论他们是否用 + <command>lpr <option>-h</option></command> + 命令来提交的任务。</para> <para>让我们来深入深入的研究一下这个方法。 下面的脚本输入三个参数 @@ -2746,7 +2752,7 @@ done 这节中介绍的那种技巧: 写一个输出过滤器来解释 LPD- 生成的报头页并且生成一个 &postscript; 的版本。 如果用户用 - <command>lpr -h</command> 命令提交任务, 那么 + <command>lpr <option>-h</option></command> 命令提交任务, 那么 <application>LPD</application> 将不会生成报头页, 并且输出过滤器也不会生成报头页。 否则, 输出过滤器将从 @@ -2768,7 +2774,7 @@ done <secondary>network</secondary> </indexterm> <indexterm><primary>network printing</primary></indexterm> - <para>FreeBSD 支持网络打印: 发送任务给远程打印机。 + <para>&os; 支持网络打印: 发送任务给远程打印机。 网络打印通常指两种不同的方式:</para> <itemizedlist> @@ -2829,7 +2835,7 @@ done <emphasis>本地主机</emphasis> 允许使用 <emphasis>远程主机</emphasis> 上的 <application>LPD</application> 服务 (参见 <link - linkend="printing-advanced-restricting-remote">限制远程打印机任务</link>)。</para> + linkend="printing-advanced-restricting-remote">限制远程主打印任务</link>)。</para> <indexterm> <primary>printers</primary> @@ -2905,35 +2911,35 @@ done # teak is local; it is connected directly to orchid: # teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ - :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\ - :if=/usr/local/libexec/ifhp:\ - :vf=/usr/local/libexec/vfhp:\ - :of=/usr/local/libexec/ofhp: + :lp=<filename class="devicefile">/dev/lpt0</filename>:sd=<filename class="directory">/var/spool/lpd/teak</filename>:mx#0:\ + :if=<filename>/usr/local/libexec/ifhp</filename>:\ + :vf=<filename>/usr/local/libexec/vfhp</filename>:\ + :of=<filename>/usr/local/libexec/ofhp</filename>: # # rattan is connected to rose; send jobs for rattan to rose: # rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan: + :lp=:rm=rose:rp=rattan:sd=<filename class="directory">/var/spool/lpd/rattan</filename>: # # bamboo is connected to rose as well: # bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:</programlisting> + :lp=:rm=rose:rp=bamboo:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:</programlisting> <para>然后, 我们只需要在主机 <hostid>orchid</hostid> 上建立一个后台打印队列目录:</para> - <screen>&prompt.root; <userinput>mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo</userinput> -&prompt.root; <userinput>chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo</userinput> -&prompt.root; <userinput>chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo</userinput></screen> - + <screen>&prompt.root; <userinput><command>mkdir <option>-p</option> <filename class="directory">/var/spool/lpd/rattan</filename> <filename class="directory">/var/spool/lpd/bamboo</filename></command></userinput> +&prompt.root; <userinput><command>chmod 770 <filename class="directory">/var/spool/lpd/rattan</filename> <filename class="directory">/var/spool/lpd/bamboo</filename></command></userinput> +&prompt.root; <userinput><command>chown daemon:daemon <filename class="directory">/var/spool/lpd/rattan</filename> <filename class="directory">/var/spool/lpd/bamboo</filename></command></userinput></screen> + <para>现在, 主机 <hostid>orchid</hostid> 上的用户可以打印到 <literal>rattan</literal> 和 <literal>bamboo</literal> 了。 如果, 比如, 一个用户在主机 <hostid>orchid</hostid> 上输入了:</para> - <screen>&prompt.user; <userinput>lpr -P bamboo -d <replaceable>sushi-review.dvi</replaceable></userinput></screen> + <screen>&prompt.user; <userinput><command>lpr <option>-P</option> bamboo <option>-d</option> <filename><replaceable>sushi-review.dvi</replaceable></filename></command></userinput></screen> <para><application>LPD</application> 系统在主机 <hostid>orchid</hostid> 上会复制这个任务到后台打印队列目录 @@ -2970,7 +2976,7 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ <command>netprint</command> 将标准输入的所有数据发送到一个连在网络上的打印机。 我们将打印机的名字作为第一个参数, 端口号跟在后面作为第二个参数, 传给 <command>netprint</command>。 - 注意它只支持单向通讯 (FreeBSD 到打印机); + 注意它只支持单向通讯 (&os; 到打印机); 很多网络打印机支持双向通讯, 并且这是您可能利用到的 (得到打印机状态, 进行打印记帐, 等等的时候。)。</para> @@ -3029,7 +3035,7 @@ exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100</pro <title>限制多份副本</title> <para><application>LPD</application> 系统能够简化用户在打印多份副本时的工作。 - 用户可以用 <command>lpr -#5</command> + 用户可以用 <command>lpr <option>-#5</option></command> (举例) 来提交打印任务, 则会将任务中每个文件都打印五份副本。 这是不是一件很棒的事情呢。</para> @@ -3059,15 +3065,15 @@ exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100</pro # /etc/printcap for host rose - restrict multiple copies on bamboo # rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :sh:sd=/var/spool/lpd/rattan:\ - :lp=/dev/lpt0:\ - :if=/usr/local/libexec/if-simple: + :sh:sd=<filename class="directory">/var/spool/lpd/rattan</filename>:\ + :lp=<filename class="devicefile">/dev/lpt0</filename>:\ + :if=<filename>/usr/local/libexec/if-simple</filename>: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:sd=/var/spool/lpd/bamboo:sc:\ - :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\ - :if=/usr/local/libexec/psif:\ - :df=/usr/local/libexec/psdf:</programlisting> + :sh:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:sc:\ + :lp=<filename class="devicefile">/dev/ttyd5</filename>:ms#-parenb cs8 clocal crtscts:rw:\ + :if=<filename>/usr/local/libexec/psif</filename>:\ + :df=<filename>/usr/local/libexec/psdf</filename>:</programlisting> <para>现在, 我们还需要增机 <literal>sc</literal> 变量在主机 <hostid>orchid</hostid> 的 @@ -3078,24 +3084,24 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ # /etc/printcap for host orchid - no multiple copies for local # printer teak or remote printer bamboo teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ - :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\ - :if=/usr/local/libexec/ifhp:\ - :vf=/usr/local/libexec/vfhp:\ - :of=/usr/local/libexec/ofhp: + :lp=<filename class="devicefile">/dev/lpt0</filename>:sd=<filename class="directory">/var/spool/lpd/teak</filename>:mx#0:sc:\ + :if=<filename>/usr/local/libexec/ifhp</filename>:\ + :vf=<filename>/usr/local/libexec/vfhp</filename>:\ + :of=<filename>/usr/local/libexec/ofhp</filename>: rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan: + :lp=:rm=rose:rp=rattan:sd=<filename class="directory">/var/spool/lpd/rattan</filename>: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:</programlisting> + :lp=:rm=rose:rp=bamboo:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:sc:</programlisting> <para>通过使用 <literal>sc</literal> 变量, 我们阻止了 - <command>lpr -#</command> 命令的使用, 但仍然没有禁止用户多次运行 + <command>lpr <option>-#</option></command> 命令的使用, 但仍然没有禁止用户多次运行 &man.lpr.1; , 或者多次提交任务中同样的文件, 像下面这样:</para> - <screen>&prompt.user; <userinput>lpr <replaceable>forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign</replaceable></userinput></screen> + <screen>&prompt.user; <userinput>lpr <filename><replaceable>forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign</replaceable></filename></userinput></screen> <para>这里有很多种方法可以阻止这种行为 (包括忽略它), 并且是免费的。</para> @@ -3131,15 +3137,15 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ # /etc/printcap for host rose - restricted group for bamboo # rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :sh:sd=/var/spool/lpd/rattan:\ - :lp=/dev/lpt0:\ - :if=/usr/local/libexec/if-simple: + :sh:sd=<filename class="directory">/var/spool/lpd/rattan</filename>:\ + :lp=<filename class="devicefile">/dev/lpt0</filename>:\ + :if=<filename>/usr/local/libexec/if-simple</filename>: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:\ - :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\ - :if=/usr/local/libexec/psif:\ - :df=/usr/local/libexec/psdf:</programlisting> + :sh:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:sc:rg=artists:\ + :lp=<filename class="devicefile">/dev/ttyd5</filename>:ms#-parenb cs8 clocal crtscts:rw:\ + :if=<filename>/usr/local/libexec/psif</filename>:\ + :df=<filename>/usr/local/libexec/psdf</filename>:</programlisting> <para>Let us leave the other example <filename>/etc/printcap</filename> file (for the host @@ -3199,18 +3205,18 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ # No limit on job size: # rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :sh:mx#0:sd=/var/spool/lpd/rattan:\ - :lp=/dev/lpt0:\ - :if=/usr/local/libexec/if-simple: + :sh:mx#0:sd=<filename class="directory">/var/spool/lpd/rattan</filename>:\ + :lp=<filename class="devicefile">/dev/lpt0</filename>:\ + :if=<filename>/usr/local/libexec/if-simple</filename>: # # Limit of five megabytes: # bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\ - :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\ - :if=/usr/local/libexec/psif:\ - :df=/usr/local/libexec/psdf:</programlisting> + :sh:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:sc:rg=artists:mx#5000:\ + :lp=<filename class="devicefile">/dev/ttyd5</filename>:ms#-parenb cs8 clocal crtscts:rw:\ + :if=<filename>/usr/local/libexec/psif</filename>:\ + :df=<filename>/usr/local/libexec/psdf</filename>:</programlisting> <para>同样, 限制只对本地用户起作用。 如果设置了允许远程用户使用您的打印机, 远程用户将不会受到这些限制。 @@ -3222,11 +3228,11 @@ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ <para>除此之外, 还有另一种限制远程任务大小的方法; 参见 <link - linkend="printing-advanced-restricting-remote">限制远程打印机任务</link>。</para> + linkend="printing-advanced-restricting-remote">限制远程主机打印任务</link>。</para> </sect3> <sect3 id="printing-advanced-restricting-remote"> - <title>限制远程打印机任务</title> + <title>限制远程主机打印任务</title> <para><application>LPD</application> 后台打印系统提供了多种方法来限制从远程主机提交的任务:</para> @@ -3288,17 +3294,17 @@ madrigal.fishbaum.de</programlisting> 的记录:</para> <programlisting>bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\ - :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:mx#5000:\ - :if=/usr/local/libexec/psif:\ - :df=/usr/local/libexec/psdf:</programlisting> + :sh:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:sc:rg=artists:mx#5000:\ + :lp=<filename class="devicefile">/dev/ttyd5</filename>:ms#-parenb cs8 clocal crtscts:rw:mx#5000:\ + :if=<filename>/usr/local/libexec/psif</filename>:\ + :df=<filename>/usr/local/libexec/psdf</filename>:</programlisting> <para>后台打印队列目录在 <literal>sd</literal> 变量中给出。 我们设置 3 兆字节 (6144 磁盘块) 为文件系统上必须存在的总共剩余空间, 让 <application>LPD</application> 可以接受远程任务:</para> - <screen>&prompt.root; <userinput>echo 6144 > /var/spool/lpd/bamboo/minfree + <screen>&prompt.root; <userinput><command>echo 6144 > <filename>/var/spool/lpd/bamboo/minfree</filename></command> </userinput></screen> </listitem> </varlistentry> @@ -3393,7 +3399,7 @@ madrigal.fishbaum.de</programlisting> <sect3> <title>快速并且混乱的打印记帐</title> - <para>FreeBSD 包含两个可以让您立刻可以建立起简单的阶段记帐的程序。 + <para>&os; 包含两个可以让您立刻可以建立起简单的阶段记帐的程序。 它们是文本过滤器 <command>lpf</command>, 在 <link linkend="printing-advanced-lpf">lpf: 一个文本过滤器</link> 这节中描述, 和 @@ -3526,7 +3532,7 @@ total 337.00 154 $ 6.74</screen> <para>在 &man.pac.8; 默认产生的摘要中, 可以看到在不同主机上的每个用户打印了多少页。 如果在您这里, 主机不考虑 (因为用户可以使用任何主机), - 运行 <command>pac -m</command>, + 运行 <command>pac <option>-m</option></command>, 来得到下面的摘要:</para> <screen> Login pages/feet runs price @@ -3549,12 +3555,12 @@ total 337.00 154 $ 6.74</screen> 的单位是美元, 而不是百分之一分。 例如,</para> - <screen>&prompt.root; <userinput>pac -p1.50</userinput></screen> + <screen>&prompt.root; <userinput><command>pac <option>-p1.50</option></command></userinput></screen> <para>设定每页的价格是 1 美元 5 美分。 您可以通过这个选项来达到目标利润。</para> - <para>最终, 运行 <command>pac -s</command> 将存储这些信息在一个记帐文件里, + <para>最终, 运行 <command>pac <option>-s</option></command> 将存储这些信息在一个记帐文件里, 文件名和打印机帐户的名字相同, 但是带着 <literal>_sum</literal> 的后缀。 然后截短记帐文件。 @@ -3615,7 +3621,7 @@ total 337.00 154 $ 6.74</screen> <secondary>usage</secondary> </indexterm> <para>这节将讲述如何使用在 - FreeBSD 下设置好的打印机。 下面是一个用户级命令的总览:</para> + &os; 下设置好的打印机。 下面是一个用户级命令的总览:</para> <variablelist> <varlistentry> @@ -3668,28 +3674,28 @@ total 337.00 154 $ 6.74</screen> <para>要打印文件, 输入:</para> - <screen>&prompt.user; <userinput>lpr <replaceable>filename</replaceable> <replaceable>...</replaceable></userinput></screen> + <screen>&prompt.user; <userinput><command>lpr <filename><replaceable>filename</replaceable></filename> <replaceable>...</replaceable></command></userinput></screen> <indexterm><primary>printing</primary></indexterm> <para>这个命令会打印所有列出的文件到默认打印机。 如果没有列出文件, &man.lpr.1; 会从标准输入读取打印数据。 比如, 这个命令打印一些重要的系统文件:</para> - <screen>&prompt.user; <userinput>lpr /etc/host.conf /etc/hosts.equiv</userinput></screen> + <screen>&prompt.user; <userinput><command>lpr <filename>/etc/host.conf</filename> <filename>/etc/hosts.equiv</filename></command></userinput></screen> <para>要选择一个指定的打印机, 输入:</para> - <screen>&prompt.user; <userinput>lpr -P <replaceable>printer-name</replaceable> <replaceable>filename</replaceable> <replaceable>...</replaceable></userinput></screen> + <screen>&prompt.user; <userinput><command>lpr <option>-P</option> <replaceable>printer-name</replaceable> <filename><replaceable>filename</replaceable></filename> <replaceable>...</replaceable></command></userinput></screen> <para>这个例子打印一个当前目录的长长的列表到叫做 <literal>rattan</literal> 的这台打印机:</para> - <screen>&prompt.user; <userinput>ls -l | lpr -P rattan</userinput></screen> + <screen>&prompt.user; <userinput><command>ls <option>-l</option> | lpr <option>-P</option> rattan</command></userinput></screen> <para>因为没有为 &man.lpr.1; 命令列出文件, <command>lpr</command> 从标准输入读入数据, 在这里是 <command>ls - -l</command> 命令的输出。</para> + <option>-l</option></command> 命令的输出。</para> <para> &man.lpr.1; 命令同样可以接受多种控制格式的选项, 应用文件转换, 生成多份副本, 等等。 @@ -3712,7 +3718,7 @@ total 337.00 154 $ 6.74</screen> 要指定打印机, 使用 <option>-P</option> 选项。 例如, 命令 - <screen>&prompt.user; <userinput>lpq -P bamboo</userinput></screen> + <screen>&prompt.user; <userinput><command>lpq <option>-P</option> bamboo</command></userinput></screen> 会显示打印机 <literal>bamboo</literal> 的队列。 下面是命令 <command>lpq</command> @@ -3747,7 +3753,7 @@ active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes <para> &man.lpq.1; 命令同样支持 <option>-l</option> 选项来生成一个详细的长列表。 下面是一个 - <command>lpq -l</command> 命令的例子:</para> + <command>lpq <option>-l</option></command> 命令的例子:</para> <screen>waiting for bamboo to become ready (offline ?) kelly: 1st [job 009rose] @@ -3771,13 +3777,13 @@ mary: 3rd [job 011rose] <para>要从默认打印机中移除一个任务, 首先使用 &man.lpq.1; 找到任务编号。 然后输入:</para> - <screen>&prompt.user; <userinput>lprm <replaceable>job-number</replaceable></userinput></screen> + <screen>&prompt.user; <userinput><command>lprm <replaceable>job-number</replaceable></command></userinput></screen> <para>要从指定打印机中删除任务, 增加 <option>-P</option> 选项。 下面的命令会删除编号为 10 的任务从 <literal>bamboo</literal> 这台打印机:</para> - <screen>&prompt.user; <userinput>lprm -P bamboo 10</userinput></screen> + <screen>&prompt.user; <userinput><command>lprm <option>-P</option> bamboo 10</command></userinput></screen> <para> &man.lprm.1; 命令有一些快捷方式:</para> @@ -3815,7 +3821,7 @@ mary: 3rd [job 011rose] 例如, 下面的命令会删除当前用户在打印机 <literal>rattan</literal> 队列中的所有任务:</para> - <screen>&prompt.user; <userinput>lprm -P rattan -</userinput></screen> + <screen>&prompt.user; <userinput><command>lprm <option>-P</option> rattan -</command></userinput></screen> <note> <para>如果您正工作在一个网络环境中, &man.lprm.1; @@ -3823,16 +3829,16 @@ mary: 3rd [job 011rose] 甚至是同一台打印机也可以在其他主机上使用时。 下面的命令证明了这个:</para> - <screen>&prompt.user; <userinput>lpr -P rattan <replaceable>myfile</replaceable></userinput> -&prompt.user; <userinput>rlogin orchid</userinput> -&prompt.user; <userinput>lpq -P rattan</userinput> + <screen>&prompt.user; <userinput><command>lpr <option>-P</option> rattan <filename><replaceable>myfile</replaceable></filename></command></userinput> +&prompt.user; <userinput><command>rlogin orchid</command></userinput> +&prompt.user; <userinput><command>lpq <option>-P</option> rattan</command></userinput> Rank Owner Job Files Total Size active seeyan 12 ... 49123 bytes 2nd kelly 13 myfile 12 bytes -&prompt.user; <userinput>lprm -P rattan 13</userinput> +&prompt.user; <userinput><command>lprm <option>-P</option> rattan 13</command></userinput> rose: Permission denied -&prompt.user; <userinput>logout</userinput> -&prompt.user; <userinput>lprm -P rattan 13</userinput> +&prompt.user; <userinput><command>logout</command></userinput> +&prompt.user; <userinput><command>lprm <option>-P</option> rattan 13</command></userinput> dfA013rose dequeued cfA013rose dequeued </screen> @@ -3860,7 +3866,7 @@ cfA013rose dequeued &tex; 排版系统) 文件名为 <filename><replaceable>fish-report.dvi</replaceable></filename> 到打印 <literal>bamboo</literal>:</para> - <screen>&prompt.user; <userinput>lpr -P bamboo -d <replaceable>fish-report.dvi</replaceable></userinput></screen> + <screen>&prompt.user; <userinput><command>lpr <option>-P</option> bamboo -d <filename><replaceable>fish-report.dvi</replaceable></filename></command></userinput></screen> <para>这些选项应用到任务中的每个文件, 所以您不能混合 (说) DVI 和 ditroff 文件在同一个任务中。 替代的方法是, @@ -3979,7 +3985,7 @@ cfA013rose dequeued <para>下面是一个例子: 这个命令打印了一个很好的 &man.ls.1; 联机手册到默认打印机:</para> - <screen>&prompt.user; <userinput>zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t</userinput></screen> + <screen>&prompt.user; <userinput><command>zcat <filename>/usr/share/man/man1/ls.1.gz</filename> | troff <option>-t</option> -man | lpr <option>-t</option></command></userinput></screen> <para> &man.zcat.1; 命令解压缩 &man.ls.1; 的手册并且将内容传给 &man.troff.1; @@ -4013,7 +4019,7 @@ cfA013rose dequeued <filename><replaceable>parser.c</replaceable></filename> 跟着三份副本的文件 <filename><replaceable>parser.h</replaceable></filename> 到默认打印机:</para> - <screen>&prompt.user; <userinput>lpr -#3 <replaceable>parser.c parser.h</replaceable></userinput></screen> + <screen>&prompt.user; <userinput><command>lpr <option>-#3</option> <filename><replaceable>parser.c parser.h</replaceable></filename></command></userinput></screen> </listitem> </varlistentry> @@ -4320,7 +4326,7 @@ cfA013rose dequeued 的一切。 您可能发现了它很多的缺点, 它们很自然的让您提出这样的问题: <quote>这里还有什么后台打印系统吗 (并且可以工作在 - FreeBSD 上) ?</quote></para> + &os; 上) ?</quote></para> <variablelist> <varlistentry> @@ -4412,9 +4418,9 @@ exit 2</programlisting> <listitem> <para>您可能在纸上得到下面这些:</para> - <programlisting>!"#$%&'()*+,-./01234 + <screen>!"#$%&'()*+,-./01234 "#$%&'()*+,-./012345 - #$%&'()*+,-./0123456</programlisting> + #$%&'()*+,-./0123456</screen> <indexterm><primary>MS-DOS</primary></indexterm> <indexterm><primary>OS/2</primary></indexterm> @@ -4428,13 +4434,13 @@ exit 2</programlisting> 13 (回车 CR)。 许多打印机使用 &ms-dos; 的习惯来代表新行。</para> - <para>当您在 FreeBSD 上打印时, 您的文本仅用了换行字符。 + <para>当您在 &os; 上打印时, 您的文本仅用了换行字符。 打印机, 打印机看到换行字符后, 走一行纸, 但还光标位置还是在这张纸上要打印的下一个字符处。 这就是回车的作用: 将下一个要打印的字符的位置移到纸张的左边缘。</para> - <para>这里是 FreeBSD 想要打印机做的:</para> + <para>这里是 &os; 想要打印机做的:</para> <informaltable frame="none" pgwide="1"> <tgroup cols="2"> @@ -4461,7 +4467,7 @@ exit 2</programlisting> <note> <para>如果您引导您的系统到其他除了 - FreeBSD 之外的操作系统, 您可能不得不 + &os; 之外的操作系统, 您可能不得不 <emphasis>重新配置</emphasis> 打印机使用 这个操作系统对 CR 和 LF 字符的解释。 您可能更喜欢下面这另一种解决方案。</para> @@ -4469,7 +4475,7 @@ exit 2</programlisting> </listitem> <listitem> - <para>让 FreeBSD 的串口驱动自动转换 LF 到 CR+LF。 + <para>让 &os; 的串口驱动自动转换 LF 到 CR+LF。 当然, 这 <emphasis>仅仅</emphasis> 工作在串口打印机上。 要开启这个功能, 定义 <literal>ms#</literal> 变量并 @@ -4512,8 +4518,8 @@ exit 2</programlisting> # /etc/printcap for host orchid # teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ - :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\ - :if=/usr/local/libexec/hpif:</programlisting> + :lp=<filename class="devicefile">/dev/lpt0</filename>:sh:sd=<filename class="directory">/var/spool/lpd/teak</filename>:mx#0:\ + :if=<filename>/usr/local/libexec/hpif</filename>:</programlisting> </listitem> </itemizedlist> </listitem> @@ -4528,7 +4534,7 @@ teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ <para>这个问题是 <quote>相反</quote> 于楼梯效果, 像上面描述的那样, 并且更少见。 - 一些地方, LF 这个 FreeBSD 用来结束一行的字符被作为 + 一些地方, LF 这个 &os; 用来结束一行的字符被作为 CR 这个将打印位置返回到纸的左边的字符对待。 而没有向下走纸一行。</para> @@ -4575,15 +4581,16 @@ teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ <itemizedlist> <listitem> <para>如果打印机支持 XON/XOFF 流量控制, - 那就让 FreeBSD 使用它, 通过加入 <literal>ixon</literal> 模式在 + 那就让 &os; 使用它, 通过加入 <literal>ixon</literal> 模式在 <literal>ms#</literal> 变量里。</para> </listitem> <listitem> - <para>如果打印机支持载波流量控制, + <para>如果打印机支持请求/清除硬件握手信号 + (通常时 <literal>RTS/CTS</literal>), 指定 <literal>crtscts</literal> 模式在 <literal>ms#</literal> 变量里。 - 并且要确定连接打印机和计算机的线是支持载波流量控制的。</para> + 并且要确定连接打印机和计算机的线是支持硬件流量控制的。</para> </listitem> </itemizedlist> </listitem> @@ -4609,17 +4616,17 @@ teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ <listitem> <para>如果没有反应, 问题就可能出在 - FreeBSD 而不是硬件上了。 增加日志文件 + &os; 而不是硬件上了。 增加日志文件 (<literal>lf</literal>) 变量到 <filename>/etc/printcap</filename> 文件里出现问题的打印机的记录处。 比如, 下面是打印机 <literal>rattan</literal> 的记录, 使用了 <literal>lf</literal> 变量:</para> <programlisting>rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :sh:sd=/var/spool/lpd/rattan:\ - :lp=/dev/lpt0:\ - :if=/usr/local/libexec/if-simple:\ - :lf=/var/log/rattan.log</programlisting> + :sh:sd=<filename class="directory">/var/spool/lpd/rattan</filename>:\ + :lp=<filename class="devicefile">/dev/lpt0</filename>:\ + :if=<filename>/usr/local/libexec/if-simple</filename>:\ + :lf=<filename>/var/log/rattan.log</filename></programlisting> <para>然后, 再次打印。 检查日志文件 (在我们的例子当中, 是 <filename>/var/log/rattan.log</filename> 这个文件) 来看是否有错误信息出现。 @@ -4628,7 +4635,7 @@ teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ <para>如果您没有指定 <literal>lf</literal> 变量, <application>LPD</application> 会使用 - <filename>/dev/console</filename> 作为默认值。</para> + <filename class="devicefile">/dev/console</filename> 作为默认值。</para> </listitem> </varlistentry> </variablelist> |