<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% \iffalse meta-comment
% !TEX program  = XeLaTeX
%&lt;*internal&gt;
\iffalse
%&lt;/internal&gt;
%&lt;*readme&gt;
Terminal simulation based on tcolorbox and minted/listings
=======

`termsim` is a LaTeX package developed based on tcolorbox and minted/listings, which provides a environment `terminal`(`terminal*`) and a macro `\termfile`(`\termfile*`) to simulate Win10, Ubuntu and Mac terminal.

The `terminal`(`terminal*`) evironment create a tcolorbox to simulate terminal with the eviroment body and the `\termfile`(`\termfile*`) macro from a source file.

The OS type was selected from win10, mac, or ubuntu and
the terminal theme was selected from dark, light, or with key-value option.

All options can be set with `\termset` macro or `terminal`(`terminal*`) eniroment's and
`\termfile`(`\termfile*`) macro's option

You can read the manual (in Chinese) for more details and examples.

Contributing
------------

1. github repository:
    1. repository: [termsim](https://github.com/registor/termsim)
    2. Issues and pull requests are welcome. [issue](https://github.com/registor/termsim/issues) or [pull request](https://github.com/registor/termsim/pulls).

2. gitee repository:
    1. repository: [termsim](https://gitee.com/nwafu_nan/termsim)
    2. Issues and pull requests are welcome. [issue](https://gitee.com/nwafu_nan/termsim/issues) or [pull request](https://gitee.com/nwafu_nan/termsim/pulls).

åŸºäºŽtcolorboxçš„ç»ˆç«¯æ¨¡æ‹Ÿå®åŒ…
=======

`termsim`æ˜¯ä¸€ä¸ªåŸºäºŽtcolorboxçš„ç”¨LaTeX3å¼€å‘çš„ç»ˆç«¯æ¨¡æ‹ŸLaTeXå®åŒ…ï¼Œå®ƒæä¾›äº†ç”¨äºŽæ¨¡æ‹Ÿç»ˆç«¯çª—å£çš„`terminal`(`terminal*`)çŽ¯å¢ƒå’Œ`\termfile`(`\termfile*`)å‘½ä»¤ï¼Œä»¥æ¨¡æ‹ŸWin10ã€Ubuntuæˆ–Macçš„ç»ˆç«¯çª—å£ã€‚

`terminal`(`terminal*`)çŽ¯å¢ƒæ&nbsp;¹æ®çŽ¯å¢ƒå†…å®¹åˆ›å»ºä¸€ä¸ª`tcolorbox`ç›’å­ç”¨äºŽæ¨¡æ‹Ÿç»ˆç«¯çª—å£ï¼Œ
`\termfile`(`\termfile*`)å‘½ä»¤æ&nbsp;¹æ®è½½å…¥çš„æ–‡ä»¶å†…å®¹åˆ›å»ºä¸€ä¸ª`tcolorbox`ç›’å­ç”¨äºŽæ¨¡æ‹Ÿç»ˆç«¯çª—å£ã€‚

å¯ä»¥é€šè¿‡`terminal`(`terminal*`)çŽ¯å¢ƒæˆ–`\termfile`(`\termfile*`)å‘½ä»¤çš„`key-value`é€‰é¡¹è®¾ç½®æ“ä½œç³»ç»Ÿç±»åž‹(win10ã€macæˆ–ubuntu)ï¼Œå¹¶å¯é€‰æ‹©æš—è‰²(dark)ã€äº®è‰²(light)æˆ–ç™½è‰²(white)é¢œè‰²ä¸»é¢˜ã€‚

æ‰€æœ‰é€‰é¡¹å³å¯ä»¥é€šè¿‡çŽ¯å¢ƒæˆ–å‘½ä»¤é€‰é¡¹è®¾ç½®ï¼Œä¹Ÿå¯ä»¥é€šè¿‡`\termset`å‘½ä»¤è¿›è¡Œè®¾ç½®ã€‚

å¯ä»¥é€šè¿‡é˜…è¯»å®åŒ…æ‰‹å†Œ(ä¸­æ–‡)ä»¥ä¹Ÿè§£è¯¥å®åŒ…æ›´å¤šçš„ä½¿ç”¨ç»†èŠ‚å’Œä½¿ç”¨æ&nbsp;·ä¾‹ã€‚

###  å‚ä¸Žè´¡çŒ®
---------------------

1. githubä»“åº“:
    (1). ä»“åº“åœ°å€: [termsim](https://github.com/registor/termsim)
    (2). Issueså’ŒPR: [issue](https://github.com/registor/termsim/issues) or [pull request](https://github.com/registor/termsim/pulls).

2. giteeä»“åº“:
    (1). ä»“åº“åœ°å€: [termsim](https://gitee.com/nwafu_nan/termsim)
    (2). Issues and PR: [issue](https://gitee.com/nwafu_nan/termsim/issues) or [pull request](https://gitee.com/nwafu_nan/termsim/pulls).

Copyright and Licence
---------------------

    Copyright (C) 2020-2021 by Nan Geng &lt;nangeng@nwafu.edu.cn&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. This version of this license is in
       http://www.latex-project.org/lppl/lppl-1-3c.txt
    and 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 Nan Geng.

    This package consists of the file  termsim.dtx,
                 and the derived files termsim.sty,
                                       termsim.pdf,
                                       termsim.ins,
                                       README.md (this file).

%&lt;/readme&gt;
%&lt;*internal&gt;
\fi
\begingroup
  \def\temp{LaTeX2e}
\expandafter\endgroup\ifx\temp\fmtname\else
\csname fi\endcsname
%&lt;/internal&gt;
%&lt;*install&gt;

\input ctxdocstrip %

\let\MetaPrefix\relax

\preamble

    Copyright (C) 2020-2021 by Nan Geng &lt;nangeng@nwafu.edu.cn&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. This version of this license is in
       http://www.latex-project.org/lppl/lppl-1-3c.txt
    and 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 Nan Geng.

--------------------------------------------------------------------------

\endpreamble

\postamble

    This package consists of the file  termsim.dtx,
                 and the derived files termsim.sty,
                                       termsim.pdf,
                                       termsim.ins,
                                       README.md.
\endpostamble

\declarepostamble\emptypostamble
\endpostamble

\def\MetaPrefix{-- }


\let\MetaPrefix\DoubleperCent

\generate
  {
%&lt;/install&gt;
%&lt;*internal&gt;
    \usedir{source/xelatex/termsim}
    \file{termsim.ins} {\from{\jobname.dtx}{install}}
%&lt;/internal&gt;
%&lt;*install&gt;
    \usedir{xetex/xelatex/termsim}
    \file{termsim.sty} {\from{\jobname.dtx}{package}}
    \nopreamble\nopostamble
    \usedir{doc/xelatex/termsim}
    \file{README.md}   {\from{\jobname.dtx}{readme}}
  }

\endbatchfile
%&lt;/install&gt;
%&lt;*internal&gt;
\fi
%&lt;/internal&gt;
%&lt;package&gt;\NeedsTeXFormat{LaTeX2e}[2020/10/01]
%&lt;package&gt;\RequirePackage{expl3}
%&lt;+package&gt;\GetIdInfo$Id: termsim.dtx 1.1.1 2021-12-26 08:00:00 +0800 Nan Geng &lt;nangeng@nwafu.edu.cn&gt; $
%&lt;package&gt;  {Terminal simulation with tcolorbox and minted/listings.}
%&lt;package&gt;\ProvidesExplPackage{\ExplFileName}
%&lt;package&gt;  {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
%&lt;*driver&gt;
\documentclass{ctxdoc}
\usepackage{minted}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{xcolor-material}
\usepackage{termsim}
\NewDocumentCommand{\init}{+v}{\hspace{\fill}åˆå§‹å€¼~=~\textcolor{blue}{\bfseries#1}}
\DeclareDocumentCommand\opt{m}{\texttt{#1}}
\DeclareDocumentCommand\kvopt{mm}
  {\texttt{#1\breakablethinspace=\breakablethinspace#2}}
\def\breakablethinspace{\hskip 0.16667em\relax}
\begin{document}
%&lt;!--CODEDOC--&gt;  \DisableImplementation
  \EnableImplementation
  \DocInput{\jobname.dtx}
  \IndexLayout
  \PrintChanges
  \PrintIndex
\end{document}
%&lt;/driver&gt;
% \fi
%
% \changes{v1.0.0}{2021/12/14}{å¼€å§‹ç¼–å†™æ¨¡æ¿}
%
% \CheckSum{318}
% \GetFileId{termsim.sty}
%
% \CharacterTable
%  {Upper-case    \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
%   Lower-case    \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
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&amp;
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \&lt;
%   Equals        \=     Greater than  \&gt;     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
%
% \title{\bfseries\pkg{termsim}ï¼šç»ˆç«¯çª—å£æ¨¡æ‹Ÿå®åŒ…\\\bfseries\pkg{termsim}ï¼šterminal simulation package}
% \author{è€¿æ¥&nbsp;\\ \path{nangeng@nwafu.edu.cn}}
% \date{\filedate\qquad\fileversion\thanks{\url{https://github.com/registor/termsim}}\thanks{\url{https://gitee.com/nwafu_nan/termsim}}}
% \maketitle
%
% \begin{documentation}
%
% \begin{abstract}
%
% \pkg{termsim} æ˜¯ä¸€ä¸ªåŸºäºŽ\pkg{tcolorbox}å®åŒ…ï¼Œç”¨\LaTeX3 å¼€å‘çš„ \LaTeX å®åŒ…ï¼Œ
% å®ƒæä¾›äº†ç”¨äºŽæ¨¡æ‹ŸWin10ã€Ubuntuå’ŒMacçš„ç»ˆç«¯çª—å£çš„\env{terminal}çŽ¯å¢ƒå’Œ\tn{termfile}å‘½ä»¤ï¼Œ
% \env{terminal}çŽ¯å¢ƒå°†çŽ¯å¢ƒä¸­çš„å†…å®¹åœ¨æ¨¡æ‹Ÿçš„ç»ˆç«¯çª—å£ä¸­è¾“å‡ºï¼Œ
% è€Œ\tn{termfile}å‘½ä»¤ç”¨äºŽå°†æŒ‡å®šçš„æ–‡ä»¶è¯»å…¥åŽåœ¨æ¨¡æ‹Ÿçš„ç»ˆç«¯çª—å£ä¸­è¾“å‡ºã€‚
% åŒæ—¶æä¾›äº†\env{terminal*}çŽ¯å¢ƒå’Œ\tn{termfile*}å‘½ä»¤ï¼Œç”¨äºŽæ¨¡æ‹Ÿå¸¦åº•çº¿æ³¨é‡Šçš„ç»ˆç«¯çª—å£ã€‚
% æ“ä½œç³»ç»Ÿç±»åž‹å’Œç»ˆç«¯çª—å£é¢œè‰²ä¸»é¢˜ç­‰æ&nbsp;·å¼ï¼Œ
% å¯ä»¥é€šè¿‡\tn{termset}å‘½ä»¤æˆ–\env{terminal}(\env{terminal*})çŽ¯å¢ƒå’Œ
% \tn{termfile}(\tn{termfile*})å‘½ä»¤çš„å¯é€‰é¡¹è¿›è¡Œè®¾ç½®ã€‚
%
% \end{abstract}
%
% \tableofcontents
%
% \section{ç®€è¦è¯´æ˜Ž}
%
% \pkg{termsim} æ˜¯ä¸€ä¸ªç”¨äºŽæ¨¡æ‹ŸWin10ã€Ubuntuå’ŒMacç»ˆç«¯çª—å£çš„\LaTeX{}å®åŒ…ï¼Œ
% ç”¨äºŽå®žçŽ°å¯¹Win10ã€Macæˆ–Ubuntuç»ˆç«¯çª—å£çš„æ¨¡æ‹ŸæŽ’ç‰ˆã€‚
%
% \section{ç”¨æˆ·æŽ¥å£}
%
% \subsection{\env{terminal}å’Œ\env{terminal*}çŽ¯å¢ƒ}
%
% \begin{function}[added=2021-12-17,updated=2021-12-17]{terminal,terminal*}
%   \begin{syntax}
%     \tn{begin}\{terminal\} \oarg{å¤–è§‚é€‰é¡¹} \Arg{çª—å£æ&nbsp;‡é¢˜}
%     .....
%     \tn{end}\{terminal\}
%
%     \tn{begin}\{terminal*\} \oarg{å¤–è§‚é€‰é¡¹} \oarg{åº•çº¿æ³¨é‡Š} \Arg{çª—å£æ&nbsp;‡é¢˜}
%     .....
%     \tn{end}\{terminal*\}
%   \end{syntax}
%
%   æŽ’ç‰ˆç»ˆç«¯çª—å£ï¼Œå†…å®¹æ¥è‡ªäºŽç”±çŽ¯å¢ƒå†…å®¹ï¼Œ
%   å¯ä»¥é€šè¿‡\Arg{çª—å£æ&nbsp;‡é¢˜}ä¸ºçª—å£è®¾ç½®æ&nbsp;‡é¢˜ã€‚
%
%   \oarg{å¤–è§‚é€‰é¡¹}ä¸­é€šè¿‡key-valueæ–¹å¼è®¾ç½®ç»ˆç«¯çª—å£çš„å¤–è§‚ã€‚
%
%   æ˜Ÿå·çŽ¯å¢ƒ\texttt{terminal*}ç”¨äºŽä¸ºç»ˆç«¯çª—å£æ·»åŠ&nbsp;åº•çº¿æ³¨é‡Šï¼Œ
%   æ³¨æ„æ­¤æ—¶éœ€è¦åœ¨\oarg{å¤–è§‚é€‰é¡¹}åŽæä¾›\oarg{åº•çº¿æ³¨é‡Š}å†…å®¹ã€‚
%
%   ç»ˆç«¯çª—å£çš„å¤–è§‚ä¹Ÿå¯ä»¥é€šè¿‡\tn{termset}å‘½ä»¤çš„é€—å·åˆ†éš”
%   key-valueåˆ—è¡¨è¿›è¡Œè®¾ç½®ã€‚
%
% \end{function}
%   \begin{Verbatim}[frame=none,numbers=left,gobble=5]
%     \centering
%     \termset{os=win10,theme=dark,shstretch=1.0}
%     \begin{terminal}{çª—å£æ&nbsp;‡é¢˜}
%       C:\Users\Administrator çš„ç›®å½•
%       2018/07/21  15:39    &lt;DIR&gt;          .
%       2018/07/21  15:39    &lt;DIR&gt;          ..
%       2018/07/13  08:35    &lt;DIR&gt;          3D Objects
%       2018/07/13  08:35    &lt;DIR&gt;          Contacts
%       2018/08/06  07:46    &lt;DIR&gt;          Desktop
%                       2 ä¸ªæ–‡ä»¶      6,029,312 å­—èŠ‚
%                      18 ä¸ªç›®å½• 14,035,107,840 å¯ç”¨å­—èŠ‚
%     \end{terminal}
%   \end{Verbatim}
%
%\begin{center}
%\begin{minipage}{0.85\textwidth}
%\termset{os=win10,theme=dark,shstretch=1.0}
%\begin{terminal}{çª—å£æ&nbsp;‡é¢˜}
%C:\Users\Administrator çš„ç›®å½•
%2018/07/21  15:39    &lt;DIR&gt;          .
%2018/07/21  15:39    &lt;DIR&gt;          ..
%2018/07/13  08:35    &lt;DIR&gt;          3D Objects
%2018/07/13  08:35    &lt;DIR&gt;          Contacts
%2018/08/06  07:46    &lt;DIR&gt;          Desktop
%                2 ä¸ªæ–‡ä»¶      6,029,312 å­—èŠ‚
%               18 ä¸ªç›®å½• 14,035,107,840 å¯ç”¨å­—èŠ‚
%\end{terminal}
%\end{minipage}
%\end{center}
%
% \subsection{\tn{termfile}å’Œ\tn{termfile*}å‘½ä»¤}
%
% \begin{function}[added=2021-12-18,updated=2021-12-18]{\termfile,\termfile*}
%   \begin{syntax}
%     \tn{termfile}  \oarg{å¤–è§‚é€‰é¡¹} \Arg{çª—å£æ&nbsp;‡é¢˜} \Arg{å†…å®¹æ–‡ä»¶}
%     \tn{termfile*} \oarg{å¤–è§‚é€‰é¡¹} \oarg{åº•çº¿æ³¨é‡Š} \Arg{çª—å£æ&nbsp;‡é¢˜} \Arg{å†…å®¹æ–‡ä»¶}
%   \end{syntax}
%
%   æŽ’ç‰ˆç»ˆç«¯çª—å£ï¼Œå†…å®¹æ¥è‡ªäºŽç”±\Arg{å†…å®¹æ–‡ä»¶}ï¼Œ
%   å¯ä»¥é€šè¿‡\Arg{çª—å£æ&nbsp;‡é¢˜}ä¸ºçª—å£è®¾ç½®æ&nbsp;‡é¢˜ã€‚
%
%   \oarg{å¤–è§‚é€‰é¡¹}ä¸­é€šè¿‡key-valueæ–¹å¼è®¾ç½®ç»ˆç«¯çª—å£çš„å¤–è§‚ã€‚
%
%   æ˜Ÿå·å‘½ä»¤\tn{termfile*}ç”¨äºŽä¸ºç»ˆç«¯çª—å£æ·»åŠ&nbsp;åº•çº¿æ³¨é‡Šï¼Œ
%   æ³¨æ„æ­¤æ—¶éœ€è¦åœ¨\oarg{å¤–è§‚é€‰é¡¹}åŽæä¾›\oarg{åº•çº¿æ³¨é‡Š}å†…å®¹ã€‚
%
%   æŽ’ç‰ˆæ&nbsp;·å¼ä¹Ÿå¯ä»¥é€šè¿‡\tn{termset}å‘½ä»¤çš„é€—å·åˆ†éš”çš„
%   key-valueåˆ—è¡¨è¿›è¡Œè®¾ç½®ã€‚
% \end{function}
%
% \newpage
%
%   \begin{Verbatim}[frame=none,numbers=left,gobble=5]
%     \centering
%     \termfile{çª—å£æ&nbsp;‡é¢˜}{test.bat}
%   \end{Verbatim}
%
%\begin{center}
%\begin{minipage}{0.85\textwidth}
%\termfile{çª—å£æ&nbsp;‡é¢˜}{test.bat}
%\end{minipage}
%\end{center}
%
%\subsection{\tn{termset}å‘½ä»¤}
%
% \begin{function}[added=2021-12-18,updated=2021-12-18]{\termset}
%   \begin{syntax}
%     \tn{termset} \marg{é”®å€¼åˆ—è¡¨}
%   \end{syntax}
%   \tn{termset} çš„å‚æ•°æ˜¯ä¸€ç»„ç”±(è‹±æ–‡)é€—å·åˆ†éš”çš„é€‰é¡¹åˆ—è¡¨ï¼Œ
%   åˆ—è¡¨ä¸­çš„é€‰é¡¹é‡‡ç”¨ \kvopt{\meta{key}}{\meta{value}} å½¢å¼ã€‚
%   éƒ¨åˆ†é€‰é¡¹çš„\meta{value} å¯ä»¥çœç•¥ã€‚
%   å¯¹äºŽåŒä¸€é€‰é¡¹ï¼ŒåŽç»­è®¾ç½®ä¼šè¦†ç›–ä»¥å‰çš„è®¾ç½®ã€‚
%
%   å¤šæ•°é€‰é¡¹éƒ½è®¾æœ‰é»˜è®¤å€¼ã€‚
%
%   \tn{termset} é‡‡ç”¨ \LaTeX3 é£Žæ&nbsp;¼çš„é”®å€¼è®¾ç½®ï¼Œæ”¯æŒä¸åŒç±»åž‹ä»¥åŠå¤šç§
%   å±‚æ¬¡çš„é€‰é¡¹è®¾å®šã€‚é”®å€¼åˆ—è¡¨ä¸­ï¼Œâ€œ|=|â€å·¦å³çš„ç©ºæ&nbsp;¼ä¸å½±å“è®¾ç½®ï¼›ä½†éœ€æ³¨æ„ï¼Œ
%   å‚æ•°åˆ—è¡¨ä¸­\textbf{ä¸å¯ä»¥å‡ºçŽ°ç©ºè¡Œ}ã€‚
%
%   å¸ƒå°”åž‹çš„å‚æ•° \kvopt{\meta{é€‰é¡¹}}{true} ä¸­çš„â€œ|= true|â€å¯ä»¥çœç•¥ã€‚
% \end{function}
%
% \section{é€‰é¡¹è¯´æ˜Ž}
%
%   \pkg{termsim}å®åŒ…æä¾›äº†ä¸€ç³»åˆ—é€‰é¡¹ï¼Œä»¥è®¾ç½®ç»ˆç«¯çª—å£å¤–è§‚æ&nbsp;·å¼ã€‚
%   è½½å…¥\pkg{termsim}å®åŒ…åŽï¼Œä»¥ä¸‹é€‰é¡¹å‡å¯é€šè¿‡ç”¨æˆ·æŽ¥å£å‘½ä»¤\tn{termset}è¿›è¡Œè®¾ç½®ã€‚
%   åŒæ—¶ï¼Œè¿™äº›é€‰é¡¹ä¹Ÿå¯ä»¥é€šè¿‡\env{terminal}(\env{terminal*})çŽ¯å¢ƒæˆ–
%   \tn{termfile}(\tn{termfile*})å‘½ä»¤çš„\oarg{å¤–è§‚é€‰é¡¹}è¿›è¡Œè®¾ç½®ã€‚
%
% \subsection{ä»£ç&nbsp;å¼•æ“Ž}
%
% \begin{function}[added=2021-12-18,updated=2021-12-18]{minted}
%   \begin{syntax}
%     minted = &lt;\TTF&gt; \init{true}
%   \end{syntax}
%   \opt{minted} ç”¨äºŽè®¾ç½®ä»£ç&nbsp;æŽ’ç‰ˆå¼•æ“Žï¼Œå¦‚ä¸º\textbf{true}åˆ™ä½¿ç”¨\pkg{minted}å®åŒ…
%   æŽ’ç‰ˆç»ˆç«¯çª—å£ä¸­çš„å†…å®¹ï¼Œå¦‚ä¸º\textbf{false}åˆ™ä½¿ç”¨\pkg{listings}å®åŒ…æŽ’ç‰ˆ
%   ç»ˆç«¯çª—å£ä¸­çš„å†…å®¹ã€‚é»˜è®¤å€¼ä¸º\textbf{true}ã€‚
% \end{function}
%
% \subsection{æ“ä½œç³»ç»Ÿ}
%
% \begin{function}[added=2021-12-18,updated=2021-12-18]{os}
%   \begin{syntax}
%     os =  &lt;win10|mac|ubuntu&gt; \init{win10}
%   \end{syntax}
%   \opt{os} ç”¨äºŽè®¾ç½®ç»ˆç«¯çª—å£çš„æ“ä½œç³»ç»Ÿç±»åž‹ï¼Œé»˜è®¤å€¼ä¸º\textbf{win10}ã€‚
% \end{function}
%
% \subsection{é¢œè‰²ä¸»é¢˜}
%
% \begin{function}[added=2021-12-18,updated=2021-12-18]{theme}
%   \begin{syntax}
%     theme =  &lt;dark|light|white&gt; \init{dark}
%   \end{syntax}
%   \opt{theme} ç”¨äºŽè®¾ç½®ç»ˆç«¯çª—å£çš„é¢œè‰²ä¸»é¢˜ï¼Œé»˜è®¤å€¼ä¸º\textbf{dark}ã€‚
% \end{function}
%
% \subsection{ä»£ç&nbsp;æ&nbsp;·å¼}
%
% \begin{function}[added=2021-12-18,updated=2021-12-18]{shstyle}
%   \begin{syntax}
%     shstyle = \Arg{ä»£ç&nbsp;æ&nbsp;·å¼} \init{bw}
%   \end{syntax}
%   \opt{shstyle} ç”¨äºŽè®¾ç½®ç»ˆç«¯çª—å£å†…å®¹(ä»£ç&nbsp;)çš„æ&nbsp;·å¼ï¼Œä»…å¯¹\textbf{minted}
%   å¼•æ“Žæœ‰æ•ˆï¼Œé»˜è®¤å€¼ä¸º\textbf{bw}ã€‚
% \end{function}
%
% \subsection{ä»£ç&nbsp;å­—å·}
%
% \begin{function}[added=2021-12-18,updated=2021-12-18]{shsize}
%   \begin{syntax}
%     shsize = \Arg{å­—å·å‘½ä»¤} \init{\small}
%   \end{syntax}
%   \opt{shsize} ç”¨äºŽè®¾ç½®ç»ˆç«¯çª—å£å†…å®¹(ä»£ç&nbsp;)çš„å­—å·ï¼Œä»…å¯¹\textbf{minted}
%   å¼•æ“Žæœ‰æ•ˆï¼Œé»˜è®¤å€¼ä¸º\textbf{\tn{small}}ã€‚
% \end{function}
%
% \subsection{åº•çº¿æ³¨é‡Šæ&nbsp;¼å¼}
%
% \begin{function}[added=2021-12-18,updated=2021-12-18]{commentf}
%   \begin{syntax}
%     commentf = \Arg{æ&nbsp;¼å¼å‘½ä»¤ç»„} \init{\small\sffamily}
%   \end{syntax}
%   \opt{commentf} ç”¨äºŽè®¾ç½®ç»ˆç«¯çª—å£åº•çº¿æ³¨é‡Šçš„æ&nbsp;¼å¼ï¼Œ
%   é»˜è®¤å€¼ä¸º\textbf{\tn{small}\tn{sffamily}}ã€‚
% \end{function}
%
% \subsection{ä»£ç&nbsp;è¡Œè·}
%
% \begin{function}[added=2021-12-18,updated=2021-12-18]{shstretch}
%   \begin{syntax}
%     shstretch = \Arg{æµ®ç‚¹æ•°} \init{1.0}
%   \end{syntax}
%   \opt{shstretch} ç”¨äºŽè®¾ç½®ç»ˆç«¯çª—å£å†…å®¹(ä»£ç&nbsp;)çš„è¡Œè·ï¼Œä»…å¯¹\textbf{minted}
%   å¼•æ“Žæœ‰æ•ˆï¼Œå–æµ®ç‚¹æ•°ã€‚é»˜è®¤å€¼ä¸º\textbf{1.0}ã€‚
% \end{function}
%
% \newpage
%
% \section{æŽ’ç‰ˆæ&nbsp;·ä¾‹}
%
% \pkg{termsim}å®åŒ…å¯ç”¨äºŽéœ€è¦æŽ’ç‰ˆæ“ä½œç³»ç»Ÿç»ˆç«¯çª—å£çš„åœºåˆï¼Œ
% ä»¥é¿å…ä½¿ç”¨æˆªå›¾ã€‚ç»ˆç«¯çª—å£å¯ä»¥å¸¦/ä¸å¸¦åº•çº¿æ³¨é‡Šï¼Œä¹Ÿå¯ä»¥
% æ˜¯æš—è‰²(dark)ã€äº®è‰²(light)æˆ–ç™½è‰²(white)é¢œè‰²ä¸»é¢˜ã€‚
%
% \subsection{Win10ç»ˆç«¯çª—å£}
%
% \subsubsection{\env{terminal}/\env{terminal*}çŽ¯å¢ƒ}
%
%   \begin{Verbatim}[frame=none,numbers=left,gobble=5]
%     \centering
%     \termset{os=win10,theme=dark,shstretch=1.0}
%     \begin{terminal}{çª—å£æ&nbsp;‡é¢˜}
%       C:\Users\Administrator çš„ç›®å½•
%       2018/07/21  15:39    &lt;DIR&gt;          .
%       2018/07/21  15:39    &lt;DIR&gt;          ..
%       2018/07/13  08:35    &lt;DIR&gt;          3D Objects
%       2018/07/13  08:35    &lt;DIR&gt;          Contacts
%       2018/08/06  07:46    &lt;DIR&gt;          Desktop
%                       2 ä¸ªæ–‡ä»¶      6,029,312 å­—èŠ‚
%                      18 ä¸ªç›®å½• 14,035,107,840 å¯ç”¨å­—èŠ‚
%     \end{terminal}
%   \end{Verbatim}
%
%\begin{center}
%\begin{minipage}{0.85\textwidth}
%\termset{os=win10,theme=dark,shstretch=1.0}
%\begin{terminal}{çª—å£æ&nbsp;‡é¢˜}
%C:\Users\Administrator çš„ç›®å½•
%2018/07/21  15:39    &lt;DIR&gt;          .
%2018/07/21  15:39    &lt;DIR&gt;          ..
%2018/07/13  08:35    &lt;DIR&gt;          3D Objects
%2018/07/13  08:35    &lt;DIR&gt;          Contacts
%2018/08/06  07:46    &lt;DIR&gt;          Desktop
%                2 ä¸ªæ–‡ä»¶      6,029,312 å­—èŠ‚
%               18 ä¸ªç›®å½• 14,035,107,840 å¯ç”¨å­—èŠ‚
%\end{terminal}
%\end{minipage}
%\end{center}
%
%   \begin{Verbatim}[frame=none,numbers=left,gobble=5]
%     \centering
%     \begin{terminal*}[os=win10,theme=light][åº•çº¿æ³¨é‡Š]{çª—å£æ&nbsp;‡é¢˜}
%       C:\Users\Administrator çš„ç›®å½•
%       2018/07/21  15:39    &lt;DIR&gt;          .
%       2018/07/21  15:39    &lt;DIR&gt;          ..
%       2018/07/13  08:35    &lt;DIR&gt;          3D Objects
%       2018/07/13  08:35    &lt;DIR&gt;          Contacts
%       2018/08/06  07:46    &lt;DIR&gt;          Desktop
%                       2 ä¸ªæ–‡ä»¶      6,029,312 å­—èŠ‚
%                      18 ä¸ªç›®å½• 14,035,107,840 å¯ç”¨å­—èŠ‚
%     \end{terminal*}
%   \end{Verbatim}
%
%\begin{center}
%\begin{minipage}{0.85\textwidth}
%\begin{terminal*}[os=win10,theme=light][åº•çº¿æ³¨é‡Š]{çª—å£æ&nbsp;‡é¢˜}
%C:\Users\Administrator çš„ç›®å½•
%2018/07/21  15:39    &lt;DIR&gt;          .
%2018/07/21  15:39    &lt;DIR&gt;          ..
%2018/07/13  08:35    &lt;DIR&gt;          3D Objects
%2018/07/13  08:35    &lt;DIR&gt;          Contacts
%2018/08/06  07:46    &lt;DIR&gt;          Desktop
%                2 ä¸ªæ–‡ä»¶      6,029,312 å­—èŠ‚
%               18 ä¸ªç›®å½• 14,035,107,840 å¯ç”¨å­—èŠ‚
%\end{terminal*}
%\end{minipage}
%\end{center}
%
%
% \subsubsection{\tn{termfile}/\tn{termfile*}å‘½ä»¤}
%
%   \begin{Verbatim}[frame=none,numbers=left]
%     \centering
%     \termset{os=win10,theme=dark}
%     \termfile{çª—å£æ&nbsp;‡é¢˜}{test.bat}
%   \end{Verbatim}
%
%\begin{center}
%\begin{minipage}{0.85\textwidth}
%\termset{os=win10,theme=dark}
%\termfile{çª—å£æ&nbsp;‡é¢˜}{test.bat}
%\end{minipage}
%\end{center}
%
%   \begin{Verbatim}[frame=none,numbers=left]
%     \centering
%     \termfile*[os=win10,theme=light][åº•çº¿æ³¨é‡Š]{çª—å£æ&nbsp;‡é¢˜}{test.bat}
%   \end{Verbatim}
%
%\begin{center}
%\begin{minipage}{0.85\textwidth}
%\termfile*[os=win10,theme=light][åº•çº¿æ³¨é‡Š]{çª—å£æ&nbsp;‡é¢˜}{test.bat}
%\end{minipage}
%\end{center}
%
% \newpage
% \subsection{Macç»ˆç«¯çª—å£}
%
% \subsubsection{\env{terminal}/\env{terminal*}çŽ¯å¢ƒ}
%
%   \begin{Verbatim}[frame=none,numbers=left,gobble=5]
%     \centering
%     \termset{os=mac,theme=dark}
%     \begin{terminal}{çª—å£æ&nbsp;‡é¢˜}
%       xxxxxx@xxxxxx-lap:~$ ls
%       Desktop     Downloads   p2         Public   Templates   Videos
%       Documents   Music       Pictures   snap    '#test#'     workspace
%       xxxxxx@xxxxxx-lap:~$
%     \end{terminal}
%   \end{Verbatim}
%
%\begin{center}
%\begin{minipage}{0.85\textwidth}
%\termset{os=mac,theme=dark}
%\begin{terminal}{çª—å£æ&nbsp;‡é¢˜}
%xxxxxx@xxxxxx-lap:~$ ls
%Desktop     Downloads   p2         Public   Templates   Videos
%Documents   Music       Pictures   snap    '#test#'     workspace
%xxxxxx@xxxxxx-lap:~$
%\end{terminal}
%\end{minipage}
%\end{center}
%
%   \begin{Verbatim}[frame=none,numbers=left,gobble=5]
%     \centering
%     \begin{terminal*}[os=mac,theme=light][åº•çº¿æ³¨é‡Š]{çª—å£æ&nbsp;‡é¢˜}
%       xxxxxx@xxxxxx-lap:~$ ls
%       Desktop     Downloads   p2         Public   Templates   Videos
%       Documents   Music       Pictures   snap    '#test#'     workspace
%       xxxxxx@xxxxxx-lap:~$
%     \end{terminal*}
%   \end{Verbatim}
%
%\begin{center}
%\begin{minipage}{0.85\textwidth}
%\begin{terminal*}[os=mac,theme=light][åº•çº¿æ³¨é‡Š]{çª—å£æ&nbsp;‡é¢˜}
%xxxxxx@xxxxxx-lap:~$ ls
%Desktop     Downloads   p2         Public   Templates   Videos
%Documents   Music       Pictures   snap    '#test#'     workspace
%xxxxxx@xxxxxx-lap:~$
%\end{terminal*}
%\end{minipage}
%\end{center}
%
% \subsubsection{\tn{termfile}/\tn{termfile*}å‘½ä»¤}
%
%   \begin{Verbatim}[frame=none,numbers=left]
%     \centering
%     \termset{os=mac,theme=dark}
%     \termfile{çª—å£æ&nbsp;‡é¢˜}{testls}
%   \end{Verbatim}
%
%\begin{center}
%\begin{minipage}{0.85\textwidth}
%\termset{os=mac,theme=dark}
%\termfile{çª—å£æ&nbsp;‡é¢˜}{testls}
%\end{minipage}
%\end{center}
% \newpage
%   \begin{Verbatim}[frame=none,numbers=left]
%     \centering
%     \termfile*[os=mac,theme=light][åº•çº¿æ³¨é‡Š]{çª—å£æ&nbsp;‡é¢˜}{testls}
%   \end{Verbatim}
%
%\begin{center}
%\begin{minipage}{0.85\textwidth}
%\termfile*[os=mac,theme=light][åº•çº¿æ³¨é‡Š]{çª—å£æ&nbsp;‡é¢˜}{testls}
%\end{minipage}
%\end{center}
%
% \subsection{Ubuntuç»ˆç«¯çª—å£}
%
% \subsubsection{\env{terminal}/\env{terminal*}çŽ¯å¢ƒ}
%
%   \begin{Verbatim}[frame=none,numbers=left,gobble=5]
%     \centering
%     \termset{os=ubuntu,theme=dark}
%     \begin{terminal}{çª—å£æ&nbsp;‡é¢˜}
%       xxxxxx@xxxxxx-lap:~/Desktop $
%       git clone git@gitee.com:xxxxxx/xxxxxx
%       æ­£å…‹éš†åˆ° 'xxxxxx'...
%       remote: Enumerating objects: 106, done.
%       remote: Counting objects: 100% (106/106), done.
%       remote: Compressing objects: 100% (105/105), done.
%       remote: Total 106 (delta 9), reused 0 (delta 0)
%       æŽ¥æ”¶å¯¹è±¡ä¸­: 100% (106/106), 237.88 MiB | 730.00 KiB/s, å®Œæˆ.
%       å¤„ç† delta ä¸­: 100% (9/9), å®Œæˆ.
%       æ­£åœ¨æ£€å‡ºæ–‡ä»¶: 100% (75/75), å®Œæˆ.
%       xxxxxx@xxxxxx-lap:~/Desktop $
%     \end{terminal}
%   \end{Verbatim}
%
%\begin{center}
%\begin{minipage}{0.85\textwidth}
%\termset{os=ubuntu,theme=dark}
%\begin{terminal}{çª—å£æ&nbsp;‡é¢˜}
%xxxxxx@xxxxxx-lap:~/Desktop $
%git clone git@gitee.com:xxxxxx/xxxxxx
%æ­£å…‹éš†åˆ° 'xxxxxx'...
%remote: Enumerating objects: 106, done.
%remote: Counting objects: 100% (106/106), done.
%remote: Compressing objects: 100% (105/105), done.
%remote: Total 106 (delta 9), reused 0 (delta 0)
%æŽ¥æ”¶å¯¹è±¡ä¸­: 100% (106/106), 237.88 MiB | 730.00 KiB/s, å®Œæˆ.
%å¤„ç† delta ä¸­: 100% (9/9), å®Œæˆ.
%æ­£åœ¨æ£€å‡ºæ–‡ä»¶: 100% (75/75), å®Œæˆ.
%xxxxxx@xxxxxx-lap:~/Desktop $
%\end{terminal}
%\end{minipage}
%\end{center}
%
%   \begin{Verbatim}[frame=none,numbers=left,gobble=5]
%     \centering
%     \begin{terminal*}[os=ubuntu,theme=light][åº•çº¿æ³¨é‡Š]{çª—å£æ&nbsp;‡é¢˜}
%       xxxxxx@xxxxxx-lap:~/Desktop $
%       git clone git@gitee.com:xxxxxx/xxxxxx
%       æ­£å…‹éš†åˆ° 'xxxxxx'...
%       remote: Enumerating objects: 106, done.
%       remote: Counting objects: 100% (106/106), done.
%       remote: Compressing objects: 100% (105/105), done.
%       remote: Total 106 (delta 9), reused 0 (delta 0)
%       æŽ¥æ”¶å¯¹è±¡ä¸­: 100% (106/106), 237.88 MiB | 730.00 KiB/s, å®Œæˆ.
%       å¤„ç† delta ä¸­: 100% (9/9), å®Œæˆ.
%       æ­£åœ¨æ£€å‡ºæ–‡ä»¶: 100% (75/75), å®Œæˆ.
%       xxxxxx@xxxxxx-lap:~/Desktop $
%     \end{terminal*}
%   \end{Verbatim}
%
%\newpage
%\begin{center}
%\begin{minipage}{0.85\textwidth}
%\begin{terminal*}[os=ubuntu,theme=light][åº•çº¿æ³¨é‡Š]{çª—å£æ&nbsp;‡é¢˜}
%xxxxxx@xxxxxx-lap:~/Desktop $
%git clone git@gitee.com:xxxxxx/xxxxxx
%æ­£å…‹éš†åˆ° 'xxxxxx'...
%remote: Enumerating objects: 106, done.
%remote: Counting objects: 100% (106/106), done.
%remote: Compressing objects: 100% (105/105), done.
%remote: Total 106 (delta 9), reused 0 (delta 0)
%æŽ¥æ”¶å¯¹è±¡ä¸­: 100% (106/106), 237.88 MiB | 730.00 KiB/s, å®Œæˆ.
%å¤„ç† delta ä¸­: 100% (9/9), å®Œæˆ.
%æ­£åœ¨æ£€å‡ºæ–‡ä»¶: 100% (75/75), å®Œæˆ.
%xxxxxx@xxxxxx-lap:~/Desktop $
%\end{terminal*}
%\end{minipage}
%\end{center}
%
% \subsubsection{\tn{termfile}/\tn{termfile*}å‘½ä»¤}
%
%   \begin{Verbatim}[frame=none,numbers=left]
%     \centering
%     \termset{os=ubuntu,theme=dark}
%     \termfile{çª—å£æ&nbsp;‡é¢˜}{testsh}
%   \end{Verbatim}
%
%\begin{center}
%\begin{minipage}{0.85\textwidth}
%\termset{os=ubuntu,theme=dark}
%\termfile{çª—å£æ&nbsp;‡é¢˜}{testsh}
%\end{minipage}
%\end{center}
%
%   \begin{Verbatim}[frame=none,numbers=left]
%     \centering
%     \termfile*[os=ubuntu,theme=light][åº•çº¿æ³¨é‡Š]{çª—å£æ&nbsp;‡é¢˜}{testsh}
%   \end{Verbatim}
%
%\begin{center}
%\begin{minipage}{0.85\textwidth}
%\termfile*[os=ubuntu,theme=light][åº•çº¿æ³¨é‡Š]{çª—å£æ&nbsp;‡é¢˜}{testsh}
%\end{minipage}
%\end{center}
%
%  ä¹Ÿå¯ä»¥ä½¿ç”¨\texttt{white}é¢œè‰²ä¸»é¢˜ï¼Œä½¿ç”¨ç™½åº•é»‘å­—æŽ’ç‰ˆï¼Œä»¥ä¾¿
%  æ‰“å°è¾“å‡ºã€‚
%
%   \begin{Verbatim}[frame=none,numbers=left,gobble=5]
%     \centering
%     \termset{os=ubuntu,theme=white}
%     \begin{terminal}{çª—å£æ&nbsp;‡é¢˜}
%       xxxxxx@xxxxxx-lap:~/Desktop $
%       git clone git@gitee.com:xxxxxx/xxxxxx
%       æ­£å…‹éš†åˆ° 'xxxxxx'...
%       remote: Enumerating objects: 106, done.
%       remote: Counting objects: 100% (106/106), done.
%       remote: Compressing objects: 100% (105/105), done.
%       remote: Total 106 (delta 9), reused 0 (delta 0)
%       æŽ¥æ”¶å¯¹è±¡ä¸­: 100% (106/106), 237.88 MiB | 730.00 KiB/s, å®Œæˆ.
%       å¤„ç† delta ä¸­: 100% (9/9), å®Œæˆ.
%       æ­£åœ¨æ£€å‡ºæ–‡ä»¶: 100% (75/75), å®Œæˆ.
%       xxxxxx@xxxxxx-lap:~/Desktop $
%     \end{terminal}
%   \end{Verbatim}
%
%\begin{center}
%\begin{minipage}{0.85\textwidth}
%\termset{os=ubuntu,theme=white}
%\begin{terminal}{çª—å£æ&nbsp;‡é¢˜}
%xxxxxx@xxxxxx-lap:~/Desktop $
%git clone git@gitee.com:xxxxxx/xxxxxx
%æ­£å…‹éš†åˆ° 'xxxxxx'...
%remote: Enumerating objects: 106, done.
%remote: Counting objects: 100% (106/106), done.
%remote: Compressing objects: 100% (105/105), done.
%remote: Total 106 (delta 9), reused 0 (delta 0)
%æŽ¥æ”¶å¯¹è±¡ä¸­: 100% (106/106), 237.88 MiB | 730.00 KiB/s, å®Œæˆ.
%å¤„ç† delta ä¸­: 100% (9/9), å®Œæˆ.
%æ­£åœ¨æ£€å‡ºæ–‡ä»¶: 100% (75/75), å®Œæˆ.
%xxxxxx@xxxxxx-lap:~/Desktop $
%\end{terminal}
%\end{minipage}
%\end{center}
%
% \end{documentation}
%
% \StopEventually{}
%
% \begin{implementation}
%
% \section{ä»£ç&nbsp;å®žçŽ°}
%
% è¯¥å®åŒ…ä½¿ç”¨ \LaTeX3 è¯­æ³•ç¼–å†™ï¼Œä¾èµ– \pkg{expl3} çŽ¯å¢ƒï¼Œ
% å¹¶éœ€è°ƒç”¨ \pkg{l3packages}ã€\pkg{tcolorbox}ã€\pkg{minted}
% \pkg{listings}ã€\pkg{fontawesome5}ç­‰å®åŒ…ã€‚
%
% æŒ‰ç…§ \LaTeX3 è¯­æ³•ï¼Œä»£ç&nbsp;ä¸­çš„ç©ºæ&nbsp;¼ã€æ¢è¡Œã€å›žè½¦ä¸Žåˆ¶è¡¨ç¬¦ä¼šå®Œå…¨è¢«å¿½ç•¥ï¼Œ
% è€Œä¸‹åˆ’çº¿â€œ|_|â€å’Œå†’å·â€œ|:|â€åˆ™å¯ä½œä¸ºä¸€èˆ¬å­—æ¯ä½¿ç”¨ã€‚
% æ­£å¸¸çš„ç©ºæ&nbsp;¼å¯ä»¥ä½¿ç”¨â€œ|~|â€ä»£æ›¿ï¼›è‡³äºŽ |~| åŽŸæ¥æ‰€è¡¨ç¤ºçš„â€œå¸¦å­â€ï¼Œ
% åˆ™è¦ç”¨ \LaTeXe{} çš„åŽŸå§‹å‘½ä»¤ \tn{nobreakspace} ä»£æ›¿ã€‚
%
% ä»¥ä¸‹ä»£ç&nbsp;ä¸­æœ‰ä¸€äº›å½¢å¦‚ \textcolor[HTML]{2E3191}{\textsf{&lt;*package&gt;}}
% çš„æ&nbsp;‡è®°ï¼Œè¿™æ˜¯ \pkg{DocStrip} ä¸­çš„â€œguardâ€ï¼Œç”¨æ¥é€‰æ‹©æ€§åœ°æå–æ–‡ä»¶ã€‚
% â€œ\textsf{*}â€å’Œâ€œ\textsf{/}â€åˆ†åˆ«è¡¨ç¤ºè¯¥éƒ¨åˆ†çš„å¼€å§‹å’Œç»“æŸã€‚ä¸å«
% â€œ\textsf{*}â€å’Œâ€œ\textsf{/}â€çš„ guard å‡ºçŽ°åœ¨è¡Œå·å³ä¾§ï¼Œå®ƒä»¬ç”¨æ¥ç¡®å®š
% å•ç‹¬ä¸€è¡Œä»£ç&nbsp;çš„å½’å±žã€‚è¿™äº› guard çš„é¢œè‰²æ·±æµ…ä¸ä¸€ï¼Œç”¨ä»¥æ˜Žç¡®åµŒå¥—å…³ç³»ã€‚
%
% å¦æœ‰è‹¥å¹²å½¢å¦‚ \textcolor[HTML]{AD1457}{\textsf{&lt;@@=termsim&gt;}} çš„ guardï¼Œ
% å®ƒä»¬ç”± \pkg{l3docstrip} å®šä¹‰ï¼Œç”¨æ¥æ&nbsp;‡è¯†åå­—ç©ºé—´ï¼ˆæ¨¡å—ï¼‰ã€‚
%
% \subsection{çŽ¯å¢ƒæ£€æµ‹ä¸Žå‡†å¤‡}
%
%    \begin{macrocode}
%&lt;*package&gt;
%&lt;@@=termsim&gt;
%    \end{macrocode}
%
% \subsection{è½½å…¥å®åŒ…}
%
% è½½å…¥å¿…è¦çš„å®åŒ…
%
%    \begin{macrocode}
\RequirePackage { xtemplate, l3keys2e, xparse }
%    \end{macrocode}
%
% è½½å…¥\pkg{fontawesome5}ã€\pkg{tcolorbox}ã€\pkg{varwidth}ã€
% \pkg{amssymb}ã€\pkg{xcolor}ã€\pkg{etoolbox}å®åŒ…ã€‚
%
%    \begin{macrocode}
\RequirePackage {fontawesome5, tcolorbox, varwidth, amssymb, xcolor, etoolbox}
%    \end{macrocode}
%
% è§£å†³Expl3ä¸­\pkg{tcolorbox}å’Œ\pkg{tikz}é™„åŠ&nbsp;åº“æ—&nbsp;æ³•åŠ&nbsp;è½½çš„
% è¡¥ä¸(éœ€è¦\pkg{etoolbox}å®åŒ…æ”¯æŒ)
%
% \url{https://tex.stackexchange.com/questions/57424/using-of-usetikzlibrary-in-an-expl3-package-fails}
%
%    \begin{macrocode}
\ExplSyntaxOff
\patchcmd
{\tcb@input@library@in}
  {%
   \input\tcbpkgprefix#1\relax%
  }
  {%
    \@pushfilename
    \input\tcbpkgprefix#1\relax%
    \@popfilename
  }
  {}{}

\patchcmd
{\pgfutil@InputIfFileExists}
  {\input #1}
  {%
    \@pushfilename
    \xdef\@currname{#1}%
    \input #1 %
    \@popfilename
  }
  {}{}
\ExplSyntaxOn
%    \end{macrocode}
%
% è½½å…¥\pkg{tcolorbox}å’Œ\pkg{tikz}é™„åŠ&nbsp;åº“
%
%    \begin{macrocode}
\tcbuselibrary{skins, xparse, breakable}
\usetikzlibrary{shapes.geometric}
%    \end{macrocode}
%
% \subsection{å®šä¹‰é¢œè‰²}
%
%    \begin{macrocode}
\definecolor{mpurple}{RGB}{48,10,36}
\definecolor{mgray}{RGB}{70,72,67}
\definecolor{ogray}{RGB}{148,147,141}
\definecolor{oorange}{RGB}{233,101,56}
\definecolor{termimal}{RGB}{80,78,70}
\definecolor{linux}{RGB}{0,39,51}
\definecolor{windows}{HTML}{00B294}
\definecolor{cvgrayc}{RGB}{247,247,247}
\definecolor{cvgray}{RGB}{220,220,220}
\definecolor{cvgrayb}{RGB}{153,153,153}
\definecolor{cvblue}{RGB}{223,238,255}
\definecolor{zhanqing}{RGB}{0,51,113}
\definecolor{chengse}{RGB}{250,140,53}

\definecolor{AppleRed}{RGB}{255,95,86}
\definecolor{AppleYellow}{RGB}{255,189,46}
\definecolor{AppleGreen}{RGB}{39,201,63}
\definecolor{AppleGray}{HTML}{D8D6D9}

\definecolor{WinGray}{HTML}{FFFFFF}
\definecolor{WinBlue}{HTML}{1883D7}
%    \end{macrocode}
%
% \subsection{ç»ˆç«¯ç›’å­å›¾æ&nbsp;‡è®¾è®¡}
%
% ç”¨TikZç»˜åˆ¶Ubuntuç»ˆç«¯ç›’å­çš„æœ€å°åŒ–ã€å…³é—­å’Œæœ€å¤§åŒ–å›¾æ&nbsp;‡
%
%    \begin{macrocode}
\newcommand{\UbuntuMin}{%
  \begin{tikzpicture}[x=2.4ex,y=2.4ex,line~width=0.15ex,scale=1]
    \shade[shading=ball,left~color=ogray,right~color=ogray!50!white] (0,0) circle (0.5);
    \draw[termimal](-0.3,0)--(0.3,0);
  \end{tikzpicture}
}
\newcommand{\UbuntuClose}{%
  \begin{tikzpicture}[x=2.4ex,y=2.4ex,line~width=0.15ex,scale=1]
    \shade[shading=ball,left~color=oorange,right~color=oorange!70!white] (0,0) circle (0.5);
    \draw[termimal](-0.25,-0.25)--(0.25,0.25);
    \draw[termimal](-0.25,0.25)--(0.25,-0.25);
  \end{tikzpicture}
}
\newcommand{\UbuntuMax}{%
  \begin{tikzpicture}[x=2.4ex,y=2.4ex,line~width=0.15ex,scale=1]
    \shade [shading=ball,left~color=ogray,right~color=ogray!50!white] (0,0) circle (0.5);
    \draw[termimal](-0.25,-0.2)rectangle(0.25,0.2);
  \end{tikzpicture}
}
%    \end{macrocode}
%
% ç»˜åˆ¶Windows Logo
%
%    \begin{macrocode}
\newcommand{\WindowsLogo}{%
  \begin{tikzpicture}[square/.style={regular~polygon,regular~polygon~sides=4},
         scale=0.65, every~node/.style={scale=0.65}]
    \node[square,draw,fill=black,text=white] at (0, 0) (a) {\small\faTerminal};
  \end{tikzpicture}
}
%    \end{macrocode}
%
% \subsection{ç»ˆç«¯ç›’å­æ&nbsp;·å¼è®¾è®¡}
%
% å®šä¹‰Macç»ˆç«¯ç›’å­çš„tcolorboxæ&nbsp;·å¼
%
%    \begin{macrocode}
\tcbset{%
  skin=enhanced,%
  apple/.style={%
    halign~title=center,%
    skin=bicolor,%
    boxrule=0.5mm,%
    breakable,%
    frame~style={%
      draw=AppleGray,%
      left~color=AppleGray,%
      right~color=AppleGray%
    },%
    overlay~unbroken = {%
      \node[inner~sep=0pt,anchor=north~west,yshift=-4pt,xshift=10pt,text=white]
        at (frame.north~west) {\textcolor{AppleRed}{\faCircle}$\,$
                               \textcolor{AppleYellow}{\faCircle}$\,$
                               \textcolor{AppleGreen}{\faCircle}};
    },%
    overlay~first = {%
      \node[inner~sep=0pt,anchor=north~west,yshift=-4pt,xshift=10pt,text=white]
        at (frame.north~west) {\textcolor{AppleRed}{\faCircle}$\,$
                               \textcolor{AppleYellow}{\faCircle}$\,$
                               \textcolor{AppleGreen}{\faCircle}};
    },%
    fonttitle=\sffamily,%\bfseries,%
    fontupper=\small\sffamily,%
    fontlower=\small\sffamily%
  },
  appledark/.style={%
    apple,%
    colback=black,%
    colupper=white,%
    colbacktitle=AppleGray,%
    colframe=AppleGray,%
    coltitle=black%
    %coltext=MyLightGray
  },
  applelight/.style={%
    apple,%
    colback=cvgrayc,%
    colupper=black,%
    colbacktitle=AppleGray,%
    colframe=AppleGray,%
    coltitle=black%
  },%
  applewhite/.style={%
    apple,%
    colback=white,%
    colupper=black,%
    colbacktitle=AppleGray,%
    colframe=AppleGray,%
    coltitle=black%
  },%
}%
%    \end{macrocode}
%
% \changes{v1.1.0}{2021/12/24}{è°ƒæ•´Win10 Logoçš„yshift}
%
% å®šä¹‰Win10ç»ˆç«¯ç›’å­çš„tcolorboxæ&nbsp;·å¼
%
%    \begin{macrocode}
\tcbset{%
  skin=enhanced,%
  win10/.style={%
    skin=bicolor,%
    boxrule=0.1mm,%
    %toptitle=1ex,
    sharp~corners,
    breakable,%
    colbacktitle=WinGray,%
    colframe=WinGray,%
    coltitle=black,%
    fonttitle=\sffamily,%\bfseries,
    fontupper=\small\sffamily,
    fontlower=\small\sffamily,
    frame~style={%
      draw=WinBlue,%
      left~color=WinBlue,%
      right~color=WinBlue%
    },%
    overlay~unbroken = {%
      \node[inner~sep=0pt,anchor=north~west,yshift=-2pt,xshift=1.2pt,text=black]
        at (frame.north~west){\WindowsLogo};
      \node[inner~sep=0pt,anchor=north~east,yshift=-4pt,xshift=-8pt,text=black]
        at (frame.north~east){\rule{0.8em}{0.6pt}\quad$\square$\quad{\Large$\times$}};
    },%
    overlay~first = {%
      \node[inner~sep=0pt,anchor=north~west,yshift=-2pt,xshift=1.0pt,text=black]
        at (frame.north~west){\WindowsLogo};
      \node[inner~sep=0pt,anchor=north~east,yshift=-4pt,xshift=-8pt,text=black]
        at (frame.north~east){\rule{0.8em}{0.6pt}\quad$\square$\quad{\Large$\times$}};
    }%
  },
  win10dark/.style={
    win10,%
    colback=black,%
    colupper=white,%
    %coltext=white%
  },
  win10light/.style={
    win10,%
    colback=white,%
    colupper=black,%
    %coltext=black%
  },
  win10white/.style={
    win10,%
    colback=white,%
    colupper=black,%
    %coltext=white%
  },
}%
%    \end{macrocode}
%
% å®šä¹‰Ubuntuç»ˆç«¯ç›’å­çš„tcolorboxæ&nbsp;·å¼
%
%    \begin{macrocode}
\tcbset{%
  skin=enhanced,%
  ubuntu/.style={%
    halign~title=center,%
    skin=bicolor,%
    boxrule=0.5mm,%
    breakable,% 
    overlay~unbroken = {%
      \node[inner~sep=0pt,anchor=north~east,yshift=-3.5pt,xshift=-5pt,text=white]
        at (frame.north~east){\UbuntuMin$\,$\UbuntuMax$\,$\UbuntuClose};%
    },%
    overlay~first = {%
      \node[inner~sep=0pt,anchor=north~east,yshift=-3.5pt,xshift=-5pt,text=white]
        at (frame.north~east){\UbuntuMin$\,$\UbuntuMax$\,$\UbuntuClose};%
    },%
    fonttitle=\sffamily,%
    fontupper=\small\sffamily,%
    fontlower=\small\sffamily%
  },
  udark/.style={%
    ubuntu,%
    frame~style={%
      draw=mgray,%
      left~color=mgray,%
      right~color=mgray%
    },%
    colback=mpurple,%
    colupper=white,%
    colbacktitle=mgray,%
    colframe=mgray,%
    coltitle=white%
    %coltext=MyLightGray
  },
  ulight/.style={%
    ubuntu,%
    frame~style={%
      draw=cvgrayb,%
      left~color=cvgrayb,%
      right~color=cvgrayb%
    },%
    colback=cvgrayc,%
    colupper=black,%
    colbacktitle=cvgrayb,%
    colframe=cvgrayb,%
    coltitle=black%
  },%
  uwhite/.style={%
    ubuntu,%
    frame~style={%
      draw=cvgrayb,%
      left~color=cvgrayb,%
      right~color=cvgrayb%
    },%
    colback=white,%
    colupper=black,%
    colbacktitle=cvgrayb,%
    colframe=cvgrayb,%
    coltitle=black%
  },%
}%
%    \end{macrocode}
%
% \subsection{å†…éƒ¨å˜é‡å£°æ˜Ž}
%
% \begin{variable}{\l_@@_minted_bool,
% \l_@@_comment_bool,
% \l_@@_os_type_int,
% \l_@@_color_theme_int,
% \l_@@_code_style_tl,
% \l_@@_code_fontsize_tl,
% \l_@@_comment_format_tl,
% \l_@@_shell_baseline_stretch_fp
%  }
% å®šä¹‰å˜é‡ã€‚
%
%    \begin{macrocode}
\bool_new:N   \l_@@_minted_bool
\bool_new:N   \l_@@_comment_bool
\int_new:N    \l_@@_os_type_int
\int_new:N    \l_@@_color_theme_int
%
\tl_new:N     \l_@@_shell_style_tl
\tl_new:N     \l_@@_shell_fontsize_tl
\tl_new:N     \l_@@_comment_format_tl
\fp_new:N     \l_@@_shell_baseline_stretch_fp
%    \end{macrocode}
% \end{variable}
%
% \subsection{é€‰é¡¹å¤„ç†}
%
% å®šä¹‰ |termsim| é”®å€¼ç±»ã€‚
%    \begin{macrocode}
\keys_define:nn { termsim }
  {
%    \end{macrocode}
%
% \begin{macro}{minted}
% æ˜¯å¦ä½¿ç”¨mintedå®åŒ…æŽ’ç‰ˆä»£ç&nbsp;ï¼Œé»˜è®¤ä¸ºtrueã€‚
%    \begin{macrocode}
    minted .bool_set:N = \l_@@_minted_bool,
    minted .default:n = true,
    minted .initial:n = true,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{os}
% é€‰æ‹©æ“ä½œç³»ç»Ÿï¼Œé»˜è®¤ä¸ºWin10ã€‚
%    \begin{macrocode}
    os .choice:,
    os .value_required:n = true,
    os .choices:nn =
      { win10, mac, ubuntu }
      { \int_set_eq:NN \l_@@_os_type_int \l_keys_choice_int },
    os .initial:n = win10,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{theme}
% é€‰æ‹©ç»ˆç«¯çª—å£é¢œè‰²ä¸»é¢˜ï¼Œé»˜è®¤ä¸ºdarkã€‚
%    \begin{macrocode}
    theme .choice:,
    theme .value_required:n = true,
    theme .choices:nn =
      { dark, light, white }
      { \int_set_eq:NN \l_@@_color_theme_int \l_keys_choice_int },
    theme .initial:n = dark,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{shstyle}
% ä»£ç&nbsp;æ&nbsp;·å¼
%    \begin{macrocode}
    shstyle .tl_set:N = \l_@@_shell_style_tl,
    shstyle .initial:n = bw,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{shsize}
% ä»£ç&nbsp;å­—å·
%    \begin{macrocode}
    shsize .tl_set:N = \l_@@_shell_fontsize_tl,
    shsize .initial:n = \small,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{commentf}
% æ³¨é‡Šæ&nbsp;¼å¼
%    \begin{macrocode}
    commentf .tl_set:N = \l_@@_comment_format_tl,
    commentf .initial:n = \small\sffamily,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{shstrech}
% åŸºçº¿ä¼¸å±•ç³»æ•°
%    \begin{macrocode}
    shstretch .fp_set:N  = \l_@@_shell_baseline_strech_fp,
    shstretch .initial:n = 1.0,
%    \end{macrocode}
% \end{macro}
%
% å¤„ç†æœªçŸ¥é€‰é¡¹ã€‚
%    \begin{macrocode}
    unknown .code:n = { \@@_error:n { unknown-option } }
  }
\msg_new:nnn { termsim } { unknown-option }
  { package~ option~ "\l_keys_key_tl"~ is~ unknown. }
%    \end{macrocode}
%
% å‚æ•°é»˜è®¤å€¼
%    \begin{macrocode}
\keys_set:nn { termsim }
  {
    minted = true,
    os     = win10,
    theme  = dark,
  }
%    \end{macrocode}
%
% \subsection{é€‰é¡¹ç”¨æˆ·æŽ¥å£}
%
% \begin{macro}{\termset}
% é€‰é¡¹è®¾ç½®ç”¨æˆ·æŽ¥å£ã€‚
%    \begin{macrocode}
\NewDocumentCommand \termset { m }
  { \keys_set:nn { termsim } {#1} }
%    \end{macrocode}
% \end{macro}
%
% \subsection{å†…éƒ¨å‡½æ•°}
%
% \changes{v1.1.0}{2021/12/24}{ä¸ºmintedå®åŒ…æ·»åŠ&nbsp;autogobbleå‚æ•°}
%
% \begin{macro}{\@@_minted_tcbset:}
% è®¾ç½®ç»ˆç«¯ç›’å­mintedå®åŒ…å‚æ•°ã€‚
%
%    \begin{macrocode}
\cs_new:Npn \@@_minted_tcbset:n #1
  {
    \tcbset{
      listing~engine=minted,%
      minted~style=#1,%
      minted~options={%
        autogobble,
        breaklines,%
        fontsize=\tl_use:N \l_@@_shell_fontsize_tl,%
        baselinestretch=\fp_eval:n { \l_@@_shell_baseline_stretch_fp },%
        breaksymbolleft={},%
        linenos=false,%
      },%
      minted~language=bash%
    }
  }
\cs_generate_variant:Nn \@@_minted_tcbset:n {V}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_listings_tcbset:}
% è®¾ç½®ç»ˆç«¯ç›’å­listingså®åŒ…å‚æ•°ã€‚
%
%    \begin{macrocode}
\cs_new:Npn \@@_listings_tcbset:
  {
    \lstset{% general command to set parameter(s)
      basicstyle=\ttfamily\tl_use:N \l_@@_shell_fontsize_tl, % print whole listing small
      keywordstyle=\color{chengse}\bfseries,%
      identifierstyle=, % nothing happens
      breaklines=true,
      commentstyle=\itshape\color{gray},
      stringstyle=\ttfamily, % typewriter type for strings
      numbers=left,%
      numberstyle=\tl_use:N \l_@@_shell_fontsize_tl\sffamily\color[rgb]{0.5,0.5,1.0},%
    }%
  }
\cs_generate_variant:Nn \@@_minted_tcbset:n {V}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_comment_tcbset:}
% è®¾ç½®ç»ˆç«¯ç›’å­åº•çº¿æ³¨é‡Šã€‚
%
%    \begin{macrocode}
\cs_new:Npn \@@_comment_tcbset:n #1
  {
    \bool_if:NTF { \l_@@_comment_bool }
    {
      \tcbset{%
        listing~and~comment,%
        colbacklower=tcbcolback!5!yellow!10!white,%
        collower=linux,%
        comment={\tl_use:N \l_@@_comment_format_tl~#1},%
      }
    }{
      \tcbset{ listing~only,}
    }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_terminal_theme_select:}
% é€‰æ‹©ç»ˆç«¯ç›’å­é¢œè‰²ä¸»é¢˜ã€‚
%
%    \begin{macrocode}
\cs_new:Npn \@@_terminal_theme_select:
  {
    \int_case:nn {\l_@@_os_type_int}
      {
        {1}{
          \int_case:nn {\l_@@_color_theme_int}
            {
              {1}{
                \tcbset{ win10dark, }
              }
              {2}{
                \tcbset{ win10light, }
              }
              {3}{
                \tcbset{ win10white, }
              }
            }
        }
        {2}{
          \int_case:nn {\l_@@_color_theme_int}
            {
              {1}{
                \tcbset{ appledark, }
              }
              {2}{
                \tcbset{ applelight, }
              }
              {3}{
                \tcbset{ applewhite, }
              }
            }
        }
        {3}{
          \int_case:nn {\l_@@_color_theme_int}
            {
              {1}{
                \tcbset{ udark, }
              }
              {2}{
                \tcbset{ ulight, }
              }
              {3}{
                \tcbset{ uwhite, }
              }
            }
        }
    }
  }
%    \end{macrocode}
% \end{macro}
%
% \subsection{å®šä¹‰æŽ’ç‰ˆçŽ¯å¢ƒå’Œå‘½ä»¤}
%
%    \begin{macrocode}
\bool_if:NTF \l_@@_minted_bool
  {
%    \end{macrocode}
%
%  ä½¿ç”¨\pkg{minted}å®åŒ…æŽ’ç‰ˆä»£ç&nbsp;
%
%    \begin{macrocode}
    \tcbuselibrary{minted}
%    \end{macrocode}
%
%  å®šä¹‰ä¸å¸¦åº•çº¿æ³¨é‡Šçš„çª—å£æ¨¡æ‹ŸçŽ¯å¢ƒ\env{terminal}
%
%    \begin{macrocode}
    \NewDocumentEnvironment{ terminal }{O{} O{} m }
      {
        \bool_set_false:N  \l_@@_comment_bool
        \group_begin:
        \IfNoValueF{#1}{ \keys_set:nn { termsim } { #1 } }
        \@@_comment_tcbset:n { #2 }
        \@@_terminal_theme_select:
        \@@_minted_tcbset:V \l_@@_shell_style_tl
        \tcbset{ title={#3} }%
        \tcblisting{}
      }{
        \endtcblisting
        \group_end:
      }
%    \end{macrocode}
%
%  å®šä¹‰å¸¦åº•çº¿æ³¨é‡Šçš„çª—å£æ¨¡æ‹ŸçŽ¯å¢ƒ\env{terminal*}
%
%    \begin{macrocode}
    \NewDocumentEnvironment{ terminal* }{O{} O{} m }
      {
        \bool_set_true:N \l_@@_comment_bool
        \group_begin:
        \IfNoValueF{#1}{ \keys_set:nn { termsim } { #1 } }
        \@@_comment_tcbset:n { #2 }
        \@@_terminal_theme_select:
        \@@_minted_tcbset:V \l_@@_shell_style_tl
        \tcbset{ title={#3} }%
        \tcblisting{}
      }{
        \endtcblisting
        \group_end:
      }
%    \end{macrocode}
%
%  å®šä¹‰å¸¦/ä¸å¸¦åº•çº¿æ³¨é‡Šçš„ä»Žæ–‡ä»¶è¯»å–å†…å®¹çš„å‘½ä»¤\tn{termfile}/\tn{termfile*}
%
%    \begin{macrocode}
    \NewDocumentCommand \termfile { s O{} O{} m m }
      {
        \IfBooleanTF{#1}
          {
            \bool_set_true:N  \l_@@_comment_bool
          }{
            \bool_set_false:N \l_@@_comment_bool
          }

        \group_begin:
        \IfNoValueF{#2}{ \keys_set:nn { termsim } { #2 } }
        \@@_comment_tcbset:n { #3 }
        \@@_terminal_theme_select:
        \@@_minted_tcbset:V \l_@@_shell_style_tl
        \tcbset{
          title={#4},
          listing~file={#5},
        }%
        \tcbinputlisting{  }
        \group_end:
      }
  }{
%    \end{macrocode}
%
%  ä½¿ç”¨\pkg{listings}å®åŒ…æŽ’ç‰ˆä»£ç&nbsp;ï¼Œå¹¶è®¾ç½®ä»£ç&nbsp;æ&nbsp;·å¼ã€‚
%
%    \begin{macrocode}
    \tcbuselibrary{listings}% ç”¨listingsæŽ’ç‰ˆä»£ç&nbsp;

    \@@_listings_tcbset:

%    \end{macrocode}
%
%  å®šä¹‰ä¸å¸¦åº•çº¿æ³¨é‡Šçš„çª—å£æ¨¡æ‹ŸçŽ¯å¢ƒ\env{terminal}
%
%    \begin{macrocode}
    \NewDocumentEnvironment{ terminal }{O{} O{} m }
      {
        \bool_set_false:N \l_@@_comment_bool
        \group_begin:
        \IfNoValueF{#1}{ \keys_set:nn { termsim } { #1 } }
        \@@_comment_tcbset:n { #2 }
        \@@_terminal_theme_select:
        \tcbset{
          title={#3},
          listing~options={
            language=bash,
            numbers=none,
          }
        }%
        \tcblisting{}
      }{
        \endtcblisting
        \group_end:
      }
%    \end{macrocode}
%
%  å®šä¹‰å¸¦åº•çº¿æ³¨é‡Šçš„çª—å£æ¨¡æ‹ŸçŽ¯å¢ƒ\env{terminal*}
%
%    \begin{macrocode}
    \NewDocumentEnvironment{ terminal* }{O{} O{} m }
      {
        \bool_set_true:N  \l_@@_comment_bool
        \group_begin:
        \IfNoValueF{#1}{ \keys_set:nn { termsim } { #1 } }
        \@@_comment_tcbset:n { #2 }
        \@@_terminal_theme_select:
        \tcbset{
          title={#3},
          listing~options={
            language=bash,
            numbers=none,
          }
        }%
        \tcblisting{}
      }{
        \endtcblisting
        \group_end:
      }
%    \end{macrocode}
%
%  å®šä¹‰å¸¦/ä¸å¸¦åº•çº¿æ³¨é‡Šçš„ä»Žæ–‡ä»¶è¯»å–å†…å®¹çš„å‘½ä»¤\tn{termfile}/\tn{termfile*}
%
%    \begin{macrocode}
    \NewDocumentCommand \termfile { s O{} O{} m m }
      {
        \IfBooleanTF{#1}
          {
            \bool_set_true:N  \l_@@_comment_bool
          }{
            \bool_set_false:N \l_@@_comment_bool
          }
        \group_begin:
        \IfNoValueF{#2}{ \keys_set:nn { termsim } { #2 } }
        \@@_comment_tcbset:n { #3 }
        \@@_terminal_theme_select:
        \tcbset{
          title={#4},
          listing~file={#5},
          listing~options={
            language=bash,
            numbers=none,
          },%
        }%
        \tcbinputlisting{  }
        \group_end:
      }
  }
%    \end{macrocode}
%
%    \begin{macrocode}
\endinput
%    \end{macrocode}
%
%    \begin{macrocode}
%&lt;/package&gt;
%    \end{macrocode}
%
% \end{implementation}
%
% \Finale
%
\endinput
</pre></body></html>