Changes

Jump to navigation Jump to search
296 bytes added ,  08:28, 2 July 2022
m
Text replacement - "pragma-ade.com" to "pragma-ade.nl"
< [[Visuals]] | [[Layers]] | [[Columns]] | [[Visual Debugging]] >__TOC__
There is now a [http://context.aanhet.net/svn/contextman/context-reference/en/co-pagedesign.pdf manual chapter This page focuses on '''Basics of page designand 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.
== Location of Areas =Typesetting areas =
You can use these design The 25 typesetting areas in your of a ConTeXt pageare 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}|}}.
<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;">The graphic below illustrates the areas and dimensions. </td>The row and column names are written <td style="text-align:center;">along the edges of the page. </td> </tr> <tr style="background:#cccccc;"> <td style="background:#ccccff;"><tt>bottom</tt></td> <td style="text-align:centerThe arrows correspond to layout dimensions;">. </td>the <td style="text-align:center;">more important a dimension is (i. </td> <td style="text-align:center;">&uarr; bottomspace &darr;</td> <td style="text-align:center;">e. </td>the more of the layout is pushed around <td style="text-align:center;">when you change it), the thicker its arrow and the larger its name. </td> </tr></table>
[[Image:layout.svg||||Diagram of \setuplayout[] dimensions]]
The names in = Defining the column and row headers are the keywords for <cmd>setuplayout</cmd>, the words inside of the table are given to clarify ConTeXT terminology. There are also keywords suffixed by "distance" to set the distancebetween each of the areas, e.g. <tt>leftedgedistance</tt>, <tt>leftmargindistance</tt> (from the named area to the inner). layout =
<tt>height</tt> Positioning the areas is normally used instead by setting the following dimensions using {{cmd|setuplayout|2=[backspace=5cm,...]}}. The dimensions are mentioned in order of <tt>textheight</tt>how ‘primitive’ they are: e.g. altering the {{code|topspace}} pushes around all other vertical dimensions, it is but altering the {{code|header}} affects only the {{code|headerdistance}} and the sum of <tt>footer + footerdistance + {{code|textheight + headerdistance + header</tt>}}.
The size of the margins does not affect the size of the text area. Control the size of the text area with backspaceWhen you define a page layout, topspaceit's always a right page that you're defining; if you use a double page layout, height 'right' and width'left' values are mirrored on a left page. Doublesided typesetting is activated with {{cmd|setuppagenumbering|2=[alternative=doublesided]}}.
== Table # Set the {{code|backspace}} and {{code|width}}, and the {{code|topspace}} and {{code|height}}. The {{code|width}} is the width of Parameters ==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><tr style="background:#cccccc;vertical-alignPaper size =top;"><th>Parameter</th><th>Variable</th><th>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></table>'''Note:''' *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, but used % in for instance s-pre-19.tex; the cutspace is % used only for determining some kind of right % margin; don't use this in doublesided mode pass end</code>(from <tt>page-lay.mkiv</tt>, 2009-11-17 - 23:59).
== Setup / See the dedicated page [[PaperSetup|Paper Size ==setup]], it includes details on:* {{cmd|setuppapersize}}, to set the page size and 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 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]]
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>
ConTeXt users in the United States might use<texcode>\setuppapersize[letter][letter]</texcode>for standard US Letter-sized paper (8.5" &times; 11.0") If you need a special paper size, have a look at our list of [[PaperSizes|paper sizes]] (ConTeXt's, standardized and traditional), and use <cmd>definepapersize</cmd> if it== Let's not already defined. 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. === How to setup your layout =gather examples here ==
Define the placement and size of your type area by first defining '''backspace'''; Cover pages: [[Cover Pages]] (2013, '''topspace''', '''width''' and '''height'''.2019)The height includes header and footer.; Other: [[Example photo page layout]] (2010)
The width of the margins has ''no'' influence on the location of the type area!= [[Imposition]] =
Details are Imposition is a prepress printing process. It consists of the arrangement of the printed product’s pages on the printer’s sheet, in the order to obtain faster printing, simplify binding and reduce paper waste ([httphttps://contexten.aanhetwikipedia.netorg/svnwiki/contextman/context-reference/en/co-pagedesign.pdf page design chapterImposition wikipedia] of the new reference manual).
== Keep ==If you have We built a certain run of text that you want to keep together, you can test for the number of lines available on the current dedicated page with \testpageabout '''[n[Imposition] where n is the number of lines required. If there are not n lines available]''', because making booklets, to arrange pages in proper order for printing it's a page break topic in itself. This is where you will be inserted at the location of the testpage commanduse {{cmd|setuppaper}} and {{cmd|setuparranging}}.
= Multiple layouts =
== Multiple 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.
If you need To switch to use a different layouts in some parts of the documentlayout, you can set call it up a global layout for in the overall and then define additional named layouts for appropriate place in the deviating partsdocument. These settings go into To revert back to the setup area of your documentglobal layout, use {{cmd|setuplayout|2=[reset]}}.
<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:first page
<texcode>\setuplayout[wide] % switches switch to layout called 'wide'\setuplayout[reset] % switch back to the global layout
</texcode>
'''NoteTo specify in advance that you want to change layouts starting from page 4 (e.g.), use {{cmd|definelayout|2=[4][.''' Use reset to revert back to ..]}}. Resetting the layout must be done explicitly; else, the global new layout:will be used until the end of the document.
<texcode>
% different layout for first two pages\setuplayoutdefinelayout[1][wide]\definelayout[3][reset] % reverts to the global layout
</texcode>
''This text is based on [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.'' Defining layouts with a number as their name allows to specify the layout of the page with that specific number. For example, to use a different layout for the first page, numbers you can use this code:absolute numbers (as above), relative numbers (like +1, -2) or the keywords odd, even, first and last.
<texcode>
\setuplayout[key=value,key=value,% default layout (right page)...] % global layout\definelayout[1even][key=value,key=value,% different layout on left pages...] % layout of the first page\definelayout[2][reset] % revert to the global layout starting from the second page
</texcode>
Do not forget If you define additional layouts in a doublepage (duplex) setup, remember to reset think mirrored: leftmargin defines the right margin, backspace is the layout on distance from the second page. Note that keys that are not set in spine to the layout right edge of the first page will be conveniently inherited from the global layouttext area etc.
A typical example of the above is the following.<div style="border: 3px solid red; background: #ffcccc; padding:0.4em;"><texcodediv 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 [% default layout for all the pageshttp://wiki.contextgarden.net/User_talk:Zenlima Bug Layoutchange inside page while duplexmode]. backspace=1cm, width=middle]</div>
\definelayout[1][% set this layout on the first page backspace=6cm]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 same, but sometimes different; knowing it allows you to invoke it with code like <code>The paper's height is \definelayout[2][reset] % reset to the default layout starting from \paperheight.</code> Any remarks (usually a short description) are given in the second pagethird column.
{| class=wikitable! \definelayoutsetuplayout[...] !! dimension !! Remarks|-| paperheight| {{cmd|paperheight}}| height of paper page|-| paperwidth| {{cmd|paperwidth}}| width of paper page|-| printpaperheight| {{cmd|printpaperheight}}| differs from paperheight when using [[5Imposition]] (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=6cm] % use this layout starting | {{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 page 5top of paper|}
\definelayout[9][reset] % reset to the default layout starting from page 9'''Note:'''
\starttext* width=middle\showframe<texcode>\dorecurse{20}{\input dawkins \blank[big] \input knuth \page} if cutspace == 0pt then\stoptext cutspace = backspace end makeupwidth = paperwidth- backspace -cutspace
</texcode>
* width=fit<texcode> if cutspace = Layout components =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- scratchdimenA hidden nice feature is </texcode>
* otherwise:
<texcode>
\showlayoutcomponents 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 this in doublesided mode pass end
</texcode>
(From {{src|page-lay.mkiv}}.)
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 =Further reading =
By using [[Layers]], you can also place elements at specific places, as done in the [[BusinessCard]] example.
At * '''[[Presentations]]''': specifics requirements, specific pages (widgets, multimedia, ...)* [[Documentation|Manuals about layout]], and noticeably:** The basics with '''[http://getfocontext.sourceforgeaanhet.net/context_xmlsvn/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/indexdetails.html Paul Tremblaypdf It'sin 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]] '''** '''[[XMLLayers]]''', for absolute positioning of objects on the page, background, foreground etc.)** '''[[Grid typesetting]]''' (working with fixed distances)** '''[[Delimiter]] ConTeXt site''', theremaster line break and page break** '''[[Hiding Content]]'s ''* 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 enable and disable (at least in a lot about 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, 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] [[XML]] ConTeXt site.
{{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-IssuesLayout]]

Navigation menu