///|
fn subarray_columns(arg : ParseNode) -> Array[ArrayColumn] raise ParseFailure {
let columns = array_columns(arg, "subarray")
guard columns.length() <= 1 else {
raise InvalidArgument(
message="{subarray} can contain only one column",
loc=None,
)
}
match columns {
[] => columns
[AlignColumn(alignment="l" | "c", ..)] => columns
_ =>
raise InvalidArgument(
message="Unknown column alignment in subarray",
loc=None,
)
}
}
///|
fn subarray_environment_handler(
context : EnvironmentContext,
args : Array[ParseNode],
_ : Array[ParseNode?],
) -> ParseNode raise ParseFailure {
(context.parse_array)({
columns: Some(
subarray_columns(require_function_arg(args, 0, "\\begin{subarray}")),
),
array_stretch: 0.5,
hskip_before_and_after: false,
cell_style: ScriptStyle,
max_columns: Some(1),
single_row: false,
auto_tag: None,
leqno: false,
add_jot: false,
column_separation_type: Some(SmallSeparation),
})
}