comparison man/w3.texi @ 70:131b0175ea99 r20-0b30

Import from CVS: tag r20-0b30
author cvs
date Mon, 13 Aug 2007 09:02:59 +0200
parents 6a22abad6937
children 1ce6082ce73f
comparison
equal deleted inserted replaced
69:804d1389bcd6 70:131b0175ea99
1 \input texinfo 1 \input texinfo
2 @c 2 @setfilename ../info/w3.info
3 @c Please note that this file uses some constructs not supported by earlier 3 @settitle Emacs-W3 User's Manual
4 @c versions of TeX-info. You must be running one of the newer TeX-info
5 @c releases (I currently use version 3.9 from ftp://prep.ai.mit.edu/pub/gnu/)
6 @c
7 @c Please do not send in bug reports about not being able to format the
8 @c document with 'makeinfo' or 'tex', just upgrade your installation.
9 @c
10 @c Info formatted files are provided in the distribution, and you can
11 @c retrieve dvi, postscript, and PDF versions from the web site or FTP
12 @c site: http://www.cs.indiana.edu/elisp/w3/docs.html
13 @c
14 @setfilename w3.info
15 @settitle Emacs/W3 User's Manual
16 @iftex 4 @iftex
17 @finalout 5 @finalout
18 @end iftex 6 @end iftex
19 @c @setchapternewpage odd 7 @c @setchapternewpage odd
20 @c @smallbook 8 @c @smallbook
22 \overfullrule=0pt 10 \overfullrule=0pt
23 %\global\baselineskip 30pt % for printing in double space 11 %\global\baselineskip 30pt % for printing in double space
24 @end tex 12 @end tex
25 @synindex cp fn 13 @synindex cp fn
26 @synindex vr fn 14 @synindex vr fn
27 @dircategory World Wide Web
28 @dircategory GNU Emacs Lisp
29 @direntry
30 * W3: (w3). Emacs/W3 World Wide Web browser.
31 @end direntry
32 @ifinfo 15 @ifinfo
33 This file documents the Emacs/W3 World Wide Web browser. 16 This file documents the Emacs-W3 World Wide Web browser.
34 17
35 Copyright (C) 1993, 1994, 1995, 1996 William M. Perry 18 Copyright (C) 1993, 1994, 1995 William M. Perry
36 Copyright (C) 1996, 1997 Free Software Foundation 19 Copyright (C) 1996 Free Software Foundation
37 20
38 Permission is granted to make and distribute verbatim copies of 21 Permission is granted to make and distribute verbatim copies of
39 this manual provided the copyright notice and this permission notice 22 this manual provided the copyright notice and this permission notice
40 are preserved on all copies. 23 are preserved on all copies.
41 24
48 @end ignore 31 @end ignore
49 @end ifinfo 32 @end ifinfo
50 @c 33 @c
51 @titlepage 34 @titlepage
52 @sp 6 35 @sp 6
53 @center @titlefont{Emacs/W3} 36 @center @titlefont{Emacs-W3}
54 @center @titlefont{User's Manual} 37 @center @titlefont{User's Manual}
55 @sp 4 38 @sp 4
56 @center Third Edition, Emacs/W3 Version 3.0 39 @center Third Edition, Emacs-W3 Version 3.0
57 @sp 1 40 @sp 1
58 @center February 1997 41 @center August 1996
59 @sp 5 42 @sp 5
60 @center William M. Perry 43 @center William M. Perry
61 @center @i{wmperry@@cs.indiana.edu} 44 @center @i{wmperry@@cs.indiana.edu}
62 @page 45 @page
63 @vskip 0pt plus 1filll 46 @vskip 0pt plus 1filll
64 Copyright @copyright{} 1993, 1994, 1995 William M. Perry@* 47 Copyright @copyright{} 1993, 1994, 1995 William M. Perry@*
65 Copyright @copyright{} 1996, 1997 Free Software Foundation 48 Copyright @copyright{} 1996 Free Software Foundation
66 49
67 Permission is granted to make and distribute verbatim copies of@* 50 Permission is granted to make and distribute verbatim copies of@*
68 this manual provided the copyright notice and this permission notice@* 51 this manual provided the copyright notice and this permission notice@*
69 are preserved on all copies. 52 are preserved on all copies.
70 53
71 @end titlepage 54 @end titlepage
72 @page 55 @page
73 @ifinfo 56 @ifinfo
74 @node Top, Getting Started, (dir), (dir) 57 @node Top, Introduction,, (DIR)
75 @top W3 58 This manual documents the Emacs-W3 World Wide Web browser, a Lisp program
76 59 which runs as a subsystem under Emacs. The manual is divided into the
77 Users can browse the World Wide Web from within Emacs by using Emacs/W3. 60 following chapters.
78 All of the widely used (and even some not very widely used) @sc{url}
79 schemes are supported, and it is very easy to add new methods as the
80 need arises.
81
82 Emacs/W3 provides some core functionality that can be readily re-used
83 from any program in Emacs. Users and other package writers are
84 encouraged to @i{Web-enable} their applications and daily work routines
85 with the library.
86
87 Emacs/W3 is completely customizable, both from Emacs-Lisp and from
88 stylesheets @xref{Stylesheets} If there is any aspect of Emacs/W3 that
89 cannot be modified to your satisfaction, please send mail to the
90 @t{w3-beta@@indiana.edu} mailing list with any suggestions.
91 @xref{Reporting Bugs}
92 61
93 @menu 62 @menu
94 * Getting Started:: Getting up and running with Emacs/W3 63 * Introduction:: Overview of Emacs-W3.
95 * Basic Usage:: Basic movement and usage of Emacs/W3. 64 * Starting Up:: What happens when you start Emacs-W3
65 * Basic Usage:: Basic movement and usage of Emacs-W3.
96 * Compatibility:: Explanation of compatibility with 66 * Compatibility:: Explanation of compatibility with
97 other browsers. 67 other web browsers.
98 * Stylesheets:: How to control the look of web pages 68 * Controlling Formatting:: How to control HTML formatting
99 * Supported URLs:: What @sc{URL} schemes are supported. 69 * MIME Support:: Support for MIME
100 * MIME Support:: Support for @sc{mime} 70 * Security:: Various forms of security
101 * Security:: Various security methods supported 71 * Non-Unix Operating Systems:: Special considerations necessary to get
102 * Non-Unix Operating Systems:: Special considerations necessary to get
103 up and running correctly under non-unix 72 up and running correctly under non-unix
104 OS's. 73 OS's.
105 * Speech Integration:: Outputting to a speech synthesizer.
106 * Advanced Features:: Some of the more arcane features. 74 * Advanced Features:: Some of the more arcane features.
107 * More Help:: How to get more help---mailing lists, 75 * More Help:: How to get more help---mailing lists,
108 newsgroups, etc. 76 newsgroups, etc.
109 * Future Directions:: Plans for future revisions 77 * Future Directions:: Plans for future revisions
110 78
111 Appendices: 79 Appendices:
112 * Reporting Bugs:: How to report a bug in Emacs/W3. 80 * Reporting Bugs:: How to report a bug in Emacs-W3
113 * Dealing with Firewalls:: How to get around your firewall. 81 * Installing SSL:: Turning on SSL support
114 * Proxy Gateways:: Using a proxy gateway with Emacs/W3. 82 * Using PGP/PEM:: Turning on PGP/PEM encryption support
115 * Installing SSL:: Turning on @sc{ssl} support. 83 * Mailcap Files:: An explanation of Mailcap files
116 * Mailcap Files:: An explanation of Mailcap files.
117 * Down with DoubleClick:: Annoyed by advertisements? Read this!
118 84
119 Indices: 85 Indices:
120 * General Index:: General Index. 86 * General Index:: General Index
121 * Key Index:: Menus of command keys and their references. 87 * Key Index:: Menus of command keys and their references
122 @end menu 88 @end menu
123 @end ifinfo 89 @end ifinfo
124 90
125 @node Getting Started, Basic Usage, Top, Top 91 @node Introduction, Starting Up, Top, Top
126 @chapter Getting Started 92 @chapter Introduction
127 @cindex Clueless in Seattle 93 @cindex World Wide Web
128 @cindex Getting Started 94 Emacs-W3 is an Emacs subsystem that allows the user to browse the wonderful
129 @kindex M-x w3 95 World Wide Web (WWW).
96
97 The World Wide Web was begun at the CERN physics institute in
98 Switzerland in 1991. The project was initiated by Tim Berners-Lee
99 (@i{timbl@@w3.org}) for distributing data between different research
100 groups effectively.
101
102
103 The Web has since grown into the most advanced information system
104 currently on the internet. It is now a global hypertext system with
105 servers and @dfn{browsers} (programs written to interpret the hypertext
106 language and display it correctly, and allow the user to follow links)
107 exist for all major platforms (VMS, Windows, DOS, Unix, VM, NeXTstep,
108 Amiga, and Macintosh).
109
110 The basic concepts used in the Web are @b{hypertext} and @b{hypermedia}.
111 Hypertext is the same as regular text, with one exception---it can
112 contain links (cross-references) to other textual documents. Hypermedia
113 is slightly different---it can contain links to other forms of media
114 (movies, sounds, interactive programs, etc.).
115
116 WWW also allows searches of indices that are located anywhere on the
117 network; in this respect, it mirrors certain capabilities found in both
118 WAIS and Gopher.
119 @iftex
120 @section Client Side View of WWW
121 @end iftex
122 @ifinfo
123 @center ----------------
124 @center CLIENT SIDE VIEW
125 @center ----------------
126 @end ifinfo
127 The WWW consists of documents and links. Indexes are special documents
128 which, rather than being read, may be searched. The result of such a
129 search is another @i{virtual} document containing links to the documents
130 found. A simple protocol, Hypertext Transfer Protocol or @i{HTTP}, is
131 used to allow a browser program to request a keyword search by a remote
132 information server.
133
134
135 The web contains documents in many formats. Those documents which are
136 hypertext, (real or virtual) contain links to other documents, or places
137 within documents. All documents, whether real, virtual or indexes, look
138 similar to the reader and are contained within the same addressing
139 scheme.
140 @iftex
141 @section Information Provider View of WWW
142 @end iftex
143 @ifinfo
144 @center -------------------------
145 @center INFORMATION PROVIDER VIEW
146 @center -------------------------
147 @end ifinfo
148 WWW browsers can access many existing data systems via existing
149 protocols (FTP, NNTP) or via HTTP and a gateway. In this way, the
150 critical mass of data is quickly exceeded, and the increasing use of the
151 system by readers and information suppliers encourage each other.
152
153 Providing information is as simple as running a WWW server and pointing
154 it at an existing directory structure. The server automatically
155 generates a hypertext view of the files to guide the user around.
156
157
158 To personalize it, a few @b{SGML} hypertext files can be written to give
159 an even more friendly view. Also, any file available by anonymous FTP,
160 or any internet newsgroup can be immediately linked into the web. The
161 small start-up effort is designed to allow open contributions. At the
162 other end of the scale, large information providers may provide an HTTP
163 server with full text or keyword indexing. This may allow access to a
164 large existing database without changing the way that database is
165 managed. Such gateways have already been made into Oracle(tm), WAIS,
166 and Digital's VMS/Help systems, to name but a few.
167
168
169 The WWW model gets over the frustrating incompatibilities of data format
170 between suppliers and reader by allowing negotiation of format between a
171 smart browser and a smart server. This provides a basis for extension
172 into multimedia, and allow those who share application standards to make
173 full use of them across the web.
174
175
176 @ifinfo
177 Here is some more specific information about what Emacs-W3 does and does
178 not understand:
179 @menu
180 * Markup Languages Supported:: The different markup languages that
181 Emacs-W3 understands natively.
182 * Supported Protocols:: The different network protocols that
183 Emacs-W3 speaks to.
184 @end menu
185 @end ifinfo
186 @node Markup Languages Supported, Supported Protocols, Introduction, Introduction
187 @chapter Supported Markup Languages
188 Several different markup languages, and various extensions to those
189 languages, are supported by Emacs-W3.
190 @ifinfo
191 @center ----------
192 @center HTML 2.0
193 @center ----------
194 @end ifinfo
195 @iftex
196 @section HTML 2.0
197 @end iftex
198 The Hypertext Markup Language, or HTML, is composed of a set of elements
199 that define a document and guide its display. An HTML element may
200 include a name, some attributes and some text or hypertext, and appears
201 in an HTML document as <tag_name>text</tag_name>, <tag_name
202 attribute_name=argument>text</tag_name>, or just <tag_name>.
203
204
205 For example: @samp{<title>My Useful Document</title>}, and @samp{<pre
206 width=60> A lot of text here. </pre>}.
207
208 An HTML document is composed of a single element: <html>...</html>, that
209 is, in turn, composed of head and body elements: <head>...</head>, and
210 <body>...</body>. To allow older HTML documents to remain readable,
211 <html>, <head>, and <body> are actually optional within HTML
212 documents.
213
214 All the tags and attributes of HTML are fully supported in Emacs-W3.
215
216 The full HTML 2.0 specification is available at any RFC
217 archive@footnote{ftp://ds.internic.net/}. It is RFC 1866.
218
219
220 @ifinfo
221 @center ----------
222 @center HTML 3.0
223 @center ----------
224 @end ifinfo
225 @iftex
226 @section HTML 3.2
227 @end iftex
228 @cindex HTML 3.2
229 The HTML 3.2 language is an extension of HTML, with a large degree of
230 backward compatibility with HTML 2.0. This basically documents current
231 practice as of January, 1996.
232
233 @ifinfo
234 @center ----------
235 @center Netscape-HTML
236 @center ----------
237 @end ifinfo
238 @iftex
239 @section Netscape-HTML
240 @end iftex
241 I hate to say it, but I broke down and actually included some of the
242 Netscape extensions into Emacs-W3. The thing I hate to say even more,
243 is that most of the uglier things in Netscape-HTML are now in the HTML
244 3.2 specification. All hail the W3Cs lack of backbone.
245
246 @table @b
247 @item <center>...</center>
248 This ugly, ill-thought-out alternative to the HTML 3.0 align attribute on
249 headers and paragraphs was included for compatibility, and as an example
250 of how @b{not} to do things.
251 @item <isindex>
252 The isindex tag can now take a prompt attribute, to get rid of the
253 default 'This is a searchable index' label.
254 @end table
255 @ifinfo
256 @center ----------
257 @center SGML Features
258 @center ----------
259 @end ifinfo
260 @iftex
261 @section SGML Features
262 @end iftex
263 @cindex SGML Features
264 @cindex Entity Definitions
265 @cindex Marked Sections
266 :: WORK :: Document marked sections, SGML features
267 @ifinfo
268 @center ----------
269 @center Extras
270 @center ----------
271 @end ifinfo
272 @iftex
273 @section Extra Markup
274 @end iftex
275 @cindex Easter Eggs
276 @cindex Fluff
277 @cindex Pomp & Circumstance
278 There are several different markup elements that are not officially part
279 of HTML or HTML 3.0 that Emacs-W3 supports. These are either items that
280 were dropped from HTML 3.0 after I had implemented them, or experimental
281 parts of HTML that should not be counted as "official" or long
282 lived.
283 @itemize @bullet
284 @item
285 More <HR> improvements. Text can be added into a horizontal rule by
286 using the LABEL and TEXTALIGN attributes.
287
288 @example
289 <hr label="testing" textalign="right">
290 yields
291 ----------------------------------------------------------testing-
292
293 <hr label="testing" textalign="center">
294 yields
295 -----------------------------testing------------------------------
296
297 <hr label="testing" textalign="left">
298 yields
299 -Testing----------------------------------------------------------
300 @end example
301 @item
302 FLAME support. For truly interesting dynamic documents. This is
303 replaced with a random quote from Mr. Angry (see @kbd{M-x flame} for a
304 sample).
305 @item
306 The top ten tags that did not make it into netscape. These tags were
307 posted to the newsgroup comp.infosystems.www.misc by Laura Lemay
308 (@i{lemay@@netcom.com}). Much thanks to her for the humor.
309 @table @b
310 @item <wired>...</wired>
311 Renders the enclosed text in a suitably ugly font/color combination. If
312 no default has been set up by the user, this is the default font, with
313 red text on a yellow background.
314 @item <roach>...</roach>
315 When selected, the enclosed text runs and hides under the nearest
316 window. OR, giggles a lot and demands nachos, depending on the
317 definition of "roach." (the formal definition, of course, to be
318 determined by the Official Honorary Internet Standards Committee For
319 Moving Really Slowly.)
320 @item <pinhead>
321 Inserts "zippyisms" into the enclosed text. Perfect for those professional
322 documents. This is sure to be a favorite of mine!
323 @item <secret>...</secret>
324 Must use secret spy decoder glasses (available direct from Netscape for
325 a reasonable fee) in order to read the enclosed text. Can also be read
326 by holding the computer in front of a full moon during the autumn
327 solstice.
328
329 In Emacs-W3, this displays the text using rot13 encoding.
330 @item <hype>
331 Causes Marc Andreesen to magically appear and grant an interview (wanted
332 or not). Please use this tag sparingly.
333 @item <peek>....</peek>
334 @item <poke>...</poke>
335 Need more control over screen layout in HTML? Well, here ya go.
336
337 Actually, <peek> could almost be considered useful. The VARIABLE
338 attribute can be used to insert the value of an emacs variable into the
339 current document. Things like 'Welcome to my page, <peek
340 variable=user-mail-address>' can be useful in freaking people
341 out.
342 @item <yogsothoth>
343 @cindex Gates Bill
344 @cindex Yogsothoth
345 Summons the elder gods to suck away your immortal soul. Or Bill Gates,
346 if the elder gods are busy. Unpredictable (but amusing) results occur
347 when the <YOGSOTHOTH> and <HYPE> tags are used in close proximity.
348
349 @item <blink>...</blink>
350 Causes the enclosed text to .... ooops that one made it in.
351 @end table
352 @end itemize
353 @node Supported Protocols, , Markup Languages Supported, Introduction
354 @chapter Supported Protocols
355 @cindex Network Protocols
356 @cindex Protocols Supported
357 @cindex Supported Protocols
358 Emacs-W3 supports the following protocols
359 @table @b
360 @item Usenet News
361 Can either display an entire newsgroup or specific articles by
362 Message-ID: header. This supports a unix-style .newsrc file, so the
363 user does not see articles they have read using another newsreader, but
364 due to how news URLs work, the .newsrc file cannot be updated
365 reliably.
366
367 To be more in line with the other URL schemes, the hostname and port of
368 an NNTP server can be specified. URLs of the form
369 news://hostname:port/messageID work, but will not work in most other
370 browsers.
371
372 @item HTTP
373 Supports the HTTP/0.9, HTTP/1.0, and HTTP/1.1 protocols. Fully
374 MIME-compliant with regards to HTTP/1.0.
375 @item Gopher
376 Support for all gopher types, including CSO queries.
377 @item Gopher+
378 Support for Gopher+ retrievals. Support for converting ASK blocks into
379 HTML 3.0 FORMS and submitting them back to the server.
380 @item FTP
381 FTP is handled by either ange-ftp or efs.
382 @item Local files
383 Local files are handled, and MIME content-types are derived from the
384 file extensions.
385 @item Telnet
386 Telnet is handled by running the Emacs Lisp function @code{telnet}, or
387 spawning an xterm running telnet.
388 @item TN3270
389 TN3270 is handled by running a tn3270 program in an Emacs buffer, or
390 spawning an xterm running tn3270.
391 @item Mailto
392 Causes a mail message to be started to a specific address.
393 @item mailserver
394 A more powerful version of mailto, which allows the author to specify
395 the subject and body text of the mail message. This type of link is
396 never fully executed without user confirmation, because it is possible
397 to insert insulting or threatening (and possibly illegal) data into the
398 message. The mail message is displayed, and the user must type 'yes' to
399 send it.
400 @item X-exec
401 A URL can cause a local executable to be run, and its output interpreted
402 as if it had come from an HTTP server. This is very useful, but is
403 still an experimental protocol, hence the X- prefix.
404 @item SSL
405 SSL requires a set of patches to the Emacs C code and SSLRef 2.0, or an
406 external program to run in a subprocess (similar to the @file{tcp.el}
407 package that comes with GNUS. @xref{Installing SSL}
408 @item Secure HTTP
409 Work is in progress to add support for the Secure HTTP specification
410 from Enterprise Information Technologies. The specification for SHTTP
411 can be found on EIT's web server at
412 http://www.commerce.net/information/standards/drafts/shttp.txt.
413 @end table
414
415 @node Starting Up, Basic Setup, Introduction, Top
416 @comment node-name, next, previous, up
417 @chapter Starting Up
418 @cindex Starting Up Emacs-W3
419 This section of the manual deals with getting, compiling, and
420 configuring @i{Emacs-W3}.
421 @ifinfo
422 @menu
423 * Basic Setup:: Basic setup that everyone needs to do
424 * Firewalls:: How to set Emacs-W3 up to use a particular
425 firewall setup.
426 * Proxy Gateways:: Using a proxy server
427 @end menu
428 @end ifinfo
429
430 @node Basic Setup, Firewalls, Starting Up, Starting Up
431 @comment node-name, next, previous, up
432 @section Basic Setup
433 There are a few variables that almost all people need to change.
434
435 @table @code
436 @item w3-default-homepage
130 @vindex w3-default-homepage 437 @vindex w3-default-homepage
131 @findex w3 438 The url to open at startup. This defaults to the environment variable
132 If installed correctly, starting Emacs/W3 is quite painless. Just type 439 WWW_HOME if it is not set it in the users @file{.emacs} file. If
133 @kbd{M-x w3} in a running Emacs session. This will retrieve the default 440 WWW_HOME is undefined, then it defaults to the hypertext documentation
134 page that has been configured (@pxref{Preferences Panel}) - by default the 441 for Emacs-W3.
135 documentation for Emacs/W3 at Indiana University. 442
136 443 @item w3-delay-image-loads
137 If the default page is not retrieved correctly at startup, you will have 444 @vindex w3-delay-image-loads
138 to do some customization (@pxref{Preferences Panel}). 445 Controls the loading of inlined images. If non-@code{nil}, images are
139 446 not loaded. If the correct image converters are not installed or the
140 Once started, you can use the mouse and the menu or use the following 447 network connection is very slow, it is best to set this to @code{t}.
141 key commands (for more commands and more detail, @pxref{Basic Usage, , 448 Defaults to @code{nil}.
142 Basic Usage}). 449 @item url-global-history-file
143 450 @vindex url-global-history-file
144 @table @asis 451 The global history file used by both Mosaic/X and Emacs-W3. This file
145 @item move forward 452 contains a list of all the URLs that have been visited. This file is parsed
146 press the space bar, 453 at startup and used to provide URL completion. Emacs-W3 can read and
147 454 write Mosaic/X or Netscape 1.x style history files, or use its own
148 @item move backwards 455 internal format (faster). The file type is determined automatically, or
149 press the backspace key, 456 prompted for if the file does not exist.
150 457 @item w3-hotlist-file
151 @item move to the next HTML reference on the page 458 @vindex w3-hotlist-file
152 press the @kbd{TAB} key, 459 Hotlist filename. This should be the name of a file that is stored in
153 460 NCSA's Mosaic/X or Netscape's format. It is used to keep a listing of
154 @item move to the previous HTML reference on the page 461 commonly accessed URLs.
155 press the @kbd{SHIFT} and @kbd{TAB} keys at the same time. If this does 462 @item w3-personal-annotation-directory
156 not work (some text terminals cannot distinguish between @kbd{TAB} and 463 @vindex w3-personal-annotation-directory
157 @kbd{SHIFT-TAB}, pressing the @kbd{ALT} and @kbd{TAB} keys should also 464 The directory where Emacs-W3 looks for personal annotations. This is a
158 work. 465 directory that should hold the personal annotations stored in a
159 466 Mosaic/X-compatible format.
160 @item follow a link 467 @item url-pgp/pem-entity
161 put the cursor over it 468 @findex user-real-login-name
162 and press the @kbd{RETURN} key, or @* 469 @findex system-name
163 click the left mouse button on it, 470 The name by which the user is known to PGP and/or PEM entities. If this
164 471 is not set when Emacs-W3 is loaded, it defaults to
165 @item fetch a @sc{url} 472 @code{user-mail-address} if it is set, otherwise @code{(user-real-login-name)}@@@code{(system-name)}.
166 press the @kbd{Control} and @kbd{o} keys at the same time,@* 473 @item url-personal-mail-address
167 type the @sc{url}, and then press the @kbd{RETURN} key, 474 @vindex url-personal-mail-address
168 475 @vindex url-pgp/pem-entity
169 @item return to the last URL you were at 476 User's full email address. This is what is sent to HTTP/1.0 servers as
170 press the @kbd{l} key, 477 the FROM header. If this is not set when Emacs-W3 is loaded, then it
171 478 defaults to the value of @code{url-pgp/pem-entity}.
172 @item quit W3 mode 479
173 press the @kbd{q} key. 480 @item w3-right-border
481 @vindex w3-right-border
482 @findex window-width
483 Amount of space to leave on right margin of WWW buffers. This amount is
484 subtracted from the width of the window for each new WWW buffer and used
485 as the new @code{fill-column}.
486
487 @item w3-track-mouse
488 @vindex w3-track-mouse
489 Controls whether to track the mouse and message the url under the mouse.
490 If this is non-@code{nil}, then a description of the hypertext area
491 under the mouse is shown in the minibuffer. This shows what type of
492 link (inlined image, form entry area, delayed image, delayed MPEG, or
493 hypertext reference) is under the cursor, and the destination.
494 @item w3-echo-link
495 @vindex w3-echo-link
496 Controls how a URL is shown when a link is reached with @key{f},
497 @key{b}, or the mouse moves over it. Possible values are:
498 @table @b
499 @item url
500 Displays the URL (ie: @samp{http://www.cs.indiana.edu/}).
501 @item text
502 Displays the text of the link (ie: @samp{A link to Indiana University}).
503 @item nil
504 Show nothing.
174 @end table 505 @end table
175 506 @item w3-use-forms-index
176 @menu 507 @vindex w3-use-forms-index
177 * Downloading:: Where to download Emacs/W3. 508 @cindex ISINDEX handling
178 * Building and Installing:: Compiling and installing from source. 509 @cindex Forms based searching
179 * Startup Files:: What is where, and why. 510 @cindex Searching with forms
180 * Preferences Panel:: Quick configuration of common options. 511 Non-@code{nil} means translate <ISINDEX> tags into a hypertext form. A
181 @end menu 512 single text entry box is shown where the ISINDEX tag appears.
182 513 @item url-use-hypertext-gopher
183 @node Downloading, Building and Installing, Getting Started, Getting Started 514 @vindex url-use-hypertext-gopher
184 @section Downloading 515 @cindex Gopher+
185 516 Controls how gopher documents are retrieved. If non-@code{nil}, the
186 :: WORK :: What you need, and why 517 gopher pages are converted into HTML and parsed just like any other
187 :: WORK :: Where to download Emacs, XEmacs, various platforms 518 page. If @code{nil}, the requests are passed off to the
188 :: WORK :: Where to download Emacs/W3 519 @file{gopher.el} package by Scott Snyder. Using the @file{gopher.el}
189 :: WORK :: Where to download related utilities (netpbm, xv, gimp, etc.) 520 package loses the gopher+ support, and inlined searching.
190 521 @item url-xterm-command
191 @node Building and Installing, Startup Files, Downloading, Getting Started 522 @vindex url-xterm-command
192 @section Building and Installing 523 Command used to start a windowed shell, similar to an xterm. This
193 524 string is passed through @code{format}, and should expect four strings:
194 :: WORK :: Document makefile variables 525 the title of the window, the program name to execute, and the server and
195 :: WORK :: Document what gets installed where, why 526 port number. The default is for xterm, which is very UNIX and
196 527 XWindows-centric.
197 @node Startup Files, Preferences Panel, Building and Installing, Getting Started 528 @end table
198 @section Startup Files 529 @node Firewalls, Proxy Gateways, Basic Setup, Starting Up
199 @cindex Startup files 530 @comment node-name, next, previous, up
200 @cindex Default stylesheet 531 @section Firewalls
201 532 @cindex Gateways
202 :: WORK :: startup files 533 There are several different reasons why the gateway support might be
203 This section should document where Emacs/W3 looks for its startup files, 534 required.
204 and what each one does. 'profile' 'stylesheet' 'hotlist' 'history' etc. 535 @enumerate
205 536 @cindex Firewalls
206 @node Preferences Panel, , Startup Files, Getting Started 537 @item
207 @section Preferences Panel 538 Stuck behind a firewall. This is usually the case at large corporations
208 @cindex Preferences 539 with paranoid system-administrators.
209 @kindex M-x w3-preferences-edit 540
210 541 @cindex TERM
211 :: WORK :: pref panel 542 @item
212 This should document the quick preferences panel. M-x w3-preferences-edit 543 Using TERM @footnote{TERM is a user-level protocol for emulating IP over
213 544 a serial line. More information is available at
214 @node Basic Usage, Compatibility, Getting Started, Top 545 ftp://sunsite.unc.edu/pub/Linux/apps/comm/term} for slip-like access to
546 the internet.
547
548 NOTE: XEmacs and Emacs 19.22 or later have patches to enable native TERM
549 networking. To enable it, #define TERM in the appropriate s/*.h file
550 for the operating system, then change the SYSTEM_LIBS define to include
551 the @file{termnet} library that comes with the latest versions of TERM.
552
553 @item
554 @cindex Faulty hostname resolvers
555 @cindex Broken SUN libc
556 @cindex Can't resolve hostnames
557 Emacs cannot resolve hostnames. This happens quite often on Sun
558 workstations and some ULTRIX machines. Some C libraries do not include
559 the hostname resolver routines in their static libraries. If Emacs was
560 linked statically, this means it won't be able to get to any machines
561 off the local network. This is characterized by being able to reach
562 someplace with a raw ip number, but not its hostname
563 (http://129.79.254.191/ works, but http://www.cs.indiana.edu/ doesn't).
564
565 If for some reason it is not feasible to recompile Emacs with the
566 @file{-lresolv} library or dynamic linking, it is just like being behind
567 a firewall. Another alternative is to set the variable
568 @code{url-broken-resolution} - this will use the support in ange-ftp or
569 EFS to use @file{nslookup} in a subprocess to do all hostname resolving.
570 See the variables @code{efs-nslookup-program},
571 @code{efs-nslookup-on-connect}, and @code{efs-nslookup-threshold} if are
572 using EFS, or @code{ange-ftp-nslookup-program} if using Ange-FTP.
573
574 @end enumerate
575
576 @vindex url-gateway-local-host-regexp
577 Emacs-W3 has support for using the gateway mechanism for certain
578 domains, and directly connecting to others. To use this, change the
579 value of @code{url-gateway-local-host-regexp}. This should be a regular
580 expression @footnote{Please see the full Emacs distribution for a
581 description of regular expressions} that matches local hosts that do not
582 require the use of a gateway. If @code{nil}, then all connections are
583 made through the gateway.
584
585
586 @vindex url-gateway-method
587 Emacs-W3 supports several methods of getting around gateways. The variable
588 @code{url-gateway-method} controls which of these methods is used. This
589 variable can have several values (use these as symbol names, not
590 strings):
591 @table @dfn
592 @item program
593 Run a program in a subprocess to connect to remote hosts (examples are
594 @i{itelnet}@footnote{Itelnet is a standard name for a telnet executable
595 that is capable of escaping the firewall. Check with system
596 administrators to see if anything similar is available}, an
597 @i{expect}@footnote{Expect is a scripting language that allows control
598 of interactive programs (like telnet) very easily. It is available from
599 gatekeeper.dec.com:/pub/GNU/expect-3.24.0.tar.gz} script, etc.).
600
601 @item host
602 Log into another local computer that has access to the internet, and run
603 a telnet-like program from there.
604 @item tcp
605 Masanobu UMEDA (@i{umerin@@mse.kyutech.ac.jp}) has written a very nice
606 replacement for the standard networking in Emacs. This does basically
607 the same thing that a method of @code{program} does, but is slightly
608 more transparent to the user.
609 @item native
610 This means that Emacs-W3 should use the builtin networking code of Emacs.
611 This should be used only if there is no firewall, or the Emacs source
612 has already been hacked to get around the firewall.
613 @end table
614 Two of these need a bit more explanation than that:
615 @vindex url-gateway-telnet-ready-regexp
616 @vindex url-gateway-telnet-program
617 When running a program in a subprocess to emulate a network connection,
618 a few extra variables need to be set. The variable
619 @code{url-gateway-telnet-program} should point to an executable that
620 accepts a hostname and port # as its arguments, and passes standard
621 input to the remote host. This can be either the full path to the
622 executable or just the basename. The variable
623 @code{url-gateway-telnet-ready-regexp} controls how long Emacs-W3 should
624 wait after spawning the subprocess to start sending to its standard
625 input. This gets around a bug where telnet would miss the beginning of
626 requests becausse it did not buffer its input before opening a
627 connection. This should be a regular expression to watch for that
628 signifies the end of the setup of @code{url-gateway-telnet-program}.
629 The default should work fine for telnet.
630
631 @cindex Host-based gateways
632 @cindex Hair-pulling gateway-headaches
633 @vindex url-gateway-host
634 When using the @code{host}-based gatway method, things get a bit more
635 complicated. This is basically my attempt to do some of the basic stuff
636 of @i{expect} within elisp. First off, set the variable
637 @code{url-gateway-host} to be the name of the gateway machine.
638
639
640 @vindex url-gateway-connect-program
641 The variable @code{url-gateway-connect-program} controls how the host is
642 reached. The easiest way is to have a program that does not require a
643 username and password to login. The most common of these is the
644 @dfn{rsh} command.
645
646 @vindex url-gateway-program-interactive
647 @vindex url-gateway-handholding-password-regexp
648 @vindex url-gateway-handholding-login-regexp
649 @vindex url-gateway-host-username
650 @vindex url-gateway-host-password
651 If @i{rsh} is not available, then things get very ugly. First, set the
652 variable @code{url-gateway-program-interactive} to non-@code{nil}. Then
653 set the variables @code{url-gateway-host-username} and
654 @code{url-gateway-host-password} to be the username and password
655 necessary to log into the gateway machine. The regular expressions in
656 the variables @code{url-gateway-handholding-login-regexp} and
657 @code{url-gateway-handholding-password-regexp} should match the login
658 and password prompts on the gateway system respectively. For example:
659
660 @example
661 (setq url-gateway-connect-program "telnet"
662 url-gateway-host-program "telnet"
663 url-gateway-program-interactive t
664 url-gateway-host-username "wmperry"
665 url-gateway-host-password "yeahrightkeepdreaming"
666 url-gateway-host "moose.cs.indiana.edu"
667 url-gateway-host-program-ready-regexp "Escape character is .*"
668 url-gateway-handholding-login-regexp "ogin:"
669 url-gateway-handholding-password-regexp "ord:")
670 @end example
671
672 @vindex url-gateway-host-prompt-pattern
673 This should take care of logging in to the remote system. The variable
674 @code{url-gateway-host-prompt-pattern} should contain a regular
675 expression that matches the shell prompt on the remote machine. This
676 should appear @b{no where} in the login banner/setup, or things could
677 get very confused.
678
679 @vindex url-gateway-host-program-ready-regexp
680 @vindex url-gateway-host-program
681 The variable @code{url-gateway-host-program-ready-regexp} should contain
682 a regular expression that matches the end of the setup of
683 @code{url-gateway-host-program} when it tries to make a connection to an
684 off-firewall machine. (Basically the same as
685 @code{url-gateway-telnet-ready-regexp}.
686
687 Emacs-W3 should now be able to get outside the local network. If none
688 of this makes sense, its probably my fault. Please check with the
689 network administrators to see if they have a program that does most of
690 this already, since somebody somewhere at the company has probably been
691 through something similar to this before, and would be much more
692 helpful/knowledgeable about the local setup than I would be. But feel
693 free to mail me as a last resort.
694
695 @node Proxy Gateways, Basic Usage, Firewalls, Starting Up
696 @comment node-name, next, previous, up
697 @section Proxy Gateways
698 @vindex url-proxy-services
699 @cindex Proxy Servers
700 @cindex Proxies
701 @cindex Proxies, environment variables
702 @cindex HTTP Proxy
703 In late January 1993, Kevin Altis and Lou Montulli proposed and
704 implemented a new proxy service. This service requires the use of
705 environment variables to specify a gateway server/port # to send
706 protocol requests to. Each protocol (HTTP, WAIS, gopher, FTP, etc.@:)
707 can have a different gateway server. The environment variables are
708 @var{PROTOCOL}_proxy, where @var{PROTOCOL} is one of the supported
709 network protocols (gopher, file, HTTP, FTP, etc.)
710
711 @cindex No Proxy
712 @cindex Proxies, exclusion lists
713 @vindex NO_PROXY
714 For companies with internal intranets, it will usually be helpful to
715 define a list of hosts that should be contacted directly, @b{not} sent
716 through the proxy. The @var{NO_PROXY} environment variable controls
717 what hosts are able to be contacted directly. This should be a comma
718 separated list of hostnames, domain names, or a mixture of both.
719 Asterisks can be used as a wildcard. For example:
720
721 @example
722 NO_PROXY=*.aventail.com,home.com,*.seanet.com
723 @end example
724
725 tells Emacs-W3 to contact all machines in the @b{aventail.com} and
726 @b{seanet.com} domains directly, as well as the machine named
727 @b{home.com}.
728
729 @vindex url-proxy-services
730 @cindex Proxies, setting from lisp
731 For those adventurous souls who enjoy writing regular expressions, all
732 the proxy settings can be manipulated from Emacs-Lisp. The variable
733 @code{url-proxy-services} controls this. This is an assoc list, keyed
734 on the protocol type (http, gopher, etc) in all lowercase. The
735 @code{cdr} of each entry should be the fully-specified URL of the proxy
736 server to contact, or, in the case of the special "no_proxy" entry, a
737 regular expression that matches any hostnames that should be contacted
738 directly.
739
740 @example
741 (setq url-proxy-services '(("http" . "http://proxy.aventail.com/")
742 ("no_proxy" . "^.*\\(aventail\\|seanet\\)\.com")))
743 @end example
744
745 @node Basic Usage, , Proxy Gateways, Top
746 @comment node-name, next, previous, up
215 @chapter Basic Usage 747 @chapter Basic Usage
216 @cindex Basic Usage 748 Emacs-W3 is similar to the Info package all Emacs users hold near and dear to
217 @kindex space 749 their hearts (@xref{Top,,Info,info, The Info Manual}, for a description
218 @kindex backspace 750 of Info). Basically, @kbd{space} and @kbd{backspace} control scrolling,
219 @kindex return 751 and @kbd{return} or @kbd{mouse2} follows a hypertext link. The @kbd{f}
220 @kindex tab 752 and @kbd{b} keys maneuver around the various links on the page.
221 @kindex M-tab 753
222 Emacs/W3 is similar to the Info package all Emacs users hold near and 754 @b{NOTE:} To enter data into a form entry area, select it using
223 dear to their hearts (@xref{Top,,Info,info, The Info Manual}, for a 755 @kbd{return} or the middle mouse button, just like a hypertext link.
224 description of Info). Basically, @kbd{space} and @kbd{backspace} 756
225 control scrolling, and @kbd{return} or the middle mouse button follows a 757
226 hypertext link. The @kbd{tab} and @kbd{Meta-tab} keys maneuver around the 758 On non-graphic terminals (VT100, DOS, etc.), hypertext links are
227 various links on the page. 759 surrounded by '[[' and ']]' by default. On a graphics terminal, the
228 760 links are in bold print. @xref{Controlling Formatting} for information
229 @b{NOTE:} Starting with Emacs/W3 3.0, form entry areas in a page can be 761 on how to change this, or for help on getting the highlighting to work
230 typed directly into. This is one of the main differences in navigation 762 on graphics terminals.
231 from version 2.0. If you are used to using the @kbd{f} and @kbd{b} keys 763
232 to navigate around a buffer, I suggest training yourself to always use 764 There are approximately 50 keys bound to special Emacs-W3 functions.
233 @kbd{tab} and @kbd{M-tab} - it will save time and frustration on pages 765 The basic rule of thumb regarding keybindings in Emacs-W3 is that a
234 with lots of form fields.
235
236 By default, hypertext links are surrounded by '[[' and ']]' on
237 non-graphic terminals (VT100, DOS window, etc.). On a graphics
238 terminal, the links are in shown in different colors.
239 @xref{Stylesheets} for information on how to change this.
240
241 There are approximately 50 keys bound to special Emacs/W3 functions.
242 The basic rule of thumb regarding keybindings in Emacs/W3 is that a
243 lowercase key takes an action on the @b{current document}, and an 766 lowercase key takes an action on the @b{current document}, and an
244 uppercase key takes an action on the document pointed to by the 767 uppercase key takes an action on the document pointed to by the
245 hypertext link @b{under the cursor}. 768 hypertext link @b{under the cursor}.
246 769
247 There are several areas that the keybindings fall into: movement, 770 There are several areas that the keybindings fall into: movement,
248 information, action, and miscellaneous. 771 information, action, and miscellaneous.
249 772
773 @ifinfo
250 @menu 774 @menu
251 * Movement:: Moving around in the buffer. 775 * Movement:: Moving around in a Emacs-W3 buffer
252 * Information:: Getting information about a document. 776 * Information:: Getting information about the Emacs-W3 document being
253 * Action:: Following links, printing, etc. 777 viewed, and/or links within that document.
254 * Miscellaneous:: Everything else. 778 * Action:: Taking actions in a Emacs-W3 buffer (following links,
779 printing, etc.)
780 * Miscellaneous:: Miscellaneous keybindings
255 @end menu 781 @end menu
256 782 @end ifinfo
257 @node Movement, Information, Basic Usage, Basic Usage 783 @node Movement, Information, Basic Usage, Basic Usage
258 @section Movement 784 @section Movement
259 785 :: WORK :: Document the 'h' and 'a' keymaps
260 All the standard Emacs bindings for movement are still in effect, with a
261 few additions for convenience.
262
263 @table @kbd 786 @table @kbd
264 @findex w3-scroll-up 787 @findex scroll-up
265 @kindex space 788 @kindex SPC
266 @item space 789 @item SPC
267 Scroll downward in the buffer. With prefix arg, scroll down that many 790 Scroll downward in the buffer. With prefix arg, scroll down that many
268 screenfuls. 791 screenfuls.
269 @kindex backspace 792 @kindex DEL
270 @findex scroll-down 793 @findex scroll-down
271 @item backspace 794 @item DEL
272 Scroll upward in the buffer. With prefix arg, scroll up that many 795 Scroll upward in the buffer. With prefix arg, scroll up that many
273 screenfuls. 796 screenfuls.
274 @kindex < 797 @kindex <
275 @findex w3-start-of-document 798 @findex w3-start-of-document
276 @item < 799 @item <
278 @kindex > 801 @kindex >
279 @findex w3-end-of-document 802 @findex w3-end-of-document
280 @item > 803 @item >
281 Goes to the end of document 804 Goes to the end of document
282 @kindex b 805 @kindex b
283 @kindex Meta-tab 806 @kindex Shift-TAB
284 @findex w3-widget-backward 807 @findex w3-back-link
285 @item Meta-tab, Shift-tab, b 808 @item Shift-TAB, b
286 Attempts to move backward one link area in the current document. 809 Attempts to move backward one link area in the current document.
287 Signals an error if no previous links are found. 810 Signals an error if no previous links are found.
288 @kindex f 811 @kindex hl
289 @kindex tab 812 @findex w3-show-hotlist
290 @kindex n 813 @item hl
291 @findex w3-widget-forward 814 Displays a complete listing of the items in the hotlist.
292 @item tab, f, n 815 @kindex hu
293 Attempts to move forward one link area in the current document. Signals 816 @findex w3-use-hotlist
294 an error if no more links are found. 817 @item hu
295 @kindex B 818 Go to a link in the hotlist.
296 @findex w3-backward-in-history
297 @item B
298 Move backwards in the history stack.
299 @kindex F
300 @findex w3-forward-in-history
301 @item F
302 Move forwards in the history stack.
303 @kindex l
304 @findex w3-goto-last-buffer
305 @item l
306 Return to the last buffer shown before this buffer.
307 @kindex q
308 @findex w3-quit
309 @item q
310 Kill this buffer.
311 @kindex Q, u
312 @findex w3-leave-buffer
313 @item Q, u
314 Bury this buffer, but don't kill it
315 @end table
316
317 @node Information, Action, Movement, Basic Usage
318 @section Information
319
320 These functions relate information about one or more links on the
321 current document.
322
323 @table @kbd
324 @kindex v
325 @findex url-view-url
326 @item v
327 This shows the @sc{url} of the current document in the minibuffer.
328 @kindex V
329 @findex w3-view-this-url
330 @item V
331 This shows the @sc{url} of the hypertext link under point in the
332 minibuffer.
333 @kindex i
334 @findex w3-document-information
335 @item i
336 Shows miscellaneous information about the currently displayed document.
337 This includes the @sc{url}, the last modified date, @sc{mime} headers,
338 the @sc{http} response code, and any relationships to other documents.
339 Any security information is also displayed.
340 @kindex I
341 @findex w3-document-information-this-url
342 @item I
343 Shows information about the @sc{url} at point.
344 @kindex s
345 @findex w3-source-document
346 @item s
347 This shows the @sc{html} source of the current document in a separate buffer.
348 The buffer's name is based on the document's @sc{url}.
349 @kindex S
350 @findex w3-source-document-at-point
351 @item S
352 Shows the @sc{html} source of the hypertext link under point in a separate
353 buffer. The buffer's name is based on the document's @sc{url}.
354 @kindex k
355 @findex w3-save-url
356 @item k
357 This stores the current document's @sc{url} in the kill ring, and also in the
358 current window-system's clipboard, if possible.
359 @kindex K
360 @findex w3-save-this-url
361 @item K
362 Stores the @sc{url} of the document under point in the kill ring, and also in
363 the current window-system's clipboard, if possible.
364 @end table
365
366 @node Action, Miscellaneous, Information, Basic Usage
367 @section Action
368
369 First, here are the keys and functions that bring up a new hypertext
370 page, usually creating a new buffer.
371 @table @kbd
372 @kindex m 819 @kindex m
373 @findex w3-complete-link 820 @findex w3-complete-link
374 @item m 821 @item m
375 Choose a link from the current buffer and follow it. A completing-read 822 Choose a link from the current buffer and follow it. A completing-read
376 is done on all the links, so @kbd{space} and @kbd{TAB} can be used for 823 is done on all the links, so @kbd{space} and @kbd{TAB} can be used for
377 completion. 824 completion.
825 @kindex f
826 @kindex TAB
827 @kindex n
828 @findex w3-forward-link
829 @item TAB, f, n
830 Attempts to move forward one link area in the current document. Signals
831 an error if no more links are found.
832 @end table
833 @node Information, Action, Movement, Basic Usage
834 @section Information
835 These functions relate information about one or more links on the
836 current document.
837 @table @kbd
838 @kindex v
839 @findex url-view-url
840 @item v
841 This shows the URL of the current document in the minibuffer.
842 @kindex V
843 @findex w3-view-this-url
844 @item V
845 This shows the URL of the hypertext link under point in the minibuffer.
846 If there is not a hypertext link under point, then it shows the type of
847 form entry area under point. If there is no form entry area under
848 point, then it shows the inlined image's URL that is under point, if
849 any.
850 @kindex i
851 @findex w3-document-information
852 @item i
853 Shows miscellaneous information about the currently displayed document.
854 This includes the URL, the last modified date, MIME headers, the HTTP
855 response code, and any relationships to other documents. Any security
856 information is also displayed.
857 @kindex I
858 @findex w3-document-information-this-url
859 @item I
860 Shows information about the URL at point.
861 @kindex s
862 @findex w3-source-document
863 @item s
864 This shows the HTML source of the current document in a separate buffer.
865 The buffer's name is based on the document's URL.
866 @kindex S
867 @findex w3-source-document-at-point
868 @item S
869 Shows the HTML source of the hypertext link under point in a separate
870 buffer. The buffer's name is based on the document's URL.
871 @kindex k
872 @findex w3-save-url
873 @item k
874 This stores the current document's URL in the kill ring, and also in the
875 current window-system's clipboard, if possible.
876 @kindex K
877 @findex w3-save-this-url
878 @item K
879 Stores the URL of the document under point in the kill ring, and also in
880 the current window-system's clipboard, if possible.
881 @end table
882 @node Action, Miscellaneous, Information, Basic Usage
883 @section Action
884 First, here are the keys and functions that bring up a new hypertext
885 page, usually creating a new buffer.
886 @table @kbd
378 @kindex return 887 @kindex return
379 @findex w3-follow-link 888 @findex w3-follow-link
380 @item return 889 @item return
381 Pressing return when over a hyperlink attempts to follow the link 890 Pressing return when over a hyperlink attempts to follow the link
382 under the cursor. With a prefix argument (@kbd{C-u}), this forces the 891 under the cursor. With a prefix argument (@kbd{C-u}), this forces the
383 file to be saved to disk instead of being passed off to other viewers 892 file to be saved to disk instead of being passed off to other viewers
384 or being parsed as @sc{html}. 893 or being parsed as HTML.
385 894
386 Pressing return when over a form input field can cause auto-submission 895 Pressing return when over a form input field will prompt in the
387 of the form. This is for Mosaic and Netscape compatibility. If there
388 is only one item in the form other than submit or reset buttons, then
389
390 minibuffer for the data to insert into the input field. Type checking 896 minibuffer for the data to insert into the input field. Type checking
391 is done, and the data is only entered into the form when data of the 897 is done, and the data is only entered into the form when data of the
392 correct type is entered (ie: cannot enter 44 for 'date' field, etc). 898 correct type is entered (ie: cannot enter 44 for 'date' field, etc).
393 899
394 @kindex Middle Mouse Button 900 @kindex Middle Mouse Button
411 917
412 @kindex p 918 @kindex p
413 @findex w3-print-this-url 919 @findex w3-print-this-url
414 @item p 920 @item p
415 Prints out the current buffer in a variety of formats, including 921 Prints out the current buffer in a variety of formats, including
416 PostScript, @sc{html} source, or formatted text. 922 PostScript, HTML source, or formatted text.
417 @kindex P 923 @kindex P
418 @findex w3-print-url-under-point 924 @findex w3-print-url-under-point
419 @item P 925 @item P
420 Prints out the @sc{url} under point in a variety of formats, including 926 Prints out the URL under point in a variety of formats, including
421 PostScript, @sc{html} source, or formatted text. 927 PostScript, HTML source, or formatted text.
422 @kindex m 928 @kindex m
423 @findex w3-complete-link 929 @findex w3-complete-link
424 @item m 930 @item m
425 Selects a destination from a list of all the hyperlinks in the current 931 Selects a destination from a list of all the hyperlinks in the current
426 buffer. Use @kbd{space} and @kbd{tab} to complete on the links. 932 buffer. Use @kbd{space} and @kbd{tab} to complete on the links.
435 unconditional reload from the remote server - the locally cached copy is 941 unconditional reload from the remote server - the locally cached copy is
436 not consulted. 942 not consulted.
437 @kindex C-o 943 @kindex C-o
438 @findex w3-fetch 944 @findex w3-fetch
439 @item C-o 945 @item C-o
440 Prompts for a @sc{url} in the minibuffer, and attempts to fetch 946 Prompts for a URL in the minibuffer, and attempts to fetch
441 it. If there are any errors, or Emacs/W3 cannot understand the type of link 947 it. If there are any errors, or Emacs-W3 cannot understand the type of link
442 requested, the errors are displayed in a hypertext buffer. 948 requested, the errors are displayed in a hypertext buffer.
443 @kindex o 949 @kindex o
444 @findex w3-open-local 950 @findex w3-open-local
445 @vindex url-use-hypertext-dired 951 @vindex url-use-hypertext-dired
446 @item o 952 @item o
447 Opens a local file, interactively. This prompts for a local file name 953 Opens a local file, interactively. This prompts for a local file name
448 to open. The file must exist, and may be a directory. If the requested 954 to open. The file must exist, and may be a directory. If the requested
449 file is a directory and @code{url-use-hypertext-dired} is @code{nil}, 955 file is a directory and @code{url-use-hypertext-dired} is @code{nil},
450 then a dired-mode buffer is displayed. If non@code{nil}, then Emacs/W3 956 then a dired-mode buffer is displayed. If non@code{nil}, then Emacs-W3
451 automatically generates a hypertext listing of the directory. The 957 automatically generates a hypertext listing of the directory. The
452 hypertext mode is the default, so that all the keys and functions remain 958 hypertext mode is the default, so that all the keys and functions remain
453 the same. 959 the same.
454 960
455 @kindex M-s 961 @kindex M-s
456 @findex w3-save-as 962 @findex w3-search
457 @item M-s 963 @item M-s
458 Save a document to the local disk as HTML Source, Formatted Text, LaTeX 964 Perform a search, if this is a searchable index. Searching requires a
459 Source, or Binary. 965 server - Emacs-W3 can not do local file searching, as there are too many
460 966 possible types of searches people could want to do. Generally, the only
967 URL types that allow searching are HTTP, gopher, and X-EXEC.
461 @kindex Hv 968 @kindex Hv
462 @findex w3-show-history-list 969 @findex w3-show-history-list
463 @vindex w3-keep-history 970 @vindex w3-keep-history
464 @item Hv 971 @item Hv
465 If @code{url-keep-history} is non-@code{nil}, then Emacs/W3 keeps track 972 If @code{url-keep-history} is non-@code{nil}, then Emacs-W3 keeps track
466 of all the @sc{url}s visited in an Emacs session. This function takes all 973 of all the URLs visited in an Emacs session. This function takes all
467 the links that are in that internal list, and formats them as hypertext 974 the links that are in that internal list, and formats them as hypertext
468 links in a list. 975 links in a list.
469 @end table 976 @end table
470 977
471 @cindex Buffer movement 978 @cindex Buffer movement
472 And here are the commands to move around between Emacs/W3 buffers: 979 And here are the commands to move around between Emacs-W3 buffers:
473 980
474 @table @kbd 981 @table @kbd
475 @kindex l 982 @kindex l
476 @findex w3-goto-last-buffer 983 @findex w3-goto-last-buffer
477 @item l 984 @item l
502 @item HF, F 1009 @item HF, F
503 Takes one step forward along the path in the current history. Has no 1010 Takes one step forward along the path in the current history. Has no
504 effect if at the end of the session history. 1011 effect if at the end of the session history.
505 @end table 1012 @end table
506 1013
507 @node Miscellaneous, , Action, Basic Usage 1014 @node Miscellaneous, , Action, Basic Usage
508 @section Miscellaneous 1015 @section Miscellaneous
509
510 @table @kbd 1016 @table @kbd
511 @kindex M-m 1017 @kindex M-m
512 @findex w3-mail-current-document 1018 @findex w3-mail-current-document
513 @item M-m 1019 @item M-m
514 Mails the current document to someone. Choose from several different 1020 Mails the current document to someone. Choose from several different
515 formats to mail: formatted text, @sc{html} source, PostScript, or LaTeX source. 1021 formats to mail: formatted text, HTML source, PostScript, or LaTeX source.
516 When the @sc{html} source is mailed, then an appropriate <base> tag is inserted 1022 When the HTML source is mailed, then an appropriate <base> tag is inserted
517 at the beginning of the document so that relative links may be followed 1023 at the beginning of the document so that relative links may be followed
518 correctly by whoever receives the mail. 1024 correctly by whoever receives the mail.
519 @kindex M-M 1025 @kindex M-M
520 @findex w3-mail-document-under-point 1026 @findex w3-mail-document-under-point
521 @item M-M 1027 @item M-M
522 Mails the document pointed to by the hypertext link under point to someone. 1028 Mails the document pointed to by the hypertext link under point to someone.
523 Choose from several different formats to mail: formatted text, @sc{html} source, 1029 Choose from several different formats to mail: formatted text, HTML source,
524 PostScript, or LaTeX source. When the @sc{html} source is mailed, then an 1030 PostScript, or LaTeX source. When the HTML source is mailed, then an
525 appropriate <base> tag is inserted at the beginning of the document so that 1031 appropriate <base> tag is inserted at the beginning of the document so that
526 relative links may be followed correctly by whoever receives the 1032 relative links may be followed correctly by whoever receives the
527 mail. 1033 mail.
528 @kindex p 1034 @kindex p
529 @findex w3-print-this-url 1035 @findex w3-print-this-url
530 @item p 1036 @item p
531 Prints the current document. Choose from several different formats to 1037 Prints the current document. Choose from several different formats to
532 print: formatted text, @sc{html} source, PostScript (with ps-print), or by using 1038 print: formatted text, HTML source, PostScript (with ps-print), or by using
533 LaTeX and dvips). 1039 LaTeX and dvips).
534 1040
535 @findex lpr-buffer 1041 @findex lpr-buffer
536 @vindex lpr-command 1042 @vindex lpr-command
537 @vindex lpr-switches 1043 @vindex lpr-switches
538 When the formatted text is printed, the normal @code{lpr-buffer} function 1044 When the formatted text is printed, the normal @code{lpr-buffer} function
539 is called, and the variables @code{lpr-command} and @code{lpr-switches} 1045 is called, and the variables @code{lpr-command} and @code{lpr-switches}
540 control how the document is printed. 1046 control how the document is printed.
541 1047
542 When the @sc{html} source is printed, then an appropriate <base> tag is 1048 When the HTML source is printed, then an appropriate <base> tag is
543 inserted at the beginning of the document. 1049 inserted at the beginning of the document.
1050 @vindex w3-use-html2latex
1051 @vindex w3-html2latex-prog
1052 @vindex w3-html2latex-args
544 @vindex w3-print-commnad 1053 @vindex w3-print-commnad
545 @vindex w3-latex-docstyle 1054 @vindex w3-latex-docstyle
546 When postscript is printed, then the @sc{html} source of the document is 1055 When postscript is printed, then the HTML source of the document is
547 converted into LaTeX source. There are several variables controlling 1056 converted into LaTeX source. If the variable @code{w3-use-html2latex}
548 what the final LaTeX document looks like. 1057 is non-@code{nil}, then the program specified by
549 1058 @code{w3-html2latex-prog} is run in a subprocess with the arguments in
550 :: WORK :: Document the new LaTeX backend 1059 @code{w3-html2latex-args}. The @code{w3-html2latex-prog} must accept
551 1060 HTML source on its standard input and send the LaTeX output to standard
552 @table @code 1061 output. If @code{w3-use-html2latex} is @code{nil}, then an Emacs Lisp
553 @item w3-latex-use-latex2e 1062 function uses regular expressions to replace the HTML code with LaTeX
554 @vindex w3-latex-use-latex2e 1063 markup. The variable @code{w3-latex-docstyle} controls how the document
555 If non-@code{nil}, configures the LaTeX engine to use the LaTeX2e 1064 is laid out in this case, and postscript figures are printed as
556 syntax. A @code{nil} value indicates that LaTeX 2.0.9 compabibility 1065 well.
557 will be used instead.
558 @item w3-latex-docstyle
559 @vindex w3-latex-docstyle
560 The document style to use when printing or mailing converted @sc{html} files
561 in LaTeX. Good defaults are: @{article@}, [psfig,twocolumn]@{article@},
562 etc.
563 @item w3-latex-packages
564 @vindex w3-latex-packages
565 List of LaTeX packages to include. Currently this is only used if
566 @code{w3-latex-use-latex2e} is non-@code{nil}.
567 @item w3-latex-use-maketitle
568 @vindex w3-latex-use-maketitle
569 If non-@code{nil}, the LaTeX engine will use real LaTeX title pages for
570 document titles.
571 @item w3-latex-print-links
572 @vindex w3-latex-print-links
573 If non-@code{nil}, prints the @sc{url}s of hypertext links as endnotes at the
574 end of the document. If set to @code{footnote}, prints the @sc{url}'s as
575 footnotes on each page.
576 @end table
577
578 @kindex P 1066 @kindex P
579 @findex w3-print-url-under-point 1067 @findex w3-print-url-under-point
580 @item P 1068 @item P
581 Prints the document pointed to by the hypertext link under point. 1069 Prints the document pointed to by the hypertext link under point.
582 Please see the previous item for more information. 1070 Please see the previous item for more information.
583 @kindex M-x w3-insert-formatted-url 1071 @kindex M-x w3-insert-formatted-url
584 @findex w3-insert-formatted-url 1072 @findex w3-insert-formatted-url
585 @item M-x w3-insert-formatted-url 1073 @item M-x w3-insert-formatted-url
586 Insert a fully formatted @sc{html} link into another buffer. This gets the 1074 Insert a fully formatted HTML link into another buffer. This gets the
587 name and @sc{url} of either the current buffer, or, with a prefix arg, of the 1075 name and URL of either the current buffer, or, with a prefix arg, of the
588 link under point, and construct the appropriate <a...>...</a> markup and 1076 link under point, and construct the appropriate <a...>...</a> markup and
589 insert it into the desired buffer. 1077 insert it into the desired buffer.
590 @kindex M-tab 1078 @kindex M-tab
591 @findex w3-insert-this-url 1079 @findex w3-insert-this-url
592 @item M-tab 1080 @item M-tab
593 Inserts the @sc{url} of the current document into another buffer. Buffer is 1081 Inserts the URL of the current document into another buffer. Buffer is
594 prompted for in the minibuffer. With prefix arg, uses the @sc{url} of the 1082 prompted for in the minibuffer. With prefix arg, uses the URL of the
595 link under point. 1083 link under point.
596 @kindex U 1084 @kindex U
597 @findex w3-use-links 1085 @findex w3-use-links
598 @item U 1086 @item U
599 Selects one of the <LINK> tags from this document and fetch it. Links 1087 Selects one of the <LINK> tags from this document and fetch it. Links
606 first asks what type of link to follow (Normal or Reverse), then does 1094 first asks what type of link to follow (Normal or Reverse), then does
607 a @code{completing-read} on only the links that have that type of 1095 a @code{completing-read} on only the links that have that type of
608 relationship. 1096 relationship.
609 @end table 1097 @end table
610 1098
611 @node Compatibility, Stylesheets, Basic Usage, Top 1099 @node Compatibility, , , Top
1100 @comment node-name, next, previous, up
612 @chapter Compatibility with other Browsers 1101 @chapter Compatibility with other Browsers
613 Due to the popularity of several other browsers, Emacs/W3 offers an easy 1102 Due to the popularity of several other browsers, Emacs-W3 offers an easy
614 transition to its much better way of life. This ranges from being able 1103 transition to its much better way of life. This ranges from being able
615 to share the same preferences files and disk cache to actually emulating 1104 to share the same preferences files and disk cache to actually emulating
616 the keybindings used in other browsers. 1105 the keybindings used in other browsers.
617 1106
1107 @ifinfo
618 @menu 1108 @menu
619 * Emulation:: Emacs/W3 can emulate the keybindings and 1109 * Emulation:: Emacs-W3 can emulate the keybindings and
620 other behaviours of other browsers. 1110 other behaviours of other browsers.
621 * Hotlist Handling:: A hotlist is an easy way to keep track of 1111 * Hotlist Handling:: A hotlist is an easy way to keep track of
622 interesting Web pages without having to 1112 interesting Web pages without having to
623 remember the exact path to get there. 1113 remember the exact path to get there.
624 * Session History:: Keeping a history of documents visited 1114 * Session History:: Keeping a history of documents visited
625 in one Emacs sessions allows the use of 1115 in one Emacs sessions allows the use of
626 'forward' and 'back' buttons easily. 1116 'forward' and 'back' buttons easily.
627 * Global History:: Keeping a history of all the places ever 1117 * Global History:: Keeping a history of all the places ever
628 visited on the web. 1118 visited on the web.
1119 * Annotations:: Annotations allow comments on other
1120 people's Web documents without needing
1121 to change the document.
629 @end menu 1122 @end menu
630 1123 @end ifinfo
631 @node Emulation, Hotlist Handling, Compatibility, Compatibility 1124 @node Emulation, Hotlist Handling, Compatibility, Compatibility
632 @section Emulation 1125 @section Emulation
1126 :: WORK :: Document lynx emulation
1127 :: WORK :: Document netscape emulation
633 @cindex Browser emulation 1128 @cindex Browser emulation
634 @cindex Emulation of other browsers 1129 @cindex Emulation of other browsers
635 @cindex Netscape emulation 1130 @cindex Netscape emulation
636 @cindex Lynx emulation 1131 @cindex Lynx emulation
637 @findex turn-on-netscape-emulation 1132 @findex turn-on-netscape-emulation
638 @findex turn-on-lynx-emulation 1133 @findex turn-on-lynx-emulation
639 @findex w3-netscape-emulation-minor-mode 1134 @findex w3-netscape-emulation-minor-mode
640 @findex w3-lynx-emulation-minor-mode 1135 @findex w3-lynx-emulation-minor-mode
641 @vindex w3-mode-hook 1136 @vindex w3-mode-hook
642 1137
643 :: WORK :: Document lynx emulation
644 @table @kbd
645 @item Down arrow
646 Highlight next topic
647 @item Up arrow
648 Highlight previous topic
649 @item Right arrow, Return, Enter
650 Jump to highlighted topic
651 @item Left arrow
652 Return to previous topic
653 @item +
654 Scroll down to next page (Page-Down)
655 @item -
656 Scroll up to previous page (Page-Up)
657 @item SPACE
658 Scroll down to next page (Page-Down)
659 @item b
660 Scroll up to previous page (Page-Up)
661 @item C-A
662 Go to first page of the current document (Home)
663 @item C-E
664 Go to last page of the current document (End)
665 @item C-B
666 Scroll up to previous page (Page-Up)
667 @item C-F
668 Scroll down to next page (Page-Down)
669 @item C-N
670 Go forward two lines in the current document
671 @item C-P
672 Go back two lines in the current document
673 @item )
674 Go forward half a page in the current document
675 @item (
676 Go back half a page in the current document
677 @item #
678 Go to Toolbar or Banner in the current document
679 @item ?, h
680 Help (this screen)
681 @item a
682 Add the current link to a bookmark file
683 @item c
684 Send a comment to the document owner
685 @item d
686 Download the current link
687 @item e
688 Edit the current file
689 @item g
690 Goto a user specified @sc{url} or file
691 @item i
692 Show an index of documents
693 @item j
694 Execute a jump operation
695 @item k
696 Show a list of key mappings
697 @item l
698 List references (links) in current document
699 @item m
700 Return to main screen
701 @item o
702 Set your options
703 @item p
704 Print the current document
705 @item q
706 Quit
707 @item /
708 Search for a string within the current document
709 @item s
710 Enter a search string for an external search
711 @item n
712 Go to the next search string
713 @item v
714 View a bookmark file
715 @item V
716 Go to the Visited Links Page
717 @item x
718 Force submission of form or link with no-cache
719 @item z
720 Cancel transfer in progress
721 @item [backspace]
722 Go to the history Page
723 @item =
724 Show file and link info
725 @item \
726 Toggle document source/rendered view
727 @item !
728 Spawn your default shell
729 @item *
730 Toggle image_links mode on and off
731 @item [
732 Toggle pseudo_inlines mode on and off
733 @item ]
734 Send an @sc{http} @sc{head} request for the current doc or link
735 @item C-R
736 Reload current file and refresh the screen
737 @item C-W
738 Refresh the screen
739 @item C-U
740 Erase input line
741 @item C-G
742 Cancel input or transfer
743 @item C-T
744 Toggle trace mode on and off
745 @item C-K
746 Invoke the Cookie Jar Page
747 @end table
748
749 :: WORK :: Document netscape emulation
750 Uh, turn this into pretty tables about what keys are emulated.
751
752 @example
753 (define-key w3-netscape-emulation-minor-mode-map "\M-s" 'w3-save-as)
754 (define-key w3-netscape-emulation-minor-mode-map "\M-m" 'w3-mailto)
755 (define-key w3-netscape-emulation-minor-mode-map "\M-n" 'make-frame)
756 (define-key w3-netscape-emulation-minor-mode-map "\M-l" 'w3-fetch)
757 (define-key w3-netscape-emulation-minor-mode-map "\M-o" 'w3-open-local)
758 (define-key w3-netscape-emulation-minor-mode-map "\M-p" 'w3-print-this-url)
759 (define-key w3-netscape-emulation-minor-mode-map "\M-q" 'w3-quit)
760 (define-key w3-netscape-emulation-minor-mode-map "\M-f" 'w3-search-forward)
761 (define-key w3-netscape-emulation-minor-mode-map "\M-g" 'w3-search-again)
762 (define-key w3-netscape-emulation-minor-mode-map "\M-r" 'w3-reload-document)
763 (define-key w3-netscape-emulation-minor-mode-map "\M-i" 'w3-load-delayed-images)
764 (define-key w3-netscape-emulation-minor-mode-map "\M-a" 'w3-hotlist-add-document)
765 (define-key w3-netscape-emulation-minor-mode-map "\M-b" 'w3-show-hotlist)
766 (define-key w3-netscape-emulation-minor-mode-map "\M-h" 'w3-show-history-list)
767
768 @end example
769
770 @node Hotlist Handling, Session History, Emulation, Compatibility 1138 @node Hotlist Handling, Session History, Emulation, Compatibility
771 @section Hotlist Handling 1139 @section Hotlist Handling
772
773 :: WORK :: Document that it supports different types of hotlist formats 1140 :: WORK :: Document that it supports different types of hotlist formats
774 :: WORK :: Make sure everything hotlist related can be accessed via 'h' 1141 :: WORK :: Make sure everything hotlist related can be accessed via 'h'
775 In order to avoid having to traverse many documents to get to the same 1142 In order to avoid having to traverse many documents to get to the same
776 document over and over, Emacs/W3 supports a ``hotlist'' like Mosaic. This is 1143 document over and over, Emacs-W3 supports a ``hotlist'' like Mosaic. This is
777 a file that contains @sc{url}s and aliases. Hotlists allow quick access to any 1144 a file that contains URLs and aliases. Hotlists allow quick access to any
778 document in the Web, providing it has been visited and added to the hotlist. 1145 document in the Web, providing it has been visited and added to the hotlist.
779 The variable @code{w3-hotlist-file} determines where this information 1146 The variable @code{w3-hotlist-file} determines where this information
780 is saved. The structure of the file is compatible with Mosaic's 1147 is saved. The structure of the file is compatible with Mosaic's
781 hotlist file, so this defaults to @file{~/.mosaic-hotlist-default}. 1148 hotlist file, so this defaults to @file{~/.mosaic-hotlist-default}.
782 1149
786 @findex w3-hotlist-add-document 1153 @findex w3-hotlist-add-document
787 @vindex w3-hotlist-file 1154 @vindex w3-hotlist-file
788 @item a 1155 @item a
789 Adds the current document to the hotlist, with the buffer name as its 1156 Adds the current document to the hotlist, with the buffer name as its
790 identifier. Modifies the file specified by @code{w3-hotlist-file}. If 1157 identifier. Modifies the file specified by @code{w3-hotlist-file}. If
791 this is given a prefix-argument (via @kbd{C-u}), the title is prompted 1158 this is given a @var{prefix-argument} (via @kbd{C-u}), the title is
792 for instead of automatically defaulting to the document title. 1159 prompted for instead of automatically defaulting to the
1160 document title.
793 1161
794 @findex w3-hotlist-refresh 1162 @findex w3-hotlist-refresh
795 @vindex w3-hotlist-file 1163 @vindex w3-hotlist-file
796 @kindex hR 1164 @kindex hR
797 @item hR 1165 @item hR
823 @key{tab} key shows partial completions. 1191 @key{tab} key shows partial completions.
824 1192
825 @item hv 1193 @item hv
826 @kindex hv 1194 @kindex hv
827 @findex w3-show-hotlist 1195 @findex w3-show-hotlist
828 Converts the hotlist into @sc{html} and displays it. 1196 Converts the hotlist into HTML and displays it.
829 @item ha 1197 @item ha
830 @kindex ha 1198 @kindex ha
831 @findex w3-hotlist-apropos 1199 @findex w3-hotlist-apropos
832 Shows the hotlist entries matching a regular expression. 1200 Shows the hotlist entries matching a regular expression.
833 @item hA 1201 @item hA
836 Appends another hotlist file to the one currently in memory. 1204 Appends another hotlist file to the one currently in memory.
837 @end table 1205 @end table
838 @node Session History, Global History, Hotlist Handling, Compatibility 1206 @node Session History, Global History, Hotlist Handling, Compatibility
839 @section History 1207 @section History
840 @cindex History Lists 1208 @cindex History Lists
841 1209 Almost all web browsers keep track of the URLs followed from a page, so
842 Almost all web browsers keep track of the @sc{url}s followed from a page, so
843 that it can provide @b{forward} and @b{back} buttons to keep a @i{path} 1210 that it can provide @b{forward} and @b{back} buttons to keep a @i{path}
844 of @sc{url}s that can be traversed easily. 1211 of URLs that can be traversed easily.
845
846 @vindex url-keep-history 1212 @vindex url-keep-history
847 If the variable @code{url-keep-history} is @code{t}, then Emacs/W3 1213 If the variable @code{url-keep-history} is @code{t}, then Emacs-W3
848 keeps a list of all the @sc{url}s visited in a session. 1214 keeps a list of all the URLs visited in a session.
849
850 @findex w3-show-history 1215 @findex w3-show-history
851 To view a listing of the history for this session of Emacs/W3, use 1216 To view a listing of the history for this session of Emacs-W3, use
852 @code{M-x w3-show-history} from any buffer, and Emacs/W3 generates an 1217 @code{M-x w3-show-history} from any buffer, and Emacs-W3 generates an
853 @sc{html} document showing every @sc{url} visited since Emacs started (or 1218 HTML document showing every URL visited since Emacs started (or
854 cleared the history list), and then format it. Any of the links can 1219 cleared the history list), and then format it. Any of the links can
855 be chosen and followed to the original document. To clear the history 1220 be chosen and followed to the original document. To clear the history
856 list, choose 'Clear History' from the 'Options' menu. 1221 list, choose 'Clear History' from the 'Options' menu.
857 1222
858 @findex w3-forward-in-history 1223 @findex w3-forward-in-history
859 @findex w3-backward-in-history 1224 @findex w3-backward-in-history
860 @findex w3-fetch 1225 @findex w3-fetch
861 Another twist on the history list mechanism is the fact that all 1226 Another twist on the history list mechanism is the fact that all
862 Emacs/W3 buffers remember what @sc{url}, buffer, and buffer position of the 1227 Emacs-W3 buffers remember what URL, buffer, and buffer position of the
863 last document, and also keeps track of the next location jumped @b{to} 1228 last document, and also keeps track of the next location jumped @b{to}
864 from that buffer. This means that the user can go forwards and 1229 from that buffer. This means that the user can go forwards and
865 backwards very easily along the path taken to reach a particular 1230 backwards very easily along the path taken to reach a particular
866 document. To go forward, use the function @code{w3-forward-in-history}, 1231 document. To go forward, use the function @code{w3-forward-in-history},
867 to go backward, use the function @code{w3-backward-in-history}. 1232 to go backward, use the function @code{w3-backward-in-history}.
868 1233
869 @node Global History, , Session History, Compatibility 1234 @node Global History, Annotations, Session History, Compatibility
870 @section Global History 1235 @section Global History
871
872 :: WORK :: Document that the global history can have diff. formats 1236 :: WORK :: Document that the global history can have diff. formats
873 Most web browsers also support the idea of a ``history'' of @sc{url}s the 1237 Most web browsers also support the idea of a ``history'' of URLs the
874 user has visited, and it displays them in a different style than normal 1238 user has visited, and it displays them in a different style than normal
875 @sc{url}s. 1239 URLs.
876 1240
877 @vindex url-keep-history 1241 @vindex url-keep-history
878 @vindex url-global-history-file 1242 @vindex url-global-history-file
879 If the variable @code{url-keep-history} is @code{t}, then Emacs/W3 1243 If the variable @code{url-keep-history} is @code{t}, then Emacs-W3
880 keeps a list of all the @sc{url}s visited in a session. The file is 1244 keeps a list of all the URLs visited in a session. The file is
881 automatically written to disk when exiting emacs. The list is added to 1245 automatically written to disk when exiting emacs. The list is added to
882 those already in the file specified by @code{url-global-history-file}, 1246 those already in the file specified by @code{url-global-history-file},
883 which defaults to @file{~/.mosaic-global-history}. 1247 which defaults to @file{~/.mosaic-global-history}.
884 1248
885 If any @sc{url} in the list is found in the file, it is not saved, but new 1249 If any URL in the list is found in the file, it is not saved, but new
886 ones are added at the end of the file. 1250 ones are added at the end of the file.
887 1251
888 The function that saves the global history list is smart enough to 1252 The function that saves the global history list is smart enough to
889 notice what style of history list is being used (Netscape, Emacs/W3, or 1253 notice what style of history list is being used (Netscape, Emacs-W3, or
890 XMosaic), and writes out the new additions appropriately. 1254 XMosaic), and writes out the new additions appropriately.
891 1255
892 @cindex Completion of URLs 1256 @cindex Completion of URLs
893 @cindex Usefulness of global history 1257 @cindex Usefulness of global history
894 One of the nice things about keeping a global history files is that Emacs/W3 1258 One of the nice things about keeping a global history files is that Emacs-W3
895 can use it as a completion table. When doing @kbd{M-x w3-fetch}, pressing 1259 can use it as a completion table. When doing @kbd{M-x w3-fetch}, pressing
896 the @kbd{tab} or @kbd{space} key will show all completions for a 1260 the @kbd{tab} or @kbd{space} key will show all completions for a
897 partial @sc{url}. This is very useful, especially for very long @sc{url}s that 1261 partial URL. This is very useful, especially for very long URLs that
898 are not in a hotlist, or for seeing all the pages from a particular web 1262 are not in a hotlist, or for seeing all the pages from a particular web
899 site before choosing which to retrieve. 1263 site before choosing which to retrieve.
900 1264
901 @node Stylesheets, Supported URLs, Compatibility, Top 1265 @node Annotations, Group Annotations, Global History, Compatibility
902 @chapter Stylesheets 1266 @section Annotations
903 The way in which Emacs/W3 formats a document is very customizable. All 1267 @cindex Annotations
904 formatting is now controlled by a default stylesheet set by the user 1268 Mosaic can @i{annotate} documents. Annotations are comments about the
905 with the @code{w3-default-stylesheet} variable. Emacs/W3 currently 1269 current document, and these annotations appear as a link to the comments
906 supports the @sc{W3C} recommendation for Cascading Style Sheets, Level 1 1270 at the end of the document. The original file is not changed.
907 (commonly known as @sc{CSS1}) with a few experimental items from other 1271
908 W3C proposals. Wherever Emacs/W3 diverges from the specification, it 1272 @ifinfo
909 will be clearly documented, and will be changed once a full standard is
910 available.
911
912 Support for @sc{DSSSL} is progressing, but spare time is at an all-time
913 low. If anyone would like to help, please contact the author.
914
915 The following sections closely parallel the @sc{CSS1} specification so
916 it should be very easy to look up what Emacs/W3 supports when browsing
917 through the @sc{CSS1} specification. Please note that a lot of the text
918 in the following sections comes directly from the specification as
919 well.
920
921 @menu 1273 @menu
922 * Terminology:: Terms used in the rest of this chapter. 1274 * Group Annotations:: Annotations accessible by everyone
923 * Basic Concepts:: Why are stylesheets useful? Getting started. 1275 * Personal Annotations:: Private annotations only accessible
924 * Pseudo-Classes/Elements:: Special classes for elements. 1276 to the user who created them
925 * The Cascade:: How stylesheets are combined.
926 * Properties:: What properties you can set on elements.
927 * Units:: What you can set them to.
928 @end menu 1277 @end menu
929 1278 @end ifinfo
930 @node Terminology, Basic Concepts, Stylesheets, Stylesheets 1279 @node Group Annotations, Personal Annotations, Annotations, Annotations
931 @section Terminology 1280 @subsection Group Annotations
932 1281 @cindex Group Annotations
933 @table @dfn 1282 @b{@i{NOTE}}: The group annotation experiment has been terminated. It
934 @item attribute 1283 will be replaced with support on the server side for adding <LINK> tags
935 HTML attribute, ie: @samp{align=center} - align is the attribute. 1284 to documents.
936 @item author 1285
937 The author of an HTML document. 1286 @node Personal Annotations, , Group Annotations, Annotations
938 @item block-level element 1287 @subsection Personal Annotations
939 An element which has a line break before and after (e.g. 'H1' in @sc{HTML}). 1288 @cindex Personal Annotations
940 @item canvas 1289 @vindex w3-personal-annotation-directory
941 The part of the UA's drawing surface onto which documents are rendered. 1290 Emacs-W3 looks in the directory specified by
942 @item child element 1291 @code{w3-personal-annotation-directory} (defaults to
943 A subelement in @sc{sgml} terminology. 1292 @file{~/.mosaic-personal-annotations}). Any personal annotations for a
944 @item contextual selector 1293 document are automatically appended when it is retrieved.
945 A selector that matches elements based on their position in the document 1294
946 structure. A contextual selector consists of several simple 1295 :: WORK :: Document the new 'a' prefix keymap
947 selectors. E.g., the contextual selector 'H1.initial B' consists of two 1296 :: WORK :: Tell where the annotations are stored
948 simple selectors, 'H1.initial' and 'B'. 1297
949 @item @sc{css} 1298 @findex w3-add-personal-annotation
950 Cascading Style Sheets. 1299 @vindex w3-annotation-mode
951 @item declaration 1300 To add a new personal annotation, type @kbd{M-x
952 A property (e.g. 'font-size') and a corresponding value (e.g. '12pt'). 1301 w3-add-personal-annotation}. This creates a new buffer, in the mode
953 @item designer 1302 specified by @code{w3-annotation-mode}. This defaults to
954 The designer of a style sheet. 1303 @code{html-mode}. If this variable is @code{nil}, or it points to an
955 @item document 1304 undefined function, then @code{default-major-mode} is consulted.
956 @sc{html} document. 1305
957 @item element 1306 A minor mode redefines @kbd{C-c C-c} to complete the annotation and
958 @sc{html} element. 1307 store it on the local disk.
959 @item element type 1308
960 A generic identifier in @sc{sgml} terminology. 1309 @findex w3-delete-personal-annotation
961 @item fictional tag sequence 1310 To delete a personal annotation, it must be the current page. Once
962 A tool for describing the behavior of pseudo-classes and pseudo-elements. 1311 reading the annotation, @kbd{M-x w3-delete-personal-annotation} will
963 @item font size 1312 remove it. This deletes the file containing the annotation, and any
964 The size for which a font is designed. Typically, the size of a font is 1313 references to it in the annotation log file.
965 approximately equal to the distance from the bottom of the lowest letter 1314
966 with a descender to the top of the tallest letter with an ascender and 1315 Editing personal annotations is not yet supported.
967 (optionally) with a diacritical mark. 1316
968 @item @sc{html} extension 1317 @node Controlling Formatting, General Formatting, Top, Top
969 Markup introduced by UA vendors, most often to support certain visual 1318 @comment node-name, next, previous, up
970 effects. The @sc{font}, @sc{center} and @sc{blink} elements are examples 1319 @chapter Controlling Formatting
971 of HTML extensions, as is the @sc{bgcolor} attribute. One of the goals 1320 @cindex Customizing formatting
972 of @sc{css} is to provide an alternative to @sc{html} extensions. 1321 @cindex Specifying Fonts
973 @item inline element 1322 @cindex Fonts
974 An element which does not have a line break before and after 1323 @cindex Colors
975 (e.g. '@sc{strong}' in @sc{html}) 1324 How Emacs-W3 formats a document is very customizable. How a document is
976 @item intrinsic dimensions 1325 displayed depends on whether the user is on a terminal
977 The width and height as defined by the element itself, not imposed by 1326 capable of graphics and a few variables.
978 the surroundings. In this specification it is assumed that all replaced 1327
979 elements -- and only replaced elements -- come with intrinsic 1328 The following sections describe in more detail how to change the
980 dimensions. 1329 formatting of a document.
981 @item parent element 1330
982 The containing element in @sc{sgml} terminology. 1331 @ifinfo
983 @item pseudo-element 1332 @menu
984 Pseudo-elements are used in @sc{css} selectors to address typographical 1333 * General Formatting:: Changing general things about a
985 items (e.g. the first line of an element) rather than structural 1334 document.
986 elements. 1335 * Character based terminals:: Changing how a document is
987 @item pseudo-class 1336 displayed on a non-graphics
988 Pseudo-classes are used in @sc{css} selectors to allow information 1337 terminal (vt100, etc.@:) or if
989 external to the @sc{html} source (e.g. the fact that an anchor has been 1338 @code{w3-delimit-emphasis} is @code{t}.
990 visited or not) to classify elements. 1339 * Graphics workstations:: Changing how a document is
991 @item property 1340 displayed on a graphics terminal
992 A stylistic parameter that can be influenced through @sc{css}. 1341 (Xwindows, Windows, NeXTstep,
993 @item reader 1342 OS/2, etc.)
994 The person for whom the document is rendered. 1343 * Inlined images:: How to specify how Emacs-W3
995 @item replaced element 1344 handles inlined images/mpegs.
996 An element that the @sc{css} formatter only knows the intrinsic 1345 @end menu
997 dimensions of. In @sc{html}, @sc{img}, @sc{input}, @sc{textarea}, 1346 @end ifinfo
998 @sc{select} and @sc{object} elements can be examples of replaced 1347 @node General Formatting, Character based terminals, Controlling Formatting, Controlling Formatting
999 elements. E.g., the content of the @sc{img} element is often replaced by 1348 @section General formatting conventions
1000 the image that the @sc{src} attribute points to. @sc{css1} does not 1349 @iftex
1001 define how the intrinsic dimensions are found. 1350 @heading Setting the fill column
1002 @item rule 1351 @end iftex
1003 A declaration (e.g. 'font-family: helvetica') and its selector 1352 @ifinfo
1004 (e.g. @sc{'H1'}). 1353 @center --------------------
1005 @item selector 1354 @center Setting the fill column
1006 A string that identifies what elements the corresponding rule applies 1355 @center --------------------
1007 to. A selector can either be a simple selector (e.g. 'H1') or a 1356 @end ifinfo
1008 contextual selector (e.g. @sc{'h1 b'}) which consists of several simple 1357 @vindex fill-column
1009 selectors. 1358 @vindex w3-right-border
1010 @item @sc{sgml} 1359 Each time a document is parsed, the @code{fill-column} is recalculated
1011 Standard Generalized Markup Language, of which @sc{html} is an 1360 using @code{window-width} and @code{w3-right-border}.
1012 application. 1361 @code{w3-right-border} is an integer specifying how much room at the
1013 @item simple selector 1362 right edge of the screen to leave blank. The @code{fill-column} is set
1014 A selector that matches elements based on the element type and/or 1363 to @code{(- (window-width) @code{w3-right-border})}.
1015 attributes, and not the element's position in the document 1364 @iftex
1016 structure. E.g., 'H1.initial' is a simple selector. 1365 @heading Formatting of hypertext links
1017 @item style sheet 1366 @end iftex
1018 A collection of rules. 1367 @ifinfo
1019 @item @sc{ua} 1368 @center --------------------
1020 User Agent, often a web browser or web client. 1369 @center Formatting of hypertext links
1021 @item user 1370 @center --------------------
1022 Synonymous with reader. 1371 @end ifinfo
1023 @item weight 1372 @vindex w3-delimit-links
1024 The priority of a rule. 1373 @vindex w3-link-start-delimiter
1025 @end table 1374 @vindex w3-link-end-delimiter
1026 1375 If the variable @code{w3-delimit-links} is non-@code{nil} (the default
1027 @node Basic Concepts, Pseudo-Classes/Elements, Terminology, Stylesheets 1376 for text-terminals), then hypertext links are surrounded by text
1028 @section Basic Concepts 1377 specified by the user. The variables @code{w3-link-start-delimiter} and
1029 1378 @code{w3-link-end-delimiter} control what text is at the start and end
1030 Designing simple style sheets is easy. One needs only to know a little 1379 of a hypertext link. These variables are cons-pairs of two
1031 HTML and some basic desktop publishing terminology. E.g., to set the 1380 strings.
1032 text color of 'H1' elements to blue, one can say: 1381
1033 1382 If a link has never been visited before (it is not in the @i{global
1034 @example 1383 history}), then the @code{car} of these variables is inserted at the
1035 H1 @{ color: blue @} 1384 start and end of the link. If the link has been visited before, then
1385 the @code{cdr} is inserted. So, links look like:
1386
1387 @example
1388 [[This is a hypertext link]] that has never been visited.
1389 @{@{This one, however@}@} has been seen before at some point in time.
1036 @end example 1390 @end example
1037 1391
1038 The example above is a simple CSS rule. A rule consists of two main 1392 @iftex
1039 parts: selector ('H1') and declaration ('color: blue'). The declaration 1393 @heading Formatting of lists
1040 has two parts: property ('color') and value ('blue'). While the example 1394 @end iftex
1041 above tries to influence only one of the properties needed for rendering 1395 @ifinfo
1042 an HTML document, it qualifies as a style sheet on its own. Combined 1396 @center --------------------
1043 with other style sheets (one fundamental feature of CSS is that style 1397 @center Formatting of lists
1044 sheets are combined) it will determine the final presentation of the 1398 @center --------------------
1045 document. 1399 @end ifinfo
1046 1400 @cindex Indentation
1047 The selector is the link between the HTML document and the style sheet, and 1401 @vindex w3-indent-level
1048 all HTML element types are possible selectors. 1402 There are several different ways to control the formatting of lists.
1049 1403 The most obvious is how deeply they are indented relative to the rest of
1050 @node Pseudo-Classes/Elements, The Cascade, Basic Concepts, Stylesheets 1404 the paragraphs in the document. To control this, set the
1051 @section Pseudo-Classes/Elements 1405 variable @code{w3-indent-level}. This is the number of spaces to
1052 1406 indent lists and other items requiring special margins.
1053 In @sc{css1}, style is normally attached to an element based on its 1407
1054 position in the document structure. This simple model is sufficient for 1408 @vindex w3-list-chars-assoc
1055 a wide variety of styles, but doesn't cover some common effects. The 1409 Another thing that is easy to change about lists is the bullet character
1056 concept of pseudo-classes and pseudo-elements extend addressing in 1410 put at the front of each list item. This is controlled by the variable
1057 @sc{css1} to allow external information to influence the formatting 1411 @code{w3-list-chars-assoc}, which is an assoc list. This is a list of
1058 process. 1412 lists, each sublist describing what to put at the start of each
1059 1413 particular list type. The @code{car} of this list should be a symbol
1060 Pseudo-classes and pseudo-elements can be used in @sc{css} selectors, 1414 (@b{not} a string) representing the type of list (e.g., @samp{ul}).
1061 but do not exist in the @sc{html} source. Rather, they are "inserted" by 1415 The rest of the list should consist of strings to insert at certain
1062 the @sc{ua} under certain conditions to be used for addressing in style 1416 levels of lists. The @code{n}th element of this list is used when the
1063 sheets. They are referred to as "classes" and "elements" since this is a 1417 list is nested @code{n + 1} levels. If the list is not long enough to
1064 convenient way of describing their behavior. More specifically, their 1418 define a string for a certain nesting level, then it defaults to either
1065 behavior is defined by a fictional tag sequence. 1419 a '*' or a '.'.
1066 1420 @iftex
1067 Pseudo-elements are used to address sub-parts of elements, while 1421 @heading Formatting of directory listings
1068 pseudo-classes allow style sheets to differentiate between different 1422 @end iftex
1069 element types. 1423 @ifinfo
1070 1424 @center --------------------
1071 The only support pseudo-classes in Emacs/W3 are on the anchor tag 1425 @center Formatting of directory listings
1072 (<a>...</a>). 1426 @center --------------------
1073 1427 @end ifinfo
1074 User agents commonly display newly visited anchors differently from 1428 @vindex url-use-hypertext-dired
1075 older ones. In @sc{css1}, this is handled through pseudo-classes on the 1429 When Emacs-W3 encounters a link to a directory (whether by local file access
1076 'A' element: 1430 or via FTP), it can either create an HTML document on the fly, or use
1077 1431 @code{dired-mode} to peruse the listing. The variable
1432 @code{url-use-hypertext-dired} controls this behavior.
1433
1434 If the value is @code{t}, Emacs-W3 uses @code{directory-files} to list them
1435 out and transform the directory into a hypertext document, then pass it
1436 through the parser like any other document.
1437
1438 If the value is @code{nil}, just pass the directory off to dired using
1439 @code{find-file}. Using this option loses all the hypertext abilities
1440 of Emacs-W3, and the users is unable to load documents in the directory
1441 directly into Emacs-W3 by clicking with the mouse, etc.
1442
1443 @ignore
1444 @cindex Downloading multiple files
1445 @cindex FTP'ing multiple files
1446 @vindex url-forms-based-ftp
1447 A new option in the 2.2 series is @code{url-forms-based-ftp} - this is
1448 still in the experimental stages, but can be useful. If
1449 @code{url-forms-based-ftp} is @code{t}, then all automatically generated
1450 directory listings will have a form mixed in with the file listing.
1451 Each file will have a checkbox next to it, and a row of buttons at the
1452 bottom of the screen. Selecting one of the buttons at the bottom of the
1453 screen will take the designated action on all the marked files.
1454 Currently, only deleting and copying marked files is supported.
1455 @end ignore
1456 @iftex
1457 @heading Formatting of gopher directories
1458 @end iftex
1459 @ifinfo
1460 @center --------------------
1461 @center Formatting of gopher directories
1462 @center --------------------
1463 @end ifinfo
1464 @vindex w3-use-hypertext-gopher
1465 @cindex Gopher+
1466 @cindex ASK blocks
1467 There are two different ways of viewing gopher links. The built-in
1468 support that converts gopher directories into HTML, or the
1469 @file{gopher.el} package by Scott Snyder (@i{snyder@@fnald0.fnal.gov}).
1470 The variable that controls this is @code{w3-use-hypertext-gopher}. If
1471 set to @code{nil}, then @file{gopher.el} is used. Any other value
1472 causes Emacs-W3 to use its internal gopher support. If using
1473 @file{gopher.el}, all the hypertext capabilities of Emacs-W3 are lost.
1474 All the functionality of @file{gopher.el} is now available in the
1475 hypertext version, and the hypertext version supports Gopher+ and ASK
1476 blocks.
1477
1478 @vindex w3-gopher-labels
1479 The main way to control the display of gopher directories is by the
1480 variable @code{w3-gopher-labels}. This variable controls the text that
1481 is inserted at the front of each item. This is an assoc list of gopher
1482 types (as one character strings), and a string to insert just after the
1483 list item. All the normal gopher types are defined. Entries should be
1484 similar to: @samp{("0" . "(TXT)")}. I have tried to keep all the tags
1485 to three characters plus two parentheses.
1486 @iftex
1487 @heading Creating a horizontal rule
1488 @end iftex
1489 @ifinfo
1490 @center --------------------
1491 @center Creating a horizontal rule
1492 @center --------------------
1493 @end ifinfo
1494 @vindex w3-horizontal-rule-char
1495 Horizontal rules (@b{<HR>} tags in HTML[+]) are used to separate chunks
1496 of a document, and is meant to be rendered as a solid line across the
1497 page. Some terminals display characters differently, so the variable
1498 @code{w3-horizontal-rule-char} controls which character is used to draw a
1499 horizontal bar. This variable must be the ASCII value of the character,
1500 @b{not a string}. The variable is passed through make-string whenever a
1501 horizontal rule of a certain width is necessary.
1502
1503 @node Character based terminals, Graphics workstations, General Formatting, Controlling Formatting
1504 @section On character based terminals
1505 @vindex w3-delimit-emphasis
1506 On character based terminals, there is no easy way to show that a
1507 certain range of text is in bold or italics. If the variable
1508 @code{w3-delimit-emphasis} is non-@code{nil}, then Emacs-W3 can insert
1509 characters before and after character formatting commands in HTML
1510 documents. The defaul value of @code{w3-delimit-emphasis} is
1511 automatically set based on the type of window system and version of
1512 Emacs being used.
1513
1514 @vindex w3-header-chars-assoc
1515 :: WORK ::
1516
1517 @findex w3-upcase-region
1518 @code{w3-header-chars-assoc} is an assoc list of header tags and a list
1519 of formatting instructions. The @code{car} of the list is the level of
1520 the header (1--6). The rest of the list should contain three items.
1521 The first item is text to insert before the header. The second item is
1522 text to insert after the header. Both should have reserved characters
1523 converted to their HTML[+] entity definitions. The third item is a
1524 function to call on the area the header is in. This function is called
1525 with arguments specifying the start and ending character positions of
1526 the header. The starting point is always first. To convert a region to
1527 upper case, please use @code{w3-upcase-region} instead of
1528 @code{upcase-region}, so that entities are converted properly.
1529
1530 @node Graphics workstations, Inlined images, Character based terminals, Controlling Formatting
1531 @section With graphics workstations
1532 Starting with the first public release of version 2.3.0, all formatting
1533 is controlled by the use of stylesheets.
1534
1535 :: WORK :: Graphic workstation stuff - redo for stylesheets
1536
1537 @node Inlined images, , Graphics workstations, Controlling Formatting
1538 @cindex Inlined images
1539 @cindex Images
1540 @cindex Movies
1541 @cindex Inlined MPEGs
1542 @cindex MPEGs
1543 When running in Lucid Emacs 19.10 or XEmacs 19.11 and higher, Emacs-W3 can
1544 display inlined images and MPEG movies. There are several variables that
1545 control how and when the images are displayed.
1546
1547 @cindex Netpbm
1548 @cindex Pbmplus
1549 @vindex w3-graphic-converter-alist
1550 Since Lucid/XEmacs only natively understands XPixmaps and XBitmaps, GIFs
1551 and other image types must first be converted to one of these formats.
1552 To do this, the @b{netpbm utilities}@footnote{Available via anonymous
1553 ftp from ftp.x.org:/R5contrib/netpbm-1mar1994.tar.gz, and most large ftp
1554 sites.} programs are normally used. This is a suite of freeware image
1555 conversion tools. The variable @code{w3-graphic-converter-alist}
1556 controls how each image type is converted. This is an assoc list, keyed
1557 on the MIME content-type. The @code{car} is the content-type, and the
1558 @code{cdr} is a string suitable to pass to @code{format}. A %s in this
1559 string will be replaced with a converter from the ppm image format to an
1560 XPixmap (or XBitmap, if being run on a monochrome display). By default,
1561 the Emacs-W3 browser has converters for:
1562
1563 @enumerate
1564 @item
1565 image/x-xbitmap
1566 @item
1567 image/xbitmap
1568 @item
1569 image/xbm
1570 @item
1571 image/gif
1572 @item
1573 image/jpeg
1574 @item
1575 image/x-fax
1576 @item
1577 image/x-raster
1578 @item
1579 image/windowdump
1580 @item
1581 image/x-icon
1582 @item
1583 image/portable-graymap
1584 @item
1585 image/portable-pixmap
1586 @item
1587 image/x-pixmap
1588 @item
1589 image/x-xpixmap
1590 @item
1591 image/pict
1592 @item
1593 image/x-macpaint
1594 @item
1595 image/x-targa
1596 @item
1597 image/tiff
1598 @end enumerate
1599
1600 @vindex w3-color-max-blue
1601 @vindex w3-color-max-green
1602 @vindex w3-color-max-red
1603 @vindex w3-color-use-reducing
1604 @vindex w3-color-filter
1605 Since most displays are (sadly) not 24-bit, Emacs-W3 can automatically
1606 dither an image, so that it does not fill up the application' colormap too
1607 quickly. If @code{w3-color-use-reducing} is non-@code{nil}, then the
1608 images will use reduced colors. If @code{w3-color-filter} is @code{eq} to
1609 @code{'ppmquant}, then the ppmquant program will be used. If @code{eq} to
1610 @code{'ppmdither}, then the ppmdither program will be used. The ppmdither
1611 program tends to give better results. The values of
1612 @code{w3-color-max-red}, @code{w3-color-max-blue}, and
1613 @code{w3-color-max-green} control how many colors the inlined images can
1614 use. If using ppmquant, then the product of these three variables is used
1615 as the maximum number of colors per image. If using ppmdither, then only
1616 the set number of color cells can be allocated per image. See the man
1617 pages for ppmdither and ppmquant for more information on how the dithering
1618 is actually done. @code{w3-color-filter} may also be a string, specifying
1619 exactly what external filter to use. An example is: @samp{ppmquant -fs
1620 -map ~/pixmaps/colormap.ppm}.
1621
1622 @cindex MPEGs
1623 @cindex Inlined animations
1624 When running in XEmacs 19.11 or XEmacs 19.12, Emacs-W3 can insert an
1625 MPEG movie in the middle of a buffer.
1626
1627 :: WORK :: Need a pointer to the new EMBED Internet Draft ::
1628
1629 The basic syntax is:
1078 @example 1630 @example
1079 A:link @{ color: red @} /* unvisited link */ 1631 <embed href="somevideo.mpg" type="video/mpeg">
1080 A:visited @{ color: blue @} /* visited links */
1081 A:active @{ color: lime @} /* active links */
1082 @end example 1632 @end example
1083 1633
1084 All 'A' elements with an 'HREF' attribute will be put into one and only 1634 @vindex w3-mpeg-args
1085 one of these groups (i.e. target anchors are not affected). UAs may 1635 @vindex w3-mpeg-program
1086 choose to move an element from 'visited' to 'link' after a certain 1636 This requires a special version of the standard @file{mpeg_play} mpeg
1087 time. An 'active' link is one that is currently being selected (e.g. by 1637 player. Patches against the 2.0 version are available at
1088 a mouse button press) by the reader. 1638 ftp://ftp.cs.indiana.edu/pub/elisp/w3/mpeg_patch. The variable
1089 1639 @code{w3-mpeg-program} should point to this executable, and
1090 The formatting of an anchor pseudo-class is as if the class had been 1640 @code{w3-mpeg-args} should be a list of any additional arguments to be
1091 inserted manually. A @sc{ua} is not required to reformat a currently 1641 passed to the player. By default, this includes @var{-loop}, so the
1092 displayed document due to anchor pseudo-class transitions. E.g., a style 1642 mpeg plays continuously.
1093 sheet can legally specify that the 'font-size' of an 'active' link 1643
1094 should be larger that a 'visited' link, but the UA is not required to 1644 @cindex Delaying inlined images
1095 dynamically reformat the document when the reader selects the 'visited' 1645 @cindex Delaying inlined animations
1096 link. 1646 @vindex w3-delay-image-loads
1097 1647 @vindex w3-delay-mpeg-loads
1098 Pseudo-class selectors do not match normal classes, and vice versa. The 1648 Because images and movies can take up an incredible amount of bandwidth,
1099 style rule in the example below will therefore not have any influence: 1649 it is useful to be able to control whether they are loaded or not. By
1100 1650 default, images and movies are loaded automatically, but the variables
1101 @example 1651 @code{w3-delay-image-loads} and @code{w3-delay-mpeg-loads} control this.
1102 A:link @{ color: red @} 1652 If set to non-@code{nil}, then the images or movies are not
1103 1653 loaded until explicitly requested by the user.
1104 <A CLASS=link NAME=target5> ... </A> 1654
1105 @end example 1655 @cindex Loading delayed images
1106 1656 @cindex Loading delayed movies
1107 In @sc{css1}, anchor pseudo-classes have no effect on elements other 1657 @findex w3-load-delayed-images
1108 than 'A'. Therefore, the element type can be omitted from the selector: 1658 @findex w3-load-delayed-mpegs
1109 1659 To load any delayed images, use the function
1110 @example 1660 @code{w3-load-delayed-images}. Its counterpart for delayed movies is
1111 A:link @{ color: red @} 1661 @code{w3-load-delayed-mpegs}
1112 :link @{ color: red @} 1662
1113 @end example 1663 @node MIME Support, Adding MIME types based on file extensions, , Top
1114
1115 The two selectors above will select the same elements in CSS1.
1116
1117 Pseudo-class names are case-insensitive.
1118
1119 Pseudo-classes can be used in contextual selectors:
1120
1121 @example
1122 A:link IMG @{ border: solid blue @}
1123 @end example
1124
1125 Also, pseudo-classes can be combined with normal classes:
1126
1127 @example
1128 A.external:visited @{ color: blue @}
1129
1130 <A CLASS=external HREF="http://out.side/">external link</A>
1131 @end example
1132
1133 If the link in the above example has been visited, it will be rendered
1134 in blue. Note that normal class names precede pseudo-classes in the
1135 selector.
1136
1137 @node The Cascade, Properties, Pseudo-Classes/Elements, Stylesheets
1138 @section The Cascade
1139
1140 In @sc{css}, more than one style sheet can influence the presentation
1141 simultaneously. There are two main reasons for this feature: modularity
1142 and author/reader balance.
1143
1144 @table @i
1145 @item modularity
1146 A style sheet designer can combine several (partial) style sheets to
1147 reduce redundancy:
1148
1149 @example
1150 @@import url(http://www.style.org/pastoral);
1151 @@import url(http://www.style.org/marine);
1152
1153 H1 @{ color: red @} /* override imported sheets */
1154 @end example
1155 @item author/reader balance
1156 Both readers and authors can influence the presentation through style
1157 sheets. To do so, they use the same style sheet language thus reflecting
1158 a fundamental feature of the web: everyone can become a publisher. The
1159 @sc{ua} is free to choose the mechanism for referencing personal style
1160 sheets.
1161 @end table
1162
1163 Sometimes conflicts will arise between the style sheets that influence
1164 the presentation. Conflict resolution is based on each style rule having
1165 a weight. By default, the weights of the reader's rules are less than
1166 the weights of rules in the author's documents. I.e., if there are
1167 conflicts between the style sheets of an incoming document and the
1168 reader's personal sheets, the author's rules will be used. Both reader
1169 and author rules override the @sc{ua}'s default values.
1170
1171 The imported style sheets also cascade with each other, in the order
1172 they are imported, according to the cascading rules defined below. Any
1173 rules specified in the style sheet itself override rules in imported
1174 style sheets. That is, imported style sheets are lower in the cascading
1175 order than rules in the style sheet itself. Imported style sheets can
1176 themselves import and override other style sheets, recursively.
1177
1178 In @sc{css1}, all '@@import' statements must occur at the start of a
1179 style sheet, before any declarations. This makes it easy to see that
1180 rules in the style sheet itself override rules in the imported style
1181 sheets.
1182
1183 NOTE: The use of !important in @sc{css} stylesheets is unsupported at
1184 this time.
1185
1186 Conflicting rules are intrinsic to the CSS mechanism. To find the value
1187 for an element/property combination, the following algorithm must be
1188 followed:
1189
1190 @enumerate
1191 @item
1192 Find all declarations that apply to the element/property in
1193 question. Declarations apply if the selector matches the element in
1194 question. If no declarations apply, the inherited value is used. If
1195 there is no inherited value (this is the case for the 'HTML' element and
1196 for properties that do not inherit), the initial value is used.
1197 @item
1198 Sort the declarations by explicit weight: declarations marked
1199 '!important' carry more weight than unmarked (normal) declarations.
1200 @item
1201 Sort by origin: the author's style sheets override the reader's style
1202 sheet which override the UA's default values. An imported style sheet
1203 has the same origin as the style sheet from which it is imported.
1204 @item
1205 Sort by specificity of selector: more specific selectors will override
1206 more general ones. To find the specificity, count the number of ID
1207 attributes in the selector (a), the number of CLASS attributes in the
1208 selector (b), and the number of tag names in the selector
1209 (c). Concatenating the three numbers (in a number system with a large
1210 base) gives the specificity. Some examples:
1211 @example
1212 LI @{...@} /* a=0 b=0 c=1 -> specificity = 1 */
1213 UL LI @{...@} /* a=0 b=0 c=2 -> specificity = 2 */
1214 UL OL LI @{...@} /* a=0 b=0 c=3 -> specificity = 3 */
1215 LI.red @{...@} /* a=0 b=1 c=1 -> specificity = 11 */
1216 UL OL LI.red @{...@} /* a=0 b=1 c=3 -> specificity = 13 */
1217 #x34y @{...@} /* a=1 b=0 c=0 -> specificity = 100 */
1218 @end example
1219 Pseudo-elements and pseudo-classes are counted as normal elements and
1220 classes, respectively.
1221 @item
1222 Sort by order specified: if two rules have the same weight, the latter
1223 specified wins. Rules in imported style sheets are considered to be
1224 before any rules in the style sheet itself.
1225 @end enumerate
1226
1227 The search for the property value can be terminated whenever one rule
1228 has a higher weight than the other rules that apply to the same
1229 element/property combination.
1230
1231 This strategy gives author's style sheets considerably higher weight
1232 than those of the reader. It is therefore important that the reader has
1233 the ability to turn off the influence of a certain style sheet,
1234 e.g. through a pull-down menu.
1235
1236 A declaration in the 'STYLE' attribute of an element has the same weight
1237 as a declaration with an ID-based selector that is specified at the end
1238 of the style sheet:
1239
1240 @example
1241 <STYLE TYPE="text/css">
1242 #x97z @{ color: blue @}
1243 </STYLE>
1244
1245 <P ID=x97z STYLE="color: red">
1246 @end example
1247
1248 In the above example, the color of the 'P' element would be
1249 red. Although the specificity is the same for both declarations, the
1250 declaration in the 'STYLE' attribute will override the one in the
1251 'STYLE' element because of cascading rule number 5.
1252
1253 The @sc{ua} may choose to honor other stylistic @sc{html} attributes,
1254 for example 'ALIGN'. If so, these attributes are translated to the
1255 corresponding @sc{css} rules with specificity equal to 1. The rules are
1256 assumed to be at the start of the author style sheet and may be
1257 overridden by subsequent style sheet rules. In a transition phase, this
1258 policy will make it easier for stylistic attributes to coexist with
1259 style sheets.
1260
1261 @node Properties, Units, The Cascade, Stylesheets
1262 @section Properties
1263
1264 In the text below, the allowed values for each property are listed
1265 with a syntax like the following:
1266
1267 @example
1268 Value: N | NW | NE
1269 Value: [ <length> | thick | thin ]@{1,4@}
1270 Value: <uri>? <color> [ / <color> ]?
1271 Value: <uri> || <color>
1272 @end example
1273
1274 The words between < and > give a type of value. The most common types
1275 are <length>, <percentage>, <url>, <number>and <color> these are
1276 described in the section on [[units]]. The more specialized types
1277 (e.g. <font-family>and <border-style>) are described under the property
1278 where they appear.
1279
1280 Other words are keywords that must appear literally, without quotes. The
1281 slash (/) and the comma (,) must also appear literally.
1282
1283 Several things juxtaposed mean that all of them must occur, in the given
1284 order. A bar (|) separates alternatives: one of them must occur. A
1285 double bar (A || B) means that either A or B or both must occur, in any
1286 order. Brackets ([]) are for grouping. Juxtaposition is stronger than
1287 the double bar, and the double bar is stronger than the bar. Thus "a b |
1288 c || d e" is equivalent to "[ a b ] | [ c || [ d e ]]".
1289
1290 Every type, keyword, or bracketed group may be followed by one of the
1291 following modifiers:
1292
1293 @itemize @bullet
1294 @item
1295 An asterisk (*) indicates that the preceding type, word or group is
1296 repeated zero or more times.
1297 @item
1298 A plus (+) indicates that the preceding type, word or group is repeated
1299 one or more times.
1300 @item
1301 A question mark (?) indicates that the preceding type, word or group is
1302 optional.
1303 @item
1304 A pair of numbers in curly braces (@{A,B@}) indicates that the preceding
1305 type, word or group is repeated at least A and at most B times.
1306 @end itemize
1307
1308 Other than the value the following information is also shown.
1309
1310 @multitable @columnfractions .20 .8
1311 @item Supported Values: @tab If this is present, it lists the parts of
1312 the specification that Emacs/W3 currently supports.
1313 @item Unsupported Values: @tab If this is present, it represents the
1314 parts of the specifcation that Emacs/W3 does not support.
1315 @item Initial: @tab The default value for the property, unless
1316 explicitly set in a stylesheet.
1317 @item Applies to: @tab What type of elements this property can be attached to.
1318 @item Inherited: @tab Yes or no
1319 @item Percentage values: @tab What a percentage value applies to when given.
1320 @end multitable
1321
1322 @menu
1323 * Font Properties:: Selecting fonts, styles, and sizes.
1324 * Colors and Backgrounds:: Controlling colors, front and back.
1325 * Text Properties:: Alignment, decoration, and more!
1326 * Box Properties:: Borders, padding, and margins, oh my!
1327 * Classification:: Changing whitespace and display policies.
1328 * Media Selection:: Conditionalize stylesheets on media-type.
1329 * Speech Properties:: Speech output controlled by stylesheets.
1330 @end menu
1331
1332 @node Font Properties, Colors and Backgrounds, Properties, Properties
1333 @subsection Font Properties
1334
1335 Setting font properties will be among the most common uses of style
1336 sheets. Unfortunately, there exists no well-defined and universally
1337 accepted taxonomy for classifying fonts, and terms that apply to one
1338 font family may not be appropriate for others. E.g. 'italic' is commonly
1339 used to label slanted text, but slanted text may also be labeled as
1340 being @b{Oblique}, @b{Slanted}, @b{Incline}, @b{Cursive} or
1341 @b{Kursiv}. Therefore it is not a simple problem to map typical font
1342 selection properties to a specific font.
1343
1344 The properties defined by CSS1 are described in the following sections.
1345 @menu
1346 * font-family:: Groups of fonts.
1347 * font-style:: Normal, italic, or oblique?
1348 * font-variant:: Small-caps, etc.
1349 * font-weight:: How bold can you go?
1350 * font-size:: How big is yours?
1351 * font:: Shorthand for all of the above.
1352 @end menu
1353
1354 @node font-family, font-style, Font Properties, Font Properties
1355 @subsubsection font-family
1356
1357 @multitable @columnfractions .20 .8
1358 @item Supported Values: @tab [[<family-name> | <generic-family>],]* [<family-name> | <generic-family>]
1359 @item Initial: @tab User specific
1360 @item Applies to: @tab all elements
1361 @item Inherited: @tab yes
1362 @item Percentage values: @tab N/A
1363 @end multitable
1364 The value is a prioritized list of font family names and/or generic
1365 family names. Unlike most other CSS1 properties, values are separated
1366 by a comma to indicate that they are alternatives:
1367
1368 @example
1369 BODY @{ font-family: gill, helvetica, sans-serif @}
1370 @end example
1371
1372 There are two types of list values:
1373
1374 @table @b
1375 @item <family-name>
1376 The name of a font family of choice. In the last example, "gill" and
1377 "helvetica" are font families.
1378 @item <generic-family>
1379 In the example above, the last value is a generic family name. The
1380 following generic families are defined:
1381 @itemize @bullet
1382 @item
1383 'serif' (e.g. Times)
1384 @item
1385 'sans-serif' (e.g. Helvetica)
1386 @item
1387 'cursive' (e.g. Zapf-Chancery)
1388 @item
1389 'fantasy' (e.g. Western)
1390 @item
1391 'monospace' (e.g. Courier)
1392 @end itemize
1393 @end table
1394
1395 Style sheet designers are encouraged to offer a generic font family as a
1396 last alternative.
1397
1398 Font names containing whitespace should be quoted:
1399
1400 @example
1401 BODY @{ font-family: "new century schoolbook", serif @}
1402
1403 <BODY STYLE="font-family: 'My own font', fantasy">
1404 @end example
1405
1406 If quoting is omitted, any whitespace characters before and after the
1407 font name are ignored and any sequence of whitespace characters inside
1408 the font name is converted to a single space.
1409
1410 @node font-style, font-variant, font-family, Font Properties
1411 @subsubsection font-style
1412
1413 @multitable @columnfractions .2 .8
1414 @item Supported Values: @tab normal | italic | oblique
1415 @item Initial: @tab normal
1416 @item Applies to: @tab all elements
1417 @item Inherited: @tab yes
1418 @item Percentage values: @tab N/A
1419 @end multitable
1420
1421 The 'font-style' property selects between normal (sometimes referred to
1422 as "roman" or "upright"), italic and oblique faces within a font family.
1423
1424 A value of 'normal' selects a font that is classified as 'normal' in the
1425 UA's font database, while 'oblique' selects a font that is labeled
1426 'oblique'. A value of 'italic' selects a font that is labeled 'italic',
1427 or, if that is not available, one labeled 'oblique'.
1428
1429 The font that is labeled 'oblique' in the UA's font database may
1430 actually have been generated by electronically slanting a normal font.
1431
1432 Fonts with Oblique, Slanted or Incline in their names will typically be
1433 labeled 'oblique' in the UA's font database. Fonts with Italic, Cursive
1434 or Kursiv in their names will typically be labeled 'italic'.
1435
1436 @example
1437 H1, H2, H3 @{ font-style: italic @}
1438 H1 EM @{ font-style: normal @}
1439 @end example
1440
1441 In the example above, emphasized text within 'H1' will appear in a
1442 normal face.
1443
1444 @node font-variant, font-weight, font-style, Font Properties
1445 @subsubsection font-variant
1446
1447 @multitable @columnfractions .2 .8
1448 @item Value: @tab normal | small-caps
1449 @item Initial: @tab normal
1450 @item Applies to: @tab all elements
1451 @item Inherited: @tab yes
1452 @item Percentage values: @tab N/A
1453 @end multitable
1454
1455 Another type of variation within a font family is the small-caps. In a
1456 small-caps font the lower case letters look similar to the uppercase
1457 ones, but in a smaller size and with slightly different proportions. The
1458 'font-variant' property selects that font.
1459
1460 A value of 'normal' selects a font that is not a small-caps font,
1461 'small-caps' selects a small-caps font. It is acceptable (but not
1462 required) in CSS1 if the small-caps font is a created by taking a normal
1463 font and replacing the lower case letters by scaled uppercase
1464 characters. As a last resort, uppercase letters will be used as
1465 replacement for a small-caps font.
1466
1467 The following example results in an 'H3' element in small-caps, with
1468 emphasized words in oblique small-caps:
1469
1470 @example
1471 H3 @{ font-variant: small-caps @}
1472 EM @{ font-style: oblique @}
1473 @end example
1474
1475 There may be other variants in the font family as well, such as fonts
1476 with old-style numerals, small-caps numerals, condensed or expanded
1477 letters, etc. CSS1 has no properties that select those.
1478
1479 @node font-weight, font-size, font-variant, Font Properties
1480 @subsubsection font-weight
1481
1482 @multitable @columnfractions .2 .8
1483 @item Supported Values: @tab normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900
1484 @item Unsupported Values: @tab bolder | lighter
1485 @item Initial: @tab normal
1486 @item Applies to: @tab all elements
1487 @item Inherited: @tab yes
1488 @item Percentage values: @tab N/A
1489 @end multitable
1490
1491 The 'font-weight' property selects the weight of the font. The values
1492 '100' to '900' form an ordered sequence, where each number indicates a
1493 weight that is at least as dark as its predecessor. The keyword 'normal'
1494 is synonymous with '400', and 'bold' is synonymous with '700'. Keywords
1495 other than 'normal' and 'bold' have been shown to be often confused with
1496 font names and a numerical scale was therefore chosen for the 9-value
1497 list.
1498
1499 @example
1500 P @{ font-weight: normal @} /* 400 */
1501 H1 @{ font-weight: 700 @} /* bold */
1502 @end example
1503
1504 The 'bolder' and 'lighter' values select font weights that are relative
1505 to the weight inherited from the parent:
1506
1507 @example
1508 STRONG @{ font-weight: bolder @}
1509 @end example
1510
1511 There is no guarantee that there will be a darker face for each of the
1512 'font-weight' values; for example, some fonts may have only a normal and
1513 a bold face, others may have eight different face weights. There is no
1514 guarantee on how a UA will map font faces within a family to weight
1515 values. The only guarantee is that a face of a given value will be no
1516 less dark than the faces of lighter values.
1517
1518 @node font-size, font, font-weight, Font Properties
1519 @subsubsection font-size
1520
1521 @multitable @columnfractions .2 .8
1522 @item Supported Values: @tab <absolute-size> | <length>
1523 @item Unsupported Values: @tab <percentage> | <relative-size>
1524 @item Initial: @tab medium
1525 @item Applies to: @tab all elements
1526 @item Inherited: @tab yes
1527 @item Percentage values: @tab relative to parent element's font size
1528 @end multitable
1529
1530 @table @b
1531 @item <absolute-size>
1532 An <absolute-size> keyword is an index to a table of font sizes computed
1533 and kept by the UA. Possible values are:
1534 @itemize @bullet
1535 @item
1536 xx-small
1537 @item
1538 x-small
1539 @item
1540 small
1541 @item
1542 medium
1543 @item
1544 large
1545 @item
1546 x-large
1547 @item
1548 xx-large
1549 @end itemize
1550
1551 On a computer screen a scaling factor of 1.5 is suggested between
1552 adjacent indexes; if the 'medium' font is 10pt, the 'large' font could
1553 be 15pt. Different media may need different scaling factors. Also, the
1554 UA should take the quality and availability of fonts into account when
1555 computing the table. The table may be different from one font family to
1556 another.
1557 @item <relative-size>
1558 A <relative-size> keyword is interpreted relative to the table of font
1559 sizes and the font size of the parent element. Possible values are
1560 @b{larger} or @b{smaller}. For example, if the parent element has a font
1561 size of 'medium', a value of 'larger' will make the font size of the
1562 current element be 'large'. If the parent element's size is not close to
1563 a table entry, the UA is free to interpolate between table entries or
1564 round off to the closest one. The UA may have to extrapolate table
1565 values if the numerical value goes beyond the keywords.
1566 @end table
1567
1568 Length and percentage values should not take the font size table into
1569 account when calculating the font size of the element.
1570
1571 Negative values are not allowed.
1572
1573 On all other properties, 'em' and 'ex' length values refer to the font
1574 size of the current element. On the 'font-size' property, these length
1575 units refer to the font size of the parent element.
1576
1577 Note that an application may reinterpret an explicit size, depending on
1578 the context. E.g., inside a VR scene a font may get a different size
1579 because of perspective distortion.
1580
1581 Examples:
1582
1583 @example
1584 P @{ font-size: 12pt; @}
1585 BLOCKQUOTE @{ font-size: larger @}
1586 EM @{ font-size: 150% @}
1587 EM @{ font-size: 1.5em @}
1588 @end example
1589
1590 If the suggested scaling factor of 1.5 is used, the last three
1591 declarations are identical.
1592
1593 @node font, , font-size, Font Properties
1594 @subsubsection font
1595
1596 @multitable @columnfractions .2 .8
1597 @item Value: @tab [ <font-style> || <font-variant> || <font-weight> ]? <font-size> [ / <line-height> ]? <font-family>
1598 @item Initial: @tab not defined for shorthand properties
1599 @item Applies to: @tab all elements
1600 @item Inherited: @tab yes
1601 @item Percentage values: @tab allowed on <font-size> and <line-height>
1602 @end multitable
1603 The 'font' property is a shorthand property for setting 'font-style'
1604 'font-variant' 'font-weight' 'font-size', 'line-height' and
1605 'font-family' at the same place in the style sheet. The syntax of this
1606 property is based on a traditional typographical shorthand notation to
1607 set multiple properties related to fonts.
1608
1609 For a definition of allowed and initial values, see the previously
1610 defined properties. Properties for which no values are given are set to
1611 their initial value.
1612
1613 @example
1614 P @{ font: 12pt/14pt sans-serif @}
1615 P @{ font: 80% sans-serif @}
1616 P @{ font: x-large/110% "new century schoolbook", serif @}
1617 P @{ font: bold italic large Palatino, serif @}
1618 P @{ font: normal small-caps 120%/120% fantasy @}
1619 @end example
1620
1621 In the second rule, the font size percentage value ('80%') refers to the
1622 font size of the parent element. In the third rule, the line height
1623 percentage refers to the font size of the element itself.
1624
1625 In the first three rules above, the 'font-style', 'font-variant' and
1626 'font-weight' are not explicitly mentioned, which means they are all
1627 three set to their initial value ('normal'). The fourth rule sets the
1628 'font-weight' to 'bold', the 'font-style' to 'italic' and implicitly
1629 sets 'font-variant' to 'normal'.
1630
1631 The fifth rule sets the 'font-variant' ('small-caps'), the 'font-size'
1632 (120% of the parent's font), the 'line-height' (120% times the font
1633 size) and the 'font-family' ('fantasy'). It follows that the keyword
1634 'normal' applies to the two remaining properties: 'font-style' and
1635 'font-weight'.
1636
1637 @node Colors and Backgrounds, Text Properties, Font Properties, Properties
1638 @subsection Colors and Backgrounds
1639
1640 These properties describe the color (often called foreground color) and
1641 background of an element (i.e. the surface onto which the content is
1642 rendered). One can set a background color and/or a background image. The
1643 position of the image, if/how it is repeated, and whether it is fixed or
1644 scrolled relative to the canvas can also be set.
1645
1646 The 'color' property inherits normally. The background properties do not
1647 inherit, but the parent element's background will shine through by
1648 default because of the initial 'transparent' value on
1649 'background-color'.
1650
1651 NOTE: Currently, Emacs/W3 can only show background images under XEmacs.
1652 Emacs 19 doesn't have the support in its display code yet.
1653
1654 @menu
1655 * color:: Foreground colors.
1656 * background-color:: Background colors.
1657 * background-image:: Background images.
1658 * background-repeat:: Controlling repeating of background images.
1659 * background-attachment:: Where background images are drawn.
1660 * background-position:: Where background images are drawn.
1661 * background:: Shorthand for all background properties.
1662 @end menu
1663
1664 @node color, background-color, Colors and Backgrounds, Colors and Backgrounds
1665 @subsubsection color
1666
1667 @multitable @columnfractions .2 .8
1668 @item Value: @tab <color>
1669 @item Initial: @tab User specific
1670 @item Applies to: @tab all elements
1671 @item Inherited: @tab yes
1672 @item Percentage values: @tab N/A
1673 @end multitable
1674
1675 This property describes the text color of an element (often referred to
1676 as the foreground color). There are different ways to specify red:
1677
1678 @example
1679 EM @{ color: red @} /* natural language */
1680 EM @{ color: rgb(255,0,0) @} /* RGB range 0-255 */
1681 @end example
1682
1683 See @ref{Color Units} for a description of possible color values.
1684
1685 @node background-color, background-image, color, Colors and Backgrounds
1686 @subsubsection background-color
1687
1688 @multitable @columnfractions .2 .8
1689 @item Value: @tab <color> | transparent
1690 @item Initial: @tab transparent
1691 @item Applies to: @tab all elements
1692 @item Inherited: @tab no
1693 @item Percentage values: @tab N/A
1694 @end multitable
1695
1696 This property sets the background color of an element.
1697
1698 @example
1699 H1 @{ background-color: #F00 @}
1700 @end example
1701
1702 @node background-image, background-repeat, background-color, Colors and Backgrounds
1703 @subsubsection background-image
1704
1705 @multitable @columnfractions .2 .8
1706 @item Value: @tab <url> | none
1707 @item Initial: @tab none
1708 @item Applies to: @tab all elements
1709 @item Inherited: @tab no
1710 @item Percentage values: @tab N/A
1711 @end multitable
1712
1713 This property sets the background image of an element. When setting a
1714 background image, one should also set a background color that will be
1715 used when the image is unavailable. When the image is available, it is
1716 overlaid on top of the background color.
1717
1718 @example
1719 BODY @{ background-image: url(marble.png) @}
1720 P @{ background-image: none @}
1721 @end example
1722
1723 @node background-repeat, background-attachment, background-image, Colors and Backgrounds
1724 @subsubsection background-repeat
1725
1726 This property is not supported at all under Emacs/W3.
1727
1728 @node background-attachment, background-position, background-repeat, Colors and Backgrounds
1729 @subsubsection background-attachment
1730
1731 This property is not supported at all under Emacs/W3.
1732
1733 @node background-position, background, background-attachment, Colors and Backgrounds
1734 @subsubsection background-position
1735
1736 This property is not supported at all under Emacs/W3.
1737
1738 @node background, , background-position, Colors and Backgrounds
1739 @subsubsection background
1740
1741 @multitable @columnfractions .2 .8
1742 @item Value: @tab <background-color> || <background-image> || <background-repeat> || <background-attachment> || <background-position>
1743 @item Initial: @tab not defined for shorthand properties
1744 @item Applies to: @tab all elements
1745 @item Inherited: @tab no
1746 @item Percentage values: @tab allowed on <background-position>
1747 @end multitable
1748
1749 The 'background' property is a shorthand property for setting the
1750 individual background properties (i.e., 'background-color',
1751 'background-image', 'background-repeat', 'background-attachment' and
1752 'background-position') at the same place in the style sheet.
1753
1754 Possible values on the 'background' properties are the set of all
1755 possible values on the individual properties.
1756
1757 @example
1758 BODY @{ background: red @}
1759 P @{ background: url(chess.png) gray 50% repeat fixed @}
1760 @end example
1761
1762 The 'background' property always sets all the individual background
1763 properties. In the first rule of the above example, only a value for
1764 'background-color' has been given and the other individual properties
1765 are set to their initial value. In the second rule, all individual
1766 properties have been specified.
1767
1768 @node Text Properties, Box Properties, Colors and Backgrounds, Properties
1769 @subsection Text Properties
1770
1771 @menu
1772 * word-spacing::
1773 * letter-spacing::
1774 * text-decoration::
1775 * vertical-align::
1776 * text-transform::
1777 * text-align::
1778 * text-indent::
1779 * line-height::
1780 @end menu
1781
1782 @node word-spacing, letter-spacing, Text Properties, Text Properties
1783 @subsubsection word-spacing
1784
1785 @multitable @columnfractions .2 .8
1786 @item Supported Values: @tab normal
1787 @item Unsupported Values: @tab <length>
1788 @item Initial: @tab normal
1789 @item Applies to: @tab all elements
1790 @item Inherited: @tab yes
1791 @item Percentage values: @tab N/A
1792 @end multitable
1793
1794 The length unit indicates an addition to the default space between
1795 words. Values can be negative, but there may be implementation-specific
1796 limits. The UA is free to select the exact spacing algorithm. The word
1797 spacing may also be influenced by justification (which is a value of the
1798 'align' property).
1799
1800 @example
1801 H1 @{ word-spacing: 0.4em @}
1802 @end example
1803
1804 Here, the word-spacing between each word in 'H1' elements would be
1805 increased by '1em'.
1806
1807 NOTE: Emacs/W3 cannot currently support this, due to limitations in
1808 Emacs. It may be implemented in the future.
1809
1810 @node letter-spacing, text-decoration, word-spacing, Text Properties
1811 @subsubsection letter-spacing
1812
1813 @multitable @columnfractions .2 .8
1814 @item Supported Values: @tab normal
1815 @item Unsupported Values: @tab <length>
1816 @item Initial: @tab normal
1817 @item Applies to: @tab all elements
1818 @item Inherited: @tab yes
1819 @item Percentage values: @tab N/A
1820 @end multitable
1821
1822 The length unit indicates an addition to the default space between
1823 characters. Values can be negative, but there may be
1824 implementation-specific limits. The UA is free to select the exact
1825 spacing algorithm. The letter spacing may also be influenced by
1826 justification (which is a value of the 'align' property).
1827
1828 @example
1829 BLOCKQUOTE @{ letter-spacing: 0.1em @}
1830 @end example
1831
1832 Here, the letter-spacing between each character in 'BLOCKQUOTE' elements
1833 would be increased by '0.1em'.
1834
1835 NOTE: Emacs/W3 cannot currently support this, due to limitations in
1836 Emacs. It may be implemented in the future.
1837
1838 @node text-decoration, vertical-align, letter-spacing, Text Properties
1839 @subsubsection text-decoration
1840
1841 @multitable @columnfractions .2 .8
1842 @item Supported Values: @tab none | underline | line-through | blink
1843 @item Unsupported Values: @tab overline
1844 @item Initial: @tab none
1845 @item Applies to: @tab all elements
1846 @item Inherited: @tab no, but see clarification below
1847 @item Percentage values: @tab N/A
1848 @end multitable
1849
1850 This property describes decorations that are added to the text of an
1851 element. If the element has no text (e.g. the 'IMG' element in HTML) or
1852 is an empty element (e.g. '<EM></EM>'), this property has no effect. A
1853 value of 'blink' causes the text to blink.
1854
1855 The color(s) required for the text decoration should be derived from the
1856 'color' property value.
1857
1858 This property is not inherited, but elements should match their
1859 parent. E.g., if an element is underlined, the line should span the
1860 child elements. The color of the underlining will remain the same even
1861 if descendant elements have different 'color' values.
1862
1863 @example
1864 A:link, A:visited, A:active @{ text-decoration: underline @}
1865 @end example
1866
1867 The example above would underline the text of all links (i.e., all 'A'
1868 elements with a 'HREF' attribute).
1869
1870 NOTE: The 'line-through' property is only supported under XEmacs
1871 currently. A patch has been sent to the Emacs maintainers to add
1872 support for this, but it has not made it into the main distribution
1873 yet.
1874
1875 @node vertical-align, text-transform, text-decoration, Text Properties
1876 @subsubsection vertical-align
1877
1878 This is currently unsupported in Emacs/W3.
1879
1880 @node text-transform, text-align, vertical-align, Text Properties
1881 @subsubsection text-transform
1882
1883 @multitable @columnfractions .2 .8
1884 @item Supported Values: @tab none
1885 @item Unsupported Values: @tab capitalize | uppercase | lowercase
1886 @item Initial: @tab none
1887 @item Applies to: @tab all elements
1888 @item Inherited: @tab yes
1889 @item Percentage values: @tab N/A
1890 @end multitable
1891
1892 @table @b
1893 @item 'capitalize'
1894 Uppercases the first character of each word.
1895 @item 'uppercase'
1896 Uppercases all letters of the element.
1897 @item 'lowercase'
1898 Lowercases all letters of the element.
1899 @item 'none'
1900 Neutralizes inherited value.
1901 @end table
1902
1903 The actual transformation in each case is human language dependent.
1904
1905 @example
1906 H1 @{ text-transform: uppercase @}
1907 @end example
1908
1909 The example above would put 'H1' elements in uppercase text.
1910
1911 NOTE: This capability was in the previous version of Emacs/W3, but has
1912 not been reimplemented in the new display code yet. Please feel free to
1913 send me patches.
1914
1915 @node text-align, text-indent, text-transform, Text Properties
1916 @subsubsection text-align
1917
1918 @multitable @columnfractions .2 .8
1919 @item Value: @tab left | right | center | justify
1920 @item Initial: @tab User specific
1921 @item Applies to: @tab block-level elements
1922 @item Inherited: @tab yes
1923 @item Percentage values: @tab N/A
1924 @end multitable
1925
1926 This property describes how text is aligned within the element. The
1927 actual justification algorithm used is UA and human language dependent.
1928
1929 Example:
1930 @example
1931 DIV.center @{ text-align: center @}
1932 @end example
1933
1934 Since 'text-align' inherits, all block-level elements inside the 'DIV'
1935 element with 'CLASS=center' will be centered. Note that alignments are
1936 relative to the width of the element, not the canvas.
1937
1938 @node text-indent, line-height, text-align, Text Properties
1939 @subsubsection text-indent
1940
1941 Not currently implemented in Emacs/W3.
1942
1943 @node line-height, , text-indent, Text Properties
1944 @subsubsection line-height
1945
1946 Not currently implemented in Emacs/W3.
1947
1948 @node Box Properties, Classification, Text Properties, Properties
1949 @subsection Box Properties
1950
1951 @multitable @columnfractions .2 .8
1952 @end multitable
1953
1954 @node Classification, Media Selection, Box Properties, Properties
1955 @subsection Classification
1956
1957 These properties classify elements into categories more than they set
1958 specific visual parameters.
1959
1960 The list-style properties describe how list items (i.e. elements with a
1961 'display' value of 'list-item') are formatted. The list-style properties
1962 can be set on any element, and it will inherit normally down the
1963 tree. However, they will only be have effect on elements with a
1964 'display' value of 'list-item'. In HTML this is typically the case for
1965 the 'LI' element.
1966
1967 @menu
1968 * display::
1969 * white-space::
1970 * list-style-type::
1971 * list-style-image::
1972 * list-style-position::
1973 * list-style::
1974 @end menu
1975
1976 @node display, white-space, Classification, Classification
1977 @subsubsection display
1978
1979 @multitable @columnfractions .2 .8
1980 @item Value: @tab block | inline | list-item | none
1981 @item Extensions: @tab line
1982 @item Initial: @tab inline
1983 @item Applies to: @tab all elements
1984 @item Inherited: @tab no
1985 @item Percentage values: @tab N/A
1986 @end multitable
1987
1988 This property describes how/if an element is displayed on the canvas
1989 (which may be on a printed page, a computer display etc.).
1990
1991 An element with a 'display' value of 'block' opens whitespace suitable
1992 for a paragraph break. Typically, elements like 'H1' and 'P' are of
1993 type 'block'. A value of 'list-item' is similar to 'block' except that a
1994 list-item marker is added. In HTML, 'LI' will typically have this value.
1995
1996 An element with a 'display' value of 'inline' results in a new inline
1997 box on the same line as the previous content.
1998
1999 A value of 'none' turns off the display of the element, including
2000 children elements and the surrounding box.
2001
2002 @example
2003 P @{ display: block @}
2004 EM @{ display: inline @}
2005 LI @{ display: list-item @}
2006 IMG @{ display: none @}
2007 @end example
2008
2009 The last rule turns off the display of images.
2010
2011 A value of 'line' results in a single line break. Emacs/W3 needs this
2012 extension to be able to fully specify the behaviour of @sc{br} and
2013 @sc{hr} elements within a stylesheet.
2014
2015 NOTE: Emacs/W3 defaults to using 'inline' for this property, which is a
2016 slight deviation from the specification.
2017
2018 @node white-space, list-style-type, display, Classification
2019 @subsubsection white-space
2020
2021 @multitable @columnfractions .2 .8
2022 @item Value: @tab normal | pre | nowrap
2023 @item Initial: @tab normal
2024 @item Applies to: @tab block-level elements
2025 @item Inherited: @tab yes
2026 @item Percentage values: @tab N/A
2027 @end multitable
2028
2029 This property declares how whitespace inside the element is handled: the
2030 'normal' way (where whitespace is collapsed), as 'pre' (which behaves
2031 like the 'PRE' element in HTML) or as 'nowrap' (where wrapping is done
2032 only through BR elements):
2033
2034 @example
2035 PRE @{ white-space: pre @}
2036 P @{ white-space: normal @}
2037 @end example
2038
2039 @node list-style-type, list-style-image, white-space, Classification
2040 @subsubsection list-style-type
2041
2042 @multitable @columnfractions .2 .8
2043 @item Value: @tab disc | circle | square | decimal | lower-roman | upper-roman | lower-alpha | upper-alpha | none
2044 @item Initial: @tab disc
2045 @item Applies to: @tab elements with 'display' value 'list-item'
2046 @item Inherited: @tab yes
2047 @item Percentage values: @tab N/A
2048 @end multitable
2049
2050 This property is used to determine the appearance of the list-item
2051 marker if 'list-style-image' is 'none' or if the image pointed to by the
2052 URL cannot be displayed.
2053
2054 Fo example:
2055 @example
2056 OL @{ list-style-type: decimal @} /* 1 2 3 4 5 etc. */
2057 OL @{ list-style-type: lower-alpha @} /* a b c d e etc. */
2058 OL @{ list-style-type: lower-roman @} /* i ii iii iv v etc. */
2059 @end example
2060
2061 @node list-style-image, list-style-position, list-style-type, Classification
2062 @subsubsection list-style-image
2063
2064 @multitable @columnfractions .2 .8
2065 @item Value: @tab <url> | none
2066 @item Initial: @tab none
2067 @item Applies to: @tab elements with 'display' value 'list-item'
2068 @item Inherited: @tab yes
2069 @item Percentage values: @tab N/A
2070 @end multitable
2071
2072 This property sets the image that will be used as the list-item
2073 marker. When the image is available it will replace the marker set with
2074 the 'list-style-type' marker.
2075
2076 NOTE: This is currently unimplemented in Emacs/W3.
2077
2078 @example
2079 UL @{ list-style-image: url(http://png.com/ellipse.png) @}
2080 @end example
2081
2082 @node list-style-position, list-style, list-style-image, Classification
2083 @subsubsection list-style-position
2084
2085 @multitable @columnfractions .2 .8
2086 @item Supported Values: @tab outside
2087 @item Unsupported Values: @tab inside
2088 @item Initial: @tab outside
2089 @item Applies to: @tab elements with 'display' value 'list-item'
2090 @item Inherited: @tab yes
2091 @item Percentage values: @tab N/A
2092 @end multitable
2093
2094 The value of 'list-style-position' determines how the list-item marker
2095 is drawn with regard to the content. For a formatting example see
2096 section 4.1.3.
2097
2098 @node list-style, , list-style-position, Classification
2099 @subsubsection list-style
2100
2101 @multitable @columnfractions .2 .8
2102 @item Value: @tab <keyword> || <position> || <url>
2103 @item Initial: @tab not defined for shorthand properties
2104 @item Applies to: @tab elements with 'display' value 'list-item'
2105 @item Inherited: @tab yes
2106 @item Percentage values: @tab N/A
2107 @end multitable
2108
2109 The 'list-style' property is a shorthand notation for setting the three
2110 properties 'list-style-type', 'list-style-image' and
2111 'list-style-position' at the same place in the style sheet.
2112
2113 @example
2114 UL @{ list-style: upper-roman inside @}
2115 UL UL @{ list-style: circle outside @}
2116 LI.square @{ list-style: square @}
2117 @end example
2118
2119 Setting 'list-style' directly on 'LI' elements can have unexpected
2120 results. Consider:
2121
2122 @example
2123 <STYLE TYPE="text/css">
2124 OL.alpha LI @{ list-style: lower-alpha @}
2125 UL LI @{ list-style: disc @}
2126 </STYLE>
2127 <BODY>
2128 <OL CLASS=alpha>
2129 <LI>level 1
2130 <UL>
2131 <LI>level 2
2132 </UL>
2133 </OL>
2134 </BODY>
2135 @end example
2136
2137 Since the specificity (as defined in the cascading order) is higher for
2138 the first rule in the style sheet in the example above, it will override
2139 the second rule on all 'LI' elements and only 'lower-alpha' list styles
2140 will be used. It is therefore recommended to set 'list-style' only on
2141 the list type elements:
2142
2143 @example
2144 OL.alpha @{ list-style: lower-alpha @}
2145 UL @{ list-style: disc @}
2146 @end example
2147
2148 In the above example, inheritance will transfer the 'list-style' values
2149 from 'OL' and 'UL' elements to 'LI' elements.
2150
2151 A URL value can be combined with any other value:
2152
2153 @example
2154 UL @{ list-style: url(http://png.com/ellipse.png) disc @}
2155 @end example
2156
2157 In the example above, the 'disc' will be used when the image is
2158 unavailable.
2159
2160 @node Media Selection, Speech Properties, Classification, Properties
2161 @subsection Media Selection
2162
2163 To specify that a stylesheet declaration should only apply when using a
2164 certain media type (ie: different font families preferred when printing
2165 versus on-screen presentation), the declarations should be wrapped in
2166 the proposed @b{@@media} directive.
2167
2168 The @@media directive takes two arguments, the media type, and a block
2169 of style declarations.
2170
2171 @example
2172 @@media print @{
2173 BODY @{ font-size: 10pt @}
2174 H1 @{ font-size: 14pt @}
2175 @}
2176 @end example
2177 The '@@media' construct also allows to put include style sheet rules
2178 for various media in the same style sheet:
2179
2180 @example
2181 @@media print @{
2182 BODY @{ font-size: 10pt @}
2183 @}
2184 @@media screen @{
2185 BODY @{ font-size: 12pt @}
2186 @}
2187 @end example
2188
2189 Currently, the following media types are defined.
2190 @table @b
2191 @item Print
2192 Output for paged opaque material, and for documents viewed on screen in
2193 print preview mode.
2194 @item Screen
2195 A continuous presentation for computer screens.
2196 @item Projector
2197 Paged presentation for projected presentations.
2198 @item Braille
2199 For braille tactile feedback devices.
2200 @item Speech
2201 Aural presentation.
2202 @item Emacs
2203 The stylesheet will only be applied if the user is running in Emacs 19.
2204 @item XEmacs
2205 The stylesheet will only be applied if the user is running in XEmacs 19.
2206 @item All
2207 The default value, the style sheet applies to all output devices
2208 @end table
2209
2210 @node Speech Properties, , Media Selection, Properties
2211 @subsection Speech Properties
2212
2213 Those of us who are sighted are accustomed to visual presentation of
2214 @sc{html} documents, frequently on a bitmapped display. This is not the
2215 only possible presentation method, however. Aural presentation, using a
2216 combination of speech synthesis and 'audio icons', provides an
2217 alternative presentation. This form of presentation is in current use by
2218 the blind and print-impaired communities.
2219
2220 Often such aural presentation occurs by converting the document to plain
2221 text and feeding this to a 'screen reader' -- software or hardware that
2222 simply reads all the characters on the screen. This results in less
2223 effective presentation than would be the case if the document structure
2224 were retained.
2225
2226 There are other large markets for aural presentation, including in-car
2227 and home entertainment use; aurual or mixed aural/visual presentation is
2228 thus likely to increase in importance over the next few years. Realizing
2229 that that the aural rendering is essentially independent of the visual
2230 rendering:
2231
2232 @itemize @bullet
2233 @item
2234 Allows orthogonal aural and visual views.
2235 @item
2236 Allows browsers to optionally implement both aural and visual views to
2237 produce truly multimodal documents.
2238 @end itemize
2239
2240 @menu
2241 * volume::
2242 * pause-before::
2243 * pause-after::
2244 * pause::
2245 * cue-before::
2246 * cue-after::
2247 * cue::
2248 * play-during::
2249 * speed::
2250 * voice-family::
2251 * pitch::
2252 * pitch-range::
2253 * stress::
2254 * richness::
2255 * speak-punctuation::
2256 * speak-date::
2257 * speak-numeral::
2258 * speak-time::
2259 @end menu
2260
2261 @node volume, pause-before, Speech Properties, Speech Properties
2262 @subsubsection volume
2263
2264 @multitable @columnfractions .2 .8
2265 @item Value: @tab <percentage> | mute | x-soft | soft | medium | loud | x-loud
2266 @item Initial: @tab medium
2267 @item Applies to: @tab all elements
2268 @item Inherited: @tab yes
2269 @item Percentage values: @tab relative to user-specified mapping
2270 @end multitable
2271
2272 The legal range of percentage values is 0% to 100%. There is a fixed
2273 mapping between keyword values and percentages:
2274
2275 @itemize @bullet
2276 @item
2277 'x-soft' = '0%'
2278 @item
2279 'soft' = '25%'
2280 @item
2281 'medium' = '50%'
2282 @item
2283 'loud' = '75%'
2284 @item
2285 'x-loud' = '100%'
2286 @end itemize
2287
2288 Volume refers to the median volume of the waveform. In other words, a
2289 highly inflected voice at a volume of 50 might peak well above
2290 that. Note that '0%' does not mean the same as "mute". 0% represents the
2291 minimum audible volume level and 100% corresponds to the maximum
2292 comfortable level. The UA should allow the values corresponding to 0%
2293 and 100% to be set by the user. Suitable values depend on the equipment
2294 in use (speakers, headphones), the environment (in car, home theater,
2295 library) and personal preferences. Some examples:
2296
2297 @itemize @bullet
2298 @item
2299 A browser for in-car use has a setting for when there is lots of
2300 background noise . 0% would map to a fairly high level and 100% to a
2301 quite high level. The overall values are likely to be human adjustable
2302 for comfort, for example with a physical volume control: what this
2303 proposal does is adjust the dynamic range.
2304 @item
2305 Another speech browser is being used in the home, late at night, (don't
2306 annoy the neighbors) or in a shared study room. 0% is set to very quiet
2307 and 100% to a fairly quiet level, too. As with the first example, there
2308 is a low slope; the dynamic range is reduced. The actual volumes are low
2309 here, wheras they were high in the first example.
2310 @item
2311 In a quiet and isolated house, an expensive hifi home theatre setup. 0%
2312 is set fairly low and 100% to quite high; there is wide dynamic range.
2313 @end itemize
2314
2315 The same authors stylesheet could be used in all cases, simply by
2316 mapping the 0 and 100 points suitably at the client side.
2317
2318 @node pause-before, pause-after, volume, Speech Properties
2319 @subsubsection pause-before
2320
2321 @multitable @columnfractions .2 .8
2322 @item Value: @tab <time> | <percentage>
2323 @item Initial: @tab UA specific
2324 @item Applies to: @tab all elements
2325 @item Inherited: @tab no
2326 @item Percentage values: @tab speed
2327 @end multitable
2328
2329 This property specifies the pause before elements. It may be given in an
2330 absolute units (seconds, milliseconds) or as a relative value in which
2331 case it is relative to the reciprocal of the 'speed' property: if speed
2332 is 120 words per minute (ie a word takes half a second -- 500
2333 milliseconds) then a pause-before of 100% means a pause of 500 ms and a
2334 pause-before of 20% means 100ms.
2335
2336 Using relative units gives more robust stylesheets in the face of large
2337 changes in speed.
2338
2339 @node pause-after, pause, pause-before, Speech Properties
2340 @subsubsection pause-after
2341
2342 @multitable @columnfractions .2 .8
2343 @item Value: @tab <time> | <percentage>
2344 @item Applies to: @tab all elements
2345 @item Inherited: @tab no
2346 @item Percentage values: @tab speed
2347 @end multitable
2348
2349 This property specifies the pause after elements. Values are specified
2350 the same way as 'pause-before'.
2351
2352 @node pause, cue-before, pause-after, Speech Properties
2353 @subsubsection pause
2354
2355 @multitable @columnfractions .2 .8
2356 @item Value: @tab [<time> | <percentage> ]@{1,2@};
2357 @item Applies to: @tab all elements
2358 @item Inherited: @tab no
2359 @item Percentage values: @tab speed
2360 @end multitable
2361
2362 The 'pause' property is a shorthand for setting 'pause-before' and
2363 'pause-after'. The first value is pause-before and the second is
2364 pause-after. If only one value is given, it applies to both properties.
2365
2366 Examples:
2367
2368 @example
2369 H1 @{ pause: 20ms @} /* pause-before: 20ms; pause-after: 20ms */
2370 H2 @{ pause: 30ms 40ms @} /* pause-before: 30ms; pause-after: 40ms */
2371 H3 @{ pause-after: 10ms @} /* pause-before: ?; pause-after: 10ms */
2372 @end example
2373
2374 @node cue-before, cue-after, pause, Speech Properties
2375 @subsubsection cue-before
2376
2377 @multitable @columnfractions .2 .8
2378 @item Value: @tab <url> | none
2379 @item Initial: @tab none
2380 @item Applies to: @tab all elements
2381 @item Inherited: @tab no
2382 @end multitable
2383 Auditory icons are another way to distinguish semantic elements. Sounds
2384 may be played before, and/or after the element to delimit it. The same
2385 sound can be used both before and after, using the cue property.
2386
2387 Examples:
2388
2389 @example
2390 A @{ cue-before: url(bell.aiff); cue-after: url(dong.wav) @}
2391 H1 @{ cue-before: url(pop.au); cue-after: url(pop.au) @}
2392 H1 @{ cue: url(pop.au) @} /* same as previous */
2393 @end example
2394
2395 @node cue-after, cue, cue-before, Speech Properties
2396 @subsubsection cue-after
2397
2398 @xref{cue-before}
2399
2400 @node cue, play-during, cue-after, Speech Properties
2401 @subsubsection cue
2402
2403 @xref{cue-before}
2404
2405 @node play-during, speed, cue, Speech Properties
2406 @subsubsection cue-during
2407
2408 @multitable @columnfractions .2 .8
2409 @item Value: @tab <url> | mix | none
2410 @item Initial: @tab mix
2411 @item Applies to: @tab all elements
2412 @item Inherited: @tab no
2413 @end multitable
2414 Similar to the cue-before and cue-after properties, this indicates sound
2415 to be played during an element as a background (ie the sound is mixed in
2416 with the speech).
2417
2418 Examples:
2419
2420 @example
2421 BLOCKQUOTE.sad @{ cue-during: url(violins.aiff) @}
2422 @end example
2423
2424 @node speed, voice-family, play-during, Speech Properties
2425 @subsubsection speed
2426
2427 @multitable @columnfractions .2 .8
2428 @item Value: @tab <words-per-minute> | x-slow | slow | medium | fast | x-fast | faster | slower
2429 @item Initial: @tab medium
2430 @item Applies to: @tab all elements
2431 @item Inherited: @tab yes
2432 @end multitable
2433
2434 Specifies the speaking rate. Note that both absolute and relative
2435 keyword values are allowed (compare with @ref{font-weight}).
2436
2437 @node voice-family, pitch, speed, Speech Properties
2438 @subsubsection voice-family
2439
2440 @multitable @columnfractions .2 .8
2441 @item Value: @tab [[<specific-voice> | <generic-voice>],]* [<specific-voice> | <generic-voice>]
2442 @item Initial: @tab device-specific
2443 @item Applies to: @tab all elements
2444 @item Inherited: @tab yes
2445 @end multitable
2446
2447 The value is a prioritized list of voice family names. Generic families
2448 are male, female, and child.
2449
2450 Examples of specific voice families are: comedian, paul, lisa
2451
2452 Examples
2453
2454 @example
2455 H1 @{ voice-family: announcer, male @}
2456 P.part.romeo @{ voice-family: romeo, male @}
2457 P.part.juliet @{ voice-family: juliet, female @}
2458 @end example
2459
2460 @node pitch, pitch-range, voice-family, Speech Properties
2461 @subsubsection pitch
2462
2463 @multitable @columnfractions .2 .8
2464 @end multitable
2465
2466 @node pitch-range, stress, pitch, Speech Properties
2467 @subsubsection pitch-range
2468
2469 @multitable @columnfractions .2 .8
2470 @end multitable
2471
2472 @node stress, richness, pitch-range, Speech Properties
2473 @subsubsection stress
2474
2475 @multitable @columnfractions .2 .8
2476 @item Value: @tab <percentage>
2477 @item Initial: @tab medium
2478 @item Applies to: @tab all elements
2479 @item Inherited: @tab yes
2480 @end multitable
2481
2482 Specifies the level of stress (assertiveness or emphasis) of the
2483 speaking voice. English is a stressed language, and different parts of a
2484 sentence are assigned primary, secondary or tertiary stress. The value
2485 of property 'stress' controls the amount of inflection that results from
2486 these stress markers.
2487
2488 Increasing the value of this property results in the speech being more
2489 strongly inflected. It is in a sense dual to property 'pitch-range' and
2490 is provided to allow developers to exploit higher-end auditory displays.
2491
2492 @node richness, speak-punctuation, stress, Speech Properties
2493 @subsubsection richness
2494
2495 @multitable @columnfractions .2 .8
2496 @item Value: @tab <percentage>
2497 @item Initial: @tab medium (50%)
2498 @item Applies to: @tab all elements
2499 @item Inherited: @tab yes
2500 @end multitable
2501
2502 Specifies the richness (brightness) of the speaking voice. Different
2503 speech devices may require the setting of one or more device-specific
2504 parameters to achieve this effect.
2505
2506 The effect of increasing richness is to produce a voice that carries --
2507 reducing richness produces a soft, mellifluous voice.
2508
2509 @node speak-punctuation, speak-date, richness, Speech Properties
2510 @subsubsection speak-punctuation
2511
2512 @multitable @columnfractions .2 .8
2513 @item Value: @tab code | none
2514 @item Initial: @tab none
2515 @item Applies to: @tab all elements
2516 @item Inherited: @tab yes
2517 @end multitable
2518
2519 'code' indicates that punctuation such as semicolons, braces, and so on
2520 are to be spoken literally. The default value of 'none' means that
2521 punctuation is not spoken but instead is rendered naturally as various
2522 pauses.
2523
2524 @node speak-date, speak-numeral, speak-punctuation, Speech Properties
2525 @subsubsection speak-date
2526
2527 @multitable @columnfractions .2 .8
2528 @item Value: @tab myd | dmy | ymd | none
2529 @item Initial: @tab none
2530 @item Applies to: @tab all elements
2531 @item Inherited: @tab no
2532 @end multitable
2533
2534 This is a hint that the element contains a date and also how that date
2535 should be spoken. month-day-year is common in the USA, while
2536 day-month-year is common in Europe and year-month-day is also used.
2537
2538 This should really be an HTML tag not a stylesheet property, since it
2539 gives semantic information about the content.
2540
2541 @node speak-numeral, speak-time, speak-date, Speech Properties
2542 @subsubsection speak-numeral
2543
2544 @multitable @columnfractions .2 .8
2545 @item Value: @tab digits | continous
2546 @item Initial: @tab none
2547 @item Applies to: @tab all elements
2548 @item Inherited: @tab yes
2549 @end multitable
2550
2551 @node speak-time, , speak-numeral, Speech Properties
2552 @subsubsection speak-time
2553
2554 @multitable @columnfractions .2 .8
2555 @item Value: @tab 24 | 12 | none
2556 @item Initial: @tab none
2557 @item Applies to: @tab all elements
2558 @item Inherited: @tab yes
2559 @end multitable
2560
2561 @node Units, , Properties, Stylesheets
2562 @section Units
2563
2564 @menu
2565 * Length Units::
2566 * Percentage Units::
2567 * Color Units::
2568 * URLs::
2569 * Angle Units::
2570 * Time Units::
2571 @end menu
2572
2573 @node Length Units, Percentage Units, Units, Units
2574 @subsection Length Units
2575
2576 @node Percentage Units, Color Units, Length Units, Units
2577 @subsection Percentage Units
2578
2579 @node Color Units, URLs, Percentage Units, Units
2580 @subsection color Units
2581
2582 @node URLs, Angle Units, Color Units, Units
2583 @subsection URLs
2584
2585 @node Angle Units, Time Units, URLs, Units
2586 @subsection Angle Units
2587
2588 These are the legal angle units:
2589 @itemize @bullet
2590 @item
2591 deg: degrees
2592 @item
2593 grad
2594 @item
2595 rad: radians
2596 @end itemize
2597
2598 @node Time Units, , Angle Units, Units
2599 @subsection Time Units
2600
2601 These are the legal time units:
2602
2603 @itemize @bullet
2604 @item
2605 ms: milliseconds
2606 @item
2607 s: seconds
2608 @end itemize
2609
2610 @node Supported URLs, MIME Support, Stylesheets, Top
2611 @chapter Supported URLs
2612
2613 ::WORK:: List supported URL types, specific RFCs, etc.
2614
2615 @menu
2616 * file:: Local file access.
2617 * ftp:: Remote file access via ftp.
2618 * nfs:: Remote file access via NFS.
2619 * info:: Access to the Emacs Info system.
2620 * http/https:: @sc{http/1.0} support.
2621 * mailto:: Sending simple electronic mail.
2622 * news/nntp/snews:: Reading and sending Usenet news.
2623 * rlogin/telnet/tn3270:: Legacy host connections.
2624 * irc:: Internet Relay Chat.
2625 * data:: Embedding the data within the URL itself.
2626 * mailserver:: Slightly more complicated electronic mail.
2627 * gopher:: Gopher and Gopher+.
2628 * finger:: The old favorite.
2629 @end menu
2630
2631 @node file, ftp, Supported URLs, Supported URLs
2632 @section file
2633
2634 @node ftp, nfs, file, Supported URLs
2635 @section ftp
2636
2637 @node nfs, info, ftp, Supported URLs
2638 @section nfs
2639
2640 @node info, http/https, nfs, Supported URLs
2641 @section info
2642
2643 @node http/https, mailto, info, Supported URLs
2644 @section http/https
2645
2646 @node mailto, news/nntp/snews, http/https, Supported URLs
2647 @section mailto
2648
2649 @node news/nntp/snews, rlogin/telnet/tn3270, mailto, Supported URLs
2650 @section news/nntp/snews
2651
2652 @node rlogin/telnet/tn3270, irc, news/nntp/snews, Supported URLs
2653 @section rlogin/telnet/tn3270
2654
2655 @node irc, data, rlogin/telnet/tn3270, Supported URLs
2656 @section irc
2657
2658 @node data, mailserver, irc, Supported URLs
2659 @section data
2660
2661 @node mailserver, gopher, data, Supported URLs
2662 @section mailserver
2663
2664 @node gopher, finger, mailserver, Supported URLs
2665 @section gopher
2666
2667 @node finger, , gopher, Supported URLs
2668 @section finger
2669
2670 @node MIME Support, Security, Supported URLs, Top
2671 @chapter MIME Support 1664 @chapter MIME Support
2672 @sc{mime} is an emerging standard for multimedia mail. It offers a very 1665 MIME is an emerging standard for multimedia mail. It offers a very
2673 flexible typing mechanism. The type of a file or message is specified 1666 flexible typing mechanism. The type of a file or message is specified
2674 in two parts, separated by a '/'. The first part is the general 1667 in two parts, separated by a '/'. The first part is the general
2675 category of the data (text, application, image, etc.). The second part 1668 category of the data (text, application, image, etc.). The second part
2676 is the specific type of data (postscript, png, jpeg, etc.). So 1669 is the specific type of data (postscript, gif, jpeg, etc.). So
2677 @samp{text/html} specifies an @sc{html} document, whereas 1670 @samp{text/html} specifies an HTML document, whereas
2678 @samp{image/x-xwindowdump} specifies an image of an Xwindow taken with 1671 @samp{image/x-xwindowdump} specifies an image of an Xwindow taken with
2679 the @file{xwd} program. 1672 the @file{xwd} program.
2680 1673
2681 1674
2682 This typing allows much more flexibility in naming files. @sc{http}/1.0 1675 This typing allows much more flexibility in naming files. HTTP/1.0
2683 servers can now send back content-type headers in response to a request, 1676 servers can now send back content-type headers in response to a request,
2684 and not have the client second-guess it based on file extensions. @sc{html} 1677 and not have the client second-guess it based on file extensions. HTML
2685 files can now be named @file{something.png} (not a great idea, but 1678 files can now be named @file{something.gif} (not a great idea, but
2686 possible). 1679 possible).
2687 1680
1681 @ifinfo
2688 @menu 1682 @menu
2689 * Adding MIME types based on file extensions:: How to map file 1683 * Adding MIME types based on file extensions:: How to map file
2690 extensions onto MIME 1684 extensions onto MIME
2691 types (e.g., @samp{.png -> 1685 types (e.g., @samp{.gif ->
2692 image/png)}. 1686 image/gif)}.
2693 * Specifying Viewers:: How to specify external and internal viewers 1687 * Specifying Viewers:: How to specify external and internal viewers
2694 for files that Emacs/W3 cannot handle natively. 1688 for files that Emacs-W3 cannot handle natively.
2695 @end menu 1689 @end menu
1690 @end ifinfo
2696 1691
2697 @node Adding MIME types based on file extensions, Specifying Viewers, MIME Support, MIME Support 1692 @node Adding MIME types based on file extensions, Specifying Viewers, MIME Support, MIME Support
2698 @section Adding MIME types based on file extensions 1693 @section Adding MIME types based on file extensions
2699
2700 @vindex mm-mime-extensions 1694 @vindex mm-mime-extensions
2701 For some protocols however, it is still necessary to guess the content 1695 For some protocols however, it is still necessary to guess the content
2702 of a file based on the file extension. This type of guess-work should 1696 of a file based on the file extension. This type of guess-work should
2703 only be needed when accessing files via @sc{ftp}, local file access, or old 1697 only be needed when accessing files via FTP, local file access, or old
2704 @sc{http}/0.9 servers. 1698 HTTP/0.9 servers.
2705 1699
2706 Instead of specifying how to view things twice, once based on 1700 Instead of specifying how to view things twice, once based on
2707 content-type and once based on the file extension, it is easier to map 1701 content-type and once based on the file extension, it is easier to map
2708 file extensions to MIME content-types. The variable that controls this 1702 file extensions to MIME content-types. The variable that controls this
2709 is @code{mm-mime-extensions}. 1703 is @code{mm-mime-extensions}.
2715 files. If a content-type is defined for the document, then this is 1709 files. If a content-type is defined for the document, then this is
2716 over-ridden. Regular expressions can @b{NOT} be used. 1710 over-ridden. Regular expressions can @b{NOT} be used.
2717 1711
2718 @cindex mime-types file 1712 @cindex mime-types file
2719 @findex mm-parse-mimetypes 1713 @findex mm-parse-mimetypes
2720 Both Mosaic and the NCSA @sc{http} daemon rely on a separate file for mapping 1714 Both Mosaic and the NCSA HTTP daemon rely on a separate file for mapping
2721 file extensions to MIME types. Instead of having the users of Emacs/W3 1715 file extensions to MIME types. Instead of having the users of Emacs-W3
2722 duplicate this in lisp, this file can be parsed using the 1716 duplicate this in lisp, this file can be parsed using the
2723 @code{url-parse-mimetypes} function. This function is called each time 1717 @code{url-parse-mimetypes} function. This function is called each time
2724 w3 is loaded. It tries to locate mimetype files in several places. If 1718 w3 is loaded. It tries to locate mimetype files in several places. If
2725 the environment variable @code{MIMETYPES} is nonempty, then this is 1719 the environment variable @code{MIMETYPES} is nonempty, then this is
2726 assumed to specify a UNIX-like path of mimetype files (this is a colon 1720 assumed to specify a UNIX-like path of mimetype files (this is a colon
2727 separated string of pathnames). If the @code{MIMETYPES} environment 1721 separated string of pathnames). If the @code{MIMETYPES} environment
2728 variable is empty, then Emacs/W3 looks for these files: 1722 variable is empty, then Emacs-W3 looks for these files:
2729 1723
2730 @enumerate 1724 @enumerate
2731 @item 1725 @item
2732 @file{~/.mime-types} 1726 @file{~/.mime-types}
2733 @item 1727 @item
2738 @file{/usr/local/etc/mime-types} 1732 @file{/usr/local/etc/mime-types}
2739 @item 1733 @item
2740 @file{/usr/local/www/conf/mime-types} 1734 @file{/usr/local/www/conf/mime-types}
2741 @end enumerate 1735 @end enumerate
2742 1736
2743 Each line contains information for one @sc{http} type. These types resemble 1737 Each line contains information for one http type. These types resemble
2744 MIME types. To add new ones, use subtypes beginning with x-, such as 1738 MIME types. To add new ones, use subtypes beginning with x-, such as
2745 application/x-myprogram. Lines beginning with # are comment lines, and 1739 application/x-myprogram. Lines beginning with # are comment lines, and
2746 suitably ignored. Each line consists of: 1740 suitably ignored. Each line consists of:
2747 1741
2748 type/subtype ext1 ext2 ... ext@var{n} 1742 type/subtype ext1 ext2 ... ext@var{n}
2749 1743
2750 type/subtype is the MIME-like type of the document. ext* is any number 1744 type/subtype is the MIME-like type of the document. ext* is any number
2751 of space-separated filename extensions which correspond to the MIME 1745 of space-separated filename extensions which correspond to the MIME
2752 type. 1746 type.
2753 1747
2754 @node Specifying Viewers, , Adding MIME types based on file extensions, MIME Support 1748 @node Specifying Viewers, ,Adding MIME types based on file extensions, MIME Support
2755 @section Specifying Viewers 1749 @section Specifying Viewers
2756 1750 Not all files look as they should when parsed as an HTML document
2757 Not all files look as they should when parsed as an @sc{html} document
2758 (whitespace is stripped, paragraphs are reformatted, and lots of little 1751 (whitespace is stripped, paragraphs are reformatted, and lots of little
2759 changes that make the document look unrecognizable). Files may be 1752 changes that make the document look unrecognizable). Files may be
2760 passed to external programs or Emacs Lisp functions to be viewed. 1753 passed to external programs or Emacs Lisp functions to be viewed.
2761 1754
2762 Not all files can be viewed accurately from within an Emacs session (PNG 1755 Not all files can be viewed accurately from within an Emacs session (GIF
2763 files for example, or audio files). For this reason, the user can 1756 files for example, or audio files). For this reason, the user can
2764 specify file "viewers" based on MIME content-types. This is done with 1757 specify file "viewers" based on MIME content-types. This is done with
2765 a standard mailcap file. @xref{Mailcap Files} 1758 a standard mailcap file. @xref{Mailcap Files}
2766 1759
2767 @findex mm-add-mailcap-entry 1760 @findex mm-add-mailcap-entry
2768 As an alternative, the function @code{mm-add-mailcap-entry} can also be 1761 As an alternative, the function @code{mm-add-mailcap-entry} can also be
2769 used from an appropriate hook.@xref{Hooks} This functions takes three 1762 used from an appropriate hook.@xref{Hooks} This functions takes three
2770 arguments, the major type ("@i{image}"), the minor type ("@i{png}"), and 1763 arguments, the major type ("@i{image}"), the minor type ("@i{gif}"), and
2771 an assoc list of information about the viewer. Please see the @sc{url} 1764 an assoc list of information about the viewer. Please see the URL
2772 documentation for more specific information on what this assoc list 1765 documentation for more specific information on what this assoc list
2773 should look like. 1766 should look like.
2774 1767
2775 @node Security, Non-Unix Operating Systems, MIME Support, Top 1768 @node Security, Non-Unix Operating Systems, , Top
2776 @chapter Security 1769 @chapter Security
2777 @cindex Security 1770 @cindex Security
2778 @cindex Paranoia 1771 @cindex Paranoia
2779 There are an increasing number of ways to authenticate a user to a web 1772 There are an increasing number of ways to authenticate a user to a web
2780 service. Emacs/W3 tries to support as many as possible. Emacs/W3 1773 service. Emacs-W3 tries to support as many as possible. Emacs-W3
2781 currently supports: 1774 currently supports:
2782 1775
2783 @table @b 1776 @table @b
2784 @item Basic Authentication 1777 @item Basic Authentication
2785 @cindex Security, Basic 1778 @cindex Security, Basic
2804 @cindex SSL 1797 @cindex SSL
2805 @cindex Gag Puke Retch 1798 @cindex Gag Puke Retch
2806 @cindex Exportability 1799 @cindex Exportability
2807 @cindex Export Restrictions 1800 @cindex Export Restrictions
2808 SSL is the @code{Secure Sockets Layer} interface developed by Netscape 1801 SSL is the @code{Secure Sockets Layer} interface developed by Netscape
2809 Communications @footnote{http://www.netscape.com/}. Emacs/W3 supports 1802 Communications @footnote{http://www.netscape.com/}. Emacs-W3 supports
2810 @sc{http} transfers over an SSL encrypted channel, if the appropriate files 1803 HTTP transfers over an SSL encrypted channel, if the appropriate files
2811 have been installed.@xref{Installing SSL} 1804 have been installed.@xref{Installing SSL}
1805 @item PGP/PEM
1806 @cindex HTTP/1.0 Authentication
1807 @cindex Public Key Cryptography
1808 @cindex Authentication, PGP
1809 @cindex Authentication, PEM
1810 @cindex RIPEM
1811 @cindex Public Key Cryptography
1812 @cindex PGP
1813 @cindex Pretty Good Privacy
1814 @cindex Encryption
1815 @cindex Security
1816 @cindex ITAR must die
1817 @cindex Stupid export restrictions
1818 @cindex Support your local crypto-anarchist
1819 @cindex NSA freaks
1820 A few servers still support this method of authentication, but it has
1821 been superseded by SSL and Secure-HTTP.@xref{Using PGP/PEM}
2812 @end table 1822 @end table
2813 1823
2814 @node Non-Unix Operating Systems, Speech Integration, Security, Top 1824 @node Non-Unix Operating Systems, VMS, Security, Top
2815 @chapter Non-Unix Operating Systems 1825 @chapter Non-Unix Operating Systems
2816 @cindex Non-Unix Operating Systems 1826 @cindex Non-Unix Operating Systems
2817 1827 @ifinfo
2818 @menu 1828 @menu
2819 * VMS:: The wonderful world of VAX|AXP-VMS! 1829 * VMS:: The wonderful world of VAX|AXP-VMS!
2820 * OS/2:: The next-best thing to Unix. 1830 * OS/2:: The next-best thing to Unix.
2821 * MS-DOS:: The wonderful world of MS-DOG! 1831 * MS-DOS:: The wonderful world of MS-DOG!
2822 * Windows:: Windows NT, Chicago/Windows 95. 1832 * 32-Bit Windows:: Windows NT, Chicago/Windows 95.
1833 * Amiga:: The Amiga, for those who still love them.
2823 @end menu 1834 @end menu
1835 @end ifinfo
2824 1836
2825 @node VMS, OS/2, Non-Unix Operating Systems, Non-Unix Operating Systems 1837 @node VMS, OS/2, Non-Unix Operating Systems, Non-Unix Operating Systems
2826 @section VMS 1838 @section VMS
2827 @cindex VAX-VMS 1839 @cindex VAX-VMS
2828 @cindex AXP-VMS 1840 @cindex AXP-VMS
2829 @cindex Digital VMS 1841 @cindex Digital VMS
2830 @cindex VMS 1842 @cindex VMS
2831
2832 :: WORK :: VMS Specific instriuctions 1843 :: WORK :: VMS Specific instriuctions
2833 1844
2834 @node OS/2, MS-DOS, VMS, Non-Unix Operating Systems 1845 @node OS/2, MS-DOS, VMS, Non-Unix Operating Systems
2835 @section OS/2 1846 @section OS/2
2836 @cindex OS/2 1847 @cindex OS/2
2837 @cindex Warp 1848 @cindex Warp
2838
2839 :: WORK :: OS/2 Specific instructions 1849 :: WORK :: OS/2 Specific instructions
2840 1850
2841 @node MS-DOS, Windows, OS/2, Non-Unix Operating Systems 1851 @node MS-DOS, 32-Bit Windows, OS/2, Non-Unix Operating Systems
2842 @section MS-DOS 1852 @section MS-DOS
2843 @cindex MS-DOS 1853 @cindex MS-DOS
2844 @cindex Microsloth 1854 @cindex Microsloth
2845 @cindex DOS 1855 @cindex DOS
2846 @cindex MS-DOG 1856 @cindex MS-DOG
2847
2848 :: WORK :: DOS Specific instructions 1857 :: WORK :: DOS Specific instructions
2849 1858
2850 @node Windows, , MS-DOS, Non-Unix Operating Systems 1859 @node 32-Bit Windows, Amiga, MS-DOS, Non-Unix Operating Systems
2851 @section Windows 1860 @section 32-Bit Windows
2852 @cindex Windows (32-Bit) 1861 @cindex Windows (32-Bit)
2853 @cindex 32-Bit Windows 1862 @cindex 32-Bit Windows
2854 @cindex Microsloth 1863 @cindex Microsloth
2855 @cindex Windows '95 1864 @cindex Windows '95
2856
2857 :: WORK :: 32bit Windows Specific instructions 1865 :: WORK :: 32bit Windows Specific instructions
2858 1866
2859 @node Speech Integration, Advanced Features, Non-Unix Operating Systems, Top 1867 @node Amiga, Advanced Features, 32-Bit Windows, Non-Unix Operating Systems
2860 @chapter Speech Integration 1868 @section Amiga
2861 1869 @cindex Amiga
2862 :: WORK :: Emacspeak integration 1870 @cindex Commodore
2863 1871 :: WORK :: Amiga specific instructions
2864 @node Advanced Features, More Help, Speech Integration, Top 1872
1873 @node Advanced Features, Style Sheets, Amiga, Top
1874 @comment node-name, next, previous, up
2865 @chapter Advanced Features 1875 @chapter Advanced Features
2866 1876
1877 @ifinfo
2867 @menu 1878 @menu
2868 * Disk Caching:: Improving performance by using a local disk cache 1879 * Style Sheets:: Formatting control, the right way
2869 * Interfacing to Mail/News:: How to make VM understand hypertext links 1880 * Disk Caching:: Improving performance by using a local disk cache
2870 * Debugging HTML:: How to make Emacs/W3 display warnings about invalid 1881 * Interfacing to Mail/News:: How to make VM understand hypertext links
2871 @sc{html}/@sc{html}+ constructs. 1882 * Debugging HTML:: How to make Emacs-W3 display warnings about invalid
2872 * Hooks:: Various hooks to use throughout Emacs/W3 1883 HTML/HTML+ constructs.
2873 * Other Variables:: Miscellaneous variables that control the real 1884 * Native WAIS Support:: How to make Emacs-W3 understand WAIS links without
2874 guts of Emacs/W3. 1885 using a gateway.
1886 * Rating Links:: How to make Emacs-W3 put an 'interestingness' value
1887 next to each link.
1888 * Gopher Plus Support:: How Emacs-W3 makes use of the Gopher+ protocol.
1889 * Hooks:: Various hooks to use throughout Emacs-W3
1890 * Other Variables:: Miscellaneous variables that control the real
1891 guts of Emacs-W3.
2875 @end menu 1892 @end menu
2876 1893 @end ifinfo
2877 @node Disk Caching, Interfacing to Mail/News, Advanced Features, Advanced Features 1894
1895 @node Style Sheets, Disk Caching, Advanced Features, Advanced Features
1896 @section Style Sheets
1897 @cindex Formatting control
1898 @cindex Style sheets
1899 @cindex Look and Feel
1900 @cindex Layout control
1901 @cindex Experimental style sheet mechanism
1902 Emacs-W3 currently supports the experimental style sheet mechanism
1903 proposed by H&kon W. Lie of the W3 Consortium. This allows for the
1904 author to specify what a document should look like, and yet allow the
1905 end user to override any of the stylistic changes. This allows for
1906 people with special needs (most notably the visually impaired) to
1907 override style bindings that could make a document totally
1908 unreadable.
1909
1910 @example
1911 <style notation="css">
1912 /* This is a comment
1913 ** These will be ignored, up to the terminating */
1914
1915 h1 @{ align: center,
1916 color: yellow,
1917 background: red,
1918 font-size: 24pt
1919 @}
1920 h2 @{ align: right,
1921 font-family: palatino,
1922 font-size: 18pt
1923 @}
1924 </style>
1925 @end example
1926
1927 :: WORK :: Much more information on stylesheets
1928
1929 @cindex <style>
1930 To include a stylesheet into a document, simply use the <style> tag.
1931 Use the @b{notation} attribute to specify what language the stylesheet
1932 is specified in. The default is @b{css}. The data between the <style>
1933 and </style> tags is the stylsheet proper - no HTML parsing is done to
1934 this data - it is treated similar to an <XMP> section of text. To
1935 reference an external stylesheet, use the <link> tag.
1936 @example
1937 <link rel="stylesheet" href="/bill.style">
1938 @end example
1939 If these two mechanisms are mixed, then the URL is resolved first, and
1940 the contents of the <style> tag take precedence if there are any
1941 conflicting directives.
1942
1943 @cindex DSSSL
1944 @cindex DSSSL-lite
1945 In the future, DSSSL and DSSSL-lite will be supported as valid
1946 stylesheet languages, but not in this release. For more information on
1947 DSSSL-lite see http://www.falch.no/~pepper/DSSSL-Lite/ - for more
1948 information on full DSSSL, see
1949 ftp://ftp.jclark.com/pub/dsssl/dsssl.ps.gz
1950
1951 @node Disk Caching, Interfacing to Mail/News, Style Sheets, Advanced Features
2878 @section Disk Caching 1952 @section Disk Caching
2879 @cindex Caching 1953 @cindex Caching
2880 @cindex Persistent Cache 1954 @cindex Persistent Cache
2881 @cindex Disk Cache 1955 @cindex Disk Cache
2882
2883 A cache stores the information on a page on the local machine. When 1956 A cache stores the information on a page on the local machine. When
2884 requesting a page that is in the cache, Emacs/W3 can retrieve the page 1957 requesting a page that is in the cache, Emacs-W3 can retrieve the page
2885 from the cache more quickly than retrieving the page again from its 1958 from the cache more quickly than retrieving the page again from its
2886 location out on the network. With a well-populated cache, browsing the 1959 location out on the network. With a well-populated cache, browsing the
2887 web is dramatically faster. 1960 web is dramatically faster.
2888 1961
2889 The first time a page is requested, Emacs/W3 retrieves the page from the 1962 The first time a page is requested, Emacs-W3 retrieves the page from the
2890 network. When requesting a page that is in the cache, Emacs/W3 checks 1963 network. When requesting a page that is in the cache, Emacs-W3 checks
2891 to see if the page has changed since it was last retrieved from the 1964 to see if the page has changed since it was last retrieved from the
2892 remote machine. If it has not changed, the local copy is used, saving 1965 remote machine. If it has not changed, the local copy is used, saving
2893 the transmission of the file over the network. 1966 the transmission of the file over the network.
2894 1967
2895 @vindex url-automatic-caching 1968 @vindex url-automatic-caching
2914 @cindex Browsing with no network connection 1987 @cindex Browsing with no network connection
2915 @cindex Netless browsing 1988 @cindex Netless browsing
2916 @vindex url-standalone-mode 1989 @vindex url-standalone-mode
2917 With a large cache of documents on the local disk, it can be very handy 1990 With a large cache of documents on the local disk, it can be very handy
2918 when traveling, or any other time the network connection is not active 1991 when traveling, or any other time the network connection is not active
2919 (a laptop with a dial-on-demand PPP connection, etc). Emacs/W3 can rely 1992 (a laptop with a dial-on-demand PPP connection, etc). Emacs-W3 can rely
2920 solely on its cache, and avoid checking to see if the page has changed 1993 solely on its cache, and avoid checking to see if the page has changed
2921 on the remote server. In the case of a dial-on-demand PPP connection, 1994 on the remote server. In the case of a dial-on-demand PPP connection,
2922 this will keep the phone line free as long as possible, only bringing up 1995 this will keep the phone line free as long as possible, only bringing up
2923 the PPP connection when asking for a page that is not located in the 1996 the PPP connection when asking for a page that is not located in the
2924 cache. This is very useful for demonstrations as well. To turn this 1997 cache. This is very useful for demonstrations as well. To turn this
2925 feature on, set the variable @code{url-standalone-mode} to 1998 feature on, set the variable @code{url-standalone-mode} to
2926 non-@code{nil}, or choose the `Use Cache Only' menu item (under 1999 non-@code{nil}, or choose the `Use Cache Only' menu item (under
2927 `Options') 2000 `Options')
2928 2001
2002 @cindex Caching options
2003 @cindex Alternate caching method
2004 Emacs-W3 caches files under the temporary directory specified by
2005 @code{url-temporary-directory}, in a user-specific subdirectory
2006 (determined by the @code{user-real-login-name} function). The cache
2007 files are stored under their original names, so a URL like:
2008 http://www.aventail.com/foo/bar/baz.html would be stored in a cache file
2009 named: /tmp/wmperry/com/aventail/www/foo/bar/baz.html. Sometimes,
2010 espcially with gopher links, there will be name conflicts, and an error
2011 will be signalled. This cannot be avoided, and still have reasonable
2012 performance at startup time (reading in an index file of all the cached
2013 pages can take a long time on slow machines, or even fast machines with
2014 large caches). When running XEmacs 19.12 or later, a different naming
2015 scheme can be used. This avoids name conflicts, but loses the human
2016 readability of the cache file names. The cache files will look like:
2017 /tmp/wmperry/acbd18db4cc2f85cedef654fccc4a4d8, which is certainly
2018 unique, but not very user-friendly. To turn this on, add this to the
2019 @file{.emacs} file:
2020
2021
2022 @example
2023 (add-hook 'w3-load-hooks '(lambda ()
2024 (fset 'url-create-cached-filename
2025 'url-create-cached-filename-using-md5)))
2026 @end example
2027
2028 If other versions of emacs will not be sharing the cache, I highly
2029 recommend this method of creating the cache filename.
2030
2031
2929 @node Interfacing to Mail/News, Debugging HTML, Disk Caching, Advanced Features 2032 @node Interfacing to Mail/News, Debugging HTML, Disk Caching, Advanced Features
2930 @section Interfacing to Mail/News 2033 @section Interfacing to Mail/News
2931 @cindex Interfacing to Mail/News 2034 @cindex Interfacing to Mail/News
2932 @cindex VM 2035 @cindex VM
2933 @cindex Using Emacs/W3 with VM 2036 @cindex Using Emacs-W3 with VM
2934 @cindex GNUS 2037 @cindex GNUS
2935 @cindex Using Emacs/W3 with Gnus 2038 @cindex Using Emacs-W3 with Gnus
2936 @cindex RMAIL 2039 @cindex RMAIL
2937 @cindex Using Emacs/W3 with RMAIL 2040 @cindex Using Emacs-W3 with RMAIL
2938 2041 More and more people are including URLs in their signatures, and within
2939 More and more people are including @sc{url}s in their signatures, and within
2940 the body of mail messages. It can get quite tedious to type these into 2042 the body of mail messages. It can get quite tedious to type these into
2941 the minibuffer to follow one. 2043 the minibuffer to follow one.
2942 2044
2943 @vindex browse-url-browser-function 2045 @vindex browse-url-browser-function
2944 With the latest versions of VM (the 5.9x series of betas) and Gnus 2046 With the latest versions of VM (the 5.9x series of betas) and Gnus
2945 (5.x), @sc{url}s are automatically highlighted, and can be followed with the 2047 (5.x), URLs are automatically highlighted, and can be followed with the
2946 mouse or the return key. How the @sc{url}s are viewed is determined by the 2048 mouse or the return key. How the URLs are viewed is determined by the
2947 variable @code{browse-url-browser-function}, and it should be set to the 2049 variable @code{browse-url-browser-function}, and it should be set to the
2948 symbol @code{browse-url-w3}. 2050 symbol @code{browse-url-w3}.
2949 2051
2950 To access @sc{url}s from within RMAIL, the following hook should do the 2052 To access URLs from within RMAIL, the following hook should do the
2951 trick. 2053 trick.
2952 @example 2054 @example
2953 (add-hook 'rmail-mode-hook 2055 (add-hook 'rmail-mode-hook
2954 (function 2056 (function
2955 (lambda () 2057 (lambda ()
2956 (define-key rmail-mode-map [mouse-2] 'w3-maybe-follow-link-mouse) 2058 (define-key rmail-mode-map [mouse-2] 'w3-maybe-follow-link-mouse)
2957 (define-key rmail-mode-map "\r" 'w3-maybe-follow-link)))) 2059 (define-key rmail-mode-map "\r" 'w3-maybe-follow-link))))
2958 @end example 2060 @end example
2959 2061
2960 @node Debugging HTML, Hooks, Interfacing to Mail/News, Advanced Features 2062 @node Debugging HTML, Native WAIS Support, Interfacing to Mail/News, Advanced Features
2961 @section Debugging HTML 2063 @section Debugging HTML
2962 @cindex Debugging 2064 @cindex Debugging
2963 @cindex Invalid HTML 2065 @cindex Invalid HTML
2964 @cindex Bad HTML 2066 @cindex Bad HTML
2965 @vindex w3-debug-buffer 2067 @vindex w3-debug-buffer
2966 @vindex w3-debug-html 2068 @vindex w3-debug-html
2967
2968 For those people that are adventurous, or are just as anal as I am about 2069 For those people that are adventurous, or are just as anal as I am about
2969 people writing valid @sc{html}, set the variable @code{w3-debug-html} to 2070 people writing valid HTML, set the variable @code{w3-debug-html} to
2970 @code{t} and see what happens. 2071 @code{t} and see what happens.
2971 2072
2972 2073
2973 If a Emacs/W3 thinks it has encountered invalid @sc{html}, then a debugging 2074 If a Emacs-W3 thinks it has encountered invalid HTML, then a debugging
2974 message is displayed. 2075 message is displayed.
2975 2076
2976 :: WORK :: Need to list the different values w3-debug-html can have, and 2077 :: WORK :: Need to list the different values w3-debug-html can have, and
2977 :: WORK :: what they do :: 2078 :: WORK :: what they do ::
2978 2079
2979 @node Hooks, Other Variables, Debugging HTML, Advanced Features 2080 @node Native WAIS Support, Rating Links, Debugging HTML, Advanced Features
2081 @section Native WAIS Support
2082 This version of Emacs-W3 supports native WAIS querying (earlier
2083 versions required the use of a gateway program). In order to use the
2084 native WAIS support, a working @dfn{waisq} binary is required. I
2085 recommend the distribution from think.com -
2086 ftp://think.com/wais/wais-8-b6.1.tar.Z is a good place to start.
2087
2088 @vindex url-waisq-prog
2089 @vindex url-wais-gateway-server
2090 @vindex url-wais-gateway-port
2091 The variable @code{url-waisq-prog} must point to this executable, and
2092 one of @code{url-wais-gateway-server} or @code{url-wais-gateway-port}
2093 should be @code{nil}.
2094
2095 When a WAIS URL is encountered, a form will be automatically generated
2096 and displayed. After typing in the search term, the query will be sent
2097 to the server by running the @code{url-waisq-prog} in a subprocess. The
2098 results will be converted into HTML and displayed.
2099
2100 @node Rating Links, Gopher Plus Support, Native WAIS Support, Advanced Features
2101 @section Rating Links
2102 The @code{w3-link-info-display-function} variable can be used to 'rate' a URL
2103 when it shows up in an HTML page. If non-@code{nil}, then this should
2104 be a list specifying (or a symbol specifying the name) of a function.
2105 This function should expect one argument, a fully specified URL, and
2106 should return a string. This string is inserted after the link
2107 text.
2108
2109 If a user has decided that all links served from blort.com are too laden
2110 with images, and wants to be warned that a link points at this host,
2111 they could do something like this:
2112
2113 @example
2114 (defun check-url (url)
2115 (if (string-match "://[^/]blort.com" url)
2116 "[SLOW!]" ""))
2117
2118 (setq w3-link-info-display-function 'check-url)
2119 @end example
2120
2121 So that all links pointing to any site at blort.com shows up as "Some
2122 link[SLOW!]" instead of just "Some link".
2123
2124 @node Gopher Plus Support, Hooks, Rating Links, Advanced Features
2125 @section Gopher+ Support
2126 @cindex Gopher+
2127 The gopher+ support in Emacs-W3 is limited to the conversion of ASK
2128 blocks into HTML 3.0 forms, and the usage of the content-length given by
2129 the gopher+ server to give a nice status bar on the bottom of the
2130 screen.
2131
2132 This will hopefully be extended to include the Gopher+ method of
2133 content-type negotiation, but this may be a while.
2134
2135 @node Hooks, Other Variables, Gopher Plus Support, Advanced Features
2980 @section Hooks 2136 @section Hooks
2981 @cindex Hooks 2137 @cindex Hooks
2982
2983 These are the various hooks that can be used to customize some of 2138 These are the various hooks that can be used to customize some of
2984 Emacs/W3's behavior. They are arranged in the order in which they would 2139 Emacs-W3's behavior. They are arranged in the order in which they would
2985 happen when retrieving a document. These are all 'normal hooks' in 2140 happen when retrieving a document. All of these are functions (or lists
2986 standard Emacs-terminology, meaning they are functions (or lists of 2141 of functions) that are called consecutively.
2987 functions) that are called consecutively.
2988 2142
2989 @table @code 2143 @table @code
2990 @vindex w3-load-hook 2144 @vindex w3-load-hooks
2991 @item w3-load-hook 2145 @item w3-load-hooks
2992 These hooks are run the first time a @sc{url} is fetched. All the 2146 These hooks are run by @code{w3-do-setup} the first time a URL is
2993 Emacs/W3 variables are initialized before this hook is run. 2147 fetched. All the w3 variables are initialized before this hook is
2994 @item w3-mode-hook 2148 run.
2149 @item w3-file-done-hooks
2150 These hooks are run by @code{w3-prepare-buffer} after all parsing on a
2151 document has been done. All @code{url-current-}@var{*} and
2152 @code{w3-current-}@var{*} variables are initialized when this hook is run.
2153 This is run before the buffer is shown, and before any inlined images
2154 are downloaded and converted.
2155 @item w3-file-prepare-hooks
2156 These hooks are run by @code{w3-prepare-buffer} before any parsing is
2157 done on the HTML file. The HTTP/1.0 headers specified by
2158 @code{w3-show-headers} have been inserted, the syntax table has been set
2159 to @code{w3-parse-args-syntax-table}, and any personal annotations have
2160 been inserted by the time this hook is run.
2161 @item w3-mode-hooks
2995 These hooks are run after a buffer has been parsed and displayed, but 2162 These hooks are run after a buffer has been parsed and displayed, but
2996 before any inlined images are downloaded and converted. 2163 before any inlined images are downloaded and converted.
2997 @item w3-source-file-hook 2164 @item w3-source-file-hooks
2998 These hooks are run after displaying a document's source. 2165 These hooks are run after displaying a document's source
2999 @end table 2166 @end table
3000 2167
3001 @node Other Variables, , Hooks, Advanced Features 2168 @node Other Variables, , Hooks, Advanced Features
3002 @section Miscellaneous variables 2169 @section Miscellaneous variables
3003 2170 There are lots of variables that control the real nitty-gritty of Emacs-W3
3004 There are lots of variables that control the real nitty-gritty of Emacs/W3
3005 that the beginning user probably shouldn't mess with. Here they are. 2171 that the beginning user probably shouldn't mess with. Here they are.
3006 2172
3007 @table @code 2173 @table @code
3008 @item url-bad-port-list 2174 @item url-bad-port-list
3009 @vindex url-bad-port-list 2175 @vindex url-bad-port-list
3010 List of ports to warn the user about connecting to. Defaults to just 2176 List of ports to warn the user about connecting to. Defaults to just
3011 the mail and @sc{nntp} ports so a malicious @sc{html} author cannot spoof mail or 2177 the mail and NNTP ports so a malicious HTML author cannot spoof mail or
3012 news to other people. 2178 news to other people.
3013 @item url-confirmation-func 2179 @item url-confirmation-func
3014 @vindex url-confirmation-func 2180 @vindex url-confirmation-func
3015 What function to use for asking yes or no functions. Possible values 2181 What function to use for asking yes or no functions. Possible values
3016 are @code{'yes-or-no-p} or @code{'y-or-n-p}, or any function that takes 2182 are @code{'yes-or-no-p} or @code{'y-or-n-p}, or any function that takes
3018 answer is gotten. Defaults to @code{'yes-or-no-p}. 2184 answer is gotten. Defaults to @code{'yes-or-no-p}.
3019 @item w3-default-action 2185 @item w3-default-action
3020 @vindex w3-default-action 2186 @vindex w3-default-action
3021 A lisp symbol specifying what action to take for files with extensions 2187 A lisp symbol specifying what action to take for files with extensions
3022 that are not in the @code{mm-mime-extensions} assoc list. This is 2188 that are not in the @code{mm-mime-extensions} assoc list. This is
3023 useful in case Emacs/W3 ever run across files with weird extensions 2189 useful in case Emacs-W3 ever run across files with weird extensions
3024 (.foo, .README, .READMEFIRST, etc.). In most circumstances, this should 2190 (.foo, .README, .READMEFIRST, etc.). In most circumstances, this should
3025 not be required anymore. 2191 not be required anymore.
3026 2192
3027 Possible values: any lisp symbol. Should be a function that takes no 2193 Possible values: any lisp symbol. Should be a function that takes no
3028 arguments. The return value does not matter, it is ignored. Some examples 2194 arguments. The return value does not matter, it is ignored. Some examples
3053 @item w3-reuse-buffers 2219 @item w3-reuse-buffers
3054 @vindex w3-reuse-buffers 2220 @vindex w3-reuse-buffers
3055 Determines what happens when @code{w3-fetch} is called on a document 2221 Determines what happens when @code{w3-fetch} is called on a document
3056 that has already been loaded into another buffer. Possible values are: 2222 that has already been loaded into another buffer. Possible values are:
3057 @code{nil}, @code{yes}, and @code{no}. @code{nil} will ask the user if 2223 @code{nil}, @code{yes}, and @code{no}. @code{nil} will ask the user if
3058 Emacs/W3 should reuse the buffer (this is the default value). A value of 2224 Emacs-W3 should reuse the buffer (this is the default value). A value of
3059 @code{yes} means assume the user wants to always reuse the buffer. A 2225 @code{yes} means assume the user wants to always reuse the buffer. A
3060 value of @code{no} means assume the user always wants to re-fetch the 2226 value of @code{no} means assume the user always wants to re-fetch the
3061 document. 2227 document.
3062 @item w3-show-headers 2228 @item w3-show-headers
3063 @vindex w3-show-headers 2229 @vindex w3-show-headers
3064 This is a list of @sc{http}/1.0 headers to show at the end of a buffer. All 2230 This is a list of HTTP/1.0 headers to show at the end of a buffer. All
3065 the headers should be in lowercase. They are inserted at the end of the 2231 the headers should be in lowercase. They are inserted at the end of the
3066 buffer in a <UL> list. Alternatively, if this is simply @code{t}, then 2232 buffer in a <UL> list. Alternatively, if this is simply @code{t}, then
3067 all the @sc{http}/1.0 headers are shown. The default value is 2233 all the HTTP/1.0 headers are shown. The default value is
3068 @code{nil}. 2234 @code{nil}.
3069 @item w3-show-status, url-show-status 2235 @item w3-show-status, url-show-status
3070 @vindex url-show-status 2236 @vindex url-show-status
3071 @vindex w3-show-status 2237 @vindex w3-show-status
3072 Whether to show progress messages in the minibuffer. 2238 Whether to show progress messages in the minibuffer.
3095 binary, x-compress, x-hqx, and quoted-printable. 2261 binary, x-compress, x-hqx, and quoted-printable.
3096 @item url-uncompressor-alist 2262 @item url-uncompressor-alist
3097 @vindex url-uncompressor-alist 2263 @vindex url-uncompressor-alist
3098 An assoc list of file extensions and the appropriate uncompression 2264 An assoc list of file extensions and the appropriate uncompression
3099 programs for each. This is used to build the Accept-encoding header for 2265 programs for each. This is used to build the Accept-encoding header for
3100 @sc{http}/1.0 requests. 2266 HTTP/1.0 requests.
2267 @item url-waisq-prog
2268 @vindex url-waisq-prog
2269 Name of the waisq executable on this system. This should be the
2270 @file{waisq} program from think.com's wais8-b5.1 distribution.
3101 @end table 2271 @end table
3102 2272
3103 @node More Help, Future Directions, Advanced Features, Top 2273 @node More Help, Future Directions, , Top
3104 @chapter More Help 2274 @chapter More Help
3105 @cindex Relevant Newsgroups 2275 @cindex Relevant Newsgroups
3106 @cindex Newsgroups 2276 @cindex Newsgroups
3107 @cindex Support 2277 @cindex Support
3108 For more help on Emacs/W3, please send me mail 2278 For more help on Emacs-W3, please send me mail
3109 (@i{wmperry@@cs.indiana.edu}). Several discussion lists have also been 2279 (@i{wmperry@@cs.indiana.edu}). Several discussion lists have also been
3110 created for Emacs/W3. To subscribe, send mail to 2280 created for Emacs-W3. To subscribe, send mail to
3111 @i{majordomo@@indiana.edu}, with the body of the message 'subscribe 2281 @i{majordomo@@indiana.edu}, with the body of the message 'subscribe
3112 @var{listname} @var{<email addres>}'. All other mail should go to 2282 @var{listname} @var{<email addres>}'. All other mail should go to
3113 @i{<listname>@@indiana.edu}. 2283 @i{<listname>@@indiana.edu}.
3114 2284
3115 2285
3116 @itemize @bullet 2286 @itemize @bullet
3117 @item 2287 @item
3118 w3-announce -- this list is for anyone interested in Emacs/W3, and 2288 w3-announce -- this list is for anyone interested in Emacs-W3, and
3119 should in general only be used by me. The gnu.emacs.sources newsgroup 2289 should in general only be used by me. The gnu.emacs.sources newsgroup
3120 and a few other mailing lists are included on this. Please only use 2290 and a few other mailing lists are included on this. Please only use
3121 this list for major package releases related to Emacs/W3. 2291 this list for major package releases related to Emacs-W3.
3122 (@i{www-announce@@w3.org} is included on this list). 2292 (@i{www-announce@@w3.org} is included on this list).
3123 @item 2293 @item
3124 w3-beta -- this list is for beta testers of Emacs/W3. These brave souls test 2294 w3-beta -- this list is for beta testers of Emacs-W3. These brave souls test
3125 out not-quite stable code. 2295 out not-quite stable code.
3126 @item 2296 @item
3127 w3-dev -- a list consisting of myself and a few other people who are 2297 w3-dev -- a list consisting of myself and a few other people who are
3128 interested in the internals of Emacs/W3, and doing active development work. 2298 interested in the internals of Emacs-W3, and doing active development work.
3129 Pretty dead right now, but I hope it will grow. 2299 Pretty dead right now, but I hope it will grow.
3130 @end itemize 2300 @end itemize
3131 2301
3132 For more help on the World Wide Web in general, please refer to the 2302 For more help on the World Wide Web in general, please refer to the
3133 comp.infosystems.www.* newsgroups. There are also several discussion 2303 comp.infosystems.www.* newsgroups. There are also several discussion
3155 for the better). This is a list of the things that are being worked on 2325 for the better). This is a list of the things that are being worked on
3156 right now. 2326 right now.
3157 2327
3158 :: WORK :: Revamp the todo list 2328 :: WORK :: Revamp the todo list
3159 2329
3160 @node Reporting Bugs, Dealing with Firewalls, Future Directions, Top 2330 @node Reporting Bugs, Installing SSL, Future Directions, Top
3161 @appendix Reporting Bugs 2331 @appendix Reporting Bugs
3162 @cindex Reporting Bugs 2332 @cindex Reporting Bugs
3163 @cindex Bugs 2333 @cindex Bugs
3164 @cindex Contacting the author 2334 @cindex Contacting the author
3165 2335
3166 If any bugs are discovered in Emacs/W3, please report them to the 2336 :: WORK :: Reporting bugs needs work.
3167 mailing list @t{w3-beta@@indiana.edu} - this is where the brave souls 2337
3168 who beta test the latest versions of Emacs/W3 reside, and are generally 2338 @node Installing SSL, Using PGP/PEM, Reporting Bugs, Top
3169 very responsive to bug reports.
3170
3171 @kindex w
3172 Please make sure to use the bug submission feature of Emacs/W3, so that
3173 all relevant information will be sent along with your bug report. By
3174 default this is bound to the `@key{w}' key when in an Emacs/W3 buffer,
3175 or you can use @key{M-x w3-submit-bug} from anywhere within Emacs.
3176
3177 For problems that are causing emacs to signal and error, please send a
3178 backtrace. You can get a backtrace by @kbd{M-x setvariable RET
3179 debug-on-error RET t RET}, and then reproduce the error.
3180
3181 If the problem is visual, please capture a copy of the output and mail
3182 it along with the bug report (preferably as a MIME attachment, but
3183 anything will do). You can use the @code{xwd} program under X-windows
3184 for this, or @key{Alt-PrintScreen} under Windows 95/NT. Sorry, but I
3185 don't remember what the magic incarnation is for doing a screen dump
3186 under NeXTstep or OS/2.
3187
3188 If the problem is actually causing Emacs to crash, then you will need to
3189 also mail the maintainers of the various Emacs distributions with the
3190 bug. Please use the @t{gnu.emacs.bug} newgroup for reporting bugs with
3191 GNU Emacs 19, and @t{comp.emacs.xemacs} for reporting bugs with XEmacs
3192 19 or XEmacs 20. I am actively involved with the beta testing of the
3193 latest versions of both branches of Emacs, and if I can reproduce the
3194 problem, I will do my best to see it gets fixed in the next release.
3195
3196 It is also important to always maintain as much context as possible in
3197 your responses. I get so much email from my various Emacs-activities
3198 and work, that I cannot remember everything. If you send a bug report,
3199 and I send you a reply, and you reply with 'no that didn't work', then
3200 odds are I will have no clue what didn't work, much less what that was
3201 trying to fix in the first place. It will be much quicker and less
3202 painful if I don't have to waste a round-trip email exchange saying
3203 'what are you talking about'.
3204
3205 @node Dealing with Firewalls, Proxy Gateways, Reporting Bugs, Top
3206 @appendix Dealing with Firewalls
3207 By default, Emacs can support standard @sc{tcp}/@sc{ip} network
3208 connections on almost all the platforms it runs on (Unix, @sc{vms},
3209 Windows, etc). However, there are several situations where it is not
3210 sufficient.
3211
3212 @table @b
3213 @cindex Firewalls
3214 @item Firewalls
3215 It is becoming more and more common to be behind a firewall or some
3216 other system that restricts your outbound network activity, especially
3217 if you are like me and away from the wonderful world of academia.
3218 Emacs/W3 has several different methods to get around firewalls (not to
3219 worry though - none of them should get you in trouble with the local
3220 @sc{mis} department.)
3221
3222 @item Emacs cannot resolve hostnames.
3223 @cindex Faulty hostname resolvers
3224 @cindex Broken SunOS libc
3225 @cindex Hostname resolution
3226 This happens quite often on SunOS workstations and some ULTRIX machines.
3227 Some C libraries do not include the hostname resolver routines in their
3228 static libraries. If Emacs was linked statically, and was not linked
3229 with the resolver libraries, it wil not be able to get to any machines
3230 off the local network. This is characterized by being able to reach
3231 someplace with a raw ip number, but not its hostname
3232 (@url{http://129.79.254.191/} works, but
3233 @url{http://www.cs.indiana.edu/} doesn't).
3234
3235 The best solution for this problem is to recompile Emacs, making sure to
3236 either link dynamically (if available on your operating system), or
3237 include the @file{-lresolv}.
3238
3239 @cindex url-gateway-broken-resolution
3240 If you do not have the disk space or the appropriate permissions to
3241 recompile Emacs, another alternative is using the @file{nslookup}
3242 program to do hostname resolution. To turn this on, set the variable
3243 @code{url-gateway-broken-resolution} in your @file{~/.emacs} file. This
3244 runs the program specified by @code{url-gateway-nslookup-program} (by
3245 default "@code{nslookup}" to do hostname resolution. This program should
3246 expect a single argument on the command line - the hostname to resolve,
3247 and should produce output similar to the standard Unix @file{nslookup}
3248 program:
3249
3250 @example
3251 Name: www.cs.indiana.ed
3252 Address: 129.79.254.191
3253 @end example
3254
3255 @cindex @sc{term}
3256 @item Using @sc{term} (or @sc{term}-like) Networking Software
3257 @sc{term} @footnote{@sc{term} is a user-level protocol for emulating
3258 @sc{ip} over a serial line. More information is available at
3259 @url{ftp://sunsite.unc.edu/pub/Linux/apps/comm/term}} for slip-like
3260 access to the internet.
3261
3262 @sc{note}: XEmacs and Emacs 19.22 or later have patches to enable native
3263 @sc{term} networking. To enable it, @code{#define TERM} in the
3264 appropriate s/*.h file for the operating system, then change the
3265 @code{SYSTEM_LIBS} definition to include the @file{termnet} library that
3266 comes with the latest versions of @sc{term}.
3267
3268 If you run into any problems with the native @sc{term} networking
3269 support in Emacs or XEmacs, please let @t{wmperry@@cs.indiana.edu} know,
3270 as he is responsible for the original support.
3271 @end table
3272
3273 @vindex url-gateway-local-host-regexp
3274 Emacs/W3 has support for using the gateway mechanism for certain
3275 domains, and directly connecting to others. The variable
3276 @code{url-gateway-local-host-regexp} controls this behaviour. This is a
3277 regular expression @footnote{Please see the full Emacs distribution for
3278 a description of regular expressions} that matches local hosts that do
3279 not require the use of a gateway. If @code{nil}, then all connections
3280 are made through the gateway.
3281
3282 @vindex url-gateway-method
3283 Emacs/W3 supports several methods of getting around gateways. The
3284 variable @code{url-gateway-method} controls which of these methods is
3285 used. This variable can have several values (use these as symbol names,
3286 not strings), ie: @samp{(setq url-gateway-method 'telnet)}. Possible
3287 values are:
3288
3289 @table @dfn
3290 @item telnet
3291 Use this method if you must first telnet and log into a gateway host,
3292 and then run telnet from that host to connect to outside machines.
3293
3294 :: WORK :: document telnet gw variables
3295 This section needs more information, specifically documenting the
3296 following variables. For now, please do @key{C-h v} on the variable for
3297 more information.
3298
3299 @table @code
3300 @item url-gateway-telnet-host
3301 @item url-gateway-telnet-parameters
3302 @item url-gateway-telnet-password-prompt
3303 @item url-gateway-telnet-puser-name
3304 @item url-gateway-prompt-pattern
3305 @end table
3306
3307 @item rlogin
3308 This method is identical to the @code{telnet} method, but uses
3309 @file{rlogin} to log into the remote machine without having to send the
3310 username and password over the wire every time.
3311
3312 :: WORK :: document rlogin gw variables
3313 This section needs more information, specifically documenting the
3314 following variables. For now, please do @key{C-h v} on the variable for
3315 more information.
3316
3317 @table @code
3318 @item url-gateway-rlogin-host
3319 @item url-gateway-rlogin-parameters
3320 @item url-gateway-rlogin-user-name
3321 @item url-gateway-prompt-pattern
3322 @end table
3323
3324 @item tcp
3325 Masanobu UMEDA (@i{umerin@@mse.kyutech.ac.jp}) has written a very small
3326 application that you can run in a subprocess to do the network
3327 connections.
3328
3329 @item @sc{socks}
3330 Use if the firewall has a @sc{socks} gateway running on it.
3331
3332 :: WORK :: document socks variables
3333 This section needs more information, specifically documenting the
3334 following variables. For now, please do @key{C-h v} on the variable for
3335 more information.
3336
3337 @table @code
3338 @item socks-host
3339 @item socks-password
3340 @item socks-username
3341 @item socks-port
3342 @item socks-timeout
3343 @end table
3344
3345 @c @item ssl
3346 @c This probably shouldn't be documented
3347
3348 @item native
3349 This means that Emacs/W3 should use the builtin networking code of
3350 Emacs. This should be used only if there is no firewall, or the Emacs
3351 source has already been hacked to get around the firewall.
3352 @end table
3353
3354 Emacs/W3 should now be able to get outside the local network. If none
3355 of this makes sense, its probably my fault. Please check with the
3356 network administrators to see if they have a program that does most of
3357 this already, since somebody somewhere at the company has probably been
3358 through something similar to this before, and would be much more
3359 helpful/knowledgeable about the local setup than I would be. But feel
3360 free to mail me as a last resort.
3361
3362 @node Proxy Gateways, Installing SSL, Dealing with Firewalls, Top
3363 @appendix Proxy Gateways
3364 @vindex url-proxy-services
3365 @cindex Proxy Servers
3366 @cindex Proxies
3367 @cindex Proxies, environment variables
3368 @cindex HTTP Proxy
3369
3370 In late January 1993, Kevin Altis and Lou Montulli proposed and
3371 implemented a new proxy service. This service requires the use of
3372 environment variables to specify a gateway server/port # to send
3373 protocol requests to. Each protocol (@sc{http}, @sc{wais}, gopher,
3374 @sc{ftp}, etc.) can have a different gateway server. The environment
3375 variables are @code{PROTOCOL}_proxy, where @code{PROTOCOL} is one of the
3376 supported network protocols (gopher, file, @sc{http}, @sc{ftp}, etc.)
3377
3378 @cindex No Proxy
3379 @cindex Proxies, exclusion lists
3380 @vindex NO_PROXY
3381 For companies with internal intranets, it will usually be helpful to
3382 define a list of hosts that should be contacted directly, @b{not} sent
3383 through the proxy. The @code{NO_PROXY} environment variable controls
3384 what hosts are able to be contacted directly. This should be a comma
3385 separated list of hostnames, domain names, or a mixture of both.
3386 Asterisks can be used as a wildcard. For example:
3387
3388 @example
3389 NO_PROXY=*.aventail.com,home.com,*.seanet.com
3390 @end example
3391
3392 tells Emacs/W3 to contact all machines in the @b{aventail.com} and
3393 @b{seanet.com} domains directly, as well as the machine named
3394 @b{home.com}.
3395
3396 @vindex url-proxy-services
3397 @cindex Proxies, setting from lisp
3398 For those adventurous souls who enjoy writing regular expressions, all
3399 the proxy settings can be manipulated from Emacs-Lisp. The variable
3400 @code{url-proxy-services} controls this. This is an assoc list, keyed
3401 on the protocol type (@sc{http}, gopher, etc) in all lowercase. The
3402 @code{cdr} of each entry should be the fully-specified @sc{url} of the proxy
3403 server to contact, or, in the case of the special "no_proxy" entry, a
3404 regular expression that matches any hostnames that should be contacted
3405 directly.
3406
3407 @example
3408 (setq url-proxy-services '(("http" . "http://proxy.aventail.com/")
3409 ("no_proxy" . "^.*\\(aventail\\|seanet\\)\.com")))
3410 @end example
3411
3412 @node Installing SSL, Mailcap Files, Proxy Gateways, Top
3413 @appendix Installing SSL 2339 @appendix Installing SSL
3414 @cindex HTTP/1.0 Authentication 2340 @cindex HTTP/1.0 Authentication
3415 @cindex Secure Sockets Layer 2341 @cindex Secure Sockets Layer
3416 @cindex SSL 2342 @cindex SSL
3417 @cindex Gag Puke Retch 2343 @cindex Gag Puke Retch
3418 @cindex Exportability 2344 @cindex Exportability
3419 @cindex Export Restrictions 2345 @cindex Export Restrictions
3420 In order to use SSL in Emacs/W3, an implementation of SSL is necessary. 2346 In order to use SSL in Emacs-W3, an implementation of SSL is necessary.
3421 Emacs/W3 is configued to work out of the box with SSLeay 0.6.6 or later. 2347 These are the implementations that I am aware of:
3422 For best results, you should apply a patch that makes the SSLeay client
3423 much quieter about what it reports.
3424
3425 You can download SSLeay from
3426 @url{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL/}
3427
3428 The following variables control how the external program is invoked.
3429 2348
3430 @table @code 2349 @table @code
3431 @item ssl-program-name 2350 @item SSLRef 2.0
2351 Available from Netscape Communications @footnote{http://www.netscape.com/newsref/std/sslref.html}. This requires the
2352 RSARef library, which is not exportable. The RSARef library is
2353 available from ftp://ftp.rsa.com/rsaref/
2354 @item SSLeay 0.4
2355 An implementation by Eric Young (eay@@mincom.oz.au) that is free for
2356 commerial or noncommercial use, and was developed completely outside the
2357 US by a non-US citizen. More information can be found at
2358 ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL/
2359 @end table
2360
3432 @vindex ssl-program-name 2361 @vindex ssl-program-name
3433 The name of the program to run, as a string. 2362 Whichever reference implementation is used (I recommend the SSLeay
2363 distribution, just to thumb a nose at the NSA :), there is a program
2364 that can be run in a subprocess that takes a hostname and port number on
2365 the command line, and reads/writes to standard input/output (the
2366 Netscape implementation comes with one of these by default). Set the
2367 variable @code{ssl-program-name} to point to this program.
2368
2369
2370 This should be all the configuration necessary. In the future, I will
2371 be distributing a set of patches to Emacs 19.xx and XEmacs 19.xx to
2372 SSL-enable them, for the sake of speed.
2373
2374 @node Using PGP/PEM, Mailcap Files, Installing SSL, Top
2375 @appendix Using PGP/PEM
2376 @cindex HTTP/1.0 Authentication
2377 @cindex Public Key Cryptography
2378 @cindex Authentication, PGP
2379 @cindex Authentication, PEM
2380 @cindex RIPEM
2381 @cindex Public Key Cryptography
2382 @cindex PGP
2383 @cindex Pretty Good Privacy
2384 @cindex Encryption
2385 @cindex Security
2386 @cindex ITAR must die
2387 @cindex Stupid export restrictions
2388 @cindex Support your local crypto-anarchist
2389 @cindex NSA freaks
2390 Most of this chapter has been reproduced from the original documentation
2391 written by Rob McCool (@i{robm@@netscape.com})@footnote{See
2392 http://hoohoo.ncsa.uiuc.edu/docs/PEMPGP.html for the original}.
2393
2394 RIPEM is 'Riordan's Internet Privacy Enhanced Mail', and is currently on
2395 version 1.2b3. US citizens can ftp it from
2396 ftp://ripem.msu.edu/pub/crypt/ripem.
2397
2398 PGP is 'Pretty Good Privacy', and is currently on version 2.6. The
2399 legal controversies that plagued earlier versions have been resolved, so
2400 this is a competely legal program now. There is also a legal version
2401 for european users, called 2.6ui (the Unofficial International
2402 version).
2403
2404 PGP and PEM are programs that allow two parties to communicate in a way
2405 which does not allow third parties to read them, and which certify that
2406 the person who sent the message is really who they claim they are.
2407
2408
2409 PGP and PEM both use RSA encryption. The U.S. government has strict
2410 export controls over foreign use of this technology, so people outside
2411 the U.S. may have a difficult time finding programs which perform the
2412 encryption.
2413
2414 A working copy of either Pretty Good Privacy or RIPEM is required. You
2415 should be familiar with the program and have generated a public/private
2416 key pair.
2417
2418
2419 Currently, the protocol has been implemented with PEM and PGP using
2420 local key files on the server side, and on the client side with PEM
2421 using finger to retrieve the server's public key.
2422
2423 Parties who wish to use Emacs-W3 with PEM or PGP encryption will need to
2424 communicate beforehand and find a tamper-proof way to exchange their
2425 public keys.
2426
2427 Pioneers get shot full of arrows. This work is currently in the
2428 experimental stages and thus may have some problems that I have
2429 overlooked. The only known problem that I know about is that the
2430 messages are currently not timestamped. This means that a malicious
2431 user could record the encrypted message with a packet sniffer and repeat
2432 it back to the server ad nauseum. Although they would not be able to
2433 read the reply, if the request was for something being charged for, this
2434 could be very inconvenient.
2435
2436 This protocol is almost word-for-word a copy of Tony Sander's RIPEM
2437 based scheme, generalized a little. Below, wherever PEM is used,
2438 replace it with PGP, and the behaviour should remain the same.
3434 2439
3435 @example 2440 @example
3436 (setq ssl-program-name "s_client") 2441 *Client:*
2442
2443 GET /docs/protected.html HTTP/1.0
2444 UserAgent: Emacs-W3/2.1.x
2445
2446 *Server:*
2447
2448 HTTP/1.0 401 Unauthorized
2449 WWW-Authenticate: PEM entity="webmaster@@hoohoo.ncsa.uiuc.edu"
2450 Server: NCSA/1.1
2451
2452 *Client:*
2453
2454 GET / HTTP/1.0
2455 Authorization: PEM entity="robm@@ncsa.uiuc.edu"
2456 Content-type: application/x-www-pem-request
2457
2458 --- BEGIN PRIVACY-ENHANCED MESSAGE ---
2459 this is the real request, encrypted
2460 --- END PRIVACY-ENHANCED MESSAGE ---
2461
2462 *Server:*
2463
2464 HTTP/1.0 200 OK
2465 Content-type: application/x-www-pem-reply
2466
2467 --- BEGIN PRIVACY-ENHANCED MESSAGE ---
2468 this is the real reply, encrypted
2469 --- END PRIVACY-ENHANCED MESSAGE ---
2470 That's it.
3437 @end example 2471 @end example
3438 2472
3439 @item ssl-program-arguments 2473 @cindex Mailcrypt
3440 @vindex ssl-program-arguments 2474 Emacs-W3 uses the excellent @i{mailcrypt}@footnote{Available from
3441 This should be used if your SSL program needs command line switches to 2475 http://www.cs.indiana.edu/LCD/cover.html?mailcrypt} package written by
3442 specify any behaviour (certificate file locations, etc). This is a list 2476 Jin S Choi (@i{jsc@@mit.edu}). This package takes care of calling ripem
3443 of strings and symbols. 2477 and/or pgp with the correct arguments. Please see the documentation at
3444 2478 the top of mailcrypt.el for instructions on using mailcrypt. All bug
3445 The special symbols 'host and 'port may be used in the list of arguments 2479 reports about mailcrypt should go to Jin S Choi, but bugs about how I
3446 and will be replaced with the hostname and service/port that will be 2480 use it in Emacs-W3 should of course be directed to me.
3447 connected to. 2481
3448 2482 @node Mailcap Files, General Index, Using PGP/PEM, Top
3449 @example
3450 (setq ssl-program-arguments '("-host" host "-port" service "-verify" "4"
3451 "-CApath /usr/local/ssl/certs"))
3452 @end example
3453 @end table
3454
3455 @node Mailcap Files, Down with DoubleClick, Installing SSL, Top
3456 @appendix Mailcap Files 2483 @appendix Mailcap Files
3457 NCSA Mosaic and almost all other WWW browsers rely on a separate file 2484 NCSA Mosaic and almost all other WWW browsers rely on a separate file
3458 for mapping MIME types to external viewing programs. This takes some of 2485 for mapping MIME types to external viewing programs. This takes some of
3459 the burden off of browser developers, so each browser does not have to 2486 the burden off of browser developers, so each browser does not have to
3460 support all image formats, or postscript, etc. Instead of having the 2487 support all image formats, or postscript, etc. Instead of having the
3461 users of Emacs/W3 duplicate this in lisp, this file can be parsed using 2488 users of Emacs-W3 duplicate this in lisp, this file can be parsed using
3462 the @code{mm-parse-mailcaps} function. This function is called each 2489 the @code{mm-parse-mailcaps} function. This function is called each
3463 time Emacs/W3 is loaded. It tries to locate mimetype files in several 2490 time Emacs-W3 is loaded. It tries to locate mimetype files in several
3464 places. If the environment variable @code{MAILCAPS} is nonempty, then 2491 places. If the environment variable @code{MAILCAPS} is nonempty, then
3465 this is assumed to specify a UNIX-like path of mimetype files (this is a 2492 this is assumed to specify a UNIX-like path of mimetype files (this is a
3466 colon separated string of pathnames). If the @code{MAILCAPS} 2493 colon separated string of pathnames). If the @code{MAILCAPS}
3467 environment variable is empty, then Emacs/W3 looks for these 2494 environment variable is empty, then Emacs-W3 looks for these
3468 files: 2495 files:
3469 2496
3470 @enumerate 2497 @enumerate
3471 @item 2498 @item
3472 @file{~/.mailcap} 2499 @file{~/.mailcap}
3584 simply ignore all such unrecognized fields to permit such extensions, 2611 simply ignore all such unrecognized fields to permit such extensions,
3585 some of which might be standardized in a future version of this 2612 some of which might be standardized in a future version of this
3586 document. 2613 document.
3587 @end itemize 2614 @end itemize
3588 2615
3589 @node Down with DoubleClick, General Index, Mailcap Files, Top 2616 @node General Index, Key Index, Mailcap Files, Top
3590 @appendix Down with DoubleClick
3591 :: WORK :: Document why doubleclick is evil
3592 :: WORK :: Document how you can never see another ad from them again
3593
3594 @node General Index, Key Index, Down with DoubleClick, Top
3595 @appendix General Index 2617 @appendix General Index
3596 @printindex fn 2618 @printindex fn
3597 @node Key Index, , General Index, Top 2619 @node Key Index, , General Index, Top
3598 @appendix Key Index 2620 @appendix Key Index
3599 @printindex ky 2621 @printindex ky
3600 @contents 2622 @contents
3601 @bye 2623 @bye