Changes

Jump to navigation Jump to search
332 bytes removed ,  13:34, 11 May 2014
Added the horoffset and voroffset setuplayout parameters
{{todo | Merge with [[PaperSetup]] and [[Paper sizes]] }}
< [[Visuals]] | [[Layers]] | [[Columns]] | [[Visual Debugging]] >
There is now a For more on [http://context.aanhet.net/svn/contextman/context-reference/en/co-pagedesign.pdf layout and page design] see the [http://context.aanhet.net/svn/contextman/context-reference/en/co-pagedesign.pdf manual chapter on page design]!.
<div style="border: 3px solid red; background: #ffaaaa; padding: 0.4em;"><div style= Location of Areas =="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>
You can use these design areas in your page:
<table> <tr style="background:#ccccff;"> <td style="background:#ffffff;"></td> <td styleTypesetting areas ="text-align:center;"><tt>leftedge</tt> </td> <td style="text-align:center;width:15%;"><tt>leftmargin</tt> </td> <td style="text-align:center;width:50%;"><tt>width</tt> </td> <td style="text-align:center;width:15%;"><tt>rightmargin</tt> </td> <td style="text-align:center;">rightedge </td> </tr> <tr style="background:#cccccc;"> <td style="background:#ccccff;"><tt>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>header</tt></td> <td style="text-align:center;">. </td> <td style="text-align:center;">. </td> <td style="text-align:center;background:#DDDDDD;">HEADER<br />&uarr; headerheight &darr;</td> <td style="text-align:center;">. </td> <td style="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:center;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>bottom</tt></td> <td style="text-align:center;">. </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;">. </td> </tr></table>
The 25 typesetting areas of a ConTeXt page are divided into 5 columns and 5 rows. From left to right, one encounters {{code|leftedge}}, {{code|leftmargin}}, {{code|text}}, {{code|rightmargin}}, and {{code|rightedge}}. From top to bottom, the areas are called: {{code|top}}, {{code|header}}, {{code|text}}, {{code|footer}}, {{code|bottom}}. E.g. {{code|leftmargin}} is the margin area to the left of the main text area; {{code|{leftmargin,bottom}|}} is below it, at the same height as the {{code|bottom}} area. In between the two lies the area {{code|{leftmargin,footer}|}}.
The names in graphic below illustrates the column areas and dimensions. The row headers and column names are writtenalong the keywords for <cmd>setuplayout</cmd>, the words inside edges of the table are given to clarify ConTeXT terminologypage. There are also keywords suffixed by "distance" The arrows correspond to set layout dimensions; the distancebetween each more important a dimension is (i.e. the more of the areas, e.g. <tt>leftedgedistance</tt>layout is pushed aroundwhen you change it), <tt>leftmargindistance</tt> (from the named area to thicker its arrow and the inner)larger its name.
<tt>height</tt> is normally used instead [[Image:layout.svg||||Diagram of <tt>textheight</tt>, it is the sum of <tt>footer + footerdistance + textheight + headerdistance + header</tt>\setuplayout[] dimensions]]
== Defining the layout == Positioning the areas is by setting the following dimensions using {{cmd|setuplayout|[backspace=5cm,...]}}. The size dimensions are mentioned in order of how ‘primitive’ they are: e.g. altering the {{code|topspace}} pushes around all other vertical dimensions, but altering the {{code|header}} affects only the {{code|headerdistance}} and the {{code|textheight}}. You always define a right page; if you use a double page layout, 'right' and 'left' values are mirrored on a left page. Doublesided typesetting is activated with {{cmd|setuppagenumbering|[alternative=doublesided]}}. # Set the {{code|backspace}} and {{code|width}}, and the {{code|topspace}} and {{code|height}}. The {{code|width}} is the width of the main typesetting area; the {{code|backspace}} is its distance from the left edge of the page. The {{code|height}} is the distance ''from the top of the header to the bottom of the footer''; the {{code|topspace}} is the distance from the top edge of the page to the top of the margins does not affect header.# 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 the header area to the text area. Control The {{code|footer}} and {{code|footerdistance}} work likewise.# Once the header(distance) and footer(distance) are subtracted from the {{code|height}}, what remains is the {{code|textheight}}: the height of the main typesetting area. Although it would be very useful, you cannot set this dimension directly.# If you want to typeset anything above the header, define {{code|topdistance}} (the distance from the top of the header to the bottom of the topmost typesetting area) and {{code|top}} (the height of the topmost typesetting area). For typesetting below the footer, define {{code|bottomdistance}} and {{code|bottom}}.# As for the horizontal dimensions apart from the {{code|width}}: starting at the size left edge of the main text area , and moving away from the center, one first sets the {{code|leftmargindistance}}; then one sets the width {{code|leftmargin}} of the margin typesetting area; then one sets the {{code|leftedgedistance}}; and then there is the {{code|leftedge}} typesetting area. On the right: {{code|rightmargindistance}}, {{code|rightmargin}}, {{code|rightedgedistance}}, {{code|rightedge}}. == Paper size == Page size and paper size are set with {{cmd|setuppapersize}}. Many paper sizes are already defined by name; see the list of [[PaperSizes|paper sizes]]. To define a new paper size, use {{cmd|definepapersize}}. == Example layout == <texcode>\setuppapersize[A4][A4] % this is the default and may be omitted\setuplayout[backspace=20mm, width=160mm, topspace=20mm, header=0mm, footer=0mm, height =250mm]</texcode> == Multiple layouts == If you need to use different layouts in some parts of the document, you can set up a global layout, and widththen 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|[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|[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> == Advanced features == * To allow Acrobat Reader users (among others?) to make layers visible/invisible at will, add the following command at the start of your file:<texcode>\showlayoutcomponents</texcode> * 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 {{cmd|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 {{cmd|testpage}} command. * If you need absolute positioning of objects (text, pictures) on the page, but ad-hoc rather than systematic, the [[Layers]] mechanism is more suitable. * 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] [[XML]] ConTeXt site.
== Table of Parameters ==
<table><tr style="background:#ccccccThe first colum 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 same, but sometimes different;vertical-align=top;">knowing it allows you to invoke it with code like <thcode>ParameterThe paper's height is \the\paperheight.</th><th>Variable</th><thcode>Any remarks (usually a short description) are given in the third column. {| class=wikitable! \setuplayout[...] !! dimension !! Remarks</th></tr><tr>|- <td>| paperheight</td> <td><| {{cmd>|paperheight</cmd></td>}} <td>| height of paper page</td></tr><tr>|- <td>| paperwidth</td> <td><| {{cmd>|paperwidth</cmd></td>}} <td>| width of paper page</td></tr><tr>|- <td>| printpaperheight</td> <td><| {{cmd>|printpaperheight</cmd></td>}} <td>| differs 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>| topspace</td> <td><| {{cmd>|topspace</cmd></td>}} <td>| above header: from top rim of paper to to top rim of header</td></tr><tr>|- <td>| backspace</td> <td><| {{cmd>|backspace</cmd></td>}} <td>| from left rim of paper to left rim of main text area</td></tr><tr>|- <td>| height</td> <td><| {{cmd>|makeupheight</cmd></td>}} <td>| sum of heights of text area, header and footer (plus distances)</td></tr><tr>|- <td>| width</td> <td><| {{cmd>|makeupwidth</cmd></td>}} <td>| width of the main text area. <{{cmd>|makeupwidth</cmd> }} is normally same as <{{cmd>|textwidth</cmd>}}, but it can be different, for example in columns</td></tr>|-<tr> <td>| 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 of header 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>| height of text area</td></tr>|-<tr> <td>| footerdistance</td> <td><| {{cmd>|footerdistance</cmd></td>}} <td>| between text and footer</td></tr>|-<tr> <td>| footer</td> <td><| {{cmd>|footerheight</cmd></td>}} <td>| height of footer area</td></tr>|-<tr> <td>| bottomdistance</td> <td><| {{cmd>|bottomdistance</cmd></td>}} <td>| between footer and 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 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 of main text area</td></tr>|-<tr> <td>| leftedge</td> <td><| {{cmd>|leftedgewidth</cmd></td>}} <td>| from left rim of paper to left rim of left margin</td></tr>|-<tr> <td>| 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 area. when columns are used, the value of <{{cmd>|textwidth</cmd> }} can differ from <{{cmd>|makeupwidth</cmd></td>}}</tr><tr>|- <td>| rightmargindistance</td> <td><| {{cmd>|rightmargindistance</cmd></td>}} <td>| between text area and right margin</td></tr><tr>|- <td>| rightmargin</td> <td><| {{cmd>|rightmarginwidth</cmd></td>}} <td>| width of right margin (marginals area)</td></tr><tr>|- <td>| rightedgedistance</td> <td><| {{cmd>|rightedgedistance</cmd></td>}} <td>| between right margin and right edge</td></tr><tr>|- <td>| rightedge</td> <td><| {{cmd>|rightedgewidth</cmd></td>}} <td>| from right margin to right rim of paper</td></tr>|-| horoffset| ?| bleed from left of paper|-| voroffset| ?| bleed from top of paper|}</table>
'''Note:'''
end
</code>
(from <tt>From {{src|page-lay.mkiv</tt>, 2009-11-17 - 23:59). == Setup == You define always a right page; if you use a double page layout 'right' and 'left' values are mirrored on a left page. <texcode>\setuppapersize[A4][A4] % this is default and may be omitted\setuplayout[backspace=20mm, width=160mm, topspace=20mm, top=0mm, header=0mm, footer=0mm, height=250mm]</texcode> You can make all the geometry information visible with <cmd>showlayout</cmd> and the [[Visual Debugging|related commands]]. See <cmd>setuplayout</cmd> and <cmd>setuppapersize</cmd> in the manual. If you need an unusual paper size, use <cmd>definepapersize</cmd> and have a look at our list of [[PaperSizes|paper sizes]]. For ConTeXt users in the United States, use<texcode>\setuppapersize[letter][letter]</texcode>for standard U.S Letter-sized paper (8.5"x11.0") == 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.  == Multiple layouts == If you need to use different layouts in some parts of the document, you can set up a global layout for the overall and then define additional named layouts for the deviating parts. These settings go into the setup area of your document. <texcode>\setuplayout[key=value,key=value,...] %global layout\definelayout[wide][key=value,key=value,...] %different layout called 'wide'\definelayout[short][key=value,key=value,.}}..]%different layout called 'short'</texcode> That takes care of the global layout. When you want to switch to a different layout, you just call it up in the appropriate place in the document: <texcode>\setuplayout[wide] % switches to layout called 'wide'</texcode> '''Note.''' Use reset to revert back to the global layout: <texcode>\setuplayout[reset] % reverts to the global layout</texcode> ''This text is based on at [http://archive.contextgarden.net/message/20080926.111520.9db86904.en.html a thread on the mailing list], answers and examples are given there by Hans and Wolfgang.'' == Layout components == A hidden nice feature is  <texcode>\showlayoutcomponents</texcode> By adding the above command at the beginning of your file you obtain a PDF file in which different components of the layout (such as layers) can be made visible or invisible in Acrobat Reader (or maybe a few other PDF viewers). == Hints == By using [[Layers]], you can also place elements at specific places, as done in the [[BusinessCard]] example.
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.{{Getting started navbox}}
{{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:ConTeXt-Issues]]

Navigation menu