带标签框架的列表

带标签框架的列表

我正尝试在lstlisting如下环境中获取“标记”框架:

在此处输入图片描述

顶部和底部的框架很容易实现:

\begin{lstlisting}[frame=tb]
  Code 
  Code 
  Code
\end{lstlisting}

但仔细阅读了列表文档后,我不确定如何在底部和顶部框架上实现“一些文本”标签(似乎不支持这种功能)。

我已经研究过其他可选软件包,比如mdframedfancyvrbfancyvrb它们接近我想要的,但从我所能提供的选项来看,它们只允许“某些文本”标签居中对齐,即:

在此处输入图片描述

另外,还有一点要考虑:我已经为我的语言找到了一个很好的(并且可行的)风格定义,所以如果对此的任何解决方案仍然可以使用(从而可以使用我的语言定义),lst那就太好了。lstlisting

答案1

tcolorbox带有其库的版本listings(这是我实现它的第一个想法)

overlay可以通过样式或更改部分代码来改变外观。

\documentclass{article}

\usepackage[most]{tcolorbox}

\makeatletter
\newtcblisting[auto counter]{somecode}[2][]{%
  enhanced jigsaw,
  boxrule=0pt,
  toprule=1pt,
  bottomrule=1pt,
  listing options={language={C}},
  listing only,
  colback=white,
  sharp corners,
  overlay={\node[inner sep=2pt,xshift=-2cm,fill=tcbcol@back] (A) at (frame.south east) {#2};
           \node[inner sep=2pt,xshift=+2cm,fill=tcbcol@back] (B) at (frame.north west) {#2};
  },
  #1,
}
\makeatother





\begin{document}

\begin{somecode}{Some Text}
int main
\end{somecode}

\begin{somecode}[colback=yellow!10!white]{Some Text}
int main
\end{somecode}

\end{document}

在此处输入图片描述

相关内容