我想定义一个新的环境来结合tikzpicture
来自包的环境pgf/tikz
和lstlisting
来自包的环境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}
本文档的输出:
答案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}