pub enum Event<'a> {
Content(Content<'a>),
Begin(Grouping),
End,
Visual(Visual),
Script {
ty: ScriptType,
position: ScriptPosition,
},
Space {
width: Option<Dimension>,
height: Option<Dimension>,
},
StateChange(StateChange),
EnvironmentFlow(EnvironmentFlow),
}
Expand description
All events that can be produced by the parser.
§For Renderer Implementors
When an Event
is referreing to an “element”, it is referring to the next logical unit of
content in the stream. This can be a single Event::Content
element, a group marked
by Event::Begin
and Event::End
, an Event::Visual
or an Event::Script
element,
an Event::Space
, or an Event::StateChange
.
[Event::Alignment
]s, and [Event::NewLine
]s are not considered elements, and must never
occur when an element is expected.
§Examples
The following examples all constitute a single element:
Input: \text{Hello, world!}
[Event::Content(Content::Text("Hello, world!"))];
Input: x^2_{\text{max}}
[
Event::Script {
ty: ScriptType::SubSuperscript,
position: ScriptPosition::Right,
},
Event::Begin(Grouping::Normal),
Event::Content(Content::Text("max")),
Event::End,
Event::Content(Content::Ordinary {
content: 'x',
stretchy: false,
}),
];
Variants§
Content(Content<'a>)
The event is a Content
element.
Begin(Grouping)
The events following this one constitute a “group” which counts as a single element
(i.e., a set of elements within {}
in LaTeX
), until the Event::End
event
is reached.
End
Marks the end of a group initiated with Event::Begin
.
Visual(Visual)
The n
elements following this one constitute the content of the Visual
element,
where n
is specified in the documentation of for each of the Visual
variants.
Script
The n
elements following this one constitute a base and its script(s), where n
is
specified in the documentation for each of the ScriptType
variants.
Space
This event specifes a custom spacing. This is produced by commands such as
\kern
, \hspace
, etc.
If any of the components are None
, then the spacing is set to 0 for that component.
Fields
StateChange(StateChange)
This event specifies a state change in the renderer.
This state change only applies to the current group nesting and deeper groups.
EnvironmentFlow(EnvironmentFlow)
This is a flow event that is emitted in mathematical environments such as align
,
cases
, array
, etc.