Changes

Jump to navigation Jump to search
461 bytes added ,  18:52, 30 January 2023
corrections
< [[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}}, 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}}</td> <td>height of paper page</td></tr><tr> <td>paperwidth</td> <td>{{cmd|paperwidth}}</td> <td>width of paper page</td></tr><tr> <td>printpaperheight</td> <td>{{cmd|printpaperheight}}</td> <td>differs from paperheight when using [[Imposition]] (arranging)</td></tr><tr> <td>printpaperwidth</td> <td>{{cmd|printpaperwidth}}</td> <td>differs from paperwidth when using [[Imposition]] (arranging)</td></tr><tr> <td>topspace</td> <td>{{cmd|topspace}}</td> <td>above header: from top rim of paper to to top rim of header</td></tr><tr> <td>backspace</td> <td>{{cmd|backspace}}</td> <td>from left rim of paper to left rim of main text area</td></tr><tr> <td>height</td> <td>{{cmd|makeupheight}}</td> <td>sum of heights of text area, header and footer (plus distances)</td></tr><tr> <td>width</td> <td>{{cmd|makeupwidth}}</td> <td>width of the main text area. {{cmd|makeupwidth}} is normally same as {{cmd|textwidth}}, but it can be different, for example in columns</td></tr><tr> <td>top</td> <td>{{cmd|topheight}}</td> <td>height of the top area</td></tr><tr> <td>topdistance</td> <td>{{cmd|topdistance}}</td> <td>between top and header</td></tr><tr> <td>header</td> <td>{{cmd|headerheight}}</td> <td>height of header area</td></tr><tr> <td>headerdistance</td> <td>{{cmd|headerdistance}}</td> <td>between header and text</td></tr><tr> <td>textheight</td> <td>{{cmd|textheight}}</td> <td>height of text area</td></tr><tr> <td>footerdistance</td> <td>{{cmd|footerdistance}}</td> <td>between text and footer</td></tr><tr> <td>footer</td> <td>{{cmd|footerheight}}</td> <td>height of footer area</td></tr><tr> <td>bottomdistance</td> <td>{{cmd|bottomdistance}}</td> <td>between footer and bottom</td></tr><tr> <td>bottom</td> <td>{{cmd|bottomheight}}</td> <td>space below footer (but isn't calculated automatically)</td></tr><tr> <td>bottomspace</td> <td>{{cmd|bottomspace}}</td> <td>space from bottom footer to bottom rim of paper</td></tr><tr> <td>cutspace</td> <td>{{cmd|cutspace}}</td> <td>from right rim of paper to right rim of main text area</td></tr><tr> <td>leftedge</td> <td>{{cmd|leftedgewidth}}</td> <td>from left rim of paper to left rim of left margin</td></tr><tr> <td>leftedgedistance</td> <td>{{cmd|leftedgedistance}}</td> <td>between leftegde and left margin</td></tr><tr> <td>leftmargin</td> <td>{{cmd|leftmarginwidth}}</td> <td>width of left margin (marginals space)</td></tr><tr> <td>leftmargindistance</td> <td>{{cmd|leftmargindistance}}</td> <td>between left margin and text</td></tr><tr> <td>textwidth</td> <td>{{cmd|textwidth}}</td> <td>width of text area. when columns are used, the value of {{cmd|textwidth}} can differ from {{cmd|makeupwidth}}</td></tr><tr> <td>rightmargindistance</td> <td>{{cmd|rightmargindistance}}</td> <td>between text area and right margin</td></tr><tr> <td>rightmargin</td> <td>{{cmd|rightmarginwidth}}</td> <td>width of right margin (marginals area)</td></tr><tr> <td>rightedgedistance</td> <td>{{cmd|rightedgedistance}}</td> <td>between right margin and right edge</td></tr><tr> <td>rightedge</td> <td>{{cmd|rightedgewidth}}</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>See the dedicated page [[PaperSetup|Paper setup]], it includes details on:*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>{{cmd|setuppapersize}}, to set the page size and paper size* otherwise:<code> makeupwidth=width if cutspace == 0pt then cutspace = paperwidth-makeupwidth-backspace else % A kind of inconsistent specification{{cmd|definepapersize}}, to define a new paper size, but used % in for instance s-pre-19* the [[PaperSetup#Predefined_Paper_Sizes|many paper sizes already defined by name]].tex; the cutspace is % used only for determining some kind of right % margin; don't use this Their actual dimensions in doublesided mode pass end</code>(from <tt>mm are given by [[Paper sizes]] page-lay.mkiv</tt>, 2009-11* [[PaperSetup#Changing paper setup mid-17 document|Changing paper setup mid- 23:59).document]]* [[PaperSetup#Setting print size|Setting print size]]== Setup / Paper 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")== Let's gather examples here ==
If you need a special paper size; Cover pages: [[Cover Pages]] (2013, have a look at our list of 2019); Other: [[PaperSizes|paper sizesExample photo page layout]] (ConTeXt's, standardized and traditional2010), and use {{cmd|definepapersize}} if it's not already defined.
You can make all the geometry information visible with {{cmd|showlayout}} and the = [[Visual Debugging|related commandsImposition]].=
See {{cmd|setuplayout}} 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 {{cmd|setuppapersize}} in the manualreduce paper waste ([https://en.wikipedia.org/wiki/Imposition wikipedia]).
=== How We built a dedicated page about '''[[Imposition]]''', because making booklets, to setup your layout ===arrange pages in proper order for printing it's a topic in itself. This is where you will use {{cmd|setuppaper}} and {{cmd|setuparranging}}.
Define the placement and size of your type area by first defining '''backspace''', '''topspace''', '''width''' and '''height'''.The height includes header and footer.= Multiple layouts =
The width If you need to use different layouts in some parts of the margins has ''no'' influence on document, you can set up a global layout, and then define additional named layouts for the location of deviating parts. You only need to specify the dimensions that differ: unspecified dimensions will be inherited from the type area!global layout.
Details are 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=[http://context.aanhet.net/svn/contextman/context-reference/en/co-pagedesign.pdf page design chapterreset] of the new reference manual}}.
== Keep ==<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 \testpagesetuplayout[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\definelayout[wide][... These settings go into ] % layout of the setup area of your document.first page
<texcode>\setuplayout[key=value,key=value,...] %global layout\definelayout[wide][key=value,key=value,...] %different switch to layout called 'wide'\definelayout[short]setuplayout[key=value,key=value,...reset]%different switch back to the global layout called 'short'
</texcode>
That takes care of the global layout. When To specify in advance that you want to switch to a different change layouts starting from page 4 (e.g.), use {{cmd|definelayout|2=[4][...]}}. Resetting the layoutmust be done explicitly; else, you just call it up in the appropriate place in new layout will be used until the end of the document:.
<texcode>
% different layout for first two pages\setuplayoutdefinelayout[1][wide] % switches to layout called 'wide'\definelayout[3][reset]
</texcode>
'''NoteFor the page numbers you can use absolute numbers (as above), relative numbers (like +1, -2) or the keywords odd, even, first and last.''' Use reset to revert back to the global layout:
<texcode>
\setuplayout[reset% default layout (right page)...]\definelayout[even] [ % reverts to the global different layouton left pages...]
</texcode>
''This text is based on [http://archive.contextgarden.net/message/20080926.111520.9db86904.en.html If you define additional layouts in a thread on the mailing list]doublepage (duplex) setup, answers and examples are given there by Hans and Wolfgang.'' Defining layouts with a number as their name allows remember to specify the layout of think mirrored: leftmargin defines the page with that specific number. For exampleright margin, to use a different layout for backspace is the first page, you can use this code: <texcode>\setuplayout[key=value,key=value,...] % global layout\definelayout[1][key=value,key=value,...] % layout of distance from the first page\definelayout[2][reset] % revert spine to the global layout starting from right edge of the second page</texcode>text area etc.
Do not forget to reset .<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 layout on the second change ({{cmd|setuplayout}}) inside a page. Note that keys that are is not set proper working in the layout of the first mkiv duplex mode.For more details and actual state see mailing list and [http://wiki.contextgarden.net/User_talk:Zenlima Bug Layout change inside page will be conveniently inherited from the global layoutwhile duplexmode].</div>
A typical example of the above is the following:<texcode>\setuplayout[% default layout for all the pages backspace=1cm, width=middle]Maybe using {{cmd|startlayout}}…{{cmd|stoplayout}} fixes that issue.
\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). =Further reading = 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.
{{todo* '''[[Presentations]]''': specifics requirements, specific pages (widgets, multimedia, ...)* [[Documentation|Unfortunately itManuals 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 not 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 easy you can enable and disable (at least in a few viewers). This has nothing to define 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 layout[[Formatting Objects|XML/FO]] perspective, with some descriptive pictures, see At [http://getfo.sourceforge.net/context_xml/index. We need more documentation about which parameters define which length, what influences what else etchtml Paul Tremblay's] [[XML]] ConTeXt site.}}
{{Getting started navbox}}
[[Category:ConTeXt-IssuesLayout]]
139

edits

Navigation menu