Newer
Older
% \begin{macro}{\__ctxdoc_module_slash:w}
% \begin{macrocode}
\cs_gset_protected:Npn \__ctxdoc_module_slash:w #1 > #2 \q_stop
{
\__ctxdoc_output_module:nn
{ \@@_split_m:n {#1} }
{ \__ctxdoc_module_pop:n { \@@_print_module:n { / } } }
\__ctxdoc_output_line:n {#2}
\__ctxdoc_slash_format:
}
% \end{macrocode}
% \end{macro}
%
9019
9020
9021
9022
9023
9024
9025
9026
9027
9028
9029
9030
9031
9032
9033
9034
9035
9036
9037
9038
9039
9040
9041
9042
9043
9044
9045
9046
9047
9048
9049
9050
9051
9052
9053
9054
9055
9056
9057
9058
9059
9060
9061
9062
9063
% \begin{macro}{\__ctxdoc_module_pm:w}
% \begin{macrocode}
\cs_gset_protected:Npn \__ctxdoc_module_pm:w #1 > #2 \q_stop
{
\tex_noindent:D
\hbox_overlap_left:n
{
\__ctxdoc_output_module:nn
{ \@@_split_pm:n {#1} }
{ \@@_print_module:n { } }
\skip_horizontal:n { \leftskip + \smallskipamount }
}
\group_begin:
\__ctxdoc_pm_format:
\__ctxdoc_output_line:n {#2}
\group_end:
}
\group_end:
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\grd,\sgrd,\pgrd}
% 在手册中生成带颜色的 guard 标记。
% \begin{macrocode}
\NewDocumentCommand \grd { m }
{ \__ctxdoc_module_angle:n { \color { njuviolet } #1 } }
\NewDocumentCommand \sgrd { m }
{ \__ctxdoc_module_angle:n { \color { star@guard } * \color{ c@guard } #1 } }
\NewDocumentCommand \pgrd { m }
{ \__ctxdoc_module_angle:n { \color { #1 @guard } def- #1 } }
% \end{macrocode}
% \end{macro}
%
% \subsubsection{语法高亮}
%
% \begin{macro}{\@@_output_line:}
% \cls{ctxdoc} 将 \file{.dtx} 文件中读取的代码行存储在
% \cs{l__ctxdoc_verbatim_line_tl},我们使用 \pkg{codehigh} 提供的内部函数
% 将其转化为带有语法高亮的格式并输出。默认读取的代码行尾带有 |^^M|,
% 直接输入高亮函数会导致代码快尾部有额外空行,需要手动删去。
% \begin{macrocode}
\cs_generate_variant:Nn \tl_remove_once:Nn { NV }
\cs_set_protected_nopar:Npn \@@_output_line:N #1
{
\tex_noindent:D
\__codehigh_parse_code:nN { latex / latex3 } #1
\tex_par:D
}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\__ctxdoc_output_line:}
% 在 \XeTeX{} 引擎下,\pkg{codehigh} 调用的 \pkg{l3regex} 模块有严重的性能问题。
% 我们仅仅在需要时启用高亮。
% \begin{macrocode}
\bool_if:NT \g_@@_codehigh_bool
{ \@@_output_line:N \l__ctxdoc_verbatim_line_tl }
}
% \end{macrocode}
% \end{macro}
% \begin{macrocode}
%</doc-cls>
% \end{macrocode}