Mercurial > vim
annotate runtime/doc/print.txt @ 31920:f1a5e67e9a1b v9.0.1292
patch 9.0.1292: :defer may call the wrong method for an object
Commit: https://github.com/vim/vim/commit/313e4724c3b4f6d7454b45b89da08f83a2a0c77e
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Feb 8 20:55:27 2023 +0000
patch 9.0.1292: :defer may call the wrong method for an object
Problem: :defer may call the wrong method for an object. (Ernie Rael)
Solution: When en object is from a class that extends or implements, figure
out the method to call at runtime. (closes #11910)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 08 Feb 2023 22:00:06 +0100 |
parents | f68f43043842 |
children | 4635e43f2c6f |
rev | line source |
---|---|
30634 | 1 *print.txt* For Vim version 9.0. Last change: 2022 Oct 01 |
15 | 2 |
3 | |
4 VIM REFERENCE MANUAL by Bram Moolenaar | |
5 | |
6 | |
7 Printing *printing* | |
8 | |
9 1. Introduction |print-intro| | |
10 2. Print options |print-options| | |
11 3. PostScript Printing |postscript-printing| | |
12 4. PostScript Printing Encoding |postscript-print-encoding| | |
856 | 13 5. PostScript CJK Printing |postscript-cjk-printing| |
15 | 14 6. PostScript Printing Troubleshooting |postscript-print-trouble| |
15 7. PostScript Utilities |postscript-print-util| | |
16 8. Formfeed Characters |printing-formfeed| | |
17 | |
18 {only available when compiled with the |+printer| feature} | |
19 | |
20 ============================================================================== | |
21 1. Introduction *print-intro* | |
22 | |
23 On MS-Windows Vim can print your text on any installed printer. On other | |
24 systems a PostScript file is produced. This can be directly sent to a | |
25 PostScript printer. For other printers a program like ghostscript needs to be | |
26 used. | |
27 | |
1619 | 28 Note: If you have problems printing with |:hardcopy|, an alternative is to use |
29 |:TOhtml| and print the resulting html file from a browser. | |
30 | |
15 | 31 *:ha* *:hardcopy* *E237* *E238* *E324* |
32 :[range]ha[rdcopy][!] [arguments] | |
33 Send [range] lines (default whole file) to the | |
34 printer. | |
35 | |
36 On MS-Windows a dialog is displayed to allow selection | |
236 | 37 of printer, paper size etc. To skip the dialog, use |
15 | 38 the [!]. In this case the printer defined by |
39 'printdevice' is used, or, if 'printdevice' is empty, | |
40 the system default printer. | |
41 | |
42 For systems other than MS-Windows, PostScript is | |
43 written in a temp file and 'printexpr' is used to | |
44 actually print it. Then [arguments] can be used by | |
45 'printexpr' through |v:cmdarg|. Otherwise [arguments] | |
46 is ignored. 'printoptions' can be used to specify | |
47 paper size, duplex, etc. | |
14519 | 48 Note: If you want PDF, there are tools such as |
49 "ps2pdf" that can convert the PostScript to PDF. | |
15 | 50 |
51 :[range]ha[rdcopy][!] >{filename} | |
52 As above, but write the resulting PostScript in file | |
53 {filename}. | |
54 Things like "%" are expanded |cmdline-special| | |
55 Careful: An existing file is silently overwritten. | |
56 {only available when compiled with the |+postscript| | |
57 feature} | |
58 On MS-Windows use the "print to file" feature of the | |
59 printer driver. | |
60 | |
61 Progress is displayed during printing as a page number and a percentage. To | |
62 abort printing use the interrupt key (CTRL-C or, on MS-systems, CTRL-Break). | |
63 | |
64 Printer output is controlled by the 'printfont' and 'printoptions' options. | |
65 'printheader' specifies the format of a page header. | |
66 | |
67 The printed file is always limited to the selected margins, irrespective of | |
68 the current window's 'wrap' or 'linebreak' settings. The "wrap" item in | |
69 'printoptions' can be used to switch wrapping off. | |
70 The current highlighting colors are used in the printout, with the following | |
71 considerations: | |
236 | 72 1) The normal background is always rendered as white (i.e. blank paper). |
15 | 73 2) White text or the default foreground is rendered as black, so that it shows |
74 up! | |
75 3) If 'background' is "dark", then the colours are darkened to compensate for | |
76 the fact that otherwise they would be too bright to show up clearly on | |
77 white paper. | |
78 | |
79 ============================================================================== | |
80 2. Print options *print-options* | |
81 | |
82 Here are the details for the options that change the way printing is done. | |
83 For generic info about setting options see |options.txt|. | |
84 | |
85 *pdev-option* | |
86 'printdevice' 'pdev' string (default empty) | |
87 global | |
88 This defines the name of the printer to be used when the |:hardcopy| command | |
89 is issued with a bang (!) to skip the printer selection dialog. On Win32, it | |
90 should be the printer name exactly as it appears in the standard printer | |
91 dialog. | |
92 If the option is empty, then vim will use the system default printer for | |
93 ":hardcopy!" | |
94 | |
95 *penc-option* *E620* | |
96 'printencoding' 'penc' String (default empty, except for: | |
18912
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
97 MS-Windows: cp1252, |
15 | 98 Macintosh: mac-roman, |
99 VMS: dec-mcs, | |
100 HPUX: hp-roman8, | |
101 EBCDIC: ebcdic-uk) | |
102 global | |
11473 | 103 Sets the character encoding used when printing. This option tells Vim which |
15 | 104 print character encoding file from the "print" directory in 'runtimepath' to |
105 use. | |
106 | |
107 This option will accept any value from |encoding-names|. Any recognized names | |
11473 | 108 are converted to Vim standard names - see 'encoding' for more details. Names |
109 not recognized by Vim will just be converted to lower case and underscores | |
15 | 110 replaced with '-' signs. |
111 | |
11473 | 112 If 'printencoding' is empty or Vim cannot find the file then it will use |
15878 | 113 'encoding' (if it is set an 8-bit encoding) to find the print character |
114 encoding file. If Vim is unable to find a character encoding file then it | |
115 will use the "latin1" print character encoding file. | |
15 | 116 |
21991 | 117 When 'encoding' is set to a multibyte encoding, Vim will try to convert |
15 | 118 characters to the printing encoding for printing (if 'printencoding' is empty |
119 then the conversion will be to latin1). Conversion to a printing encoding | |
11473 | 120 other than latin1 will require Vim to be compiled with the |+iconv| feature. |
15 | 121 If no conversion is possible then printing will fail. Any characters that |
122 cannot be converted will be replaced with upside down question marks. | |
123 | |
124 Four print character encoding files are provided to support default Mac, VMS, | |
125 HPUX, and EBCDIC character encodings and are used by default on these | |
126 platforms. Code page 1252 print character encoding is used by default on | |
18912
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
127 MS-Windows platform. |
15 | 128 |
129 *pexpr-option* | |
130 'printexpr' 'pexpr' String (default: see below) | |
131 global | |
132 Expression that is evaluated to print the PostScript produced with | |
133 |:hardcopy|. | |
134 The file name to be printed is in |v:fname_in|. | |
135 The arguments to the ":hardcopy" command are in |v:cmdarg|. | |
136 The expression must take care of deleting the file after printing it. | |
137 When there is an error, the expression must return a non-zero number. | |
138 If there is no error, return zero or an empty string. | |
139 The default for non MS-Windows or VMS systems is to simply use "lpr" to print | |
140 the file: > | |
141 | |
27903 | 142 system('lpr' .. (&printdevice == '' ? '' : ' -P' .. &printdevice) |
143 .. ' ' .. v:fname_in) .. delete(v:fname_in) + v:shell_error | |
15 | 144 |
18912
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
145 On MS-Windows machines the default is to copy the file to the currently |
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
146 specified printdevice: > |
15 | 147 |
27903 | 148 system('copy' .. ' ' .. v:fname_in .. (&printdevice == '' |
149 ? ' LPT1:' : (' \"' .. &printdevice .. '\"'))) | |
150 .. delete(v:fname_in) | |
15 | 151 |
152 On VMS machines the default is to send the file to either the default or | |
153 currently specified printdevice: > | |
154 | |
27903 | 155 system('print' .. (&printdevice == '' ? '' : ' /queue=' .. |
156 &printdevice) .. ' ' .. v:fname_in) .. delete(v:fname_in) | |
15 | 157 |
158 If you change this option, using a function is an easy way to avoid having to | |
159 escape all the spaces. Example: > | |
160 | |
30598
37aa9fd2ed72
patch 9.0.0634: evaluating "expr" options has more overhead than needed
Bram Moolenaar <Bram@vim.org>
parents:
29314
diff
changeset
|
161 :set printexpr=PrintFile() |
37aa9fd2ed72
patch 9.0.0634: evaluating "expr" options has more overhead than needed
Bram Moolenaar <Bram@vim.org>
parents:
29314
diff
changeset
|
162 :function PrintFile() |
37aa9fd2ed72
patch 9.0.0634: evaluating "expr" options has more overhead than needed
Bram Moolenaar <Bram@vim.org>
parents:
29314
diff
changeset
|
163 : call system("ghostview " .. v:fname_in) |
37aa9fd2ed72
patch 9.0.0634: evaluating "expr" options has more overhead than needed
Bram Moolenaar <Bram@vim.org>
parents:
29314
diff
changeset
|
164 : call delete(v:fname_in) |
15 | 165 : return v:shell_error |
166 :endfunc | |
167 | |
30598
37aa9fd2ed72
patch 9.0.0634: evaluating "expr" options has more overhead than needed
Bram Moolenaar <Bram@vim.org>
parents:
29314
diff
changeset
|
168 It is more efficient if the option is set to just a function call, |
37aa9fd2ed72
patch 9.0.0634: evaluating "expr" options has more overhead than needed
Bram Moolenaar <Bram@vim.org>
parents:
29314
diff
changeset
|
169 see |expr-option-function|. |
37aa9fd2ed72
patch 9.0.0634: evaluating "expr" options has more overhead than needed
Bram Moolenaar <Bram@vim.org>
parents:
29314
diff
changeset
|
170 |
15 | 171 Be aware that some print programs return control before they have read the |
172 file. If you delete the file too soon it will not be printed. These programs | |
173 usually offer an option to have them remove the file when printing is done. | |
174 *E365* | |
175 If evaluating the expression fails or it results in a non-zero number, you get | |
176 an error message. In that case Vim will delete the file. In the default | |
177 value for non-MS-Windows a trick is used: Adding "v:shell_error" will result | |
178 in a non-zero number when the system() call fails. | |
179 | |
26743
c2c40cefc17b
patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents:
25880
diff
changeset
|
180 If the expression starts with s: or |<SID>|, then it is replaced with the |
c2c40cefc17b
patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents:
25880
diff
changeset
|
181 script ID (|local-function|). Example: > |
c2c40cefc17b
patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents:
25880
diff
changeset
|
182 set printexpr=s:MyPrintFile() |
c2c40cefc17b
patch 8.2.3900: it is not easy to use a script-local function for an option
Bram Moolenaar <Bram@vim.org>
parents:
25880
diff
changeset
|
183 set printexpr=<SID>SomePrintFile() |
27459 | 184 Otherwise, the expression is evaluated in the context of the script where the |
185 option was set, thus script-local items are available. | |
186 | |
15 | 187 This option cannot be set from a |modeline| or in the |sandbox|, for security |
188 reasons. | |
189 | |
190 *pfn-option* *E613* | |
191 'printfont' 'pfn' string (default "courier") | |
192 global | |
193 This is the name of the font that will be used for the |:hardcopy| command's | |
194 output. It has the same format as the 'guifont' option, except that only one | |
195 font may be named, and the special "guifont=*" syntax is not available. | |
196 | |
197 In the Win32 GUI version this specifies a font name with its extra attributes, | |
198 as with the 'guifont' option. | |
199 | |
200 For other systems, only ":h11" is recognized, where "11" is the point size of | |
201 the font. When omitted, the point size is 10. | |
202 | |
203 *pheader-option* | |
204 'printheader' 'pheader' string (default "%<%f%h%m%=Page %N") | |
205 global | |
206 This defines the format of the header produced in |:hardcopy| output. The | |
207 option is defined in the same way as the 'statusline' option. If Vim has not | |
208 been compiled with the |+statusline| feature, this option has no effect and a | |
1619 | 209 simple default header is used, which shows the page number. The same simple |
210 header is used when this option is empty. | |
15 | 211 |
212 *pmbcs-option* | |
213 'printmbcharset' 'pmbcs' string (default "") | |
214 global | |
215 Sets the CJK character set to be used when generating CJK output from | |
11473 | 216 |:hardcopy|. The following predefined values are currently recognised by Vim: |
15 | 217 |
218 Value Description ~ | |
219 Chinese GB_2312-80 | |
220 (Simplified) GBT_12345-90 | |
221 MAC Apple Mac Simplified Chinese | |
222 GBT-90_MAC GB/T 12345-90 Apple Mac Simplified | |
223 Chinese | |
224 GBK GBK (GB 13000.1-93) | |
225 ISO10646 ISO 10646-1:1993 | |
226 | |
227 Chinese CNS_1993 CNS 11643-1993, Planes 1 & 2 | |
228 (Traditional) BIG5 | |
229 ETEN Big5 with ETen extensions | |
230 ISO10646 ISO 10646-1:1993 | |
231 | |
232 Japanese JIS_C_1978 | |
233 JIS_X_1983 | |
234 JIS_X_1990 | |
856 | 235 MSWINDOWS Win3.1/95J (JIS X 1997 + NEC + |
15 | 236 IBM extensions) |
237 KANJITALK6 Apple Mac KanjiTalk V6.x | |
238 KANJITALK7 Apple Mac KanjiTalk V7.x | |
239 | |
240 Korean KS_X_1992 | |
241 MAC Apple Macintosh Korean | |
242 MSWINDOWS KS X 1992 with MS extensions | |
243 ISO10646 ISO 10646-1:1993 | |
244 | |
245 Only certain combinations of the above values and 'printencoding' are | |
246 possible. The following tables show the valid combinations: | |
247 | |
248 euc-cn gbk ucs-2 utf-8 ~ | |
249 Chinese GB_2312-80 x | |
250 (Simplified) GBT_12345-90 x | |
251 MAC x | |
252 GBT-90_MAC x | |
253 GBK x | |
254 ISO10646 x x | |
255 | |
256 euc-tw big5 ucs-2 utf-8 ~ | |
257 Chinese CNS_1993 x | |
258 (Traditional) BIG5 x | |
259 ETEN x | |
260 ISO10646 x x | |
261 | |
262 euc-jp sjis ucs-2 utf-8 ~ | |
263 Japanese JIS_C_1978 x x | |
264 JIS_X_1983 x x | |
265 JIS_X_1990 x x x | |
16380 | 266 MSWINDOWS x |
267 KANJITALK6 x | |
268 KANJITALK7 x | |
15 | 269 |
270 euc-kr cp949 ucs-2 utf-8 ~ | |
856 | 271 Korean KS_X_1992 x |
15 | 272 MAC x |
273 MSWINDOWS x | |
274 ISO10646 x x | |
275 | |
276 To set up the correct encoding and character set for printing some | |
277 Japanese text you would do the following; > | |
278 :set printencoding=euc-jp | |
279 :set printmbcharset=JIS_X_1983 | |
280 | |
281 If 'printmbcharset' is not one of the above values then it is assumed to | |
21991 | 282 specify a custom multibyte character set and no check will be made that it is |
11473 | 283 compatible with the value for 'printencoding'. Vim will look for a file |
15 | 284 defining the character set in the "print" directory in 'runtimepath'. |
285 | |
286 *pmbfn-option* | |
287 'printmbfont' 'pmbfn' string (default "") | |
288 global | |
289 This is a comma-separated list of fields for font names to be used when | |
290 generating CJK output from |:hardcopy|. Each font name has to be preceded | |
291 with a letter indicating the style the font is to be used for as follows: | |
292 | |
293 r:{font-name} font to use for normal characters | |
294 b:{font-name} font to use for bold characters | |
295 i:{font-name} font to use for italic characters | |
296 o:{font-name} font to use for bold-italic characters | |
297 | |
298 A field with the r: prefix must be specified when doing CJK printing. The | |
299 other fontname specifiers are optional. If a specifier is missing then | |
300 another font will be used as follows: | |
301 | |
302 if b: is missing, then use r: | |
303 if i: is missing, then use r: | |
839 | 304 if o: is missing, then use b: |
15 | 305 |
306 Some CJK fonts do not contain characters for codes in the ASCII code range. | |
307 Also, some characters in the CJK ASCII code ranges differ in a few code points | |
308 from traditional ASCII characters. There are two additional fields to control | |
309 printing of characters in the ASCII code range. | |
310 | |
311 c:yes Use Courier font for characters in the ASCII | |
312 c:no (default) code range. | |
313 | |
314 a:yes Use ASCII character set for codes in the ASCII | |
315 a:no (default) code range. | |
316 | |
21991 | 317 The following is an example of specifying two multibyte fonts, one for normal |
15 | 318 and italic printing and one for bold and bold-italic printing, and using |
319 Courier to print codes in the ASCII code range but using the national | |
320 character set: > | |
321 :set printmbfont=r:WadaMin-Regular,b:WadaMin-Bold,c:yes | |
322 < | |
323 *popt-option* | |
856 | 324 'printoptions' 'popt' string (default "") |
15 | 325 global |
326 This is a comma-separated list of items that control the format of the output | |
327 of |:hardcopy|: | |
328 | |
329 left:{spec} left margin (default: 10pc) | |
330 right:{spec} right margin (default: 5pc) | |
331 top:{spec} top margin (default: 5pc) | |
332 bottom:{spec} bottom margin (default: 5pc) | |
333 {spec} is a number followed by "in" for inches, "pt" | |
334 for points (1 point is 1/72 of an inch), "mm" for | |
335 millimeters or "pc" for a percentage of the media | |
336 size. | |
337 Weird example: | |
338 left:2in,top:30pt,right:16mm,bottom:3pc | |
339 If the unit is not recognized there is no error and | |
340 the default value is used. | |
341 | |
342 header:{nr} Number of lines to reserve for the header. | |
343 Only the first line is actually filled, thus when {nr} | |
344 is 2 there is one empty line. The header is formatted | |
345 according to 'printheader'. | |
346 header:0 Do not print a header. | |
347 header:2 (default) Use two lines for the header | |
348 | |
349 syntax:n Do not use syntax highlighting. This is faster and | |
350 thus useful when printing large files. | |
351 syntax:y Do syntax highlighting. | |
352 syntax:a (default) Use syntax highlighting if the printer appears to be | |
856 | 353 able to print color or grey. |
15 | 354 |
355 number:y Include line numbers in the printed output. | |
356 number:n (default) No line numbers. | |
357 | |
358 wrap:y (default) Wrap long lines. | |
359 wrap:n Truncate long lines. | |
360 | |
361 duplex:off Print on one side. | |
362 duplex:long (default) Print on both sides (when possible), bind on long | |
856 | 363 side. |
15 | 364 duplex:short Print on both sides (when possible), bind on short |
856 | 365 side. |
15 | 366 |
367 collate:y (default) Collating: 1 2 3, 1 2 3, 1 2 3 | |
368 collate:n No collating: 1 1 1, 2 2 2, 3 3 3 | |
369 | |
370 jobsplit:n (default) Do all copies in one print job | |
371 jobsplit:y Do each copy as a separate print job. Useful when | |
856 | 372 doing N-up postprocessing. |
15 | 373 |
374 portrait:y (default) Orientation is portrait. | |
375 portrait:n Orientation is landscape. | |
376 *a4* *letter* | |
377 paper:A4 (default) Paper size: A4 | |
378 paper:{name} Paper size from this table: | |
379 {name} size in cm size in inch ~ | |
380 10x14 25.4 x 35.57 10 x 14 | |
381 A3 29.7 x 42 11.69 x 16.54 | |
382 A4 21 x 29.7 8.27 x 11.69 | |
383 A5 14.8 x 21 5.83 x 8.27 | |
384 B4 25 x 35.3 10.12 x 14.33 | |
385 B5 17.6 x 25 7.17 x 10.12 | |
386 executive 18.42 x 26.67 7.25 x 10.5 | |
387 folio 21 x 33 8.27 x 13 | |
388 ledger 43.13 x 27.96 17 x 11 | |
389 legal 21.59 x 35.57 8.5 x 14 | |
390 letter 21.59 x 27.96 8.5 x 11 | |
391 quarto 21.59 x 27.5 8.5 x 10.83 | |
392 statement 13.97 x 21.59 5.5 x 8.5 | |
393 tabloid 27.96 x 43.13 11 x 17 | |
394 | |
395 formfeed:n (default) Treat form feed characters (0x0c) as a normal print | |
856 | 396 character. |
15 | 397 formfeed:y When a form feed character is encountered, continue |
398 printing of the current line at the beginning of the | |
399 first line on a new page. | |
400 | |
401 The item indicated with (default) is used when the item is not present. The | |
402 values are not always used, especially when using a dialog to select the | |
403 printer and options. | |
404 Example: > | |
405 :set printoptions=paper:letter,duplex:off | |
406 | |
407 ============================================================================== | |
408 3. PostScript Printing *postscript-printing* | |
409 *E455* *E456* *E457* *E624* | |
410 Provided you have enough disk space there should be no problems generating a | |
411 PostScript file. You need to have the runtime files correctly installed (if | |
412 you can find the help files, they probably are). | |
413 | |
414 There are currently a number of limitations with PostScript printing: | |
415 | |
416 - 'printfont' - The font name is ignored (the Courier family is always used - | |
417 it should be available on all PostScript printers) but the font size is | |
418 used. | |
419 | |
420 - 'printoptions' - The duplex setting is used when generating PostScript | |
421 output, but it is up to the printer to take notice of the setting. If the | |
422 printer does not support duplex printing then it should be silently ignored. | |
423 Some printers, however, don't print at all. | |
424 | |
425 - 8-bit support - While a number of 8-bit print character encodings are | |
426 supported it is possible that some characters will not print. Whether a | |
427 character will print depends on the font in the printer knowing the | |
428 character. Missing characters will be replaced with an upside down question | |
429 mark, or a space if that character is also not known by the font. It may be | |
430 possible to get all the characters in an encoding to print by installing a | |
431 new version of the Courier font family. | |
432 | |
21991 | 433 - Multi-byte support - Currently Vim will try to convert multibyte characters |
15 | 434 to the 8-bit encoding specified by 'printencoding' (or latin1 if it is |
435 empty). Any characters that are not successfully converted are shown as | |
21991 | 436 unknown characters. Printing will fail if Vim cannot convert the multibyte |
15 | 437 to the 8-bit encoding. |
438 | |
439 ============================================================================== | |
440 4. Custom 8-bit Print Character Encodings *postscript-print-encoding* | |
441 *E618* *E619* | |
442 To use your own print character encoding when printing 8-bit character data | |
443 you need to define your own PostScript font encoding vector. Details on how | |
1121 | 444 to define a font encoding vector is beyond the scope of this help file, but |
15 | 445 you can find details in the PostScript Language Reference Manual, 3rd Edition, |
446 published by Addison-Wesley and available in PDF form at | |
11473 | 447 http://www.adobe.com/. The following describes what you need to do for Vim to |
15 | 448 locate and use your print character encoding. |
449 | |
450 i. Decide on a unique name for your encoding vector, one that does not clash | |
11473 | 451 with any of the recognized or standard encoding names that Vim uses (see |
15 | 452 |encoding-names| for a list), and that no one else is likely to use. |
453 ii. Copy $VIMRUNTIME/print/latin1.ps to the print subdirectory in your | |
454 'runtimepath' and rename it with your unique name. | |
455 iii. Edit your renamed copy of latin1.ps, replacing all occurrences of latin1 | |
456 with your unique name (don't forget the line starting %%Title:), and | |
457 modify the array of glyph names to define your new encoding vector. The | |
458 array must have exactly 256 entries or you will not be able to print! | |
11473 | 459 iv. Within Vim, set 'printencoding' to your unique encoding name and then |
460 print your file. Vim will now use your custom print character encoding. | |
15 | 461 |
11473 | 462 Vim will report an error with the resource file if you change the order or |
15 | 463 content of the first 3 lines, other than the name of the encoding on the line |
464 starting %%Title: or the version number on the line starting %%Version:. | |
465 | |
11473 | 466 [Technical explanation for those that know PostScript - Vim looks for a file |
15 | 467 with the same name as the encoding it will use when printing. The file |
468 defines a new PostScript Encoding resource called /VIM-name, where name is the | |
11473 | 469 print character encoding Vim will use.] |
15 | 470 |
471 ============================================================================== | |
472 5. PostScript CJK Printing *postscript-cjk-printing* | |
473 *E673* *E674* *E675* | |
474 | |
11473 | 475 Vim supports printing of Chinese, Japanese, and Korean files. Setting up Vim |
15 | 476 to correctly print CJK files requires setting up a few more options. |
477 | |
478 Each of these countries has many standard character sets and encodings which | |
479 require that both be specified when printing. In addition, CJK fonts normally | |
480 do not have the concept of italic glyphs and use different weight or stroke | |
481 style to achieve emphasis when printing. This in turn requires a different | |
482 approach to specifying fonts to use when printing. | |
483 | |
484 The encoding and character set are specified with the 'printencoding' and | |
485 'printmbcharset' options. If 'printencoding' is not specified then 'encoding' | |
486 is used as normal. If 'printencoding' is specified then characters will be | |
487 translated to this encoding for printing. You should ensure that the encoding | |
488 is compatible with the character set needed for the file contents or some | |
489 characters may not appear when printed. | |
490 | |
491 The fonts to use for CJK printing are specified with 'printmbfont'. This | |
492 option allows you to specify different fonts to use when printing characters | |
493 which are syntax highlighted with the font styles normal, italic, bold and | |
494 bold-italic. | |
495 | |
11473 | 496 No CJK fonts are supplied with Vim. There are some free Korean, Japanese, and |
15 | 497 Traditional Chinese fonts available at: |
498 | |
499 http://examples.oreilly.com/cjkvinfo/adobe/samples/ | |
500 | |
856 | 501 You can find descriptions of the various fonts in the read me file at |
15 | 502 |
2236
dc2e5ec0500d
Added the undofile() function. Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents:
2154
diff
changeset
|
503 http://examples.oreilly.de/english_examples/cjkvinfo/adobe/00README |
15 | 504 |
505 Please read your printer documentation on how to install new fonts. | |
506 | |
507 CJK fonts can be large containing several thousand glyphs, and it is not | |
508 uncommon to find that they only contain a subset of a national standard. It | |
509 is not unusual to find the fonts to not include characters for codes in the | |
510 ASCII code range. If you find half-width Roman characters are not appearing | |
11473 | 511 in your printout then you should configure Vim to use the Courier font the |
15 | 512 half-width ASCII characters with 'printmbfont'. If your font does not include |
513 other characters then you will need to find another font that does. | |
514 | |
515 Another issue with ASCII characters, is that the various national character | |
516 sets specify a couple of different glyphs in the ASCII code range. If you | |
517 print ASCII text using the national character set you may see some unexpected | |
518 characters. If you want true ASCII code printing then you need to configure | |
11473 | 519 Vim to output ASCII characters for the ASCII code range with 'printmbfont'. |
15 | 520 |
21991 | 521 It is possible to define your own multibyte character set although this |
15 | 522 should not be attempted lightly. A discussion on the process if beyond the |
523 scope of these help files. You can find details on CMap (character map) files | |
524 in the document 'Adobe CMap and CIDFont Files Specification, Version 1.0', | |
525 available from http://www.adobe.com as a PDF file. | |
526 | |
527 ============================================================================== | |
528 6. PostScript Printing Troubleshooting *postscript-print-trouble* | |
529 *E621* | |
530 Usually the only sign of a problem when printing with PostScript is that your | |
531 printout does not appear. If you are lucky you may get a printed page that | |
532 tells you the PostScript operator that generated the error that prevented the | |
533 print job completing. | |
534 | |
535 There are a number of possible causes as to why the printing may have failed: | |
536 | |
537 - Wrong version of the prolog resource file. The prolog resource file | |
11473 | 538 contains some PostScript that Vim needs to be able to print. Each version |
539 of Vim needs one particular version. Make sure you have correctly installed | |
15 | 540 the runtime files, and don't have any old versions of a file called prolog |
541 in the print directory in your 'runtimepath' directory. | |
542 | |
543 - Paper size. Some PostScript printers will abort printing a file if they do | |
11473 | 544 not support the requested paper size. By default Vim uses A4 paper. Find |
15 | 545 out what size paper your printer normally uses and set the appropriate paper |
546 size with 'printoptions'. If you cannot find the name of the paper used, | |
547 measure a sheet and compare it with the table of supported paper sizes listed | |
548 for 'printoptions', using the paper that is closest in both width AND height. | |
549 Note: The dimensions of actual paper may vary slightly from the ones listed. | |
550 If there is no paper listed close enough, then you may want to try psresize | |
551 from PSUtils, discussed below. | |
552 | |
553 - Two-sided printing (duplex). Normally a PostScript printer that does not | |
554 support two-sided printing will ignore any request to do it. However, some | |
555 printers may abort the job altogether. Try printing with duplex turned off. | |
556 Note: Duplex prints can be achieved manually using PS utils - see below. | |
557 | |
558 - Collated printing. As with Duplex printing, most PostScript printers that | |
559 do not support collating printouts will ignore a request to do so. Some may | |
560 not. Try printing with collation turned off. | |
561 | |
562 - Syntax highlighting. Some print management code may prevent the generated | |
563 PostScript file from being printed on a black and white printer when syntax | |
564 highlighting is turned on, even if solid black is the only color used. Try | |
565 printing with syntax highlighting turned off. | |
566 | |
567 A safe printoptions setting to try is: > | |
568 | |
569 :set printoptions=paper:A4,duplex:off,collate:n,syntax:n | |
570 | |
571 Replace "A4" with the paper size that best matches your printer paper. | |
572 | |
573 ============================================================================== | |
574 7. PostScript Utilities *postscript-print-util* | |
575 | |
576 7.1 Ghostscript | |
577 | |
578 Ghostscript is a PostScript and PDF interpreter that can be used to display | |
579 and print on non-PostScript printers PostScript and PDF files. It can also | |
580 generate PDF files from PostScript. | |
581 | |
582 Ghostscript will run on a wide variety of platforms. | |
583 | |
584 There are three available versions: | |
585 | |
586 - AFPL Ghostscript (formerly Aladdin Ghostscript) which is free for | |
587 non-commercial use. It can be obtained from: | |
588 | |
589 http://www.cs.wisc.edu/~ghost/ | |
590 | |
591 - GNU Ghostscript which is available under the GNU General Public License. It | |
592 can be obtained from: | |
593 | |
594 ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/ | |
595 | |
596 - A commercial version for inclusion in commercial products. | |
597 | |
598 Additional information on Ghostscript can also be found at: | |
599 | |
600 http://www.ghostscript.com/ | |
601 | |
602 Support for a number of non PostScript printers is provided in the | |
603 distribution as standard, but if you cannot find support for your printer | |
604 check the Ghostscript site for other printers not included by default. | |
605 | |
606 | |
607 7.2 Ghostscript Previewers. | |
608 | |
609 The interface to Ghostscript is very primitive so a number of graphical front | |
610 ends have been created. These allow easier PostScript file selection, | |
611 previewing at different zoom levels, and printing. Check supplied | |
612 documentation for full details. | |
613 | |
614 X11 | |
615 | |
616 - Ghostview. Obtainable from: | |
617 | |
618 http://www.cs.wisc.edu/~ghost/gv/ | |
619 | |
620 - gv. Derived from Ghostview. Obtainable from: | |
621 | |
622 http://wwwthep.physik.uni-mainz.de/~plass/gv/ | |
623 | |
624 Copies (possibly not the most recent) can be found at: | |
625 | |
626 http://www.cs.wisc.edu/~ghost/gv/ | |
627 | |
628 OpenVMS | |
629 | |
630 - Is apparently supported in the main code now (untested). See: | |
631 | |
632 http://wwwthep.physik.uni-mainz.de/~plass/gv/ | |
633 | |
18912
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
634 MS-Windows |
15 | 635 |
636 - GSview. Obtainable from: | |
637 | |
638 http://www.cs.wisc.edu/~ghost/gsview/ | |
639 | |
640 Linux | |
641 | |
19116 | 642 - GSview. Linux version of the popular MS-Windows previewer. |
15 | 643 Obtainable from: |
644 | |
645 http://www.cs.wisc.edu/~ghost/gsview/ | |
646 | |
647 - BMV. Different from Ghostview and gv in that it doesn't use X but svgalib. | |
648 Obtainable from: | |
649 | |
650 ftp://sunsite.unc.edu/pub/Linux/apps/graphics/viewers/svga/bmv-1.2.tgz | |
651 | |
652 | |
653 7.3 PSUtils | |
654 | |
655 PSUtils is a collection of utility programs for manipulating PostScript | |
656 documents. Binary distributions are available for many platforms, as well as | |
657 the full source. PSUtils can be found at: | |
658 | |
659 http://knackered.org/angus/psutils | |
660 | |
661 The utilities of interest include: | |
662 | |
663 - psnup. Convert PS files for N-up printing. | |
664 - psselect. Select page range and order of printing. | |
665 - psresize. Change the page size. | |
666 - psbook. Reorder and lay out pages ready for making a book. | |
667 | |
668 The output of one program can be used as the input to the next, allowing for | |
669 complex print document creation. | |
670 | |
671 | |
672 N-UP PRINTING | |
673 | |
11473 | 674 The psnup utility takes an existing PostScript file generated from Vim and |
15 | 675 convert it to an n-up version. The simplest way to create a 2-up printout is |
676 to first create a PostScript file with: > | |
677 | |
678 :hardcopy > test.ps | |
679 | |
680 Then on your command line execute: > | |
681 | |
682 psnup -n 2 test.ps final.ps | |
683 | |
684 Note: You may get warnings from some Ghostscript previewers for files produced | |
685 by psnup - these may safely be ignored. | |
686 | |
687 Finally print the file final.ps to your PostScript printer with your | |
688 platform's print command. (You will need to delete the two PostScript files | |
689 afterwards yourself.) 'printexpr' could be modified to perform this extra | |
690 step before printing. | |
691 | |
692 | |
693 ALTERNATE DUPLEX PRINTING | |
694 | |
695 It is possible to achieve a poor man's version of duplex printing using the PS | |
696 utility psselect. This utility has options -e and -o for printing just the | |
697 even or odd pages of a PS file respectively. | |
698 | |
6530 | 699 First generate a PS file with the 'hardcopy' command, then generate new |
15 | 700 files with all the odd and even numbered pages with: > |
701 | |
702 psselect -o test.ps odd.ps | |
703 psselect -e test.ps even.ps | |
704 | |
705 Next print odd.ps with your platform's normal print command. Then take the | |
706 print output, turn it over and place it back in the paper feeder. Now print | |
707 even.ps with your platform's print command. All the even pages should now | |
708 appear on the back of the odd pages. | |
709 | |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
710 There are a couple of points to bear in mind: |
15 | 711 |
712 1. Position of the first page. If the first page is on top of the printout | |
713 when printing the odd pages then you need to reverse the order that the odd | |
714 pages are printed. This can be done with the -r option to psselect. This | |
715 will ensure page 2 is printed on the back of page 1. | |
716 Note: it is better to reverse the odd numbered pages rather than the even | |
717 numbered in case there are an odd number of pages in the original PS file. | |
718 | |
719 2. Paper flipping. When turning over the paper with the odd pages printed on | |
720 them you may have to either flip them horizontally (along the long edge) or | |
721 vertically (along the short edge), as well as possibly rotating them 180 | |
722 degrees. All this depends on the printer - it will be more obvious for | |
723 desktop ink jets than for small office laser printers where the paper path | |
724 is hidden from view. | |
725 | |
726 | |
727 ============================================================================== | |
728 8. Formfeed Characters *printing-formfeed* | |
729 | |
25880 | 730 By default Vim does not do any special processing of formfeed control |
11473 | 731 characters. Setting the 'printoptions' formfeed item will make Vim recognize |
15 | 732 formfeed characters and continue printing the current line at the beginning |
733 of the first line on a new page. The use of formfeed characters provides | |
734 rudimentary print control but there are certain things to be aware of. | |
735 | |
11473 | 736 Vim will always start printing a line (including a line number if enabled) |
15 | 737 containing a formfeed character, even if it is the first character on the |
738 line. This means if a line starting with a formfeed character is the first | |
11473 | 739 line of a page then Vim will print a blank page. |
15 | 740 |
741 Since the line number is printed at the start of printing the line containing | |
742 the formfeed character, the remainder of the line printed on the new page | |
743 will not have a line number printed for it (in the same way as the wrapped | |
744 lines of a long line when wrap in 'printoptions' is enabled). | |
745 | |
746 If the formfeed character is the last character on a line, then printing will | |
747 continue on the second line of the new page, not the first. This is due to | |
11473 | 748 Vim processing the end of the line after the formfeed character and moving |
15 | 749 down a line to continue printing. |
750 | |
751 Due to the points made above it is recommended that when formfeed character | |
752 processing is enabled, printing of line numbers is disabled, and that form | |
753 feed characters are not the last character on a line. Even then you may need | |
754 to adjust the number of lines before a formfeed character to prevent | |
755 accidental blank pages. | |
756 | |
757 ============================================================================== | |
14421 | 758 vim:tw=78:ts=8:noet:ft=help:norl: |