560 lines
16 KiB
TeX
560 lines
16 KiB
TeX
|
% This is file comes from the documentation of the PGF package by Till Tantau.
|
||
|
% I have only commented out some code that is unnecessary for my purpose here (I just want to use the
|
||
|
% codeexample environment) I hope that I do not break PGF license by releasing the file like this. William Blum
|
||
|
|
||
|
|
||
|
% Copyright 2006 by Till Tantau
|
||
|
%
|
||
|
% This file may be distributed and/or modified
|
||
|
%
|
||
|
% 1. under the LaTeX Project Public License and/or
|
||
|
% 2. under the GNU Free Documentation License.
|
||
|
%
|
||
|
% See the file doc/generic/pgf/licenses/LICENSE for more details.
|
||
|
|
||
|
% $Header: /cvsroot/pgf/pgf/doc/generic/pgf/macros/pgfmanual-en-macros.tex,v 1.8 2006/10/11 15:00:27 tantau Exp $
|
||
|
|
||
|
\providecommand\href[2]{\texttt{#1}}
|
||
|
|
||
|
\colorlet{examplefill}{yellow!80!black}
|
||
|
\definecolor{graphicbackground}{rgb}{0.96,0.96,0.8}
|
||
|
\definecolor{codebackground}{rgb}{0.8,0.8,1}
|
||
|
|
||
|
\newenvironment{pgfmanualentry}{\list{}{\leftmargin=2em\itemindent-\leftmargin\def\makelabel##1{\hss##1}}}{\endlist}
|
||
|
\newcommand\pgfmanualentryheadline[1]{\itemsep=0pt\parskip=0pt\item\strut#1\par\topsep=0pt}
|
||
|
\newcommand\pgfmanualbody{\parskip3pt}
|
||
|
|
||
|
|
||
|
|
||
|
\newenvironment{pgflayout}[1]{
|
||
|
\begin{pgfmanualentry}
|
||
|
\pgfmanualentryheadline{\texttt{\string\pgfpagesuselayout\char`\{\declare{#1}\char`\}}\oarg{options}}
|
||
|
\index{#1@\protect\texttt{#1} layout}%
|
||
|
\index{Page layouts!#1@\protect\texttt{#1}}%
|
||
|
\pgfmanualbody
|
||
|
}
|
||
|
{
|
||
|
\end{pgfmanualentry}
|
||
|
}
|
||
|
|
||
|
|
||
|
\newenvironment{command}[1]{
|
||
|
\begin{pgfmanualentry}
|
||
|
\extractcommand#1\@@
|
||
|
\pgfmanualbody
|
||
|
}
|
||
|
{
|
||
|
\end{pgfmanualentry}
|
||
|
}
|
||
|
|
||
|
\def\extractcommand#1#2\@@{%
|
||
|
\pgfmanualentryheadline{\declare{\texttt{\string#1}}#2}%
|
||
|
\removeats{#1}%
|
||
|
\index{\strippedat @\protect\myprintocmmand{\strippedat}}}
|
||
|
|
||
|
|
||
|
\newenvironment{environment}[1]{
|
||
|
\begin{pgfmanualentry}
|
||
|
\extractenvironement#1\@@
|
||
|
\pgfmanualbody
|
||
|
}
|
||
|
{
|
||
|
\end{pgfmanualentry}
|
||
|
}
|
||
|
|
||
|
\def\extractenvironement#1#2\@@{%
|
||
|
\pgfmanualentryheadline{{\ttfamily\char`\\begin\char`\{\declare{#1}\char`\}}#2}%
|
||
|
\pgfmanualentryheadline{{\ttfamily\ \ }\meta{environment contents}}%
|
||
|
\pgfmanualentryheadline{{\ttfamily\char`\\end\char`\{\declare{#1}\char`\}}}%
|
||
|
\index{#1@\protect\texttt{#1} environment}%
|
||
|
\index{Environments!#1@\protect\texttt{#1}}}
|
||
|
|
||
|
|
||
|
\newenvironment{plainenvironment}[1]{
|
||
|
\begin{pgfmanualentry}
|
||
|
\extractplainenvironement#1\@@
|
||
|
\pgfmanualbody
|
||
|
}
|
||
|
{
|
||
|
\end{pgfmanualentry}
|
||
|
}
|
||
|
|
||
|
\def\extractplainenvironement#1#2\@@{%
|
||
|
\pgfmanualentryheadline{{\ttfamily\declare{\char`\\#1}}#2}%
|
||
|
\pgfmanualentryheadline{{\ttfamily\ \ }\meta{environment contents}}%
|
||
|
\pgfmanualentryheadline{{\ttfamily\declare{\char`\\end#1}}}%
|
||
|
\index{#1@\protect\texttt{#1} environment}%
|
||
|
\index{Environments!#1@\protect\texttt{#1}}}
|
||
|
|
||
|
|
||
|
\newenvironment{contextenvironment}[1]{
|
||
|
\begin{pgfmanualentry}
|
||
|
\extractcontextenvironement#1\@@
|
||
|
\pgfmanualbody
|
||
|
}
|
||
|
{
|
||
|
\end{pgfmanualentry}
|
||
|
}
|
||
|
|
||
|
\def\extractcontextenvironement#1#2\@@{%
|
||
|
\pgfmanualentryheadline{{\ttfamily\declare{\char`\\start#1}}#2}%
|
||
|
\pgfmanualentryheadline{{\ttfamily\ \ }\meta{environment contents}}%
|
||
|
\pgfmanualentryheadline{{\ttfamily\declare{\char`\\stop#1}}}%
|
||
|
\index{#1@\protect\texttt{#1} environment}%
|
||
|
\index{Environments!#1@\protect\texttt{#1}}}
|
||
|
|
||
|
|
||
|
\newenvironment{shape}[1]{
|
||
|
\begin{pgfmanualentry}
|
||
|
\pgfmanualentryheadline{Shape {\ttfamily\declare{#1}}}%
|
||
|
\index{#1@\protect\texttt{#1} shape}%
|
||
|
\index{Shapes!#1@\protect\texttt{#1}}
|
||
|
\pgfmanualbody
|
||
|
}
|
||
|
{
|
||
|
\end{pgfmanualentry}
|
||
|
}
|
||
|
|
||
|
\newenvironment{predefinednode}[1]{
|
||
|
\begin{pgfmanualentry}
|
||
|
\pgfmanualentryheadline{Predefined node {\ttfamily\declare{#1}}}%
|
||
|
\index{#1@\protect\texttt{#1} node}%
|
||
|
\index{Predefined node!#1@\protect\texttt{#1}}
|
||
|
\pgfmanualbody
|
||
|
}
|
||
|
{
|
||
|
\end{pgfmanualentry}
|
||
|
}
|
||
|
|
||
|
\newenvironment{coordinatesystem}[1]{
|
||
|
\begin{pgfmanualentry}
|
||
|
\pgfmanualentryheadline{Coordinate system {\ttfamily\declare{#1}}}%
|
||
|
\index{#1@\protect\texttt{#1} coordinate system}%
|
||
|
\index{Coordinate systems!#1@\protect\texttt{#1}}
|
||
|
\pgfmanualbody
|
||
|
}
|
||
|
{
|
||
|
\end{pgfmanualentry}
|
||
|
}
|
||
|
|
||
|
\newenvironment{snake}[1]{
|
||
|
\begin{pgfmanualentry}
|
||
|
\pgfmanualentryheadline{Snake {\ttfamily\declare{#1}}}%
|
||
|
\index{#1@\protect\texttt{#1} snake}%
|
||
|
\index{Snakes!#1@\protect\texttt{#1}}
|
||
|
\pgfmanualbody
|
||
|
}
|
||
|
{
|
||
|
\end{pgfmanualentry}
|
||
|
}
|
||
|
|
||
|
\def\pgfmanualbar{\char`\|}
|
||
|
\makeatletter
|
||
|
\newenvironment{pathoperation}[3][]{
|
||
|
\begin{pgfmanualentry}
|
||
|
\pgfmanualentryheadline{\textcolor{gray}{{\ttfamily\char`\\path}\
|
||
|
\ \dots}
|
||
|
\declare{\texttt{#2}}#3\ \textcolor{gray}{\dots\texttt{;}}}%
|
||
|
\def\pgfmanualtest{#1}%
|
||
|
\ifx\pgfmanualtest\@empty%
|
||
|
\index{#2@\protect\texttt{#2} path operation}%
|
||
|
\index{Path operations!#2@\protect\texttt{#2}}%
|
||
|
\fi%
|
||
|
\pgfmanualbody
|
||
|
}
|
||
|
{
|
||
|
\end{pgfmanualentry}
|
||
|
}
|
||
|
\makeatother
|
||
|
|
||
|
\def\extractcommand#1#2\@@{%
|
||
|
\pgfmanualentryheadline{\declare{\texttt{\string#1}}#2}%
|
||
|
\removeats{#1}%
|
||
|
\index{\strippedat @\protect\myprintocmmand{\strippedat}}}
|
||
|
|
||
|
|
||
|
\newenvironment{package}[1]{
|
||
|
\begin{pgfmanualentry}
|
||
|
\pgfmanualentryheadline{{\ttfamily\char`\\usepackage\char`\{\declare{#1}\char`\}\space\space \char`\%\space\space \LaTeX}}
|
||
|
\index{#1@\protect\texttt{#1} package}%
|
||
|
\index{Packages and files!#1@\protect\texttt{#1}}%
|
||
|
\pgfmanualentryheadline{{\ttfamily\char`\\input \declare{#1}.tex\space\space\space \char`\%\space\space plain \TeX}}
|
||
|
\pgfmanualentryheadline{{\ttfamily\char`\\usemodule[\declare{#1}]\space\space \char`\%\space\space Con\TeX t}}
|
||
|
\pgfmanualbody
|
||
|
}
|
||
|
{
|
||
|
\end{pgfmanualentry}
|
||
|
}
|
||
|
|
||
|
|
||
|
\newenvironment{pgflibrary}[1]{
|
||
|
\begin{pgfmanualentry}
|
||
|
\pgfmanualentryheadline{{\ttfamily\char`\\usepgflibrary\char`\{\declare{#1}\char`\}\space\space\space
|
||
|
\char`\%\space\space \LaTeX\space and plain \TeX\space and pure pgf}}
|
||
|
\index{#1@\protect\texttt{#1} library}%
|
||
|
\index{Libraries!#1@\protect\texttt{#1}}%
|
||
|
\pgfmanualentryheadline{{\ttfamily\char`\\usepgflibrary[\declare{#1}]\space\space \char`\%\space\space Con\TeX t\space and pure pgf}}
|
||
|
\pgfmanualentryheadline{{\ttfamily\char`\\usetikzlibrary\char`\{\declare{#1}\char`\}\space\space
|
||
|
\char`\%\space\space \LaTeX\space and plain \TeX\space when using \tikzname}}
|
||
|
\pgfmanualentryheadline{{\ttfamily\char`\\usetikzlibrary[\declare{#1}]\space
|
||
|
\char`\%\space\space Con\TeX t\space when using \tikzname}}
|
||
|
\pgfmanualbody
|
||
|
}
|
||
|
{
|
||
|
\end{pgfmanualentry}
|
||
|
}
|
||
|
|
||
|
\newenvironment{tikzlibrary}[1]{
|
||
|
\begin{pgfmanualentry}
|
||
|
\pgfmanualentryheadline{{\ttfamily\char`\\usetikzlibrary\char`\{\declare{#1}\char`\}\space\space \char`\%\space\space \LaTeX\space and plain \TeX}}
|
||
|
\index{#1@\protect\texttt{#1} library}%
|
||
|
\index{Libraries!#1@\protect\texttt{#1}}%
|
||
|
\pgfmanualentryheadline{{\ttfamily\char`\\usetikzlibrary[\declare{#1}]\space \char`\%\space\space Con\TeX t}}
|
||
|
\pgfmanualbody
|
||
|
}
|
||
|
{
|
||
|
\end{pgfmanualentry}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
\newenvironment{filedescription}[1]{
|
||
|
\begin{pgfmanualentry}
|
||
|
\pgfmanualentryheadline{File {\ttfamily\declare{#1}}}%
|
||
|
\index{#1@\protect\texttt{#1} file}%
|
||
|
\index{Packages and files!#1@\protect\texttt{#1}}%
|
||
|
\pgfmanualbody
|
||
|
}
|
||
|
{
|
||
|
\end{pgfmanualentry}
|
||
|
}
|
||
|
|
||
|
|
||
|
\newenvironment{packageoption}[1]{
|
||
|
\begin{pgfmanualentry}
|
||
|
\pgfmanualentryheadline{{\ttfamily\char`\\usepackage[\declare{#1}]\char`\{pgf\char`\}}}
|
||
|
\index{#1@\protect\texttt{#1} package option}%
|
||
|
\index{Package options for \textsc{pgf}!#1@\protect\texttt{#1}}%
|
||
|
\pgfmanualbody
|
||
|
}
|
||
|
{
|
||
|
\end{pgfmanualentry}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
\newcommand\opt[1]{{\color{black!50!green}#1}}
|
||
|
\newcommand\ooarg[1]{{\ttfamily[}\meta{#1}{\ttfamily]}}
|
||
|
|
||
|
\def\opt{\afterassignment\pgfmanualopt\let\next=}
|
||
|
\def\pgfmanualopt{\ifx\next\bgroup\bgroup\color{black!50!green}\else{\color{black!50!green}\next}\fi}
|
||
|
|
||
|
|
||
|
|
||
|
\def\beamer{\textsc{beamer}}
|
||
|
\def\pdf{\textsc{pdf}}
|
||
|
\def\pgfname{\textsc{pgf}}
|
||
|
\def\tikzname{Ti\emph{k}Z}
|
||
|
\def\pstricks{\textsc{pstricks}}
|
||
|
\def\prosper{\textsc{prosper}}
|
||
|
\def\seminar{\textsc{seminar}}
|
||
|
\def\texpower{\textsc{texpower}}
|
||
|
\def\foils{\textsc{foils}}
|
||
|
|
||
|
{
|
||
|
\makeatletter
|
||
|
\global\let\myempty=\@empty
|
||
|
\global\let\mygobble=\@gobble
|
||
|
\catcode`\@=12
|
||
|
\gdef\getridofats#1@#2\relax{%
|
||
|
\def\getridtest{#2}%
|
||
|
\ifx\getridtest\myempty%
|
||
|
\expandafter\def\expandafter\strippedat\expandafter{\strippedat#1}
|
||
|
\else%
|
||
|
\expandafter\def\expandafter\strippedat\expandafter{\strippedat#1\protect\printanat}
|
||
|
\getridofats#2\relax%
|
||
|
\fi%
|
||
|
}
|
||
|
|
||
|
\gdef\removeats#1{%
|
||
|
\let\strippedat\myempty%
|
||
|
\edef\strippedtext{\stripcommand#1}%
|
||
|
\expandafter\getridofats\strippedtext @\relax%
|
||
|
}
|
||
|
|
||
|
\gdef\stripcommand#1{\expandafter\mygobble\string#1}
|
||
|
}
|
||
|
|
||
|
\def\printanat{\char`\@}
|
||
|
|
||
|
\def\declare{\afterassignment\pgfmanualdeclare\let\next=}
|
||
|
\def\pgfmanualdeclare{\ifx\next\bgroup\bgroup\color{red!75!black}\else{\color{red!75!black}\next}\fi}
|
||
|
|
||
|
|
||
|
\let\textoken=\command
|
||
|
\let\endtextoken=\endcommand
|
||
|
|
||
|
\def\myprintocmmand#1{\texttt{\char`\\#1}}
|
||
|
|
||
|
\def\example{\par\smallskip\noindent\textit{Example: }}
|
||
|
\def\themeauthor{\par\smallskip\noindent\textit{Theme author: }}
|
||
|
|
||
|
\def\itemoption#1{\item \declare{\texttt{#1}}%
|
||
|
\indexoption{#1}%
|
||
|
}
|
||
|
|
||
|
\def\indexoption#1{%
|
||
|
\index{#1@\protect\texttt{#1} option}%
|
||
|
\index{Graphic options!#1@\protect\texttt{#1}}%
|
||
|
}
|
||
|
|
||
|
\def\itemstyle#1{\item \texttt{style=}\declare{\texttt{#1}}%
|
||
|
\index{#1@\protect\texttt{#1} style}%
|
||
|
\index{Styles!#1@\protect\texttt{#1}}%
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
\def\class#1{\list{}{\leftmargin=2em\itemindent-\leftmargin\def\makelabel##1{\hss##1}}%
|
||
|
\extractclass#1@\par\topsep=0pt}
|
||
|
\def\endclass{\endlist}
|
||
|
\def\extractclass#1#2@{%
|
||
|
\item{{{\ttfamily\char`\\documentclass}#2{\ttfamily\char`\{\declare{#1}\char`\}}}}%
|
||
|
\index{#1@\protect\texttt{#1} class}%
|
||
|
\index{Classes!#1@\protect\texttt{#1}}}
|
||
|
|
||
|
\def\partname{Part}
|
||
|
|
||
|
\makeatletter
|
||
|
%\def\index@prologue{\section*{Index}\addcontentsline{toc}{section}{Index}
|
||
|
% This index only contains automatically generated entries. A good
|
||
|
% index should also contain carefully selected keywords. This index is
|
||
|
% not a good index.
|
||
|
% \bigskip
|
||
|
%}
|
||
|
%\c@IndexColumns=2
|
||
|
% \def\theindex{\@restonecoltrue
|
||
|
% \columnseprule \z@ \columnsep 35\p@
|
||
|
% \twocolumn[\index@prologue]%
|
||
|
% \parindent -30pt
|
||
|
% \columnsep 15pt
|
||
|
% \parskip 0pt plus 1pt
|
||
|
% \leftskip 30pt
|
||
|
% \rightskip 0pt plus 2cm
|
||
|
% \small
|
||
|
% \def\@idxitem{\par}%
|
||
|
% \let\item\@idxitem \ignorespaces}
|
||
|
% \def\endtheindex{\onecolumn}
|
||
|
%\def\noindexing{\let\index=\@gobble}
|
||
|
|
||
|
|
||
|
%\newcommand\patternindex[1]{
|
||
|
% \index{#1@\protect\texttt{#1} pattern}%
|
||
|
% \index{Patterns!#1@\protect\texttt{#1}}
|
||
|
% \texttt{#1}&
|
||
|
% \begin{tikzpicture}
|
||
|
% \path[draw=black!50,very thin,pattern=#1,rounded corners]
|
||
|
% (0pt,0pt) rectangle (1cm,1.5em);
|
||
|
% \end{tikzpicture}
|
||
|
%}
|
||
|
%
|
||
|
%
|
||
|
%\newcommand\symarrow[1]{
|
||
|
% \index{#1@\protect\texttt{#1} arrow tip}%
|
||
|
% \index{Arrow tips!#1@\protect\texttt{#1}}
|
||
|
% \texttt{#1}& yields thick
|
||
|
% \begin{tikzpicture}[arrows={#1-#1},thick,baseline]
|
||
|
% \useasboundingbox (0pt,-0.5ex) rectangle (1cm,2ex);
|
||
|
% \draw (0pt,.5ex) -- (1cm,.5ex);
|
||
|
% \end{tikzpicture} and thin
|
||
|
% \begin{tikzpicture}[arrows={#1-#1},thin,baseline]
|
||
|
% \useasboundingbox (0pt,-0.5ex) rectangle (1cm,2ex);
|
||
|
% \draw (0pt,.5ex) -- (1cm,.5ex);
|
||
|
% \end{tikzpicture}
|
||
|
%}
|
||
|
%
|
||
|
%\newcommand\sarrow[2]{
|
||
|
% \index{#1@\protect\texttt{#1} arrow tip}%
|
||
|
% \index{Arrow tips!#1@\protect\texttt{#1}}
|
||
|
% \index{#2@\protect\texttt{#2} arrow tip}%
|
||
|
% \index{Arrow tips!#2@\protect\texttt{#2}}
|
||
|
% \texttt{#1-#2}& yields thick
|
||
|
% \begin{tikzpicture}[arrows={#1-#2},thick,baseline]
|
||
|
% \useasboundingbox (0pt,-0.5ex) rectangle (1cm,2ex);
|
||
|
% \draw (0pt,.5ex) -- (1cm,.5ex);
|
||
|
% \end{tikzpicture} and thin
|
||
|
% \begin{tikzpicture}[arrows={#1-#2},thin,baseline]
|
||
|
% \useasboundingbox (0pt,-0.5ex) rectangle (1cm,2ex);
|
||
|
% \draw (0pt,.5ex) -- (1cm,.5ex);
|
||
|
% \end{tikzpicture}
|
||
|
%}
|
||
|
%
|
||
|
%\newcommand\carrow[1]{
|
||
|
% \index{#1@\protect\texttt{#1} arrow tip}%
|
||
|
% \index{Arrow tips!#1@\protect\texttt{#1}}
|
||
|
% \texttt{#1}& yields for line width 1ex
|
||
|
% \begin{tikzpicture}[arrows={#1-#1},line width=1ex,baseline]
|
||
|
% \useasboundingbox (0pt,-0.5ex) rectangle (1.5cm,2ex);
|
||
|
% \draw (0pt,.5ex) -- (1.5cm,.5ex);
|
||
|
% \end{tikzpicture}
|
||
|
%}
|
||
|
%\def\myvbar{\char`\|}
|
||
|
%\newcommand\plotmarkentry[1]{%
|
||
|
% \index{#1@\protect\texttt{#1} plot mark}%
|
||
|
% \index{Plot marks!#1@\protect\texttt{#1}}
|
||
|
% \texttt{\char`\\pgfuseplotmark\char`\{\declare{#1}\char`\}} &
|
||
|
% \tikz\draw[color=black!25] plot[mark=#1,mark options={fill=examplefill,draw=black}] coordinates{(0,0) (.5,0.2) (1,0) (1.5,0.2)};\\
|
||
|
%}
|
||
|
%\newcommand\plotmarkentrytikz[1]{%
|
||
|
% \index{#1@\protect\texttt{#1} plot mark}%
|
||
|
% \index{Plot marks!#1@\protect\texttt{#1}}
|
||
|
% \texttt{mark=\declare{#1}} & \tikz\draw[color=black!25]
|
||
|
% plot[mark=#1,mark options={fill=examplefill,draw=black}]
|
||
|
% coordinates {(0,0) (.5,0.2) (1,0) (1.5,0.2)};\\
|
||
|
%}
|
||
|
%
|
||
|
|
||
|
|
||
|
\ifx\scantokens\@undefined
|
||
|
\PackageError{pgfmanual-macros}{You need to use extended latex
|
||
|
(elatex) or (pdfelatex) to process this document}{}
|
||
|
\fi
|
||
|
|
||
|
\begingroup
|
||
|
\catcode`|=0
|
||
|
\catcode`[= 1
|
||
|
\catcode`]=2
|
||
|
\catcode`\{=12
|
||
|
\catcode `\}=12
|
||
|
\catcode`\\=12 |gdef|find@example#1\end{codeexample}[|endofcodeexample[#1]]
|
||
|
|endgroup
|
||
|
|
||
|
\begingroup
|
||
|
\catcode`\^=7
|
||
|
\catcode`\^^M=13
|
||
|
\catcode`\ =13%
|
||
|
\gdef\returntospace{\catcode`\ =13\def {\space}\catcode`\^^M=13\def^^M{}}%
|
||
|
\endgroup
|
||
|
|
||
|
\begingroup
|
||
|
\catcode`\%=13
|
||
|
\catcode`\^^M=13
|
||
|
\gdef\commenthandler{\catcode`\%=13\def%{\@gobble@till@return}}
|
||
|
\gdef\@gobble@till@return#1^^M{}
|
||
|
\gdef\typesetcomment{\catcode`\%=13\def%{\@typeset@till@return}}
|
||
|
\gdef\@typeset@till@return#1^^M{{\def%{\char`\%}\textsl{\char`\%#1}}\par}
|
||
|
\endgroup
|
||
|
|
||
|
\define@key{codeexample}{width}{\setlength\codeexamplewidth{#1}}
|
||
|
\define@key{codeexample}{graphic}{\colorlet{graphicbackground}{#1}}
|
||
|
\define@key{codeexample}{code}{\colorlet{codebackground}{#1}}
|
||
|
\define@key{codeexample}{execute code}{\csname code@execute#1\endcsname}
|
||
|
\define@key{codeexample}{code only}[]{\code@executefalse}
|
||
|
\define@key{codeexample}{pre}{\def\code@pre{#1}}
|
||
|
\define@key{codeexample}{post}{\def\code@post{#1}}
|
||
|
|
||
|
\def\code@pre{}
|
||
|
\def\code@post{}
|
||
|
|
||
|
\newdimen\codeexamplewidth
|
||
|
\newif\ifcode@execute
|
||
|
\newbox\codeexamplebox
|
||
|
\def\codeexample[#1]{%
|
||
|
\code@executetrue
|
||
|
\setlength\codeexamplewidth{4cm+7pt}
|
||
|
\setkeys{codeexample}{#1}%
|
||
|
\parindent0pt
|
||
|
\begingroup%
|
||
|
\par%
|
||
|
\medskip%
|
||
|
\let\do\@makeother%
|
||
|
\dospecials%
|
||
|
\obeylines%
|
||
|
\@vobeyspaces%
|
||
|
\catcode`\%=13%
|
||
|
\catcode`\^^M=13%
|
||
|
\find@example}
|
||
|
\def\endofcodeexample#1{%
|
||
|
\endgroup%
|
||
|
\ifcode@execute%
|
||
|
\setbox\codeexamplebox=\hbox{%
|
||
|
{%
|
||
|
{%
|
||
|
\returntospace%
|
||
|
\commenthandler%
|
||
|
\xdef\code@temp{#1}% removes returns and comments
|
||
|
}%
|
||
|
\colorbox{graphicbackground}{\color{black}\ignorespaces%
|
||
|
\code@pre\expandafter\scantokens\expandafter{\code@temp\ignorespaces}\code@post\ignorespaces}%
|
||
|
}%
|
||
|
}%
|
||
|
\ifdim\wd\codeexamplebox>\codeexamplewidth%
|
||
|
\def\code@start{\par}%
|
||
|
\def\code@flushstart{}\def\code@flushend{}%
|
||
|
\def\code@mid{\parskip2pt\par\noindent}%
|
||
|
\def\code@width{\linewidth-6pt}%
|
||
|
\def\code@end{}%
|
||
|
\else%
|
||
|
\def\code@start{%
|
||
|
\linewidth=\textwidth%
|
||
|
\parshape \@ne 0pt \linewidth
|
||
|
\leavevmode%
|
||
|
\hbox\bgroup}%
|
||
|
\def\code@flushstart{\hfill}%
|
||
|
\def\code@flushend{\hbox{}}%
|
||
|
\def\code@mid{\hskip6pt}%
|
||
|
\def\code@width{\linewidth-12pt-\codeexamplewidth}%
|
||
|
\def\code@end{\egroup}%
|
||
|
\fi%
|
||
|
\code@start%
|
||
|
\noindent%
|
||
|
\begin{minipage}[t]{\codeexamplewidth}\raggedright
|
||
|
\hrule width0pt%
|
||
|
\footnotesize\vskip-1em%
|
||
|
\code@flushstart\box\codeexamplebox\code@flushend%
|
||
|
\vskip-1ex
|
||
|
\leavevmode%
|
||
|
\end{minipage}%
|
||
|
\else%
|
||
|
\def\code@mid{\par}
|
||
|
\def\code@width{\linewidth-6pt}
|
||
|
\def\code@end{}
|
||
|
\fi%
|
||
|
\code@mid%
|
||
|
\colorbox{codebackground}{%
|
||
|
\begin{minipage}[t]{\code@width}%
|
||
|
{%
|
||
|
\let\do\@makeother
|
||
|
\dospecials
|
||
|
\frenchspacing\@vobeyspaces
|
||
|
\normalfont\ttfamily\footnotesize
|
||
|
\typesetcomment%
|
||
|
\@tempswafalse
|
||
|
\def\par{%
|
||
|
\if@tempswa
|
||
|
\leavevmode \null \@@par\penalty\interlinepenalty
|
||
|
\else
|
||
|
\@tempswatrue
|
||
|
\ifhmode\@@par\penalty\interlinepenalty\fi
|
||
|
\fi}%
|
||
|
\obeylines
|
||
|
\everypar \expandafter{\the\everypar \unpenalty}%
|
||
|
#1}
|
||
|
\end{minipage}}%
|
||
|
\code@end%
|
||
|
\par%
|
||
|
\medskip
|
||
|
\end{codeexample}
|
||
|
}
|
||
|
|
||
|
\def\endcodeexample{}
|
||
|
|
||
|
|
||
|
\makeatother
|
||
|
|
||
|
|
||
|
%%% Local Variables:
|
||
|
%%% mode: latex
|
||
|
%%% TeX-master: "beameruserguide"
|
||
|
%%% End:
|