Issue 6670: Printing the 'The Python Tutorial' (original) (raw)

Issue6670

Created on 2009-08-08 19:50 by brimac, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
unnamed brimac,2009-10-07 13:11
unnamed brimac,2009-10-07 19:09
unnamed brimac,2009-10-23 08:24
Messages (9)
msg91422 - (view) Author: (brimac) Date: 2009-08-08 19:50
I am having a problem when printing 'The Python Tutorial' at http://docs.python.org/tutorial/ I am using XP and Firefox and an HP Laserjet. The page displays OK but the printout has a 68 mm margin on the left. The margin on the right is 18 mm but the text is cut off, sometimes mid-letter. The other 14 pages in the tutorial have the same problem. I've tried changing from Portrait to Landscape. The text gets wider, the margins are the same size, and the text is still cut off. I have not noticed this with any other documents, on this website or elsewhere. I'm sure if you print/preview you will see the problem. My guess is that there is a fault with the printout file at python.org
msg91442 - (view) Author: Ezio Melotti (ezio.melotti) * (Python committer) Date: 2009-08-10 12:30
I can reproduce the issue using the "Print preview" on Firefox and on IE, on the tutorial and on other pages as well. The Doc has a couple of print rules at the end of http://docs.python.org/_static/basic.css and they look correct (and they are also W3C valid). While I was trying to debug the problem using the Web Developer plug-in of Firefox and the "Edit CSS" option the problem disappeared without changing anything. This is quite weird and lead me to think that there could be a priority problem (even if I can't see any other rule that overrides the print rules). Possible solutions could be: 1) add a couple of !important in the print rules; 2) move the print rules somewhere else; 3) create a distinct print CSS where to put all the print rules.
msg93653 - (view) Author: Ezio Melotti (ezio.melotti) * (Python committer) Date: 2009-10-06 15:20
To fix this problem is enough to add an !important to the margin: 0; rule in the @media print {} at the end of basic.css (line 408). I'll try to explain why the !important is necessary. In default.css @import url("basic.css"); (correctly) appears at the beginning, and imports the rules from basic.css, including the @media print {}. A few lines later, in default.css, there's the rule div.bodywrapper { margin: 0 0 0 230px; }, and with no @media specified it defaults on 'all'. In default.css we then end up with something equivalent to: /* This is defined in basic.css and imported at the beginning of default.css */ @media print { /* some rules omitted for clarity */ div.bodywrapper { margin: 0; } } /* This is defined later in default.css */ @media all { /* This is implicit */ div.bodywrapper { margin: 0 0 0 230px; } } When the file is printed both the rules are applied, because 'all' also includes 'print'. Since both the media have the same priority (i.e. the specific @media print does NOT have higher priority than the implicit @media all) and both the rules have the same priority too, the latter wins. The !important is then needed to raise the priority of the first rule. Note that adding the !important is not a really good solution IMHO: the problem could appear again if other rules with the same priority of the ones in @media print {} are specified elsewhere. A good solution would be to move the print rules after the normal ones, so in case the print media is used these rules will have higher priority. The @import can only appear at the beginning of a file so the two possible solutions are: 1) put the rules with media all in, for example, all.css and the ones with media print in print.css and then, in default.css, write only: @import url('all.css'); @import url('print.css') print; 2) like 1) but importing the print.css separately using in the html pages: A third solution might be to specify the media of the normal rules to 'screen', but some rules are probably common to both the media. More information here: http://www.w3.org/TR/CSS2/cascade.html
msg93665 - (view) Author: Jesse Noller (jnoller) * (Python committer) Date: 2009-10-06 21:53
I posted to the wrong bug, apologies
msg93696 - (view) Author: (brimac) Date: 2009-10-07 13:11
Hi Ezio Many thanks for all your effort with this problem. Thanks also for the full explanation and link. I'm not sure what happens now. Will somebody fix it? I think it's important for Python's image because it might be the first page a new user tries to print. brimac 2009/10/6 Ezio Melotti <report@bugs.python.org> > > Ezio Melotti <ezio.melotti@gmail.com> added the comment: > > To fix this problem is enough to add an !important to the margin: 0; > rule in the @media print {} at the end of basic.css (line 408). > > I'll try to explain why the !important is necessary. > In default.css @import url("basic.css"); (correctly) appears at the > beginning, and imports the rules from basic.css, including the @media > print {}. A few lines later, in default.css, there's the rule > div.bodywrapper { margin: 0 0 0 230px; }, and with no @media specified > it defaults on 'all'. > > In default.css we then end up with something equivalent to: > > /* This is defined in basic.css and imported > at the beginning of default.css */ > @media print { > /* some rules omitted for clarity */ > div.bodywrapper { margin: 0; } > } > > /* This is defined later in default.css */ > @media all { /* This is implicit */ > div.bodywrapper { margin: 0 0 0 230px; } > } > > When the file is printed both the rules are applied, because 'all' also > includes 'print'. > Since both the media have the same priority (i.e. the specific @media > print does NOT have higher priority than the implicit @media all) and > both the rules have the same priority too, the latter wins. > The !important is then needed to raise the priority of the first rule. > > Note that adding the !important is not a really good solution IMHO: the > problem could appear again if other rules with the same priority of the > ones in @media print {} are specified elsewhere. > A good solution would be to move the print rules after the normal ones, > so in case the print media is used these rules will have higher priority. > The @import can only appear at the beginning of a file so the two > possible solutions are: > > 1) put the rules with media all in, for example, all.css and the ones > with media print in print.css and then, in default.css, write only: > @import url('all.css'); > @import url('print.css') print; > > 2) like 1) but importing the print.css separately using in the > html pages: > > > > A third solution might be to specify the media of the normal rules to > 'screen', but some rules are probably common to both the media. > > More information here: http://www.w3.org/TR/CSS2/cascade.html > > ---------- > > _______________________________________ > Python tracker <report@bugs.python.org> > <http://bugs.python.org/issue6670> > _______________________________________ >
msg93698 - (view) Author: Ezio Melotti (ezio.melotti) * (Python committer) Date: 2009-10-07 14:01
> I'm not sure what happens now. Will somebody fix it? Now that the problem and the solution are known, Georg will probably fix it at some point. The "!important" could be used as a temporary workaround (e.g. for 2.6.4 and for the online doc), the css can be reorganized later.
msg93714 - (view) Author: (brimac) Date: 2009-10-07 19:09
Hi Ezio Thanks again. Brimac 2009/10/7 Ezio Melotti <report@bugs.python.org> > > Ezio Melotti <ezio.melotti@gmail.com> added the comment: > > > I'm not sure what happens now. Will somebody fix it? > > Now that the problem and the solution are known, Georg will probably fix > it at some point. The "!important" could be used as a temporary > workaround (e.g. for 2.6.4 and for the online doc), the css can be > reorganized later. > > ---------- > > _______________________________________ > Python tracker <report@bugs.python.org> > <http://bugs.python.org/issue6670> > _______________________________________ >
msg94363 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2009-10-22 16:21
OK, fixed in Sphinx, and in the Python stylesheet in r75617.
msg94378 - (view) Author: (brimac) Date: 2009-10-23 08:24
Georg, Ezio Many Thanks brimac 2009/10/22 Georg Brandl <report@bugs.python.org> > > Georg Brandl <georg@python.org> added the comment: > > OK, fixed in Sphinx, and in the Python stylesheet in r75617. > > ---------- > resolution: -> fixed > status: open -> closed > > _______________________________________ > Python tracker <report@bugs.python.org> > <http://bugs.python.org/issue6670> > _______________________________________ >
History
Date User Action Args
2022-04-11 14:56:51 admin set github: 50919
2009-10-23 08:24:47 brimac set files: + unnamedmessages: +
2009-10-22 16:21:28 georg.brandl set status: open -> closedresolution: fixedmessages: +
2009-10-07 19:09:47 brimac set files: + unnamedmessages: +
2009-10-07 14:01:36 ezio.melotti set messages: +
2009-10-07 13:11:43 brimac set files: + unnamedmessages: +
2009-10-06 21:53:11 jnoller set nosy:georg.brandl, jnoller, ezio.melotti, brimacmessages: +
2009-10-06 21:52:48 jnoller set messages: -
2009-10-06 21:52:35 jnoller set nosy: + jnollermessages: +
2009-10-06 15:20:14 ezio.melotti set messages: +
2009-08-10 12:30:26 ezio.melotti set messages: +
2009-08-10 11:26:52 ezio.melotti set priority: lownosy: + ezio.melotti
2009-08-08 19:50:04 brimac create