<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% \iffalse meta-comment
%
% Copyright (C) 2017--2023 by Xiangdong Zeng &lt;xdzeng96@gmail.com&gt;
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any later
% version. The latest version of this license is in:
%
%   http://www.latex-project.org/lppl.txt
%
% and version 1.3 or later is part of all distributions of
% LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
%
% The Current Maintainer of this work is Xiangdong Zeng.
%
% \fi
%
% \EnableImplementation
%
% \begin{implementation}
%
%^^A ä»£ç&nbsp;éƒ¨åˆ†çš„é¡µè¾¹è·
% \newgeometry{
%   left      = 2.25 in,
%   right     = 1.00 in,
%   top       = 1.25 in,
%   bottom    = 1.00 in,
%   marginpar = 2.25 in
% }
%
% \subsection{æ¨¡æ¿æ–‡æ¡£æ&nbsp;·å¼ \cls{fdudoc}}
%
% \changes{v0.4}{2017/07/29}{åœ¨ \cls{ctxdoc} çš„åŸºç¡€ä¸Šå®Œæˆ \cls{fdudoc} æ–‡æ¡£ç±»ï¼Œ
%   ç”¨äºŽæ¨¡æ¿æ‰‹å†Œçš„ç¼–å†™ã€‚}
%
% ç¼–å†™ \LaTeX{} å®åŒ…æ–‡æ¡£ï¼Œä¼&nbsp;ç»Ÿä¸Šä¼šé‡‡ç”¨ \pkg{doc} å®åŒ…æˆ–
% \cls{ltxdoc} æ–‡æ¡£ç±»ã€‚è€Œå¯¹äºŽä½¿ç”¨ \LaTeX3 å¼€å‘çš„å®åŒ…ï¼Œ\cls{l3doc}
% æ–‡æ¡£ç±»å°†æ˜¯ä¸€ä¸ªæ›´å¥½çš„é€‰æ‹©ã€‚\CTeX{} å®é›†æ‰€é™„å¸¦çš„
% \href{https://github.com/CTeX-org/ctex-kit/blob/main/tool/ctxdoc.cls}^^A
% {\cls{ctxdoc}} æ–‡æ¡£ç±»ï¼Œåˆ™åœ¨ \cls{l3doc} çš„åŸºç¡€ä¸Šè¿›è¡Œäº†ä¸€äº›ä¿®æ­£ï¼Œ
% ç‰¹åˆ«æ˜¯é‡æ–°å®žçŽ°äº† \env{macrocode} çŽ¯å¢ƒï¼Œä½¿ä¹‹èƒ½æ›´å¥½åœ°åº”ç”¨äºŽä¸­æ–‡
% æ–‡æ¡£ã€‚\cls{ctxdoc} çš„ä¸»è¦åŠŸèƒ½å¦‚ä¸‹ï¼š
%
% \begin{itemize}
%   \item æ³¨é‡Šä½¿ç”¨ç°è‰²ã€å€¾æ–œå­—ä½“ï¼Œä»¥ä¾¿ä¸Žä¸€èˆ¬ä»£ç&nbsp;åŒºåˆ†ï¼›
%   \item æ¨¡å—ã€åå­—ç©ºé—´ç­‰ä½¿ç”¨å½©è‰²æ&nbsp;‡æ³¨ï¼Œå¹¶æ·»åŠ&nbsp;è¶…é“¾æŽ¥ï¼›
%   \item è‡ªåŠ¨æ›´æ–°è¡Œå·å®½åº¦ï¼›
%   \item è¾¹æ³¨ä¸­çš„é•¿å‘½ä»¤ä½¿ç”¨ç›’å­è¿›è¡Œç¼©æ”¾ï¼Œé˜²æ­¢æº¢å‡ºï¼›
%   \item ä¿®è®¢è®°å½•ä¸­å°†æ˜¾ç¤ºä¿®æ”¹æ—¥æœŸï¼›
%   \item æ·»åŠ&nbsp;ä¸­æ–‡æ”¯æŒã€‚
% \end{itemize}
%
% ç„¶è€Œï¼Œ\cls{ctxdoc} ä¸»è¦ä¾›å†…éƒ¨ä½¿ç”¨ï¼Œä»£ç&nbsp;è¾ƒä¸ºæ··ä¹±å’Œéšæ„ã€‚
% æœ¬æ¨¡æ¿çš„æ–‡æ¡£æ&nbsp;·å¼ï¼ˆ\cls{fdudoc}ï¼‰ä¸ºé€‚åº”å…·ä½“éœ€æ±‚ï¼Œå¯¹å…¶ä»£ç&nbsp;
% è¿›è¡Œäº†æ•´ç†ï¼Œæ·»åŠ&nbsp;äº†ç›¸å…³æ³¨é‡Šï¼Œå¹¶åšäº†ä¸€äº›æ”¹åŠ¨ï¼š
%
% \begin{itemize}
%   \item å…è®¸æ¨¡å—æ&nbsp;‡è®° |&lt;*|\meta{module}|&gt;| å’Œ |&lt;/|\meta{module}|&gt;|
%     å‡ºçŽ°åœ¨è¡Œå·å·¦ä¾§ï¼›
%   \item ä¸å†ä»¥ç›´ç«‹ã€å€¾æ–œå­—ä½“åŒºåˆ†ä¸åŒåµŒå¥—å±‚æ¬¡çš„æ¨¡å—ï¼›
%   \item è°ƒæ•´ç´¢å¼•ä¸­ç‰ˆæœ¬å·çš„æŽ’åºæ–¹å¼ï¼›
%   \item æ–°å¢žä¸€ç³»åˆ—å®žç”¨å‘½ä»¤ï¼›
%   \item ä¿®æ”¹æ–‡æ¡£å­—ä½“ã€é…è‰²ç­‰ã€‚
% \end{itemize}
%
% æœ¬æ–‡æ¡£æ&nbsp;·å¼çš„æ&nbsp;¸å¿ƒä»£ç&nbsp;ä¸»è¦æ¥è‡ª \cls{ctxdoc} æ–‡æ¡£ç±» v2.4.10ã€‚åœ¨æ­¤ï¼Œæœ¬äººè¦å‘åŽŸ
% å¼€å‘è€… \href{https://github.com/CTeX-org/}{CTEX.ORG} å›¢é˜Ÿè¡¨ç¤ºæ„Ÿè°¢ã€‚
%
% ä»¥ä¸‹ä¸º \cls{fdudoc} çš„å…·ä½“å®žçŽ°ã€‚
%
% \subsubsection{è½½å…¥å®åŒ…ã€æ–‡æ¡£ç±»}
%
%    \begin{macrocode}
%&lt;*doc&gt;
\ExplSyntaxOff
%    \end{macrocode}
%
% æ—&nbsp;éœ€è½½å…¥ \pkg{thumbpdf}ã€‚
%    \begin{macrocode}
\@namedef{ver@thumbpdf.sty}{9999/99/99}
%    \end{macrocode}
%
% \changes{v0.8}{2021/10/21}{[\pkg{fdudoc}] ä½¿ç”¨ \pkg{gbt7714} å®åŒ…å¤„ç†å‚è€ƒæ–‡çŒ®ã€‚}
%
% è½½å…¥å®åŒ…å’Œæ–‡æ¡£ç±»ã€‚
%    \begin{macrocode}
\LoadClass[a4paper, full]{l3doc}
\RequirePackage[heading, sub3section, fontset=none]{ctex}
\RequirePackage[sort&amp;compress]{gbt7714}
\RequirePackage{
  caption,
  geometry,
  graphicx,
  listings,
  makecell,
  siunitx,
  tabularx,
  threeparttable,
  unicode-math,
  xcolor,
  xcolor-material,
  xunicode,
  zref-base
}
%    \end{macrocode}
%
% \subsubsection{\env{macrocode} çŽ¯å¢ƒ}
%
% \paragraph{ç»§æ‰¿çš„ä»£ç&nbsp;}
%
% \begin{macro}[int]{\macro@code}
% åœ¨ \pkg{doc} å®åŒ…ä¸­ï¼Œ\env{macrocode} çŽ¯å¢ƒçš„æ&nbsp;¸å¿ƒåŠŸèƒ½ç”±å‘½ä»¤ \tn{macro@code}
% è´Ÿè´£å®žçŽ°ï¼Œè€Œ \tn{xmacro@code} åªç”¨æ¥ç»“æŸ \env{macrocode} çŽ¯å¢ƒã€‚ä½†åœ¨
% \cls{l3doc} ä»¥åŠ \cls{ctxdoc} ä¸­ï¼Œ \tn{xmacro\-@\-code} åˆ™åŸºæœ¬æŽ¥ç®¡äº†
% \tn{macro@code} çš„åŠŸèƒ½ã€‚åŽè€…æ­¤æ—¶åªèµ·è¾…åŠ©ä½œç”¨ã€‚
%    \begin{macrocode}
\def\macro@code{%
%    \end{macrocode}
% è°ƒæ•´å‰åŽé—´è·ï¼Œç¦æ­¢ \env{macrocode} çŽ¯å¢ƒå‰çš„åˆ†é¡µã€‚
%    \begin{macrocode}
  \topsep \MacrocodeTopsep
  \@beginparpenalty \predisplaypenalty
%    \end{macrocode}
% å°†åˆ—è¡¨å‰åŽçš„é™„åŠ&nbsp;åž‚ç›´ç©ºç™½è®¾ä¸º 0ã€‚æ&nbsp;¹æ® \cls{ctxdoc} ä¿®æ”¹ã€‚
%    \begin{macrocode}
  \partopsep \z@skip
%    \if@inlabel\leavevmode\fi
%    \end{macrocode}
% æž„å»º \env{trivlist} çŽ¯å¢ƒï¼Œè®¾ç½®æ®µé—´è·ä¸º 0ã€‚ä¹‹åŽä¿®æ”¹å­—ä½“ï¼Œå¹¶è°ƒèŠ‚å·¦å³é—´è·ã€‚
% \tn{MacroIndent} ä¼šæ&nbsp;¹æ®ä»£ç&nbsp;è¡Œæ•°æ›´æ–°ï¼Œå…·ä½“ç»†èŠ‚è§åŽæ–‡ã€‚\tn{macro@font} ç”¨æ¥åœ¨
% ä¸åŒæ¨¡å—è§åˆ‡æ¢å­—ä½“ã€‚æœ¬æ–‡æ¡£ç±»ä¸ä½¿ç”¨ \tn{AltMacroFont}ï¼Œå›&nbsp;æ­¤è¿™é‡Œæ”¹ç”¨
% \tn{MacroFont} ä»£æ›¿ã€‚
%    \begin{macrocode}
  \trivlist \parskip \z@ \item[]%
%    \macro@font
  \MacroFont
  \leftskip\@totalleftmargin \advance\leftskip\MacroIndent
  \rightskip\z@ \parindent\z@ \parfillskip\@flushglue
%    \end{macrocode}
% æŒ‰ç…§ \LaTeXe{} ä¸­ \tn{verbatim} çŽ¯å¢ƒä¸­å®šä¹‰ \tn{par}ï¼Œä½¿å¾—ç©ºè¡Œå¯ä»¥åŽŸæ&nbsp;·è¾“å‡ºï¼Œ
% å¦åˆ™ç©ºè¡Œä¼šè¢«åƒæŽ‰ã€‚
%    \begin{macrocode}
  \blank@linefalse \def\par{\ifblank@line
                            \leavevmode\fi
                            \blank@linetrue\@@par
                            \penalty\interlinepenalty}
%    \end{macrocode}
% \tn{obeylines} å°†æŠŠå›žè½¦ç¬¦ |^^M| å˜æˆ \tn{par}ã€‚æŽ¥ä¸‹æ¥å°†æ‰€æœ‰ç‰¹æ®Šç¬¦å·çš„ç±»åˆ«ç&nbsp;
% è®¾ä¸º 12ï¼Œå³â€œå…¶ä»–â€ç±»ã€‚
%    \begin{macrocode}
  \obeylines
  \let\do\do@noligs \verbatim@nolig@list
  \let\do\@makeother \dospecials
%    \end{macrocode}
% ç›¸å½“äºŽé€€å‡º |\begin{list}| å’Œ |\begin{minipage}|ã€‚
%    \begin{macrocode}
  \global\@newlistfalse
  \global\@minipagefalse
%    \end{macrocode}
% åˆå§‹åŒ–äº¤å‰å¼•ç”¨åŠŸèƒ½ã€‚
%    \begin{macrocode}
  \init@crossref}
%    \end{macrocode}
% \end{macro}
%
%    \begin{macrocode}
%&lt;@@=fdudoc&gt;
\ExplSyntaxOn
%    \end{macrocode}
%
% \begin{variable}{\l_@@_tmpa_tl,\l_@@_tmpb_tl}
% ä¸´æ—¶å˜é‡ã€‚
%    \begin{macrocode}
\tl_new:N \l_@@_tmpa_tl
\tl_new:N \l_@@_tmpb_tl
%    \end{macrocode}
% \end{variable}
%
% \begin{macro}{\@@_patch_cmd:Nnn,\@@_preto_cmd:Nn,\@@_appto_cmd:Nn}
% è¡¥ä¸å·¥å…·ã€‚
%    \begin{macrocode}
\cs_new_protected:Npn \@@_patch_cmd:Nnn #1#2#3
  {
    \ctex_patch_cmd_once:NnnnTF #1 { } {#2} {#3}
      { } { \ctex_patch_failure:N #1 }
  }
\cs_new_protected:Npn \@@_preto_cmd:Nn #1#2
  {
    \ctex_preto_cmd:NnnTF #1 { } {#2}
      { } { \ctex_patch_failure:N #1 }
  }
\cs_new_protected:Npn \@@_appto_cmd:Nn #1#2
  {
    \ctex_appto_cmd:NnnTF #1 { } {#2}
      { } { \ctex_patch_failure:N #1 }
  }
%    \end{macrocode}
% \end{macro}
%
% \paragraph{ä»£ç&nbsp;è¡Œå¤„ç†}
%
% \begin{macro}[int]{\xmacro@code,\sxmacro@code}
% é‡æ–°å®žçŽ° \env{macrocode} ä¸Ž \env{macrocode*} çŽ¯å¢ƒçš„æ&nbsp;¸å¿ƒåŠŸèƒ½ï¼Œå°†å¯¹ä»£ç&nbsp;é€è¡Œ
% å¤„ç†ã€‚åŽè€…ä¼šå°†ç©ºæ&nbsp;¼æ˜¾ç¤ºä¸ºâ€œ\verb*| |â€ã€‚
%    \begin{macrocode}
\cs_set_protected_nopar:Npn \xmacro@code
  { \@@_marco_code:w }
\cs_set_protected_nopar:Npn \sxmacro@code
  {
    \fontspec_print_visible_spaces:
    \xmacro@code
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_marco_code:w}
%    \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_marco_code:w
  {
%    \end{macrocode}
% æ&nbsp;¹æ® \tn{codeline@index} æ˜¯å¦ä¸º |true| é€‰æ‹©æ˜¯å¦æ˜¾ç¤ºè¡Œå·ã€‚
%    \begin{macrocode}
    \ifcodeline@index
      \@@_marco_code_every_par:n { \@@_code_line_no: }
    \else:
      \@@_marco_code_every_par:n { }
    \fi:
%    \end{macrocode}
% è®¾ç½®ä»£ç&nbsp;æ®µç»“æŸæ&nbsp;‡è®°ä¸ºâ€œ\verb*|%    \end{macrocode}^^M|â€ã€‚
%    \begin{macrocode}
    \@@_make_finish_tag:x { \@currenvir }
%    \end{macrocode}
% å¼€å§‹ \env{macrocode}ã€‚
%    \begin{macrocode}
    \@@_macro_code_start:w
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_marco_code_every_par:n}
% åœ¨æ¯æ®µä¹‹å‰æ’å…¥å†…å®¹ã€‚è¿™é‡Œæ¯æ®µå³ç›¸å½“äºŽæ¯è¡Œã€‚
%    \begin{macrocode}
\cs_new_protected:Npn \@@_marco_code_every_par:n #1
  {
    \everypar
      {
        \everypar {#1}
        \if@inlabel
          \global \@inlabelfalse \@noparlistfalse
          \llap { \box \@labels \hskip \leftskip }
        \fi
        #1
      }
  }
%    \end{macrocode}
% \end{macro}
%
% è®¾ç½® \tn{endlinechar} ä¸º $-1$ï¼Œè¡¨ç¤ºè¡Œæœ«ä¸æ’å…¥ä»»ä½•å­—ç¬¦ï¼ˆå®žé™…ä¸Šç›¸å½“äºŽåœ¨è¡Œå°¾
% æ’å…¥æ³¨é‡Šç¬¦ |%|ï¼‰ã€‚
%    \begin{macrocode}
\group_begin:
  \int_set:Nn \tex_endlinechar:D { -1 }
%    \end{macrocode}
%
% \begin{variable}{\c_@@_active_space_tl}
% æ´»åŠ¨å­—ç¬¦ç±»çš„ç©ºæ&nbsp;¼ï¼ˆASCII ç&nbsp;ä¸º 32ï¼‰ã€‚
%    \begin{macrocode}
  \use:n
    {
      \char_set_catcode_active:n { 32 }
      \tl_const:Nn \c_@@_active_space_tl
    }
    { }
\group_end:
%    \end{macrocode}
% \end{variable}
%
% ASCII ç&nbsp; 13 æ˜¯å›žè½¦ç¬¦ |^^M|ã€‚å°†å…¶è®¾ç½®ä¸ºæ´»åŠ¨å­—ç¬¦ã€‚
%    \begin{macrocode}
\group_begin:
  \char_set_catcode_active:n { 13 }
%    \end{macrocode}
%
% \begin{macro}{\@@_make_finish_tag:n,\@@_make_finish_tag:x}
% \env{macrocode} ç»“å°¾æ&nbsp;‡è®°ã€‚å±•å¼€åŽå˜æˆâ€œ\verb*|%    \end{#1}^^M|â€ã€‚
%    \begin{macrocode}
  \cs_new_protected:Npx \@@_make_finish_tag:n #1
    {
      \tl_set:Nn \exp_not:N \l_@@_macro_code_finish_tl
        {
          \c_percent_str
          \prg_replicate:nn { 4 }
            { \exp_not:o { \c_@@_active_space_tl } }
          \exp_not:o { \active@escape@char } end
          \c_left_brace_str #1 \c_right_brace_str
          \exp_not:N ^^M
        }
    }
  \cs_generate_variant:Nn \@@_make_finish_tag:n { x }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_macro_code_start:w}
% å¼€å§‹ä»£ç&nbsp;çŽ¯å¢ƒã€‚æ­¤å‘½ä»¤ä¸»è¦æ˜¯ä¸ºäº†é˜²æ­¢ |\begin{macrocode}| åŽå‡ºçŽ°å¤šä½™çš„ç©ºè¡Œã€‚
%    \begin{macrocode}
  \cs_new_protected:Npn \@@_macro_code_start:w #1
    {
      \str_if_eq:nnTF {#1} { ^^M }
        { \@@_macro_code_read_line:w }
        { \@@_macro_code_read_line:w #1 }
    }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_macro_code_read_line:w}
% é€è¡Œè¯»å–ä»£ç&nbsp;ï¼Œå¹¶è¿žåŒè¡Œå°¾å›žè½¦ç¬¦ä¸€å¹¶å­˜å…¥ \cs{l_@@_macro_code_line_tl}ã€‚å¦‚æžœè¯¥è¡Œ
% ä¸Žç»“æŸæ&nbsp;‡è®°â€œ\verb*|%    \end{macrocode}^^M|â€ç›¸åŒï¼Œåˆ™ç»“æŸæ­¤ \env{macrocode}ï¼›
% å¦åˆ™ç»§ç»­å¤„ç†è¯¥è¡Œä»£ç&nbsp;ã€‚
%    \begin{macrocode}
  \cs_new_protected:Npn \@@_macro_code_read_line:w #1 ^^M
    {
      \tl_set:Nn \l_@@_macro_code_line_tl { #1 ^^M }
      \tl_if_eq:NNTF
        \l_@@_macro_code_line_tl \l_@@_macro_code_finish_tl
        { \exp_args:Nx \end { \@currenvir } }
        {
          \@@_macro_code_process_line:
          \@@_macro_code_read_line:w
        }
    }
%    \end{macrocode}
% \end{macro}
%
% \changes{v0.4}{2017/08/09}{[\pkg{fdudoc}] ä¿®å¤ \cls{ctxdoc}
%   æ–‡æ¡£ç±» v2.4.10 ä¹‹å‰ç‰ˆæœ¬ä¸­è¡Œè·åå°çš„é—®é¢˜ï¼Œè§ ctex-kit
%   \href{https://github.com/CTeX-org/ctex-kit/issues/303}{\#303}ã€‚}
%
% \begin{macro}{\@@_swap_cr:,\@@_swap_cr_aux:w}
% æŠŠ \cs{l_@@_macro_code_line_tl} ä¸­çš„å›žè½¦ç¬¦ |^^M| æŒªåˆ°å¤–é¢ã€‚
%    \begin{macrocode}
  \cs_new_protected:Npn \@@_swap_cr:
    {
      \exp_after:wN
        \@@_swap_cr_aux:w \l_@@_macro_code_line_tl
    }
  \cs_new_protected:Npn \@@_swap_cr_aux:w #1 ^^M
    {
      \group_insert_after:N ^^M
      \tl_set:Nn \l_@@_macro_code_line_tl {#1}
    }
%    \end{macrocode}
% \end{macro}
%
% \begin{variable}{\c_@@_active_cr_tl}
% æ´»åŠ¨å­—ç¬¦ç±»çš„å›žè½¦ç¬¦ã€‚
%    \begin{macrocode}
  \tl_const:Nn \c_@@_active_cr_tl { ^^M }
\group_end:
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{\l_@@_macro_code_line_tl,
%   \l_@@_macro_code_finish_tl,
%   \g_@@_macro_code_verbatim_stop_tl}
% åˆ†åˆ«ç”¨æ¥å­˜å‚¨ä»£ç&nbsp;è¡Œã€\env{macrocode} ç»“æŸæ&nbsp;‡è®°ä»¥åŠæŠ„å½•åœæ­¢æ&nbsp;‡è®°ã€‚
%    \begin{macrocode}
\tl_new:N \l_@@_macro_code_line_tl
\tl_new:N \l_@@_macro_code_finish_tl
\tl_new:N \g_@@_macro_code_verbatim_stop_tl
%    \end{macrocode}
% \end{variable}
%
% \begin{macro}{\@@_process_normal_line:}
% æ™®é€šä»£ç&nbsp;è¡Œæ&nbsp;¹æ®å¼€å¤´å­—ç¬¦åˆ†åˆ«å¤„ç†ã€‚
%    \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_process_normal_line:
  {
    \str_case_e:nnF
      { \str_head:N \l_@@_macro_code_line_tl }
      {
%    \end{macrocode}
% ä»¥ |%| å¼€å¤´çš„è¡Œå…ˆç”± \cs{tl_tail:N} åŽ»æŽ‰ |%|ï¼Œä¹‹åŽå†æ£€æŸ¥ |&lt;|ã€‚
%    \begin{macrocode}
        { \c_percent_str }
        {
          \@@_check_angle:x
            { \tl_tail:N \l_@@_macro_code_line_tl }
        }
%    \end{macrocode}
% ä»¥ |#| å¼€å¤´çš„è¡ŒæŒ‰æ³¨é‡Šçš„æ&nbsp;¼å¼è¾“å‡ºã€‚
%    \begin{macrocode}
        { \c_hash_str }
        { \@@_output_comment_line: }
      }
%    \end{macrocode}
% å…¶ä½™æ­£å¸¸è¾“å‡ºã€‚
%    \begin{macrocode}
      { \@@_output_line: }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_process_verbatim_line:}
% å¤„ç†æŠ„å½•ä»£ç&nbsp;è¡Œï¼ˆä¸æ£€æŸ¥ |%| ä¸Ž |&lt;|ï¼‰ã€‚
%    \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_process_verbatim_line:
  {
%    \end{macrocode}
% å°†è¯¥è¡Œä¸ŽæŠ„å½•åœæ­¢æ&nbsp;‡è®°è¿›è¡Œæ¯”è¾ƒã€‚
%    \begin{macrocode}
    \tl_if_eq:NNTF \l_@@_macro_code_line_tl
        \g_@@_macro_code_verbatim_stop_tl
%    \end{macrocode}
% è‹¥ç›¸åŒï¼Œåˆ™ç»“æŸæŠ„å½•çŽ¯å¢ƒï¼Œæ¸…ç©ºæŠ„å½•åœæ­¢æ&nbsp;‡è®°ï¼Œå¹¶è¾“å‡ºè¯¥æ&nbsp;‡è®°ï¼›
%    \begin{macrocode}
      {
        \tl_gclear:N \g_@@_macro_code_verbatim_stop_tl
        \cs_gset_eq:NN \@@_macro_code_process_line:
          \@@_process_normal_line:
        \@@_output_module:nn
          { \color { verb@guard } }
          {
            \@@_swap_cr:
            \@@_module_pop:n { \l_@@_macro_code_line_tl }
          }
      }
%    \end{macrocode}
% å¦åˆ™ç›´æŽ¥è¾“å‡ºæŠ„å½•ä»£ç&nbsp;ã€‚
%    \begin{macrocode}
      { \tl_use:N \l_@@_macro_code_line_tl }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_macro_code_process_line:}
% å¤„ç†ä»£ç&nbsp;è¡Œã€‚è¯¥å‘½ä»¤çš„ä½œç”¨å¦‚ä¸‹ï¼š
% \begin{itemize}
%   \item æ­£å¸¸æƒ…å†µä¸‹ï¼Œç­‰åŒäºŽ \cs{@@_process_normal_line:}ï¼›
%   \item åœ¨ \cs{DontCheckModules} ä¹‹åŽï¼Œç­‰ä»·äºŽ \cs{@@_output_line:}ï¼Œ
%     å³ä¸æ£€æŸ¥æ¨¡å—æ&nbsp;‡è®°ï¼Œç›´æŽ¥è¾“å‡ºï¼›
%   \item åœ¨æŠ„å½•çŽ¯å¢ƒä¸­ï¼Œç­‰ä»·äºŽ \cs{@@_process_verbatim_line:}ï¼Œ
%     æ­¤æ—¶å°†ä¸å†ç‰¹æ®Šå¤„ç†ä»¥ |%| å¼€å¤´çš„ä»£ç&nbsp;è¡Œã€‚
% \end{itemize}
%    \begin{macrocode}
\cs_new_eq:NN \@@_macro_code_process_line:
  \@@_process_normal_line:
%    \end{macrocode}
% \end{macro}
%
% \paragraph{æ¨¡å—æ&nbsp;‡è®°å¤„ç†}
%
% \begin{macro}{\CheckModules,\DontCheckModules}
% é€‰æ‹©æ˜¯å¦æ£€æŸ¥æ¨¡å—æ&nbsp;‡è®°ã€‚è¿™ä¸¤ä¸ªå‘½ä»¤åœ¨ \pkg{doc} å®åŒ…ä¸­å·²æœ‰å®šä¹‰ï¼Œæ­¤å¤„é‡æ–°å£°æ˜Žã€‚
%    \begin{macrocode}
\DeclareDocumentCommand \CheckModules { }
  {
    \cs_set_eq:NN \@@_macro_code_process_line:
      \@@_process_normal_line:
  }
\DeclareDocumentCommand \DontCheckModules { }
  {
    \cs_set_eq:NN \@@_macro_code_process_line:
      \@@_output_line:
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_check_angle:n,\@@_check_angle:x}
% æ£€æŸ¥ç¬¬ä¸€ä¸ªå­—ç¬¦æ˜¯å¦æ˜¯ |&lt;|ã€‚è‹¥æ˜¯ï¼Œåˆ™æ£€æŸ¥æ¨¡å—ï¼›å¦åˆ™ç«‹åˆ»è¾“å‡ºæ”¹è¡Œã€‚
% è¯¥å‡½æ•°çš„å‚æ•°ä¸å¸¦ |%|ã€‚
%    \begin{macrocode}
\cs_new_protected:Npn \@@_check_angle:n #1
  {
    \str_if_eq:eeTF { \str_head:n {#1} } { &lt; }
      { \@@_check_module:x { \tl_tail:n {#1} } }
      { \@@_output_comment_line: }
  }
\cs_generate_variant:Nn \@@_check_angle:n { x }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_check_module:n,\@@_check_module:x}
% æ£€æŸ¥ç´§è·Ÿ |&lt;| ä¹‹åŽçš„å­—ç¬¦ã€‚å…±æœ‰å››ç§æƒ…å†µï¼š
% \begin{itemize}
%   \item |*|ï¼šæ¨¡å—å¼€å§‹ï¼ˆ|%&lt;*|\meta{module}|&gt;|ï¼‰ï¼›
%   \item |/|ï¼šæ¨¡å—ç»“æŸï¼ˆ|%&lt;/|\meta{module}|&gt;|ï¼‰ï¼›
%   \item |@|ï¼šåå­—ç©ºé—´ï¼ˆ|%&lt;@@=|\meta{namespace}|&gt;|ï¼‰ï¼›
%   \item |&lt;|ï¼šæŠ„å½•çŽ¯å¢ƒå¼€å§‹ï¼ˆ|%&lt;&lt;|\meta{end-tag}ï¼‰ã€‚
% \end{itemize}
% è‹¥ä¸æ˜¯è¿™å‡&nbsp;ç§æƒ…å†µï¼Œåˆ™ä¸ºå•ç‹¬ä¸€è¡Œçš„ç‹¬ç«‹æ¨¡å—ï¼ˆ|%&lt;|\meta{module}|&gt;|ï¼‰ã€‚
%    \begin{macrocode}
\cs_new_protected:Npn \@@_check_module:n #1
  {
    \str_case_e:nnF { \str_head:n {#1} }
      {
        { * } { \@@_module_star:w }
        { / } { \@@_module_slash:w }
        { @ } { \@@_module_at:w }
        { &lt; } { \@@_module_verb:w }
      }
      { \@@_module_pm:w }
%    \end{macrocode}
% å‚æ•° |#1| å°†è¢«ä¸Šé¢å‡&nbsp;ä¸ª |:w| åž‹å‡½æ•°åƒæŽ‰ã€‚
%    \begin{macrocode}
    #1 \q_stop
  }
\cs_generate_variant:Nn \@@_check_module:n { x }
%    \end{macrocode}
% \end{macro}
%
% è®¾ç½® |&gt;| ä¸ºæ´»åŠ¨å­—ç¬¦ã€‚
%    \begin{macrocode}
\group_begin:
  \char_set_catcode_active:N \&gt;
%    \end{macrocode}
%
% \begin{macro}{\@@_module_star:w}
% æ¨¡å—å¼€å§‹æ&nbsp;‡è®°ã€‚
% \begin{arguments}
%   \item |*|\meta{module}
%   \item ä¹‹åŽçš„ä»£ç&nbsp;
% \end{arguments}
%    \begin{macrocode}
  \cs_new_protected:Npn \@@_module_star:w #1 &gt; #2 \q_stop
    {
%    \end{macrocode}
% ä¸´æ—¶å˜é‡ \cs{l_@@_tmpa_tl} ä¿å­˜ |&lt;*|\meta{module}|&gt;| ä¹‹åŽçš„éƒ¨åˆ†ï¼Œå³çœŸå®žä»£ç&nbsp;ã€‚
%    \begin{macrocode}
      \tl_set:Nn \l_@@_tmpa_tl {#2}
%    \end{macrocode}
% åˆ¤æ–­è¯¥è¡Œæ˜¯å¦ä¸ºç©ºï¼ˆåªå«ä¸€ä¸ªå›žè½¦ç¬¦ |^^M|ï¼‰ã€‚
%    \begin{macrocode}
      \tl_if_eq:NNTF \l_@@_tmpa_tl \c_@@_active_cr_tl
%    \end{macrocode}
% è‹¥æ˜¯ï¼Œåˆ™å°† |&lt;|\meta{module}|&gt;| æ”¾åœ¨è¡Œå·çš„å³ä¾§ï¼›
%    \begin{macrocode}
        {
          \@@_output_module:nn
            { \@@_star_color: }
            {
              \@@_module_push:n
                { \@@_module_angle:n {#1} }
            }
        }
%    \end{macrocode}
% å¦åˆ™æ”¾åœ¨å·¦ä¾§ï¼Œå¹¶è¾“å‡ºç›¸åº”ä»£ç&nbsp;ã€‚
%    \begin{macrocode}
        {
          \@@_output_module_left:nn
            { \@@_star_color: }
            {
              \@@_module_push:n
                { \@@_module_angle:n {#1} }
            }
        }
      \@@_output_line:n {#2}
    }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_module_slash:w}
% æ¨¡å—ç»“æŸæ&nbsp;‡è®°ã€‚ç»“æž„ä¸Ž \cs{@@_module_star:w} ç›¸åŒã€‚
% \begin{arguments}
%   \item |/|\meta{module}
%   \item ä¹‹åŽçš„ä»£ç&nbsp;
% \end{arguments}
%    \begin{macrocode}
  \cs_new_protected:Npn \@@_module_slash:w #1 &gt; #2 \q_stop
    {
      \tl_set:Nn \l_@@_tmpa_tl {#2}
      \tl_if_eq:NNTF \l_@@_tmpa_tl \c_@@_active_cr_tl
        {
          \@@_output_module:nn
            { \@@_slash_color: }
            {
              \@@_module_pop:n
                { \@@_module_angle:n {#1} }
            }
        }
        {
          \@@_output_module_left:nn
            { \@@_slash_color: }
            {
              \@@_module_pop:n
                { \@@_module_angle:n {#1} }
            }
        }
      \@@_output_line:n {#2}
    }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_module_at:w}
% åå­—ç©ºé—´ã€‚
% \begin{arguments}
%   \item åå­—ç©ºé—´çš„åç§°ï¼ˆä¸å« |@@=|ï¼‰
%   \item ä¹‹åŽçš„ä»£ç&nbsp;
% \end{arguments}
%    \begin{macrocode}
  \cs_new_protected:Npn \@@_module_at:w @ @ = #1 &gt; #2 \q_stop
    {
      \@@_output_module:nn
        { \color { at@guard } }
        { \@@_module_angle:n { @ @ = #1 } }
%    \end{macrocode}
% è®¾ç½®åå­—ç©ºé—´ä¸º |#1|ã€‚\cls{l3doc} ä¸­å°†åå­—ç©ºé—´ç§°ä¸ºâ€œæ¨¡å—â€ï¼ˆmoduleï¼‰ï¼Œ
% æ³¨æ„ä¸è¦æ··æ·†ã€‚
%    \begin{macrocode}
      \tl_gset:Nn \g__codedoc_module_name_tl {#1}
      \@@_output_line:n {#2}
    }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_module_verb:w}
% æŠ„å½•å¼€å§‹ã€‚|#1|: |&lt;|\meta{end-tag}ï¼Œåªæœ‰ä¸€ä¸ª |&lt;|ã€‚\meta{end-tag} çš„æœ€åŽä¼š
% å¸¦æœ‰ä¸€ä¸ªå›žè½¦ç¬¦ |^^M|ã€‚
%    \begin{macrocode}
  \cs_new_protected:Npn \@@_module_verb:w #1 \q_stop
    {
%    \end{macrocode}
% é‡å®šä¹‰ \cs{@@_macro_code_process_line:}ï¼Œç”¨ä»¥è¾“å‡ºæŠ„å½•è¡Œã€‚
%    \begin{macrocode}
      \cs_gset_eq:NN \@@_macro_code_process_line:
        \@@_process_verbatim_line:
%    \end{macrocode}
% è®¾ç½®æŠ„å½•åœæ­¢æ&nbsp;‡è®°ã€‚ç”¨ \cs{tl_tail:n} åŽ»æŽ‰å¼€å¤´çš„ |&lt;|ã€‚
%    \begin{macrocode}
      \tl_gset:Nx \g_@@_macro_code_verbatim_stop_tl
        { \c_percent_str \tl_tail:n {#1} }
%    \end{macrocode}
% è¾“å‡º |%&lt;&lt;|\meta{end-tag}ã€‚
%    \begin{macrocode}
      \@@_output_module:nn
        { \color { verb@guard } }
        {
          \@@_swap_cr:
          \@@_module_push:n { \l_@@_macro_code_line_tl }
        }
    }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_module_pm:w}
% å¤„ç†å•ç‹¬ä¸€è¡Œçš„æ¨¡å—ã€‚|&lt;|\meta{module}|&gt;| æ”¾åœ¨è¡Œå·çš„å·¦ä¾§ã€‚
% \begin{arguments}
%   \item \meta{module}
%   \item ä¹‹åŽçš„ä»£ç&nbsp;
% \end{arguments}
%    \begin{macrocode}
  \cs_new_protected:Npn \@@_module_pm:w #1 &gt; #2 \q_stop
    {
      \@@_output_module_left:nn
        { \@@_pm_color: }
        { \@@_module_angle:n {#1} }
      \@@_output_line:n {#2}
    }
\group_end:
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_output_line:n,\@@_output_line:}
% è¾“å‡ºä»£ç&nbsp;è¡Œã€‚å‚æ•°å°†è¢«å­˜å…¥ \cs{l_@@_macro_code_line_tl}ï¼Œ
% å†ç”±ä¸å¸¦å‚æ•°çš„ç‰ˆæœ¬è°ƒç”¨ã€‚
%    \begin{macrocode}
\cs_new_protected:Npn \@@_output_line:n #1
  {
    \tl_set:Nn \l_@@_macro_code_line_tl {#1}
%    \end{macrocode}
% è‹¥ä¸ºç©ºè¡Œï¼ˆåªå«ä¸€ä¸ª |^^M|ï¼‰ï¼Œåˆ™ç›´æŽ¥è¾“å‡ºï¼ˆæ¢è¡Œï¼‰ã€‚
%    \begin{macrocode}
    \tl_if_eq:NNTF
      \l_@@_macro_code_line_tl \c_@@_active_cr_tl
      { \tl_use:N \l_@@_macro_code_line_tl }
      {
%    \end{macrocode}
% æ£€æŸ¥å¼€å¤´æ˜¯å¦ä¸º |%|ï¼Œæ®æ­¤åˆ†åˆ«å¤„ç†ã€‚
%    \begin{macrocode}
        \str_if_eq:eeTF
          { \str_head:N \l_@@_macro_code_line_tl } { \c_percent_str }
          { \@@_output_comment_line: } { \@@_output_line: }
      }
  }
\cs_new_protected_nopar:Npn \@@_output_line:
  {
    \tex_noindent:D
%    \end{macrocode}
% æ­¤å¤„å°†æŠŠ |@@| æ›¿æ¢ä¸ºç›¸åº”çš„åå­—ç©ºé—´ã€‚
%    \begin{macrocode}
    \@@_replace_at_at:N \l_@@_macro_code_line_tl
    \tl_use:N \l_@@_macro_code_line_tl
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_output_comment_line:}
% è¾“å‡ºæ³¨é‡Šä»£ç&nbsp;è¡Œã€‚ç”¨ç°è‰²ã€æ–œä½“æ˜¾ç¤ºã€‚
%    \begin{macrocode}
\cs_new_protected:Npn \@@_output_comment_line:
  {
    \tex_noindent:D
    \group_begin:
      \__fdudoc_swap_cr:
      \color { code@gray } \slshape \@@_output_line:
    \group_end:
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_replace_at_at:N,
%   \@@_replace_at_at_aux:Nn,\@@_replace_at_at_aux:No}
% æŠŠ |@@| æ›¿æ¢ä¸ºç›¸åº”çš„åå­—ç©ºé—´ã€‚å…¶åç§°å­˜æ”¾åœ¨å…¨å±€å˜é‡
% \cs{g__codedoc_module_name_tl} ä¸­ã€‚å®ƒä¸ºç©ºæ—¶ï¼ˆ|%&lt;@@=&gt;|ï¼‰ï¼Œä¸åšæ›¿æ¢ã€‚
%    \begin{macrocode}
\cs_new_protected:Npn \@@_replace_at_at:N #1
  {
    \tl_if_empty:NF \g__codedoc_module_name_tl
      { \@@_replace_at_at_aux:No #1 \g__codedoc_module_name_tl }
  }
\cs_new_protected:Npn \@@_replace_at_at_aux:Nn #1#2
  {
%    \end{macrocode}
% ä»¥ä¸‹ä»£ç&nbsp;åˆ†åˆ«å¯¹åº”ä¸¤ç§åå­—ç©ºé—´çš„æ›¿æ¢ï¼š
% \begin{itemize}
%   \item å†…éƒ¨å˜é‡ï¼š|\|\meta{type}|_@@_|\meta{name} $\to$
%     |\|\meta{type}|__|\meta{namespace}|_|\meta{name}ï¼›
%   \item å†…éƒ¨å‡½æ•°ï¼š|\@@_|\meta{name}â€ $\to$
%     |\__|\meta{namespace}|_|\meta{name}â€ï¼‰ã€‚
% \end{itemize}
%    \begin{macrocode}
    \tl_replace_all:Nnn #1 { _ @ @ } { _ _ #2 }
    \tl_replace_all:Nnn #1 {   @ @ } { _ _ #2 }
  }
\cs_generate_variant:Nn \@@_replace_at_at_aux:Nn { No }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_module_push:n,
%   \@@_module_push_aux:nn,\@@_module_push_aux:on}
% å°†æ¨¡å—ååŽ‹å…¥æ&nbsp;ˆä¸­ã€‚æ­¤å¤„çš„æ&nbsp;ˆä¸»è¦ç”¨æ¥å¤„ç†æ¨¡å—åï¼ˆåŒ…æ‹¬æŠ„å½•æ&nbsp;‡è®°ï¼‰ä¹‹é—´çš„è¶…é“¾æŽ¥ã€‚
%    \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_module_push:n
  { \@@_module_push_aux:on { \int_use:N \c@HD@hypercount } }
\cs_new_protected:Npn \@@_module_push_aux:nn #1
  {
    \seq_gpush:Nn \g_@@_module_dest_seq {#1}
    \hypersetup { hidelinks }
    \exp_args:Nx \hdclindex
      { \zref@extractdefault { HD.#1 } { guard@end } { 1 } } { }
  }
\cs_generate_variant:Nn \@@_module_push_aux:nn { on }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_module_pop:n,
%   \@@_module_pop_aux:nn,\@@_module_pop_aux:on}
% å°†æ¨¡å—åé‡Šæ”¾å‡ºæ&nbsp;ˆã€‚
%    \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_module_pop:n
  {
    \seq_gpop:NNTF \g_@@_module_dest_seq \l_@@_tmpa_tl
      { \@@_module_pop_aux:on { \l_@@_tmpa_tl } }
      { \BOOM \use:n }
  }
\cs_new_protected:Npn \@@_module_pop_aux:nn #1
  {
    \zref@labelbylist { HD.#1 } { fdudoc }
    \hypersetup { hidelinks }
    \hdclindex {#1} { }
  }
\cs_generate_variant:Nn \@@_module_pop_aux:nn { on }
%    \end{macrocode}
% \end{macro}
%
% \begin{variable}{\g_@@_module_dest_seq}
% å­˜æ”¾æ¨¡å—åçš„åºåˆ—ï¼ˆæ&nbsp;ˆï¼‰ã€‚
%    \begin{macrocode}
\seq_new:N \g_@@_module_dest_seq
%    \end{macrocode}
% \end{variable}
%
% å¤„ç†è¡Œå·è¶…é“¾æŽ¥ã€‚ä½¿ç”¨ \pkg{zref} å®åŒ…ã€‚
%    \begin{macrocode}
\zref@newlist { fdudoc }
\zref@newprop { guard@end } [ 1 ]
  { \int_eval:n { \c@HD@hypercount - 1 } }
\zref@addprop { fdudoc } { guard@end }
%    \end{macrocode}
%
% \paragraph{æ&nbsp;¼å¼å¤„ç†}
%
% \begin{macro}{\MacroFont}
% ä»£ç&nbsp;éƒ¨åˆ†çš„å­—ä½“ã€‚
%    \begin{macrocode}
\cs_set_protected:Npn \MacroFont
  {
    \linespread { 1.05 }
    \small \ttfamily \mdseries \upshape
    \@@_verb_addon:
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_output_module:nn,\@@_output_module_left:nn}
% è¾“å‡ºæ¨¡å—åï¼ˆåˆ†è¡Œå†…å’Œè¡Œå·å·¦ä¾§ä¸¤ç§ï¼‰ã€‚
% \begin{arguments}
%   \item é¢œè‰²ç­‰æ&nbsp;·å¼
%   \item æ¨¡å—å
% \end{arguments}
%    \begin{macrocode}
\cs_new_protected:Npn \@@_output_module:nn #1#2
  {
    \tex_noindent:D
    \group_begin:
      #1
      \footnotesize \normalfont \sffamily #2
    \group_end:
  }
\cs_new_protected:Npn \@@_output_module_left:nn #1#2
  {
    \tex_noindent:D
    \hbox_overlap_left:n
      {
        \@@_output_module:nn {#1} {#2}
        \skip_horizontal:n { \leftskip + \smallskipamount }
      }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_star_color:,\@@_slash_color:,\@@_pm_color:}
% é€‰æ‹©æ¨¡å—æ&nbsp;‡è®°çš„é¢œè‰²ã€‚æ¨¡å—æ&nbsp;‡è®°çš„é¢œè‰²ä¼šæ&nbsp;¹æ®åµŒå¥—å±‚æ¬¡è€Œæ”¹å˜ã€‚
%    \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_star_color:
  {
    \seq_gpop:NNTF \g_@@_star_color_seq \current@color
      { \set@color }
      { \@@_select_color: }
    \seq_gpush:No \g_@@_slash_color_seq { \current@color }
  }
\cs_new_protected_nopar:Npn \@@_slash_color:
  {
    \seq_gpop:NNTF \g_@@_slash_color_seq \current@color
      {
        \set@color
        \seq_gpush:No \g_@@_star_color_seq { \current@color }
      }
% TODO: éœ€è¦æŠ¥é”™ï¼šstar ä¸Ž slash æ²¡æœ‰åŒ¹é…
      { \BOOM }
  }
\cs_new_protected_nopar:Npn \@@_pm_color:
  {
    \seq_get:NNTF \g_@@_star_color_seq \current@color
      { \set@color }
      {
        \@@_select_color:
        \seq_gpush:No \g_@@_star_color_seq { \current@color }
      }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{variable}{\g_@@_star_color_seq,\g_@@_slash_color_seq}
% å­˜æ”¾æ¨¡å—æ&nbsp;‡è®°é¢œè‰²çš„åºåˆ—ã€‚
%    \begin{macrocode}
\seq_new:N \g_@@_star_color_seq
\seq_new:N \g_@@_slash_color_seq
%    \end{macrocode}
% \end{variable}
%
% \begin{macro}{\@@_select_color:}
% \begin{macro}[int]{guard@series}
% è®¾ç½®æ¨¡å—æ&nbsp;‡è®°çš„è‰²ç³»ã€‚
%    \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_select_color:
  { \color { guard@series!!+ } }
\definecolorseries { guard@series }
  { cmyk } { last } { blue } { purple }
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% è®¾ç½®è‰²ç³»çš„å¢žé‡å¤§å°ã€‚å¯é€‰å‚æ•° |3| æ„å‘³ç€åŸºè‰²ï¼ˆblueï¼‰ä¸Žæœ«è‰²ï¼ˆpurpleï¼‰ä¹‹é—´å°†è¢«
% ç­‰åˆ†ä¸ºä¸‰ä»½ã€‚è¯¥æ•°å­—æ¯”åµŒå¥—æœ€å¤§æ·±åº¦å° 1ã€‚
%    \begin{macrocode}
\resetcolorseries [ 3 ] { guard@series }
%    \end{macrocode}
%
% \begin{macro}[int]{verb@guard,at@guard,code@gray}
% è®¾ç½®é¢œè‰²ã€‚
%    \begin{macrocode}
\definecolor { verb@guard } { named } { MaterialLime600 }
\definecolor { at@guard   } { named } { MaterialPink    }
\definecolor { code@gray  } { named } { MaterialGrey    }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_module_angle:n}
% è¾“å‡ºâ€œ$\langle\cdots\rangle$â€ã€‚
%    \begin{macrocode}
\cs_new_protected:Npn \@@_module_angle:n #1
  { &lt; #1 &gt; }
%   { \textlangle #1 \textrangle }
%   { \ensuremath \langle #1 \ensuremath \rangle }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_code_line_no:}
% è¡Œå·ã€‚è®¾ç½®ä¸ºé˜¿æ‹‰ä¼¯æ•°å­—ã€‚
%    \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_code_line_no:
  {
    \int_gincr:N \c@CodelineNo
    \hbox_overlap_left:n
      {
        \hbox_to_wd:nn
          { \MacroIndent }
          {
            \HD@target
            \tex_hss:D \@@_code_line_no_style:
            \theCodelineNo \enspace
          }
        \tex_kern:D \@totalleftmargin
      }
  }
\tl_set:Nn \theCodelineNo { \arabic { CodelineNo } }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_code_line_no_style:}
% è¡Œå·æ&nbsp;¼å¼ã€‚
%    \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_code_line_no_style:
  { \color { code@gray } \normalfont \sffamily \tiny }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int]{\HD@SetMacroIndent}
% è®¾ç½®ä»£ç&nbsp;ç¼©è¿›ï¼ˆè¡Œå·ä¸€æ&nbsp;çš„å®½åº¦ï¼‰ã€‚è¯¥å‘½ä»¤ä¼šå†™è¿› |.aux| è¾…åŠ©æ–‡ä»¶ï¼Œ
% ä»¥ä¾¿åœ¨äºŒæ¬¡ç¼–è¯‘æ—¶ç¡®å®šæœ€å¤§è¡Œå·å®½åº¦ã€‚
%    \begin{macrocode}
\cs_set_protected:Npn \HD@SetMacroIndent #1
  {
    \group_begin:
      \settowidth \MacroIndent
        {
          \@@_code_line_no_style:
          \prg_replicate:nn { \tl_count:n {#1} } { 0 }
          \enspace
        }
      \dim_gset_eq:NN \MacroIndent \MacroIndent
    \group_end:
  }
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{\env{function} çŽ¯å¢ƒ}
%
% \begin{macro}{\@@_verb_addon:,
%   \@@_disable_ecglue:,
%   \@@_plain_punct_style:}
% \begin{macro}[int]{\meta@font@select}
% è°ƒæ•´æ–‡å­—é—´è·ï¼Œä»¥ä¾¿äºŽè®© CJK å­—ç¬¦å&nbsp;çš„å®½åº¦ç­‰äºŽè¥¿æ–‡ç­‰å®½å­—ä½“ä¸­ä¸¤ä¸ªç©ºæ&nbsp;¼çš„å®½åº¦ã€‚
% éœ€è¦æŒ‰ç¼–è¯‘æƒ…å†µåˆ†åˆ«å®šä¹‰ã€‚
%    \begin{macrocode}
\sys_if_engine_xetex:TF
  {
    \cs_set_eq:NN \@@_verb_addon: \xeCJKVerbAddon
    \cs_set:Nn \@@_plain_punct_style:
      { \xeCJKsetup { PunctStyle = plain } }
    \cs_set:Nn \@@_disable_ecglue:
      { \xeCJKsetup { CJKecglue } }
    \@@_appto_cmd:Nn \meta@font@select
      { \mode_if_inner:T { \@@_disable_ecglue: } }
  }
  {
    \cs_set_eq:NN \@@_verb_addon:        \prg_do_nothing:
    \cs_set_eq:NN \@@_plain_punct_style: \prg_do_nothing:
    \cs_set:Nn \@@_disable_ecglue:
      { \ltjsetparameter { autoxspacing = false } }
    \@@_appto_cmd:Nn \meta@font@select
      { \@@_disable_ecglue: }
  }
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{environment}{function}
% \begin{macro}{\@@_fix_previous_depth:}
% è°ƒæ•´ \env{function} çŽ¯å¢ƒå‰åŽé—´è·ã€‚
%    \begin{macrocode}
\BeforeBeginEnvironment { function }
  { \par \nointerlineskip }
\AtEndEnvironment { function }
  {
    \par
    \cs_gset:Nx \@@_fix_previous_depth:
      { \prevdepth = \the \prevdepth \space }
  }
\AfterEndEnvironment { function }
  { \@@_fix_previous_depth: }
%    \end{macrocode}
% \end{macro}
% \end{environment}
%
% \begin{environment}{syntax}
% \begin{environment}{fdusyntax}
% åœ¨ \env{syntax} å’Œ \env{fdusyntax} çŽ¯å¢ƒå‰è®¾ç½®è‹¥å¹²æ´»åŠ¨å­—ç¬¦ã€‚\texttt{\textbar}
% ç”¨äºŽåˆ†éš”å¤šä¸ªé€‰é¡¹ï¼Œæ—&nbsp;éœ€å€¾æ–œï¼›|&lt;xxx&gt;| è¡¨ç¤ºé€‰é¡¹ï¼Œ|(xxx)| è¡¨ç¤ºé»˜è®¤é€‰é¡¹ã€‚åŽŸæ¥çš„
% æ‹¬å·ç”¨å®ä¿å­˜ï¼Œå¹¶ä¸”ä½¿ç”¨ç›´ç«‹å­—ä½“ã€‚\env{syntax} çŽ¯å¢ƒå¦éœ€è¦é¢å¤–è°ƒæ•´è¡Œè·ã€æ&nbsp;‡ç‚¹
% æ&nbsp;·å¼åŠå­—ç¬¦é—´è·ã€‚
%    \begin{macrocode}
\AtBeginEnvironment { syntax }
  {
    \linespread { 1.2 }
    \@@_plain_punct_style:
    \@@_disable_ecglue:
%     \char_set_catcode_active:N |
%     \char_set_catcode_active:N (
%     \char_set_active_eq:NN | \orbar
%     \char_set_active_eq:NN ( \defaultval@aux
  }
\AtBeginEnvironment { fdusyntax }
  {
    \cs_set:Npn \lparen { \textup { ( } }
    \cs_set:Npn \rparen { \textup { ) } }
    \char_set_catcode_active:N |
    \char_set_catcode_active:N &lt;
    \char_set_catcode_active:N (
    \char_set_active_eq:NN | \orbar
    \char_set_active_eq:NN &lt; \syntaxopt@aux
    \char_set_active_eq:NN ( \defaultval@aux
  }
%    \end{macrocode}
% \end{environment}
% \end{environment}
%
% \subsubsection{ä¿®è®¢è®°å½•ç´¢å¼•é¡¹}
%
% \begin{macro}{\@@_ltx_changes:nnn}
% ä¿å­˜ \pkg{doc} ä¸­ \tn{changes@} çš„å®šä¹‰ã€‚
%    \begin{macrocode}
\cs_new_eq:NN \@@_ltx_changes:nnn \changes@
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int]{\changes@}
% \changes{v0.4}{2017/07/30}{[\pkg{fdudoc}] è°ƒæ•´ç´¢å¼•æŽ’åºæ–¹å¼ã€‚}
% é‡å®šä¹‰ \tn{changes@}ï¼Œåœ¨ç‰ˆæœ¬å·ä¸€è¡Œæ˜¾ç¤ºä¿®æ”¹æ—¥æœŸã€‚
%    \begin{macrocode}
\cs_set_protected:Npn \changes@ #1#2
  {
    \@@_save_version_date:nn {#1} {#2}
    \@@_ltx_changes:nnn {#1} {#2}
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{variable}{\g_@@_version_date_prop}
% å­˜æ”¾ç‰ˆæœ¬å·ä¸Žå¯¹åº”çš„ä¿®æ”¹æ—¥æœŸã€‚å…¶ä¸­é”®ä¸ºç‰ˆæœ¬å·ï¼Œå€¼ä¸º |{å¼€å§‹æ—¥æœŸï¼Œç»“æŸæ—¥æœŸ}|ã€‚
% å¼€å§‹æ—¥æœŸä¸Žç»“æŸæ—¥æœŸå¯ä»¥ç›¸åŒã€‚
%    \begin{macrocode}
\prop_new:N \g_@@_version_date_prop
%    \end{macrocode}
% \end{variable}
%
% \begin{macro}{\@@_save_version_date:nn}
% |nn| ç‰ˆæœ¬æœ€ç»ˆå°†è¢« \tn{changes@} è°ƒç”¨ã€‚
% \begin{arguments}
%   \item ç‰ˆæœ¬å·
%   \item æ—¥æœŸ
% \end{arguments}
% å®ƒä»¬åˆ†åˆ«å¯¹åº” \tn{change} çš„å‰ä¸¤ä¸ªå‚æ•°ï¼ˆç¬¬ä¸‰ä¸ªæ˜¯è¯´æ˜Žæ–‡å­—ï¼‰ã€‚
%    \begin{macrocode}
\cs_new_protected:Npn \@@_save_version_date:nn #1#2
  {
    \prop_get:NnNTF \g_@@_version_date_prop
      {#1} \l_@@_tmpa_tl
      {
%    \end{macrocode}
% \cs{l_@@_tmpa_tl} ç›¸å½“äºŽä¸¤ä¸ªå‚æ•°ï¼ˆå¼€å§‹æ—¥æœŸã€ç»“æŸæ—¥æœŸï¼‰ï¼Œå›&nbsp;æ­¤éœ€è¦æå‰å±•å¼€ã€‚
%    \begin{macrocode}
        \exp_after:wN
          \@@_save_version_date_aux:nnnn \l_@@_tmpa_tl
        {#2} {#1}
      }
      { \@@_save_version_date_aux:nnn {#1} {#2} {#2} }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_save_version_date_aux:nnnn}
% \begin{arguments}
%   \item åŽŸå¼€å§‹æ—¥æœŸ
%   \item åŽŸç»“æŸæ—¥æœŸï¼ˆæ˜¾ç„¶åº”æœ‰ |#1| &lt; |#2|ï¼‰
%   \item æ–°è¯»å…¥çš„æ—¥æœŸ
%   \item ç‰ˆæœ¬å·
% \end{arguments}
% å¦‚æžœ |#3| &lt; |#1|ï¼Œåˆ™è¯»å…¥æ—¥æœŸ |#3|ã€|#2|ï¼›
% å¦‚æžœ |#3| &gt; |#2|ï¼Œåˆ™è¯»å…¥æ—¥æœŸ |#1|ã€|#3|ã€‚
%    \begin{macrocode}
\cs_new_protected:Npn \@@_save_version_date_aux:nnnn #1#2#3#4
  {
    \@@_if_date_later:nnTF {#1} {#3}
      { \@@_save_version_date_aux:nnn {#4} {#3} {#2} }
      {
        \@@_if_date_later:nnT {#3} {#2}
          { \@@_save_version_date_aux:nnn {#4} {#1} {#3} }
      }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_save_version_date_aux:nnn}
% å°†ç‰ˆæœ¬å·å’Œæ—¥æœŸå­˜å…¥ \cs{g_@@_version_date_prop}ã€‚
% \begin{arguments}
%   \item ç‰ˆæœ¬å·
%   \item å¼€å§‹æ—¥æœŸ
%   \item ç»“æŸæ—¥æœŸ
% \end{arguments}
%    \begin{macrocode}
\cs_new_protected:Npn \@@_save_version_date_aux:nnn #1#2#3
  { \prop_gput:Nnn \g_@@_version_date_prop {#1} { {#2} {#3} } }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[TF]{\@@_if_date_later:nn}
% \begin{macro}{\@@_parse_date:w}
% æ¯”è¾ƒä¸¤ä¸ªæ—¥æœŸã€‚å¦‚æžœ |#1| åœ¨ |#2| ä¹‹åŽï¼Œåˆ™ä¸º |true|ï¼›åä¹‹ä¸º |false|ã€‚
% æ—¥æœŸçš„æ&nbsp;¼å¼ä¸º YYYY/MM/DDã€‚æ¯”è¾ƒæ–¹æ³•æ˜¯ç›´æŽ¥å°†æ—¥æœŸåŒ–æˆ 8 ä½æ•°å­—ï¼Œ
% æ‰€ä»¥æœˆã€æ—¥å‰çš„ 0 ä¸å¯ä»¥çœç•¥ã€‚
%    \begin{macrocode}
\prg_new_conditional:Npnn \@@_if_date_later:nn #1#2 { TF, T }
  {
    \if_int_compare:w
        \@@_parse_date:w #1 / / / 0 \q_stop &gt;
        \@@_parse_date:w #2 / / / 0 \q_stop \exp_stop_f:
      \prg_return_true:
    \else:
      \prg_return_false:
    \fi:
  }
\cs_new:Npn \@@_parse_date:w #1/#2/#3/ #4 \q_stop
  { #1#2#3 }
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}[int]{\CTEX@versionitem}
% ç‰ˆæœ¬æ¡ç›®æ&nbsp;‡ç­¾ã€‚å¦‚æžœç‰ˆæœ¬å·ä¸åœ¨ \cs{g_@@_version_date_prop} é‡Œé¢ï¼Œ
% åˆ™åˆ©ç”¨æœªå®šä¹‰çš„ \cs{BOOM} æŠ¥é”™ã€‚
%    \begin{macrocode}
\cs_new_protected:Npn \CTEX@versionitem #1 \efill
  {
    \@idxitem
    \prop_get:NnNTF \g_@@_version_date_prop
      {#1} \l_@@_tmpa_tl
      {
        \exp_after:wN
          \@@_print_version_date:nnn \l_@@_tmpa_tl
        {#1}
      }
      { \BOOM }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_print_version_date:nnn}
% è¾“å‡ºç‰ˆæœ¬å·å’Œæ—¥æœŸã€‚å¦‚æžœå¼€å§‹æ—¥æœŸå’Œç»“æŸæ—¥æœŸç›¸åŒï¼Œåˆ™åªè¾“å‡ºä¸€é¡¹ã€‚
% \begin{arguments}
%   \item å¼€å§‹æ—¥æœŸ
%   \item ç»“æŸæ—¥æœŸ
%   \item ç‰ˆæœ¬å·
% \end{arguments}
%    \begin{macrocode}
\cs_new_protected:Npn \@@_print_version_date:nnn #1#2#3
  {
    \noindent
    \Hy@raisedlink { \belowpdfbookmark {#3} { HD.#3 } }
    \textbf {#3} \hfill
    \hbox:n
      {
        \footnotesize
        \str_if_eq:nnTF {#1} {#2}
          { ( #1 ) } { ( #1 ~ -- ~ #2 ) }
      }
    \par \nopagebreak
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int]{\HDorg@theglossary}
% è¯¥å‘½ä»¤ç”± \pkg{hypdoc} å®åŒ…å®šä¹‰ï¼Œç”¨äºŽå­˜æ”¾æ&nbsp;‡å‡†æ–‡æ¡£ç±» \cls{book} ä¸­å®šä¹‰çš„
% \tn{theindex} å‘½ä»¤ã€‚æ­¤å¤„çš„è¡¥ä¸å°†åœ¨ç‰ˆæœ¬å·ä¸€è¡Œæœ€åŽåŠ&nbsp;ä¸Šä¿®æ”¹æ—¥æœŸã€‚
%    \begin{macrocode}
\ctex_patch_cmd:Nnn \HDorg@theglossary
  { \let \item \@idxitem }
  { \let \item \CTEX@versionitem }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int]{\@wrglossary}
% è¯¥å‘½ä»¤ç”± \LaTeXe{} å†…æ&nbsp;¸å®šä¹‰ï¼Œåˆç”± \pkg{hypdoc} å®åŒ…ä½œäº†ä¿®æ”¹ã€‚
% æ­¤å¤„çš„è¡¥ä¸ä½¿å¾—ä¿®è®¢è®°å½•æ¡ç›®çš„é¡µç&nbsp;èƒ½å¤ŸæŒ‡å‘å¯¹åº”è¡Œã€‚
%    \begin{macrocode}
\ctex_patch_cmd:Nnn \@wrglossary
  { hdpindex }
  {
    \ifnum \c@HD@hypercount = \z@
      hdpindex
    \else
      hdclindex { \the \c@HD@hypercount }
    \fi
  }
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{å‘½ä»¤è¡¥ä¸}
%
% \paragraph{\LaTeXe{} è¡¥ä¸}
%
% \begin{macro}[int]{\@addtocurcol}
% è°ƒæ•´æµ®åŠ¨ä½“ã€ä»£ç&nbsp;ç­‰ä¸Žæ–‡å­—çš„é—´è·ã€‚
% è§ \url{http://tex.stackexchange.com/a/40896}ã€‚
%    \begin{macrocode}
\ctex_patch_cmd:Nnn \@addtocurcol
  { \vskip \intextsep }
  {
    \edef \save@first@penalty { \the \lastpenalty } \unpenalty
    \ifnum \lastpenalty = \@M
      \unpenalty
    \else
      \penalty \save@first@penalty \relax
    \fi
    \ifnum \outputpenalty &lt; -\@Mii
      \addvspace\intextsep
      \vskip\parskip
    \else
      \addvspace\intextsep
    \fi
  }
\ctex_patch_cmd:Nnn \@addtocurcol
  {
    \vskip \intextsep
    \ifnum \outputpenalty &lt; -\@Mii
      \vskip -\parskip
    \fi
  }
  {
    \ifnum \outputpenalty &lt; -\@Mii
      \aftergroup \vskip \aftergroup \intextsep
      \aftergroup \nointerlineskip
    \else
      \vskip \intextsep
    \fi
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int]{\@getpen}
% å°†æ¢è¡Œæˆ–æ¢é¡µçš„æœ€å¤§ç½šå€¼ç”± \num{10000} æ”¹ä¸º \num{10001}ã€‚
%    \begin{macrocode}
\ctex_patch_cmd:Nnn \@getpen { \@M } { \@Mi }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int]{\l@section,\l@subsection}
% ä¿®æ”¹ç›®å½•æ¡ç›®çš„ç¼©è¿›ã€‚
%    \begin{macrocode}
\ctex_patch_cmd:Nnn \l@section    { 2.5em } { 1.5em }
\ctex_patch_cmd:Nnn \l@subsection { 2.5em } { 1.5em }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int]{\@thehead}
% ä¿®æ”¹é¡µçœ‰ï¼Œç¦ç”¨ \tn{MakeUppercase}ã€‚
%    \begin{macrocode}
\@@_preto_cmd:Nn \@thehead
  { \cs_set_eq:cN { MakeUppercase \space } \@iden }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\thebibliography}
% \begin{macro}[int]{\HDorg@thebibliography}
% å‚è€ƒæ–‡çŒ®ä¸€èŠ‚éœ€è¦ç¼–å·ã€‚
%    \begin{macrocode}
\ctex_patch_cmd:Nnn \HDorg@thebibliography
  { \section* } { \section }
\cs_set_eq:NN \thebibliography \HDorg@thebibliography
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\GlossaryParms}
% ä¿®æ”¹ä¿®è®¢è®°å½•ä¸­çš„ä¸€äº›ç¼©è¿›ã€‚
%    \begin{macrocode}
\@@_appto_cmd:Nn \GlossaryParms
  {
    \raggedcolumns
    \cs_set_eq:NN \Hy@writebookmark \HDorg@writebookmark
    \cs_set:Npn \@idxitem   { \par \hangindent 2em }
    \cs_set:Npn \subitem    { \@idxitem \hspace* { 1em } }
    \cs_set:Npn \subsubitem { \@idxitem \hspace* { 2em } }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int]{\HoLogo@LaTeXe}
% ç”±äºŽä½¿ç”¨äº† \pkg{unicode-math}ï¼Œéœ€è¦é¢å¤–ä¿®æ”¹ \pkg{hologo} ä¸­çš„
% \tn{LaTeXe} å‘½ä»¤ï¼Œä»¥ä½¿ç²—ä½“æ­£å¸¸æ˜¾ç¤ºã€‚
%    \begin{macrocode}
\ctex_patch_cmd:Nnn \HoLogo@LaTeXe
  { \hbox { \HOLOGO@MathSetup 2 $ _{ \textstyle \varepsilon } $ } }
  {
    \hbox
      {
        \mathsurround 0pt \relax
        2
        \if b \expandafter \@car \f@series \@nil
          $ _{ \textstyle \symbf { \varepsilon } } $
        \else
          $ _{ \textstyle \varepsilon } $
        \fi
      }
  }
%    \end{macrocode}
% \end{macro}
%
% \changes{v0.9}{2023/02/17}{[\pkg{fdudoc}] ä½¿ç”¨ \pkg{makeindex} å¤„ç†ç´¢å¼•å’Œä¿®è®¢è®°å½•ã€‚}
% \changes{v0.9}{2023/02/17}{[\pkg{fdudoc}] ä¸å†å¯¹ç´¢å¼•è¿›è¡Œæ±‰åŒ–ã€‚}
%
% \begin{macro}[int]{\NAT@citexnum}
% å°†å‚è€ƒæ–‡çŒ®å¼•ç”¨ä¸­çš„ hyphen æ”¹ä¸º en-dashã€‚
%    \begin{macrocode}
\ctex_patch_cmd:Nnn \NAT@citexnum
  { - \NAT@penalty }
  { \textendash \NAT@penalty }
%    \end{macrocode}
% \end{macro}
%
% \paragraph{\cls{l3doc} è¡¥ä¸}
%
%    \begin{macrocode}
%&lt;@@=codedoc&gt;
%    \end{macrocode}
%
% \begin{macro}{\list}
% \cls{l3doc} ä¼šåœ¨åˆ—è¡¨çŽ¯å¢ƒä¸­è®¾ç½® \kvopt{\tn{listparindent}}{\tn{z@}}ï¼Œ
% è¿™é‡Œå°†å…¶æ¢å¤ã€‚
%    \begin{macrocode}
\cs_set_eq:NN \list \@@_oldlist:nn
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_function_descr_start:w}
% æŠ‘åˆ¶é¦–æ®µçš„ \tn{parskip}ã€‚
%    \begin{macrocode}
\__fdudoc_patch_cmd:Nnn \@@_function_descr_start:w
  { \noindent }
  { \skip_vertical:n { -\parskip } \noindent }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_function_assemble:}
% åœ¨ \cls{l3doc} ä¸­ï¼Œ\env{function} çŽ¯å¢ƒé‡Œçš„ \env{syntax} å’Œ \env{descr} ç›’å­
% ä¸­é—´å­˜åœ¨ä¸€æ®µ \tn{med\-skip\-amount} çš„è·ç¦»ã€‚ä½†æ˜¯å¦‚æžœ \env{syntax} ç›’å­ä¸ºç©º
% ï¼ˆæœªä½¿ç”¨ \env{syntax} çŽ¯å¢ƒï¼‰ï¼Œå°±ä¼šæ˜¾å¾—ä¸å¥½çœ‹ã€‚æ­¤æ—¶é€šè¿‡æŠŠ \tn{medskipamount}
% è®¾ç½®ä¸ºé›¶æ¥ä¿®æ­£ã€‚è‹¥ç›’å­éžç©ºï¼Œåˆ™æŠŠ \tn{parskip} è¿˜å›žåŽ»ã€‚
%    \begin{macrocode}
\__fdudoc_preto_cmd:Nn \@@_function_assemble:
  {
    \box_if_empty:NTF \g_@@_syntax_box
      { \skip_zero:N \medskipamount }
      { \skip_add:Nn \medskipamount { \parskip } }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_typeset_functions:}
% è°ƒæ•´ \env{function} çŽ¯å¢ƒçš„å­—ä½“ã€‚
%    \begin{macrocode}
\__fdudoc_patch_cmd:Nnn \@@_typeset_functions:
  { \small \ttfamily } { \footnotesize \ttfamily }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_typeset_functions:}
% å‡å°‘å±•å¼€æ&nbsp;‡è®°ï¼ˆç”¨æ¥è¡¨æ˜Žä¸­è‹±æ–‡æ¨¡æ¿ä¸­çš„ä¸åŒç”¨æ³•ï¼‰å‰çš„ç©ºæ&nbsp;¼ã€‚
%    \begin{macrocode}
\__fdudoc_patch_cmd:Nnn \@@_typeset_expandability:
  { &amp; } { &amp; \skip_horizontal:n { -0.5em } }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_typeset_functions:,\@@_macro_init:,
%   \@@_macro_dump:}
% å·¦ä¾§è¾¹æ³¨çš„å‡½æ•°åˆ—è¡¨é‡‡ç”¨å•å€è¡Œè·ã€‚
%    \begin{macrocode}
\__fdudoc_preto_cmd:Nn \@@_typeset_functions:
  { \MacroFont }
\__fdudoc_patch_cmd:Nnn \@@_macro_init:
  { \hbox:n } { \MacroFont \hbox:n }
\__fdudoc_patch_cmd:Nnn \@@_macro_dump:
  { \hbox_unpack_drop:N } { \MacroFont \hbox_unpack_drop:N }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_meta_original:n}
% æ”¹ç”¨æ–‡æœ¬æ¨¡å¼æ˜¾ç¤ºå°–æ‹¬å·ã€‚
%    \begin{macrocode}
\__fdudoc_patch_cmd:Nnn \@@_meta_original:n
  { \ensuremath \langle } { \textlangle }
\__fdudoc_patch_cmd:Nnn \@@_meta_original:n
  { \ensuremath \rangle } { \textrangle }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_macro_end_style:n}
% ä¸æ˜¾ç¤º \env{macro} çŽ¯å¢ƒæœ€åŽçš„ â€œ(\emph{End definition for ...})â€ã€‚
%    \begin{macrocode}
\cs_set_eq:NN \@@_macro_end_style:n \use_none:n
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_typeset_TF:}
% å…³é—­ |TF| ä¸Šçš„è¶…é“¾æŽ¥ï¼Œå¹¶ä¸”ä¿è¯é¢œè‰²ä¸Žå‡½æ•°ä¸»ä½“ä¸€è‡´ã€‚
%    \begin{macrocode}
\cs_set_protected:Npn \@@_typeset_TF:
  {
    \group_begin:
      \exp_args:No \@@_if_macro_internal:nT \l_@@_tmpa_tl
        { \color [ gray ] { 0.5 } }
      \itshape TF
      \makebox [ 0 pt ] [ r ]
        {
          \color { red }
          \underline { \phantom { \itshape TF } \kern -0.1 em }
        }
    \group_end:
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_macro_typeset_one:nN}
% åœ¨ \env{macro} çŽ¯å¢ƒçš„ä¾§è¾¹æ&nbsp;ä¸­ï¼Œ\cls{l3doc} æ&nbsp;¹æ®å‘½ä»¤çš„é•¿çŸ­ï¼Œåˆ†åˆ«ç”¨
% æ™®é€šå­—ä½“å’Œç´§ç¼©å­—ä½“è¾“å‡ºã€‚ç„¶è€Œå¾ˆé•¿çš„å‘½ä»¤è¿˜æ˜¯ä¼šè¶…å‡ºé¡µè¾¹ã€‚è¿™é‡Œç”¨ç¼©æ”¾
% ç›’å­çš„æ‰‹æ®µä½¿å¾—é•¿å‘½ä»¤ä¹Ÿå¯æ­£å¸¸æ˜¾ç¤ºã€‚
%    \begin{macrocode}
\cs_set_protected:Npn \@@_macro_typeset_one:nN #1#2
  {
    \vbox_set:Nn \l_@@_macro_box
      {
        \MacroFont
        \vbox_unpack_drop:N \l_@@_macro_box
        \hbox_set:Nn \l_tmpa_box
          { \@@_print_macroname:nN {#1} #2 }
%    \end{macrocode}
% \tn{marginparwidth} å’Œ \tn{marginparsep} åˆ†åˆ«æ˜¯è¾¹æ³¨çš„å®½åº¦åŠå…¶åˆ°ç‰ˆå¿ƒçš„è·ç¦»ï¼Œ
% \tn{la\-bel\-sep} åˆ™æ˜¯ç¼–å·ç›’å­å³ç«¯ä¸Žæ¡ç›®é¦–è¡Œæ–‡æœ¬ä¹‹é—´çš„è·ç¦»ã€‚
%    \begin{macrocode}
        \dim_set:Nn \l_tmpa_dim
          { \marginparwidth - \labelsep - \marginparsep }
        \dim_compare:nNnT { \box_wd:N \l_tmpa_box } &gt; \l_tmpa_dim
          {
            \box_resize_to_wd_and_ht:Nnn \l_tmpa_box
              { \l_tmpa_dim } { \box_ht:N \l_tmpa_box }
          }
        \hbox_overlap_left:n
          {
            \box_use:N \l_tmpa_box
            \skip_horizontal:n { \marginparsep - \labelsep }
          }
      }
    \int_incr:N \l_@@_macro_int
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_print_macroname:nN}
% è¯¥å‡½æ•°ä¸å†éœ€è¦æ&nbsp;¹æ®å‘½ä»¤çš„é•¿çŸ­åˆ‡æ¢å­—ä½“ã€‚
%    \begin{macrocode}
\cs_set_protected:Npn \@@_print_macroname:nN #1#2
  {
    \strut
    \@@_get_hyper_target:xN
      {
        \exp_not:n {#1}
        \bool_if:NT #2 { \tl_to_str:n {TF} }
      }
      \l_@@_tmpa_tl
    \cs_if_exist:cTF { r@ \l_@@_tmpa_tl }
      { \exp_args:NNo \label@hyperref [ \l_@@_tmpa_tl ] }
      { \use:n }
      {
        \tl_set:Nn \l_@@_tmpa_tl {#1}
%    \end{macrocode}
% å‘½ä»¤ä¸­çš„ç©ºæ&nbsp;¼æ”¹ç”¨â€œ\textvisiblespaceâ€æ˜¾ç¤ºã€‚
%    \begin{macrocode}
        \tl_replace_all:Non \l_@@_tmpa_tl
          { \c_catcode_other_space_tl }
          { \fontspec_visible_space: }
        \@@_macroname_prefix:o \l_@@_tmpa_tl
        \@@_macroname_suffix:N #2
      }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_special_index_aux:nnnnnnn}
% è¯¥å‡½æ•°åœ¨ \cls{l3doc} ä¸­æœ¬æ¥åªæœ‰ 6 ä¸ªå‚æ•°ã€‚è¿™é‡Œå¢žåŠ&nbsp;äº†ä¸€ä¸ªï¼Œç”¨æ¥è¾…åŠ©æŽ’åºã€‚
% \begin{arguments}
%   \item é”®ï¼ˆå³å®åç§°å­—ç¬¦ä¸²ï¼Œç”¨æ¥æŽ’åºï¼‰
%   \item å®åç§°
%   \item ç´¢å¼•å¤´æŽ’åºå­—ç¬¦ä¸²ï¼ˆæŽ’åºï¼‰
%   \item ç´¢å¼•å¤´æ–‡å­—
%   \item ç´¢å¼•å¤´åŽç¼€å­—ç¬¦ä¸²ï¼ˆæŽ’åºï¼Œæ–°å¢žï¼‰
%   \item ç´¢å¼•å¤´åŽç¼€æ–‡å­—
%   \item ç´¢å¼•ç±»åž‹ï¼ˆ\opt{main}/\opt{usage} ç­‰ï¼‰
% \end{arguments}
%    \begin{macrocode}
\cs_new_protected:Npn \@@_special_index_aux:nnnnnnn #1#2#3#4#5#6#7
  {
    \tl_set:Nn \l_@@_index_escaped_key_tl {#1}
    \@@_quote_special_char:N \l_@@_index_escaped_key_tl
    \@@_special_index_set:Nn
      \l_@@_index_escaped_macro_tl {#2}
    \str_if_eq:onTF { \@currenvir } { macrocode }
      { \codeline@wrindex }
      {
        \str_case:nnF {#7}
          {
            { main  } { \codeline@wrindex }
            { usage } { \index }
          }
          { \HD@target \index }
      }
      {
        \tl_if_empty:nF { #3 #4 #5 #6 }
          { #3 #5 \actualchar #4 #6 \levelchar }
        \l_@@_index_escaped_key_tl
        \actualchar
        {
          \token_to_str:N \verbatim@font \c_space_tl
          \l_@@_index_escaped_macro_tl
        }
        \encapchar
        hdclindex { \the \c@HD@hypercount } {#7}
      }
  }
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{æ‚é¡¹}
%
% \begin{macro}{\StopSpecialIndexModule,
%   \@@_special_index_module:nnnnN}
% ä¸å¯¹ \cs{cs} å’Œ \cs{tn} ç­‰ç¼–ç´¢å¼•ã€‚ç”¨äºŽç›®å½•ã€ç´¢å¼•ç­‰ã€‚
%    \begin{macrocode}
\DeclareDocumentCommand \StopSpecialIndexModule { }
  {
    \cs_set_eq:NN
      \@@_special_index_module:nnnnN \use_none:nnnnn
  }
\tl_map_inline:nn { \actualchar \encapchar \levelchar }
  { \exp_args:Nx \DoNotIndex { \bslash \tl_to_str:N #1 } }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\meta}
% é‡å®šä¹‰ \cs{meta} å‘½ä»¤ï¼Œéœ€è¦ç¦ç”¨ä¸­æ–‡ã€è¥¿æ–‡ä¹‹é—´çš„ç©ºæ&nbsp;¼ã€‚
%    \begin{macrocode}
\RenewDocumentCommand \meta { m }
  {
    \group_begin:
      \sys_if_engine_xetex:T { \xeCJKsetup { CJKecglue = { } } }
      \@@_meta:n {#1}
    \group_end:
  }
%    \end{macrocode}
% \end{macro}
%
% é‡å®šå‘ \cls{l3doc} ä¸­çš„ä¸€äº›æç¤ºä¿¡æ¯ã€‚
%    \begin{macrocode}
\msg_redirect_name:nnn { l3doc } { foreign-internal    } { log }
\msg_redirect_name:nnn { l3doc } { print-changes-howto } { log }
\msg_redirect_name:nnn { l3doc } { print-index-howto   } { log }
%    \end{macrocode}
%
%    \begin{macrocode}
%&lt;@@=&gt;
\ExplSyntaxOff
%    \end{macrocode}
%
% \subsubsection{æŽ’ç‰ˆæ&nbsp;·å¼è®¾ç½®}
%
% ç›®å½•ä¸­ç¦æ­¢å¯¹ \cs{cs} å’Œ \cs{tn} ç­‰çš„ç´¢å¼•ã€‚
%    \begin{macrocode}
\AtBeginDocument{%
  \addtocontents{toc}{\StopSpecialIndexModule}}
%    \end{macrocode}
%
% è®¾ç½® PDF å­—ç¬¦ä¸²ä¸­çš„å‘½ä»¤æ›¿æ¢ã€‚
%    \begin{macrocode}
\pdfstringdefDisableCommands{%
  \let\path\meta
  \let\opt\@firstofone}
%    \end{macrocode}
%
% \begin{macro}[int]{\@multitoc@starttoc,\@starttoc}
% ç›®å½•åˆ†æ&nbsp;ï¼Œç›¸å½“äºŽè°ƒç”¨ \pkg{multitoc} å®åŒ…ã€‚
%    \begin{macrocode}
\let\@multitoc@starttoc\@starttoc
\renewcommand*\@starttoc[1]{%
  \begin{multicols}{2}%
    \@multitoc@starttoc{#1}%
  \end{multicols}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int]{\@makefntext}
% è°ƒæ•´è„šæ³¨æ–‡æœ¬ç¼©è¿›ã€‚
%    \begin{macrocode}
\renewcommand\@makefntext[1]{\parindent 0em\noindent\@makefnmark~#1}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\IndexLayout,\indexname}
% è°ƒæ•´ç´¢å¼•å¤–è§‚ã€‚
%    \begin{macrocode}
\IndexPrologue{%
  \section{\indexname}%
  \textit{æ„å¤§åˆ©ä½“çš„æ•°å­—è¡¨ç¤ºå¯¹åº”ç´¢å¼•é¡¹å‡ºçŽ°çš„é¡µç&nbsp;ï¼›
    å¸¦ä¸‹åˆ’çº¿çš„æ•°å­—è¡¨ç¤ºå®šä¹‰å¯¹åº”ç´¢å¼•é¡¹çš„ä»£ç&nbsp;è¡Œå·ï¼›
    å…¶ä»–åˆ™è¡¨ç¤ºä½¿ç”¨å¯¹åº”ç´¢å¼•é¡¹çš„ä»£ç&nbsp;è¡Œå·ã€‚}}
\def\IndexLayout{%
  \newgeometry{
    left   = 0.85 in,
    right  = 0.85 in,
    top    = 1.25 in,
    bottom = 1.00 in}%
  \setlength\IndexMin{0.5\textheight}%
  \ctexset{section/numbering=false}%
  \StopSpecialIndexModule}
\def\indexname{ä»£ç&nbsp;ç´¢å¼•}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\usage}
% æŽ§åˆ¶â€œæè¿°å¯¹åº”ç´¢å¼•é¡¹çš„é¡µç&nbsp;â€æ&nbsp;·å¼ã€‚åœ¨ \pkg{doc} å®åŒ…ä¸­çš„å®šä¹‰ä¸º\tn{textit}ã€‚
%    \begin{macrocode}
% \def\usage#1{\textsf{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\glossaryname}
% è°ƒæ•´ä¿®è®¢è®°å½•å¤–è§‚ã€‚
%    \begin{macrocode}
\GlossaryPrologue{\section{\glossaryname}}
\def\glossaryname{ä¿®è®¢è®°å½•}
%    \end{macrocode}
% \end{macro}
%
% å‚è€ƒæ–‡çŒ®ä½¿ç”¨å›½æ&nbsp;‡çš„é¡ºåºç¼–ç&nbsp;åˆ¶ã€‚
%    \begin{macrocode}
\bibliographystyle{gbt7714-numerical}
%    \end{macrocode}
%
% \changes{v0.7c}{2019/02/08}{[\pkg{fdudoc}] ä¿®æ”¹å®åŒ…æ‰‹å†Œä¸»è¦å­—ä½“ã€‚}
% \changes{v0.9}{2023/02/18}{[\pkg{fdudoc}] æ›´æ–°å®åŒ…æ‰‹å†Œå­—ä½“ã€‚}
%
% è¥¿æ–‡å­—ä½“ã€‚
%    \begin{macrocode}
\setmainfont{LibertinusSerif}[
  Extension      = .otf,
  UprightFont    = *-Regular,
  BoldFont       = *-Bold,
  ItalicFont     = *-Italic,
  BoldItalicFont = *-BoldItalic,
  Scale          = 1.1]
\setsansfont{IBMPlexSansCondensed}[
  Extension      = .otf,
  UprightFont    = *-Regular,
  BoldFont       = *-Bold,
  ItalicFont     = *-Italic,
  BoldItalicFont = *-BoldItalic]
\setmonofont{lmmonolt10}[
  Extension      = .otf,
  UprightFont    = *-regular,
  BoldFont       = *-bold,
  ItalicFont     = *-oblique,
  BoldItalicFont = *-boldoblique]
\setmathfont{LibertinusMath-Regular.otf}
%    \end{macrocode}
%
% ä¸­æ–‡å­—ä½“ã€‚
%    \begin{macrocode}
\setCJKmainfont{SourceHanSerifSC}[
  Extension       = .otf,
  UprightFont     = *-Regular,
  BoldFont        = *-Bold,
  ItalicFont      = FandolKai-Regular,
  UprightFeatures = { CharacterWidth = Full },
  BoldFeatures    = { CharacterWidth = Full }]
\setCJKsansfont{SourceHanSansSC}[
  Extension       = .otf,
  UprightFont     = *-Regular,
  BoldFont        = *-Bold,
  CharacterWidth  = Full]
\setCJKmonofont{SourceHanSansSC}[
  Extension       = .otf,
  UprightFont     = *-Normal,
  BoldFont        = *-Bold,
  AutoFakeSlant   = 0.1763, % = tan(10 deg)
  Scale           = 0.9,
  CharacterWidth  = Full]
%    \end{macrocode}
%
% ç‰ˆå¼æŽ’ç‰ˆæ&nbsp;¼å¼ã€‚
%    \begin{macrocode}
\ctexset{
  section/name        = {ç¬¬,èŠ‚},
  section/format+     = \raggedright,
  paragraph/runin     = false,
  paragraph/numbering = false,
  punct               = kaiming}
\xeCJKsetwidth{Â·}{0.5em}
\setcounter{secnumdepth}{4}
\setcounter{tocdepth}{3}
\pagestyle{plain}
%    \end{macrocode}
%
% å•ä½è®¾ç½®ï¼ˆ\pkg{siunitx} å®åŒ…ï¼‰ã€‚
%    \begin{macrocode}
\sisetup{
  inter-unit-product = \ensuremath{{}\cdot{}},
  range-phrase       = {--},
  uncertainty-mode   = separate}
%    \end{macrocode}
%
% è¶…é“¾æŽ¥è®¾ç½®ï¼ˆ\pkg{hyperref} å®åŒ…ï¼‰ã€‚
%    \begin{macrocode}
\hypersetup{
  bookmarksdepth    = 4,
  bookmarksnumbered = true,
  colorlinks        = true,
  citecolor         = MaterialGreen,
  linkcolor         = MaterialPink,
  urlcolor          = MaterialIndigo}
%    \end{macrocode}
%
% æµ®åŠ¨ä½“æ&nbsp;‡é¢˜è®¾ç½®ï¼ˆ\pkg{caption} å®åŒ…ï¼‰ã€‚
%    \begin{macrocode}
\captionsetup{labelsep=quad, font+=bf}
%    \end{macrocode}
%
% å±…ä¸­ä¸”è‡ªåŠ¨å»¶ä¼¸çš„åˆ—æ&nbsp;¼å¼ï¼ˆåˆ©ç”¨ \pkg{tabularx} å®åŒ…çš„ |X| æ&nbsp;¼å¼æ‰©å±•ï¼‰ã€‚
%    \begin{macrocode}
\newcolumntype{C}{&gt;{\centering\arraybackslash}X}
%    \end{macrocode}
%
% è®¾ç½®æ&nbsp;‡å‡†åˆ—è¡¨çŽ¯å¢ƒæ&nbsp;·å¼ï¼ˆ\pkg{enumitem} å®åŒ…ï¼‰ã€‚
%    \begin{macrocode}
\setlist{noitemsep, topsep=\smallskipamount}
\setlist[1]{labelindent=\parindent}
\setlist[enumerate]{leftmargin=*}
\setlist[itemize]{leftmargin=*}
%    \end{macrocode}
%
% \begin{environment}{optdesc}
% ç”¨äºŽæè¿°å„é€‰é¡¹ã€‚è®¾ç½®æ¡ç›®é—´è·ä¸º \tn{marginparsep}ï¼Œä¸Ž \cls{l3doc} ä¸€è‡´ã€‚
%    \begin{macrocode}
\newlist{optdesc}{description}{3}
\setlist[optdesc]{
  font          = \mdseries\small\ttfamily,
  align         = right,
  listparindent = \parindent,
  labelsep      = \marginparsep,
  labelindent   = -\marginparsep,
  leftmargin    = *}
%    \end{macrocode}
% \end{environment}
%
%^^A TODO: \begin{environment}{tablenotes}
% \begin{macro}{tablenotes}
% \begin{macro}[int]{tpt@id}
% é‡æ–°å®šä¹‰ \pkg{threeparttable} åŒ…çš„ \env{tablenotes} çŽ¯å¢ƒï¼Œç”¨äºŽè¡¨æ&nbsp;¼æ³¨é‡Šã€‚
% æ­¤å¤„è®¾å®šä¸ºæ‚¬æŒ‚ç¼©è¿›ã€‚
%    \begin{macrocode}
\renewlist{tablenotes}{description}{1}
\setlist[tablenotes]{
  format      = \normalfont\itshape\tnote@item,
  labelwidth  = 0.5em,
  itemindent  = 0pt,
  rightmargin = \tabcolsep,
  leftmargin  = \the\dimexpr\tabcolsep+1em\relax,
  after       = \@noparlisttrue}
\AtBeginEnvironment{tablenotes}{%
  \setlength\parindent{2\ccwd}%
  \normalfont\footnotesize}
\AtBeginEnvironment{threeparttable}{%
  \stepcounter{tpt@id}%
  \edef\curr@tpt@id{tpt@\arabic{tpt@id}}}
\newcounter{tpt@id}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}[int]{\tnote@item,\TPTtagStyle}
% ä¸º \tn{tnote} å¢žåŠ&nbsp;è¶…é“¾æŽ¥ã€‚
%    \begin{macrocode}
\def\tnote@item#1{%
  \Hy@raisedlink{\hyper@anchor{\curr@tpt@id-#1}}#1}
\def\TPTtagStyle#1{\textit{\hyperlink{\curr@tpt@id-#1}{#1}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\UrlAlphabet,\UrlDigits}
% ç½‘å€æ–­è¡Œã€‚\tn{UrlOrds}ã€\tn{UrlAlphabet} å’Œ \tn{UrlDigits}
% åˆ†åˆ«è®°å½•äº†ç‰¹æ®Šç¬¦å·ã€å­—æ¯å’Œæ•°å­—ï¼ŒæŠŠå®ƒä»¬ä¾æ¬¡é™„åŠ&nbsp;åœ¨ \pkg{url} å®åŒ…
% æä¾›çš„å‘½ä»¤ \tn{UrlBreaks} ä¹‹åŽï¼Œå³å¯å…è®¸åœ¨è¿™äº›ä½ç½®å¤„æ–­è¡Œã€‚ä¸Ž
% \cs{fdu_allow_url_break:} çš„åŽŸç†æ˜¯ç›¸åŒçš„ã€‚
%    \begin{macrocode}
\def\UrlAlphabet{%
  \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j%
  \do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t%
  \do\u\do\v\do\w\do\x\do\y\do\z\do\A\do\B\do\C\do\D%
  \do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M\do\N%
  \do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X%
  \do\Y\do\Z}
\def\UrlDigits{%
  \do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9\do\0}
\g@addto@macro\UrlBreaks{\UrlOrds}
\g@addto@macro\UrlBreaks{\UrlAlphabet}
\g@addto@macro\UrlBreaks{\UrlDigits}
%    \end{macrocode}
% \end{macro}
%
% ä¸å¯¹ä¸‹åˆ—å„é¡¹æ·»åŠ&nbsp;ç´¢å¼•ã€‚
%    \begin{macrocode}
\DoNotIndex{\begin,\end,
  \a,\b,\c,\d,\e,\f,\g,\h,\i,\j,\k,\l,\m,
  \n,\o,\p,\q,\r,\s,\t,\u,\v,\w,\x,\y,\z,
  \A,\B,\C,\D,\E,\F,\G,\H,\I,\J,\K,\L,\M,
  \N,\O,\P,\Q,\R,\S,\T,\U,\V,\W,\X,\Y,\Z,
  \0,\1,\2,\3,\4,\5,\6,\7,\8,\9}
%    \end{macrocode}
%
% å¯ç”¨ç´¢å¼•ã€äº¤å‰å¼•ç”¨ã€åŽ†å²è®°å½•ã€‚
%    \begin{macrocode}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
%    \end{macrocode}
%
% \subsubsection{æ–‡æ¡£å±‚å‘½ä»¤}
%
% \changes{v0.9}{2023/02/18}{[\pkg{fdudoc}] è°ƒæ•´ä¸­è‹±æ–‡æ&nbsp;‡è®°ã€‚}
%
% \begin{macro}{\exptarget,\rexptarget,\expstar,\rexpstar,
%   \__codedoc_typeset_exp:,\__codedoc_typeset_rexp:}
% éƒ¨åˆ†å‘½ä»¤ä¹‹åŽçš„æ&nbsp;‡è®°ï¼Œè¡¨æ˜Žä¸­è‹±æ–‡æ¨¡æ¿ä¸­çš„ä¸åŒç”¨æ³•ã€‚è¿™é‡Œçš„â€œexpâ€å’Œâ€œrexpâ€
% åˆ†åˆ«æºè‡ª \LaTeX3 ä¸­çš„â€œexpandableâ€å’Œâ€œrestricted-expandableâ€ã€‚
%    \begin{macrocode}
\newcommand*\exptarget{\Hy@raisedlink{\hypertarget{expstar}{}}}
\newcommand*\rexptarget{\Hy@raisedlink{\hypertarget{rexpstar}{}}}
\newcommand*\expstar{%
  \hyperlink{expstar}{\textsuperscript{\rmfamily\scshape en}}}
\newcommand*\rexpstar{%
  \hyperlink{rexpstar}{\textsuperscript{\rmfamily\scshape zh}}}
\ExplSyntaxOn
\cs_set_eq:NN \__codedoc_typeset_exp:  \expstar
\cs_set_eq:NN \__codedoc_typeset_rexp: \rexpstar
\ExplSyntaxOff
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\marg,\oarg,\parg}
% å‡&nbsp;ç§å‘½ä»¤å‚æ•°ï¼š
% \begin{itemize}
%   \item å¿…é€‰å‚æ•°ï¼š|{|\meta{arg}|}|ï¼›
%   \item å¯é€‰å‚æ•°ï¼š|[|\meta{arg}|]|ï¼›
%   \item å›¾å½¢å‚æ•°ï¼š|(|\meta{arg}|)|ã€‚
% \end{itemize}
%    \begin{macrocode}
\renewcommand*\marg[1]{\{\meta{#1}\}}
\renewcommand*\oarg[1]{[\meta{#1}]}
\renewcommand*\parg[1]{(\meta{#1})}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\opt}
% é€‰é¡¹åã€‚
%    \begin{macrocode}
\DeclareDocumentCommand\opt{m}{\texttt{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\kvopt}
% \meta{key} |=| \meta{value} åž‹é€‰é¡¹ã€‚
%    \begin{macrocode}
\DeclareDocumentCommand\kvopt{mm}
  {\texttt{#1\breakablethinspace=\breakablethinspace#2}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\breakablethinspace}
% å…è®¸æ¢è¡Œçš„ç»†é—´è·ã€‚
%    \begin{macrocode}
\def\breakablethinspace{\hskip 0.16667em\relax}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\syntaxopt,\defaultval}
% \begin{macro}[int]{\syntaxopt@aux,\defaultval@aux}
% \env{syntax} ä¸­çš„é€‰é¡¹åŠå‘½ä»¤é€‰é¡¹ã€‚
% |@aux| ç»“å°¾çš„ä¸¤ä¸ªå‘½ä»¤ç”¨äºŽå®šä¹‰åˆ©ç”¨ |&lt;&gt;| å’Œ |()| çš„ç®€å†™å½¢å¼ã€‚
%    \begin{macrocode}
\def\syntaxopt#1{\textit{#1}}
\def\defaultval#1{\textbf{\textup{#1}}}
\def\syntaxopt@aux#1&gt;{\syntaxopt{#1}}
\def\defaultval@aux#1){\defaultval{#1}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\orbar,\TF,\TTF,\TFF}
% \env{syntax} ä¸­çš„é€‰é¡¹åˆ†éš”ç¬¦ï¼Œä»¥åŠ \opt{true} æˆ– \opt{false}
% é€‰é¡¹çš„å‡&nbsp;ç§å¿«æ·æ–¹å¼ã€‚
%    \begin{macrocode}
\def\orbar{\textup{\textbar}}
\def\TF{true\orbar false}
\def\TTF{\defaultval{true}\orbar false}
\def\TFF{true\orbar\defaultval{false}}
%    \end{macrocode}
% \end{macro}
%
% \begin{environment}{arguments}
% æ”¾åœ¨ \env{macro} çŽ¯å¢ƒä¸­ï¼Œç”¨äºŽæè¿°å¯¹åº”å‘½ä»¤çš„å‚æ•°ã€‚\cls{l3doc} ä¸­çš„å®šä¹‰
% \opt{labelsep} è®¾ç½®ä¸å¤ªåˆç†ï¼Œä¼šä½¿æ&nbsp;‡ç­¾è¢«è¦†ç›–ï¼Œè¿™é‡Œé‡æ–°å®šä¹‰ã€‚
%    \begin{macrocode}
\DeclareDocumentEnvironment{arguments}{}
  {\enumerate[label={\texttt{\#\arabic*:~}}, labelsep=0pt, nolistsep]}
  {\endenumerate}
%    \end{macrocode}
% \end{environment}
%
% \begin{macro}{\TeX,\LaTeX,\LaTeXe,
%   \pdfTeX,\pdfLaTeX,\XeTeX,\XeLaTeX,\LuaTeX,\LuaLaTeX,
%   \AmSLaTeX,\TeXLive,\MiKTeX,\BibTeX,\biber,\TikZ}
% \TeX{} ç›¸å…³æ&nbsp;‡å¿—ã€‚
%    \begin{macrocode}
\def\TeX{\hologo{TeX}}
\def\LaTeX{\hologo{LaTeX}}
\def\LaTeXe{\hologo{LaTeXe}}
\def\pdfTeX{\hologo{pdfTeX}}
\def\pdfLaTeX{\hologo{pdfLaTeX}}
\def\XeTeX{\hologo{XeTeX}}
\def\XeLaTeX{\hologo{XeLaTeX}}
\def\LuaTeX{\hologo{LuaTeX}}
\def\LuaLaTeX{\hologo{LuaLaTeX}}
\def\AmSLaTeX{\hologo{AmSLaTeX}}
\def\TeXLive{\TeX\ Live}
\def\MiKTeX{\hologo{MiKTeX}}
\def\BibTeX{\hologo{BibTeX}}
\def\biber{\hologo{biber}}
%    \end{macrocode}
% è¯¥å®šä¹‰æ¥è‡ª \file{pgfmanual-en-macros.tex}ã€‚
%    \begin{macrocode}
\def\TikZ{Ti\emph{k}Z}
%    \end{macrocode}
% \end{macro}
%
% \changes{v0.9}{2023/02/17}{[\pkg{fdudoc}] ç§»é™¤å¤šä½™çš„æ–‡æ¡£å±‚å®šä¹‰ã€‚}
%
% \paragraph{ç¤ºä¾‹ä»£ç&nbsp;çŽ¯å¢ƒ}
%
% \pkg{listings} å®åŒ…ä¸­è¿žå­—ç¬¦ |-| åŽŸæœ¬ä»¥æ•°å­¦æ¨¡å¼è¾“å‡ºï¼Œæ­¤å¤„æ”¹ä¸ºæ™®é€šæ–‡æœ¬ã€‚
% è§ \url{https://tex.stackexchange.com/a/33188}ã€‚
%    \begin{macrocode}
\lst@CCPutMacro\lst@ProcessOther{"2D}{\lst@ttfamily{-{}}{-{}}}
\@empty\z@\@empty
%    \end{macrocode}
%
% \changes{v0.5}{2017/09/05}{[\pkg{fdudoc}] ç§»é™¤ \pkg{listings} å…³é”®è¯å®šä¹‰æ–‡ä»¶ã€‚}
%
% å®šä¹‰å‡&nbsp;ç§ä»£ç&nbsp;æ&nbsp;·å¼ã€‚
% \begin{macro}[int]{style@base}
%    \begin{macrocode}
\lstdefinestyle{style@base}{
  basewidth       = 0.525 em,
  gobble          = 3,
  lineskip        = 2 pt,
  frame           = l,
  framerule       = 1 pt,
  framesep        = 0 pt,
  escapeinside    = {(*}{*)},
  basicstyle      = \small\ttfamily\color{MaterialGrey900},
  keywordstyle    = \bfseries\color{MaterialIndigo},
  commentstyle    = \itshape\color{MaterialGrey600},
  stringstyle     = \color{MaterialRed},
  backgroundcolor = \color{MaterialGrey50}
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int]{style@shell}
%    \begin{macrocode}
\lstdefinestyle{style@shell}{
  style      = style@base,
  rulecolor  = \color{MaterialPink},
  language   = bash,
  alsoletter = {-},
  emphstyle  = \color{MaterialGreen800}
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int]{style@latex}
%    \begin{macrocode}
\lstdefinestyle{style@latex}{
  style      = style@base,
  rulecolor  = \color{MaterialIndigo},
  language   = [LaTeX]TeX,
  alsoletter = {*, -},
  texcsstyle = *\color{MaterialDeepOrange},
  emphstyle  = [1]\color{MaterialGreen800},
  emphstyle  = [2]\color{MaterialTeal}
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int]{style@syntax}
%    \begin{macrocode}
\lstdefinestyle{style@syntax}{
  basewidth    = 0.525 em,
  gobble       = 6,
  escapeinside = {(*}{*)},
  language     = [LaTeX]TeX,
  alsoletter   = {*, -},
  basicstyle   = \footnotesize\ttfamily\color{MaterialGrey900},
  keywordstyle = \bfseries\color{MaterialIndigo},
  commentstyle = \itshape\color{MaterialGrey600},
  texcsstyle   = *\color{MaterialDeepOrange},
  emphstyle    = [1]\color{MaterialGreen800},
  emphstyle    = [2]\color{MaterialTeal}
}
%    \end{macrocode}
% \end{macro}
%
% \begin{environment}{shellexample}
% \begin{environment}{latexexample}
% Shell å’Œ \LaTeX{} ç¤ºä¾‹ä»£ç&nbsp;ã€‚
%    \begin{macrocode}
\lstnewenvironment{shellexample}[1][]{%
  \lstset{style=style@shell, #1}}{}
\lstnewenvironment{latexexample}[1][]{%
  \lstset{style=style@latex, #1}}{}
%    \end{macrocode}
% \end{environment}
% \end{environment}
%
% \begin{environment}{fdusyntax}
% è¯­æ³•è¯´æ˜Žã€‚ç”¨äºŽä»£æ›¿ \cls{l3doc} ä¸­çš„ \env{syntax} çŽ¯å¢ƒã€‚
%    \begin{macrocode}
\lstnewenvironment{fdusyntax}[1][]{%
  \lstset{style=style@syntax, #1}\vspace{-1.8ex}}{}
%&lt;/doc&gt;
%    \end{macrocode}
% \end{environment}
%
% \changes{v0.7c}{2019/03/15}{ä¸å†é™„å¸¦ \pkg{latexmk} é…ç½®æ–‡ä»¶ã€‚}
%
% \clearpage
%
% \end{implementation}
%
</pre></body></html>