Changes

Jump to navigation Jump to search
1,661 bytes added ,  17:44, 19 February 2018
Hints about different layouts
< [[Visuals]] | [[Layers]] | [[Columns]] | [[Visual Debugging]] | [[Paper sizes]] >
== Location of Areas ==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].
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|[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}}.
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 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. 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 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}}. = Table of Parameters = Paper size ==
<table><tr style="background:#cccccc;vertical-align=top;"><th>Parameter</th><th>Variable</th><th>Remarks</th></tr><tr> <td>paperheight</td> <td><Page size and paper size are set with {{cmd>paperheight</cmd></td> <td>height of |setuppapersize}}. Many paper page</td></tr><tr> <td>paperwidth</td> <td><cmd>paperwidth</cmd></td> <td>width sizes are already defined by name; see the list of paper page</td></tr><tr> <td>printpaperheight</td> <td><cmd>printpaperheight</cmd></td> <td>differs from paperheight when using [[ImpositionPaperSizes|paper sizes]] (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 . To define a new 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 differentsize, 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><use {{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|definepapersize}}. 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></table>
== Setup =={{todo | Merge with [[PaperSetup]] }}
You define always a right page; if you use a double page == Example layout 'right' and 'left' values are mirrored on a left page.==
<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>
You can make all the geometry information visible with <cmd>showlayout</cmd> and the [[Visual Debugging|related commands]].== Multiple layouts ==
See <cmd>setuplayout</cmd> If you need to use different layouts in some parts of the document, you can set up a global layout, and <cmd>setuppapersize</cmd> in 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 manualglobal layout.
If you need an unusual paper sizeTo switch to a different layout, call it up in the appropriate place in the document. To revert back to the global layout, use <{{cmd>definepapersize</cmd> and have a look at our list of [|setuplayout|[PaperSizes|paper sizes]reset]}}.
For ConTeXt users in the United States, use
<texcode>
\setuppapersizesetuplayout[letter...]% global layout\definelayout[letterwide][...] % layout of the first page \setuplayout[wide] % switch to layout called 'wide'\setuplayout[reset] % switch back to the global layout
</texcode>
for standard U.S Letter-sized paper (8.5"x11.0")
== Keep ==If you have a certain run of text To specify in advance that you want to keep togetherchange layouts starting from page 4 (e.g.), you can test for the number of lines available on the current page with \testpageuse {{cmd|definelayout|[4][n...] where n is }}. Resetting the number of lines required. If there are not n lines availablelayout must be done explicitly; else, a page break the new layout will be inserted at used until the location end of the testpage commanddocument.
<texcode>
% different layout for first two pages
\definelayout[1][wide]
\definelayout[3][reset]
</texcode>
== Multiple layouts == If For the page numbers you need to can use different layouts in some parts of absolute numbers (as above), relative numbers (like +1, -2) or the documentkeywords odd, even, you can set up a global layout for the overall first and then define additional named layouts for the deviating parts. These settings go into the setup area of your documentlast.
<texcode>
\setuplayout[key=value,key=value,% default layout (right page)...] %global layout\definelayout[wideeven][key=value,key=value,...] %different layout called 'wide'on left pages\definelayout[short][key=value,key=value,...]%different layout called 'short'
</texcode>
That takes care of the global layout. When If you want define additional layouts in a doublepage (duplex) setup, remember to switch think mirrored: leftmargin defines the right margin, backspace is the distance from the spine to a different layout, you just call it up in the appropriate place in right edge of the document: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>
 
== 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>
\setuplayout[wide] % switches to layout called 'wide'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''Note]}}, where ''n'' is the number of lines required. If there are not ''n' Use reset to revert back to ' 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 global [[Layers]] mechanism is more suitable. * For layoutfrom 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 ==
The 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; knowing it allows you to invoke it with code like <texcodecode>The paper's height is \setuplayout[reset] % reverts to the global layout\paperheight.</texcodecode>Any remarks (usually a short description) are given in the third column.
''This text is based on at {| class=wikitable! \setuplayout[http://archive.contextgarden.net/message/20080926.111520] !! dimension !! Remarks|-| paperheight| {{cmd|paperheight}}| height of paper page|-| paperwidth| {{cmd|paperwidth}}| width of paper page|-| printpaperheight| {{cmd|printpaperheight}}| differs from paperheight when using [[Imposition]] (arranging)|-| printpaperwidth| {{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.9db86904{{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.en.html a thread on when columns are used, the mailing list], answers value of {{cmd|textwidth}} can differ from {{cmd|makeupwidth}}|-| rightmargindistance| {{cmd|rightmargindistance}}| between text area and examples are given there by Hans right margin|-| rightmargin| {{cmd|rightmarginwidth}}| width of right margin (marginals area)|-| rightedgedistance| {{cmd|rightedgedistance}}| between right margin and Wolfgang.''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|}
== Hints =='''Note:'''
By using [[Layers]]*width=middle<code> if cutspace == 0pt then cutspace = backspace end makeupwidth = paperwidth- backspace -cutspace</code>*width=fit<code> if cutspace == 0pt then cutspace = backspace end makeupwidth = paperwidth-cutspace scratchdimen = backspace - leftedgewidth-leftedgedistance-leftmarginwidth-leftmargindistance if scratchdimen< 0pt then scratchdimen = 0pt end makeupwidth = makeupwidth - rightmargindistance-rightmarginwidth- rightedgedistance-rightedgewidth- scratchdimen</code>* otherwise:<code> makeupwidth=width if cutspace == 0pt then cutspace = paperwidth-makeupwidth-backspace else % A kind of inconsistent specification, you can also place elements at specific places, as done but used % in for instance s-pre-19.tex; the [[BusinessCard]] examplecutspace is % used only for determining some kind of right % margin; don't use this in doublesided mode pass end</code>(From {{src|page-lay.mkiv}}.)
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