有没有办法使用 tcolorbox 和 minted 在每一行前面添加一些内容?

有没有办法使用 tcolorbox 和 minted 在每一行前面添加一些内容?

tcolorbox 手册显示了在 shell 输入的每一行前面添加命令提示符的一个很好的例子(第 317 页),但它显然只适用于库listings。库有类似的选项吗minted?我搜索了手册minted,但我发现唯一可能提供此选项的选项是选项formatcom……但我认为这行不通。

顺便说一下,我同意输出这个答案, 但是我

  1. 无法弄清楚如何在定义中格式化\newtcblisting(颜色、字体粗细等),并且
  2. 我不想在我的文件的每一行都包含我的提示信息。

我目前的MWE如下:

\documentclass{article}
\usepackage{tcolorbox}
  \tcbuselibrary{minted}

\newtcblisting{bashinput}[1][]{
  listing engine=minted,
  minted language=bash,
  minted options={
    fontsize=\small,
    breaklines,
    autogobble,
    numbersep=2mm},
  listing only,
  ,#1}

\begin{document}

\begin{bashinput}
user ~$ vi /etc/sysconfig/network
user ~$ grep Dipole file-name -A1 | tail -n1 | awk '\{print \$8\}'
\end{bashinput}

\end{document}

listing only,理想情况下,我可以在包含类似以下内容的内容后添加一行every listing line={\textcolor{red}{\small\ttfamily\bfseries ~$}}

答案1

取自这个答案,使用formatcom选项minted包裹:

\documentclass{article}
\usepackage{tcolorbox}
\tcbuselibrary{minted}

% < ADDED CODE >
\newcommand{\BashFancyFormatLine}{%
  \def\FancyVerbFormatLine##1{\textcolor{red}{\small\$}\ ##1}%
}
% </ADDED CODE >

\newtcblisting{bashinput}[1][]{
  listing engine=minted,
  minted language=bash,
  minted options={
    fontsize=\small,
    breaklines,
    autogobble,
    numbersep=2mm,
    formatcom=\BashFancyFormatLine}, % ADDED LINE
  listing only,
  ,#1}

\begin{document}

\begin{bashinput}
some text
\end{bashinput}

\end{document}

在此处输入图片描述

相关内容