Impresi�n Como
 Grant Taylor [email protected] y Brian McCauley
 ([email protected]
 Traducci�n: Francisco Escarpa [email protected]

 Una gu�a de c�mo imprimir y ver documentos bajo el sistema operativo
 Linux.
 ______________________________________________________________________

 �ndice General:

 1.      Introducci�n

 2.      Prep�rense los impacientes.

 3.      Puertos y dispositivos

 4.      LPR

 4.1.    �Qu� necesita?

 4.2.    �C�mo imprimir con Linux?

 4.3.    Impresi�n remota e impresi�n local.

 4.4.    Los programas importantes

 4.4.1.  La orden lpr

 4.4.2.  La orden lpq

 4.4.3.  La orden lprm

 4.4.4.  la orden lpc

 4.5.    Los directorios fundamentales.

 4.5.1.  Y sus correspondientes ficheros.

 4.6.    /etc/printcap

 4.6.1.  Los campos de /etc/printcap .

 4.6.2.  Probemos /etc/printcap  con un ejemplo

 4.6.3.  Valor y al toro: junt�moslo todo

 4.6.4.  Y de la impresi�n remota, �qu�?

 4.6.5.  Socorro: no funciona.

 4.6.6.  �D�nde puedo encontrar un printcap  para la impresora xxxxx?

 4.6.7.  El "efecto escalera", bajo control.

 4.6.8.  Imprimir por el puerto serie es f�cil.

 4.6.9.  cat  funciona, pero lpd  no.

 4.6.10. Impresoras que no son dispositivos simples.

 4.7.    Trucos y problemas

 4.7.1.  lpr -i  o como modificar la impresi�n a nuestro antojo.

 4.7.2.  ' lpc ' y ' lpq ' advierten : " missing daemons "

 4.7.3.  Impresi�n sobre red (notas adicionales)

 4.8.    Los filtros de impresi�n

 4.8.1.  Los filtros de salida

 4.8.2.  Depuraci�n de filtros

 4.8.3.  Filtros M�gicos

 4.8.4.  Los usuarios de HP estamos de suerte

 5.      �C�MO SE IMPRIME ... ?

 5.1.    Texto Llano

 5.1.1.  pr

 5.2.    PostScript

 5.2.1.  Ghostscript

 5.3.    Mi impresora s�lo trabaja con PostScript

 5.3.1.  mpage

 5.3.2.  a2ps, enscript, nenscript

 5.3.3.  gslp

 5.3.4.  Utilidades para PostScript

 5.4.    TeX, LaTeX

 5.4.1.  dvips

 5.4.2.  eps, dvilj, dvi500

 5.5.    texinfo

 5.6.    *roff ; p�ginas man

 5.7.    Adobe Acrobat. Ficheros PDF

 5.8.    Tipos

 5.9.    Documentos para fax.

 5.9.1.  FLEXFAX

 5.9.2.  mgetty+sendfax

 5.9.3.  EFAX

 6.      Visualizaci�n

 6.1.    Con X-Window instalado

 6.1.1.  ghostview

 6.1.2.  gspreview

 6.1.3.  xdvi y xtex

 6.2.    �Y si no tengo instalado X Window ?

 6.2.1.  Ghostscript, de nuevo

 6.2.2.  dvgt

 7.      Copyright

 8.      Anexo: El INSFLUG
 ______________________________________________________________________

 1.  Introducci�n

 Esta es la versi�n espa�ola del Printing-HOWTO de Linux. �ste
 documento forma parte de la segunda generaci�n de linux FAQ (-- Nota
 del Revisor El Linux-FAQ original devino en una bestia inmanejable,
 por lo que se cambi� el esquema y se fraccion� en secciones
 independientes para cada aspecto del sistema operativo.

 Este COMO en particular trata de c�mo administrar los distintos
 aspectos de impresi�n bajo Linux, configurar impresoras, instalar
 aplicaciones para hacerlas funcionar...  Originalmente escrito por
 Grant Taylor [email protected]), posteriormente incorpor� el lpd-
 FAQ de Brian McCauley ([email protected]).

 Otros COMOs detallan aspectos acerca de la conexi�n en red.... Aunque
 pueden encontrarse estos documentos en los lugares m�s insospechados,
 su "domicilio" oficial es:

 ftp://sunsite.unc.edu/pub/linux/docs/Howto (-- Igualmente, la mayor�a
 de los mirrors de Sunsite contendr�n las traducciones de los COMO, en
 su directorio
 ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/translations/es--)

 (busque mejor en los Mirrors.  Sunsite es una playa muy concurrida)
 Junto con el resto de los FAQ de usenet, podemos encontrarlos en
 ftp://rtfm.mit.edu

 Env�en los comentarios, errores detectados y sugerencias a Brian y
 Grant a [email protected] (versi�n en ingl�s) o a Francisco
 Escarpa para la traducci�n espa�ola ([email protected] ).

 Les rogamos que nos comuniquen cualquier nuevo programa, fichero, ...
 que conozcan y no figure en este documento.

 Grant ha configurado un servidor de correo centrado en la impresi�n y
 visualizaci�n bajo Linux, incluyendo la �ltima versi�n de este
 documento (en ingl�s). Para acceder, env�e un mensaje de correo
 electr�nico a [email protected], con el cuerpo de mensaje
 'INFO'. Recibir� como respuesta una lista de los ficheros disponibles.
 Si el cuerpo del mensaje es 'get fich1 [fich2 fich3]', recibir� una
 copia de los ficheros pedidos.

 Para esta traducci�n se ha reelaborado ligeramente el documento
 original, eliminado repeticiones, reducido los detalles particulares
 de cada programa al m�nimo imprescindible, remitiendo al lector a la
 documentaci�n correspondiente, y a�adiendo alguna peque�a novedad
 conocida.  Agradeceremos las sugerencias, notificaci�n de errores y
 dem�s.

 2.  Prep�rense los impacientes.

 Usted ya conoce UNIX, y ya tiene configurado el sistema (o se lo han
 configurado) y desea con toda urgencia imprimir: H�galo con la orden:

      lpr fichero

 y por su impresora saldr�n las tan ansiadas p�ginas. Si no funciona,
 lea de cabo a rabo este documento.

 3.  Puertos y dispositivos

 Como es sabido, Unix mapea los dispositivos sobre el sistema de
 ficheros; as�, cada puerto f�sico est� reflejado en un fichero,
 generalmente bajo /dev, sobre el que se ejecutan las operaciones de
 e/s.

 En un sistema de bus tipo AT, com�n a todos los PC actuales, el puerto
 LPT1 equivale en Linux al fichero de dispositivo /dev/lp1 y sucesivos.

 Precisando:

             Nombre        Mayor        Menor         Direccion E/S

             lp0           6            0             0x3bc

             lp1           6            1             0x378

             lp2           6            2             0x278

 Del mismo modo, los puertos COM se controlan a trav�s de los
 dispositivos ttyS* (Consulte el Serie-Como, en http://www.insflug.org
 para m�s informaci�n)

 Utilice los dispositivos /dev/ttyS? (o /dev/ttys? si lo prefiere) para
 conectar una impresora por l�nea serie. No utilice /dev/cua?.

 En algunos sistemas, puede haber enlaces simb�licos hacia estos
 dispositivos, como /dev/lpr -> /dev/lp1, o /dev/impserie ->
 /dev/ttyS0. Hay a quien le parece muy elegante, y quien lo considera
 de p�sima praxis. (lea la p�gina man 'ln' para m�s informaci�n ).

 Recuerde que NO puede simult�neamente tener soporte para impresora y
 para comunicaciones v�a puerto paralelo (conectarse con plip, o un
 disco ZIP paralelo, por ejemplo); si necesita ambas funcionalidades es
 una buena idea recompilar el kernel, y preparar el soporte de
 impresi�n y de comunicaciones como m�dulos independientes, que se
 cargar�n en el kernel cuando sea necesario.

 4.  LPR

 Todo sistema que se precie es capaz de gestionar una o varias
 impresoras, con uno o varios usuarios, que les env�an distintas clases
 de documentos, m�s o menos dignamente.
 Unix resuelve estos problemas mediante un conjunto de programas, los
 servidores de impresi�n, que gestionan los trabajos pendientes, y los
 encauzan a las impresoras adecuadas, todo de manera completamente
 transparente al usuario.

 Hay dos familias de servicios de impresi�n: "lp" en UNIX System V
 (AT&T), y "lpr", en los U*X BSD, y Linux. En este documento s�lo se
 hablar� del segundo sistema; el sistema lp no es de dominio publico, y
 no conocemos ninguna versi�n que lo sea; de todos modos, ambos tienen
 hoy d�a la misma funcionalidad.

 Una variante muy prometedora de lpr, LPRng, obvia toda una serie de
 limitaciones del lpr original. Nos limitaremos a mencionar las
 diferencias en los cap�tulos concretos.

 Dicen los que saben que lp es m�s robusto, pero a la hora de trabajar
 en red lpr se destaca por varios cuerpos.

 4.1.  �Qu� necesita?

 Asumimos que usted sabe c�mo editar un archivo de texto bajo Linux, y
 tiene los conocimientos b�sicos sobre permisos y propiedad de
 archivos.

 Tambi�n suponemos que su sistema Linux funciona sin tropiezos. Si
 desea imprimir en m�quinas remotas, deber� adem�s tener configurado y
 funcionando el soporte de red (vea en NET-3-HOWTO (-- N. del Revisor:
 ver secci�n ``''--) ).

 Revise las p�ginas de manual de los comandos chmod y chown para m�s
 informaci�n.

 4.2.  �C�mo imprimir con Linux?

 El camino m�s corto en UNIX (y bajo Linux), es enviar los datos a
 imprimir directamente al dispositivo adecuado. El siguiente comando
 env�a un listado del directorio a la primera impresora en paralelo
 (hablando en DOS, LPT1:):

             ls > /dev/lp1

 El problema de este m�todo es que no aprovecha las capacidades de
 multitarea de Linux, debido a que el tiempo que tarda el comando en
 completarse ser� el mismo que emplee la impresora en despachar el
 trabajo.

 En una impresora lenta, o en una apagada o sin papel, puede
 prolongarse un poco. Podr�amos ejecutar el comando simplemente en
 segundo plano, pero no adelantar�amos mucho. Adem�s, deber� tener
 privilegios de superusuario.

 Un remedio mejor es crear un �rea tamp�n (spool), es decir, guardar
 los datos a imprimir en un fichero temporal, y arrancar un proceso en
 segundo plano que env�e los datos a la impresora, y gestione las
 incidencias que se presenten.

 Esencialmente, as� funciona Linux. Para cada impresora, se define un
 �rea tamp�n, donde cada trabajo pendiente se almacena en un fichero.
 Un proceso en segundo plano (llamado el demonio de impresi�n) analiza
 met�dica y constantemente los ficheros tamp�n, buscando nuevos datos a
 imprimir.  Cuando aparece alguno, son enviados a la impresora
 apropiada; cuando m�s de un fichero est� a la espera, se colocan en
 una cola (el primero que entra es el primero que se procesa), por lo
 que se habla propiamente de la "cola de impresi�n".

 En el caso de impresi�n remota, los trabajos se gestionan localmente,
 como cualquier otro, pero el demonio de impresi�n lo env�a a trav�s de
 la red hacia el ordenador o impresora destino.

 La informaci�n que el demonio de impresi�n necesita para su trabajo
 (el dispositivo f�sico, el tamp�n de datos, la m�quina e impresora
 remota ...)  se almacenan en un fichero llamado "printcap", que
 describiremos m�s tarde.

 En lo sucesivo, el t�rmino "impresora" se referir� a una m�quina
 l�gica definida en /etc/printcap. El concepto "impresora f�sica" o
 "trasto", define la cosa que mancha papel. Es perfectamente posible
 describir m�ltiples entradas en /etc/printcap que se refieren a un
 s�lo trasto, pero por caminos tortuosos. No se preocupe, lo
 aclararemos al describir printcap.

 4.3.  Impresi�n remota e impresi�n local.

 La impresi�n remota nos permite enviar trabajos de impresi�n desde una
 m�quina, hacia otra (ordenador/impresora) conectada a una red; por
 ejemplo, nuestro equipo funciona de servidor en una red, o si una
 impresora asignada a nuestra m�quina debe ser accesible por otros
 ordenadores.

 Imprimimos localmente cuando usuarios de nuestra m�quina env�an
 trabajos a una impresora conectada directamente a la misma.

 4.4.  Los programas importantes

 El sistema de impresi�n de Linux se sustenta en cinco programas, que
 deber�an estar donde aparecen en el siguiente listado, propiedad de
 root, y grupo lp (o daemon, seg�n el sistema en concreto):

             -rwxr-xr-x          root          lp            /bin/lpr

             -rwxr-xr-x          root          lp            /bin/lpq

             -rwxr-xr-x          root          lp            /bin/lpc

             -rwxr-xr-x          root          lp            /bin/lprm

             -rwxr-x---         root          lp            /sbin/lpd

 Los cuatro primeros tienen por fin enviar, cancelar y examinar los
 trabajos de impresi�n. /sbin/lpd es el demonio de impresi�n.

 OJO: Los directorios, permisos y propiedad de los ficheros pueden
 diferir a los de su sistema, aunque no deber�an ser MUY distintos.
 Hay p�ginas de manual que explican con detalle todas estas �rdenes y
 que deber�a consultar para ampliar informaci�n.

 Es importante saber que, por defecto, lpr, lprm, lpc y lpq trabajan
 con una impresora llamada "lp". Si define la variable de entorno
 PRINTER con el nombre de una impresora, pasar� a ocupar el valor por
 defecto. Se puede indicar sobre la marcha una impresora distinta con
 la opci�n -P impresora en la l�nea de �rdenes.

 4.4.1.  La orden lpr

 Con lpr se env�a un trabajo a la impresora. Este se copia en el
 tamp�n, donde el demonio de impresi�n lo encuentra, y lo env�a a la
 impresora f�sica. Si no le suministra un fichero, lpr usar� la entrada
 est�ndar.

 4.4.2.  La orden lpq

 lpq muestra los trabajos pendientes para la impresora deseada ("lp"
 por defecto). lpq muestra el n�mero de cada trabajo, que lo identifica
 para cualquier proceso posterior.

 Muestra tambi�n el estado de cada trabajo. "active" indica que el
 demonio est� enviando el trabajo a su destino, o al menos lo intenta.
 Si no, un n�mero indica su orden en la cola de impresi�n.

 4.4.3.  La orden lprm

 lprm elimina un trabajo de la cola, es decir, borra los ficheros en
 espera en el directorio tamp�n. Puede indicar espec�ficamente la
 identidad de un trabajo particular, o "-", con lo que cancelamos todos
 los trabajos destinados a la impresora seleccionada .Si se es
 superusuario, y quiere eliminar todos los trabajos pertenecientes a un
 usuario, especifique su nombre de usuario en la l�nea de �rdenes.

 4.4.4.  la orden lpc

 Con lpc podemos comprobar el estado de las impresoras, y controlar
 algunos aspectos de su uso. Particularmente, le permite arrancar y
 parar el tamp�n de datos, permite activar y desactivar impresoras, y
 reorganizar el orden de los trabajos en cola. Con las �rdenes
 siguientes desactivamos la impresora "impre", activamos la cola de
 "tuimpre", y mueve el trabajo 37 al principio de la cola.

                    lpc down impre

                    lpc enable tuimpre

                    lpc topq 37

 Si no especificamos argumentos, lpc entrar� en modo di�logo. con "?"
 obtenemos ayuda. Advierta que algunas funciones de lpc est�n
 reservadas para el superusuario.
 4.5.  Los directorios fundamentales.

 Realmente, s�lo hay un directorio importante: el �rea de tamp�n donde
 se almacenan los datos a la espera de que lpd decida qu� hacer con
 ellos. Sin embargo, un sistema t�pico deber�a configurarse en varios
 directorios, uno para cada impresora, lo que facilita notablemente el
 mantenimiento. En la mayor�a de las instalaciones, /var/spool/lpd es
 el directorio tamp�n principal, y cada impresora tiene un
 subdirectorio particular, con el mismo nombre que la impresora. As�,
 si tiene una impresora llamada PJL-16 que admite PostScript y HPGL,
 deber�a crear dos directorios, por ejemplo /var/spool/lpd/PJL-16-ps y
 /var/spool/lpd/PJL-16-hpgl.

 Los directorios temporales deber�an pertenecer a root, grupo lp; user
 y group deben poder leer y escribir, y el resto, leer. permisos:

      -rwxrwxr-x

 (775)

 Para cada directorio de impresora, la orden adecuada ser�a:

      chmod ug=rwx,o=rx PJL-16-ps
      chgrp lp myprinter

 Los destinos, permisos y propietarios aqu� indicados deben
 considerarse como indicativos, pues pueden variar entre distintos
 sistemas e instalaciones.

 4.5.1.  Y sus correspondientes ficheros.

 Adem�s de los programas ya tratados, cada directorio temporal debe
 contener como m�nimo estos cuatro ficheros: ".seq" , "errs" , "lock" y
 "status". Deber�n tener permisos

      -rw-rw-r--

 (664).

 El fichero .seq contiene la secuencia de trabajos enviados.  status
 contiene el mensaje que devuelve "lpc stat". El fichero lock impide al
 lpd imprimir al tiempo dos trabajos en la misma impresora, y errs
 guarda un registro de los fallos de la impresora.

 El fichero "errs" es actualmente potestativo, y ahora puede llamarse
 como le apetezca su nombre se especificar� en /etc/printcap.  Debe,
 sin embargo, existir un fichero que permita a lpd registrar los
 mensajes de error.
 4.6.  /etc/printcap

 /etc/printcap es un fichero texto, modificable con su editor favorito.

 Su propietario debe ser root y debe tener permisos

      -rw-r--r--

 (644)

 Aunque a golpe de vista parezca tan comprensible como la piedra
 Rosetta , su estructura es muy sencilla y asequible. Parte de la mala
 fama se debe a que algunas distribuciones no incluyen p�gina de manual
 para printcap, y el hecho de que muchos printcap est�n generados por
 programas, o por gente cuya manera de despreciar al g�nero humano es
 omitir comentarios que ayuden a su compresi�n. Desde aqu� hacemos un
 llamamiento para que su fichero printcap sea tan legible como sea
 posible.

 Cada entrada de printcap describe una impresora. Mejor a�n, cada
 entrada de printcap provee una denominaci�n l�gica para un dispositivo
 f�sico, y describe c�mo deben los datos ser enviados y manejados por
 �l.

 Por ejemplo, una entrada de printcap definir� qu� puerto vamos a usar,
 qu� directorio tamp�n, qu� proceso deben soportar los datos, qu� clase
 de errores debemos notificar, qu� volumen de datos se permiten enviar
 como m�ximo, o limitar el acceso de ciertos dispositivos.

 Adem�s, podemos definir distintos modos de procesar datos para una
 misma impresora. Por ejemplo, una misma impresora de HP puede manejar
 datos en formatos PostScript, HPGL y PCL, dependiendo de la secuencia
 de �rdenes que le enviamos al comienzo de cada trabajo. Tendr�a
 sentido definir los tres modos de trabajo como sendas impresoras, cada
 una de las cuales procesar� los datos dependiendo del modo de trabajo.
 Los programas que generan datos ps se enviar�n a la impresora PS, los
 dibujos HPGL a la impresora HPGL, y as� sucesivamente.

 Llamaremos "filtros" a los programas que procesan los datos a
 imprimir. Un filtro puede incluso no enviar ning�n dato al puerto.

 4.6.1.  Los campos de /etc/printcap .

 Un ejemplo t�pico de entrada en /etc/printcap podr�a ser:

      # Ejemplo de printcap con dos alias
      impresora|HP850C:\
      # lp es el dispositivo de impresion, en este caso, la primera impresora
      :lp=/dev/lp1:\
      # sd indica el directorio tampon
      :sd=/var/spool/lpd/HP850C:

 Como vemos, cada entrada de /etc/printcap se estructura en una serie
 de campos, encabezados por una etiqueta, y limitados por dos puntos, a
 excepci�n del primer campo, que describe la impresora. Los campos
 pueden tener tres tipos de valores - Texto, l�gico y num�rico, en los
 que nos extenderemos m�s adelante.

 La primera l�nea de la entrada determina el nombre y alias de la
 impresora. La impresora por defecto deber�a llamarse "lp"; por
 ejemplo, si la impresora del ejemplo anterior es la �nica que tenemos,
 la primera l�nea ser�a:

      # Ejemplo para la impresora por defecto
      lp|HP850C:\

 Podemos usar el nombre que nos apetezca como "La Picadora de papel del
 despacho de Gertrudis", aunque no parezca quiz� muy pr�ctico. Ojo:
 S�lo podemos tener una impresora llamada "lp".

 Los siguientes campos son los m�s comunes, y los m�s importantes:

      Campo    Tipo         Descripcion

      lp       Texto        Dispositivo de impresion ( ej.: /dev/lp1 )
      sd       Texto        Nombre del directorio tampon de esta impresora
      lf       Texto        Fichero que almacena el registro de errores
      if       Texto        Nombre del filtro de entrada
      rm       Texto        Nombre del host de impresion remota
      rp       Texto        Nombre de la impresora remota
      sh       Logico       Suprime las paginas que separan los trabajos
      sf       Logico       Suprime las paginas en blanco al final del trabajo
      mx       numerico     Tamagnio maximo del trabajo de impresion (en bloques)

 �  lp apunta al puerto/dispositivo de impresi�n. Si especificamos
    /dev/null como dispositivo, el resto de los procesos se ejecutan
    normalmente, pero los datos de salida van a parar al inodoro. No se
    utiliza a excepci�n de las pruebas de configuraci�n del
    dispositivo.  Cuando configure una impresora remota con los campos
    rm y rp , deber�a poner ":lp=:" en /etc/printcap, indicando que no
    est� asignada a ning�n dispositivo local.. No deje este campo en
    blanco a menos que use una impresora remota, o el demonio de
    impresi�n se quejar� amargamente, si no especifica un dispositivo
    de impresi�n.

 �  lf guarda un registro de los errores de impresi�n.  Cualquier
    fichero que especifique deber� existir antes de su uso, o no se
    registrar�n las incidencias.

 �  if indica el nombre del filtro de impresi�n a ejecutar. Los filtros
    son programas que reciben datos por la entrada est�ndar, y los
    devuelven procesados por la salida est�ndar.

    Un empleo t�pico es detectar texto llano y convertirlo en
    PostScript para imprimirlo en ese tipo de trastos. Son muy �tiles,
    por ejemplo, para eliminar el efecto escalera, o cambiar la p�gina
    de c�digos sin necesidad de cambiar la configuraci�n de la
    impresora cada vez que la usemos entre UNIX y DOS.

    Cuando se especifica un filtro de entrada, el demonio de impresi�n
    no env�a los datos pendientes al dispositivo especificado. En su
    lugar, arranca el filtro y asigna el fichero temporal a la entrada
    est�ndar, y el dispositivo de impresi�n como salida est�ndar.

 �  rm y rp controlan el destino de la impresi�n remota. Enviar el
    documento a imprimir a una impresora remota es tan f�cil como
    indicar el anfitri�n en rm, la impresora correspondiente en rp, y
    asegurarse que lp est� vac�o. F�jese en que los datos se tamponan
    localmente antes de ser enviados, y que le ejecutar� cualquier
    filtro que especifique.

    Una entrada t�pica de /etc/printcap en la m�quina local
    (pera.huerta.net)  para trabajar sobre la impresora picapapel, en
    la estaci�n r�bano.huerta.net (remota), ser�a:

    picapapel:lp=:rm=r�bano.huerta.net:rp=picapapel:sd=/var/spool/lpd/picapapel:

    En la m�quina remota necesitar� que /etc/hosts.equiv o
    /etc/hosts.lpd contenga la l�nea pera.huerta.net; Tenga cuidado con
    los permisos de acceso. Vea el punto ``Y de la impresi�n remota,
    �qu�?''.

 �  sh y sf: Portadillas y separadores. Salvo que haya mucha gente
    distinta usando su impresora, probablemente no estar� interesado en
    las p�ginas separadoras de trabajos. Las p�ginas de fin de trabajo
    son particularmente molestas cuando se trabaja con procesadores de
    texto, que componen p�ginas completas, por lo que si especificamos
    sf, tendremos al final de cada trabajo una p�gina en blanco.

    sf es muy �til, sin embargo, si usamos la impresora para listar
    directorios, ficheros en crudo ..., asegur�ndonos que el trabajo
    sale completo de la impresi�n. Se puede presentar un problema si
    tenemos una impresora PostScript, al quedar residente el �ltimo
    tipo de letra utilizado. Con el campo :tr: lo evitaremos. Es
    preferible en estos casos dejar :sh:, y que sean los filtros
    quienes se encarguen de generar las portadillas.

 �  mx limita el tama�o del tamp�n de datos, se�alando una cantidad en
    bloques de 1 K ( 1024 bits ). Si mx=0, el l�mite viene dado por el
    espacio disponible en disco. Recuerde que lo que limitamos es el
    tama�o del tamp�n, no la cantidad de datos impresos.

    Si intentamos sobrepasar el l�mite, el fichero simplemente se
    trunca, y el usuario recibe el mensaje

      lpr: fichero: copy file is too large".

 mx es �til si tiene programas que accidentalmente pueden generar un
 volumen desproporcionado de datos a imprimir (im�genes, por ejemplo);
 para impresoras ps, no suele tener mucho inter�s, pues un volumen
 peque�o de datos en formato ps pueden generar una notable cantidad de
 papel impreso.

 Podemos sustituir el l�mite de mx escribiendo en cada directorio
 tamp�n un fichero llamado "minfree" que contiene el espacio m�nimo
 disponible que permita aceptar trabajos, en forma de fichero texto con
 el n�mero de bloques m�nimos disponibles. Normalmente, suele ser un
 enlace con el original en /var/spool/lpd, ya que es inusual que cada
 impresora deba tener un m�nimo diferente.

 4.6.2.  Probemos /etc/printcap  con un ejemplo

 El siguiente gui�n de shell es un filtro de entrada muy simple. S�lo
 encadena su entrada al final de un fichero en /tmp, tras una pancarta
 adecuada. Usaremos este filtro en el campo if, y enviaremos los datos
 a /dev/null, ahorr�ndonos las quejas del demonio especificando un
 dispositivo de impresi�n.

      #!/bin/sh
      # Este filtro debera colocarse en el directorio tampon, con el nombre
      # filtro_entrada, propiedad de root, grupo lp y permisos -rwxr-xr-x
      #
      echo ------------------------------------------------>/tmp/testlp.out
      date >> /tmp/testlp.out
      echo ------------------------------------------------>>/tmp/testlp.out
      cat

 Y aqu� tenemos nuestra flamante entrada en /etc/printcap. Vea que el
 formato es razonablemente inteligible, usando caracteres de
 continuaci�n de l�nea "\" al final de cada una, excepto la �ltima (de
 hecho, cada entrada en /etc/printcap es una sola l�nea):

      impre|PLJ-H1998:\
      :lp=/dev/null:\
      :sd=/var/spool/lpd/PLJ-H1998:\
      :lf=/var/spool/lpd/PLJ-H1998/errores:\
      :if=/var/spool/lpd/PLJ-H1998/filtro_entrada:\
      :mx#0:\
      :sh:\
      :sf:

 Ojo: NO DEJE ESPACIOS EN BLANCO, o no funcionar� (le aparecer�n
 impresoras sin nombre, no lograr� volcar los trabajos, y se acumular�n
 en cola generosamente)

 4.6.3.  Valor y al toro: junt�moslo todo

 �  Primero: DEBE SER EL SUPERUSUARIO (root), tanto si le gusta como si
    no.

 �  Segundo: Compruebe los permisos y situaciones de lpr, lprm, lpc,
    lpq y lpd.

 �  Tercero: Cree el directorio tamp�n de su impresora: (recuerde que
    el propietario debe ser root, el grupo lp, y los permisos -rwxrwxr-
    x con las �rdenes:

      mkdir /var/spool/lpd /var/spool/lpd/impre
      chown root.lp /var/spool/lpd /var/spool/lpd/impre
      chmod ug=rwx,o=rx /var/spool/lpd /var/spool/lpd/impre

 �  Cuarto: En el directorio tamp�n cree los ficheros necesarios, con
    los debidos permisos y propietarios:

      cd /var/spool/lpd/impre
      touch .seq errores status lock
      chown root.lp .seq errs status lock
      chmod ug=rw,o=r .seq errs status lock

 �  Quinto: Cree el script filtro de entrada en el directorio tamp�n.
    Use por ahora el filtro de prueba anterior. Aseg�rese que el
    fichero pertenece a root.lp, y es ejecutable para todos.

 �  Sexto: Cree el fichero /etc/printcap tal y como lo hemos descrito
    en el punto anterior. Su propietario ser� root y sus permisos -rw-
    r--r--.

 �  S�ptimo: Compruebe que rc.local (normalmente en /etc/rc.d/)
    contiene la l�nea /sbin/lpd, y a��dala si no est�. Esto hace que
    arranque el demonio de impresi�n al arrancar. De todos modos puede
    arrancarlo a mano con la orden lpd.

 �  Octavo: Haga una prueba: cruce los dedos y teclee

      ls -l | lpr -Pimpre

 �  Noveno: Busque en /tmp un fichero llamado testlp.out.  Deber�a
    contener un listado del directorio, con un encabezado.

 �  D�cimo: Si ha funcionado (y no dudamos que habr� sido as�), edite
    /etc/printcap, y copie la entrada de prueba en el mismo fichero; En
    la primera entrada, cambie el nombre de la impresora a "testlp", o
    el que usted prefiera, pero que no use como nombre real de
    impresora. En la segunda entrada (que ahora ser� la de su impresora
    real), cambie el contenido de lp=/dev/null al del puerto de
    impresora (normalmente ser� /dev/lp1) de su ordenador, salvo que
    vaya a utilizar una impresora remota, en cuyo caso deber� definir
    rm y rp. Cambie el nombre del filtro if si tiene ya uno previsto, o
    supr�malo si no va a utilizar ninguno.

 �  Once: Reinicie el sistema, o mate el demonio de impresi�n y
    arr�nquelo, ya que lpd s�lo lee /etc/printcap al comenzar su
    trabajo.
 �  Doce: Haga una prueba, y aprecie lo bien que funciona su impresora
    (Si tiene problemas con el efecto escalera, siga leyendo).

 Para a�adir nuevas impresoras, s�lo tendr� que repetir la entrada de
 printcap, con las modificaciones pertinentes a cada dispositivo.

 4.6.4.  Y de la impresi�n remota, �qu�?

 Como primer paso, cualquier m�quina que intente imprimir en su
 sistema, debe estar registrada en cualquiera de los ficheros
 /etc/hosts.equiv o /etc/hosts.lpd, que son simples ficheros de texto,
 con un nombre de maquina por l�nea. Es preferible el segundo,
 reservando el primero para proporcionar mayores permisos de acceso, lo
 que deber�a ser evitado en lo posible.

 Puede restringirse el uso tanto por nombre como por grupos.
 Especifique los grupos autorizados con uno o varios campos ":rg:" en
 /etc/printcap - :rg=admin: s�lo autorizar� el acceso a la impresora a
 los usuarios asignados al grupo admin. Puede tambi�n limitar el acceso
 a aquellos usuarios con cuenta en su sistema utilizando el campo
 l�gico :rs:.

 4.6.5.  Socorro: no funciona.

 Algo falla; Lo primero que debemos hacer es revisar la existencia y
 los permisos y propiedad de los ficheros y directorios anteriormente
 descritos. Como comprobar� los permisos de UNIX son algo juguetones
 hasta que se les controla. No se azore, y siga la siguiente rutina de
 control.  Recuerde que cualquier modificaci�n de /etc/printcap acarrea
 matar el demonio de impresi�n y arrancarlo de nuevo, o (�ltimo y
 brutal recurso)  reiniciar el sistema.

 1. ejecute "ls -l > /dev/lp?" (como root)

 �  La impresora funciona: 2

 �  La impresora no funciona: Compruebe el puerto de impresi�n, el
    cable, y que la impresora f�sica este encendida y lista.

 2. pruebe con lpr -P<impresora>

 �  La impresora responde: 7

 �  La impresora no responde: 3

 3. Aparecen mensajes de error indicando que no se puede escribir
    disco, que el directorio tamp�n existe y que tiene los permisos
    necesarios.

 �  no hay mensajes: 4

 4. ejecute

 ps -ax | grep lpd

 y vea si aparece lpd en el listado, o hay un mensaje acerca del demo�
 nio de impresi�n:

 �  lpd no est� arrancado: Vea si rc.local tiene una l�nea /sbin/lpd;
    si no, a��dala y reinicie el sistema. Puede arrancarlo a mano con
    /sbin/lpd como root.

 �  lpd est� funcionando: 5

 5. Compruebe que el filtro de impresi�n especificado en if funciona.
    (filtro < datos >salida)

 �  El filtro no funciona: corr�jalo, y pruebe de nuevo

 �  El filtro funciona: 6

 6. Ejecute "lpc status".

 �  Aparecen m�s impresoras que las descritas, algunas con el nombre en
    blanco: Hay espacios en blanco dentro de la entrada de la impresora
    en /etc/printcap. Revise la sintaxis de la entrada.

 �  s�lo aparece una impresora que no es lp: Si no ha especificado
    nombre de impresora, lpr usar� lp por defecto. Pruebe

      lp -P<impresora>

 �  La impresora est� deseleccionada (down): ejecute

      lpc up <impresora>

 (debe ser superusuario).

 7. La impresora funciona, pero imprime mal:

 �  Se imprimen las cuatro o cinco primeras l�neas, en escalera:
    Necesita un filtro de entrada. Vea ``Efecto Escalera''

 �  El fichero no se imprime completo: Elimine el l�mite en mx con
    :mx#0: en /etc/printcap.

 Si tras este rastreo sus dificultades contin�an, tenemos un buen
 problema.  Una buena idea para aislar fallos es incluir el demonio
 "syslogd" en el arranque, de modo que obtengamos un registro de las
 incidencias de los procesos arrancados, que puedan ayudar al rastreo.

 Un problema que ha ido apareciendo y desapareciendo de modo recurrente
 en distintas versiones de Linux est� asociado a los mensajes "job
 queued, but cannot start daemon" o "lpc: connect: no such file or
 directory", y lpd s� est� corriendo, parece manifestar un conflicto
 entre los m�dulos de red y el resto del sistema, y que se manifiesta
 si la red no est� correctamente configurada. Si no est� conectado a
 una red, suele corregirse a�adiendo en la configuraci�n de arranque:

      ifconfig lo localhost
      route add localhost

 4.6.6.  �D�nde puedo encontrar un printcap  para la impresora xxxxx?

 Si ha le�do todo hasta ahora, comprobar� que esta pregunta carece de
 sentido. No se le ocurra preguntar en usenet, si quiere que su
 dignidad se mantenga a salvo, y l�ase este documento completo.

 4.6.7.  El "efecto escalera", bajo control.

 Mientras que en *DOS el indicador de nueva l�nea se compone de los
 caracteres CR y LF (retorno de carro y salto de l�nea), UNIX termina
 las l�neas con LF. Esto hace que, si en una impresora configurada para
 *DOS imprimimos un documento UNIX, obtendremos una sucesi�n de l�neas,
 que acabar�n march�ndose inmediatamente por el margen derecho del
 papel.

 Tenemos dos v�as para corregirlo: Reconfigurar la impresora para que
 interprete LF como CR+LF, algo molesto si alterna entre *DOS y Linux,
 o a�adir un filtro de impresi�n, que lo haga sobre la marcha.

 Ofrecemos dos: uno general, y el otro espec�fico para impresoras HP.

      #!/bin/sh
      # filtro general para prevenir el efecto escalera
      if [ "$1" = -c ] ; then
      cat
      else
      sed -e s/$/^M/
      fi
      echo -ne \\f

 #!/bin/sh
 # filtro para corregir el efecto escalera en impresoras HP
 echo -ne \\033\&k2G
 cat
 echo -ne \\f

 El car�cter

 ^M

 con vi use C-v C-m, y con emacs, C-q C-m (C es la tecla Control).

 El mejor sitio para guardar estos filtros es el propio directorio
 tamp�n de la impresora. Recuerde que deben especificarse en
 /etc/printcap en el campo :if=<filtro>:, con permisos -rwxrwxr-x, y
 propiedad root.lp.

 4.6.8.  Imprimir por el puerto serie es f�cil.

 Primero hemos de ver si lpd se queja enviando un error acerca de
 ioctl(TIOEXCL). Si es as�, deber�amos conseguir una versi�n de lpd que
 lo acepte (lpd-590p2, por ejemplo).

 Necesitaremos configurar dos grupos de campos, adem�s de la velocidad
 de transferencia br (Observaci�n: Configurar el campo ":fc:" puede
 puentear el valor del campo ":br#:", as� que aseg�rese de configurar
 los dos correctamente).

 Cada campo puede tener bits activados y desactivados. Se debe empezar
 desactiv�ndolos con los campos ":fc#*:" y ":xc#*:", para activarlos
 posteriormente con ":fs#*:" y ":xs#*:".

 Configurar br#; es obvio: ":br#9600:

 Es muy f�cil traducir la configuraci�n de stty a los campos de
 /etc/printcap. Consulte la p�gina de manual de stty para obtener m�s
 informaci�n.

 Utilice stty para configurar el puerto de su impresora de manera que
 con "cat" pueda enviarle un fichero, e imprimirlo sin problemas. Aqu�
 tiene un ejemplo de la configuraci�n del puerto serie de la impresora:

      # darkstar:/var/spool/lpd # stty -a < /dev/ttyS2
      speed 9600 baud; rows 0; columns 0; line = 0;
      intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
      eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
      lnext = ^V; min = 1; time = 0;
      -parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
      -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr
      -igncr -icrnl ixon -ixoff -iuclc -ixany -imaxbel
      -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
      -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop
      -echoprt -echoctl -echoke

 Deber� estudiar el control de flujo de su impresora serie, y aplicar
 las correcciones necesarias a la configuraci�n del puerto al que est�
 conectado el equipo.

 Una vez tengamos la configuraci�n ajustada, de modo que con la orden

      cat fichero > /dev/ttyS?

 la impresora escriba correctamente, consultaremos el fichero
 /usr/src/linux/include/linux/termios.h ( no ser� mala idea imprimirlo;
 as� sabremos si funciona :-).

 En la secci�n que empieza con

      /* c_cflag bit meaning */
      #define CBAUD 0000017

 est� detallado el valor de los bits de "fc#" y "fs#".  Apreciar� que
 los nombres que aparecen aqu� (tras las velocidades de transmisi�n)
 coinciden con una de las l�neas del listado producido por stty. �Ve
 qu� f�cil?

 Estos campos, en stty, van precedidos por un gui�n (-). Sume los
 valores (en octal) que aparecen en el listado. Este valor representa
 los bits a LIMPIAR; es el valor del campo :fc#*:. Note que, como
 deber� activar posteriormente los bit necesarios, podr�a usar
 directamente ":fc#0177777:".

 Ahora repita el mismo proceso para las opciones sin gui�n en la salida
 de stty. En el ejemplo, los bits importantes son CS8 (0000060), HUPCL
 (0002000) y CREAD (0000200). Considere tambi�n los indicadores para la
 velocidad de transmisi�n (en mi caso 0000015).  S�melos; en este caso,
 tendremos 0002275: el valor del campo :fs#*: (En mi caso, ":fs#02275:"
 funciona).

 Haremos lo mismo con la siguiente secci�n de termios.h, que comienza
 con "c_lflag bits". En mi caso, no he necesitado ning�n ajuste, y
 utilizo ":xc#0157777: y ":xs#0:".

 Una vez modificado printcap, intente imprimir con lpr. Si no funciona,
 siga leyendo.

 4.6.9.  cat  funciona, pero lpd  no.

 Mantener "lpd" en forma se explica en la p�gina adecuada del manual,
 pero si le persiguen los problemas de configuraci�n, puede evitar que
 lpd establezca la configuraci�n del puerto, haciendo que su impresora
 no presente un dispositivo normal (vea la secci�n ``'').

 El proceso a seguir es el siguiente:

 1. el campo :lp: de /etc/printcap deber� apuntar a /dev/null1 (cr�elo
    con mknod /dev/null1 c 1 3), porque no queremos a /dev/null s�lo
    para nosotros. Elimine los campos :br: y :fs:, :fc:, :xs: y :xc:.

 2. Cree un script, por ejemplo, testserie, tal que este:

      #!/bin/sh
      echo if: $* >> /var/spool/lpd/resultados
      # /dev/lp debe estar enlazado (con ln -s) a /dev/ttyS?, donde esta la
      # impresora
      exec su-filtro-de-entrada-viejo $* > /dev/lp

 o si no tiene un :if: instalado

      #!/bin/sh
      echo if: $* >> /var/spool/lpd/resultados
      # asumimos que /bin/sh es bash al usar "echo -ne"
      echo -ne \\f > /dev/lp

 3. Aseg�rese que es ejecutable y legible para todos (rwxrwxr-x).
    Pruebe el filtro con

      # testserie < algo-que-imprimir

 y vea si sale algo por la impresora. Modifique /etc/printcap, para que
 if sea "testserie" (o el nombre que le haya dado).

 4. Con stty, configure el puerto de la impresora. Intente imprimir.
    Ahora podr� saber si hay datos en el tamp�n, y algo deber�a
    imprimirse si el paso 3 funcion�.

 Ahora, si el proceso con if funciona, y cree que la configuraci�n del
 printcap original es la correcta, vuelva a revisar la configuraci�n
 del puerto, las etiquetas de termios.h ... Si a�n no funciona,
 probablemente lpd tiene un defecto, y deba obtener una versi�n nueva.

 4.6.10.  Impresoras que no son dispositivos simples.

 Piense en una impresora conectada de alg�n modo tortuoso a nuestra red
 ...  ---ag�rrese: est� enchufada a un ordenador con el que s�lo
 podemos comunicarnos mediante correo electr�nico---

 Para imprimir a trav�s de lpr, el campo :lp: deber�a ser redirigido a
 un dispositivo nulo,

 mknod /dev/null1 c 1 3

 (no a /dev/null, pues lpd lo usa en exclusiva). El filtro de entrada (
 :if:, recuerde) debe expl�citamente codificar y enviar como correo al
 ordenador remoto su salida.

 Se rumorea que alguien consigui� con algo similar con Novell NetWare y
 el agente de correo Charon; tambi�n hay quien cree en los Reyes Magos.

 4.7.  Trucos y problemas

 4.7.1.  lpr -i  o como modificar la impresi�n a nuestro antojo.

 La opci�n -i env�a argumentos al filtro de impresi�n. Ante todo,
 necesitamos un filtro instalado en printcap para que la opci�n filtro.
 Si quisiera un filtro que permitiera configurar su impresora sobre la
 marcha, podr�amos utilizar un filtro como este:

      #!/bin/sh
      # Mi programa de configuracion se llama confimpre.
      exec /usr/lib/confimpre $*

 que desplace el margen izquierdo, y pasar como argumento el margen
 deseado.

      #!/usr/bin/perl
      # confimpre: Desplaza el margen izquierdo en un texto ascii
      # Usamos perl porque convertir numeros a caracteres
      # es un campo de minas en programacion shell
      for  ( $i=0 ; !($_ = $ARGV[$i]) || !/^-i([0-9])+/;
      $i++) {}
      print pack( "cAc" , 27 , "l" , $1) ;
      while (<STDIN>) { print; }

 4.7.2.  daemons "

 Un proceso lpd corre continuamente, y se desdobla en hijos para
 manipular cada impresora en tanto se necesita. La salud del proceso
 principal no se manifiesta expl�citamente con 'lpc'; basta con la
 ausencia de errores. El comando 'lpc stat' mostrar� de manera normal
 el mensaje "no daemon present" para cada cola actualmente inactiva.
 Si la impresi�n se desactiva, o la cola se vac�a, 'lpq' es bastante
 m�s escandaloso, gritando "Warning: no daemon present", aunque, de
 hecho, no hay condici�n de error.  Si el demonio est� ausente cuando
 hay entradas en la cola, y no ha sido expl�citamente detenido,
 probablemente se debe a un fallo en alg�n filtro. F�jelo y reinicie
 con "lpc up <cola>.
 De vez en cuando, al desactivar una impresora, 'lpc' alucina, e
 intenta matar demonios inexistentes, emitiendo un surtido de
 irritantes e inofensivos mensajes de error. Esta "caracter�stica" es
 muy rara en versiones posteriores a lpd-590p2.

 4.7.3.  Impresi�n sobre red (notas adicionales)

 Dado que la m�quina que alberga la impresora f�sica debe saber quien
 se conecta, deberemos dar de alta al resto de los ordenadores en los
 ficheros /etc/hosts.equiv y /etc/hosts.lpd, con sus nombres can�nicos,
 o direcciones IP. Si no est� seguro del nombre completo de una
 m�quina, puede incluir todos sus alias conocidos.

 Por motivos de seguridad, es preferible que las m�quinas que s�lo
 deban tener acceso a la impresora queden restringidas a
 /etc/hosts.lpd.

 Si el servidor de impresi�n no ejecuta un sistema de impresi�n tipo
 BSD ( UnixWare, HP-UX versi�n 10 ,...), deber�a ser posible trabajar
 con �l, teniendo en cuenta que los ficheros de autorizaci�n pueden
 variar notablemente, cambiando en cada sistema.

 Si a�n no puede imprimir sobre un sistema distinto, queda un as en la
 manga: simplemente use una orden remota, tal que rsh, rexec ...

      # rsh rabano.huerta.net "lp -dlp" < fichero

 permitir� imprimir sobre un SYSV, desde nuestra pera.huerta.net.

 4.8.  Los filtros de impresi�n

 Los filtros en UNIX, son meramente programas (y como tales deben tener
 permisos de ejecuci�n) que leen la entrada est�ndar y escriben sobre
 la salida est�ndar, independientemente de su complejidad.

 Los filtros de lpd lo son en el sentido que leen STDIN y escriben en
 STDOUT; su peculiaridad estriba en que deben asumir que la entrada
 est�ndar es un fichero de acceso aleatorio, sobre el que se pueden
 realizar operaciones con lseek().

 Un filtro que interpreta PostScript nos servir� de ejemplo:

      #!/bin/sh
      /usr/bin/gs -q -dSAFER -dNOPAUSE -r?? -sDevice=? -sOutputFile=- - < /dev/null

 La primera l�nea invoca al int�rprete de comandos que lo interpretar�.
 Podemos usar csh, bash, perl, tcl, etc...; va por gustos.

 En la segunda l�nea usamos gs como filtro, indicando que la entrada es
 STDIN ( el gui�n del final ), y la salida, STDOUT (-sOutputFile=-).
 Lea la p�gina de manual de 'gs' para m�s detalles.

 Es buena pr�ctica guardar los filtros de entrada en el directorio
 tamp�n de la impresora en la que se usan (o en /var/spool/lpd/ ),
 aunque las buenas maneras recomienden camas separadas para datos y
 programas.

 M�s dif�cil a�n:

      #!/bin/sh
      /usr/tex/bin/dvips -f | /usr/bin/gs [...] -sOutputFile=- -

 Como se puede ver, este filtro procesar� un fichero texto de formato
 TEX o LATEX, obteniendo un fichero .dvi, que es transformado en
 PostScript, y reprocesado con ghostscript para imprimirlo en una
 impresora normal.

 Ojo: Si usa impresi�n remota con lpr, el filtro deber� encontrarse en
 la m�quina remota; LPRng obvia este inconveniente.

 4.8.1.  Los filtros de salida

 Son como el goto en 'C', se pueden usar, pero realmente, es dif�cil
 encontrar aplicaciones para ellos. Dado que cualquier comando de
 iniciaci�n de la impresora es ignorado, si tenemos un trabajo rodando
 que cambia algo (el tipo de letra, por ejemplo), el nuevo trabajo
 probablemente acabar� mal impreso. No los use.

 4.8.2.  Depuraci�n de filtros

 Es absolutamente trivial:  mifiltro <fichero >/dev/lp1 (como root).
 Comprobaremos de inmediato si de verdad funciona.

 Un truco muy �til para los filtros con argumentos en l�nea de comandos
 consiste en incluir la l�nea

      echo $* >> /tmp/filter-log

 cerca del principio del gui�n. Recuerde incluir en la primera l�nea
 que son ejecutables por todo el mundo.

 4.8.3.  Filtros M�gicos

 Tienen de especial estos programas que son capaces de identificar la
 familia de los datos a imprimir a partir de patrones caracter�sticos
 de datos en situaciones determinadas. Son generalmente guiones Shell,
 Perl, programas en C ...; el programa identifica la fuente de datos, y
 llama a un filtro ordinario que lo procesa de modo adecuado. Con un
 filtro m�gico adecuado y tres filtros no m�gicos podemos imprimir
 cosas como esta:

      # lpr -d fich1.dvi fich2.dvi.Z fich3.ps fich4.tex.gz

 Un buen sitio para encontrar filtros m�gicos como el del ejemplo
 anterior es:

 ftp://tsx-11.mit.edu/pub/linux/sources/usr.bin/magic-filter-??.tar.gz.

 Como podr� suponer, nunca se deber�an usar como filtros de salida.

 Un ejemplo: el siguiente filtro m�gico identifica un fichero fuente ps
 o texto, y lo procesa de acuerdo a su clase:

      #!/bin/sh
      printf "<Filtro magico para imprimir texto y ps.>"
      read first_line
      first_two_chars=`expr $first_line : '\(..\)'`
      if [ "$first_two_chars" = "%!" ] ; then # Documento PostScript.
      /usr/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=??? -sOutputFile=- - < /dev/null
      else
      # Texto llano - Si hace falta, podemos incluir aqui la
      # correccion del efecto escalera
      echo -n $first_line
      cat
      printf "\014"
      fi

 Para desaz�n de muchos, habr� ya notado que un script ejecutado por
 alguien distinto al propietario puede ser una brecha de seguridad.
 Este no es el caso de los filtros de lpd, ya que el entorno de los
 guiones no est� al alcance de potenciales piratas.

 4.8.4.  Los usuarios de HP estamos de suerte

 Hasta donde hemos podido averiguar, HP no tiene ning�n programa que
 permita configurar sobre la marcha sus impresoras (�� ni siquiera para
 sus propios sistemas UNIX!!), salvo que use MS-Windows, o *DOS; por lo
 que s�lo nos queda, bien usar DOSEMU, o salir a DOS, configurar la
 impresora, y volver a Linux.

 Existe un hermoso programa llamado hpmodeset (-- Nota del Traductor:
 hpset, localizable en cualquier mirror de Sunsite, en , escrito en
 Eiffel, que hace el trabajo por nosotros, muy f�cil de usar. Su autor
 es Glenn Maughan ([email protected]); se puede conseguir
 en ftp://hornet.sd.monash.edu.au/pub/hpmodeset/v2.0.

 Permite fijar economode, definici�n, tipo de papel, etc... en ficheros
 PCL (el lenguaje de las impresoras HP) y ps. No es tan espectacular
 como el programa de windows, pero funciona muy bien, y es susceptible
 de ser utilizado como filtro de impresi�n.

 5.  �C�MO SE IMPRIME ... ?

 Ya sabemos con qu� imprimimos bajo Linux. Ahora haremos una visita a
 los programas m�s normales para generar el texto a imprimir usualmente
 disponibles. Advierta que la mayor parte de los programas de impresi�n
 bajo otros UNIX pueden ser muy f�cilmente adaptados a Linux.

 5.1.  Texto Llano

 Bajo Linux, (como cualquier otro U*X), lo m�s f�cil es imprimir texto
 llano. Cualquier editor est�ndar de UNIX (vi, emacs), o alguno m�s
 sofisticado (nedit, jed, .. ) le producir�n tantas arrobas de letras
 como desee.

 Adem�s, la mayor parte de los programas que a continuaci�n se
 describen son capaces de generar documentos en texto llano, con las
 �rdenes adecuadas.

 5.1.1.  pr

 La mayor�a de los ficheros de texto llano en U*X tienen tendencia a
 ser un mar de caracteres, sin saltos de p�gina ni nada que permita un
 documento m�nimamente presentable.

 pr surgi� para obviar este inconveniente. Procesando el documento a
 trav�s de pr, se le a�aden cabeceras y/o pies, n�meros de p�gina,
 m�rgenes superior e inferior... Como cualquier otra utilidad UNIX, pr
 tiene dos o tres millones de opciones, debidamente rese�adas en la
 p�gina del manual.

 5.2.  PostScript

 Si no tiene que imprimir texto llano, es muy probable que tenga que
 imprimir PostScript. Si su impresora lo interpreta, sus problemas
 terminan aqu�; si est� en el caso contrario, situaci�n normal para
 casi todos, la cosa se complica un poco, pues necesitar� un programa
 que lea PS y lo traduzca al lenguaje de su impresora.

 5.2.1.  Ghostscript

 El modo normal de interpretar ps bajo Linux es usar ghostscript, que ,
 como casi todas la utilidades, procede del proyecto GNU. Herramienta
 vers�til donde las haya, gs traduce PostScript a formato X Window,
 impresoras IBM, Epson, HP, Canon ..., fax, y casi para cualquier
 dispositivo que se le ocurra. Los dispositivos soportados en cada
 versi�n de ghostscript est�n debidamente relacionados en la
 documentaci�n del programa; puede obtenerse una relaci�n con la orden
 'gs -help'.

 gs se ha convertido en utilidad est�ndar en la mayor�a de las
 distribuciones de Linux, que la incluyen completa. Advierta que los
 ejecutables binarios pueden necesitar 'libX.so.???' tal como vienen en
 el controlador de pantalla X Window.

 La distribuci�n "oficial" en forma de ficheros fuente, que deben ser
 compilados en su sistema puede encontrarse en:

 ftp://prep.ai.mit.edu/pub/gnu/ghostscript-*.tar.gz

 ftp://prep.ai.mit.edu/pub/gnu/ghostscript-fonts-*.tar.gz

 La instalaci�n m�nima de los binarios de gs y algunos otros programas
 necesarios para imprimir la documentaci�n de Linux est� disponible en

 ftp://sunsite.unc.edu/pub/Linux/apps/tex/texmin/texmin-*.tar.z

 Esta distribuci�n no contiene ning�n tipo de letra PostScript (ni las
 necesitar� para imprimir ficheros .dvi).

 La documentaci�n principal de ghostscript se encuentra en el fichero
 use.doc, en el directorio de fuentes, o en /usr/lib/ghostscript/doc/
 si no tiene los fuentes.

 Para imprimir ps determine primero el nombre de su dispositivo con la
 orden 'gs -help', que lista los dispositivos instalados. Si el suyo no
 est� en la lista, deber� recompilar gs (No se asuste, siga las
 instrucciones que figuran en make.doc. Necesitar� libres 5 o 6 Mb de
 espacio en disco). Con la orden:

      # gs -dNOPAUSE - sDEVICE=???? -sOutputFile=/dev/???? fichero.ps

 el documento aparecer� (eso esperamos) en su impresora sin problemas.
 Como podr� imaginar, a mayor versi�n, m�s dispositivos soportados. En
 la documentaci�n incorporada se describe el procedimiento para
 desarrollar nuevos dispositivos si fuera necesario.

 gs puede imprimir en la mayor�a de las resoluciones soportadas por su
 impresora; '-r300' '-r150', '-r360x180' son ejemplos de las opciones
 para su control. Las impresoras matriciales necesitan que se fije esta
 opci�n, al no soportar normalmente la resoluci�n por defecto de
 300x300.

 5.3.  Mi impresora s�lo trabaja con PostScript

 Si su impresora s�lo trabaja con PostScript, o quiere ahorrarse andar
 configurando el dispositivo cada vez que tiene que cambiar el tipo de
 documento a imprimir, hay toda una familia de programas que
 transforman el texto llano a PostScript.

 5.3.1.  mpage

 Transforma texto llano a PostScript y/o imprime m�s de una p�gina en
 cada hoja de papel a partir de PostScript o texto. Puede encontrarlo
 en

 ftp://wuarchive.wustl.edu/pub/mirrors/unix-c/PostScript/mpage-tar-z

 el sufijo -z equivale a .Z (compress). La orden

      man -t <orden> | mpage

 enviar� una copia de la p�gina en formato PostScript a lpr.

 5.3.2.  a2ps, enscript, nenscript

 A partir de un texto ascii llano, a2ps produce una p�gina debidamente
 formateada, con cabeceras, pies, n�meros de p�gina ... Se encuentra en
 el mismo lugar que mpage.

 enscript y nenscript hacen lo mismo que a2ps. Puede encontrar
 nenscript en:

 ftp://sunsite.unc.edu/pub/Linux/system/Printing/nenscript* (-- Nota
 del Traductor:
 los caracteres extendidos; por ejemplo: a2ps (la versi�n que tengo, al
 menos) genera un fichero ps que no tiene acentos, e�es .., al no
 definir una tabla tipogr�fica para ellos. En cambio, nenscript si lo
 hace. --)

 5.3.3.  gslp

 Incluida en la distribuci�n de ghostscript, gslp transforma un fichero
 texto a PostScript. �selo con la orden:

      # gs -q -sDEVICE=???? -dNOPAUSE -- gslp.ps fich.text

 (el programa es gslp.ps, escrito en PostScript, que, en muchos
 aspectos, es un lenguaje de programaci�n, m�s que un conjunto de
 �rdenes de impresi�n). Hay un ejecutable en la distribuci�n que evita
 dar estos rodeos.

 5.3.4.  Utilidades para PostScript

 Existen cientos de peque�os programas que permiten modificar ficheros
 ps.  Puede encontrarlos en

 �  ftp://achilles.doc.ic.ac.uk/tex/inter/psutils/

 �  ftp://ftp.cs.psu.edu/pub/src/psutil.tar.gz

 �  ftp://ftp.uu.uunet

 �  ftp://wuarchive.wustl.edu

 5.4.  TeX, LaTeX

 Si hay algo cierto en el mundo de UNIX, especialmente a nivel
 acad�mico, es que antes o despu�s uno se acaba topando con �l. TeX es
 un sistema de formateado de textos (-- Nota del revisor:
 Procesador de Documentos--) . Funciona de modo an�logo a un
 compilador: El c�digo fuente corre a trav�s del programa tex, y
 obtenemos un fichero .dvi, independiente del dispositivo, que
 normalmente debe ser procesado de nuevo para obtener un documento
 impreso. La alt�sima calidad del producto obtenido justifica la
 complejidad del proceso.
 El trabajo con TeX, no obstante, se ve gratamente suavizado mediante
 el uso de procesadores de texto, como LyX, con el que ha sido
 reelaborado este documento.

 Remitimos al lector al libro "LaTeX, a document preparation system" de
 Leslie Lamport (ed. Addison Wesley) 2� edici�n, que analiza en detalle
 la versi�n m�s popular de este extraordinario sistema de tratamiento
 de textos.

 5.4.1.  dvips

 Convierte el fichero dvi generado a partir de un documento TeX en un
 fichero PostScript, que puede imprimir a trav�s de gs, o directamente
 en la m�quina adecuada. La mayor�a de las distribuciones de Linux
 incluyen este paquete.

 La orden

      dvips -f1 fich.dvi | lpr

 es t�pica. dvips responde tanto a los argumentos de la l�nea de
 comandos como al fichero de configuraci�n "config.ps", donde puede
 organizar las cosas para que la salida vaya directamente a la
 impresora, por ejemplo. As�, bastar� escribir dvips fichero.dvi para
 obtener el documento final.

 dvips tiene unas cuantas opciones interesantes; por ejemplo dvips -r1
 fich.dvi imprimir� el documento en orden inverso. Los propietarios de
 impresoras HP apreciar�n esta caracter�stica.

 5.4.2.  eps, dvilj, dvi500

 Transforman los ficheros dvi en los lenguajes de impresoras Epson y HP
 LaserJet y DeskJet respectivamente. Suelen estar incluidos en la mayor
 parte de las distribuciones, y, por supuesto, en ftp://sunsite.unc.edu

 5.5.  texinfo

 Es el formato nativo del proyecto GNU. emacs puede ser forzado a
 producir un fichero de informaci�n desde TeXinfo, y TeX producir� un
 excelente resultado a partir de este mismo fichero. Realmente, el
 documento est� en formato TeX, y necesita que el fichero de macros
 texinfo.tex est� instalado en su sistema. Simplemente ejecute un
 fichero dvi que podr� imprimir o visualizar a su placer.

 Con emacs puede teclear adem�s 'M-x texinfo-format-buffer' para
 convertir el fichero texinfo en un fichero info legible con emacs 'M-x
 info', u otro visor de su elecci�n.

 Hay otros programas que leen y formatean info desde un fichero
 texinfo.  Est�n disponibles en ftp://prep.ai.mit.edu/pub/gnu/

 5.6.  *roff ; p�ginas man

 Si hay un generador de documentos virtualmente universal es troff, y
 sus primos cercanos, debido a que las p�ginas de manual se escriben
 para ellos. Las �rdenes de formato de documentos ser�n
 �sorprendentemente?  familiares para los (no se si a�n queda alguno
 vivo) forofos de las versiones m�s populares de Wordstar.

 La orden para imprimir las p�ginas de manual es

      man -t <comando> | lpr

 groff traduce la p�gina a PostScript, que se procesa sin mayores
 problemas, como ya sabemos. Obtendremos as� una p�gina impresa muy
 aparente. Esto, sin embargo, depende mucho del programa 'man' que
 viene con su sistema. Si el suyo no lo permite, consiga la versi�n
 escrita en perl, en: ftp://sunsite.unc.edu/pub/Linux/system/Manual-
 pagers/.

 Est� �ntegramente escrito en perl, y es por tanto muy personalizable.

 Otro camino consiste en encontrar el fichero fuente de nroff de la
 p�gina en los directorios de man, e imprimirlo con la orden:

      groff -fichman -Ttipo orden.1 | lpr

 donde tipo puede ser 'ascii', 'dvi' 'ps' 'X100',

 5.7.  Adobe Acrobat. Ficheros PDF

 Est�ndar emergente donde los haya, los pap�s de PostScript han
 desarrollado un formato de documentaci�n que permite (al menos eso
 venden) absoluta independencia del sistema operativo. Un fichero PDF
 se imprimir� igual de bien en un ordenador con MS-Windows, un Mac*, un
 CojoSuperOrdenador Cray, o un PC con Linux.

 Los documentos PDF se traducen justo a la hora de imprimirlos al
 formato que cada sistema operativo requiera; en UNIX, a PostScript.

 Puede obtenerse una copia del lector de Adobe en http://www.adobe.com.

 Si prefiere algo menos "comercial", Xpdf ser� de su agrado. La �ltima
 versi�n est� en

 http://www.contrib.andrew.cmu.edu/usr/dn0o/xpdf/xpdf.html

 5.8.  Tipos

 (Esta secci�n contiene informaci�n no espec�fica a los dispositivos).
 La informaci�n pertinente al dispositivo X11 de gs (y ghostview) se
 incluye en el apartado de visualizaci�n.
 Todas las versiones de gs vienen provistas de un surtido de tipos de
 dominio p�blico, muchas de ellas generadas a partir de mapas de bit,
 con baja calidad. Sin embargo, gs puede usar cualquier tipo PostScript
 clase 1 o 3 que tenga a mano. Por ejemplo, Adobe Type Manager (que no
 sea de Mac) incluye tipos utilizables. Sit�elos (normalmente *.pc?)
 en lib/ghostscript/fonts/, y a�ada al fichero
 [...]/ghostscript/Fontmap' l�neas del estilo

      /Courier            (com_______.pfb) ;

 En el servidor de correo de impresi�n puede encontrar el fichero
 fontmap.atm, que contiene un fontmap de los tipos normalmente
 incluidos en Adobe Type Manager.

 Puede encontrar tipos Adobe Type 1 en:

 ftp://ftp.cica.indiana.edu/pub/pc/win3/fonts

 ftp://archive.umich.edu/msdos/mswindows/fonts

 En el fichero comp.fonts FAQ, en ftp://rftm.mit.edu, puede encontrar
 informaci�n �til acerca de tipos de impresi�n.

 La conversi�n entre familias de tipos es delicada. gs incluye
 herramientas para generar tipos escalables a partir de mapas de bits
 (cuanto m�s grandes, mejor).

 groff tiene tambi�n herramientas para usar tipos Tfm/mf (TeX) y pfb
 (type 1) en documentos *roff. X11R5 incluye herramientas procedentes
 de IBM para presentar tipos type 1, con sus correspondientes p�ginas
 de manual. Eche un ojo tambi�n al logical fontutils en
 ftp://prep.ai.mit.edu/pub/gnu/.

 5.9.  Documentos para fax.

 Aunque no parezca el lugar m�s adecuado para su rese�a, �qu� hacemos
 al enviar un fax m�s que imprimir un fichero en un terminal remoto?.
 Mediante fax, puede transmitir documentos originalmente en PostScript,
 dvi, texto llano....

 Para enviar un fax, el documento original debe ser transformado en una
 imagen TIFF del grupo III que ser� transmitida por el fax-m�dem. Todos
 los programas mencionados contienen utilidades que permiten
 transformar las distintas clases de documentos al formato necesario.
 Adem�s, gs (tambi�n aqu�) tiene dispositivos adecuados para ello
 (-sDEVICE=tiffg3).

 Tenga en cuenta que hay dos juegos de �rdenes que un fax puede
 soportar: Clase 1 y Clase 2. En el primer caso, hoy ya casi extintos,
 gran parte de la gesti�n de transmisi�n de datos debe hacerla el
 ordenador anfitri�n v�a el programa de fax. Esto hace que en
 condiciones de sincronizaci�n cr�tica, el control se vuelve casi
 imposible. Los fax de clase 2 son m�s caros, pero mucho menos
 propensos a dar guerra. No confunda la 'clase' y el 'grupo'. Deber�
 tener, por supuesto, un fax-m�dem de grupo III.

 5.9.1.  FLEXFAX

 FlexFax est� escrito en C++ (necesita instalar g++ para compilarlo), y
 soporta fax de clase 1 y 2. Utiliza ghostview (o cualquier otro visor
 de ps) . Puede ejecutarse en lugar de getty, y decide, seg�n el tipo
 de llamada, si activar el fax, o presentar un login. Permite la
 emisi�n de faxes a trav�s de una red, y tiene un zurill�n de
 utilidades. Se configura v�a 'configure', y para un ordenador aislado
 es un tanto mastod�ntico. La versi�n actual (4.0 beta 018, seg�n
 escribo ) puede encontrarse en:  http://www.vix.com/hylafax/

 5.9.2.  mgetty+sendfax

 mgetty+sendfax controla s�lo fax de clase 2, y puede tambi�n actuar
 como contestador autom�tico, si el m�dem lo soporta. Al igual que
 FlexFax, se instala en lugar de getty, controlando qu� entra y sale.
 Muy adecuado si no necesitas trabajar sobre red. Un excelente conjunto
 de programas disponible en

 ftp://sunsite.unc.edu/pub/Linux/system/Serial/mgetty+sendfax*.tar.gz

 ftp://tsx-11.mit.edu/pub/Linux/sources/sbin/mgetty+sendfax*

 ftp://ftp.leo.org/pub/comp/networking/communication/modem/mgetty/

 5.9.3.  EFAX

 Controla fax de clase 1 y 2; no discrimina entre una conexi�n de datos
 y un fax, tiene su fuerte en su facilidad de uso. Necesita el paquete
 NetPBM (ftp.x.org). Utiliza xv para ver los fax recibidos. Lo
 encontrar� en:

 ftp://sunsite.unc.edu/pub/Linux/apps/comm/efax*

 6.  Visualizaci�n

 Hubo un tiempo en que a alguien se le ocurri� el concepto de la
 "oficina sin papeles"; no har�a falta manejar papel impreso durante el
 tr�nsito de documentos. Qu� falta de vista. �C�mo podr�amos si no
 fardar de impresora ?. Nos ha quedado de todo aquello una serie de
 programas que nos facilitan ver el resultado final de un trabajo sin
 su materializaci�n.

 6.1.  Con X-Window instalado

 6.1.1.  ghostview

 El complemento ideal de 'gs', visualiza documentos PostScript en un
 sistema X Window. Permite elegir p�ginas individuales, o grupos de
 ellas para su posterior impresi�n. La distribuci�n oficial est� en

 ftp://prep.ai.mit.edu/pub/gnu/ghostview-*.tar.gz

 F�cil de construir, ghostview necesita gs para ser ejecutado.  Las
 �ltimas versiones utilizan las fuentes est�ndar de X Window,
 facilitando la legibilidad en las condiciones de baja resoluci�n de
 los monitores. La verdad es que funciona muy bien; de hecho, muchos
 piensan que mejor que el paquete pageview de Sun. Si lo desea, puede
 utilizar fuentes distintas a las del sistema ( por ejemplo, Type 1 ),
 simplemente situando la orden

      ghostscript.useExternalFonts:false

 en su fichero .Xdefaults.

 Puede obtenerse m�s informaci�n de la documentaci�n que acompa�a al
 programa, y en la correspondiente p�gina de manual.

 6.1.2.  gspreview

 Tenemos aqu� otro interfaz para ghostscript. M�s sencillo que
 ghostview, carece del mill�n de opciones de �ste, pero trabaja
 razonablemente bien.  Puede encontrarlo en

 ftp.x.org/contrib/gspreview*

 6.1.3.  xdvi y xtex

 El equivalente para documentos .dvi de ghostview, tiene una curiosa y
 �til "lupa" incorporada. Extremadamente legible, viene incluido con la
 mayor�a de las distribuciones de TeX. Para ver un fichero basta con

 ftp://ftp.x.org/contrib.

 xtex tiene La misma utilidad que xdvi. Disponible en
 ftp://ftp.x.org/contrib/xtex-*.tar.z

 6.2.  �Y si no tengo instalado X Window ?

 Instalar X puede ser una mala opci�n si su equipo no dispone de
 memoria suficiente ( 8 Mb recomendados para ello ). No se preocupe,
 tambi�n hay soluci�n.

 6.2.1.  Ghostscript, de nuevo

 Ghostscript incluye en su distribuci�n dispositivos para control del
 soporte f�sico de los PC; no es una buena soluci�n para UN*X; Las
 �ltimas distribuciones, sin embargo, incluyen soporte para librer�as
 VGA de Linux (svgalib). El dispositivo pertinente se llama 'Linux'; la
 orden

      gs -sDEVICE=linux fichero.ps

 mostrar� el documento en pantalla. La variable de entorno GSVGAMODE,
 muy importante, fija el modo de v�deo deseado, seg�n los valores que
 aparecen en el fichero de vgalib vga.h.

 Si no lo tiene en su distribuci�n, puede obtener el parche en el
 servidor de correo de impresi�n, o en

 ftp://ws105.zfn.uni-bremen.de/pub/gs261-linuxdriver.sh

 ftp://ws105.zfn.uni-bremen.de/pub/gs261-svgalib.tar.gz

 ftp://ftp.cdrom.com/pub/linux/misc

 y por supuesto, en ftp://sunsite.unc.edu.

 (Pruebe mejor en los diversos duplicados de este lugar. Sunsite est�
 normalmente saturado (-- Para los residentes en Espa�a,
 ftp://sunsite.rediris.es es un mirror inmejorable.--) ).

 6.2.2.  dvgt

 Permite la visualizaci�n de ficheros .dvi bajo la librer�a svgalib, o
 en diferentes clases de terminales gr�ficas, incluyendo vt, tek, o un
 PC corriendo MS-Kermit. Disponible en sunsite.

 7.  Copyright

 Salvo otra disposici�n, los documentos COMO de Linux est�n registrados
 por sus autores respectivos. Los documentos COMO de Linux pueden ser
 reproducidos y distribuidos en todo o en parte, en cualquier medio
 f�sico o electr�nico. Las traducciones y similares est�n permitidos
 sin necesidad de permiso expreso.

 La redistribuci�n comercial est� permitida y recomendada; sin embargo
 a los autores les gustar�a tener conocimiento de tales distribuciones.

 Resumiendo: Nos gustar�a promover la distribuci�n de esta informaci�n
 a trav�s del mayor n�mero de canales posible. Sin embargo, nos
 gustar�a retener los derechos de autor de los documentos COMO, y ser
 informados de cualquier plan para su redistribuci�n.

 Si tiene dudas, contacte con Greg Hankins (-- En cuanto a coordinaci�n
 de traducciones al castellano, ver secci�n ``''--) el coordinador de
 los COMO de Linux, en [email protected] .

 8.  Anexo: El INSFLUG

 El INSFLUG forma parte del grupo internacional Linux Documentation
 Project, encarg�ndose de las traducciones al castellano de los Howtos
 (Comos), as� como la producci�n de documentos originales en aquellos
 casos en los que no existe an�logo en ingl�s.

 En el INSFLUG se orienta preferentemente a la traducci�n de documentos
 breves, como los COMOs y PUFs (Preguntas de Uso Frecuente, las FAQs.
 :) ), etc.

 Dir�jase a la sede del INSFLUG para m�s informaci�n al respecto.

 En la sede del INSFLUG encontrar� siempre las �ltimas versiones de las
 traducciones:  www.insflug.org. Aseg�rese de comprobar cu�l es la
 �ltima versi�n disponible en el Insflug antes de bajar un documento de
 un servidor r�plica.

 Se proporciona tambi�n una lista de los servidores r�plica (mirror)
 del Insflug m�s cercanos a Vd., e informaci�n relativa a otros
 recursos en castellano.

 Francisco Jos� Montilla, [email protected].