From 0e5e2f0d8a0472c17785e552e27fa41b0930c74c Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 17 Oct 2020 21:01:27 +0000 Subject: syntaxdi (17oct20) git-svn-id: svn://tug.org/texlive/trunk@56685 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/syntaxdi/README | 46 +++++++++ Master/texmf-dist/doc/latex/syntaxdi/syntaxdi.pdf | Bin 0 -> 187370 bytes Master/texmf-dist/doc/latex/syntaxdi/syntaxdi.tex | 89 ++++++++++++++++ Master/texmf-dist/tex/latex/syntaxdi/syntaxdi.sty | 117 ++++++++++++++++++++++ 4 files changed, 252 insertions(+) create mode 100644 Master/texmf-dist/doc/latex/syntaxdi/README create mode 100644 Master/texmf-dist/doc/latex/syntaxdi/syntaxdi.pdf create mode 100644 Master/texmf-dist/doc/latex/syntaxdi/syntaxdi.tex create mode 100644 Master/texmf-dist/tex/latex/syntaxdi/syntaxdi.sty (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/latex/syntaxdi/README b/Master/texmf-dist/doc/latex/syntaxdi/README new file mode 100644 index 00000000000..349c0191084 --- /dev/null +++ b/Master/texmf-dist/doc/latex/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/Master/texmf-dist/doc/latex/syntaxdi/syntaxdi.pdf b/Master/texmf-dist/doc/latex/syntaxdi/syntaxdi.pdf new file mode 100644 index 00000000000..495c09e362b Binary files /dev/null and b/Master/texmf-dist/doc/latex/syntaxdi/syntaxdi.pdf differ diff --git a/Master/texmf-dist/doc/latex/syntaxdi/syntaxdi.tex b/Master/texmf-dist/doc/latex/syntaxdi/syntaxdi.tex new file mode 100644 index 00000000000..1adbbd6cbc2 --- /dev/null +++ b/Master/texmf-dist/doc/latex/syntaxdi/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/Master/texmf-dist/tex/latex/syntaxdi/syntaxdi.sty b/Master/texmf-dist/tex/latex/syntaxdi/syntaxdi.sty new file mode 100644 index 00000000000..97e0672fdc2 --- /dev/null +++ b/Master/texmf-dist/tex/latex/syntaxdi/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} -- cgit v1.2.3