From virusinfo at eurodata.de Tue Jul 1 13:41:10 2003 From: virusinfo at eurodata.de (virusinfo@eurodata.de) Date: Tue Jul 1 08:41:12 2003 Subject: [Doc-SIG] VIRUS Warnung vom eurodata-Mailserver Message-ID: <20030701124016.7470.qmail@mail-int.eurodata.de> V I R U S W A R N U N G ********************************* In Ihrer E-Mail AN : s.goeldner@eurodata.de BETREFF : Re: Movie DATUM : Tue, 1 Jul 2003 20:31:39 +0800 wurde ein VIRUS ( I-Worm.Sobig.gen) gefunden. Die Auslieferung wurde abgebrochen ! Sie sollten Ihr System auf Virenbefall überprüfen ! From axel at kollmorgen.net Tue Jul 1 17:35:52 2003 From: axel at kollmorgen.net (Axel Kollmorgen) Date: Tue Jul 1 10:36:05 2003 Subject: [Doc-SIG] docutils (rst) User Documentation in Microsoft HTML Help (chm) format Message-ID: <006401c33fde$16c69af0$0200a8c0@somewhere.on.the.net> hi all, i just converted a big part of the docutils (rst) User Documentation (Intro, Primer, Quick rst, spec, FAQ, ...) into chm format. this is quite handy (for people who can use chm ;)) - it's all in one place, with a single toc, and fully searchable. you can download it from http://build.kollm.org/rst.zip (the chm plus the HTML Help project and toc files). i just applied for a docutils sandbox and will put this and possible future versions there (probably http://docutils.sourceforge.net/sandbox/ax-/). for future versions, i'll try one of the rst-to-docbook converters and the docbook chm writer to automatically generate a complete documentation. current version doesn't include all documentation and doesn't link all toc entries to their subheadings properly. regards. -- ax [Maris had a surgical procedure called botox injections] Dr. Niles Crane: They use those toxins that you put in the forehead, it deadens the muscles and takes away the wrinkles. I gave it to her as a gift one year for our anniversary. Dr. Frasier Crane: Oh, yes, probably your tenth. That's toxins, isn't it? From postmaster at osb.hu Tue Jul 1 18:58:07 2003 From: postmaster at osb.hu (postmaster@osb.hu) Date: Tue Jul 1 11:58:14 2003 Subject: [Doc-SIG] VIRUS NOTIFICATION Message-ID: <200307011558.h61Fw7417255@pax.intranet.osb.hu> #################### VÍRUSJELZÉS ##################### Ön (Doc-SIG@python.org) az alábbi címre küldött üzenetet: Az üzenet vírust vagy hasonlót tartalmaz, ezért nem kézbesítettük. Dátum : Tue, 1 Jul 2003 23:51:35 +0800 Tárgy : Re: Movie Vírus : W32/Sobig-E Lehetséges, hogy az Ön számítógépe fertőzött, anélkül, hogy Ön tudna róla. Ellenőrizze a gépét egy friss víruskeresővel, vagy forduljon szakemberhez. ###################################################### ################# VIRUS NOTIFICATION ################# A message you (Doc-SIG@python.org) sent to contains a virus or a worm, and was not delivered. Date : Tue, 1 Jul 2003 23:51:35 +0800 Subject : Re: Movie Virus : W32/Sobig-E It is possible your computer is infected without your knowledge. Check your computer with a current virus scanner or ask a specialist. ###################################################### From gherman at darwin.in-berlin.de Fri Jul 4 14:58:00 2003 From: gherman at darwin.in-berlin.de (Dinu Gherman) Date: Fri Jul 4 07:56:17 2003 Subject: [Doc-SIG] reST editor experiments... Message-ID: Hi, I'm experimenting with a prototype reST editor on OS X, and made a little QuickTime MPEG4 movie displaying the current state of it (since few people here might have OS X available): http://python.net/~gherman/tmp/ReSTedit0.mov (5 min, 1486 KB) It's only a start, I'm just using docutils.core.publish_string(text, writer_name='html'), but it raises for me several questions about: - changing the default CSS (or parts thereof) - suppressing warning messages (e.g. about empty sections) - raising visual significance of warning messages (e.g. color, etc.) Thanks for any insight into these issues! Dinu CC'ed to the PyObjC list... -- Dinu C. Gherman ...................................................................... "Even if you do learn to speak correct English, whom are you going to speak it to?" (Clarence Darrow) From tismer at tismer.com Mon Jul 7 05:08:34 2003 From: tismer at tismer.com (Christian Tismer) Date: Sun Jul 6 22:08:34 2003 Subject: [Doc-SIG] German Umlauts Message-ID: <3F08D622.3080006@tismer.com> Hi! I've started using reStructuredText for my Wiki pages, and I like RST quite much. Where I have problems are so-called "Umlauts". I know this is kinda Unicode issue, but I'd just like to know if and how this is handled in RST? The simple HTML way of ü doesn't work (why?). Is something planned here? (I'd be happy to help) Or is it at leat possible do define a default encoding? thanks a lot for any pointer -- chris -- Christian Tismer :^) Mission Impossible 5oftware : Have a break! Take a ride on Python's Johannes-Niemeyer-Weg 9a : *Starship* http://starship.python.net/ 14109 Berlin : PGP key -> http://wwwkeys.pgp.net/ work +49 30 89 09 53 34 home +49 30 802 86 56 pager +49 173 24 18 776 PGP 0x57F3BF04 9064 F4E1 D754 C2FF 1619 305B C09C 5A3B 57F3 BF04 whom do you want to sponsor today? http://www.stackless.com/ From gherman at darwin.in-berlin.de Mon Jul 7 09:42:03 2003 From: gherman at darwin.in-berlin.de (Dinu Gherman) Date: Mon Jul 7 02:40:05 2003 Subject: [Doc-SIG] German Umlauts In-Reply-To: <3F08D622.3080006@tismer.com> Message-ID: <1E950E9F-B046-11D7-982B-00039345C610@darwin.in-berlin.de> Christian Tismer: > Where I have problems are so-called "Umlauts". > I know this is kinda Unicode issue, but I'd just > like to know if and how this is handled in RST? I'm much of a reST newbie myself, but I do see Umlauts using the Latin-1 encoding and a call like this: rest = docutils.core.publish_string( text, writer_name='html', settings_overrides={'input_encoding': 'latin-1', 'output_encoding': 'latin-1'}) > The simple HTML way of ü doesn't work (why?). Obviously, normal HTML snippets are not just recognised without using some kind of magic directives or escaping mechanisms... Finding that out is on my todo list as well... Dinu -- Dinu C. Gherman ...................................................................... "People are either hunting for husbands or hiding from them." (Oscar Wilde) From grubert at users.sourceforge.net Mon Jul 7 10:36:15 2003 From: grubert at users.sourceforge.net (grubert@users.sourceforge.net) Date: Mon Jul 7 03:37:48 2003 Subject: [Doc-SIG] German Umlauts In-Reply-To: <1E950E9F-B046-11D7-982B-00039345C610@darwin.in-berlin.de> References: <1E950E9F-B046-11D7-982B-00039345C610@darwin.in-berlin.de> Message-ID: On Mon, 7 Jul 2003, Dinu Gherman wrote: > Christian Tismer: > > > Where I have problems are so-called "Umlauts". > > I know this is kinda Unicode issue, but I'd just > > like to know if and how this is handled in RST? > > I'm much of a reST newbie myself, but I do see Umlauts using the > Latin-1 encoding and a call like this: > > rest = docutils.core.publish_string( > text, > writer_name='html', > settings_overrides={'input_encoding': 'latin-1', > 'output_encoding': 'latin-1'}) > > > The simple HTML way of ü doesn't work (why?). > > Obviously, normal HTML snippets are not just recognised without > using some kind of magic directives or escaping mechanisms... > Finding that out is on my todo list as well... being ignorant as long as possible, my 2cent: 0.01: we have two encodings a. the input encoding: which tells the reader (reST parser) what to expect. b. the output encoding: which tells the writer what to produce. 0.02: the html writer does handle the smallest possible number of html character encoding &<>" and as a bonus @ will be written as @ to maybe fool some foolish spamrobots. believing from seeing: when i make a document here (latin1 or iso-8859-1) a) running through: html.py without specifying an ecnoding gives me ``??`` for an ?. b) option "-i iso-8859" produces "?" for "?". and ```` in the header. 0.03: would explain this behaviour but i offered only 2. although i can offer another one two add encodings for any requested html-entity (within reasonable limits not the whole unicode universe). -- BINGO: This left unindentionally unblank --- Engelbert Gruber -------+ SSG Fintl,Gruber,Lassnig / A6170 Zirl Innweg 5b / Tel. ++43-5238-93535 ---+ From tismer at tismer.com Mon Jul 7 14:24:32 2003 From: tismer at tismer.com (Christian Tismer) Date: Mon Jul 7 07:23:46 2003 Subject: [Doc-SIG] German Umlauts In-Reply-To: References: <1E950E9F-B046-11D7-982B-00039345C610@darwin.in-berlin.de> Message-ID: <3F095870.3030602@tismer.com> > On Mon, 7 Jul 2003, Dinu Gherman wrote: > > >>Christian Tismer: >> >> >>>Where I have problems are so-called "Umlauts". >>>I know this is kinda Unicode issue, but I'd just >>>like to know if and how this is handled in RST? >> >>I'm much of a reST newbie myself, but I do see Umlauts using the >>Latin-1 encoding and a call like this: >> >> rest = docutils.core.publish_string( >> text, >> writer_name='html', >> settings_overrides={'input_encoding': 'latin-1', >> 'output_encoding': 'latin-1'}) >> >> >>>The simple HTML way of ü doesn't work (why?). >> >>Obviously, normal HTML snippets are not just recognised without >>using some kind of magic directives or escaping mechanisms... >>Finding that out is on my todo list as well... Sure, I meant it like a suggestion. grubert@users.sourceforge.net wrote: > being ignorant as long as possible, my 2cent: > > 0.01: we have two encodings > > a. the input encoding: which tells the reader (reST parser) > what to expect. > b. the output encoding: which tells the writer what to > produce. > > 0.02: the html writer does handle the smallest possible number > of html character encoding &<>" and as a bonus @ will be > written as @ to maybe fool some foolish spamrobots. > > believing from seeing: when i make a document here (latin1 or iso-8859-1) > > a) running through: html.py without specifying an ecnoding gives me > ``??`` for an ?. > b) option "-i iso-8859" produces "?" for "?". > and ```` in the header. Thanks a lot, I already found out that it is possible to specify encoding schemes. Ok, I should have been more specific: I'm using ReST in a Zope ZWiki. How do I change the encoding for Zope? Is it possible to set that per page, or do I have to set something by environment variables, global for Zope? What would be the most flexible default encoding for a multilingual website? thanks again -- chris -- Christian Tismer :^) Mission Impossible 5oftware : Have a break! Take a ride on Python's Johannes-Niemeyer-Weg 9a : *Starship* http://starship.python.net/ 14109 Berlin : PGP key -> http://wwwkeys.pgp.net/ work +49 30 89 09 53 34 home +49 30 802 86 56 pager +49 173 24 18 776 PGP 0x57F3BF04 9064 F4E1 D754 C2FF 1619 305B C09C 5A3B 57F3 BF04 whom do you want to sponsor today? http://www.stackless.com/ From cben at techunix.technion.ac.il Mon Jul 7 16:20:40 2003 From: cben at techunix.technion.ac.il (Beni Cherniavsky) Date: Mon Jul 7 08:20:46 2003 Subject: [Doc-SIG] German Umlauts In-Reply-To: <3F095870.3030602@tismer.com> References: <1E950E9F-B046-11D7-982B-00039345C610@darwin.in-berlin.de> <3F095870.3030602@tismer.com> Message-ID: Christian Tismer wrote on 2003-07-07: > What would be the most flexible default > encoding for a multilingual website? > UTF-8, naturally. For multilingual sites you want some encoding that covers all Unicode at once; UTF-8 is the most portable of these (no endianess issues, ascii-compatible). -- Beni Cherniavsky Israel is moving to 7-digit cellphone numbers since the current 6-digit scheme, although prolonged for some time by supernetting, "comes to the end of its useful life, once again due to address space exhaustion" [RFC 1606 on IPv9 :-]. Why won't they just use DNS? From grubert at users.sourceforge.net Tue Jul 8 10:24:26 2003 From: grubert at users.sourceforge.net (grubert@users.sourceforge.net) Date: Tue Jul 8 03:25:23 2003 Subject: [Doc-SIG] German Umlauts In-Reply-To: <3F095870.3030602@tismer.com> References: <1E950E9F-B046-11D7-982B-00039345C610@darwin.in-berlin.de> <3F095870.3030602@tismer.com> Message-ID: On Mon, 7 Jul 2003, Christian Tismer wrote: > > On Mon, 7 Jul 2003, Dinu Gherman wrote: > > > > > >>Christian Tismer: > >> > >> > >>>Where I have problems are so-called "Umlauts". > >>>I know this is kinda Unicode issue, but I'd just > >>>like to know if and how this is handled in RST? > >> > >>I'm much of a reST newbie myself, but I do see Umlauts using the > >>Latin-1 encoding and a call like this: > >> > >> rest = docutils.core.publish_string( > >> text, > >> writer_name='html', > >> settings_overrides={'input_encoding': 'latin-1', > >> 'output_encoding': 'latin-1'}) > >> > >> > >>>The simple HTML way of ü doesn't work (why?). > >> > >>Obviously, normal HTML snippets are not just recognised without > >>using some kind of magic directives or escaping mechanisms... > >>Finding that out is on my todo list as well... > > Sure, I meant it like a suggestion. > > grubert@users.sourceforge.net wrote: > > > being ignorant as long as possible, my 2cent: > > > > 0.01: we have two encodings > > > > a. the input encoding: which tells the reader (reST parser) > > what to expect. > > b. the output encoding: which tells the writer what to > > produce. > > > > 0.02: the html writer does handle the smallest possible number > > of html character encoding &<>" and as a bonus @ will be > > written as @ to maybe fool some foolish spamrobots. > > > > believing from seeing: when i make a document here (latin1 or iso-8859-1) > > > > a) running through: html.py without specifying an ecnoding gives me > > ``??`` for an ?. > > b) option "-i iso-8859" produces "?" for "?". > > and ```` in the header. > > Thanks a lot, I already found out that it is > possible to specify encoding schemes. > Ok, I should have been more specific: > I'm using ReST in a Zope ZWiki. > How do I change the encoding for Zope? how do you call docutils, 1. above is the example for a custom publisher, 2. if you use html.py (maybe not a bad idea, let zope cache the page and decide when remake is necessary) use commandline or the configuration file. 3. ZReST http://docutils.sourceforge.net/sandbox/richard/ZReST/ which problem do have with each of this options ? > Is it possible to set that per page, or do I have to set something by > environment variables, global for Zope? depends :-) > What would be the most flexible default encoding for a multilingual website? depends on the assumed clients i would say utf-8 might support the widest span of characters but i am unsure about the number of browser supporting it. what is multilingual: english, g?rm?n, ... i check with david about encoding umlauts. -- BINGO: dramatically coordinate business infrastructures --- Engelbert Gruber -------+ SSG Fintl,Gruber,Lassnig / A6170 Zirl Innweg 5b / Tel. ++43-5238-93535 ---+ From tismer at tismer.com Wed Jul 9 04:11:50 2003 From: tismer at tismer.com (Christian Tismer) Date: Tue Jul 8 21:12:05 2003 Subject: [Doc-SIG] German Umlauts In-Reply-To: References: <1E950E9F-B046-11D7-982B-00039345C610@darwin.in-berlin.de> <3F095870.3030602@tismer.com> Message-ID: <3F0B6BD6.5010809@tismer.com> grubert@users.sourceforge.net wrote: > On Mon, 7 Jul 2003, Christian Tismer wrote: ... >>How do I change the encoding for Zope? > > > how do you call docutils, I have no idea, I just use the ZWiki with it. > 2. if you use html.py (maybe not a bad idea, let zope cache the page and decide > when remake is necessary) use commandline or the configuration file. I think this is nothing I should need to know when using a Zope product. ... >>Is it possible to set that per page, or do I have to set something by >>environment variables, global for Zope? > > depends :-) Very enlighting. Depends on what? >>What would be the most flexible default encoding for a multilingual website? > > depends on the assumed clients i would say utf-8 might support the widest > span of characters but i am unsure about the number of browser supporting > it. > > what is multilingual: english, g?rm?n, ... Here my result, after reading lots of code, more or less out-dated suggestions, and finally looking into /etc/python2.1/site.py : I set my debian server to use LAND="de_DE". There was some suggestion to use "de_DE@euro", but this encoding was not found in the python encoders. Seems also to be not needed, the Euro sign works just fine this way. The crucial thing was not to add a customized sitecustomize.py which didn't work (somebody suggests it somewhere, but it doesn't work). Instead, there are options provided in site.py, already, and changing a single line did the job for me: 252 if 01: <---- here, this enables what we need 253 # Enable to support locale aware default string encodings. 254 import locale 255 loc = locale.getdefaultlocale() 256 if loc[1]: 257 encoding = loc[1]; Without doing that, by using a single non-ASCII character, a reStructuredText ZWiki page barfs with an ugly traceback, which finally just says "UnicodeError". I think it would be worth adding a better message which tells the administrator that he should enable unicode handling by providing some default encoding. This is possible by either doing the site.py change, or one can set two environment variables, for instance in /etc/zope/zopectlrc There are used in /usr/lib/zope/lib/python/reStructuredText/__init__.py, namely REST_INPUT_ENCODING and REST_OUTPUT_ENCODING. I have the impression that this is a temporary solution, since the RST implementation for Zope is quite young. Having a default for the whole site is fine, but having the option to define an encoding per Wiki and/or per page would be much nicer. Anyway, I'm happy with what is there, already! cheers - chris -- Christian Tismer :^) Mission Impossible 5oftware : Have a break! Take a ride on Python's Johannes-Niemeyer-Weg 9a : *Starship* http://starship.python.net/ 14109 Berlin : PGP key -> http://wwwkeys.pgp.net/ work +49 30 89 09 53 34 home +49 30 802 86 56 pager +49 173 24 18 776 PGP 0x57F3BF04 9064 F4E1 D754 C2FF 1619 305B C09C 5A3B 57F3 BF04 whom do you want to sponsor today? http://www.stackless.com/ From tismer at tismer.com Wed Jul 9 04:36:22 2003 From: tismer at tismer.com (Christian Tismer) Date: Tue Jul 8 21:36:29 2003 Subject: [Doc-SIG] German Umlauts In-Reply-To: <3F0B6BD6.5010809@tismer.com> References: <1E950E9F-B046-11D7-982B-00039345C610@darwin.in-berlin.de> <3F095870.3030602@tismer.com> <3F0B6BD6.5010809@tismer.com> Message-ID: <3F0B7196.7040602@tismer.com> Christian Tismer wrote: ... > I set my debian server to use LAND="de_DE". There was some Gack! LANG="de_DE" -- Christian Tismer :^) Mission Impossible 5oftware : Have a break! Take a ride on Python's Johannes-Niemeyer-Weg 9a : *Starship* http://starship.python.net/ 14109 Berlin : PGP key -> http://wwwkeys.pgp.net/ work +49 30 89 09 53 34 home +49 30 802 86 56 pager +49 173 24 18 776 PGP 0x57F3BF04 9064 F4E1 D754 C2FF 1619 305B C09C 5A3B 57F3 BF04 whom do you want to sponsor today? http://www.stackless.com/ From skip at pobox.com Tue Jul 15 17:28:12 2003 From: skip at pobox.com (Skip Montanaro) Date: Tue Jul 15 17:28:39 2003 Subject: [Doc-SIG] Re: [Fink-users] Python 2.32b2-2 In-Reply-To: <16143.6473.613941.966481@montanaro.dyndns.org> References: <44F6AF7A-B398-11D7-B158-00306583718C@mchsi.com> <16143.6473.613941.966481@montanaro.dyndns.org> Message-ID: <16148.29164.328135.999721@montanaro.dyndns.org> I'm cc'ing Andrew Hartung from the fink-users mailing list as he's who brought this problem to my attention, and Milan Zamazal, as he's the py2texi author. The subject of critical problems to be solved before the 2.3 release came up on python-dev. Andrew is having trouble building the info docs: Jeff> On Fri, 11 Jul 2003, Andrew Hartung wrote: >>> Second, I am having trouble building the info documentation >>> files. Here is the error when I run make in the >>> /sw/share/doc/python23/doc/info directory: >>> >>> Unknown environment: comment >>> Args out of range: 405210, 405212 >>> make: *** [python-lib.info] Error 255 I thought originally that it was an Emacs problem, but it turns out to really be a limitation of regular expressions (the "re's can't count" problem). I doubt it's a Mac-specific thing. Here's what I was able to determine. I haven't completely solved the problem, but perhaps someone here can move this problem closer to a solution before 2.3rc1 is released. Doc/tools/py2texi.el attempts to process all the bits of Latex markup it finds, converting them into equivalent info markup. It tries to skip over optional macro args and does a decent job of this. It can handle \command{stuff here} fine, and can handle \command[optional stuff here]{stuff here} as long as "optional stuff here" doesn't include any right square brackets. This happens in py2texi-process-commands where it executes (py2texi-search-safe "\\\\\\([a-zA-Z*]+\\)\\(\\[[^]]*\\]\\)?" Unfortunately, libre.tex changed recently. This text was added to the end: \versionchanged[Simple uses of the \regexp{*?} pattern are now special-cased to avoid recursion. Thus, the above regular expression can avoid recursion by being recast as \regexp{Begin [a-zA-Z0-9_ ]*?end}. As a further benefit, such regular expressions will run faster than their recursive equivalents.]{2.3} Note the character set in the \regexp macro. py2texi-search-safe thus gobbles up [Simple uses of the \regexp{*?} pattern are now special-cased to avoid recursion. Thus, the above regular expression can avoid recursion by being recast as \regexp{Begin [a-zA-Z0-9_ ] as the second group, leaving *?end}. As a further benefit, such regular expressions will run faster than their recursive equivalents.] ungobbled. I can think of a hack or two. The simplest might to add an \rbrack macro to python.sty. That seems to work, though py2texi may have to be tweaked to map "\rbrack " into "]". This change at the bottom of libre.tex seems to avoid the above error: \newcommand{\rbrack}{]} \versionchanged[Simple uses of the \regexp{*?} pattern are now special-cased to avoid recursion. Thus, the above regular expression can avoid recursion by being recast as \regexp{Begin [a-zA-Z0-9_ \rbrack *?end}. As a further benefit, such regular expressions will run faster than their recursive equivalents.]{2.3} I still get makeinfo errors, but don't know what to do with them. At least Emacs doesn't crap out. ;-) I have a documentation bug opened on SF and originally thought I had a fix for py2texi.el (but it is no fix so ignore it). Unfortunately the damn SF site is down again so I can't refer you to the id number. You'll have to search for a doc bug submitted by me (montanaro) in the past few days. This is obviously not a showstopper for the 2.3rc1 releases, but it would be nice if it could be solved. Skip From goodger at python.org Tue Jul 15 21:58:49 2003 From: goodger at python.org (David Goodger) Date: Tue Jul 15 20:59:24 2003 Subject: [Doc-SIG] Re: reST editor experiments... In-Reply-To: References: Message-ID: <3F14A349.10807@python.org> I apologize for not replying sooner. I just realized that I haven't been receiving Doc-SIG mail since June 26 when I reconfigured my email forwarding address. Dinu Gherman wrote: > I'm experimenting with a prototype reST editor on OS X, Looks cool! I'm wondering though, isn't it a bit CPU-intensive to re-process the entire document with every keystroke? ;-) Is the software itself available? I use OS X and I'd like to give it a try. Are you aware of Gunnar Schwant's DocFactory? It uses wxPython. > It's only a start, I'm just using docutils.core.publish_string(text, > writer_name='html'), but it raises for me several questions about: > > - changing the default CSS (or parts thereof) Easy to do with runtime settings. See "Configuration File Entries" in , specifically "stylesheet" and "stylesheet_path". Runtime settings can be passed to Docutils with "settings" (must be complete), "settings_overrides", and "settings_spec" parameters to "publish_string". (Some aspects of this may change in the near future, when we overhaul config file & runtime settings handling.) Also the "Stylesheets" section of "Docutils Front-End Tools" (below "html.py") may be useful. > - suppressing warning messages (e.g. about empty sections) If the document processing was user-initiated, there would be a lot less of this. DocFactory handles system messages in a useful way. > - raising visual significance of warning messages (e.g. color, etc.) That can easily be done with the stylesheet. (If the top frame is HTML output, and if it supports CSS stylesheets.) -- David Goodger http://starship.python.net/~goodger For hire: http://starship.python.net/~goodger/cv Docutils: http://docutils.sourceforge.net/ (includes reStructuredText: http://docutils.sf.net/rst.html) From goodger at python.org Tue Jul 15 22:20:54 2003 From: goodger at python.org (David Goodger) Date: Tue Jul 15 21:21:28 2003 Subject: [Doc-SIG] Re: German Umlauts In-Reply-To: <3F08D622.3080006@tismer.com> References: <3F08D622.3080006@tismer.com> Message-ID: <3F14A876.8050801@python.org> Apologies for not replying sooner; email trouble. I see that you've found a solution to the main problem. That's good, because I don't know anything about Zope or ZWiki. I'll answer specifics that I do know about. Christian Tismer wrote: > I've started using reStructuredText for my Wiki pages, > and I like RST quite much. Great to hear! > The simple HTML way of ü doesn't work (why?). Because reStructuredText isn't HTML and doesn't understand XML-style character entities. There is a workaround if you really need them; see , question 2.7. > What would be the most flexible default > encoding for a multilingual website? UTF-8, definitely. I don't know about input issues though (edit boxes on web pages). > Without doing that, by using a single non-ASCII character, > a reStructuredText ZWiki page barfs with an ugly traceback, > which finally just says "UnicodeError". > > I think it would be worth adding a better message which tells > the administrator that he should enable unicode handling by > providing some default encoding. The latest Docutils code handles errors better. I don't know if that helps with ZWiki though; it probably uses an older snapshot of Docutils code. -- David Goodger http://starship.python.net/~goodger For hire: http://starship.python.net/~goodger/cv Docutils: http://docutils.sourceforge.net/ (includes reStructuredText: http://docutils.sf.net/rst.html) From fdrake at acm.org Tue Jul 15 23:41:39 2003 From: fdrake at acm.org (Fred L. Drake, Jr.) Date: Tue Jul 15 22:42:20 2003 Subject: [Doc-SIG] Re: German Umlauts In-Reply-To: <3F14A876.8050801@python.org> References: <3F08D622.3080006@tismer.com> <3F14A876.8050801@python.org> Message-ID: <16148.47971.824609.462403@grendel.zope.com> David Goodger writes: > The latest Docutils code handles errors better. I don't know if that > helps with ZWiki though; it probably uses an older snapshot of > Docutils code. There's a Zope 3 ZWiki port which assumes that docutils has been installed separately. The docutils included in the Zope 2 CVS was just updated on July 10; I think that was to the 0.3 release. I don't know how users of the separate ZWiki for Zope 2 get docutils; there might be a copy of it included, or it may require a separate installation if the Zope version is too old to include docutils. -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From pdm at zamazal.org Thu Jul 17 09:06:08 2003 From: pdm at zamazal.org (Milan Zamazal) Date: Thu Jul 17 02:06:54 2003 Subject: [Doc-SIG] Re: [Fink-users] Python 2.32b2-2 In-Reply-To: <16148.29164.328135.999721@montanaro.dyndns.org> (Skip Montanaro's message of "Tue, 15 Jul 2003 16:28:12 -0500") References: <44F6AF7A-B398-11D7-B158-00306583718C@mchsi.com> <16143.6473.613941.966481@montanaro.dyndns.org> <16148.29164.328135.999721@montanaro.dyndns.org> Message-ID: <87y8yxadrj.fsf@zamazal.org> Thanks, Skip, for an excellent investigation. >>>>> "SM" == Skip Montanaro writes: SM> but it turns out to really be a limitation of regular SM> expressions (the "re's can't count" problem). Yes, that causes a lot of trouble. SM> I can think of a hack or two. The simplest might to add an SM> \rbrack macro to python.sty. This would be the best solution from the point of view of py2texi, since I'm not going to turn it into a real LaTeX parser. SM> That seems to work, though py2texi may have to be tweaked to map SM> "\rbrack " into "]". That's no problem. SM> I still get makeinfo errors, but don't know what to do with SM> them. At least Emacs doesn't crap out. ;-) If an update of py2texi is needed, please let me know and send me the documentation source URL. I don't track Python development, so I must be noted explicitly about any need of action. Regards, Milan Zamazal -- When you're in a fight with an idiot, it's difficult for other people to tell which one the idiot is. -- Bruce Perens in debian-devel From fdrake at acm.org Thu Jul 17 11:20:35 2003 From: fdrake at acm.org (Fred L. Drake, Jr.) Date: Thu Jul 17 10:21:11 2003 Subject: [Doc-SIG] Doc/ tree closes at noon, US/Eastern Message-ID: <16150.45235.157891.942002@grendel.zope.com> The Doc/ portion of the Python source tree will be closed at noon, US/Eastern time. That leaves one hour and 40 minutes for finding typos and making it really easy for me to fix your favorite documentation bugs/omissions. No complicated changes will be accepted. If you have an outstanding doc bug/patch on SourceForge that you feel absolutely *must* be addressed in Python 2.3, raise the priority to 7, but realize that the amount of time I can make available is fairly limited today. Thanks! -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From fdrake at acm.org Thu Jul 17 12:32:53 2003 From: fdrake at acm.org (Fred L. Drake, Jr.) Date: Thu Jul 17 11:33:57 2003 Subject: [Doc-SIG] Re: [Fink-users] Python 2.32b2-2 In-Reply-To: <87y8yxadrj.fsf@zamazal.org> References: <44F6AF7A-B398-11D7-B158-00306583718C@mchsi.com> <16143.6473.613941.966481@montanaro.dyndns.org> <16148.29164.328135.999721@montanaro.dyndns.org> <87y8yxadrj.fsf@zamazal.org> Message-ID: <16150.49576.715002.387020@grendel.zope.com> Milan Zamazal writes: > This would be the best solution from the point of view of py2texi, since I think you got a copy of my response to Skip; basically, this is too hackish. > I'm not going to turn it into a real LaTeX parser. I don't blame you, either! ;-) > If an update of py2texi is needed, please let me know and send me the > documentation source URL. I don't track Python development, so I must > be noted explicitly about any need of action. We've made a bunch of changes recently; most just adding support for additional macros and environments. I've included a copy of what's going to be in Python 2.3 release candidate 1. -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation -------------- next part -------------- ;;; py2texi.el -- Conversion of Python LaTeX documentation to Texinfo ;; Copyright (C) 1998, 1999, 2001, 2002 Milan Zamazal ;; Author: Milan Zamazal ;; Version: $Id: py2texi.el,v 1.8 2003/07/16 03:44:48 fdrake Exp $ ;; Keywords: python ;; COPYRIGHT NOTICE ;; ;; This program is free software; you can redistribute it and/or modify it ;; under the terms of the GNU General Public License as published by the Free ;; Software Foundation; either version 2, or (at your option) any later ;; version. ;; ;; This program is distributed in the hope that it will be useful, but ;; WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ;; for more details. ;; ;; You can find the GNU General Public License at ;; http://www.gnu.org/copyleft/gpl.html ;; or you can write to the Free Software Foundation, Inc., 59 Temple Place, ;; Suite 330, Boston, MA 02111-1307, USA. ;;; Commentary: ;; This is a Q&D hack for conversion of Python manuals to on-line help format. ;; I desperately needed usable online documenta for Python, so I wrote this. ;; The result code is ugly and need not contain complete information from ;; Python manuals. I apologize for my ignorance, especially ignorance to ;; python.sty. Improvements of this convertor are welcomed. ;; How to use it: ;; Load this file and apply `M-x py2texi'. You will be asked for name of a ;; file to be converted. ;; Where to find it: ;; New versions of this code might be found at ;; http://www.zamazal.org/software/python/py2texi/ . ;;; Code: (require 'texinfo) (eval-when-compile (require 'cl)) (defvar py2texi-python-version "2.2" "What to substitute for the \\version macro.") (defvar py2texi-python-short-version (progn (string-match "[0-9]+\\.[0-9]+" py2texi-python-version) (match-string 0 py2texi-python-version)) "Short version number, usually set by the LaTeX commands.") (defvar py2texi-texi-file-name nil "If non-nil, that string is used as the name of the Texinfo file. Otherwise a generated Texinfo file name is used.") (defvar py2texi-info-file-name nil "If non-nil, that string is used as the name of the Info file. Otherwise a generated Info file name is used.") (defvar py2texi-stop-on-problems nil "*If non-nil, stop when you encouter soft problem.") (defconst py2texi-environments '(("abstract" 0 "@quotation" "@end quotation\n") ("center" 0 "" "") ("cfuncdesc" 3 (progn (setq findex t) "\n@table @code\n@item \\1 \\2(\\3)\n@findex \\2\n") "@end table\n") ("cmemberdesc" 3 "\n@table @code\n@item \\2 \\3\n" "@end table\n") ("classdesc" 2 (progn (setq obindex t) "\n@table @code\n@item \\1(\\2)\n@obindex \\1\n") "@end table\n") ("classdesc*" 1 (progn (setq obindex t) "\n@table @code\n@item \\1\n@obindex \\1\n") "@end table\n") ("comment" 0 "\n@ignore\n" "\n@end ignore\n") ("csimplemacrodesc" 1 (progn (setq cindex t) "\n@table @code\n@item \\1\n@cindex \\1\n") "@end table\n") ("ctypedesc" 1 (progn (setq cindex t) "\n@table @code\n@item \\1\n@cindex \\1\n") "@end table\n") ("cvardesc" 2 (progn (setq findex t) "\n@table @code\n@item \\1 \\2\n@findex \\2\n") "@end table\n") ("datadesc" 1 (progn (setq findex t) "\n@table @code\n@item \\1\n@findex \\1\n") "@end table\n") ("datadescni" 1 "\n@table @code\n@item \\1\n" "@end table\n") ("definitions" 0 "@table @dfn" "@end table\n") ("description" 0 "@table @samp" "@end table\n") ("displaymath" 0 "" "") ("document" 0 (concat "@defcodeindex mo\n" "@defcodeindex ob\n" "@titlepage\n" (format "@title " title "\n") (format "@author " author "\n") "@page\n" author-address "@end titlepage\n" "@node Top, , , (dir)\n") (concat "@indices\n" "@contents\n" "@bye\n")) ("enumerate" 0 "@enumerate" "@end enumerate") ("envdesc" 2 (concat "\n@table @code" "\n@item @backslash{}begin@{\\1@}\\2") "@end table\n") ("excdesc" 1 (progn (setq obindex t) "\n@table @code\n@item \\1\n@obindex \\1\n") "@end table\n") ("excclassdesc" 2 (progn (setq obindex t) "\n@table @code\n@item \\1(\\2)\n@obindex \\1\n") "@end table\n") ("flushleft" 0 "" "") ("fulllineitems" 0 "\n@table @code\n" "@end table\n") ("funcdesc" 2 (progn (setq findex t) "\n@table @code\n@item \\1(\\2)\n@findex \\1\n") "@end table\n") ("funcdescni" 2 "\n@table @code\n@item \\1(\\2)\n" "@end table\n") ("itemize" 0 "@itemize @bullet" "@end itemize\n") ("list" 2 "\n@table @code\n" "@end table\n") ("longtableii" 4 (concat "@multitable @columnfractions .5 .5\n" "@item \\3 @tab \\4\n" "@item ------- @tab ------ \n") "@end multitable\n") ("longtableiii" 5 (concat "@multitable @columnfractions .33 .33 .33\n" "@item \\3 @tab \\4 @tab \\5\n" "@item ------- @tab ------ @tab ------\n") "@end multitable\n") ("macrodesc" 2 (concat "\n@table @code" "\n@item \\1@{\\2@}") "@end table\n") ("memberdesc" 1 (progn (setq findex t) "\n@table @code\n@item \\1\n@findex \\1\n") "@end table\n") ("memberdescni" 1 "\n@table @code\n@item \\1\n" "@end table\n") ("methoddesc" 2 (progn (setq findex t) "\n@table @code\n@item \\1(\\2)\n@findex \\1\n") "@end table\n") ("methoddescni" 2 "\n@table @code\n@item \\1(\\2)\n" "@end table\n") ("notice" 0 "@emph{Notice:} " "") ("opcodedesc" 2 (progn (setq findex t) "\n@table @code\n@item \\1 \\2\n@findex \\1\n") "@end table\n") ("productionlist" 0 "\n@table @code\n" "@end table\n") ("quotation" 0 "@quotation" "@end quotation") ("seealso" 0 "See also:\n@table @emph\n" "@end table\n") ("seealso*" 0 "@table @emph\n" "@end table\n") ("sloppypar" 0 "" "") ("small" 0 "" "") ("tableii" 4 (concat "@multitable @columnfractions .5 .5\n" "@item \\3 @tab \\4\n" "@item ------- @tab ------ \n") "@end multitable\n") ("tableiii" 5 (concat "@multitable @columnfractions .33 .33 .33\n" "@item \\3 @tab \\4 @tab \\5\n" "@item ------- @tab ------ @tab ------\n") "@end multitable\n") ("tableiv" 6 (concat "@multitable @columnfractions .25 .25 .25 .25\n" "@item \\3 @tab \\4 @tab \\5 @tab \\6\n" "@item ------- @tab ------- @tab ------- @tab -------\n") "@end multitable\n") ("tablev" 7 (concat "@multitable @columnfractions .20 .20 .20 .20 .20\n" "@item \\3 @tab \\4 @tab \\5 @tab \\6 @tab \\7\n" "@item ------- @tab ------- @tab ------- @tab ------- @tab -------\n") "@end multitable\n") ("alltt" 0 "@example" "@end example") ) "Associative list defining substitutions for environments. Each list item is of the form (ENVIRONMENT ARGNUM BEGIN END) where: - ENVIRONMENT is LaTeX environment name - ARGNUM is number of (required) macro arguments - BEGIN is substitution for \begin{ENVIRONMENT} - END is substitution for \end{ENVIRONMENT} Both BEGIN and END are evaled. Moreover, you can reference arguments through \N regular expression notation in strings of BEGIN.") (defconst py2texi-commands '(("AA" 0 "@AA{}") ("aa" 0 "@aa{}") ("ABC" 0 "ABC") ("appendix" 0 (progn (setq appendix t) "")) ("ASCII" 0 "ASCII") ("author" 1 (progn (setq author (match-string 1 string)) "")) ("authoraddress" 1 (progn (setq author-address (match-string 1 string)) "")) ("b" 1 "@w{\\1}") ("bf" 0 "@destroy") ("bifuncindex" 1 (progn (setq findex t) "@findex{\\1}")) ("C" 0 "C") ("c" 0 "@,") ("catcode" 0 "") ("cdata" 1 "@code{\\1}") ("centerline" 1 "@center \\1") ("cfuncline" 3 "@itemx \\1 \\2(\\3)\n@findex \\2") ("cfunction" 1 "@code{\\1}") ("chapter" 1 (format "@node \\1\n@%s \\1\n" (if appendix "appendix" "chapter"))) ("chapter*" 1 "@node \\1\n@unnumbered \\1\n") ("character" 1 "@samp{\\1}") ("citetitle" 1 "@ref{Top,,,\\1}") ("class" 1 "@code{\\1}") ("cmemberline" 3 "@itemx \\2 \\3\n") ("code" 1 "@code{\\1}") ("command" 1 "@command{\\1}") ("constant" 1 "@code{\\1}") ("copyright" 1 "@copyright{}") ("Cpp" 0 "C++") ("csimplemacro" 1 "@code{\\1}") ("ctype" 1 "@code{\\1}") ("dataline" 1 (progn (setq findex t) "@item \\1\n@findex \\1\n")) ("date" 1 "\\1") ("declaremodule" 2 (progn (setq cindex t) "@label{\\2}@cindex{\\2}")) ("deprecated" 2 "@emph{This is deprecated in Python \\1. \\2}") ("dfn" 1 "@dfn{\\1}") ("documentclass" 1 py2texi-magic) ("e" 0 "@backslash{}") ("else" 0 (concat "@end ifinfo\n@" (setq last-if "iftex"))) ("env" 1 "@code{\\1}") ("EOF" 0 "@code{EOF}") ("email" 1 "@email{\\1}") ("emph" 1 "@emph{\\1}") ("envvar" 1 "@env{\\1}") ("exception" 1 "@code{\\1}") ("exindex" 1 (progn (setq obindex t) "@obindex{\\1}")) ("fi" 0 (concat "@end " last-if)) ("file" 1 "@file{\\1}") ("filenq" 1 "@file{\\1}") ("filevar" 1 "@file{@var{\\1}}") ("footnote" 1 "@footnote{\\1}") ("frac" 0 "") ("funcline" 2 (progn (setq findex t) "@item \\1 \\2\n@findex \\1")) ("funclineni" 2 "@item \\1 \\2") ("function" 1 "@code{\\1}") ("grammartoken" 1 "@code{\\1}") ("hline" 0 "") ("ifhtml" 0 (concat "@" (setq last-if "ifinfo"))) ("iftexi" 0 (concat "@" (setq last-if "ifinfo"))) ("index" 1 (progn (setq cindex t) "@cindex{\\1}")) ("indexii" 2 (progn (setq cindex t) "@cindex{\\1 \\2}")) ("indexiii" 3 (progn (setq cindex t) "@cindex{\\1 \\2 \\3}")) ("indexiv" 3 (progn (setq cindex t) "@cindex{\\1 \\2 \\3 \\4}")) ("infinity" 0 "@emph{infinity}") ("it" 0 "@destroy") ("kbd" 1 "@key{\\1}") ("keyword" 1 "@code{\\1}") ("kwindex" 1 (progn (setq cindex t) "@cindex{\\1}")) ("label" 1 "@label{\\1}") ("Large" 0 "") ("LaTeX" 0 "La@TeX{}") ("large" 0 "") ("ldots" 0 "@dots{}") ("leftline" 1 "\\1") ("lineii" 2 "@item \\1 @tab \\2") ("lineiii" 3 "@item \\1 @tab \\2 @tab \\3") ("lineiv" 4 "@item \\1 @tab \\2 @tab \\3 @tab \\4") ("linev" 5 "@item \\1 @tab \\2 @tab \\3 @tab \\4 @tab \\5") ("localmoduletable" 0 "") ("longprogramopt" 1 "@option{--\\1}") ("macro" 1 "@code{@backslash{}\\1}") ("mailheader" 1 "@code{\\1}") ("makeindex" 0 "") ("makemodindex" 0 "") ("maketitle" 0 (concat "@top " title "\n")) ("makevar" 1 "@code{\\1}") ("manpage" 2 "@samp{\\1(\\2)}") ("mbox" 1 "@w{\\1}") ("member" 1 "@code{\\1}") ("memberline" 1 "@item \\1\n@findex \\1\n") ("menuselection" 1 "@samp{\\1}") ("method" 1 "@code{\\1}") ("methodline" 2 (progn (setq moindex t) "@item \\1(\\2)\n@moindex \\1\n")) ("methodlineni" 2 "@item \\1(\\2)\n") ("mimetype" 1 "@samp{\\1}") ("module" 1 "@samp{\\1}") ("moduleauthor" 2 "") ("modulesynopsis" 1 "\\1") ("moreargs" 0 "@dots{}") ("n" 0 "@backslash{}n") ("newcommand" 2 "") ("newsgroup" 1 "@samp{\\1}") ("nodename" 1 (save-excursion (save-match-data (re-search-backward "^@node ")) (delete-region (point) (save-excursion (end-of-line) (point))) (insert "@node " (match-string 1 string)) "")) ("noindent" 0 "@noindent ") ("note" 1 "@emph{Note:} \\1") ("NULL" 0 "@code{NULL}") ("obindex" 1 (progn (setq obindex t) "@obindex{\\1}")) ("opindex" 1 (progn (setq cindex t) "@cindex{\\1}")) ("option" 1 "@option{\\1}") ("optional" 1 "[\\1]") ("pep" 1 (progn (setq cindex t) "PEP@ \\1@cindex PEP \\1\n")) ("pi" 0 "pi") ("platform" 1 "") ("plusminus" 0 "+-") ("POSIX" 0 "POSIX") ("production" 2 "@item \\1 \\2") ("productioncont" 1 "@item @w{} \\1") ("program" 1 "@command{\\1}") ("programopt" 1 "@option{\\1}") ("protect" 0 "") ("pytype" 1 "@code{\\1}") ("ref" 1 "@ref{\\1}") ("refbimodindex" 1 (progn (setq moindex t) "@moindex{\\1}")) ("refmodindex" 1 (progn (setq moindex t) "@moindex{\\1}")) ("refmodule" 1 "@samp{\\1}") ("refstmodindex" 1 (progn (setq moindex t) "@moindex{\\1}")) ("regexp" 1 "\"\\1\"") ("release" 1 (progn (setq py2texi-python-version (match-string 1 string)) "")) ("renewcommand" 2 "") ("rfc" 1 (progn (setq cindex t) "RFC@ \\1@cindex RFC \\1\n")) ("rm" 0 "@destroy") ("samp" 1 "@samp{\\1}") ("section" 1 (let ((str (match-string 1 string))) (save-match-data (if (string-match "\\(.*\\)[ \t\n]*---[ \t\n]*\\(.*\\)" str) (format "@node %s\n@section %s\n" (py2texi-backslash-quote (match-string 1 str)) (py2texi-backslash-quote (match-string 2 str))) "@node \\1\n@section \\1\n")))) ("sectionauthor" 2 "") ("seemodule" 2 "@ref{\\1} \\2") ("seepep" 3 "\n@table @strong\n@item PEP\\1 \\2\n\\3\n@end table\n") ("seerfc" 3 "\n@table @strong\n@item RFC\\1 \\2\n\\3\n@end table\n") ("seetext" 1 "\\1") ("seetitle" 1 "@cite{\\1}") ("seeurl" 2 "\n@table @url\n@item \\1\n\\2\n@end table\n") ("setindexsubitem" 1 (progn (setq cindex t) "@cindex \\1")) ("setreleaseinfo" 1 (progn (setq py2texi-releaseinfo ""))) ("setshortversion" 1 (progn (setq py2texi-python-short-version (match-string 1 string)) "")) ("shortversion" 0 py2texi-python-short-version) ("sqrt" 0 "") ("stindex" 1 (progn (setq cindex t) "@cindex{\\1}")) ("stmodindex" 1 (progn (setq moindex t) "@moindex{\\1}")) ("strong" 1 "@strong{\\1}") ("sub" 0 "/") ("subsection" 1 "@node \\1\n@subsection \\1\n") ("subsubsection" 1 "@node \\1\n@subsubsection \\1\n") ("sum" 0 "") ("tableofcontents" 0 "") ("term" 1 "@item \\1") ("TeX" 0 "@TeX{}") ("textasciitilde" 0 "~") ("textasciicircum" 0 "^") ("textbackslash" 0 "@backslash{}") ("textgreater" 0 ">") ("textless" 0 "<") ("textrm" 1 "\\1") ("texttt" 1 "@code{\\1}") ("textunderscore" 0 "_") ("title" 1 (progn (setq title (match-string 1 string)) "@settitle \\1")) ("today" 0 "@today{}") ("token" 1 "@code{\\1}") ("tt" 0 "@destroy") ("ttindex" 1 (progn (setq cindex t) "@cindex{\\1}")) ("u" 0 "@backslash{}u") ("ulink" 2 "\\1") ("UNIX" 0 "UNIX") ("unspecified" 0 "@dots{}") ("url" 1 "@url{\\1}") ("usepackage" 1 "") ("var" 1 "@var{\\1}") ("verbatiminput" 1 "@code{\\1}") ("version" 0 py2texi-python-version) ("versionadded" 1 "@emph{Added in Python version \\1}") ("versionchanged" 1 "@emph{Changed in Python version \\1}") ("vskip" 1 "") ("vspace" 1 "") ("warning" 1 "@emph{\\1}") ("withsubitem" 2 "\\2") ("XXX" 1 "@strong{\\1}")) "Associative list of command substitutions. Each list item is of the form (COMMAND ARGNUM SUBSTITUTION) where: - COMMAND is LaTeX command name - ARGNUM is number of (required) command arguments - SUBSTITUTION substitution for the command. It is evaled and you can reference command arguments through the \\N regexp notation in strings.") (defvar py2texi-magic "@documentclass\n" "\"Magic\" string for auxiliary insertion at the beginning of document.") (defvar py2texi-dirs '("./" "../texinputs/") "Where to search LaTeX input files.") (defvar py2texi-buffer "*py2texi*" "The name of a buffer where Texinfo is generated.") (defconst py2texi-xemacs (string-match "^XEmacs" (emacs-version)) "Running under XEmacs?") (defmacro py2texi-search (regexp &rest body) `(progn (goto-char (point-min)) (while (re-search-forward ,regexp nil t) ,@body))) (defmacro py2texi-search-safe (regexp &rest body) `(py2texi-search ,regexp (unless (py2texi-protected) ,@body))) (defun py2texi-message (message) "Report message and stop if `py2texi-stop-on-problems' is non-nil." (if py2texi-stop-on-problems (error message) (message message))) (defun py2texi-backslash-quote (string) "Double backslahes in STRING." (let ((i 0)) (save-match-data (while (setq i (string-match "\\\\" string i)) (setq string (replace-match "\\\\\\\\" t nil string)) (setq i (+ i 2)))) string)) (defun py2texi (file) "Convert Python LaTeX documentation FILE to Texinfo." (interactive "fFile to convert: ") (switch-to-buffer (get-buffer-create py2texi-buffer)) (erase-buffer) (insert-file file) (let ((case-fold-search nil) (title "") (author "") (author-address "") (appendix nil) (findex nil) (obindex nil) (cindex nil) (moindex nil) last-if) (py2texi-process-verbatims) (py2texi-process-comments) (py2texi-process-includes) (py2texi-process-funnyas) (py2texi-process-environments) (py2texi-process-commands) (py2texi-fix-indentation) (py2texi-fix-nodes) (py2texi-fix-references) (py2texi-fix-indices) (py2texi-process-simple-commands) (py2texi-fix-fonts) (py2texi-fix-braces) (py2texi-fix-backslashes) (py2texi-destroy-empties) (py2texi-fix-newlines) (py2texi-adjust-level)) (let* ((texi-file-name (or py2texi-texi-file-name (py2texi-texi-file-name file))) (info-file-name (or py2texi-info-file-name (py2texi-info-file-name texi-file-name)))) (goto-char (point-min)) (when (looking-at py2texi-magic) (delete-region (point) (progn (beginning-of-line 2) (point))) (insert "\\input texinfo @c -*-texinfo-*-\n") (insert "@setfilename " info-file-name)) (when (re-search-forward "@chapter" nil t) (texinfo-all-menus-update t)) (goto-char (point-min)) (write-file texi-file-name) (message (format "You can apply `makeinfo %s' now." texi-file-name)))) (defun py2texi-texi-file-name (filename) "Generate name of Texinfo file from original file name FILENAME." (concat filename (if (string-match "\\.tex$" filename) "i" ".texi"))) (defun py2texi-info-file-name (filename) "Generate name of info file from original file name FILENAME." (setq filename (expand-file-name filename)) (let ((directory (file-name-directory filename)) (basename (file-name-nondirectory filename))) (concat directory "python-" (substring basename 0 (- (length basename) 4)) "info"))) (defun py2texi-process-verbatims () "Process and protect verbatim environments." (let (delimiter beg end) (py2texi-search-safe "\\\\begin{\\(verbatim\\|displaymath\\)}" (replace-match "@example") (setq beg (copy-marker (point) nil)) (re-search-forward "\\\\end{\\(verbatim\\|displaymath\\)}") (setq end (copy-marker (match-beginning 0) nil)) (replace-match "@end example") (py2texi-texinfo-escape beg end) (put-text-property (- beg (length "@example")) (+ end (length "@end example")) 'py2texi-protected t)) (py2texi-search-safe "\\\\verb\\([^a-z]\\)" (setq delimiter (match-string 1)) (replace-match "@code{") (setq beg (copy-marker (point) nil)) (re-search-forward (regexp-quote delimiter)) (setq end (copy-marker (match-beginning 0) nil)) (replace-match "}") (put-text-property (- beg (length "@code{")) (+ end (length "}")) 'py2texi-protected t) (py2texi-texinfo-escape beg end)))) (defun py2texi-process-comments () "Remove comments." (let (point) (py2texi-search-safe "%" (setq point (point)) (when (save-excursion (re-search-backward "\\(^\\|[^\\]\\(\\\\\\\\\\)*\\)%\\=" nil t)) (delete-region (1- point) (save-excursion (beginning-of-line 2) (point))))))) (defun py2texi-process-includes () "Include LaTeX input files. Do not include .ind files." (let ((path (file-name-directory file)) filename dirs includefile) (py2texi-search-safe "\\\\input{\\([^}]+\\)}" (setq filename (match-string 1)) (unless (save-match-data (string-match "\\.tex$" filename)) (setq filename (concat filename ".tex"))) (setq includefile (save-match-data (string-match "\\.ind\\.tex$" filename))) (setq dirs py2texi-dirs) (while (and (not includefile) dirs) (setq includefile (concat path (car dirs) filename)) (unless (file-exists-p includefile) (setq includefile nil) (setq dirs (cdr dirs)))) (if includefile (save-restriction (narrow-to-region (match-beginning 0) (match-end 0)) (delete-region (point-min) (point-max)) (when (stringp includefile) (insert-file-contents includefile) (goto-char (point-min)) (insert "\n") (py2texi-process-verbatims) (py2texi-process-comments) (py2texi-process-includes))) (replace-match (format "\\\\emph{Included file %s}" filename)) (py2texi-message (format "Input file %s not found" filename)))))) (defun py2texi-process-funnyas () "Convert @s." (py2texi-search-safe "@" (replace-match "@@"))) (defun py2texi-process-environments () "Process LaTeX environments." (let ((stack ()) kind environment parameter arguments n string description) (py2texi-search-safe (concat "\\\\\\(begin\\|end\\|item\\)" "\\({\\([^}]*\\)}\\|[[]\\([^]]*\\)[]]\\|\\)") (setq kind (match-string 1) environment (match-string 3) parameter (match-string 4)) (replace-match "") (cond ((string= kind "begin") (setq description (assoc environment py2texi-environments)) (if description (progn (setq n (cadr description)) (setq description (cddr description)) (setq string (py2texi-tex-arguments n)) (string-match (py2texi-regexp n) string) ; incorrect but sufficient (insert (replace-match (eval (car description)) t nil string)) (setq stack (cons (cadr description) stack))) (py2texi-message (format "Unknown environment: %s" environment)) (setq stack (cons "" stack)))) ((string= kind "end") (insert (eval (car stack))) (setq stack (cdr stack))) ((string= kind "item") (insert "\n@item " (or parameter "") "\n")))) (when stack (py2texi-message (format "Unclosed environment: %s" (car stack)))))) (defun py2texi-process-commands () "Process LaTeX commands." (let (done command command-info string n) (while (not done) (setq done t) (py2texi-search-safe "\\\\\\([a-zA-Z*]+\\)\\(\\[[^]]*\\]\\)?" (setq command (match-string 1)) (setq command-info (assoc command py2texi-commands)) (if command-info (progn (setq done nil) (replace-match "") (setq command-info (cdr command-info)) (setq n (car command-info)) (setq string (py2texi-tex-arguments n)) (string-match (py2texi-regexp n) string) ; incorrect but sufficient (insert (replace-match (eval (cadr command-info)) t nil string))) (py2texi-message (format "Unknown command: %s (not processed)" command))))))) (defun py2texi-argument-pattern (count) (let ((filler "\\(?:[^{}]\\|\\\\{\\|\\\\}\\)*")) (if (<= count 0) filler (concat filler "\\(?:{" (py2texi-argument-pattern (1- count)) "}" filler "\\)*" filler)))) (defconst py2texi-tex-argument (concat "{\\(" (py2texi-argument-pattern 10) ;really at least 10! "\\)}[ \t%@c\n]*") "Regexp describing LaTeX command argument including argument separators.") (defun py2texi-regexp (n) "Make regexp matching N LaTeX command arguments." (if (= n 0) "" (let ((regexp "^[^{]*")) (while (> n 0) (setq regexp (concat regexp py2texi-tex-argument)) (setq n (1- n))) regexp))) (defun py2texi-tex-arguments (n) "Remove N LaTeX command arguments and return them as a string." (let ((point (point)) (i 0) result match) (if (= n 0) (progn (when (re-search-forward "\\=\\({}\\| *\\)" nil t) (replace-match "")) "") (while (> n 0) (unless (re-search-forward "\\(\\=\\|[^\\\\]\\)\\(\\\\\\\\\\)*\\([{}]\\)" nil t) (debug)) (if (string= (match-string 3) "{") (setq i (1+ i)) (setq i (1- i)) (when (<= i 0) (setq n (1- n))))) (setq result (buffer-substring-no-properties point (point))) (while (string-match "\n[ \t]*" result) (setq result (replace-match " " t nil result))) (delete-region point (point)) result))) (defun py2texi-process-simple-commands () "Replace single character LaTeX commands." (let (char) (py2texi-search-safe "\\\\\\([^a-z]\\)" (setq char (match-string 1)) (replace-match (format "%s%s" (if (or (string= char "{") (string= char "}") (string= char " ")) "@" "") (if (string= char "\\") "\\\\" char)))))) (defun py2texi-fix-indentation () "Remove white space at the beginning of lines." (py2texi-search-safe "^[ \t]+" (replace-match ""))) (defun py2texi-fix-nodes () "Remove unwanted characters from nodes and make nodes unique." (let ((nodes (make-hash-table :test 'equal)) id counter string label index) (py2texi-search "^@node +\\(.*\\)$" (setq string (match-string 1)) (if py2texi-xemacs (replace-match "@node " t) (replace-match "" t nil nil 1)) (while (string-match "@label{[^}]*}" string) (setq label (match-string 0 string)) (setq string (replace-match "" t nil string))) (while (string-match "@..?index{[^}]*}" string) (setq index (match-string 0 string)) (setq string (replace-match "" t nil string))) (while (string-match "@[a-zA-Z]+\\|[{}():]\\|``\\|''" string) (setq string (replace-match "" t nil string))) (while (string-match " -- " string) (setq string (replace-match " - " t nil string))) (while (string-match "\\." string) (setq string (replace-match "" t nil string))) (when (string-match " +$" string) (setq string (replace-match "" t nil string))) (when (string-match "^\\(Built-in\\|Standard\\) Module \\|The " string) (setq string (replace-match "" t nil string))) (string-match "^[^,]+" string) (setq id (match-string 0 string)) (setq counter (gethash id nodes)) (if counter (progn (setq counter (1+ counter)) (setq string (replace-match (format "\\& %d" counter) t nil string))) (setq counter 1)) (setf (gethash id nodes) counter) (insert string) (beginning-of-line 3) (when label (insert label "\n")) (when index (insert index "\n"))))) (defun py2texi-fix-references () "Process labels and make references to point to appropriate nodes." (let ((labels ()) node) (py2texi-search-safe "@label{\\([^}]*\\)}" (setq node (save-excursion (save-match-data (and (re-search-backward "@node +\\([^,\n]+\\)" nil t) (match-string 1))))) (when node (setq labels (cons (cons (match-string 1) node) labels))) (replace-match "")) (py2texi-search-safe "@ref{\\([^}]*\\)}" (setq node (assoc (match-string 1) labels)) (replace-match "") (when node (insert (format "@ref{%s}" (cdr node))))))) (defun py2texi-fix-indices () "Remove unwanted characters from @*index commands and create final indices." (py2texi-search-safe "@..?index\\>[^\n]*\\(\\)\n" (replace-match "" t nil nil 1)) (py2texi-search-safe "@..?index\\>[^\n]*\\(\\)" (replace-match "\n" t nil nil 1)) (py2texi-search-safe "@..?index\\({\\)\\([^}]+\\)\\(}+\\)" (replace-match " " t nil nil 1) (replace-match "" t nil nil 3) (let ((string (match-string 2))) (save-match-data (while (string-match "@[a-z]+{" string) (setq string (replace-match "" nil nil string))) (while (string-match "{" string) (setq string (replace-match "" nil nil string)))) (replace-match string t t nil 2))) (py2texi-search-safe "@..?index\\>.*\\([{}]\\|@[a-z]*\\)" (replace-match "" t nil nil 1) (goto-char (match-beginning 0))) (py2texi-search-safe "[^\n]\\(\\)@..?index\\>" (replace-match "\n" t nil nil 1)) (goto-char (point-max)) (re-search-backward "@indices") (replace-match "") (insert (if moindex (concat "@node Module Index\n" "@unnumbered Module Index\n" "@printindex mo\n") "") (if obindex (concat "@node Class-Exception-Object Index\n" "@unnumbered Class, Exception, and Object Index\n" "@printindex ob\n") "") (if findex (concat "@node Function-Method-Variable Index\n" "@unnumbered Function, Method, and Variable Index\n" "@printindex fn\n") "") (if cindex (concat "@node Miscellaneous Index\n" "@unnumbered Miscellaneous Index\n" "@printindex cp\n") ""))) (defun py2texi-fix-backslashes () "Make backslashes from auxiliary commands." (py2texi-search-safe "@backslash{}" (replace-match "\\\\"))) (defun py2texi-fix-fonts () "Remove garbage after unstructured font commands." (let (string) (py2texi-search-safe "@destroy" (replace-match "") (when (eq (preceding-char) ?{) (forward-char -1) (setq string (py2texi-tex-arguments 1)) (insert (substring string 1 (1- (length string)))))))) (defun py2texi-fix-braces () "Escape braces for Texinfo." (let (string) (py2texi-search "{" (unless (or (py2texi-protected) (save-excursion (re-search-backward "@\\([a-zA-Z]*\\|multitable.*\\){\\=" nil t))) (forward-char -1) (setq string (py2texi-tex-arguments 1)) (insert "@" (substring string 0 (1- (length string))) "@}"))))) (defun py2texi-fix-newlines () "Remove extra newlines." (py2texi-search "\n\n\n+" (replace-match "\n\n")) (py2texi-search-safe "@item.*\n\n" (delete-backward-char 1)) (py2texi-search "@end example" (unless (looking-at "\n\n") (insert "\n")))) (defun py2texi-destroy-empties () "Remove all comments. This avoids some makeinfo errors." (py2texi-search "@c\\>" (unless (eq (py2texi-protected) t) (delete-region (- (point) 2) (save-excursion (end-of-line) (point))) (cond ((looking-at "\n\n") (delete-char 1)) ((save-excursion (re-search-backward "^[ \t]*\\=" nil t)) (delete-region (save-excursion (beginning-of-line) (point)) (1+ (point)))))))) (defun py2texi-adjust-level () "Increase heading level to @chapter, if needed. This is only needed for distutils, so it has a very simple form only." (goto-char (point-min)) (unless (re-search-forward "@chapter\\>" nil t) (py2texi-search-safe "@section\\>" (replace-match "@chapter" t)) (py2texi-search-safe "@\\(sub\\)\\(sub\\)?section\\>" (replace-match "" nil nil nil 1)))) (defun py2texi-texinfo-escape (beg end) "Escape Texinfo special characters in region." (save-excursion (goto-char beg) (while (re-search-forward "[@{}]" end t) (replace-match "@\\&")))) (defun py2texi-protected () "Return protection status of the point before current point." (get-text-property (1- (point)) 'py2texi-protected)) ;;; Announce (provide 'py2texi) ;;; py2texi.el ends here From gherman at darwin.in-berlin.de Sun Jul 20 14:03:50 2003 From: gherman at darwin.in-berlin.de (Dinu Gherman) Date: Sun Jul 20 07:02:00 2003 Subject: [Doc-SIG] Re: reST editor experiments... In-Reply-To: <3F14A349.10807@python.org> Message-ID: David Goodger: > I apologize for not replying sooner. I just realized that I haven't > been receiving Doc-SIG mail since June 26 when I reconfigured my email > forwarding address. No problem, I almost just returned from a vacation myself... > Dinu Gherman wrote: > > I'm experimenting with a prototype reST editor on OS X, > > Looks cool! I'm wondering though, isn't it a bit CPU-intensive > to re-process the entire document with every keystroke? ;-) Sure, which is why it now uses timers to trigger the rendering every few seconds and only if the text really changed. Of course, ideally this would be done in a separate task... > Is the software itself available? I use OS X and I'd like to give it > a try. It's really only a proof of concept, but I've made a little "distri- bution" which is available here: http://python.net/~gherman/tmp/ReSTedit1.jpg http://python.net/~gherman/tmp/ReSTedit.tar.gz BTW, you might also want to check the following which does similar things, but in a different context: http://python.net/~gherman/tmp/RegexPlor1.jpg http://python.net/~gherman/tmp/RegexPlor.tar.gz > Are you aware of Gunnar Schwant's DocFactory? It uses wxPython. > No, I wasn't - thanks, looks very nice! I'm not sure how well wxPython already works on OS X... I definitely like cross-platform programming, but there are a few things that Cocoa gives me that I just don't want to give away, like the Interface Builder and widgets for displaying PDF, which might be an option for ReSTedit, one day... > [other suggestions skipped] Thanks, I'll be happy to look into this over the next weeks... BTW, if DocFactory works really well on multiple platforms it would be very interesting to build something like Hydra, a student project for a collaborative distributed (even wirelessly) editor which re- cently got an Apple design award: http://hydra.globalse.org Regards, Dinu -- Dinu C. Gherman ...................................................................... "It is by the goodness of God that in our country we have these three unspeakably precious things: freedom of speech, freedom of conscience, and the prudence to practice neither." (Mark Twain) From edloper at gradient.cis.upenn.edu Tue Jul 22 02:43:11 2003 From: edloper at gradient.cis.upenn.edu (Edward Loper) Date: Tue Jul 22 01:43:22 2003 Subject: [Doc-SIG] epydoc 2.0 released Message-ID: <3F1CF91F.9020109@gradient.cis.upenn.edu> I just released version 2.0 of epydoc. Of special note to some of the members in this list is the fact that it supports ReStructuredText. :) ---------------------------------------------------------------------- Epydoc is a tool for generating API documentation for Python modules, based on their docstrings. For some examples of the documentation generated by epydoc, see: - The API documentation for epydoc. (HTML) - The API documentation for epydoc. (PDF) - The API documentation for the Python 2.2 standard library. - The API documentation for NLTK, the natural langauge toolkit. - The API documentation for Docutils Epydoc currently understands four markup languages: - Epytext, a lightweight markup language with support for basic formatting constructs. - ReStructuredText, an "easy-to-read, what-you-see-is-what-you-get plaintext markup syntax." - Javadoc, the standard markup language for documenting java source. - Plaintext. New features added since 1.1 include: Improvements to Docstring processing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Support for ReStructuredText docstrings. - Support for Javadoc docstrings. - Many new documentation fields for docstrings. - More robust crossreference link resolving. Improvements to Output Generation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - New output formats: LaTeX, DVI, PostScript, and PDF. - Three new formats for displaying inherited methods and variables: listed, grouped, and included. Improvements to Inspection ~~~~~~~~~~~~~~~~~~~~~~~~~~ - Support for new Python 2.2+ objects, including class methods, static methods, properties, and metaclasses. - Automatic detection of imported variables. - Documentation inheritance for inherited methods and variables. Improvements to Efficiency ~~~~~~~~~~~~~~~~~~~~~~~~~~ - Epydoc 2.0 runs 50%-200% faster than epydoc 1.1. (e.g., it runs 2.6 times as fast when documenting the Python standard library). A complete list of new features and the change log are available at: -Edward From gherman at darwin.in-berlin.de Thu Jul 24 11:19:57 2003 From: gherman at darwin.in-berlin.de (Dinu Gherman) Date: Thu Jul 24 04:17:50 2003 Subject: [Doc-SIG] Emphasized URLs, how? Message-ID: <9C65C988-BDAF-11D7-B104-00039345C610@darwin.in-berlin.de> Hi, I'm failing to get emphasized, clickable URL as I would expect them. Is there any trick to do it? Here's what I tried, all in vain: As expected: normal *emphasis* http://normal.com `Normal.com `__ Not as expected (emphasized clickable URL): *http://emphasis.com* *`Emphasis.com `__* `*Emphasis.com* `__ Thanks, Dinu -- Dinu C. Gherman ...................................................................... "Je m'appelle ?rik Satie comme tout le monde." (?rik Satie) From fdrake at acm.org Thu Jul 24 08:46:43 2003 From: fdrake at acm.org (Fred L. Drake, Jr.) Date: Thu Jul 24 07:48:45 2003 Subject: [Doc-SIG] Doc/ tree on trunk closed Message-ID: <16159.50979.38979.687400@grendel.zope.com> I'm closing the Doc/ tree on the trunk until Python 2.4 final has been released. Not even typo corrections should go in at this point. Thanks! -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From cben at techunix.technion.ac.il Thu Jul 24 15:53:54 2003 From: cben at techunix.technion.ac.il (Beni Cherniavsky) Date: Thu Jul 24 07:53:59 2003 Subject: [Doc-SIG] Doc/ tree on trunk closed In-Reply-To: <16159.50979.38979.687400@grendel.zope.com> References: <16159.50979.38979.687400@grendel.zope.com> Message-ID: Fred L. Drake, Jr. wrote on 2003-07-24: > > I'm closing the Doc/ tree on the trunk until Python 2.4 final has been > released. Not even typo corrections should go in at this point. > s/2.4/2.3/, right? It's a meta-typo ... -- Beni Cherniavsky From fdrake at acm.org Thu Jul 24 09:00:59 2003 From: fdrake at acm.org (Fred L. Drake, Jr.) Date: Thu Jul 24 08:03:09 2003 Subject: [Doc-SIG] Doc/ tree on trunk closed In-Reply-To: References: <16159.50979.38979.687400@grendel.zope.com> Message-ID: <16159.51835.108668.704443@grendel.zope.com> Beni Cherniavsky writes: > s/2.4/2.3/, right? It's a meta-typo ... Actually, really closing it until 2.4 is out would certainly encourage stability from one version to the next... and make it easier to complete 2.4! But yeah, that was a typo. ;-) -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From pinard at iro.umontreal.ca Thu Jul 24 14:23:01 2003 From: pinard at iro.umontreal.ca (Francois Pinard) Date: Thu Jul 24 09:23:03 2003 Subject: [Doc-SIG] Re: Doc/ tree on trunk closed In-Reply-To: <16159.50979.38979.687400@grendel.zope.com> References: <16159.50979.38979.687400@grendel.zope.com> Message-ID: [Fred L. Drake, Jr.] > I'm closing the Doc/ tree on the trunk until Python 2.4 final has been > released. Not even typo corrections should go in at this point. Beware, beware! `2.4' might be a typo for `2.3'. It would be pretty sad for all of us if you were standing by _that_ typo! :-) -- Fran?ois Pinard http://www.iro.umontreal.ca/~pinard From goodger at python.org Mon Jul 28 12:01:57 2003 From: goodger at python.org (David Goodger) Date: Mon Jul 28 11:02:30 2003 Subject: [Doc-SIG] epydoc 2.0 released In-Reply-To: <3F1CF91F.9020109@gradient.cis.upenn.edu> References: <3F1CF91F.9020109@gradient.cis.upenn.edu> Message-ID: <3F253AE5.2050805@python.org> Edward Loper wrote: > I just released version 2.0 of epydoc. Of special note to some > of the members in this list is the fact that it supports > ReStructuredText. :) Very cool! I've just updated http://docutils.sf.net/FAQ.html, section 4.1, to reflect this (with a bit of explanation of the philosophical differences). -- David Goodger From goodger at python.org Mon Jul 28 12:12:23 2003 From: goodger at python.org (David Goodger) Date: Mon Jul 28 11:12:56 2003 Subject: [Doc-SIG] Emphasized URLs, how? In-Reply-To: <9C65C988-BDAF-11D7-B104-00039345C610@darwin.in-berlin.de> References: <9C65C988-BDAF-11D7-B104-00039345C610@darwin.in-berlin.de> Message-ID: <3F253D57.30009@python.org> Dinu Gherman wrote: > I'm failing to get emphasized, clickable URL as I would expect them. Nested inline markup is not currently supported. We've discussed it recently, and it's on the to-do/maybe list. It simply awaits resolution of a few issues and implementation. Collected notes: > Is there any trick to do it? Yes, but it's very roundabout: Here's a |target|_ in a paragraph. .. |target| replace:: *target* .. _target: http://example.com Replace "target" with a URL if you like. If you want all standalone URLs in your document to be emphasized, just change the stylesheet. -- David Goodger http://starship.python.net/~goodger For hire: http://starship.python.net/~goodger/cv Docutils: http://docutils.sourceforge.net/ (includes reStructuredText: http://docutils.sf.net/rst.html) From fdrake at acm.org Wed Jul 30 16:50:24 2003 From: fdrake at acm.org (Fred L. Drake, Jr.) Date: Wed Jul 30 15:53:48 2003 Subject: [Doc-SIG] State of XHTML in browsers Message-ID: <16168.8576.566176.894018@grendel.zope.com> I'd like to get a rough idea of how painful it would be for users if python.org and the Python documentation were converted to strictly conforming XHTML 1.1. I presume we'd still serve web pages as text/html, but the content would conform to XHTML 1.1 with all the HTML compatibility hacks. In particular: Are there any actively used browsers that don't support proper XHTML? I'm think especially about linking behavior: Are all current browsers able to use the "id" attributes on arbitrary elements, or is the construct still needed? I'd really appreciate feedback on this. Thanks! -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From goodger at python.org Wed Jul 30 17:10:35 2003 From: goodger at python.org (David Goodger) Date: Wed Jul 30 16:11:09 2003 Subject: [Doc-SIG] State of XHTML in browsers In-Reply-To: <16168.8576.566176.894018@grendel.zope.com> References: <16168.8576.566176.894018@grendel.zope.com> Message-ID: <3F28263B.8030205@python.org> Fred L. Drake, Jr. wrote: > In particular: Are there any actively used browsers that don't > support proper XHTML? I'm think especially about linking behavior: > Are all current browsers able to use the "id" attributes on arbitrary > elements, or is the construct still needed? Netscape 4 doesn't support "id" attributes. It's not current, but seems to still be actively used. Docutils does for Netscape compatibility. -- David Goodger From fdrake at acm.org Wed Jul 30 17:33:40 2003 From: fdrake at acm.org (Fred L. Drake, Jr.) Date: Wed Jul 30 16:36:58 2003 Subject: [Doc-SIG] State of XHTML in browsers In-Reply-To: <3F28263B.8030205@python.org> References: <16168.8576.566176.894018@grendel.zope.com> <3F28263B.8030205@python.org> Message-ID: <16168.11172.608651.41093@grendel.zope.com> David Goodger writes: > Netscape 4 doesn't support "id" attributes. It's not current, but > seems to still be actively used. Docutils does > for Netscape compatibility. Argh. We did some work for a client who required NS4 recently, so yeah, it's still way too available. So, who's going to start spreading the news the NS4 is infected by virus as shipped? ;-) -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From aahz at pythoncraft.com Wed Jul 30 18:28:47 2003 From: aahz at pythoncraft.com (Aahz) Date: Wed Jul 30 17:28:51 2003 Subject: [Doc-SIG] State of XHTML in browsers In-Reply-To: <16168.8576.566176.894018@grendel.zope.com> References: <16168.8576.566176.894018@grendel.zope.com> Message-ID: <20030730212847.GB7995@panix.com> On Wed, Jul 30, 2003, Fred L. Drake, Jr. wrote: > > In particular: Are there any actively used browsers that don't > support proper XHTML? I'm think especially about linking behavior: > Are all current browsers able to use the "id" attributes on arbitrary > elements, or is the construct still needed? No idea whether Lynx supports the "id" attribute; can you point me at a test page? -- Aahz (aahz@pythoncraft.com) <*> http://www.pythoncraft.com/ This is Python. We don't care much about theory, except where it intersects with useful practice. --Aahz From fdrake at acm.org Wed Jul 30 18:34:11 2003 From: fdrake at acm.org (Fred L. Drake, Jr.) Date: Wed Jul 30 17:37:31 2003 Subject: [Doc-SIG] State of XHTML in browsers In-Reply-To: <20030730212847.GB7995@panix.com> References: <16168.8576.566176.894018@grendel.zope.com> <20030730212847.GB7995@panix.com> Message-ID: <16168.14803.362499.630837@grendel.zope.com> Aahz writes: > No idea whether Lynx supports the "id" attribute; can you point me at a > test page? I'll put one up tonight. -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From fdrake at acm.org Thu Jul 31 02:43:40 2003 From: fdrake at acm.org (Fred L. Drake, Jr.) Date: Thu Jul 31 01:45:47 2003 Subject: [Doc-SIG] State of XHTML in browsers In-Reply-To: <20030730212847.GB7995@panix.com> References: <16168.8576.566176.894018@grendel.zope.com> <20030730212847.GB7995@panix.com> Message-ID: <16168.44172.580689.156859@grendel.zope.com> Aahz writes: > No idea whether Lynx supports the "id" attribute; can you point me at a > test page? There's a test page at: http://www.python.org/dev/doc/idtest.html Please send results to docs@python.org; I'll update the page with results as they come in. -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From fdrake at acm.org Thu Jul 31 08:25:00 2003 From: fdrake at acm.org (Fred L. Drake, Jr.) Date: Thu Jul 31 07:27:08 2003 Subject: [Doc-SIG] State of XHTML in browsers In-Reply-To: <16168.44172.580689.156859@grendel.zope.com> References: <16168.8576.566176.894018@grendel.zope.com> <20030730212847.GB7995@panix.com> <16168.44172.580689.156859@grendel.zope.com> Message-ID: <16168.64652.367506.850399@grendel.zope.com> I wrote: > There's a test page at: > > http://www.python.org/dev/doc/idtest.html > > Please send results to docs@python.org; I'll update the page with > results as they come in. A lot of results have already come in, and I've updated the test page with those. I'll be able to test with at least one Mac OS X browser once I get to the office, but please don't hesitate to send more results in if you don't see your favorite browser listed! Thanks for the response everyone! -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation