commit a0a8be6fa00795589ff892a73bd4be4226075ca9
parent 021e61c512532b6f0bde1777d79ebc01be715071
Author: Anders Damsgaard <anders@adamsgaard.dk>
Date: Thu, 25 Apr 2019 10:07:31 +0200
Print from mutt via groff
Diffstat:
3 files changed, 813 insertions(+), 0 deletions(-)
diff --git a/.mutt/muttprint-groff.sh b/.mutt/muttprint-groff.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+PDIR="$HOME/tmp/mutt_print"
+OPEN_PDF=zathura
+
+# create temp dir if it does not exist
+if [ ! -d "$PDIR" ]; then
+ if ! mkdir -p "$PDIR" 2>/dev/null; then
+ echo "Unable to make directory '$PDIR'" 1>&2
+ exit 2
+ fi
+fi
+
+infile="$(mktemp "$PDIR"/mutt_XXXXXXXX.txt)"
+tmpfile="$(mktemp "$PDIR"/mutt_XXXXXXXX.roff)"
+outfile="$(mktemp "$PDIR"/mutt_XXXXXXXX.pdf)"
+
+echo "infile = $infile"
+echo "tmpfile = $tmpfile"
+echo "outfile = $outfile"
+
+while read -r line
+do
+ echo "$line" >> "$infile"
+done < "${1:-/dev/stdin}"
+
+echo "formatting $infile to groff format in $tmpfile"
+mail_date="$(grep '^Date: ' "$infile")"
+mail_from="$(grep '^From: ' "$infile")"
+mail_to="$(grep '^To: ' "$infile")"
+mail_cc="$(grep '^Cc: ' "$infile")"
+mail_subject="$(grep '^Subject: ' "$infile")"
+
+{
+ printf ".TL\n%s\n" "$mail_subject" | sed 's/^Subject: //';
+ printf ".AU\n%s\n" "$mail_from";
+ printf ".AU\n%s\n" "$mail_to";
+ printf ".AU\n%s\n" "$mail_cc";
+ printf ".AI\n%s\n" "$mail_date";
+ printf ".LP\n";
+ grep -v "^Date: \|^From: \|^To: \|^Subject: \|^Cc:\|^X-Mailer: " "$infile" | \
+ sed 's/^>//;s/^ //' | cat --squeeze-blank | \
+ sed 's/\(Fra\|Dato\|Til\|Cc\|Emne\): /\n\1: /g' | \
+ sed '/^Links:$/Q';
+ } \
+ > "$tmpfile"
+
+echo "running groff $tmpfile $outfile"
+preconv "$tmpfile" | groff -ms -T pdf > "$outfile"
+
+read -r
+$OPEN_PDF "$outfile" >/dev/null 2>&1 &
+sleep 1
+#rm "$infile" "$tmpfile" "$outfile"
diff --git a/.mutt/muttprint-vim.sh b/.mutt/muttprint-vim.sh
@@ -0,0 +1,756 @@
+*print.txt* For Vim version 8.1. Last change: 2010 Jul 20
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+
+
+Printing *printing*
+
+1. Introduction |print-intro|
+2. Print options |print-options|
+3. PostScript Printing |postscript-printing|
+4. PostScript Printing Encoding |postscript-print-encoding|
+5. PostScript CJK Printing |postscript-cjk-printing|
+6. PostScript Printing Troubleshooting |postscript-print-trouble|
+7. PostScript Utilities |postscript-print-util|
+8. Formfeed Characters |printing-formfeed|
+
+{Vi has None of this}
+{only available when compiled with the |+printer| feature}
+
+==============================================================================
+1. Introduction *print-intro*
+
+On MS-Windows Vim can print your text on any installed printer. On other
+systems a PostScript file is produced. This can be directly sent to a
+PostScript printer. For other printers a program like ghostscript needs to be
+used.
+
+Note: If you have problems printing with |:hardcopy|, an alternative is to use
+|:TOhtml| and print the resulting html file from a browser.
+
+ *:ha* *:hardcopy* *E237* *E238* *E324*
+:[range]ha[rdcopy][!] [arguments]
+ Send [range] lines (default whole file) to the
+ printer.
+
+ On MS-Windows a dialog is displayed to allow selection
+ of printer, paper size etc. To skip the dialog, use
+ the [!]. In this case the printer defined by
+ 'printdevice' is used, or, if 'printdevice' is empty,
+ the system default printer.
+
+ For systems other than MS-Windows, PostScript is
+ written in a temp file and 'printexpr' is used to
+ actually print it. Then [arguments] can be used by
+ 'printexpr' through |v:cmdarg|. Otherwise [arguments]
+ is ignored. 'printoptions' can be used to specify
+ paper size, duplex, etc.
+ Note: If you want PDF, there are tools such as
+ "ps2pdf" that can convert the PostScript to PDF.
+
+:[range]ha[rdcopy][!] >{filename}
+ As above, but write the resulting PostScript in file
+ {filename}.
+ Things like "%" are expanded |cmdline-special|
+ Careful: An existing file is silently overwritten.
+ {only available when compiled with the |+postscript|
+ feature}
+ On MS-Windows use the "print to file" feature of the
+ printer driver.
+
+Progress is displayed during printing as a page number and a percentage. To
+abort printing use the interrupt key (CTRL-C or, on MS-systems, CTRL-Break).
+
+Printer output is controlled by the 'printfont' and 'printoptions' options.
+'printheader' specifies the format of a page header.
+
+The printed file is always limited to the selected margins, irrespective of
+the current window's 'wrap' or 'linebreak' settings. The "wrap" item in
+'printoptions' can be used to switch wrapping off.
+The current highlighting colors are used in the printout, with the following
+considerations:
+1) The normal background is always rendered as white (i.e. blank paper).
+2) White text or the default foreground is rendered as black, so that it shows
+ up!
+3) If 'background' is "dark", then the colours are darkened to compensate for
+ the fact that otherwise they would be too bright to show up clearly on
+ white paper.
+
+==============================================================================
+2. Print options *print-options*
+
+Here are the details for the options that change the way printing is done.
+For generic info about setting options see |options.txt|.
+
+ *pdev-option*
+'printdevice' 'pdev' string (default empty)
+ global
+This defines the name of the printer to be used when the |:hardcopy| command
+is issued with a bang (!) to skip the printer selection dialog. On Win32, it
+should be the printer name exactly as it appears in the standard printer
+dialog.
+If the option is empty, then vim will use the system default printer for
+":hardcopy!"
+
+ *penc-option* *E620*
+'printencoding' 'penc' String (default empty, except for:
+ Windows, OS/2: cp1252,
+ Macintosh: mac-roman,
+ VMS: dec-mcs,
+ HPUX: hp-roman8,
+ EBCDIC: ebcdic-uk)
+ global
+Sets the character encoding used when printing. This option tells Vim which
+print character encoding file from the "print" directory in 'runtimepath' to
+use.
+
+This option will accept any value from |encoding-names|. Any recognized names
+are converted to Vim standard names - see 'encoding' for more details. Names
+not recognized by Vim will just be converted to lower case and underscores
+replaced with '-' signs.
+
+If 'printencoding' is empty or Vim cannot find the file then it will use
+'encoding' (if it is set an 8-bit encoding) to find the print character
+encoding file. If Vim is unable to find a character encoding file then it
+will use the "latin1" print character encoding file.
+
+When 'encoding' is set to a multi-byte encoding, Vim will try to convert
+characters to the printing encoding for printing (if 'printencoding' is empty
+then the conversion will be to latin1). Conversion to a printing encoding
+other than latin1 will require Vim to be compiled with the |+iconv| feature.
+If no conversion is possible then printing will fail. Any characters that
+cannot be converted will be replaced with upside down question marks.
+
+Four print character encoding files are provided to support default Mac, VMS,
+HPUX, and EBCDIC character encodings and are used by default on these
+platforms. Code page 1252 print character encoding is used by default on
+Windows and OS/2 platforms.
+
+ *pexpr-option*
+'printexpr' 'pexpr' String (default: see below)
+ global
+Expression that is evaluated to print the PostScript produced with
+|:hardcopy|.
+The file name to be printed is in |v:fname_in|.
+The arguments to the ":hardcopy" command are in |v:cmdarg|.
+The expression must take care of deleting the file after printing it.
+When there is an error, the expression must return a non-zero number.
+If there is no error, return zero or an empty string.
+The default for non MS-Windows or VMS systems is to simply use "lpr" to print
+the file: >
+
+ system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice)
+ . ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error
+
+On MS-Dos, MS-Windows and OS/2 machines the default is to copy the file to the
+currently specified printdevice: >
+
+ system('copy' . ' ' . v:fname_in . (&printdevice == ''
+ ? ' LPT1:' : (' \"' . &printdevice . '\"')))
+ . delete(v:fname_in)
+
+On VMS machines the default is to send the file to either the default or
+currently specified printdevice: >
+
+ system('print' . (&printdevice == '' ? '' : ' /queue=' .
+ &printdevice) . ' ' . v:fname_in) . delete(v:fname_in)
+
+If you change this option, using a function is an easy way to avoid having to
+escape all the spaces. Example: >
+
+ :set printexpr=PrintFile(v:fname_in)
+ :function PrintFile(fname)
+ : call system("ghostview " . a:fname)
+ : call delete(a:fname)
+ : return v:shell_error
+ :endfunc
+
+Be aware that some print programs return control before they have read the
+file. If you delete the file too soon it will not be printed. These programs
+usually offer an option to have them remove the file when printing is done.
+ *E365*
+If evaluating the expression fails or it results in a non-zero number, you get
+an error message. In that case Vim will delete the file. In the default
+value for non-MS-Windows a trick is used: Adding "v:shell_error" will result
+in a non-zero number when the system() call fails.
+
+This option cannot be set from a |modeline| or in the |sandbox|, for security
+reasons.
+
+ *pfn-option* *E613*
+'printfont' 'pfn' string (default "courier")
+ global
+This is the name of the font that will be used for the |:hardcopy| command's
+output. It has the same format as the 'guifont' option, except that only one
+font may be named, and the special "guifont=*" syntax is not available.
+
+In the Win32 GUI version this specifies a font name with its extra attributes,
+as with the 'guifont' option.
+
+For other systems, only ":h11" is recognized, where "11" is the point size of
+the font. When omitted, the point size is 10.
+
+ *pheader-option*
+'printheader' 'pheader' string (default "%<%f%h%m%=Page %N")
+ global
+This defines the format of the header produced in |:hardcopy| output. The
+option is defined in the same way as the 'statusline' option. If Vim has not
+been compiled with the |+statusline| feature, this option has no effect and a
+simple default header is used, which shows the page number. The same simple
+header is used when this option is empty.
+
+ *pmbcs-option*
+'printmbcharset' 'pmbcs' string (default "")
+ global
+Sets the CJK character set to be used when generating CJK output from
+|:hardcopy|. The following predefined values are currently recognised by Vim:
+
+ Value Description ~
+ Chinese GB_2312-80
+ (Simplified) GBT_12345-90
+ MAC Apple Mac Simplified Chinese
+ GBT-90_MAC GB/T 12345-90 Apple Mac Simplified
+ Chinese
+ GBK GBK (GB 13000.1-93)
+ ISO10646 ISO 10646-1:1993
+
+ Chinese CNS_1993 CNS 11643-1993, Planes 1 & 2
+ (Traditional) BIG5
+ ETEN Big5 with ETen extensions
+ ISO10646 ISO 10646-1:1993
+
+ Japanese JIS_C_1978
+ JIS_X_1983
+ JIS_X_1990
+ MSWINDOWS Win3.1/95J (JIS X 1997 + NEC +
+ IBM extensions)
+ KANJITALK6 Apple Mac KanjiTalk V6.x
+ KANJITALK7 Apple Mac KanjiTalk V7.x
+
+ Korean KS_X_1992
+ MAC Apple Macintosh Korean
+ MSWINDOWS KS X 1992 with MS extensions
+ ISO10646 ISO 10646-1:1993
+
+Only certain combinations of the above values and 'printencoding' are
+possible. The following tables show the valid combinations:
+
+ euc-cn gbk ucs-2 utf-8 ~
+ Chinese GB_2312-80 x
+ (Simplified) GBT_12345-90 x
+ MAC x
+ GBT-90_MAC x
+ GBK x
+ ISO10646 x x
+
+ euc-tw big5 ucs-2 utf-8 ~
+ Chinese CNS_1993 x
+ (Traditional) BIG5 x
+ ETEN x
+ ISO10646 x x
+
+ euc-jp sjis ucs-2 utf-8 ~
+ Japanese JIS_C_1978 x x
+ JIS_X_1983 x x
+ JIS_X_1990 x x x
+ MSWINDOWS x
+ KANJITALK6 x
+ KANJITALK7 x
+
+ euc-kr cp949 ucs-2 utf-8 ~
+ Korean KS_X_1992 x
+ MAC x
+ MSWINDOWS x
+ ISO10646 x x
+
+To set up the correct encoding and character set for printing some
+Japanese text you would do the following; >
+ :set printencoding=euc-jp
+ :set printmbcharset=JIS_X_1983
+
+If 'printmbcharset' is not one of the above values then it is assumed to
+specify a custom multi-byte character set and no check will be made that it is
+compatible with the value for 'printencoding'. Vim will look for a file
+defining the character set in the "print" directory in 'runtimepath'.
+
+ *pmbfn-option*
+'printmbfont' 'pmbfn' string (default "")
+ global
+This is a comma-separated list of fields for font names to be used when
+generating CJK output from |:hardcopy|. Each font name has to be preceded
+with a letter indicating the style the font is to be used for as follows:
+
+ r:{font-name} font to use for normal characters
+ b:{font-name} font to use for bold characters
+ i:{font-name} font to use for italic characters
+ o:{font-name} font to use for bold-italic characters
+
+A field with the r: prefix must be specified when doing CJK printing. The
+other fontname specifiers are optional. If a specifier is missing then
+another font will be used as follows:
+
+ if b: is missing, then use r:
+ if i: is missing, then use r:
+ if o: is missing, then use b:
+
+Some CJK fonts do not contain characters for codes in the ASCII code range.
+Also, some characters in the CJK ASCII code ranges differ in a few code points
+from traditional ASCII characters. There are two additional fields to control
+printing of characters in the ASCII code range.
+
+ c:yes Use Courier font for characters in the ASCII
+ c:no (default) code range.
+
+ a:yes Use ASCII character set for codes in the ASCII
+ a:no (default) code range.
+
+The following is an example of specifying two multi-byte fonts, one for normal
+and italic printing and one for bold and bold-italic printing, and using
+Courier to print codes in the ASCII code range but using the national
+character set: >
+ :set printmbfont=r:WadaMin-Regular,b:WadaMin-Bold,c:yes
+<
+ *popt-option*
+'printoptions' 'popt' string (default "")
+ global
+This is a comma-separated list of items that control the format of the output
+of |:hardcopy|:
+
+ left:{spec} left margin (default: 10pc)
+ right:{spec} right margin (default: 5pc)
+ top:{spec} top margin (default: 5pc)
+ bottom:{spec} bottom margin (default: 5pc)
+ {spec} is a number followed by "in" for inches, "pt"
+ for points (1 point is 1/72 of an inch), "mm" for
+ millimeters or "pc" for a percentage of the media
+ size.
+ Weird example:
+ left:2in,top:30pt,right:16mm,bottom:3pc
+ If the unit is not recognized there is no error and
+ the default value is used.
+
+ header:{nr} Number of lines to reserve for the header.
+ Only the first line is actually filled, thus when {nr}
+ is 2 there is one empty line. The header is formatted
+ according to 'printheader'.
+ header:0 Do not print a header.
+ header:2 (default) Use two lines for the header
+
+ syntax:n Do not use syntax highlighting. This is faster and
+ thus useful when printing large files.
+ syntax:y Do syntax highlighting.
+ syntax:a (default) Use syntax highlighting if the printer appears to be
+ able to print color or grey.
+
+ number:y Include line numbers in the printed output.
+ number:n (default) No line numbers.
+
+ wrap:y (default) Wrap long lines.
+ wrap:n Truncate long lines.
+
+ duplex:off Print on one side.
+ duplex:long (default) Print on both sides (when possible), bind on long
+ side.
+ duplex:short Print on both sides (when possible), bind on short
+ side.
+
+ collate:y (default) Collating: 1 2 3, 1 2 3, 1 2 3
+ collate:n No collating: 1 1 1, 2 2 2, 3 3 3
+
+ jobsplit:n (default) Do all copies in one print job
+ jobsplit:y Do each copy as a separate print job. Useful when
+ doing N-up postprocessing.
+
+ portrait:y (default) Orientation is portrait.
+ portrait:n Orientation is landscape.
+ *a4* *letter*
+ paper:A4 (default) Paper size: A4
+ paper:{name} Paper size from this table:
+ {name} size in cm size in inch ~
+ 10x14 25.4 x 35.57 10 x 14
+ A3 29.7 x 42 11.69 x 16.54
+ A4 21 x 29.7 8.27 x 11.69
+ A5 14.8 x 21 5.83 x 8.27
+ B4 25 x 35.3 10.12 x 14.33
+ B5 17.6 x 25 7.17 x 10.12
+ executive 18.42 x 26.67 7.25 x 10.5
+ folio 21 x 33 8.27 x 13
+ ledger 43.13 x 27.96 17 x 11
+ legal 21.59 x 35.57 8.5 x 14
+ letter 21.59 x 27.96 8.5 x 11
+ quarto 21.59 x 27.5 8.5 x 10.83
+ statement 13.97 x 21.59 5.5 x 8.5
+ tabloid 27.96 x 43.13 11 x 17
+
+ formfeed:n (default) Treat form feed characters (0x0c) as a normal print
+ character.
+ formfeed:y When a form feed character is encountered, continue
+ printing of the current line at the beginning of the
+ first line on a new page.
+
+The item indicated with (default) is used when the item is not present. The
+values are not always used, especially when using a dialog to select the
+printer and options.
+Example: >
+ :set printoptions=paper:letter,duplex:off
+
+==============================================================================
+3. PostScript Printing *postscript-printing*
+ *E455* *E456* *E457* *E624*
+Provided you have enough disk space there should be no problems generating a
+PostScript file. You need to have the runtime files correctly installed (if
+you can find the help files, they probably are).
+
+There are currently a number of limitations with PostScript printing:
+
+- 'printfont' - The font name is ignored (the Courier family is always used -
+ it should be available on all PostScript printers) but the font size is
+ used.
+
+- 'printoptions' - The duplex setting is used when generating PostScript
+ output, but it is up to the printer to take notice of the setting. If the
+ printer does not support duplex printing then it should be silently ignored.
+ Some printers, however, don't print at all.
+
+- 8-bit support - While a number of 8-bit print character encodings are
+ supported it is possible that some characters will not print. Whether a
+ character will print depends on the font in the printer knowing the
+ character. Missing characters will be replaced with an upside down question
+ mark, or a space if that character is also not known by the font. It may be
+ possible to get all the characters in an encoding to print by installing a
+ new version of the Courier font family.
+
+- Multi-byte support - Currently Vim will try to convert multi-byte characters
+ to the 8-bit encoding specified by 'printencoding' (or latin1 if it is
+ empty). Any characters that are not successfully converted are shown as
+ unknown characters. Printing will fail if Vim cannot convert the multi-byte
+ to the 8-bit encoding.
+
+==============================================================================
+4. Custom 8-bit Print Character Encodings *postscript-print-encoding*
+ *E618* *E619*
+To use your own print character encoding when printing 8-bit character data
+you need to define your own PostScript font encoding vector. Details on how
+to define a font encoding vector is beyond the scope of this help file, but
+you can find details in the PostScript Language Reference Manual, 3rd Edition,
+published by Addison-Wesley and available in PDF form at
+http://www.adobe.com/. The following describes what you need to do for Vim to
+locate and use your print character encoding.
+
+i. Decide on a unique name for your encoding vector, one that does not clash
+ with any of the recognized or standard encoding names that Vim uses (see
+ |encoding-names| for a list), and that no one else is likely to use.
+ii. Copy $VIMRUNTIME/print/latin1.ps to the print subdirectory in your
+ 'runtimepath' and rename it with your unique name.
+iii. Edit your renamed copy of latin1.ps, replacing all occurrences of latin1
+ with your unique name (don't forget the line starting %%Title:), and
+ modify the array of glyph names to define your new encoding vector. The
+ array must have exactly 256 entries or you will not be able to print!
+iv. Within Vim, set 'printencoding' to your unique encoding name and then
+ print your file. Vim will now use your custom print character encoding.
+
+Vim will report an error with the resource file if you change the order or
+content of the first 3 lines, other than the name of the encoding on the line
+starting %%Title: or the version number on the line starting %%Version:.
+
+[Technical explanation for those that know PostScript - Vim looks for a file
+with the same name as the encoding it will use when printing. The file
+defines a new PostScript Encoding resource called /VIM-name, where name is the
+print character encoding Vim will use.]
+
+==============================================================================
+5. PostScript CJK Printing *postscript-cjk-printing*
+ *E673* *E674* *E675*
+
+Vim supports printing of Chinese, Japanese, and Korean files. Setting up Vim
+to correctly print CJK files requires setting up a few more options.
+
+Each of these countries has many standard character sets and encodings which
+require that both be specified when printing. In addition, CJK fonts normally
+do not have the concept of italic glyphs and use different weight or stroke
+style to achieve emphasis when printing. This in turn requires a different
+approach to specifying fonts to use when printing.
+
+The encoding and character set are specified with the 'printencoding' and
+'printmbcharset' options. If 'printencoding' is not specified then 'encoding'
+is used as normal. If 'printencoding' is specified then characters will be
+translated to this encoding for printing. You should ensure that the encoding
+is compatible with the character set needed for the file contents or some
+characters may not appear when printed.
+
+The fonts to use for CJK printing are specified with 'printmbfont'. This
+option allows you to specify different fonts to use when printing characters
+which are syntax highlighted with the font styles normal, italic, bold and
+bold-italic.
+
+No CJK fonts are supplied with Vim. There are some free Korean, Japanese, and
+Traditional Chinese fonts available at:
+
+ http://examples.oreilly.com/cjkvinfo/adobe/samples/
+
+You can find descriptions of the various fonts in the read me file at
+
+ http://examples.oreilly.de/english_examples/cjkvinfo/adobe/00README
+
+Please read your printer documentation on how to install new fonts.
+
+CJK fonts can be large containing several thousand glyphs, and it is not
+uncommon to find that they only contain a subset of a national standard. It
+is not unusual to find the fonts to not include characters for codes in the
+ASCII code range. If you find half-width Roman characters are not appearing
+in your printout then you should configure Vim to use the Courier font the
+half-width ASCII characters with 'printmbfont'. If your font does not include
+other characters then you will need to find another font that does.
+
+Another issue with ASCII characters, is that the various national character
+sets specify a couple of different glyphs in the ASCII code range. If you
+print ASCII text using the national character set you may see some unexpected
+characters. If you want true ASCII code printing then you need to configure
+Vim to output ASCII characters for the ASCII code range with 'printmbfont'.
+
+It is possible to define your own multi-byte character set although this
+should not be attempted lightly. A discussion on the process if beyond the
+scope of these help files. You can find details on CMap (character map) files
+in the document 'Adobe CMap and CIDFont Files Specification, Version 1.0',
+available from http://www.adobe.com as a PDF file.
+
+==============================================================================
+6. PostScript Printing Troubleshooting *postscript-print-trouble*
+ *E621*
+Usually the only sign of a problem when printing with PostScript is that your
+printout does not appear. If you are lucky you may get a printed page that
+tells you the PostScript operator that generated the error that prevented the
+print job completing.
+
+There are a number of possible causes as to why the printing may have failed:
+
+- Wrong version of the prolog resource file. The prolog resource file
+ contains some PostScript that Vim needs to be able to print. Each version
+ of Vim needs one particular version. Make sure you have correctly installed
+ the runtime files, and don't have any old versions of a file called prolog
+ in the print directory in your 'runtimepath' directory.
+
+- Paper size. Some PostScript printers will abort printing a file if they do
+ not support the requested paper size. By default Vim uses A4 paper. Find
+ out what size paper your printer normally uses and set the appropriate paper
+ size with 'printoptions'. If you cannot find the name of the paper used,
+ measure a sheet and compare it with the table of supported paper sizes listed
+ for 'printoptions', using the paper that is closest in both width AND height.
+ Note: The dimensions of actual paper may vary slightly from the ones listed.
+ If there is no paper listed close enough, then you may want to try psresize
+ from PSUtils, discussed below.
+
+- Two-sided printing (duplex). Normally a PostScript printer that does not
+ support two-sided printing will ignore any request to do it. However, some
+ printers may abort the job altogether. Try printing with duplex turned off.
+ Note: Duplex prints can be achieved manually using PS utils - see below.
+
+- Collated printing. As with Duplex printing, most PostScript printers that
+ do not support collating printouts will ignore a request to do so. Some may
+ not. Try printing with collation turned off.
+
+- Syntax highlighting. Some print management code may prevent the generated
+ PostScript file from being printed on a black and white printer when syntax
+ highlighting is turned on, even if solid black is the only color used. Try
+ printing with syntax highlighting turned off.
+
+A safe printoptions setting to try is: >
+
+ :set printoptions=paper:A4,duplex:off,collate:n,syntax:n
+
+Replace "A4" with the paper size that best matches your printer paper.
+
+==============================================================================
+7. PostScript Utilities *postscript-print-util*
+
+7.1 Ghostscript
+
+Ghostscript is a PostScript and PDF interpreter that can be used to display
+and print on non-PostScript printers PostScript and PDF files. It can also
+generate PDF files from PostScript.
+
+Ghostscript will run on a wide variety of platforms.
+
+There are three available versions:
+
+- AFPL Ghostscript (formerly Aladdin Ghostscript) which is free for
+ non-commercial use. It can be obtained from:
+
+ http://www.cs.wisc.edu/~ghost/
+
+- GNU Ghostscript which is available under the GNU General Public License. It
+ can be obtained from:
+
+ ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/
+
+- A commercial version for inclusion in commercial products.
+
+Additional information on Ghostscript can also be found at:
+
+ http://www.ghostscript.com/
+
+Support for a number of non PostScript printers is provided in the
+distribution as standard, but if you cannot find support for your printer
+check the Ghostscript site for other printers not included by default.
+
+
+7.2 Ghostscript Previewers.
+
+The interface to Ghostscript is very primitive so a number of graphical front
+ends have been created. These allow easier PostScript file selection,
+previewing at different zoom levels, and printing. Check supplied
+documentation for full details.
+
+X11
+
+- Ghostview. Obtainable from:
+
+ http://www.cs.wisc.edu/~ghost/gv/
+
+- gv. Derived from Ghostview. Obtainable from:
+
+ http://wwwthep.physik.uni-mainz.de/~plass/gv/
+
+ Copies (possibly not the most recent) can be found at:
+
+ http://www.cs.wisc.edu/~ghost/gv/
+
+OpenVMS
+
+- Is apparently supported in the main code now (untested). See:
+
+ http://wwwthep.physik.uni-mainz.de/~plass/gv/
+
+Windows and OS/2
+
+- GSview. Obtainable from:
+
+ http://www.cs.wisc.edu/~ghost/gsview/
+
+DOS
+
+- ps_view. Obtainable from:
+
+ ftp://ftp.pg.gda.pl/pub/TeX/support/ps_view/
+ ftp://ftp.dante.de/tex-archive/support/ps_view/
+
+Linux
+
+- GSview. Linux version of the popular Windows and OS/2 previewer.
+ Obtainable from:
+
+ http://www.cs.wisc.edu/~ghost/gsview/
+
+- BMV. Different from Ghostview and gv in that it doesn't use X but svgalib.
+ Obtainable from:
+
+ ftp://sunsite.unc.edu/pub/Linux/apps/graphics/viewers/svga/bmv-1.2.tgz
+
+
+7.3 PSUtils
+
+PSUtils is a collection of utility programs for manipulating PostScript
+documents. Binary distributions are available for many platforms, as well as
+the full source. PSUtils can be found at:
+
+ http://knackered.org/angus/psutils
+
+The utilities of interest include:
+
+- psnup. Convert PS files for N-up printing.
+- psselect. Select page range and order of printing.
+- psresize. Change the page size.
+- psbook. Reorder and lay out pages ready for making a book.
+
+The output of one program can be used as the input to the next, allowing for
+complex print document creation.
+
+
+N-UP PRINTING
+
+The psnup utility takes an existing PostScript file generated from Vim and
+convert it to an n-up version. The simplest way to create a 2-up printout is
+to first create a PostScript file with: >
+
+ :hardcopy > test.ps
+
+Then on your command line execute: >
+
+ psnup -n 2 test.ps final.ps
+
+Note: You may get warnings from some Ghostscript previewers for files produced
+by psnup - these may safely be ignored.
+
+Finally print the file final.ps to your PostScript printer with your
+platform's print command. (You will need to delete the two PostScript files
+afterwards yourself.) 'printexpr' could be modified to perform this extra
+step before printing.
+
+
+ALTERNATE DUPLEX PRINTING
+
+It is possible to achieve a poor man's version of duplex printing using the PS
+utility psselect. This utility has options -e and -o for printing just the
+even or odd pages of a PS file respectively.
+
+First generate a PS file with the 'hardcopy' command, then generate new
+files with all the odd and even numbered pages with: >
+
+ psselect -o test.ps odd.ps
+ psselect -e test.ps even.ps
+
+Next print odd.ps with your platform's normal print command. Then take the
+print output, turn it over and place it back in the paper feeder. Now print
+even.ps with your platform's print command. All the even pages should now
+appear on the back of the odd pages.
+
+There are a couple of points to bear in mind:
+
+1. Position of the first page. If the first page is on top of the printout
+ when printing the odd pages then you need to reverse the order that the odd
+ pages are printed. This can be done with the -r option to psselect. This
+ will ensure page 2 is printed on the back of page 1.
+ Note: it is better to reverse the odd numbered pages rather than the even
+ numbered in case there are an odd number of pages in the original PS file.
+
+2. Paper flipping. When turning over the paper with the odd pages printed on
+ them you may have to either flip them horizontally (along the long edge) or
+ vertically (along the short edge), as well as possibly rotating them 180
+ degrees. All this depends on the printer - it will be more obvious for
+ desktop ink jets than for small office laser printers where the paper path
+ is hidden from view.
+
+
+==============================================================================
+8. Formfeed Characters *printing-formfeed*
+
+By default Vim does not do any special processing of |formfeed| control
+characters. Setting the 'printoptions' formfeed item will make Vim recognize
+formfeed characters and continue printing the current line at the beginning
+of the first line on a new page. The use of formfeed characters provides
+rudimentary print control but there are certain things to be aware of.
+
+Vim will always start printing a line (including a line number if enabled)
+containing a formfeed character, even if it is the first character on the
+line. This means if a line starting with a formfeed character is the first
+line of a page then Vim will print a blank page.
+
+Since the line number is printed at the start of printing the line containing
+the formfeed character, the remainder of the line printed on the new page
+will not have a line number printed for it (in the same way as the wrapped
+lines of a long line when wrap in 'printoptions' is enabled).
+
+If the formfeed character is the last character on a line, then printing will
+continue on the second line of the new page, not the first. This is due to
+Vim processing the end of the line after the formfeed character and moving
+down a line to continue printing.
+
+Due to the points made above it is recommended that when formfeed character
+processing is enabled, printing of line numbers is disabled, and that form
+feed characters are not the last character on a line. Even then you may need
+to adjust the number of lines before a formfeed character to prevent
+accidental blank pages.
+
+==============================================================================
+ vim:tw=78:ts=8:noet:ft=help:norl:
diff --git a/.mutt/muttrc b/.mutt/muttrc
@@ -244,5 +244,8 @@ macro index,pager H "<enter-command>unset wait_key<enter>\
<enter-command>set wait_key<enter>\
<save-message>=adamsgaard/INBOX<enter>" "mark as ham (non-spam)"
+# convert to pdf for printing
+set print_command="$HOME/.mutt/muttprint-groff.sh"
+
# Get mutt to display its version on startup.
push <show-version>