
The primary advantage of encapsulating content components within blocks is the ability to use the \cs{MakeBlockIndex} command anywhere in the document body to rapidly generate an index of all blocks of the same type in a specific group. Furthermore, block indices are equipped with cross-reference anchors, allowing you to \blclink{Add Block Index Link-U}(add block index links) elsewhere in the document to help readers navigate directly to the index.

Thanks to the hierarchical tree structure of groups, an index generated for a specific group will automatically encompass the block entries from all its descendant subgroups. Cross-reference anchors for these subgroup indices are also generated simultaneously.

\UserCommand{Generate Block Index}<\cs{MakeBlockIndex}>{
    \cs{MakeBlockIndex}
    \{\meta{scope path}\}
    [\meta{block type list}]
    <\meta{custom parameter}>
}[
    - \meta{scope path} : Specifies the group path for the blocks to be included in the index.
][
    - \meta{block type list} : Specifies the list of regular block types to be included in the index, separated by \texttt{,} . If this argument is empty, the index will include all block types by default.
    - \meta{custom parameter} : Used in \seclink{Preamble/StyleConfiguration} to achieve various complex typesetting logic.
]

The scope path serves as the unique identifier for cross-referencing a group index. So you \textcolor{red}{cannot generate two block indices with overlapping scopes}, even if they specify different block type lists. If generating overlapping block indices is strictly necessary, you can use the following command to create a temporary block index that does not generate anchors:

\UserCommand{Generate Temporary Block Index}<\cs{MakeBlockIndex*}>{
    \cs{MakeBlockIndex*}
    \{\meta{scope path}\}
    [\meta{block type list}]
    <\meta{custom parameter}>
}

\textcolor{red}{Please do not use block index generation commands within the arguments of blocks or other commands}.

\newpage
