summaryrefslogtreecommitdiff
path: root/graphics/pgf
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-10-17 03:01:01 +0000
committerNorbert Preining <norbert@preining.info>2020-10-17 03:01:01 +0000
commit683b627ec089f4ddb05f06b1e93ee368189f78a4 (patch)
tree7a6ef1c8a2545a0d181cb890cc8611610263b8f5 /graphics/pgf
parentd8395db550c4f6044f0f3586bbc5263f06444598 (diff)
CTAN sync 202010170301
Diffstat (limited to 'graphics/pgf')
-rw-r--r--graphics/pgf/contrib/syntaxdi/README46
-rw-r--r--graphics/pgf/contrib/syntaxdi/doc/syntaxdi.pdfbin0 -> 187370 bytes
-rw-r--r--graphics/pgf/contrib/syntaxdi/doc/syntaxdi.tex89
-rw-r--r--graphics/pgf/contrib/syntaxdi/latex/syntaxdi.sty117
4 files changed, 252 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/syntaxdi/README b/graphics/pgf/contrib/syntaxdi/README
new file mode 100644
index 0000000000..349c019108
--- /dev/null
+++ b/graphics/pgf/contrib/syntaxdi/README
@@ -0,0 +1,46 @@
+PACKAGE `syntaxdi'
+========================================================================
+The 'syntaxdi' package provides styles for TikZ to create special syntax
+diagrams. These are known as railroad diagrams. The package was
+originally part of the 'schule' package.
+Cf. pgfmanual.pdf
+5 Tutorial: Diagrams as Simple Graphs (pp.66-74)
+------------------------------------------------------------------------
+Version: 0.8.2
+Last change: 2020/10/16
+
+The package is still a work in progress. Open development steps are
+shown in the documentation.
+------------------------------------------------------------------------
+
+LICENCE
+========================================================================
+Copyright (C)
+2010, 2011, 2012, 2013, 2014, 2018, 2020
+Johannes Pieper, André Hilbig, Johannes Kuhaupt, André Hilbig,
+Daniel Spittank, Ludger Humbert, Adrian Salamon
+
+(schulepaket@johpie.de)
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is Johannes Pieper.
+--------------------------------------------------------------------------
+The main code file of the package syntaxdi is:
+ syntaxdi.sty
+--------------------------------------------------------------------------
+The package syntaxdi consists of the documentation files:
+ README
+ syntaxdi.tex, syntaxdi.pdf
+--------------------------------------------------------------------------
+If you have any ideas, questions, suggestions or bugs to report, please
+feel free to contact me.
+--------------------------------------------------------------------------
diff --git a/graphics/pgf/contrib/syntaxdi/doc/syntaxdi.pdf b/graphics/pgf/contrib/syntaxdi/doc/syntaxdi.pdf
new file mode 100644
index 0000000000..495c09e362
--- /dev/null
+++ b/graphics/pgf/contrib/syntaxdi/doc/syntaxdi.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/syntaxdi/doc/syntaxdi.tex b/graphics/pgf/contrib/syntaxdi/doc/syntaxdi.tex
new file mode 100644
index 0000000000..1adbbd6cbc
--- /dev/null
+++ b/graphics/pgf/contrib/syntaxdi/doc/syntaxdi.tex
@@ -0,0 +1,89 @@
+\documentclass[a4paper,add-index]{cnltx-doc}
+
+\usepackage{syntaxdi}
+
+\usepackage{hyperref}
+
+\setcnltx{
+ name = syntaxdi ,
+ title = syntaxdi ,
+ version = 0.8.2 ,
+ date = 2020-10-16 ,
+ subtitle = {\LaTeX-Paket zum Setzen von Syntaxdiagrammen in Form von Railroaddiagrammen},
+ info = Paketdokumentation ,
+ authors = {Johannes Pieper, Johannes Kuhaupt, Ludger Humbert, Andr\'e Hilbig, Adrian Salamon, Daniel Spittank} ,
+ email = schulepaket@johpie.de ,
+ url = https://ddi.uni-wuppertal.de/material/schulepaket.html ,
+ abstract = {%
+ Mit diesem Paket werden Styles für TikZ bereit gestellt, um spezielle Syntaxdiagramme erstellen zu können. Diese sind auch als Railroaddiagramme bekannt und wurden von Niklaus Wirth zur Dokumentation der Syntax von Pascal eingeführt. In der Dokumentation des Pakets \pkg{pgf} wird die Erstellung in dem Tutorium \textbf{Diagrams as Simple Graphs} (S.~66--74) Schritt für Schritt beschrieben. Das Paket war vormals Teil des Schulepakets.
+ } ,
+ index-setup = { othercode=\footnotesize,level=\section},
+ add-listings-options= {
+ morekeywords={
+ }
+ },
+}
+
+\begin{document}
+
+\section{Syntaxdiagramme}
+\label{paket:syntaxdi}
+
+Mit den Paketen \pkg{syntaxdi} und \pkg{tikz} ist es möglich, spezielle Syntaxdiagramme als Railroaddiagramme zu erstellen. Dazu sind Elemente definiert worden, die automatisch durch Pfeile miteinander verbunden werden.
+
+Hierzu definiert das Paket \pkg{syntaxdi} einige TikZ-Stile, die einfach genutzt werden können.
+
+\subsection{TikZ-Stile}
+\begin{options}
+ \opt{nonterminal} definiert ein Non-Terminal.
+ \opt{terminal} definiert ein Terminal.
+ \opt{fnonterminal} definiert ein Non-Terminal ohne automatische Verzweigung.
+ \opt{fterminal} definiert ein Terminal ohne automatische Verzweigung.
+ \opt{point} definiert einen Punkt, der ohne ankommenden Pfeil gezeichnet wird.
+ \opt{endpoint} definiert einen Punkt, der mit ankommenden Pfeil gezeichnet wird.
+\end{options}
+
+\subsection{Beispiel}
+
+Damit kann z.\,B. das Syntaxdiagramm für eine Mehrfachverzweigung in der Programmiersprache Python in Form eines Railroaddiagramms dargestellt werden.
+
+\begin{example}[gobble=0]
+\begin{tikzpicture}[syntaxdiagramm]
+ \node [] {};
+ \node [terminal] {if};
+ \node [nonterminal] {Bedingung};
+ \node [terminal] {:};
+ \node [nonterminal] {Anweisungsblock};
+ \node (ersteReiheEnde) [point] {};
+ \node (ersteReiheEndeUnten) [point, below=of ersteReiheEnde] {};
+ \node (zweiteReiheStartOben) [point, left=of ersteReiheEndeUnten,
+ xshift=-75mm] {};
+ \node (zweiteReiheStart) [point, below=of zweiteReiheStartOben] {};
+ {
+ [start chain=elif going right]
+ \chainin (zweiteReiheStart);
+ \node [terminal] {elif};
+ \node [nonterminal] {Bedingung};
+ \node [terminal] {:};
+ \node [nonterminal] {Anweisungsblock};
+ \node (elifEnde) [point] {};
+ \node (elifEndeOben) [point, above=of elifEnde] {};
+ \draw[->,left] (elifEndeOben) -- (ersteReiheEndeUnten);
+ }
+ \node (dritteReiheStart) [point, below=of zweiteReiheStart,
+ yshift=-5mm] {};
+ \node (vierteReiheStart) [point, below=of dritteReiheStart,
+ yshift=-5mm] {};
+ \node (vierteReiheEnde) [point, xshift=84mm] {};
+ {
+ [start chain=else going right]
+ \chainin (dritteReiheStart);
+ \node [terminal] {else};
+ \node [terminal] {:};
+ \node (elseEnde) [nonterminal] {Anweisungsblock};
+ \draw[->] (elseEnde) -| (vierteReiheEnde);
+ }
+ \node (ende) [endpoint] {};
+\end{tikzpicture}
+\end{example}
+\end{document}
diff --git a/graphics/pgf/contrib/syntaxdi/latex/syntaxdi.sty b/graphics/pgf/contrib/syntaxdi/latex/syntaxdi.sty
new file mode 100644
index 0000000000..97e0672fdc
--- /dev/null
+++ b/graphics/pgf/contrib/syntaxdi/latex/syntaxdi.sty
@@ -0,0 +1,117 @@
+% \subsection{Das Paket \texttt{syntaxdi}}
+%
+% Beginn der Definition, Voraussetzung der \LaTeXe{} Version und die
+% eigene Identifizierung
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{syntaxdi}[2020/10/16 v0.8.2 %
+ Syntaxdiagramme mit TikZ]
+% \end{macrocode}
+% Einbinden der benötigten Pakete
+% \begin{macrocode}
+\RequirePackage{tikz}
+\usetikzlibrary{chains}
+\usetikzlibrary{arrows,shadows,shapes.misc,scopes}
+% \end{macrocode}
+%
+% \subsubsection{TikZ-Definitionen}
+%
+% Definition für nicht terminale Symbole für Syntaxdiagramme in TikZ
+% \begin{macrocode}
+\tikzset{
+ fnonterminal/.style={
+ rectangle,
+ minimum size=6mm,
+ text height=1.5ex,text depth=.25ex,
+ very thick,
+ draw=red!50!black!50, % 50% red und 50% black,
+ top color=white, % oben: weisser Schatten ...
+ bottom color=red!50!black!20, % unten: anderer Schatten
+ font=\itshape
+ }
+}
+\tikzset{
+ nonterminal/.style={
+ % Die Form:
+ rectangle,
+ % Die Größe:
+ minimum size=6mm,
+ text height=1.5ex,text depth=.25ex,
+ % Der Rand:
+ very thick,
+ draw=red!50!black!50, % 50% red und 50% black,
+ % gemischt mit 50% white
+ % Füllfarbe:
+ top color=white, % oben: weisser Schatten ...
+ bottom color=red!50!black!20, % unten: anderer Schatten
+ % Font
+ font=\itshape
+ }
+}
+% \end{macrocode}
+%
+% Definitionen für terminale Symbole im Syntaxdiagramm in TikZ
+% \begin{macrocode}
+\tikzset{
+ fterminal/.style={
+ rounded rectangle,
+ minimum size=6mm,
+ very thick,draw=black!50,
+ text height=1.5ex,text depth=.25ex,
+ top color=white,bottom color=black!20,
+ font=\ttfamily
+ }
+}
+\tikzset{
+ terminal/.style={
+ % Die Form:
+ rounded rectangle,
+ minimum size=6mm,
+ % Der Rest ...
+ very thick,draw=black!50,
+ text height=1.5ex,text depth=.25ex,
+ top color=white,bottom color=black!20,
+ font=\ttfamily
+ }
+}
+% \end{macrocode}
+%
+% Definitionen eines Punktes für das Syntaxdiagramm in TikZ
+% \begin{macrocode}
+\tikzset{
+ point/.style={
+ circle,
+ inner sep=0pt,
+ minimum size=0pt
+ }
+}
+% \end{macrocode}
+%
+% Definition eines Endpunktes für das Syntaxdiagramm in TikZ
+% \begin{macrocode}
+\tikzset{
+ endpoint/.style={
+ circle,
+ inner sep=0pt,
+ minimum size=0pt
+ }
+}
+% \end{macrocode}
+%
+% Definition der Syntaxdiagramme in TikZ
+% \begin{macrocode}
+\tikzset{
+ syntaxdiagramm/.style={
+ start chain,
+ node distance=7mm and 5mm,
+ every node/.style={on chain},
+ nonterminal/.append style={join=by ->},
+ terminal/.append style={join=by ->},
+ endpoint/.append style={join=by ->},
+ point/.append style={join=by -},
+ skip loop/.style={to path={-- ++(0,-.5) -| (\tikztotarget)}}
+ }
+}
+% \end{macrocode}
+%
+% Ende des Pakets \texttt{syntaxdi}