diff options
| author | Gerd Moellmann | 2000-11-02 12:04:59 +0000 |
|---|---|---|
| committer | Gerd Moellmann | 2000-11-02 12:04:59 +0000 |
| commit | 4b3eb10f1789adcc93f7a3220c722ef75f53c424 (patch) | |
| tree | 6b82be983909d6a1016f1f1992e707fb6f2fdc24 | |
| parent | 7da794dfa0f564372d4713783d1b7f5640f9625f (diff) | |
| download | emacs-4b3eb10f1789adcc93f7a3220c722ef75f53c424.tar.gz emacs-4b3eb10f1789adcc93f7a3220c722ef75f53c424.zip | |
Extension for even/odd printing. Doc Fix.
(ps-print-version): New version number (6.3.1).
(ps-even-or-odd-pages): Customization fix.
(ps-print-page-p, ps-begin-file, ps-begin-job, ps-page-number)
(ps-header-sheet, ps-header-page, ps-end-job): Code fix.
(ps-page-count): Var replaced by `ps-page-column'.
(ps-page-column, ps-page-sheet, ps-page-printed): New vars.
(ps-print-sheet-p): New fun.
| -rw-r--r-- | lisp/ChangeLog | 11 | ||||
| -rw-r--r-- | lisp/ps-print.el | 132 |
2 files changed, 104 insertions, 39 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7a4d9519d53..deeffa28be1 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,14 @@ | |||
| 1 | 2000-11-02 Vinicius Jose Latorre <vinicius@cpqd.com.br> | ||
| 2 | |||
| 3 | * ps-print.el: Extension for even/odd printing. Doc Fix. | ||
| 4 | (ps-print-version): New version number (6.3.1). | ||
| 5 | (ps-even-or-odd-pages): Customization fix. | ||
| 6 | (ps-print-page-p, ps-begin-file, ps-begin-job, ps-page-number) | ||
| 7 | (ps-header-sheet, ps-header-page, ps-end-job): Code fix. | ||
| 8 | (ps-page-count): Var replaced by `ps-page-column'. | ||
| 9 | (ps-page-column, ps-page-sheet, ps-page-printed): New vars. | ||
| 10 | (ps-print-sheet-p): New fun. | ||
| 11 | |||
| 1 | 2000-11-02 Miles Bader <miles@lsi.nec.co.jp> | 12 | 2000-11-02 Miles Bader <miles@lsi.nec.co.jp> |
| 2 | 13 | ||
| 3 | * tooltip.el (tooltip-gud-tips-setup): New function. | 14 | * tooltip.el (tooltip-gud-tips-setup): New function. |
diff --git a/lisp/ps-print.el b/lisp/ps-print.el index 8d46574755f..41708bd3b10 100644 --- a/lisp/ps-print.el +++ b/lisp/ps-print.el | |||
| @@ -9,12 +9,12 @@ | |||
| 9 | ;; Maintainer: Kenichi Handa <handa@etl.go.jp> (multi-byte characters) | 9 | ;; Maintainer: Kenichi Handa <handa@etl.go.jp> (multi-byte characters) |
| 10 | ;; Maintainer: Vinicius Jose Latorre <vinicius@cpqd.com.br> | 10 | ;; Maintainer: Vinicius Jose Latorre <vinicius@cpqd.com.br> |
| 11 | ;; Keywords: wp, print, PostScript | 11 | ;; Keywords: wp, print, PostScript |
| 12 | ;; Time-stamp: <2000/10/28 23:38:44 Vinicius> | 12 | ;; Time-stamp: <2000/11/01 14:39:00 vinicius> |
| 13 | ;; Version: 6.3 | 13 | ;; Version: 6.3.1 |
| 14 | ;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/ | 14 | ;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/ |
| 15 | 15 | ||
| 16 | (defconst ps-print-version "6.3" | 16 | (defconst ps-print-version "6.3.1" |
| 17 | "ps-print.el, v 6.3 <2000/10/28 vinicius> | 17 | "ps-print.el, v 6.3.1 <2000/10/30 vinicius> |
| 18 | 18 | ||
| 19 | Vinicius's last change version -- this file may have been edited as part of | 19 | Vinicius's last change version -- this file may have been edited as part of |
| 20 | Emacs without changes to the version number. When reporting bugs, please also | 20 | Emacs without changes to the version number. When reporting bugs, please also |
| @@ -275,12 +275,18 @@ Please send all bug fixes and enhancements to | |||
| 275 | ;; | 275 | ;; |
| 276 | ;; nil print all pages. | 276 | ;; nil print all pages. |
| 277 | ;; | 277 | ;; |
| 278 | ;; even print only even pages. | 278 | ;; even-page print only even pages. |
| 279 | ;; | 279 | ;; |
| 280 | ;; odd print only odd pages. | 280 | ;; odd-page print only odd pages. |
| 281 | ;; | ||
| 282 | ;; even-sheet print only even sheets. | ||
| 283 | ;; | ||
| 284 | ;; odd-sheet print only odd sheets. | ||
| 281 | ;; | 285 | ;; |
| 282 | ;; Any other value is treated as nil. The default value is nil. | 286 | ;; Any other value is treated as nil. The default value is nil. |
| 283 | ;; | 287 | ;; |
| 288 | ;; See `ps-even-or-odd-pages' for more detailed documentation. | ||
| 289 | ;; | ||
| 284 | ;; | 290 | ;; |
| 285 | ;; Horizontal layout | 291 | ;; Horizontal layout |
| 286 | ;; ----------------- | 292 | ;; ----------------- |
| @@ -1743,9 +1749,19 @@ Valid values are: | |||
| 1743 | 1749 | ||
| 1744 | nil print all pages. | 1750 | nil print all pages. |
| 1745 | 1751 | ||
| 1746 | `even' print only even pages. | 1752 | `even-page' print only even pages. |
| 1753 | |||
| 1754 | `odd-page' print only odd pages. | ||
| 1755 | |||
| 1756 | `even-sheet' print only even sheets. | ||
| 1757 | That is, if `ps-n-up-printing' is 1, it behaves as `even'; but | ||
| 1758 | for values greater than 1, it'll print only the even sheet of | ||
| 1759 | paper. | ||
| 1747 | 1760 | ||
| 1748 | `odd' print only odd pages. | 1761 | `odd-sheet' print only odd sheets. |
| 1762 | That is, if `ps-n-up-printing' is 1, it behaves as `odd'; but | ||
| 1763 | for values greater than 1, it'll print only the odd sheet of | ||
| 1764 | paper. | ||
| 1749 | 1765 | ||
| 1750 | Any other value is treated as nil. | 1766 | Any other value is treated as nil. |
| 1751 | 1767 | ||
| @@ -1753,19 +1769,35 @@ If you set `ps-selected-pages' (see it for documentation), first the pages are | |||
| 1753 | filtered by `ps-selected-pages' and then by `ps-even-or-odd-pages'. For | 1769 | filtered by `ps-selected-pages' and then by `ps-even-or-odd-pages'. For |
| 1754 | example, if we have: | 1770 | example, if we have: |
| 1755 | 1771 | ||
| 1756 | (setq ps-selected-pages '(1 4 (6 . 10) 12)) | 1772 | (setq ps-selected-pages '(1 4 (6 . 10) (12 . 16) 20)) |
| 1757 | 1773 | ||
| 1758 | We have the following results: | 1774 | Combining with `ps-even-or-odd-pages' and `ps-n-up-printing', we have: |
| 1759 | 1775 | ||
| 1776 | `ps-n-up-printing' = 1: | ||
| 1760 | `ps-even-or-odd-pages' PAGES PRINTED | 1777 | `ps-even-or-odd-pages' PAGES PRINTED |
| 1761 | nil 1, 4, 6, 7, 8, 9, 10, 12 | 1778 | nil 1, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 20 |
| 1762 | even 4, 6, 8, 10, 12 | 1779 | even-page 4, 6, 8, 10, 12, 14, 16, 20 |
| 1763 | odd 1, 7, 9" | 1780 | odd-page 1, 7, 9, 13, 15 |
| 1781 | even-sheet 4, 6, 8, 10, 12, 14, 16, 20 | ||
| 1782 | odd-sheet 1, 7, 9, 13, 15 | ||
| 1783 | |||
| 1784 | `ps-n-up-printing' = 2: | ||
| 1785 | `ps-even-or-odd-pages' PAGES PRINTED | ||
| 1786 | nil 1/4, 6/7, 8/9, 10/12, 13/14, 15/16, 20 | ||
| 1787 | even-page 4/6, 8/10, 12/14, 16/20 | ||
| 1788 | odd-page 1/7, 9/13, 15 | ||
| 1789 | even-sheet 6/7, 10/12, 15/16 | ||
| 1790 | odd-sheet 1/4, 8/9, 13/14, 20 | ||
| 1791 | |||
| 1792 | So even-page/odd-page are about page parity and even-sheet/odd-sheet are about | ||
| 1793 | sheet parity." | ||
| 1764 | :type '(choice :menu-tag "Print Even/Odd Pages" | 1794 | :type '(choice :menu-tag "Print Even/Odd Pages" |
| 1765 | :tag "Print Even/Odd Pages" | 1795 | :tag "Print Even/Odd Pages" |
| 1766 | (const :tag "All Pages" nil) | 1796 | (const :tag "All Pages" nil) |
| 1767 | (const :tag "Only Even Pages" even) | 1797 | (const :tag "Only Even Pages" even-page) |
| 1768 | (const :tag "Only Odd Pages" odd)) | 1798 | (const :tag "Only Odd Pages" odd-page) |
| 1799 | (const :tag "Only Even Sheets" even-sheet) | ||
| 1800 | (const :tag "Only Odd Sheets" odd-sheet)) | ||
| 1769 | :group 'ps-print-page) | 1801 | :group 'ps-print-page) |
| 1770 | 1802 | ||
| 1771 | (defcustom ps-print-control-characters 'control-8-bit | 1803 | (defcustom ps-print-control-characters 'control-8-bit |
| @@ -3080,10 +3112,12 @@ The table depends on the current ps-print setup." | |||
| 3080 | (defvar ps-output-head nil) | 3112 | (defvar ps-output-head nil) |
| 3081 | (defvar ps-output-tail nil) | 3113 | (defvar ps-output-tail nil) |
| 3082 | 3114 | ||
| 3083 | (defvar ps-page-postscript 0) | 3115 | (defvar ps-page-postscript 0) ; page number |
| 3084 | (defvar ps-page-order 0) | 3116 | (defvar ps-page-order 0) ; PostScript page counter |
| 3085 | (defvar ps-page-count 0) | 3117 | (defvar ps-page-sheet 0) ; sheet counter |
| 3086 | (defvar ps-page-n-up 0) | 3118 | (defvar ps-page-column 0) ; column counter |
| 3119 | (defvar ps-page-printed 0) ; total pages printed | ||
| 3120 | (defvar ps-page-n-up 0) ; n-up counter | ||
| 3087 | (defvar ps-showline-count 1) | 3121 | (defvar ps-showline-count 1) |
| 3088 | (defvar ps-first-page nil) | 3122 | (defvar ps-first-page nil) |
| 3089 | (defvar ps-last-page nil) | 3123 | (defvar ps-last-page nil) |
| @@ -3733,14 +3767,24 @@ page-height == bm + print-height + tm - ho - hh | |||
| 3733 | (<= ps-page-postscript ps-last-page))) | 3767 | (<= ps-page-postscript ps-last-page))) |
| 3734 | (t | 3768 | (t |
| 3735 | nil)) | 3769 | nil)) |
| 3736 | (cond ((eq ps-even-or-odd-pages 'even) | 3770 | (cond ((eq ps-even-or-odd-pages 'even-page) |
| 3737 | (= (logand ps-page-postscript 1) 0)) | 3771 | (= (logand ps-page-postscript 1) 0)) |
| 3738 | ((eq ps-even-or-odd-pages 'odd) | 3772 | ((eq ps-even-or-odd-pages 'odd-page) |
| 3739 | (= (logand ps-page-postscript 1) 1)) | 3773 | (= (logand ps-page-postscript 1) 1)) |
| 3740 | (t) | 3774 | (t) |
| 3741 | )))) | 3775 | )))) |
| 3742 | 3776 | ||
| 3743 | 3777 | ||
| 3778 | (defun ps-print-sheet-p () | ||
| 3779 | (setq ps-print-page-p | ||
| 3780 | (cond ((eq ps-even-or-odd-pages 'even-sheet) | ||
| 3781 | (= (logand ps-page-sheet 1) 0)) | ||
| 3782 | ((eq ps-even-or-odd-pages 'odd-sheet) | ||
| 3783 | (= (logand ps-page-sheet 1) 1)) | ||
| 3784 | (t) | ||
| 3785 | ))) | ||
| 3786 | |||
| 3787 | |||
| 3744 | (defun ps-output (&rest args) | 3788 | (defun ps-output (&rest args) |
| 3745 | (when ps-print-page-p | 3789 | (when ps-print-page-p |
| 3746 | (setcdr ps-output-tail args) | 3790 | (setcdr ps-output-tail args) |
| @@ -4420,7 +4464,9 @@ XSTART YSTART are the relative position for the first page in a sheet.") | |||
| 4420 | (ps-get-page-dimensions) | 4464 | (ps-get-page-dimensions) |
| 4421 | (setq ps-page-postscript 0 | 4465 | (setq ps-page-postscript 0 |
| 4422 | ps-page-order 0 | 4466 | ps-page-order 0 |
| 4467 | ps-page-sheet 0 | ||
| 4423 | ps-page-n-up 0 | 4468 | ps-page-n-up 0 |
| 4469 | ps-page-printed 0 | ||
| 4424 | ps-print-page-p t | 4470 | ps-print-page-p t |
| 4425 | ps-background-text-count 0 | 4471 | ps-background-text-count 0 |
| 4426 | ps-background-image-count 0 | 4472 | ps-background-image-count 0 |
| @@ -4734,7 +4780,7 @@ XSTART YSTART are the relative position for the first page in a sheet.") | |||
| 4734 | (delete-region (match-beginning 0) (point-max)))) | 4780 | (delete-region (match-beginning 0) (point-max)))) |
| 4735 | ;; miscellaneous | 4781 | ;; miscellaneous |
| 4736 | (setq ps-showline-count (car ps-printing-region) | 4782 | (setq ps-showline-count (car ps-printing-region) |
| 4737 | ps-page-count 0 | 4783 | ps-page-column 0 |
| 4738 | ps-font-size-internal (ps-get-font-size 'ps-font-size) | 4784 | ps-font-size-internal (ps-get-font-size 'ps-font-size) |
| 4739 | ps-header-font-size-internal (ps-get-font-size 'ps-header-font-size) | 4785 | ps-header-font-size-internal (ps-get-font-size 'ps-header-font-size) |
| 4740 | ps-header-title-font-size-internal | 4786 | ps-header-title-font-size-internal |
| @@ -4769,8 +4815,8 @@ XSTART YSTART are the relative position for the first page in a sheet.") | |||
| 4769 | 4815 | ||
| 4770 | (defun ps-page-number () | 4816 | (defun ps-page-number () |
| 4771 | (if ps-print-only-one-header | 4817 | (if ps-print-only-one-header |
| 4772 | (1+ (/ (1- ps-page-count) ps-number-of-columns)) | 4818 | (1+ (/ (1- ps-page-column) ps-number-of-columns)) |
| 4773 | ps-page-count)) | 4819 | ps-page-column)) |
| 4774 | 4820 | ||
| 4775 | 4821 | ||
| 4776 | (defun ps-next-page () | 4822 | (defun ps-next-page () |
| @@ -4781,25 +4827,28 @@ XSTART YSTART are the relative position for the first page in a sheet.") | |||
| 4781 | 4827 | ||
| 4782 | (defun ps-header-sheet () | 4828 | (defun ps-header-sheet () |
| 4783 | ;; Print only when a new sheet begins. | 4829 | ;; Print only when a new sheet begins. |
| 4784 | (setq ps-page-order (1+ ps-page-order)) | 4830 | (and ps-print-page-p (> ps-page-sheet 0) |
| 4785 | (and (> ps-page-order 1) | ||
| 4786 | (ps-output "EndSheet\n")) | 4831 | (ps-output "EndSheet\n")) |
| 4787 | (ps-output (if ps-n-up-on | 4832 | (setq ps-page-sheet (1+ ps-page-sheet)) |
| 4788 | (format "\n%%%%Page: (%d \\(%d\\)) %d\n" | 4833 | (when (ps-print-sheet-p) |
| 4789 | ps-page-order ps-page-postscript ps-page-order) | 4834 | (setq ps-page-order (1+ ps-page-order)) |
| 4790 | (format "\n%%%%Page: %d %d\n" | 4835 | (ps-output (if ps-n-up-on |
| 4791 | ps-page-postscript ps-page-order)) | 4836 | (format "\n%%%%Page: (%d \\(%d\\)) %d\n" |
| 4792 | (format "%d BeginSheet\nBeginDSCPage\n" | 4837 | ps-page-order ps-page-postscript ps-page-order) |
| 4793 | ps-n-up-printing))) | 4838 | (format "\n%%%%Page: %d %d\n" |
| 4839 | ps-page-postscript ps-page-order)) | ||
| 4840 | (format "%d BeginSheet\nBeginDSCPage\n" | ||
| 4841 | ps-n-up-printing)))) | ||
| 4794 | 4842 | ||
| 4795 | 4843 | ||
| 4796 | (defun ps-header-page () | 4844 | (defun ps-header-page () |
| 4797 | ;; set total line and page number when printing has finished | 4845 | ;; set total line and page number when printing has finished |
| 4798 | ;; (see `ps-generate') | 4846 | ;; (see `ps-generate') |
| 4799 | (if (zerop (mod ps-page-count ps-number-of-columns)) | 4847 | (if (zerop (mod ps-page-column ps-number-of-columns)) |
| 4800 | (progn | 4848 | (progn |
| 4801 | (setq ps-page-postscript (1+ ps-page-postscript)) | 4849 | (setq ps-page-postscript (1+ ps-page-postscript)) |
| 4802 | (when (ps-print-page-p) | 4850 | (when (ps-print-page-p) |
| 4851 | (ps-print-sheet-p) | ||
| 4803 | (if (zerop (mod ps-page-n-up ps-n-up-printing)) | 4852 | (if (zerop (mod ps-page-n-up ps-n-up-printing)) |
| 4804 | ;; Print only when a new sheet begins. | 4853 | ;; Print only when a new sheet begins. |
| 4805 | (progn | 4854 | (progn |
| @@ -4809,11 +4858,13 @@ XSTART YSTART are the relative position for the first page in a sheet.") | |||
| 4809 | (ps-output "BeginDSCPage\n") | 4858 | (ps-output "BeginDSCPage\n") |
| 4810 | (run-hooks 'ps-print-begin-page-hook)) | 4859 | (run-hooks 'ps-print-begin-page-hook)) |
| 4811 | (ps-background ps-page-postscript) | 4860 | (ps-background ps-page-postscript) |
| 4812 | (setq ps-page-n-up (1+ ps-page-n-up)))) | 4861 | (setq ps-page-n-up (1+ ps-page-n-up)) |
| 4862 | (and ps-print-page-p | ||
| 4863 | (setq ps-page-printed (1+ ps-page-printed))))) | ||
| 4813 | ;; Print only when a new column begins. | 4864 | ;; Print only when a new column begins. |
| 4814 | (ps-output "BeginDSCPage\n") | 4865 | (ps-output "BeginDSCPage\n") |
| 4815 | (run-hooks 'ps-print-begin-column-hook)) | 4866 | (run-hooks 'ps-print-begin-column-hook)) |
| 4816 | (setq ps-page-count (1+ ps-page-count))) | 4867 | (setq ps-page-column (1+ ps-page-column))) |
| 4817 | 4868 | ||
| 4818 | (defun ps-begin-page () | 4869 | (defun ps-begin-page () |
| 4819 | (ps-get-page-dimensions) | 4870 | (ps-get-page-dimensions) |
| @@ -5395,10 +5446,11 @@ If FACE is not a valid face name, it is used default face." | |||
| 5395 | 5446 | ||
| 5396 | 5447 | ||
| 5397 | (defun ps-end-job (needs-begin-file) | 5448 | (defun ps-end-job (needs-begin-file) |
| 5398 | (let ((ps-print-page-p t)) | 5449 | (let ((previous-print ps-print-page-p) |
| 5450 | (ps-print-page-p t)) | ||
| 5399 | (ps-flush-output) | 5451 | (ps-flush-output) |
| 5400 | (save-excursion | 5452 | (save-excursion |
| 5401 | (let ((pages-per-sheet (mod ps-page-n-up ps-n-up-printing)) | 5453 | (let ((pages-per-sheet (mod ps-page-printed ps-n-up-printing)) |
| 5402 | (total-lines (cdr ps-printing-region)) | 5454 | (total-lines (cdr ps-printing-region)) |
| 5403 | (total-pages (ps-page-number)) | 5455 | (total-pages (ps-page-number)) |
| 5404 | case-fold-search) | 5456 | case-fold-search) |
| @@ -5421,7 +5473,9 @@ If FACE is not a valid face name, it is used default face." | |||
| 5421 | "/PrintLineNumber false def\nBeginPage\n") | 5473 | "/PrintLineNumber false def\nBeginPage\n") |
| 5422 | (ps-end-page))) | 5474 | (ps-end-page))) |
| 5423 | ;; Set end of PostScript file | 5475 | ;; Set end of PostScript file |
| 5424 | (ps-output "EndSheet\n\n%%Trailer\n%%Pages: " | 5476 | (and previous-print |
| 5477 | (ps-output "EndSheet\n")) | ||
| 5478 | (ps-output "\n%%Trailer\n%%Pages: " | ||
| 5425 | (number-to-string | 5479 | (number-to-string |
| 5426 | (if (and needs-begin-file | 5480 | (if (and needs-begin-file |
| 5427 | ps-banner-page-when-duplexing) | 5481 | ps-banner-page-when-duplexing) |