定义的 Tikz 框中的列表

定义的 Tikz 框中的列表

我已经使用\newcommand基于 TikZ 创建了一个框,名为“mybox”。方程式可轻松插入其中。但我想\lstlisting在其中插入一个环境。但它不起作用。我该怎么做?这是我的代码:

\documentclass{minimal}

\usepackage{times}

\usepackage{tikz}

\usepackage{listings}

\newcommand*\mybox[1]{\centering\tikz{\node [text width=15cm,rounded corners,fill=orange!50,inner sep=0.5ex,midway](char){#1};}}

\begin{document}

\mybox{

\begin{equation}

\int_S \mathbf{B}\cdot d\mathbf{s}

\end{equation}

}

\mybox{

\begin{lstlisting}[frame=single,language=PHP,caption=Php info\label{php_info}]
<?php
phpinfo();
?>

\end{lstlisting}

}

\end{document}

答案1

在这种情况下,我建议你使用tcolorbox包来创建彩色框架;该包提供了listings库和tcblisting环境,让您可以使用包中的功能listings

\documentclass{article}
\usepackage{tikz}
\usepackage[listings]{tcolorbox}

\newcommand*\mybox[1]{\centering\tikz{\node [text width=15cm,rounded corners,fill=orange!50,inner sep=0.5ex,midway](char){#1};}}

\begin{document}

\mybox{%
\begin{equation}
\int_S \mathbf{B}\cdot d\mathbf{s}
\end{equation}%
}

\begin{tcblisting}{listing only,listing options={frame=single,language=PHP,caption=Php info,label={php_info}},
colback=orange!50,boxrule=0pt,width=\dimexpr15cm+1ex\relax}
<?php
phpinfo();
?>
\end{tcblisting}

\end{document}

在此处输入图片描述

如果要多次使用此构造,最好使用\newtcblisting预定义选项来定义环境;类似这样的操作(环境的可选参数lisbox允许将附加选项传递给列表选项)

\documentclass{article}
\usepackage{tikz}
\usepackage[listings]{tcolorbox}

\newtcblisting{lisbox}[1][]{%
  listing only,
  listing options={frame=single,language=PHP,#1},
  colback=orange!50,
  boxrule=0pt,
  width=15cm}

\begin{document}

\begin{lisbox}[caption=Php info,label={php_info}]
<?php
phpinfo();
?>
\end{lisbox}

\end{document}

相关内容