Changes

Jump to navigation Jump to search
4,700 bytes added ,  08:28, 2 July 2022
m
Text replacement - "pragma-ade.com" to "pragma-ade.nl"
< [[Visuals]] | [[Layers]] | [[Columns]] | [[Visual Debugging]] >__TOC__
== Location This page focuses on '''Basics of Areas ==page design and layout'''. It will allow you to continue on [[#Further reading|further topics]] like [[Presentations|Presentations layout]], [[Visual_Debugging|Visual debugging]], [[Floating Objects]], [[Columns]], [[Layers]], [[Grid typesetting]], [[PDF Boxes]]. But first, one needs to understand the basics of page layout by ConTeXt.
You can use these design = Typesetting areas in your page:=
<table> <tr style="background:#ccccff;"> <td style="background:#ffffff;"></td> <td style="text-align:center;"><tt>The 25 typesetting areas of a ConTeXt page are divided into 5 columns and 5 rows. From left to right, one encounters {{code|leftedge</tt> </td> <td style="text-align:center;width:15%;"><tt>}}, {{code|leftmargin</tt> </td> <td style="}}, {{code|text-align:center;width:50%;"><tt>width</tt> </td> <td style="text-align:center;width:15%;"><tt>}}, {{code|rightmargin</tt> </td> <td style="text-align:center;">}}, and {{code|rightedge </td> </tr> <tr style="background}}. From top to bottom, the areas are called:#cccccc;"> <td style="background:#ccccff;"><tt>{{code|top</tt></td> <td style="text-align:center;">. </td> <td style="text-align:center;">. </td> <td style="text-align:center;">&uarr; topspace &darr;</td> <td style="text-align:center;">. </td> <td style="text-align:center;">. </td> </tr> <tr style="background:#cccccc;"> <td style="background:#ccccff;"><tt>}}, {{code|header</tt></td> <td style="}}, {{code|text-align:center;">}}, {{code|footer}}, {{code|bottom}}. </td> <td style="text-align:center;">E. </td> <td style="text-align:center;background:#DDDDDD;">HEADER<br />&uarr; headerheight &darr;</td> <td style="text-align:center;">g. </td> <td style="{{code|leftmargin}} is the margin area to the left of the main text-align:center;">. </td> </tr> <tr style="background:#cccccc;"> <td style="background:#ccccff;"><tt>textheight</tt></td> <td style="text-align:center;">&larr;leftedgewidth&rarr;</td> <td style="text-align:center;background:#DDDDDD;">MARGINALS<br />&larr;leftmarginwidth&rarr;</td> <td style="text-align:centerarea;{{code|{leftmargin,bottom}|}} is below it, at the same height:20em;background:#EEEEEE;">TEXT<br />&larr;textwidth&rarr;<br />&times;<br />&uarr; textheight &darr;</td> <td style="text-align:center;background:#DDDDDD;">MARGINALS<br />&larr;rightmarginwidth&rarr;</td> <td style="text-align:center;">&larr;rightedgewidth&rarr;</td> </tr> <tr style="background:#cccccc;"> <td style="background:#ccccff;"><tt>footer</tt></td> <td style="text-align:center;">. </td> <td style="text-align:center;">. </td> <td style="text-align:center;background:#DDDDDD;">FOOTER<br />&uarr; footerheight &darr;</td> <td style="text-align:center;">. </td> <td style="text-align:center;">. </td> </tr> <tr style="background:#cccccc;"> <td style="background:#ccccff;"><tt>as the {{code|bottom</tt></td> <td style="text-align:center;">}} area. </td> <td style="text-align:center;">. </td> <td style="text-align:center;">&uarr; bottomspace &darr;</td> <td style="text-align:center;">. </td> <td style="text-align:center;">In between the two lies the area {{code|{leftmargin,footer}|}}. </td> </tr></table>
The graphic below illustrates the areas and dimensions. The row and column names are written
along the edges of the page. The arrows correspond to layout dimensions; the
more important a dimension is (i.e. the more of the layout is pushed around
when you change it), the thicker its arrow and the larger its name.
The names in the column and row headers are the keywords for <cmd>setuplayout</cmd>, the words inside of the table are given to clarify ConTeXT terminology[[Image:layout. There are also keywords suffixed by "distance" to set the distancebetween each svg||||Diagram of the areas, e.g. <tt>leftedgedistance</tt>, <tt>leftmargindistance</tt> (from the named area to the inner). \setuplayout[] dimensions]]
<tt>height</tt> is normally used instead of <tt>textheight</tt>, it is = Defining the sum of <tt>footer + footerdistance + textheight + headerdistance + header</tt>layout =
The size of Positioning the margins does not affect areas is by setting the size following dimensions using {{cmd|setuplayout|2=[backspace=5cm,...]}}. The dimensions are mentioned in order of the text areahow ‘primitive’ they are: e.g. Control altering the size of the text area with backspace, {{code|topspace}} pushes around all other vertical dimensions, height but altering the {{code|header}} affects only the {{code|headerdistance}} and widththe {{code|textheight}}.
When you define a page layout, it's always a right page that you're defining; if you use a double page layout, 'right' and 'left' values are mirrored on a left page. Doublesided typesetting is activated with {{cmd|setuppagenumbering|2=[alternative= Table of Parameters ==doublesided]}}.
<table><tr style="background:#cccccc;vertical-align=top;"><th>Parameter</th><th>Variable</th><th>Remarks</th></tr><tr> <td>paperheight</td> <td><cmd>paperheight</cmd></td> <td>Set the {{code|backspace}} and {{code|width}}, and the {{code|topspace}} and {{code|height }}. The {{code|width}} is the width of paper page</td></tr><tr> <td>paperwidth</td> <td><cmd>paperwidth</cmd></td> <td>width the main typesetting area; the {{code|backspace}} is its distance from the left edge of paper the page</td></tr><tr> <td>printpaperheight</td> <td><cmd>printpaperheight</cmd></td> <td>differs . The {{code|height}} is the distance ''from paperheight when using [[Imposition]] (arranging)</td></tr><tr> <td>printpaperwidth</td> <td><cmd>printpaperwidth</cmd></td> <td>differs from paperwidth when using [[Imposition]] (arranging)</td></tr><tr> <td>the top of the header to the bottom of the footer''; the {{code|topspace</td> <td><cmd>topspace</cmd></td> <td>above header: }} is the distance from the top rim edge of paper to the page to the top rim of the header</td>.</tr><tr> <td>backspace</td> <td><cmd>backspace</cmd></td> <td># Set the {{code|header}} and {{code|headerdistance}}, and the {{code|footer}} and {{code|footerdistance}}. The {{code|header}} is the vertical size of the header area; the {{code|headerdistance}} is the distance from left rim of paper the header area to left rim of main the text area</td>. The {{code|footer}} and {{code|footerdistance}} work likewise.</tr><tr> <td>height</td> <td><cmd>makeupheight</cmd></td> <td>sum of heights of text area, # Once the header (distance) and footer (plus distancesdistance)</td></tr><tr> <td>width</td> <td><cmd>makeupwidth</cmd></td> <td>width are subtracted from the {{code|height}}, what remains is the {{code|textheight}}: the height of the main text typesetting area. <cmd>makeupwidth</cmd> is normally same as <cmd>textwidth</cmd>, but Although it can would be differentvery useful, for example in columns</td>you cannot set this dimension directly.</tr><tr> <td># If you want to typeset anything above the header, define {{code|topdistance}} (the distance from the top</td> <td><cmd>topheight</cmd></td> <td>height of the top area</td></tr><tr> <td>topdistance</td> <td><cmd>topdistance</cmd></td> <td>between top and header</td></tr><tr> <td>header</td> <td><cmd>headerheight</cmd></td> <td>height to the bottom of header the topmost typesetting area</td></tr><tr> <td>headerdistance</td> <td><cmd>headerdistance</cmd></td> <td>between header ) and text</td></tr><tr> <td>textheight</td> <td><cmd>textheight</cmd></td> <td>{{code|top}} (the height of text the topmost typesetting area</td></tr><tr> <td>footerdistance</td> <td><cmd>footerdistance</cmd></td> <td>between text and ). For typesetting below the footer</td></tr><tr> <td>footer</td> <td><cmd>footerheight</cmd></td> <td>height of footer area</td></tr><tr> <td>, define {{code|bottomdistance</td> <td><cmd>bottomdistance</cmd></td> <td>between footer }} and {{code|bottom</td>}}.</tr><tr> <td>bottom</td> <td><cmd>bottomheight</cmd></td> <td>space below footer (but isn't calculated automatically)</td></tr><tr> <td>bottomspace</td> <td><cmd>bottomspace</cmd></td> <td>space # As for the horizontal dimensions apart from bottom footer to bottom rim of paper</td></tr><tr> <td>cutspace</td> <td><cmd>cutspace</cmd></td> <td>from right rim of paper to right rim the {{code|width}}: starting at the left edge of the main text area</td></tr><tr> <td>leftedge</td> <td><cmd>leftedgewidth</cmd></td> <td>, and moving away from left rim the center, one first sets the {{code|leftmargindistance}}; then one sets the width {{code|leftmargin}} of paper to left rim of left the margin</td></tr><tr> <td>typesetting area; then one sets the {{code|leftedgedistance</td> <td><cmd>leftedgedistance</cmd></td> <td>between leftegde }}; and left margin</td></tr><tr> <td>leftmargin</td> <td><cmd>leftmarginwidth</cmd></td> <td>width of left margin (marginals space)</td></tr><tr> <td>leftmargindistance</td> <td><cmd>leftmargindistance</cmd></td> <td>between left margin and text</td></tr><tr> <td>textwidth</td> <td><cmd>textwidth</cmd></td> <td>width of text then there is the {{code|leftedge}} typesetting area. when columns are used, On the value of <cmd>textwidth</cmd> can differ from <cmd>makeupwidth</cmd></td></tr><tr> <td>right: {{code|rightmargindistance</td> <td><cmd>rightmargindistance</cmd></td> <td>between text area and right margin</td></tr><tr> <td>}}, {{code|rightmargin</td> <td><cmd>rightmarginwidth</cmd></td> <td>width of right margin (marginals area)</td></tr><tr> <td>}}, {{code|rightedgedistance</td> <td><cmd>rightedgedistance</cmd></td> <td>between right margin and right edge</td></tr><tr> <td>}}, {{code|rightedge</td> <td><cmd>rightedgewidth</cmd></td> <td>from right margin to right rim of paper</td></tr></table>}}.
== Setup =Paper size =
You define always a right See the dedicated page; if you use a double [[PaperSetup|Paper setup]], it includes details on:* {{cmd|setuppapersize}}, to set the page layout 'right' size and 'left' values paper size* {{cmd|definepapersize}}, to define a new paper size,* the [[PaperSetup#Predefined_Paper_Sizes|many paper sizes already defined by name]]. Their actual dimensions in mm are mirrored on a left given by [[Paper sizes]] page.* [[PaperSetup#Changing paper setup mid-document|Changing paper setup mid-document]]* [[PaperSetup#Setting print size|Setting print size]]* [[PaperSetup#Fitting pages to their content|Fitting pages to their content]] = Example layout =
<texcode>
\setuppapersize[A4][A4] % this is the default and may be omitted
\setuplayout[backspace=20mm,
width=160mm, topspace=20mm, top=0mm, header=0mm, footer=0mm, height=250mm]</texcode> == Let's gather examples here == ; Cover pages: [[Cover Pages]] (2013, 2019); Other: [[Example photo page layout]] (2010) = [[Imposition]] = Imposition is a prepress printing process. It consists of the arrangement of the printed product’s pages on the printer’s sheet, in order to obtain faster printing, simplify binding and reduce paper waste ([https://en.wikipedia.org/wiki/Imposition wikipedia]). We built a dedicated page about '''[[Imposition]]''', because making booklets, to arrange pages in proper order for printing it's a topic in itself. This is where you will use {{cmd|setuppaper}} and {{cmd|setuparranging}}. = Multiple layouts = If you need to use different layouts in some parts of the document, you can set up a global layout, and then define additional named layouts for the deviating parts. You only need to specify the dimensions that differ: unspecified dimensions will be inherited from the global layout. To switch to a different layout, call it up in the appropriate place in the document. To revert back to the global layout, use {{cmd|setuplayout|2=[reset]}}. <texcode>\setuplayout[...] % global layout\definelayout[wide][...] % layout of the first page \setuplayout[wide] % switch to layout called 'wide'\setuplayout[reset] % switch back to the global layout</texcode> To specify in advance that you want to change layouts starting from page 4 (e.g.), use {{cmd|definelayout|2=[4][...]}}. Resetting the layout must be done explicitly; else, the new layout will be used until the end of the document. <texcode>% different layout for first two pages\definelayout[1][wide]\definelayout[3][reset]</texcode> For the page numbers you can use absolute numbers (as above), relative numbers (like +1, -2) or the keywords odd, even, first and last. <texcode>\setuplayout[ % default layout (right page)...]\definelayout[even][ % different layout on left pages...]
</texcode>
You can make all If you define additional layouts in a doublepage (duplex) setup, remember to think mirrored: leftmargin defines the right margin, backspace is the distance from the spine to the right edge of the text area etc. .<div style="border: 3px solid red; background: #ffcccc; padding: 0.4em;"><div style="font-size: 1.3em; fontweight: bold">Warning!</div>At the moment a layoutchange (setuplayout) inside a page is not proper working in mkiv duplex mode.For more details and actual state see mailing list and [http://wiki.contextgarden.net/User_talk:Zenlima Bug Layoutchange inside page while duplexmode].</div> = Table of Parameters = The first column is the name by which the variable is set in {{cmd|setuplayout}}. The second column is the name by which TeX stores the variable. This name is usually the geometry information visible same, but sometimes different; knowing it allows you to invoke it with code like <cmdcode>showlayoutThe paper's height is \the\paperheight.</cmdcode> and Any remarks (usually a short description) are given in the third column. {| class=wikitable! \setuplayout[...] !! dimension !! Remarks|-| paperheight| {{cmd|paperheight}}| height of paper page|-| paperwidth| {{cmd|paperwidth}}| width of paper page|-| printpaperheight| {{cmd|printpaperheight}}| differs from paperheight when using [[Visual DebuggingImposition]] (arranging)|-|related commandsprintpaperwidth| {{cmd|printpaperwidth}}| differs from paperwidth when using [[Imposition]](arranging)|-| topspace| {{cmd|topspace}}| above header: from top rim of paper to to top rim of header|-| backspace| {{cmd|backspace}}| from left rim of paper to left rim of main text area|-| height| {{cmd|makeupheight}}| sum of heights of text area, header and footer (plus distances)|-| width| {{cmd|makeupwidth}}| width of the main text area. {{cmd|makeupwidth}} is normally same as {{cmd|textwidth}}, but it can be different, for example in columns|-| top| {{cmd|topheight}}| height of the top area|-| topdistance| {{cmd|topdistance}}| between top and header|-| header| {{cmd|headerheight}}| height of header area|-| headerdistance| {{cmd|headerdistance}}| between header and text|-| textheight| {{cmd|textheight}}| height of text area|-| footerdistance| {{cmd|footerdistance}}| between text and footer|-| footer| {{cmd|footerheight}}| height of footer area|-| bottomdistance| {{cmd|bottomdistance}}| between footer and bottom|-| bottom| {{cmd|bottomheight}}| space below footer (but isn't calculated automatically)|-| bottomspace| {{cmd|bottomspace}}| space from bottom footer to bottom rim of paper|-| cutspace| {{cmd|cutspace}}| from right rim of paper to right rim of main text area|-| leftedge| {{cmd|leftedgewidth}}| from left rim of paper to left rim of left margin|-| leftedgedistance| {{cmd|leftedgedistance}}| between leftegde and left margin|-| leftmargin| {{cmd|leftmarginwidth}}| width of left margin (marginals space)|-| leftmargindistance| {{cmd|leftmargindistance}}| between left margin and text|-| textwidth| {{cmd|textwidth}}| width of text area.when columns are used, the value of {{cmd|textwidth}} can differ from {{cmd|makeupwidth}}|-| rightmargindistance| {{cmd|rightmargindistance}}| between text area and right margin|-| rightmargin| {{cmd|rightmarginwidth}}| width of right margin (marginals area)|-| rightedgedistance| {{cmd|rightedgedistance}}| between right margin and right edge|-| rightedge| {{cmd|rightedgewidth}}| from right margin to right rim of paper|-| horoffset| ?| bleed from left of paper|-| voroffset| ?| bleed from top of paper|} '''Note:''' * width=middle<texcode> if cutspace == 0pt then cutspace = backspace end makeupwidth = paperwidth- backspace -cutspace</texcode>
See * width=fit<cmdtexcode>setuplayout if cutspace == 0pt then cutspace = backspace end makeupwidth = paperwidth-cutspace scratchdimen = backspace - leftedgewidth-leftedgedistance-leftmarginwidth-leftmargindistance if scratchdimen</cmd> and <cmd>setuppapersize0pt then scratchdimen = 0pt end makeupwidth = makeupwidth - rightmargindistance-rightmarginwidth- rightedgedistance-rightedgewidth- scratchdimen</cmdtexcode> in the manual.
If you need an unusual paper size* otherwise:<texcode> makeupwidth=width if cutspace == 0pt then cutspace = paperwidth-makeupwidth-backspace else % A kind of inconsistent specification, but used % in for instance s-pre-19.tex; the cutspace is % used only for determining some kind of right % margin; don't use <cmd>definepapersizethis in doublesided mode pass end</cmdtexcode> and have a look at our list of [[PaperSizes(From {{src|paper sizes]]page-lay.mkiv}}.)
=Further reading = Keep ==If you have a certain run of text that you want to keep together, you can test for the number of lines available on the current page with \testpage[n] where n is the number of lines required. If there are not n lines available, a page break will be inserted at the location of the testpage command.
== Hints ==
By using * '''[[Presentations]]''': specifics requirements, specific pages (widgets, multimedia, ...)* [[Documentation|Manuals about layout]], and noticeably:** The basics with '''[http://context.aanhet.net/svn/contextman/context-reference/en/co-pagedesign.pdf Page design & Layout chapter]''' from the reference manual (2011)** The more advance '''[http://www.pragma-ade.nl/general/manuals/details.pdf It's in the Details]''' manual (2015), including grid typesetting.* '''[[Visual Debugging#Layout|Visual Debugging]]''': can greatly facilitate the set up of your layout.* After the layout, we can usually focus on the following subjects:** '''[[Floating Objects]]'''** '''[[Columns]]'''** '''[[Layers]]''', for absolute positioning of objects on the page, background, foreground etc.)** '''[[Grid typesetting]]''' (working with fixed distances)** '''[[Delimiter]]''', master line break and page break** '''[[Hiding Content]]'''* About PDF format** [[PDF Boxes]]: the size of PDF pages can have different meanings – e.g. the visible page, the printed page, the cropped printed page. ConTeXt can define the set of boxes defined by the PDF standard** [[PDF Print Options]]** [[Viewer Layers]] PDF has a concept of layers that you can also place elements enable and disable (at specific placesleast in a few viewers). This has nothing to do with ConTeXt’s [[Layers]].** [[PDF/A]], ConTeXt can create PDF/A compliant outputs** [[PDFX]], ConTeXt can create PDF/X compliant outputs, as done in the ISO standard.* For layout from a [[Formatting Objects|XML/FO]] perspective, with some descriptive pictures, see At [http://getfo.sourceforge.net/context_xml/index.html Paul Tremblay's] [[BusinessCardXML]] exampleConTeXt site.
At [http://getfo.sourceforge.net/context_xml/index.html Paul Tremblay's] [[XML]] ConTeXt site, there's a lot about layout from a [[Formatting Objects|XML/FO]] perspective with some descriptive pictures.
{{Todo|Unfortunately it's not that easy to define a layout. We need more documentation about which parameters define which length, what influences what else etc.}}[[Category:Layout]]

Navigation menu