Changes

Jump to navigation Jump to search
2,213 bytes added ,  12:10, 28 May 2020
m
no edit summary
< [[VisualsBasics#Basics_of_ConTeXt_text_formatting|Text formatting]] | [[Layers]] | [[Columns]] | [[Visual Debugging]] | [[Paper sizes]] >
== Location of Areas ==
This page focus on '''Basics of page design and layout'''. You can use these also be interested in:* '''[http://context.aanhet.net/svn/contextman/context-reference/en/co-pagedesign.pdf Layout and page design areas manual chapter]''' to go into more detail* '''[[Presentations]]''' and associated features, widgets, multimedia* '''[[Layers]]''' (absolute positioning etc.)* '''[[PaperSetup | Paper setup]]'''* '''[[Imposition]]''', making booklets, to arrange pages in your proper order for printing.* '''[[Working on Grid]]''' (working with fixed distances)* '''[[Alternating backgrounds and repeating layers]]''' like Watermarks* '''Examples'''** [[A Very Simple Cover Page]]** [[Simple Cover Page]]** [[Example photo page:layout]]
<table>
<tr style="background:#ccccff;">
<td style="background:#ffffff;"></td>
<td style="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>
== Typesetting areas ==
The names in the column and row headers are the keywords for <cmd>setuplayout</cmd>, the words inside 25 typesetting areas of the table a ConTeXt page are given divided into 5 columns and 5 rows. From left to clarify ConTeXT terminologyright, one encounters {{code|leftedge}}, {{code|leftmargin}}, {{code|text}}, {{code|rightmargin}}, and {{code|rightedge}}. There are also keywords suffixed by "distance" From top to set the distancebetween each of bottom, the areasare called: {{code|top}}, e{{code|header}}, {{code|text}}, {{code|footer}}, {{code|bottom}}. E.g. <tt>leftedgedistance</tt>{{code|leftmargin}} is the margin area to the left of the main text area; {{code|{leftmargin, <tt>leftmargindistance</tt> (from bottom}|}} is below it, at the named same height as the {{code|bottom}} area to . In between the two lies the inner)area {{code|{leftmargin,footer}|}}.
<tt>height</tt> The graphic below illustrates the areas and dimensions. The row and column names are writtenalong the edges of the page. The arrows correspond to layout dimensions; themore important a dimension is normally used instead (i.e. the more of <tt>textheight</tt>the layout is pushed aroundwhen you change it), it is the sum of <tt>footer + footerdistance + textheight + headerdistance + header</tt>thicker its arrow and the larger its name.
The size of the margins does not affect the size of the text area[[Image:layout. Control the size svg||||Diagram of the text area with backspace, topspace, height and width.\setuplayout[] dimensions]]
== Table Defining the layout == Positioning the areas is by setting the following dimensions using {{cmd|setuplayout|[backspace=5cm,...]}}. The dimensions are mentioned in order of Parameters 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 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}}. == 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'']}}, where ''n''Noteis 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 global layout:{{cmd|testpage}} command.
<texcode>* If you need absolute positioning of objects (text, pictures) on the page, but ad-hoc rather than systematic, the [[Layers]] mechanism is more suitable. \setuplayout* 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] [[resetXML]] % reverts 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 <code>The paper's height is \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