File: README.markpage%2Btoc%2Bprintdvi

package info (click to toggle)
xdvik-ja 22.84.16-j1.40%2Bt1lib-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, wheezy
  • size: 16,628 kB
  • ctags: 10,310
  • sloc: ansic: 88,999; sh: 5,309; makefile: 1,031; perl: 245; lisp: 244
file content (200 lines) | stat: -rw-r--r-- 11,111 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200

        << xdvi-17+markpage+toc+printdvi patch について >>

					1993/09/13
					小野 康一
					onono@fuka.info.waseda.ac.jp

○xdvi-17+markpage+toc+printdvi patch とは
  xdvi-17 + miyu-patch for xdvi PL17 に対するパッチです。このパッチをあ
  てて作った xdvi では、以下のような機能を使うことができます。

  1) Use_MARKPAGE
  ページマーキング機能を、GNU Emacs のマークリング風に実現したものです。
  ページのマーク(`m',`a')/アンマーク(`U',`A')、マークしたページへの移動
  (`'',``')、マークしたページとカレントページとの交換('"')、マークを伴う
  ページジャンプ('<','>')などを行なえます。
  また、2) の toc からのマーキングも可能です。

  2) Use_TOC
  ページ番号リストを表示し、マウスでそのページをクリックすることで、その
  ページへ移動(左ボタン)、そのページをマーク(真中ボタン)、アンマーク(右
  ボタン)することができます。ドラッグにより、連続するページをマーク/アン
  マークすることもできます。

  3) Use_PRINTDVI
  `o' または Print ボタンで Print-out メニューがポップアップします。ファ
  イル全体の出力やカレントページ、最後にマークしたページ、リージョン(カ
  レントページと最後にマークしたページとの間のページ)、マークした全部の
  ページをメニューから選択して出力できます。

○動作を確認した環境
	SunOS 4.1.3 / sun4c マシン(SPARCstationシリーズ)

○インストールについて

  まず, xdvi PL17 のソース・ファイルである xdvi-17.tar.gz と
  それに対するパッチ xdvi-17miyu.patch-beta4.gz (*1)、そして
  当該パッチ xdvi-17+markpage+toc+printdvi.patch を用意します。

  次に, 作業ディレクトリを作成して, そのディレクトリに移った後,
  xdvi-17.tar.gz を展開します。そのまま, ディレクトリを移動しないで,
  xdvi-17miyu.patch-beta4.gz を用いてパッチをあてます。
  このとき, GNU のツールである gzip および patch が必要となります (*2)。
  さらに xdvi-17+markpage+toc+printdvi.patch を用いてパッチをあてます。

  あとは, システムに応じて Imakefile を編集した後,
  xmkmf を実行して Makefile を生成して, make を実行します。

  なお、miyu-patch for xdvi PL17 については、README.miyu-patch をよく読
  んでください。

  (*1) これらは,
       ftp.tohoku.ac.jp[130.34.8.9]:~ftp/pub/tex/dviwares/xdvi/PL17 などの
       anonymous ftp などから入手できます。
  (*2) これらは,
       ftp.waseda.ac.jp[133.9.1.32]:~ftp/pub/GNU/prep 以下、または、
       ftp.ecei.tohoku.ac.jp[130.34.222.67]:~ftp/pub/GNU/gzip および
       ftp.ecei.tohoku.ac.jp[130.34.222.67]:~ftp/pub/GNU/patch 以下にあります。

○Use_MARKPAGE および Use_TOC について
  つけられるマークの最大数を 1024、DVI ファイルの最大ページ数も同じく
  1024 としてあります。これを越えることはまずないと思いますが、もし変更
  する場合は、Imakefile の RINGSIZE および MAX_PAGE を修正してください。

○Use_PRINTDVI について
  Imakefile の Use_PRINTDVI のところは、自己サイトの環境に合わせて変更し
  てください。%d などの意味については、print.h の最初の方のコメントに書
  いてあります。また、デフォルトでは dvi2ps や dviselect を用いるように
  書いてあります。このように、必要なページを切り出したり、プリンタ出力形
  式へ変換する作業は xdvi の内部で行なわず、外部コマンドで処理するような
  仕様にしました。したがって、これらのコマンドをあらかじめインストールし
  ておかないと、xdvi からの出力ができません。dvi2ps, dvips, jdvi2kps,
  dviselect など、自己サイトの環境に合ったコマンドをインストールし、それ
  に合わせて Imakefile を修正した上で xdvi を作ってください。
  また、デフォルトでは lpr に -v オプションを与えていません。PostScript
  プリンタ用のフィルタによっては -v オプションをつける必要があるかも知れ
  ません。
  また、デフォルトでは dvi2ps の出力を lpr の標準入力にパイプで与えてい
  ます。lpr によっては、出力データが 1Mbyte を越えるとそれ以降を切り捨て
  て出力するような仕様になっているかも知れません。そのような場合は、
  dvi2ps の出力を一旦テンポラリファイル(/tmp/%F:%c@%r.ps など)にリダイレ
  クトし、それを lpr -s で出力し、終了後に rm するようにすればいいでしょ
  う。ただし、-s の場合、スプーリングせずに出力するため、出力が完了する
  までそのファイルを消せません。出力完了まで待って rm する、という手続き
  を簡単には書けないと思うので、デフォルトでは lpr の標準入力に与える方
  法を採りました。1Mbyte を越えるくらいたくさんのページを出力するような
  場合は、xdvi の中から出力せずにシェルのコマンドラインから
	% dvi2ps file.dvi > /tmp/file.ps
	% lpr -s /tmp/file.ps
	(出力完了後)
	% rm /tmp/file.ps
  とした方がいいような気がします:-)

○内部変数(%f など)の意味
  print.h の最初の方のコメントにも書いてありますが、簡単に説明しておきま
  す。Imakefile 中の PRCMD??? という変数は
	PRCMDLST="(cd %d; dviselect -i %F -o /tmp/%F:%t@%r.dvi %A; dvi2ps /tmp/%F:%t@%r.dvi) | lpr -P%p -J'%F (Page %t)'; /bin/rm /tmp/%F:%t@%r.dvi"
	/* all marked pages */
  のように、% 表記の内部変数が用いられています。これは、DVI ファイルの出
  力時に解釈されて実行されるコマンド文字列です。
    PRCMDALL  DVI ファイルの全部を出力(する時に用いられるコマンド文字列)
    PRCMDCUR  カレントページ(現在表示しているページ)を出力
    PRCMDMRK  最後にマークしたページを出力
    PRCMDRGN  リージョン(カレントページと最後にマークしたページで挟まれ
              ている区間)内のすべてのページを出力
    PRCMDLST  マークしたすべてのページを出力
  これらのコマンドは、Print-out メニューで選択する項目
	All pages
	Current page
	Marked page
	Region
	All marked pages
  にそれぞれ対応しています。
  コマンド文字列の解釈は、% 表記の内部変数を展開することによって行なわれ
  ます。各内部変数の意味は次の通りです。
    %f : 現在参照している DVI ファイルのファイル名(フルパス名)
    %F : 現在参照している DVI ファイルのファイル名(basename)
    %d : 現在参照している DVI ファイルが置かれているディレクトリ名
         ( %f = %d/%F )
    %p : プリンタ名(環境変数 PRINTER が定義されていればその値。また、
         Print-menu で設定されるならその値)
    %r : xdvi のプロセス ID
  以下はページ番号に関する内部変数です。すべて絶対ページ番号(先頭ページ
  を1として単調増加するページ番号。\count に左右されない)で表記します。
    %c : カレントページ番号
    %m : 最後にマークしたページ番号
    %s : リージョンの開始ページ番号(%c と %m の最小値)
    %e : リージョンの終了ページ番号(%c と %m の最大値)
    %l : マークしたページ番号リスト(マーク順); 各ページ番号は ',' で区切
         られている
    %L : マークしたページ番号リスト(マーク順); 各ページ番号は ' ' で区切
         られている
    %t : マークしたページ番号リスト(ソートされている); 各ページ番号は
         ',' で区切られている
    %T : マークしたページ番号リスト(ソートされている); 各ページ番号は
         ' ' で区切られている
    %k : %l と同様、ただし、各ページ番号の前に '=' が置かれている
         (dviselect を仮定している)
    %K : %L と同様、ただし、各ページ番号の前に '=' が置かれている
         (dviselect を仮定している)
    %a : %t と同様、ただし、各ページ番号の前に '=' が置かれている
         (dviselect を仮定している)
    %A : %T と同様、ただし、各ページ番号の前に '=' が置かれている
         (dviselect を仮定している)
  たとえば、上記の PRCMDLST の定義で、/home/onono/doc/sample.dvi をプレ
  ビューしていて、3,6,11,17ページをマークしている時に、Print-out メニュー
  から all marked pages を選択すると、実行される文字列は以下のようになり
  ます。
	(cd /home/onono/doc;
	 dviselect -i sample.dvi -o /tmp/sample.dvi:3,6,11,17@3255.dvi
		 =3 =6 =11 =17;
	 dvi2ps /tmp/sample.dvi:3,6,11,17@3255.dvi)
	| lpr -Plp -J'sample.dvi (Page 3.6.11.17)';
	/bin/rm /tmp/sample.dvi:3,6,11,17@3255.dvi
  ただし、xdvi のプロセス ID = 3255、プリンタ名 = lp とします。

○独立性
  Use_MARKPAGE, Use_TOC, Use_PRINTDVI は、相互に独立して#define/#undefで
  きるはずです(試していません)。もちろん、
	#undef	Use_MARKPAGE
	#define	Use_TOC
	#define	Use_PRINTDVI
  で作った場合は、toc 上でのマーキングができませんし(ページ移動はできる)、
  Print-out メニューは All pages と current page の二つだけになるでしょ
  う。

○著作権
  当該パッチの中のファイル
	markring.c
	markring.h
	markpage.c
	markpage.h
	toc.c
	toc.h
	print.c
	print.h
  の著作権は、作者である
	松浦 俊     MATSUURA Syun      syun@fuka.info.waseda.ac.jp
	平原 厚志   HIRAHARA Atsushi   hirahara@fuka.info.waseda.ac.jp
	小野 康一   ONO Kouichi        onono@fuka.info.waseda.ac.jp
  に帰属します。なお、著作者を明らかにする限り、当該パッチの一部または全
  体を改造、転送、再配布するのは自由とします。

○ヒマがあればやろうかな

1. 環境変数, オプション, リソースによる指定
			-printer	*printer
	XDVIPRALL	-prall		*print.all
	XDVIPRCUR	-prcur		*print.currentPage
	XDVIPRMKD	-prmarked	*print.markedPage
	XDVIPRRGN	-prregion	*print.region
	XDVIPRLST	-prlist		*print.list

2. ページ移動に伴う toc のスクロールバー移動

3. toc に表示するページ番号を \count0 を考慮した(実際の)ページ番号にする

4. マークページリストの表記を
	5,8-12,27,29,35-36,41
   のようにする