定义一个新的环境来结合 tikzpicture 和 lstlisting

定义一个新的环境来结合 tikzpicture 和 lstlisting

我想定义一个新的环境来结合tikzpicture来自包的环境pgf/tikzlstlisting来自包的环境listings。结果是首先生成图片,然后包含逐字代码。它类似于 PGF 手册中的示例。Till Tantau 使用环境codeexample,但它对我来说太复杂了,难以理解,而且我不需要其他功能,例如提取关键字等。

答案1

使用该showexpl包。它使用listings“底层”,但也为您编译代码示例。

\documentclass{article}
\usepackage{showexpl}
\usepackage{tikz}

% showexpl uses the listings package, so you need to check
% its documentation for that.
% Set up the basic parameters for showing the code
\lstset{%
    basicstyle=\ttfamily\scriptsize,
    commentstyle=\itshape\ttfamily\small,
    showspaces=false,
    showstringspaces=false,
    breaklines=true,
    breakautoindent=true,
    captionpos=t
}
% set up the parameters for the examples themselves
\lstset{explpreset={rframe={},xleftmargin=1em,columns=flexible,language={}}}

\begin{document}
\begin{LTXexample}[pos=b]

\begin{tikzpicture}
\shade[left color=white, right color=red]
      (0,0) rectangle +(3,2);
\end{tikzpicture}

\end{LTXexample}
\end{document}

本文档的输出:

示例代码和 tikz 图像

答案2

更多的选择

\documentclass{article}
\usepackage{showexpl}
\usepackage{tikz}

%define layout to tikz codes.
\definecolor{hellgelb}{rgb}{1,1,0.8}
\definecolor{colKeys}{rgb}{0,0,1}
\definecolor{colIdentifier}{rgb}{0,0,0}
\definecolor{colComments}{rgb}{1,0,0}
\definecolor{colString}{rgb}{0,0.5,0}

\usepackage{listings}
\lstset{%
    language={},%
    float=hbp,%
    basicstyle=\ttfamily\tiny, %
    identifierstyle=\color{colIdentifier}, %
    keywordstyle=\color{colKeys}, %
    stringstyle=\color{colString}, %
    commentstyle=\color{colComments}, %
    columns=flexible, %
    tabsize=4, %
    frame=single, %
    rframe={},%
    extendedchars=true, %
    showspaces=false, %
    showstringspaces=false, %
    numbers=none, %
    numberstyle=\tiny, %
    breaklines=true, %
    backgroundcolor=\color{hellgelb}, %
    breakautoindent=true, %
    captionpos=b,%
    xleftmargin=0pt%
}

\begin{document}

\begin{LTXexample}[width=2cm]
 \begin{tikzpicture}
  \shade[ball color=yellow] (0,0) circle (1);
  \draw[->,blue] (0,0) -- (45:1);
 \end{tikzpicture}
\end{LTXexample}

\end{document} ​

答案3

这可以很容易地完成tcolorbox包帮助。就像showexpl它能够打印一些LaTeX代码并同时显示其结果。

接下来的代码定义了一个tikzexample环境,它将TiKZ在左侧显示代码,在右侧显示图形。Optiontikz lower使我们免于键入\begin{tikzpicure}\end{tikzpicture}

listing side text用作默认外观(第一个例子),可以通过可选参数进行更改,如第二个例子所示。

图中的代码已从tcolorbox文档中复制。

\documentclass{article}

\usepackage[most]{tcolorbox}

\newtcblisting{tikzexample}[1][]{tikz lower, 
           listing side text, fonttitle=\bfseries,
           bicolor, colback=blue!15!white, colbacklower=white,
           colframe=black, righthand width=3cm, #1}

\begin{document}

\begin{tikzexample}[title=Example]
\path[fill=yellow,draw=yellow!75!red] (0,0) circle (1cm);
\fill[red] (45:5mm) circle (1mm);
\fill[red] (135:5mm) circle (1mm);
\draw[line width=1mm,red] (215:5mm) arc (215:325:5mm);
\end{tikzexample}

\begin{tikzexample}[title=Example, listing outside text]
\path[fill=yellow,draw=yellow!75!red] (0,0) circle (1cm);
\fill[red] (45:5mm) circle (1mm);
\fill[red] (135:5mm) circle (1mm);
\draw[line width=1mm,red] (215:5mm) arc (215:325:5mm);
\end{tikzexample}

\end{document}

在此处输入图片描述

相关内容