Difference between revisions of "Combinations"
Yatskovsky (talk | contribs) m (removed dublicate link) |
|||
(15 intermediate revisions by 8 users not shown) | |||
Line 1: | Line 1: | ||
− | + | Combinations are ConTeXt's way to align several pictures (preferrably at same size): | |
− | Combinations | + | == Combinations == |
<texcode> | <texcode> | ||
− | \startcombination[x*y] | + | \startcombination[x*y] %% x=columns, y=rows |
{something}{caption} ... | {something}{caption} ... | ||
... | ... | ||
\stopcombination | \stopcombination | ||
</texcode> | </texcode> | ||
+ | |||
+ | or using the newer interface: | ||
+ | |||
+ | <texcode> | ||
+ | \startcombination [nx=3, ny=2] %% 3 columns, 2 rows | ||
+ | \startcontent something \stopcontent | ||
+ | \startcaption caption \stopcaption | ||
+ | \startcontent something \stopcontent | ||
+ | \startcaption caption \stopcaption | ||
+ | \startcontent something \stopcontent | ||
+ | \startcaption caption \stopcaption | ||
+ | \startcontent something \stopcontent | ||
+ | \startcaption caption \stopcaption | ||
+ | \startcontent something \stopcontent | ||
+ | \startcaption caption \stopcaption | ||
+ | \startcontent something \stopcontent | ||
+ | \startcaption caption \stopcaption | ||
+ | \stopcombination | ||
+ | |||
+ | </texcode> | ||
+ | |||
means: | means: | ||
You define, how much figures in columns * rows you'd like to align. | You define, how much figures in columns * rows you'd like to align. | ||
− | You must provide one "figure something" (e.g. an | + | You must provide one "figure something" (e.g. an {{cmd|externalfigure}}) and a caption for every "cell". |
+ | |||
+ | The sample, from the manual, shows how to define a caption for the whole group and use it as float (see [[Floating Objects]]): | ||
+ | |||
+ | <context source=yes> | ||
+ | \useMPlibrary [dum] %% sample images | ||
+ | |||
+ | \startplacefigure [title=An example of a combination] | ||
+ | \startcombination [nx=3, ny=2] | ||
+ | \startcontent \externalfigure [dummy] \stopcontent | ||
+ | \startcaption a \stopcaption | ||
+ | \startcontent \externalfigure [dummy] \stopcontent | ||
+ | \startcaption b \stopcaption | ||
+ | \startcontent \externalfigure [dummy] \stopcontent | ||
+ | \startcaption c \stopcaption | ||
+ | \startcontent \externalfigure [dummy] \stopcontent | ||
+ | \startcaption d \stopcaption | ||
+ | \startcontent \externalfigure [dummy] \stopcontent | ||
+ | \startcaption e \stopcaption | ||
+ | \startcontent \externalfigure [dummy] \stopcontent | ||
+ | \startcaption f \stopcaption | ||
+ | \stopcombination | ||
+ | \stopplacefigure | ||
+ | </context> | ||
+ | |||
+ | === Image Width === | ||
+ | |||
+ | The image widths aren’t calculated automatically: | ||
+ | |||
+ | <context source="yes"> | ||
+ | \startcombination[3*1] | ||
+ | {\externalfigure[cow]}{cow} | ||
+ | {\externalfigure[mill]}{mill} | ||
+ | {\externalfigure[hacker]}{hacker} | ||
+ | \stopcombination | ||
+ | </context> | ||
+ | |||
+ | You could define them on your own: | ||
− | |||
<texcode> | <texcode> | ||
− | + | \startcombination[3*1] | |
− | + | {\externalfigure[cow] [width=.3\textwidth]}{cow} | |
− | + | {\externalfigure[mill] [width=.3\textwidth]}{mill} | |
− | + | {\externalfigure[hacker][width=.3\textwidth]}{hacker} | |
− | |||
− | \startcombination[3* | ||
− | {\externalfigure[ | ||
− | {\externalfigure[ | ||
− | {\externalfigure[ | ||
\stopcombination | \stopcombination | ||
− | |||
</texcode> | </texcode> | ||
− | + | ||
+ | But that’s ugly and tedious. Hans did it for you in {{src|grph-inc.mkxl}}: | ||
+ | |||
+ | <texcode> | ||
+ | \definemeasure[combination][ | ||
+ | (\textwidth | ||
+ | -\effectiveleftskip | ||
+ | -\effectiverightskip | ||
+ | -\numexpr\combinationparameter\nx-\plusone\relax\dimexpr\combinationparameter\distance\relax | ||
+ | )/\combinationparameter] | ||
+ | </texcode> | ||
+ | |||
+ | So you can say: | ||
+ | |||
+ | <texcode> | ||
+ | \startcombination[3*1] | ||
+ | {\externalfigure[cow] [width=\measure{combination}]}{cow} | ||
+ | {\externalfigure[mill] [width=\measure{combination}]}{mill} | ||
+ | {\externalfigure[hacker][width=\measure{combination}]}{hacker} | ||
+ | \stopcombination | ||
+ | </texcode> | ||
+ | |||
+ | But that’s still tedious. | ||
+ | |||
+ | With the power of {{cmd|defineexternalfigure}}: | ||
+ | |||
+ | <texcode> | ||
+ | \defineexternalfigure[combination][width=\measure{combination}] | ||
+ | </texcode> | ||
+ | (That’s predefined, no need to copy!) | ||
+ | |||
+ | <context source="yes"> | ||
+ | \startcombination[3*1] | ||
+ | {\externalfigure[cow] [combination]}{cow} | ||
+ | {\externalfigure[mill] [combination]}{mill} | ||
+ | {\externalfigure[hacker][combination]}{hacker} | ||
+ | \stopcombination | ||
+ | </context> | ||
+ | |||
+ | Beautiful. ;) | ||
+ | |||
+ | == Floatcombinations == | ||
+ | |||
+ | When combination contain floats, the command {{cmd|startfloatcombination}} is used. Here an example using float combinations as well as subfloatnumbering that creates subfigures sharing a mutual figure prefix and an individual subfigure designator (e.g. figure 1a), figure 1b, etc.). | ||
+ | |||
+ | <context source=yes> | ||
+ | \useMPlibrary [dum] | ||
+ | |||
+ | \startplacefigure [location=none] | ||
+ | \startfloatcombination [nx=2] | ||
+ | \startplacefigure [title=Left, reference=ref:left, group=one, groupsuffix=a] | ||
+ | \externalfigure | ||
+ | \stopplacefigure | ||
+ | \startplacefigure [title=Right, reference=ref:right, group=one, groupsuffix=b] | ||
+ | \externalfigure | ||
+ | \stopplacefigure | ||
+ | \stopfloatcombination | ||
+ | \stopplacefigure | ||
+ | |||
+ | See \in{image}[ref:right] (right) and \in{image}[ref:left] (left). | ||
+ | </context> | ||
== Setup == | == Setup == | ||
− | There is < | + | There is the {{cmd|setupcombinations}} command. |
+ | |||
+ | == Referencing == | ||
+ | |||
+ | To reference a subfigure you can provide the subfigure's caption as a second parameter to the {{cmd|in}} command. | ||
+ | |||
+ | To reference the subfigure with the caption d you would write: | ||
+ | |||
+ | <texcode> | ||
+ | \in{figure}{d}[fig:combinations] | ||
+ | </texcode> | ||
+ | |||
+ | This would produce something like 'figure 2.4d'. The content of the second parameter simply gets appended to the end of the figure's reference-number, thus the example above would still work even if the caption would be 'd) An awesome subfigure'. | ||
+ | |||
+ | == See also == | ||
+ | [[Floating_Objects#Subfloats]], {{cmd|startfloatcombination}}, {{cmd|startsubfloatnumbering}} | ||
[[Category:Graphics]] | [[Category:Graphics]] | ||
− |
Latest revision as of 23:20, 10 April 2023
Combinations are ConTeXt's way to align several pictures (preferrably at same size):
Combinations
\startcombination[x*y] %% x=columns, y=rows {something}{caption} ... ... \stopcombination
or using the newer interface:
\startcombination [nx=3, ny=2] %% 3 columns, 2 rows \startcontent something \stopcontent \startcaption caption \stopcaption \startcontent something \stopcontent \startcaption caption \stopcaption \startcontent something \stopcontent \startcaption caption \stopcaption \startcontent something \stopcontent \startcaption caption \stopcaption \startcontent something \stopcontent \startcaption caption \stopcaption \startcontent something \stopcontent \startcaption caption \stopcaption \stopcombination
means:
You define, how much figures in columns * rows you'd like to align.
You must provide one "figure something" (e.g. an \externalfigure) and a caption for every "cell".
The sample, from the manual, shows how to define a caption for the whole group and use it as float (see Floating Objects):
\useMPlibrary [dum] %% sample images \startplacefigure [title=An example of a combination] \startcombination [nx=3, ny=2] \startcontent \externalfigure [dummy] \stopcontent \startcaption a \stopcaption \startcontent \externalfigure [dummy] \stopcontent \startcaption b \stopcaption \startcontent \externalfigure [dummy] \stopcontent \startcaption c \stopcaption \startcontent \externalfigure [dummy] \stopcontent \startcaption d \stopcaption \startcontent \externalfigure [dummy] \stopcontent \startcaption e \stopcaption \startcontent \externalfigure [dummy] \stopcontent \startcaption f \stopcaption \stopcombination \stopplacefigure
Image Width
The image widths aren’t calculated automatically:
\startcombination[3*1] {\externalfigure[cow]}{cow} {\externalfigure[mill]}{mill} {\externalfigure[hacker]}{hacker} \stopcombination
You could define them on your own:
\startcombination[3*1] {\externalfigure[cow] [width=.3\textwidth]}{cow} {\externalfigure[mill] [width=.3\textwidth]}{mill} {\externalfigure[hacker][width=.3\textwidth]}{hacker} \stopcombination
But that’s ugly and tedious. Hans did it for you in grph-inc.mkxl:
\definemeasure[combination][ (\textwidth -\effectiveleftskip -\effectiverightskip -\numexpr\combinationparameter\nx-\plusone\relax\dimexpr\combinationparameter\distance\relax )/\combinationparameter]
So you can say:
\startcombination[3*1] {\externalfigure[cow] [width=\measure{combination}]}{cow} {\externalfigure[mill] [width=\measure{combination}]}{mill} {\externalfigure[hacker][width=\measure{combination}]}{hacker} \stopcombination
But that’s still tedious.
With the power of \defineexternalfigure:
\defineexternalfigure[combination][width=\measure{combination}]
(That’s predefined, no need to copy!)
\startcombination[3*1] {\externalfigure[cow] [combination]}{cow} {\externalfigure[mill] [combination]}{mill} {\externalfigure[hacker][combination]}{hacker} \stopcombination
Beautiful. ;)
Floatcombinations
When combination contain floats, the command \startfloatcombination is used. Here an example using float combinations as well as subfloatnumbering that creates subfigures sharing a mutual figure prefix and an individual subfigure designator (e.g. figure 1a), figure 1b, etc.).
\useMPlibrary [dum] \startplacefigure [location=none] \startfloatcombination [nx=2] \startplacefigure [title=Left, reference=ref:left, group=one, groupsuffix=a] \externalfigure \stopplacefigure \startplacefigure [title=Right, reference=ref:right, group=one, groupsuffix=b] \externalfigure \stopplacefigure \stopfloatcombination \stopplacefigure See \in{image}[ref:right] (right) and \in{image}[ref:left] (left).
Setup
There is the \setupcombinations command.
Referencing
To reference a subfigure you can provide the subfigure's caption as a second parameter to the \in command.
To reference the subfigure with the caption d you would write:
\in{figure}{d}[fig:combinations]
This would produce something like 'figure 2.4d'. The content of the second parameter simply gets appended to the end of the figure's reference-number, thus the example above would still work even if the caption would be 'd) An awesome subfigure'.
See also
Floating_Objects#Subfloats, \startfloatcombination, \startsubfloatnumbering