Changes

Jump to navigation Jump to search
2,332 bytes added ,  18:48, 8 June 2020
no edit summary
will cause ConTeXt to break the page.
Ordinarily this works as expected, unless, however, the heading
immediately follows a previous section heading with no text in between.
The rationale behind this is that consecutive headings are conceived of
collectively as one single structural element.
as in the Plain format) and the more familiar {{cmd|dontleavehmode}}
({{src|syst-aux.mkiv}}).
Just use the chosen macro immediately before the <code>\framed</code> macro and
everything should be fine:
(If you desparately need separate captions please send a feature
request to one of the
[[ConTeXt_Mailing_Lists#Mailing ListsMailing_Lists]]).
<context source="yes" mode="mkii">
\stoptext
</context>
 
=== The “paragraph in a group” problem ===
 
Another common issue with sidefloats is starting a paragraph in a group.
 
<context source="yes" mode="mkiv">
\placefigure[right,none]{}{\externalfigure[cow][width=0.25\textwidth]}
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
 
{\bf Oeps} \samplefile{lorem}
</context>
As you can see the paragraph starting with “Oeps” just overflows into the picture.
That is a well-known problem and there are posts about it on the mailing
list every once in a while. The sidefigure mechanism uses <code>\parshape</code> to
make the paragraph flow around the figure. The <code>\parshape</code> primitive only
applies to a single paragraph, so ConTeXt communicates the current
<code>\parshape</code> settings to the next paragraph using <code>\everypar</code>. However, when
a new paragraph starts in a group, i.e.
<texcode>
{\bf Oeps} ...
</texcode>
TeX inserts the <code>\everypar</code> tokens inside that group because only the
first letter starts the paragraph. That is to say is effectively looks
like this
<texcode>
% \everypar inserted inside the group
% ~~~v
{\bf \the\everypar Opes} ...
% ~~~~~~~~~~~~~~~~~~~~~^
% Setting of \everypar are discarded again when leaving the group and \parshape is lost.
</texcode>
You have to explicitly start a new paragraph before opening a group.
The easiest way to do this is
<texcode>
\dontleavehmode{\bf Oeps} ...
</texcode>
Now the <code>\everypar</code> tokens are inserted directly after {{cmd|dontleavehmode}}
outside the group and the problem goes away.
= Syntax =
== Assignments ==
 
Spaces before commas or before the closing <code>]</code> are '''''not''''' ignored in ConTeXt. That is a common pitfall and leads to errors that can be confusing for beginner, especially those coming from LaTeX, where this is the default behaviour. Formatting your keys like this might look nice but leads to spurious spaces:
<context source="yes" mode="mkiv">
\getparameters[test]
[ foo=bar
, hello=world
]
“\testfoo” “\testhello”
</context>
Instead it is recommended to adhere to the style that is used in the ConTeXt source to avoid problems with trailing spaces:
<context source="yes" mode="mkiv">
\getparameters[test]
[foo=bar,
hello=world]
“\testfoo” “\testhello”
</context>
In the most common form of key-value type arguments, ConTeXt will
== Multipass ==
In some circumstances, portions of code are evaluated two or more
important.
=== Trialtypesetting ===
Often the size of elements must be calculated prior to determining the
=== Tables ===
In addition to trial typesetting Context also knows a ''table'' state:
</context>
=== Metapost ===
As with TeX, Metapost sometimes requires multiple passes,
pass being omitted.
In [[MetafunMetaFun - MetaPost in ConTeXt]], the default Metapost format in Context, the booleans
<code>mfun_first_run</code> and <code>mfun_trial_run</code> allow
detecting the individual stages:
\stoptext
</texcode>
 
[[Category:Basics]]
[[Category:Tools]]

Navigation menu