Command/definefirstline
\definefirstline
Syntax (autogenerated)
\definefirstline[...][...][...=...,...] | |
[...] | name |
[...] | name |
...=...,... | inherits from \setupfirstline |
Syntax
\definefirstline[..][] | |
\definefirstline[...][...][...=...] | |
[...] | name of firstline style |
[...] | name of firstline style to inherit from |
alternative | line word |
n | integer : number of words to affect |
style | Style Alternative |
color | IDENTIFIER: color name |
Description
Define a style to apply only to the first line of a paragraph.
Once defined, the style can be applied by invoking
\setfirstline on a paragraph.
One of two methods can be requested by setting the keyword
alternative
:
- line applies the style to the entire line,
- word applies the style only to the first
n
words of the first line.
NB: The style substitution takes place on node level, hence small capitals require a font which implements them as a feature, not as a separate file (e. g. as of 2013 Latin Modern won’t do).
Examples
Bold and Small Caps
Typeset the first line once in bold, and then in small caps:
\setupbodyfont [heros] %% important: smallcaps capable font! \definefirstline [italicfirstline] [ alternative=line, style=italic, ] \definefirstline [smallcapsfirstline] [ alternative=line, color=darkred, style=smallcaps, ] \starttext \setfirstline[italicfirstline] \input knuth \par \setfirstline[smallcapsfirstline] \input knuth \par \stoptext
To affect only the first three or six words change to the alternative
word and set the parameter n
to the desired value:
\definefirstline [threegreenwords] [ alternative=word, color=green, n=3, ] \definefirstline [sixbluewords] [ alternative=word, color=blue, n=6, ] \starttext \setfirstline[threegreenwords] \input ward \par \setfirstline[sixbluewords] \input ward \par \stoptext
Changing Case
Technically, \WORD
is not a style, so to configure words in uppercase a different approach is necessary. The style can be defined in terms of a Lua handler, such as:
\definealternativestyle[UpperCase][{\bf\uppercasing}][]
Where the handler code resembles:
\startluacode fonts.handlers.otf.addfeature { name = "uppercasing", type = "substitution", prepend = true, data = characters.uccodes } fonts.handlers.otf.addfeature { name = "lowercasing", type = "substitution", prepend = true, data = characters.lccodes } \stopluacode \definefontfeature[lowercasing][lowercasing=yes] \definefontfeature[uppercasing][uppercasing=yes] \unexpanded\def\uppercasing{\addff{uppercasing}} \unexpanded\def\lowercasing{\addff{lowercasing}} \definealternativestyle[UpperCase][{\bf\uppercasing}][] \definefirstline [UpperCaseWords] [ alternative=word, style=UpperCase, n=1, ] \starttext \setfirstline[UpperCaseWords] \input ward \stoptext
See also
- \setfirstline
- Style Alternatives
- Source code: typo-fln.mkiv (with examples) typo-fln.lua.
Help from ConTeXt-Mailinglist/Forum
All issues with: