| 
									
										
										
										
											2024-05-11 11:12:40 +02:00
										 |  |  | *print.txt*     For Vim version 9.1.  Last change: 2024 May 11 | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		  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| | 
					
						
							| 
									
										
										
										
											2006-04-30 18:54:39 +00:00
										 |  |  | 5. PostScript CJK Printing		|postscript-cjk-printing| | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 6. PostScript Printing Troubleshooting	|postscript-print-trouble| | 
					
						
							|  |  |  | 7. PostScript Utilities			|postscript-print-util| | 
					
						
							|  |  |  | 8. Formfeed Characters			|printing-formfeed| | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | {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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-24 20:39:31 +00:00
										 |  |  | Note: If you have problems printing with |:hardcopy|, an alternative is to use | 
					
						
							|  |  |  | |:TOhtml| and print the resulting html file from a browser. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 					*: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 | 
					
						
							| 
									
										
										
										
											2005-04-15 21:00:38 +00:00
										 |  |  | 			of printer, paper size etc.  To skip the dialog, use | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 			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. | 
					
						
							| 
									
										
										
										
											2018-08-11 18:00:22 +02:00
										 |  |  | 			Note: If you want PDF, there are tools such as | 
					
						
							|  |  |  | 			"ps2pdf" that can convert the PostScript to PDF. | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | :[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: | 
					
						
							| 
									
										
										
										
											2005-04-15 21:00:38 +00:00
										 |  |  | 1) The normal background is always rendered as white (i.e. blank paper). | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 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: | 
					
						
							| 
									
										
										
										
											2019-12-17 21:27:18 +01:00
										 |  |  | 					MS-Windows: cp1252, | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 					Macintosh: mac-roman, | 
					
						
							|  |  |  | 					VMS: dec-mcs, | 
					
						
							|  |  |  | 					HPUX: hp-roman8, | 
					
						
							|  |  |  | 					EBCDIC: ebcdic-uk) | 
					
						
							|  |  |  | 			global | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | Sets the character encoding used when printing.  This option tells Vim which | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | print character encoding file from the "print" directory in 'runtimepath' to | 
					
						
							|  |  |  | use. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This option will accept any value from |encoding-names|.  Any recognized names | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | replaced with '-' signs. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | If 'printencoding' is empty or Vim cannot find the file then it will use | 
					
						
							| 
									
										
										
										
											2019-02-17 21:18:32 +01:00
										 |  |  | '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. | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-30 17:20:20 +02:00
										 |  |  | When 'encoding' is set to a multibyte encoding, Vim will try to convert | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | characters to the printing encoding for printing (if 'printencoding' is empty | 
					
						
							|  |  |  | then the conversion will be to latin1).  Conversion to a printing encoding | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | other than latin1 will require Vim to be compiled with the |+iconv| feature. | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2019-12-17 21:27:18 +01:00
										 |  |  | MS-Windows platform. | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 							*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: > | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-26 12:25:45 +00:00
										 |  |  |     system('lpr' .. (&printdevice == '' ? '' : ' -P' .. &printdevice) | 
					
						
							|  |  |  | 	.. ' ' .. v:fname_in) .. delete(v:fname_in) + v:shell_error | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-17 21:27:18 +01:00
										 |  |  | On MS-Windows machines the default is to copy the file to the currently | 
					
						
							|  |  |  | specified printdevice: > | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-26 12:25:45 +00:00
										 |  |  |     system('copy' .. ' ' .. v:fname_in .. (&printdevice == '' | 
					
						
							|  |  |  | 		? ' LPT1:' : (' \"' .. &printdevice .. '\"'))) | 
					
						
							|  |  |  | 		.. delete(v:fname_in) | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | On VMS machines the default is to send the file to either the default or | 
					
						
							|  |  |  | currently specified printdevice: > | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-26 12:25:45 +00:00
										 |  |  |     system('print' .. (&printdevice == '' ? '' : ' /queue=' .. | 
					
						
							|  |  |  | 		&printdevice) .. ' ' .. v:fname_in) .. delete(v:fname_in) | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | If you change this option, using a function is an easy way to avoid having to | 
					
						
							|  |  |  | escape all the spaces.  Example: > | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-01 19:43:52 +01:00
										 |  |  | 	:set printexpr=PrintFile() | 
					
						
							|  |  |  | 	:function PrintFile() | 
					
						
							|  |  |  | 	:  call system("ghostview " .. v:fname_in) | 
					
						
							|  |  |  | 	:  call delete(v:fname_in) | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 	:  return v:shell_error | 
					
						
							|  |  |  | 	:endfunc | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-01 19:43:52 +01:00
										 |  |  | It is more efficient if the option is set to just a function call, | 
					
						
							|  |  |  | see |expr-option-function|. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-26 10:51:39 +00:00
										 |  |  | If the expression starts with s: or |<SID>|, then it is replaced with the | 
					
						
							|  |  |  | script ID (|local-function|). Example: > | 
					
						
							|  |  |  | 		set printexpr=s:MyPrintFile() | 
					
						
							|  |  |  | 		set printexpr=<SID>SomePrintFile() | 
					
						
							| 
									
										
										
										
											2022-01-29 22:20:48 +00:00
										 |  |  | Otherwise, the expression is evaluated in the context of the script where the | 
					
						
							|  |  |  | option was set, thus script-local items are available. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2008-06-24 20:39:31 +00:00
										 |  |  | simple default header is used, which shows the page number.  The same simple | 
					
						
							|  |  |  | header is used when this option is empty. | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 							*pmbcs-option* | 
					
						
							|  |  |  | 'printmbcharset' 'pmbcs'  string (default "") | 
					
						
							|  |  |  | 			  global | 
					
						
							|  |  |  | Sets the CJK character set to be used when generating CJK output from | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | |:hardcopy|.  The following predefined values are currently recognised by Vim: | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		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 | 
					
						
							| 
									
										
										
										
											2006-04-30 18:54:39 +00:00
										 |  |  | 		MSWINDOWS	Win3.1/95J (JIS X 1997 + NEC + | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 				  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 | 
					
						
							| 
									
										
										
										
											2019-04-21 00:03:35 +02:00
										 |  |  | 		MSWINDOWS		   x | 
					
						
							|  |  |  | 		KANJITALK6		   x | 
					
						
							|  |  |  | 		KANJITALK7		   x | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 				euc-kr	 cp949	ucs-2	utf-8 ~ | 
					
						
							| 
									
										
										
										
											2006-04-30 18:54:39 +00:00
										 |  |  |   Korean	KS_X_1992	   x | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 		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 | 
					
						
							| 
									
										
										
										
											2020-08-30 17:20:20 +02:00
										 |  |  | specify a custom multibyte character set and no check will be made that it is | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | compatible with the value for 'printencoding'.  Vim will look for a file | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 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: | 
					
						
							| 
									
										
										
										
											2006-04-21 22:12:41 +00:00
										 |  |  |   if o: is missing, then use b: | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-30 17:20:20 +02:00
										 |  |  | The following is an example of specifying two multibyte fonts, one for normal | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 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* | 
					
						
							| 
									
										
										
										
											2006-04-30 18:54:39 +00:00
										 |  |  | 'printoptions' 'popt'	string (default "") | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 			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 | 
					
						
							| 
									
										
										
										
											2006-04-30 18:54:39 +00:00
										 |  |  | 			able to print color or grey. | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   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 | 
					
						
							| 
									
										
										
										
											2006-04-30 18:54:39 +00:00
										 |  |  | 			side. | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  |   duplex:short		Print on both sides (when possible), bind on short | 
					
						
							| 
									
										
										
										
											2006-04-30 18:54:39 +00:00
										 |  |  | 			side. | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   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 | 
					
						
							| 
									
										
										
										
											2006-04-30 18:54:39 +00:00
										 |  |  | 			doing N-up postprocessing. | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   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 | 
					
						
							| 
									
										
										
										
											2006-04-30 18:54:39 +00:00
										 |  |  | 			character. | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  |   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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-30 17:20:20 +02:00
										 |  |  | - Multi-byte support - Currently Vim will try to convert multibyte characters | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  |   to the 8-bit encoding specified by 'printencoding' (or latin1 if it is | 
					
						
							|  |  |  |   empty).  Any characters that are not successfully converted are shown as | 
					
						
							| 
									
										
										
										
											2020-08-30 17:20:20 +02:00
										 |  |  |   unknown characters.  Printing will fail if Vim cannot convert the multibyte | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  |   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 | 
					
						
							| 
									
										
										
										
											2007-05-05 17:54:07 +00:00
										 |  |  | to define a font encoding vector is beyond the scope of this help file, but | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | you can find details in the PostScript Language Reference Manual, 3rd Edition, | 
					
						
							|  |  |  | published by Addison-Wesley and available in PDF form at | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | http://www.adobe.com/.  The following describes what you need to do for Vim to | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | locate and use your print character encoding. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.   Decide on a unique name for your encoding vector, one that does not clash | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  |      with any of the recognized or standard encoding names that Vim uses (see | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  |      |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! | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | iv.  Within Vim, set 'printencoding' to your unique encoding name and then | 
					
						
							|  |  |  |      print your file.  Vim will now use your custom print character encoding. | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | Vim will report an error with the resource file if you change the order or | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 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:. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | [Technical explanation for those that know PostScript - Vim looks for a file | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | print character encoding Vim will use.] | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ============================================================================== | 
					
						
							|  |  |  | 5. PostScript CJK Printing			*postscript-cjk-printing* | 
					
						
							|  |  |  | 							*E673* *E674* *E675* | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | Vim supports printing of Chinese, Japanese, and Korean files.  Setting up Vim | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | No CJK fonts are supplied with Vim.  There are some free Korean, Japanese, and | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | Traditional Chinese fonts available at: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   http://examples.oreilly.com/cjkvinfo/adobe/samples/ | 
					
						
							| 
									
										
										
										
											2024-05-11 11:12:40 +02:00
										 |  |  |   https://resources.oreilly.com/examples/9781565922242/ | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-04-30 18:54:39 +00:00
										 |  |  | You can find descriptions of the various fonts in the read me file at | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-11 11:12:40 +02:00
										 |  |  |   https://resources.oreilly.com/examples/9781565922242/-/blob/master/00README | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | in your printout then you should configure Vim to use the Courier font the | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | Vim to output ASCII characters for the ASCII code range with 'printmbfont'. | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-30 17:20:20 +02:00
										 |  |  | It is possible to define your own multibyte character set although this | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  |   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 | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  |   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 | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  |   not support the requested paper size.  By default Vim uses A4 paper.  Find | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  |   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: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-11 11:12:40 +02:00
										 |  |  |     https://www.gnu.org/software/ghostscript | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | - 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/ | 
					
						
							| 
									
										
										
										
											2024-05-11 11:12:40 +02:00
										 |  |  |     https://www.gnu.org/software/gv/ | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   Copies (possibly not the most recent) can be found at: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     http://www.cs.wisc.edu/~ghost/gv/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | OpenVMS | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-11 11:12:40 +02:00
										 |  |  | - Is apparently supported in the main code now (untested). | 
					
						
							|  |  |  |   See (link seems dead): | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     http://wwwthep.physik.uni-mainz.de/~plass/gv/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-17 21:27:18 +01:00
										 |  |  | MS-Windows | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | - GSview.  Obtainable from: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     http://www.cs.wisc.edu/~ghost/gsview/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Linux | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-14 19:29:13 +01:00
										 |  |  | - GSview.  Linux version of the popular MS-Windows previewer. | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  |   Obtainable from: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     http://www.cs.wisc.edu/~ghost/gsview/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | The psnup utility takes an existing PostScript file generated from Vim and | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-25 13:02:57 +01:00
										 |  |  | First generate a PS file with the 'hardcopy' command, then generate new | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-06 20:52:26 +01:00
										 |  |  | There are a couple of points to bear in mind: | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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* | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-04 21:32:54 +01:00
										 |  |  | By default Vim does not do any special processing of formfeed control | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | characters.  Setting the 'printoptions' formfeed item will make Vim recognize | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | Vim will always start printing a line (including a line number if enabled) | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | line of a page then Vim will print a blank page. | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							| 
									
										
										
										
											2017-06-05 14:44:35 +02:00
										 |  |  | Vim processing the end of the line after the formfeed character and moving | 
					
						
							| 
									
										
										
										
											2004-07-10 09:47:34 +00:00
										 |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ============================================================================== | 
					
						
							| 
									
										
										
										
											2018-07-29 15:07:52 +02:00
										 |  |  |  vim:tw=78:ts=8:noet:ft=help:norl: |