diff --git a/README.md b/README.md index 89de0a9..1d95b1d 100644 --- a/README.md +++ b/README.md @@ -10,13 +10,14 @@ todo \begin{document} \begin{tikzpicture} + \coordinate (A) at (0,0); \coordinate (B) at (6,0); - \coordinate (T) at (5,0); - \draw[MainTrack] (A) -- (B); - \pic at (T) {train_moving_forward}; + \maintrack (A) -- (B); + \train[moving,forward] at (T) label (train); + \end{tikzpicture} \end{document} @@ -25,6 +26,10 @@ todo ------------ # History +## Version 0.5 + + * new improved syntax + ## Version 0.4 * added document for symbology @@ -53,7 +58,5 @@ todo ------------ # Roadmap - * encapsulation of symbols in package for tex infrastructure * provide option for internationalziation (i18n) - * write usefull documentation - * re-think syntax \ No newline at end of file + * write usefull documentation \ No newline at end of file diff --git a/doc/authors.tex b/doc/authors.tex new file mode 100644 index 0000000..4727b5f --- /dev/null +++ b/doc/authors.tex @@ -0,0 +1,8 @@ +%!TEX TS-program = pdflatexmk +%!TEX root = doc.tex + +% Copyright 2018,2019 Martin Scheidt (ISC license) + +% Permission to use, copy, modify, and/or distribute this file for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +\newcommand{\MS}{Martin Scheidt} diff --git a/doc/doc.pdf b/doc/doc.pdf new file mode 100644 index 0000000..765e660 Binary files /dev/null and b/doc/doc.pdf differ diff --git a/doc/doc.tex b/doc/doc.tex new file mode 100644 index 0000000..191323f --- /dev/null +++ b/doc/doc.tex @@ -0,0 +1,130 @@ +%% symbol library for TikZ track schematics +% +% Copyright 2018,2019 Martin Scheidt (ISC license) + +% Permission to use, copy, modify, and/or distribute this file for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +\documentclass[ + draft, + paper=a4, + version=3.25, + pagesize=pdftex, + twoside=false, + toc=listof, +]{scrartcl} +% --------[ Coding and Language ]---------- +\usepackage{scrhack} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[main=english]{babel} +% --------[ revision history ]---------- +\usepackage[tocentry]{vhistory} +\input{authors.tex} +% --------[ Layout ]----------- +\pretolerance=8000 +\tolerance=9500 +\hbadness=8000 +\vbadness=10000 +\displaywidowpenalty=10000 +\clubpenalty=10000 +\widowpenalty=10000 +\usepackage{lmodern,microtype,mathptmx,courier} +\usepackage[scaled=0.92]{helvet} +\usepackage[ + automark, + headsepline, + draft=false +]{scrlayer-scrpage} +\pagestyle{scrheadings} +% -----------[ PDF linking ]---------------- +\usepackage[ + pdftex, + pdfpagelabels, % modify PDF page labels + hyperindex, + hyperfigures, + bookmarksopen, + bookmarksnumbered, + draft=false, + pageanchor=true, % Determines whether every page is given an implicit anchor at the top left corner + %pagebackref, % Adds ‘backlink’ text to the end of each item in the bibliography, as a list of page numbers + %linktocpage, % make page number, not text, be link on TOC, LOF and LOT + breaklinks=true, % allow links to break over lines by making links over multiple lines into PDF links to the same target + colorlinks=true, % Colors the text of links and anchors + linkcolor=base01, % Color for normal internal links + urlcolor=blue, % Color for web links +]{hyperref} % PDF with a linked TableOfContent +\usepackage{bookmark} % Adding package bookmark improves bookmarks handling. +\usepackage{url} +% -------[ PDF Informations ]--------- +\hypersetup{% + pdftitle={tikz/trackschematic}, + pdfsubject={A tikz toolbox for track schematics}, + pdfauthor={Martin Scheidt}, + pdfkeywords={latex, tikz, library, railway, track, layout} +} + +\usepackage[inline]{enumitem} +\usepackage{tikz} + +\usepackage[prefix=]{xcolor-solarized} +\def\rootTrackschematic{../../tikz-trackschematic} +\def\srcTrackschematic{\rootTrackschematic/src/tikzlibrarytrackschematic} +\input{\srcTrackschematic.topology.code.tex} +\input{\srcTrackschematic.trafficcontrol.code.tex} +\input{\srcTrackschematic.vehicles.code.tex} +\input{\srcTrackschematic.constructions.code.tex} + +\begin{document} + +\title{\tikz\node[scale=1.2]{\color{gray}\Huge\sffamily \{\textcolor{black}{Ti\textcolor{orange}{\emph{k}}Z}/\textcolor{blue}{trackschematic}\}};} +\subtitle{A Ti\emph{k}Z library for track schematics} +\author{\vhListAllAuthorsLong} +\date{Version \vhCurrentVersion~ from \vhCurrentDate} + +\maketitle + +\tableofcontents + +\section{Introduction}\label{sec:intro} + +\subsection[About]{About tikz/trackschematic} + + The Ti\emph{k}Z \emph{trackschematic} library is a toolbox of symbols geared primarily towards creating track schematic for either research or educational purposes. + It provides a tikz frontends to some of the symbols which maybe needed to describe situations and layouts in railway operation. + The library is divided into four sublibraries: + \begin{itemize*}[label={}] + \item topology, + \item traffic control, + \item vehicles, and + \item constructions. + \end{itemize*} + + +\subsection{Requirements}\label{sec:require} + + The library uses Ti\emph{k}Z and it is based the following packages: + \begin{itemize*}[label={}] + \item tikz, + \item xcolor, and + \item etoolbox. + \end{itemize*} + Further more it uses the following Ti\emph{k}Z libraries: + \begin{itemize*}[label={}] + \item calc, + \item patterns, and + \item arrows.meta. + \end{itemize*} + + +\subsection{License} + + Copyright 2018, 2019 \MS. Permission to use, copy, modify, and/or distribute this file for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies (\href{https://www.tldrlegal.com/l/isc}{ISC license}). + +\section{Usage}\label{sec:use} + + loading ther library + +% \appendix +\input{versionhistory.tex} +\vhListAllAuthorsLongWithAbbrev +\end{document} \ No newline at end of file diff --git a/examples/network.pdf b/doc/examples/network.pdf similarity index 100% rename from examples/network.pdf rename to doc/examples/network.pdf diff --git a/examples/network.tex b/doc/examples/network.tex similarity index 100% rename from examples/network.tex rename to doc/examples/network.tex diff --git a/examples/network.tikz b/doc/examples/network.tikz similarity index 100% rename from examples/network.tikz rename to doc/examples/network.tikz diff --git a/examples/station_berg.pdf b/doc/examples/station_berg.pdf similarity index 100% rename from examples/station_berg.pdf rename to doc/examples/station_berg.pdf diff --git a/examples/station_berg.tex b/doc/examples/station_berg.tex similarity index 100% rename from examples/station_berg.tex rename to doc/examples/station_berg.tex diff --git a/examples/station_chamstadt.pdf b/doc/examples/station_chamstadt.pdf similarity index 100% rename from examples/station_chamstadt.pdf rename to doc/examples/station_chamstadt.pdf diff --git a/examples/station_chamstadt.tex b/doc/examples/station_chamstadt.tex similarity index 100% rename from examples/station_chamstadt.tex rename to doc/examples/station_chamstadt.tex diff --git a/examples/station_okerbach.pdf b/doc/examples/station_okerbach.pdf similarity index 100% rename from examples/station_okerbach.pdf rename to doc/examples/station_okerbach.pdf diff --git a/examples/station_okerbach.tex b/doc/examples/station_okerbach.tex similarity index 100% rename from examples/station_okerbach.tex rename to doc/examples/station_okerbach.tex diff --git a/examples/station_okerbach.tikz b/doc/examples/station_okerbach.tikz similarity index 100% rename from examples/station_okerbach.tikz rename to doc/examples/station_okerbach.tikz diff --git a/examples/station_pockelsdorf.pdf b/doc/examples/station_pockelsdorf.pdf similarity index 100% rename from examples/station_pockelsdorf.pdf rename to doc/examples/station_pockelsdorf.pdf diff --git a/examples/station_pockelsdorf.tex b/doc/examples/station_pockelsdorf.tex similarity index 100% rename from examples/station_pockelsdorf.tex rename to doc/examples/station_pockelsdorf.tex diff --git a/examples/station_pockelsdorf.tikz b/doc/examples/station_pockelsdorf.tikz similarity index 100% rename from examples/station_pockelsdorf.tikz rename to doc/examples/station_pockelsdorf.tikz diff --git a/examples/station_rebenau.pdf b/doc/examples/station_rebenau.pdf similarity index 100% rename from examples/station_rebenau.pdf rename to doc/examples/station_rebenau.pdf diff --git a/examples/station_rebenau.tex b/doc/examples/station_rebenau.tex similarity index 100% rename from examples/station_rebenau.tex rename to doc/examples/station_rebenau.tex diff --git a/examples/station_rebenau.tikz b/doc/examples/station_rebenau.tikz similarity index 100% rename from examples/station_rebenau.tikz rename to doc/examples/station_rebenau.tikz diff --git a/examples/station_schleinitz.pdf b/doc/examples/station_schleinitz.pdf similarity index 100% rename from examples/station_schleinitz.pdf rename to doc/examples/station_schleinitz.pdf diff --git a/examples/station_schleinitz.tex b/doc/examples/station_schleinitz.tex similarity index 100% rename from examples/station_schleinitz.tex rename to doc/examples/station_schleinitz.tex diff --git a/examples/station_schleinitz.tikz b/doc/examples/station_schleinitz.tikz similarity index 100% rename from examples/station_schleinitz.tikz rename to doc/examples/station_schleinitz.tikz diff --git a/snippets.pdf b/doc/snippets.pdf similarity index 100% rename from snippets.pdf rename to doc/snippets.pdf diff --git a/snippets.tex b/doc/snippets.tex similarity index 100% rename from snippets.tex rename to doc/snippets.tex diff --git a/snippets/block_clearing_point_backward.tikz b/doc/snippets/block_clearing_point_backward.tikz similarity index 100% rename from snippets/block_clearing_point_backward.tikz rename to doc/snippets/block_clearing_point_backward.tikz diff --git a/snippets/block_clearing_point_forward.tikz b/doc/snippets/block_clearing_point_forward.tikz similarity index 100% rename from snippets/block_clearing_point_forward.tikz rename to doc/snippets/block_clearing_point_forward.tikz diff --git a/snippets/block_end_marker_backward.tikz b/doc/snippets/block_end_marker_backward.tikz similarity index 100% rename from snippets/block_end_marker_backward.tikz rename to doc/snippets/block_end_marker_backward.tikz diff --git a/snippets/block_end_marker_forward.tikz b/doc/snippets/block_end_marker_forward.tikz similarity index 100% rename from snippets/block_end_marker_forward.tikz rename to doc/snippets/block_end_marker_forward.tikz diff --git a/snippets/block_signal_backward.tikz b/doc/snippets/block_signal_backward.tikz similarity index 100% rename from snippets/block_signal_backward.tikz rename to doc/snippets/block_signal_backward.tikz diff --git a/snippets/block_signal_forward.tikz b/doc/snippets/block_signal_forward.tikz similarity index 100% rename from snippets/block_signal_forward.tikz rename to doc/snippets/block_signal_forward.tikz diff --git a/snippets/bridge.tikz b/doc/snippets/bridge.tikz similarity index 100% rename from snippets/bridge.tikz rename to doc/snippets/bridge.tikz diff --git a/snippets/bridge_track_beneath.tikz b/doc/snippets/bridge_track_beneath.tikz similarity index 100% rename from snippets/bridge_track_beneath.tikz rename to doc/snippets/bridge_track_beneath.tikz diff --git a/snippets/bufferstop_backward.tikz b/doc/snippets/bufferstop_backward.tikz similarity index 100% rename from snippets/bufferstop_backward.tikz rename to doc/snippets/bufferstop_backward.tikz diff --git a/snippets/bufferstop_forward.tikz b/doc/snippets/bufferstop_forward.tikz similarity index 100% rename from snippets/bufferstop_forward.tikz rename to doc/snippets/bufferstop_forward.tikz diff --git a/snippets/clearing_point.tikz b/doc/snippets/clearing_point.tikz similarity index 100% rename from snippets/clearing_point.tikz rename to doc/snippets/clearing_point.tikz diff --git a/snippets/combined_signal_forward.tikz b/doc/snippets/combined_signal_forward.tikz similarity index 100% rename from snippets/combined_signal_forward.tikz rename to doc/snippets/combined_signal_forward.tikz diff --git a/snippets/derailer_left_backward.tikz b/doc/snippets/derailer_left_backward.tikz similarity index 100% rename from snippets/derailer_left_backward.tikz rename to doc/snippets/derailer_left_backward.tikz diff --git a/snippets/derailer_left_forward.tikz b/doc/snippets/derailer_left_forward.tikz similarity index 100% rename from snippets/derailer_left_forward.tikz rename to doc/snippets/derailer_left_forward.tikz diff --git a/snippets/derailer_right_backward.tikz b/doc/snippets/derailer_right_backward.tikz similarity index 100% rename from snippets/derailer_right_backward.tikz rename to doc/snippets/derailer_right_backward.tikz diff --git a/snippets/derailer_right_forward.tikz b/doc/snippets/derailer_right_forward.tikz similarity index 100% rename from snippets/derailer_right_forward.tikz rename to doc/snippets/derailer_right_forward.tikz diff --git a/snippets/diamond_crossing_left.tikz b/doc/snippets/diamond_crossing_left.tikz similarity index 100% rename from snippets/diamond_crossing_left.tikz rename to doc/snippets/diamond_crossing_left.tikz diff --git a/snippets/diamond_crossing_right.tikz b/doc/snippets/diamond_crossing_right.tikz similarity index 100% rename from snippets/diamond_crossing_right.tikz rename to doc/snippets/diamond_crossing_right.tikz diff --git a/snippets/distant_signal_backward.tikz b/doc/snippets/distant_signal_backward.tikz similarity index 100% rename from snippets/distant_signal_backward.tikz rename to doc/snippets/distant_signal_backward.tikz diff --git a/snippets/distant_signal_forward.tikz b/doc/snippets/distant_signal_forward.tikz similarity index 100% rename from snippets/distant_signal_forward.tikz rename to doc/snippets/distant_signal_forward.tikz diff --git a/snippets/distant_speed_signal_backward.tikz b/doc/snippets/distant_speed_signal_backward.tikz similarity index 100% rename from snippets/distant_speed_signal_backward.tikz rename to doc/snippets/distant_speed_signal_backward.tikz diff --git a/snippets/distant_speed_signal_forward.tikz b/doc/snippets/distant_speed_signal_forward.tikz similarity index 100% rename from snippets/distant_speed_signal_forward.tikz rename to doc/snippets/distant_speed_signal_forward.tikz diff --git a/snippets/double-slip_turnout_left.tikz b/doc/snippets/double-slip_turnout_left.tikz similarity index 100% rename from snippets/double-slip_turnout_left.tikz rename to doc/snippets/double-slip_turnout_left.tikz diff --git a/snippets/double-slip_turnout_right.tikz b/doc/snippets/double-slip_turnout_right.tikz similarity index 100% rename from snippets/double-slip_turnout_right.tikz rename to doc/snippets/double-slip_turnout_right.tikz diff --git a/snippets/ghost_train_direction_backward.tikz b/doc/snippets/ghost_train_direction_backward.tikz similarity index 100% rename from snippets/ghost_train_direction_backward.tikz rename to doc/snippets/ghost_train_direction_backward.tikz diff --git a/snippets/ghost_train_direction_forward.tikz b/doc/snippets/ghost_train_direction_forward.tikz similarity index 100% rename from snippets/ghost_train_direction_forward.tikz rename to doc/snippets/ghost_train_direction_forward.tikz diff --git a/snippets/hump.tikz b/doc/snippets/hump.tikz similarity index 100% rename from snippets/hump.tikz rename to doc/snippets/hump.tikz diff --git a/snippets/interlocking.tikz b/doc/snippets/interlocking.tikz similarity index 100% rename from snippets/interlocking.tikz rename to doc/snippets/interlocking.tikz diff --git a/snippets/level_crossing_double.tikz b/doc/snippets/level_crossing_double.tikz similarity index 100% rename from snippets/level_crossing_double.tikz rename to doc/snippets/level_crossing_double.tikz diff --git a/snippets/level_crossing_double_full_closure.tikz b/doc/snippets/level_crossing_double_full_closure.tikz similarity index 100% rename from snippets/level_crossing_double_full_closure.tikz rename to doc/snippets/level_crossing_double_full_closure.tikz diff --git a/snippets/level_crossing_single.tikz b/doc/snippets/level_crossing_single.tikz similarity index 100% rename from snippets/level_crossing_single.tikz rename to doc/snippets/level_crossing_single.tikz diff --git a/snippets/main_line.tikz b/doc/snippets/main_line.tikz similarity index 100% rename from snippets/main_line.tikz rename to doc/snippets/main_line.tikz diff --git a/snippets/main_track.tikz b/doc/snippets/main_track.tikz similarity index 100% rename from snippets/main_track.tikz rename to doc/snippets/main_track.tikz diff --git a/snippets/platform_left.tikz b/doc/snippets/platform_left.tikz similarity index 100% rename from snippets/platform_left.tikz rename to doc/snippets/platform_left.tikz diff --git a/snippets/platform_middle.tikz b/doc/snippets/platform_middle.tikz similarity index 100% rename from snippets/platform_middle.tikz rename to doc/snippets/platform_middle.tikz diff --git a/snippets/platform_right.tikz b/doc/snippets/platform_right.tikz similarity index 100% rename from snippets/platform_right.tikz rename to doc/snippets/platform_right.tikz diff --git a/snippets/route_clearing_point_backward.tikz b/doc/snippets/route_clearing_point_backward.tikz similarity index 100% rename from snippets/route_clearing_point_backward.tikz rename to doc/snippets/route_clearing_point_backward.tikz diff --git a/snippets/route_clearing_point_forward.tikz b/doc/snippets/route_clearing_point_forward.tikz similarity index 100% rename from snippets/route_clearing_point_forward.tikz rename to doc/snippets/route_clearing_point_forward.tikz diff --git a/snippets/route_signal_backward.tikz b/doc/snippets/route_signal_backward.tikz similarity index 100% rename from snippets/route_signal_backward.tikz rename to doc/snippets/route_signal_backward.tikz diff --git a/snippets/route_signal_forward.tikz b/doc/snippets/route_signal_forward.tikz similarity index 100% rename from snippets/route_signal_forward.tikz rename to doc/snippets/route_signal_forward.tikz diff --git a/snippets/secondary_track.tikz b/doc/snippets/secondary_track.tikz similarity index 100% rename from snippets/secondary_track.tikz rename to doc/snippets/secondary_track.tikz diff --git a/snippets/shunt_limit_backward.tikz b/doc/snippets/shunt_limit_backward.tikz similarity index 100% rename from snippets/shunt_limit_backward.tikz rename to doc/snippets/shunt_limit_backward.tikz diff --git a/snippets/shunt_limit_forward.tikz b/doc/snippets/shunt_limit_forward.tikz similarity index 100% rename from snippets/shunt_limit_forward.tikz rename to doc/snippets/shunt_limit_forward.tikz diff --git a/snippets/shunt_signal_backward.tikz b/doc/snippets/shunt_signal_backward.tikz similarity index 100% rename from snippets/shunt_signal_backward.tikz rename to doc/snippets/shunt_signal_backward.tikz diff --git a/snippets/shunt_signal_backward_locked.tikz b/doc/snippets/shunt_signal_backward_locked.tikz similarity index 100% rename from snippets/shunt_signal_backward_locked.tikz rename to doc/snippets/shunt_signal_backward_locked.tikz diff --git a/snippets/shunt_signal_forward.tikz b/doc/snippets/shunt_signal_forward.tikz similarity index 100% rename from snippets/shunt_signal_forward.tikz rename to doc/snippets/shunt_signal_forward.tikz diff --git a/snippets/shunt_signal_forward_locked.tikz b/doc/snippets/shunt_signal_forward_locked.tikz similarity index 100% rename from snippets/shunt_signal_forward_locked.tikz rename to doc/snippets/shunt_signal_forward_locked.tikz diff --git a/snippets/speed_signal_backward.tikz b/doc/snippets/speed_signal_backward.tikz similarity index 100% rename from snippets/speed_signal_backward.tikz rename to doc/snippets/speed_signal_backward.tikz diff --git a/snippets/speed_signal_forward.tikz b/doc/snippets/speed_signal_forward.tikz similarity index 100% rename from snippets/speed_signal_forward.tikz rename to doc/snippets/speed_signal_forward.tikz diff --git a/snippets/track_distance.tikz b/doc/snippets/track_distance.tikz similarity index 100% rename from snippets/track_distance.tikz rename to doc/snippets/track_distance.tikz diff --git a/snippets/track_number.tikz b/doc/snippets/track_number.tikz similarity index 100% rename from snippets/track_number.tikz rename to doc/snippets/track_number.tikz diff --git a/snippets/train_berth.tikz b/doc/snippets/train_berth.tikz similarity index 100% rename from snippets/train_berth.tikz rename to doc/snippets/train_berth.tikz diff --git a/snippets/train_berth_shape.tikz b/doc/snippets/train_berth_shape.tikz similarity index 100% rename from snippets/train_berth_shape.tikz rename to doc/snippets/train_berth_shape.tikz diff --git a/snippets/train_berth_shape_bidirectional.tikz b/doc/snippets/train_berth_shape_bidirectional.tikz similarity index 100% rename from snippets/train_berth_shape_bidirectional.tikz rename to doc/snippets/train_berth_shape_bidirectional.tikz diff --git a/snippets/train_berth_shape_different.tikz b/doc/snippets/train_berth_shape_different.tikz similarity index 100% rename from snippets/train_berth_shape_different.tikz rename to doc/snippets/train_berth_shape_different.tikz diff --git a/snippets/train_berth_sign_backward.tikz b/doc/snippets/train_berth_sign_backward.tikz similarity index 100% rename from snippets/train_berth_sign_backward.tikz rename to doc/snippets/train_berth_sign_backward.tikz diff --git a/snippets/train_berth_sign_forward.tikz b/doc/snippets/train_berth_sign_forward.tikz similarity index 100% rename from snippets/train_berth_sign_forward.tikz rename to doc/snippets/train_berth_sign_forward.tikz diff --git a/snippets/train_direction_backward.tikz b/doc/snippets/train_direction_backward.tikz similarity index 100% rename from snippets/train_direction_backward.tikz rename to doc/snippets/train_direction_backward.tikz diff --git a/snippets/train_direction_forward.tikz b/doc/snippets/train_direction_forward.tikz similarity index 100% rename from snippets/train_direction_forward.tikz rename to doc/snippets/train_direction_forward.tikz diff --git a/snippets/train_drive_automatic.tikz b/doc/snippets/train_drive_automatic.tikz similarity index 100% rename from snippets/train_drive_automatic.tikz rename to doc/snippets/train_drive_automatic.tikz diff --git a/snippets/train_drive_human.tikz b/doc/snippets/train_drive_human.tikz similarity index 100% rename from snippets/train_drive_human.tikz rename to doc/snippets/train_drive_human.tikz diff --git a/snippets/train_moving_backward.tikz b/doc/snippets/train_moving_backward.tikz similarity index 100% rename from snippets/train_moving_backward.tikz rename to doc/snippets/train_moving_backward.tikz diff --git a/snippets/train_moving_fast_backward.tikz b/doc/snippets/train_moving_fast_backward.tikz similarity index 100% rename from snippets/train_moving_fast_backward.tikz rename to doc/snippets/train_moving_fast_backward.tikz diff --git a/snippets/train_moving_fast_forward.tikz b/doc/snippets/train_moving_fast_forward.tikz similarity index 100% rename from snippets/train_moving_fast_forward.tikz rename to doc/snippets/train_moving_fast_forward.tikz diff --git a/snippets/train_moving_forward.tikz b/doc/snippets/train_moving_forward.tikz similarity index 100% rename from snippets/train_moving_forward.tikz rename to doc/snippets/train_moving_forward.tikz diff --git a/snippets/train_moving_slow_backward.tikz b/doc/snippets/train_moving_slow_backward.tikz similarity index 100% rename from snippets/train_moving_slow_backward.tikz rename to doc/snippets/train_moving_slow_backward.tikz diff --git a/snippets/train_moving_slow_forward.tikz b/doc/snippets/train_moving_slow_forward.tikz similarity index 100% rename from snippets/train_moving_slow_forward.tikz rename to doc/snippets/train_moving_slow_forward.tikz diff --git a/snippets/train_shunt_mode_backward.tikz b/doc/snippets/train_shunt_mode_backward.tikz similarity index 100% rename from snippets/train_shunt_mode_backward.tikz rename to doc/snippets/train_shunt_mode_backward.tikz diff --git a/snippets/train_shunt_mode_forward.tikz b/doc/snippets/train_shunt_mode_forward.tikz similarity index 100% rename from snippets/train_shunt_mode_forward.tikz rename to doc/snippets/train_shunt_mode_forward.tikz diff --git a/snippets/train_shunting_backward.tikz b/doc/snippets/train_shunting_backward.tikz similarity index 100% rename from snippets/train_shunting_backward.tikz rename to doc/snippets/train_shunting_backward.tikz diff --git a/snippets/train_shunting_forward.tikz b/doc/snippets/train_shunting_forward.tikz similarity index 100% rename from snippets/train_shunting_forward.tikz rename to doc/snippets/train_shunting_forward.tikz diff --git a/snippets/transmitter.tikz b/doc/snippets/transmitter.tikz similarity index 100% rename from snippets/transmitter.tikz rename to doc/snippets/transmitter.tikz diff --git a/snippets/transmitter_backward.tikz b/doc/snippets/transmitter_backward.tikz similarity index 100% rename from snippets/transmitter_backward.tikz rename to doc/snippets/transmitter_backward.tikz diff --git a/snippets/transmitter_below.tikz b/doc/snippets/transmitter_below.tikz similarity index 100% rename from snippets/transmitter_below.tikz rename to doc/snippets/transmitter_below.tikz diff --git a/snippets/transmitter_below_bidirectional.tikz b/doc/snippets/transmitter_below_bidirectional.tikz similarity index 100% rename from snippets/transmitter_below_bidirectional.tikz rename to doc/snippets/transmitter_below_bidirectional.tikz diff --git a/snippets/transmitter_below_forward.tikz b/doc/snippets/transmitter_below_forward.tikz similarity index 100% rename from snippets/transmitter_below_forward.tikz rename to doc/snippets/transmitter_below_forward.tikz diff --git a/snippets/transmitter_below_with_signal.tikz b/doc/snippets/transmitter_below_with_signal.tikz similarity index 100% rename from snippets/transmitter_below_with_signal.tikz rename to doc/snippets/transmitter_below_with_signal.tikz diff --git a/snippets/transmitter_bidirectional.tikz b/doc/snippets/transmitter_bidirectional.tikz similarity index 100% rename from snippets/transmitter_bidirectional.tikz rename to doc/snippets/transmitter_bidirectional.tikz diff --git a/snippets/transmitter_forward.tikz b/doc/snippets/transmitter_forward.tikz similarity index 100% rename from snippets/transmitter_forward.tikz rename to doc/snippets/transmitter_forward.tikz diff --git a/snippets/turnout_left_backward.tikz b/doc/snippets/turnout_left_backward.tikz similarity index 100% rename from snippets/turnout_left_backward.tikz rename to doc/snippets/turnout_left_backward.tikz diff --git a/snippets/turnout_left_backward_left_position.tikz b/doc/snippets/turnout_left_backward_left_position.tikz similarity index 100% rename from snippets/turnout_left_backward_left_position.tikz rename to doc/snippets/turnout_left_backward_left_position.tikz diff --git a/snippets/turnout_left_backward_moving_points.tikz b/doc/snippets/turnout_left_backward_moving_points.tikz similarity index 100% rename from snippets/turnout_left_backward_moving_points.tikz rename to doc/snippets/turnout_left_backward_moving_points.tikz diff --git a/snippets/turnout_left_backward_right_position.tikz b/doc/snippets/turnout_left_backward_right_position.tikz similarity index 100% rename from snippets/turnout_left_backward_right_position.tikz rename to doc/snippets/turnout_left_backward_right_position.tikz diff --git a/snippets/turnout_left_forward.tikz b/doc/snippets/turnout_left_forward.tikz similarity index 100% rename from snippets/turnout_left_forward.tikz rename to doc/snippets/turnout_left_forward.tikz diff --git a/snippets/turnout_left_forward_left_position.tikz b/doc/snippets/turnout_left_forward_left_position.tikz similarity index 100% rename from snippets/turnout_left_forward_left_position.tikz rename to doc/snippets/turnout_left_forward_left_position.tikz diff --git a/snippets/turnout_left_forward_moving_points.tikz b/doc/snippets/turnout_left_forward_moving_points.tikz similarity index 100% rename from snippets/turnout_left_forward_moving_points.tikz rename to doc/snippets/turnout_left_forward_moving_points.tikz diff --git a/snippets/turnout_left_forward_right_position.tikz b/doc/snippets/turnout_left_forward_right_position.tikz similarity index 100% rename from snippets/turnout_left_forward_right_position.tikz rename to doc/snippets/turnout_left_forward_right_position.tikz diff --git a/snippets/turnout_right_backward.tikz b/doc/snippets/turnout_right_backward.tikz similarity index 100% rename from snippets/turnout_right_backward.tikz rename to doc/snippets/turnout_right_backward.tikz diff --git a/snippets/turnout_right_backward_left_position.tikz b/doc/snippets/turnout_right_backward_left_position.tikz similarity index 100% rename from snippets/turnout_right_backward_left_position.tikz rename to doc/snippets/turnout_right_backward_left_position.tikz diff --git a/snippets/turnout_right_backward_moving_points.tikz b/doc/snippets/turnout_right_backward_moving_points.tikz similarity index 100% rename from snippets/turnout_right_backward_moving_points.tikz rename to doc/snippets/turnout_right_backward_moving_points.tikz diff --git a/snippets/turnout_right_backward_right_position.tikz b/doc/snippets/turnout_right_backward_right_position.tikz similarity index 100% rename from snippets/turnout_right_backward_right_position.tikz rename to doc/snippets/turnout_right_backward_right_position.tikz diff --git a/snippets/turnout_right_forward.tikz b/doc/snippets/turnout_right_forward.tikz similarity index 100% rename from snippets/turnout_right_forward.tikz rename to doc/snippets/turnout_right_forward.tikz diff --git a/snippets/turnout_right_forward_left_position.tikz b/doc/snippets/turnout_right_forward_left_position.tikz similarity index 100% rename from snippets/turnout_right_forward_left_position.tikz rename to doc/snippets/turnout_right_forward_left_position.tikz diff --git a/snippets/turnout_right_forward_moving_points.tikz b/doc/snippets/turnout_right_forward_moving_points.tikz similarity index 100% rename from snippets/turnout_right_forward_moving_points.tikz rename to doc/snippets/turnout_right_forward_moving_points.tikz diff --git a/snippets/turnout_right_forward_right_position.tikz b/doc/snippets/turnout_right_forward_right_position.tikz similarity index 100% rename from snippets/turnout_right_forward_right_position.tikz rename to doc/snippets/turnout_right_forward_right_position.tikz diff --git a/snippets/turnout_with_fouling_left_backward.tikz b/doc/snippets/turnout_with_fouling_left_backward.tikz similarity index 100% rename from snippets/turnout_with_fouling_left_backward.tikz rename to doc/snippets/turnout_with_fouling_left_backward.tikz diff --git a/snippets/turnout_with_fouling_left_forward.tikz b/doc/snippets/turnout_with_fouling_left_forward.tikz similarity index 100% rename from snippets/turnout_with_fouling_left_forward.tikz rename to doc/snippets/turnout_with_fouling_left_forward.tikz diff --git a/snippets/turnout_with_fouling_right_backward.tikz b/doc/snippets/turnout_with_fouling_right_backward.tikz similarity index 100% rename from snippets/turnout_with_fouling_right_backward.tikz rename to doc/snippets/turnout_with_fouling_right_backward.tikz diff --git a/snippets/turnout_with_fouling_right_forward.tikz b/doc/snippets/turnout_with_fouling_right_forward.tikz similarity index 100% rename from snippets/turnout_with_fouling_right_forward.tikz rename to doc/snippets/turnout_with_fouling_right_forward.tikz diff --git a/snippets/vehicle.tikz b/doc/snippets/vehicle.tikz similarity index 100% rename from snippets/vehicle.tikz rename to doc/snippets/vehicle.tikz diff --git a/snippets/vehicles.tikz b/doc/snippets/vehicles.tikz similarity index 100% rename from snippets/vehicles.tikz rename to doc/snippets/vehicles.tikz diff --git a/snippets/vehicles_with_label.tikz b/doc/snippets/vehicles_with_label.tikz similarity index 100% rename from snippets/vehicles_with_label.tikz rename to doc/snippets/vehicles_with_label.tikz diff --git a/snippets/view_point_backward.tikz b/doc/snippets/view_point_backward.tikz similarity index 100% rename from snippets/view_point_backward.tikz rename to doc/snippets/view_point_backward.tikz diff --git a/snippets/view_point_forward.tikz b/doc/snippets/view_point_forward.tikz similarity index 100% rename from snippets/view_point_forward.tikz rename to doc/snippets/view_point_forward.tikz diff --git a/symbology.pdf b/doc/symbology.pdf similarity index 100% rename from symbology.pdf rename to doc/symbology.pdf diff --git a/symbology.tex b/doc/symbology.tex similarity index 100% rename from symbology.tex rename to doc/symbology.tex diff --git a/doc/versionhistory.tex b/doc/versionhistory.tex new file mode 100644 index 0000000..6326b44 --- /dev/null +++ b/doc/versionhistory.tex @@ -0,0 +1,25 @@ +%!TEX TS-program = pdflatexmk +%!TEX root = doc.tex + +% Copyright 2018,2019 Martin Scheidt (ISC license) + +% Permission to use, copy, modify, and/or distribute this file for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +\begin{versionhistory} + %\vhEntry{}{}{||...}{} + \vhEntry{0.1}{2018-09-14}{MS}{ + Basic concept of a library with railway topology symbols and some examples. + } + \vhEntry{0.2}{2018-12-19}{MS}{ + Added transmitters and minor improvements. + } + \vhEntry{0.3}{2019-04-04}{MS}{ + Moved snippet folder to root folder and defined and used color foreground and background. + } + \vhEntry{0.4}{2019-07-21}{MS}{ + Reworked library for common tikz library layout. + } + \vhEntry{0.5}{2019-12-19}{MS}{ + Introduced new syntax. + } +\end{versionhistory} diff --git a/src/tikzlibrarytrackschematic.code.tex b/src/tikzlibrarytrackschematic.code.tex index fb61928..8170e3c 100644 --- a/src/tikzlibrarytrackschematic.code.tex +++ b/src/tikzlibrarytrackschematic.code.tex @@ -6,9 +6,32 @@ \ProvidesFileRCS{tikzlibrarytrackschematic.code.tex} +%%%%%%%%%%%%%%% +% global settings +%%%%%%%%%%%%%%% +\RequirePackage{tikz,xcolor} + +\colorlet{background}{white} +\colorlet{foreground}{black} + +\pgfkeys{% + /tikz/trackschematic/.is family,% + /tikz/trackschematic/.cd,% + %% face + face/.value required,% forward OR backward + face/.store in=\face, + /tikz/face/.forward to=/tikz/trackschematic/face,% + /tikz/forward/.code={\pgfkeys{/tikz/trackschematic/face=forward}},% + /tikz/backward/.code={\pgfkeys{/tikz/trackschematic/face=backward}},% + % +} + +%%%%%%%%%%%%%%% +% symbol definitions +%%%%%%%%%%%%%%% \usetikzlibrary{trackschematic.topology}% \usetikzlibrary{trackschematic.trafficcontrol}% \usetikzlibrary{trackschematic.vehicles}% -\usetikzlibrary{trackschematic.construction}% +\usetikzlibrary{trackschematic.constructions}% \endinput diff --git a/src/tikzlibrarytrackschematic.topology.code.tex b/src/tikzlibrarytrackschematic.topology.code.tex index d2cec05..d47ca35 100644 --- a/src/tikzlibrarytrackschematic.topology.code.tex +++ b/src/tikzlibrarytrackschematic.topology.code.tex @@ -6,237 +6,499 @@ \ProvidesFileRCS{tikzlibrarytrackschematic.topology.code.tex} -\colorlet{background}{white} -\colorlet{foreground}{black} +%%%%%%%%%%%%%%% +% local +%%%%%%%%%%%%%%% + +\RequirePackage{etoolbox} +\usetikzlibrary{calc,patterns,arrows.meta} + +%%%%%%%%%%%%%%% +% symbol track +%%%%%%%%%%%%%%% + +% tracks +\newcommand\maintrack{}% just for safety +\def\maintrack{\path[draw,MainTrack]}% +\newcommand\secondarytrack{}% just for safety +\def\secondarytrack{\path[draw,SecondaryTrack]}% +\newcommand\sidetrack{}% just for safety +\def\sidetrack{\path[draw,SecondaryTrack]}% alias for \secondarytrack \tikzset{MainTrack/.style={line width=2pt,foreground}}% \tikzset{SecondaryTrack/.style={line width=0.7pt,foreground}}% -\tikzset{ - pics/track_number/.default=, - pics/track_number/.style args={#1}{% - code={% - \node[fill=background,font=\sffamily,text=foreground] at (0,0) {#1}; % speed indicator - } - }, +%%%%%%%%%%%%%%% +% symbol track number +%%%%%%%%%%%%%%% + +%% command +\newcommand\tracklabel{}% just for safety +\def\tracklabel#1(#2)#3(#4){% \tracknumber[options] at (coord) label (name); + \pic at (#2) {track_label={#1/#3/#4}};% symbol +}% +%% tikz keys +% \pgfkeys{% +% /tikz/trackschematic/.is family,% +% /tikz/trackschematic/.cd,% +% }% +%% symbol definition +\tikzset{% + pics/track_label/.default=,% + pics/track_label/.style args={#1/#2/#3}{code={% + %% settings + \def\coordcommand{#1} % beware of leading and tailing spaces! + \def\labelcommand{#2} % beware of leading and tailing spaces! + \def\labelcontent{#3} + %% label + \node[fill=background,text=foreground] at (0,0) {\labelcontent};% label + }% + },% }% -\tikzset{ - pics/track_distance/.default=, - pics/track_distance/.style args={#1}{ - code={ - \fill[foreground] (0,0.96) -- ++(-0.1,-0.15) -- ++(0.2,0) -- cycle; % upper triangle - \node[baseline=(current bounding box.center),font=\sffamily,text=foreground] at (0,0.5) {#1}; % distance indicator - \fill[foreground] (0,0.04) -- ++(-0.1,0.15) -- ++(0.2,0) -- cycle; % lower triangle +%%%%%%%%%%%%%%% +% symbol track distance +%%%%%%%%%%%%%%% + +%% command +\newcommand\trackdistance{}% just for safety +\def\trackdistance#1(#2)#3(#4)#5(#6){% \trackdistance between (coord1) and (coord2) label (distance); + \path[draw=background,<->,>={Stealth[foreground,inset=0pt,angle=50:0.3cm]},shorten <=1pt,shorten >=1pt] (#2) -- (#4)% arrow tips + node[baseline=(current bounding box.center),text=foreground,midway,sloped,rotate=90] {#6};% label +}% + +%%%%%%%%%%%%%%% +% symbol turnout +%%%%%%%%%%%%%%% + +% command +\newcommand\turnout{}% just for safety +\def\turnout[#1]#2(#3)#4(#5){% \turnout[type] at (coord) label (name); + \pic[#1] at (#3) {turnout={#2/#4/#5}};% symbol +}% +% options +\newtoggle{fouling_point}\settoggle{fouling_point}{false} +\newtoggle{manual_operated}\settoggle{fouling_point}{false} +% tikz keys +\pgfkeys{% + /tikz/trackschematic/turnout/.is family,% + /tikz/trackschematic/turnout/.cd,% + % + %% branch + branch/.value required,% left OR right + branch/.store in=\branch,% left OR right + /tikz/branch/.forward to=/tikz/trackschematic/turnout/branch,% + % + %% fouling point + fouling point/.value forbidden,% + fouling point/.code={\settoggle{fouling_point}{true}},% + /tikz/fouling point/.forward to=/tikz/trackschematic/turnout/fouling point,% + % + %% points + points/.store in=\points,% moving, left, right OR none + points=none,% moving, left, right OR none + /tikz/points/.forward to=/tikz/trackschematic/turnout/points,% + % + %% manual operated + manual operated/.value forbidden,% + manual operated/.code={\settoggle{manual_operated}{true}},% + /tikz/manual operated/.forward to=/tikz/trackschematic/turnout/manual operated,% + % +}% +% symbol definition +\tikzset{% + pics/turnout/.default=, + pics/turnout/.style args={#1/#2/#3}{code={ + %% settings + \def\coordcommand{#1} % beware of leading and tailing spaces! + \def\labelcommand{#2} % beware of leading and tailing spaces! + \def\labelcontent{#3} + %% face setup + \ifdefstring{\face}{forward}{% face + \pgfmathsetmacro{\facefactor}{1}% + }{% + \ifdefstring{\face}{backward}{% face + \pgfmathsetmacro{\facefactor}{-1}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/face}{forward OR backward as key required}} + }% + }% end \ifdefstring{\face} + %% branch setup + \ifdefstring{\branch}{left}{% branch + \ifdefstring{\face}{forward}{% + \pgfmathsetmacro{\branchfactor}{1}% + }{% + \pgfmathsetmacro{\branchfactor}{-1}% + }% + }{% + \ifdefstring{\branch}{right}{% branch + \ifdefstring{\face}{forward}{% + \pgfmathsetmacro{\branchfactor}{-1}% + }{% + \pgfmathsetmacro{\branchfactor}{1}% + }% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/turnout/branch}{left OR right as key required}} + }% + }% end \ifdefstring{\branch} + %% turnout marker + \iftoggle{manual_operated}{% manual operated + \ifdefstring{\branch}{left}{% branch + \def\patterntype{north west lines}% + }{% + \def\patterntype{north east lines}% + }% + \path[draw,pattern=\patterntype, pattern color=foreground] (0,0) -- ++($\facefactor*(0.4,0)$) -- ++($\branchfactor*(0,0.4)$) -- cycle;% turnout marker + }{% operated automaticly + \path[fill=foreground] (0,0) -- ++($\facefactor*(0.4,0)$) -- ++($\branchfactor*(0,0.4)$) -- cycle;% turnout marker + }% + % + %% label + %TODO + % \ifdefstring{\labelcommand}{label}{% label + \node at ($\branchfactor*(0,-8pt)$) {\footnotesize \labelcontent};% + % }{ + % \node[red] at ($\branchfactor*(0,-8pt)$) {\tiny +\labelcommand+ != +label+};% + % }% + % + %% fouling point indicator + \iftoggle{fouling_point}{% + \path[draw=foreground] ($\facefactor*(0.7,0)$) -- ++($\branchfactor*(0,0.7)$);% fouling point indicator + }{}% + % + %% points + \ifdefstring{\points}{left}{% points left + \ifdefstring{\branch}{left}{% + \path[draw=foreground,line width=1.5pt] ($\facefactor*(-0.035,0) + \branchfactor*(0,0.1)$) -- ++($\branchfactor*(0.2,0.2)$);% + }{% + \path[draw=foreground,line width=1.5pt] ($\facefactor*( 0.035,0.1)$) -- ++($\facefactor*(0.265,0)$);% + }% + }{% + \ifdefstring{\points}{right}{% points right + \ifdefstring{\branch}{left}{% + \path[draw=foreground,line width=1.5pt] ($\facefactor*( 0.035,-0.1)$) -- ++($\facefactor*(0.265,0)$); + }{% + \path[draw=foreground,line width=1.5pt] ($\facefactor*(-0.035,0) + \branchfactor*(0,0.1)$) -- ++($\branchfactor*(-0.2,0.2)$);% + }% + }{% + \ifdefstring{\points}{moving}{% moving points + \fill[foreground] ($\facefactor*(0.075,0) + \branchfactor*(0,-0.1 )$) circle (0.05);% points indicator left + \fill[foreground] ($\facefactor*(0.225,0) + \branchfactor*(0,-0.1 )$) circle (0.05);% points indicator left + \fill[foreground] ($\facefactor*(0.015,0) + \branchfactor*(0, 0.15)$) circle (0.05);% points indicator right + \fill[foreground] ($\facefactor*(0.115,0) + \branchfactor*(0, 0.25)$) circle (0.05);% points indicator right + }{% error message + \ifdefstring{\points}{none}{% + }{% + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/points}{left, right OR moving as key required}} + }% + }% + }% + }% end \ifdefstring{\points} + % + }},% end pics/turnout/.style args={#1/#2/#3} +}% + + +%%%%%%%%%%%%%%% +% symbol crossing - using parts of turnout +%%%%%%%%%%%%%%% + +\newcommand\crossing{}% just for safety +\def\crossing[#1]#2(#3)#4(#5){% \crossing[type] at (coord) label (name); + \pic[#1] at (#3) {crossing={#2/#4/#5}};% symbol +}% +% symbol definition +\tikzset{% + pics/crossing/.default=, + pics/crossing/.style args={#1/#2/#3}{code={ + %% settings + \def\coordcommand{#1} % beware of leading and tailing spaces! + \def\labelcommand{#2} % beware of leading and tailing spaces! + \def\labelcontent{#3} + %% face setup + %% branch setup + \ifdefstring{\branch}{left}{% branch + \pgfmathsetmacro{\branchfactor}{1}% + }{% + \ifdefstring{\branch}{right}{% branch + \pgfmathsetmacro{\branchfactor}{-1}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/branch}{left OR right as key required}} + }% + }% + % + %% crossing marker + \path[draw=foreground] (0,0) -- ++( 0.4,0) -- ++($\branchfactor*(0, 0.4)$) -- cycle;% turnout marker + \path[draw=foreground] (0,0) -- ++(-0.4,0) -- ++($\branchfactor*(0,-0.4)$) -- cycle;% turnout marker + % + %% label + %TODO + % \ifdefstring{\labelcommand}{label}{% label + \node[right] at ($(2pt,0) + \branchfactor*(0,-9pt)$) {\footnotesize \labelcontent};% + % }{ + % \node[red] at ($\branchfactor*(0,-8pt)$) {\tiny +\labelcommand+ != +label+};% + % }% + % + %% fouling point indicator + \iftoggle{fouling_point}{% + \path[draw=foreground] ( 0.7,0) -- ++($\branchfactor*(0, 0.7)$);% fouling point indicator + \path[draw=foreground] (-0.7,0) -- ++($\branchfactor*(0,-0.7)$);% fouling point indicator + }{}% + % + }},% end of pics/crossing/.style args={#1/#2/#3}{ +}% + +%%%%%%%%%%%%%%% +% symbol slip switch turnout - using parts of turnout +%%%%%%%%%%%%%%% + +\newcommand\slipturnout{}% just for safety +\def\slipturnout[#1]#2(#3)#4(#5)(#6){% \crossing[type] at (coord) label (name); + \pic[slip=double,#1] at (#3) {slipturnout={#2/#4/#5/#6}};% symbol +}% +% tikz keys +\pgfkeys{% + /tikz/trackschematic/slipturnout/.is family,% + /tikz/trackschematic/slipturnout/.cd,% + % + %% points + forward points/.store in=\forwardpoints,% moving, left, right OR none + forward points=none,% moving, left, right OR none + /tikz/forward points/.forward to=/tikz/trackschematic/slipturnout/forward points,% + backward points/.store in=\backwardpoints,% moving, left, right OR none + backward points=none,% moving, left, right OR none + /tikz/backward points/.forward to=/tikz/trackschematic/slipturnout/backward points,% + % + %% slips + slip/.store in=\slip,% double, left, right OR none + slip=none,% double, left, right OR none + /tikz/slip/.forward to=/tikz/trackschematic/slipturnout/slip,% + % +}% +% symbol definition +\tikzset{% + pics/slipturnout/.default=, + pics/slipturnout/.style args={#1/#2/#3/#4}{code={ + %% settings + \def\coordcommand{#1} % beware of leading and tailing spaces! + \def\labelcommand{#2} % beware of leading and tailing spaces! + \def\labelcontentA{#3} + \def\labelcontentB{#4} + %% branch setup + \ifdefstring{\branch}{left}{% branch + \pgfmathsetmacro{\branchfactor}{1}% + }{% + \ifdefstring{\branch}{right}{% branch + \pgfmathsetmacro{\branchfactor}{-1}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/turnout/branch}{left OR right as key required}} + }% + }% end \ifdefstring{\branch} + %% turnout marker + \iftoggle{manual_operated}{% manual operated + \ifdefstring{\branch}{left}{% branch + \def\patterntype{north west lines}% + }{% + \def\patterntype{north east lines}% + }% + \path[draw,pattern=\patterntype, pattern color=foreground] (0,0) -- ++($( 0.4,0)$) -- ++($\branchfactor*(0, 0.4)$) -- cycle;% turnout marker + \path[draw,pattern=\patterntype, pattern color=foreground] (0,0) -- ++($(-0.4,0)$) -- ++($\branchfactor*(0,-0.4)$) -- cycle;% turnout marker + }{% operated automaticly + \path[fill=foreground] (0,0) -- ++($( 0.4,0)$) -- ++($\branchfactor*(0, 0.4)$) -- cycle;% turnout marker + \path[fill=foreground] (0,0) -- ++($(-0.4,0)$) -- ++($\branchfactor*(0,-0.4)$) -- cycle;% turnout marker } - }, -} + % + %% label + %TODO + % \ifdefstring{\labelcommand}{label}{% label + \node[right] at ($(2pt,0) + \branchfactor*(0,-9pt)$) {\footnotesize \labelcontentA};% + \node[left] at ($(2pt,0) + \branchfactor*(0,10pt)$) {\footnotesize \labelcontentB};% + % }{ + % \node[red] at ($\branchfactor*(0,-8pt)$) {\tiny +\labelcommand+ != +label+};% + % }% + % + %% fouling point indicator + \iftoggle{fouling_point}{% + \path[draw=foreground] ( 0.7,0) -- ++($\branchfactor*(0, 0.7)$);% fouling point indicator + \path[draw=foreground] (-0.7,0) -- ++($\branchfactor*(0,-0.7)$);% fouling point indicator + }{}% + % + %% points + \ifdefstring{\forwardpoints}{left}{% points left + \ifdefstring{\branch}{left}{% + \path[draw=foreground,line width=1.5pt] (-0.035,0.1) -- ++(0.2,0.2);% + }{% + \path[draw=foreground,line width=1.5pt] ( 0.035,0.1) -- ++(0.265,0);% + }% + }{% + \ifdefstring{\forwardpoints}{right}{% points right + \ifdefstring{\branch}{left}{% + \path[draw=foreground,line width=1.5pt] ( 0.035,-0.1) -- ++(0.265,0); + }{% + \path[draw=foreground,line width=1.5pt] (-0.035,-0.1) -- ++(0.2,-0.2);% + }% + }{% + \ifdefstring{\forwardpoints}{moving}{% moving points + \fill[foreground] ($(0.075,0) + \branchfactor*(0,-0.1 )$) circle (0.05);% points indicator left + \fill[foreground] ($(0.225,0) + \branchfactor*(0,-0.1 )$) circle (0.05);% points indicator left + \fill[foreground] ($(0.015,0) + \branchfactor*(0, 0.15)$) circle (0.05);% points indicator right + \fill[foreground] ($(0.115,0) + \branchfactor*(0, 0.25)$) circle (0.05);% points indicator right + }{% error message + \ifdefstring{\forwardpoints}{none}{% + }{% + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/slipturnout/forward points}{left, right OR moving as key required}} + }% + }% + }% + }% end of \ifdefstring{\forwardpoints} + \ifdefstring{\backwardpoints}{left}{% points left + \ifdefstring{\branch}{left}{% + \path[draw=foreground,line width=1.5pt] (0.035,-0.1) -- ++(-0.2,-0.2);% + }{% + \path[draw=foreground,line width=1.5pt] (-0.035,-0.1) -- ++(-0.265,0);% + }% + }{% + \ifdefstring{\backwardpoints}{right}{% points right + \ifdefstring{\branch}{left}{% + \path[draw=foreground,line width=1.5pt] (-0.035,0.1) -- ++(-0.265,0); + }{% + \path[draw=foreground,line width=1.5pt] (0.035,0.1) -- ++(-0.2,0.2);% + }% + }{% + \ifdefstring{\backwardpoints}{moving}{% moving points + \fill[foreground] ($(-0.075,0) + \branchfactor*(0, 0.1 )$) circle (0.05);% points indicator left + \fill[foreground] ($(-0.225,0) + \branchfactor*(0, 0.1 )$) circle (0.05);% points indicator left + \fill[foreground] ($(-0.015,0) + \branchfactor*(0,-0.15)$) circle (0.05);% points indicator right + \fill[foreground] ($(-0.115,0) + \branchfactor*(0,-0.25)$) circle (0.05);% points indicator right + }{% error message + \ifdefstring{\backwardpoints}{none}{% + }{% + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/slipturnout/forward points}{left, right OR moving as key required}} + }% + }% + }% + }% end of \ifdefstring{\backwardpoints} + % + %% slips + \ifdefstring{\slip}{double}{% slip + \path[draw=foreground,line width=0.75pt] ($\branchfactor*(-0.4,0) + (0, 0.1)$) -- ($\branchfactor*( 0.3,0) + (0, 0.4)$);% slip + \path[draw=foreground,line width=0.75pt] ($\branchfactor*( 0.4,0) + (0,-0.1)$) -- ($\branchfactor*(-0.3,0) + (0,-0.4)$);% slip + }{% + \ifdefstring{\slip}{left}{% + \path[draw=foreground,line width=0.75pt] ($\branchfactor*(-0.4,0) + (0,0.1)$) -- ($\branchfactor*(0.3,0) + (0,0.4)$);% slip + }{% + \ifdefstring{\slip}{right}{% + \path[draw=foreground,line width=0.75pt] ($\branchfactor*(0.4,0) + (0,-0.1)$) -- ($\branchfactor*(-0.3,0) + (0,-0.4)$);% slip + }{% + \ifdefstring{\slip}{none}{% + % + }{%error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/slipturnout/slip}{double, left, right OR none as key required}} + }% + }% + }% + }% + % + }},% end of pics/slipturnout/.style args={#1/#2/#3/#4}{ +}% -\tikzset{ - pics/turnout_left_forward/.default=foreground, - pics/turnout_left_forward/.style args={#1}{ - code={ - \path[draw=foreground,line width=1pt,fill=#1] (0,0) -- ++(0.4,0.4) -- ++(0,-0.4); % turnout marker - } - }, -} -\tikzset{ - pics/turnout_left_backward/.default=foreground, - pics/turnout_left_backward/.style args={#1}{ - code={ - \path[draw=foreground,line width=1pt,fill=#1] (0,0) -- ++(-0.4,-0.4) -- ++(0,0.4); % turnout marker - } - }, -} +%%%%%%%%%%%%%%% +% symbol derailer +%%%%%%%%%%%%%%% -\tikzset{ - pics/turnout_right_forward/.default=foreground, - pics/turnout_right_forward/.style args={#1}{ - code={ - \path[draw=foreground,line width=1pt,fill=#1] (0,0) -- ++(0.4,-0.4) -- ++(0,0.4); % turnout marker - } - }, -} - -\tikzset{ - pics/turnout_right_backward/.default=foreground, - pics/turnout_right_backward/.style args={#1}{ - code={ - \path[draw=foreground,line width=1pt,fill=#1] (0,0) -- ++(-0.4,0.4) -- ++(0,-0.4); % turnout marker - } - }, -} - -\tikzset{ - fouling_point_right_backward/.pic={ - \path[draw=foreground,line width=0.75pt] (-0.7,0) -- ++(0,0.7); % fouling point indicator - }; -} - -\tikzset{ - fouling_point_left_backward/.pic={ - \path[draw=foreground,line width=0.75pt] (-0.7,0) -- ++(0,-0.7); % fouling point indicator - }; -} - -\tikzset{ - fouling_point_right_forward/.pic={ - \path[draw=foreground,line width=0.75pt] (0.7,0) -- ++(0,-0.7); % fouling point indicator - }; -} - -\tikzset{ - fouling_point_left_forward/.pic={ - \path[draw=foreground,line width=0.75pt] (0.7,0) -- ++(0,0.7); % fouling point indicator - }; -} - -\tikzset{ - slip_left_forward/.pic={ - \path[draw=foreground,line width=0.75pt] (-0.4,0.1) -- (0.3,0.4); % fouling point indicator - }; -} - -\tikzset{ - slip_left_backward/.pic={ - \path[draw=foreground,line width=0.75pt] (-0.3,-0.4) -- (0.4,-0.1); % fouling point indicator - }; -} - -\tikzset{ - slip_right_forward/.pic={ - \path[draw=foreground,line width=0.75pt] (-0.4,-0.1) -- (0.3,-0.4); % fouling point indicator - }; -} - -\tikzset{ - slip_right_backward/.pic={ - \path[draw=foreground,line width=0.75pt] (0.4,0.1) -- (-0.3,0.4); % fouling point indicator - }; -} -\tikzset{ - turnout_left_forward_points_right/.pic={ - \path[draw=foreground,line width=1.5pt] (0,-0.1) -- ++(0.3,0); % points indicator - }; -} - -\tikzset{ - turnout_left_forward_points_left/.pic={ - \path[draw=foreground,line width=1.5pt] (-0.035, 0.1) -- ++(0.2,0.2); % points indicator - }; -} - -\tikzset{ - turnout_left_forward_points_moving/.pic={ - \fill[foreground] (0.075,-0.1) circle (0.05); % points indicator left - \fill[foreground] (0.225,-0.1) circle (0.05); - \fill[foreground] (0.015, 0.15) circle (0.05); % points indicator right - \fill[foreground] (0.115, 0.25) circle (0.05); - }; -} - -\tikzset{ - turnout_left_backward_points_right/.pic={ - \path[draw=foreground,line width=1.5pt] (0,0.1) -- ++(-0.3,0); % points indicator - }; -} - -\tikzset{ - turnout_left_backward_points_left/.pic={ - \path[draw=foreground,line width=1.5pt] (0.035,-0.1) -- ++(-0.2,-0.2); % points indicator - }; -} - -\tikzset{ - turnout_left_backward_points_moving/.pic={ - \fill[foreground] (-0.075,0.1) circle (0.05); % points indicator left - \fill[foreground] (-0.225,0.1) circle (0.05); - \fill[foreground] (-0.015,-0.15) circle (0.05); % points indicator right - \fill[foreground] (-0.115,-0.25) circle (0.05); - }; -} - -\tikzset{ - turnout_right_forward_points_right/.pic={ - \path[draw=foreground,line width=1.5pt] (-0.035,-0.1) -- ++(0.2,-0.2); % points indicator - }; -} - -\tikzset{ - turnout_right_forward_points_left/.pic={ - \path[draw=foreground,line width=1.5pt] (0,0.1) -- ++(0.3,0); % points indicator - }; -} - -\tikzset{ - turnout_right_forward_points_moving/.pic={ - \fill[foreground] (0.075, 0.1) circle (0.05); % points indicator left - \fill[foreground] (0.225, 0.1) circle (0.05); - \fill[foreground] (0.015,-0.15) circle (0.05); % points indicator right - \fill[foreground] (0.115,-0.25) circle (0.05); - }; -} - -\tikzset{ - turnout_right_backward_points_right/.pic={ - \path[draw=foreground,line width=1.5pt] (0.035,0.1) -- ++(-0.2,0.2); % points indicator - }; -} - -\tikzset{ - turnout_right_backward_points_left/.pic={ - \path[draw=foreground,line width=1.5pt] (0,-0.1) -- ++(-0.3,0); % points indicator - }; -} - -\tikzset{ - turnout_right_backward_points_moving/.pic={ - \fill[foreground] (-0.075,-0.1) circle (0.05); % points indicator left - \fill[foreground] (-0.225,-0.1) circle (0.05); - \fill[foreground] (-0.015,0.15) circle (0.05); % points indicator right - \fill[foreground] (-0.115,0.25) circle (0.05); - }; -} - -\tikzset{ - derailer_right_forward/.pic={ +% command +\newcommand\derailer{}% just for safety +\def\derailer[#1]#2(#3)#4(#5){% \bufferstop[options] at (coord) label (name); + \pic[#1] at (#3) {derailer={#2/#4/#5}};% symbol +}% +% symbol definition +\tikzset{% + pics/derailer/.default=,% + pics/derailer/.style args={#1/#2/#3}{code={% + %% settings + \def\coordcommand{#1} % beware of leading and tailing spaces! + \def\labelcommand{#2} % beware of leading and tailing spaces! + \def\labelcontent{#3} + %% face setup + \ifdefstring{\face}{forward}{% face + \pgfmathsetmacro{\facefactor}{1}% + }{% + \ifdefstring{\face}{backward}{% face + \pgfmathsetmacro{\facefactor}{-1}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/face}{forward OR backward as key required}} + }% + }% end \ifdefstring{\face} + %% branch setup + \ifdefstring{\branch}{left}{% branch + \ifdefstring{\face}{forward}{% + \pgfmathsetmacro{\branchfactor}{1}% + }{% + \pgfmathsetmacro{\branchfactor}{-1}% + }% + }{% + \ifdefstring{\branch}{right}{% branch + \ifdefstring{\face}{forward}{% + \pgfmathsetmacro{\branchfactor}{-1}% + }{% + \pgfmathsetmacro{\branchfactor}{1}% + }% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/turnout/branch}{left OR right as key required}} + }% + }% end \ifdefstring{\branch} + %% symbol \path[draw=foreground, line width=1pt] (0,0.2) -- ++(0,-0.4); % derailer marker - \path[draw=foreground,->,>=latex,line width=1pt,dashed] (0,0) -- ++(0.4,-0.4); % derailer arrow - }; -} + \path[draw=foreground,->,>=latex,line width=1pt,dashed] (0,0) -- ++($\facefactor*(0.4,0) + \branchfactor*(0,0.4)$); % derailer arrow + }},% +}% -\tikzset{ - derailer_right_backward/.pic={ - \path[draw=foreground, line width=1pt] (0,0.2) -- ++(0,-0.4); % derailer marker - \path[draw=foreground,->,>=latex,line width=1pt,dashed] (0,0) -- ++(-0.4,0.4); % derailer arrow - }; -} +%%%%%%%%%%%%%%% +% symbol buffer stop +%%%%%%%%%%%%%%% -\tikzset{ - derailer_left_forward/.pic={ - \path[draw=foreground, line width=1pt] (0,0.2) -- ++(0,-0.4); % derailer marker - \path[draw=foreground,->,>=latex,line width=1pt,dashed] (0,0) -- ++(0.4,0.4); % derailer arrow - }; -} - -\tikzset{ - derailer_left_backward/.pic={ - \path[draw=foreground, line width=1pt] (0,0.2) -- ++(0,-0.4); % derailer marker - \path[draw=foreground,->,>=latex,line width=1pt,dashed] (0,0) -- ++(-0.4,-0.4); % derailer arrow - }; -} - -\tikzset{ - bufferstop_forward/.pic={ - \path[draw=foreground, line width=1pt] (-0.1,0.2) -- ++(0.1,0) -- ++(0,-0.4) -- ++ (-0.1,0); % bufferstop marker - }; -} - -\tikzset{ - bufferstop_backward/.pic={ - \path[draw=foreground, line width=1pt] (0.1,0.2) -- ++(-0.1,0) -- ++(0,-0.4) -- ++ (0.1,0); % bufferstop marker - }; -} +% command +\newcommand\bufferstop{}% just for safety +\def\bufferstop[#1]#2(#3){% \bufferstop[options] at (coord); + \pic[#1] at (#3) {bufferstop={#2}};% symbol +}% +\newlength{\friction}\setlength{\friction}{0cm} +% tikz keys +\pgfkeys{% + /tikz/trackschematic/bufferstop/.is family,% + /tikz/trackschematic/bufferstop/.cd,% + % + %% points + friction/.store in=\friction,% length OR none + friction=none,% length OR none + /tikz/friction/.forward to=/tikz/trackschematic/bufferstop/friction,% + % +}% +% symbol definition +\tikzset{% + pics/bufferstop/.default=,% + pics/bufferstop/.style args={#1}{code={% + %% settings + \def\coordcommand{#1} % beware of leading and tailing spaces! + %% face setup + \ifdefstring{\face}{forward}{% face + \pgfmathsetmacro{\facefactor}{1}% + }{% + \ifdefstring{\face}{backward}{% face + \pgfmathsetmacro{\facefactor}{-1}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/face}{forward OR backward as key required}} + }% + }% end \ifdefstring{\face} + %% symbol + \ifdefstring{\friction}{none}{% friction + \path[draw=foreground, line width=1pt] ($\facefactor*(-0.1,0) + (0,0.2)$) -- ++($\facefactor*( 0.1,0)$) -- ++(0,-0.4) -- ++ ($\facefactor*(-0.1,0)$); % bufferstop marker + }{ + \path[draw=foreground, line width=1pt] ($\facefactor*(-\friction,0) + \facefactor*( 0.1,0) + (0,0.2)$) -- ++($\facefactor*(-0.1,0)$) -- ++(0,-0.4) -- ++ ($\facefactor*( 0.1,0)$); % bufferstop marker + } + }},% +}% +%%%%%%%%%%%%%%% \endinput diff --git a/test/crossing.tikz b/test/crossing.tikz new file mode 100644 index 0000000..080c0c8 --- /dev/null +++ b/test/crossing.tikz @@ -0,0 +1,58 @@ +%!TEX TS-program = pdflatexmk +%!TEX root = test.tex + +% Copyright 2019 Martin Scheidt (ISC license) +% Permission to use, copy, modify, and/or distribute this file for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +\node[blue] at (4,0) {\large test crossings}; + +\foreach \i in {1,2}{% base coordinate + \coordinate (A\i) at ($(0,0) + 2*(0,-\i)$);% base coordinate + \coordinate (B\i) at ($(8,0) + 2*(0,-\i)$);% base coordinate +} + +\foreach \i in {1}{% draw main tracks on base coordinate + \maintrack (A\i) -- (B\i); +} + +\foreach \i in {2}{% draw secondary tracks on base coordinate + \secondarytrack (A\i) -- (B\i); +} + +\foreach \i in {1,2}{% coordinates for testing symbols + \coordinate (X\i-1) at ($(1,0) + 2*(0,-\i)$); + \coordinate (X\i-2) at ($(3,0) + 2*(0,-\i)$); + \coordinate (X\i-3) at ($(5,0) + 2*(0,-\i)$); + \coordinate (X\i-4) at ($(7,0) + 2*(0,-\i)$); +} + +\foreach \i in {1}{% coordinates for testing symbols + \maintrack (X\i-1) -- ++( 0.75,-0.75); + \maintrack (X\i-1) -- ++(-0.75, 0.75); + \maintrack (X\i-2) -- ++( 0.75, 0.75); + \maintrack (X\i-2) -- ++(-0.75,-0.75); + \maintrack (X\i-3) -- ++( 0.75,-0.75); + \maintrack (X\i-3) -- ++(-0.75, 0.75); + \maintrack (X\i-4) -- ++( 0.75, 0.75); + \maintrack (X\i-4) -- ++(-0.75,-0.75); +} +\foreach \i in {2}{% coordinates for testing symbols + \secondarytrack (X\i-1) -- ++( 0.75,-0.75); + \secondarytrack (X\i-1) -- ++(-0.75, 0.75); + \secondarytrack (X\i-2) -- ++( 0.75, 0.75); + \secondarytrack (X\i-2) -- ++(-0.75,-0.75); + \secondarytrack (X\i-3) -- ++( 0.75,-0.75); + \secondarytrack (X\i-3) -- ++(-0.75, 0.75); + \secondarytrack (X\i-4) -- ++( 0.75, 0.75); + \secondarytrack (X\i-4) -- ++(-0.75,-0.75); +} + +\crossing[branch=right] at (X1-1) label (X1-1); +\crossing[branch=left ] at (X1-2) label (X1-2); +\crossing[branch=right,fouling point] at (X1-3) label (X1-3); +\crossing[branch=left ,fouling point] at (X1-4) label (X1-4); + +\crossing[branch=right] at (X2-1) label (X2-1); +\crossing[branch=left ] at (X2-2) label (X2-2); +\crossing[branch=right,fouling point] at (X2-3) label (X2-3); +\crossing[branch=left ,fouling point] at (X2-4) label (X2-4); diff --git a/test/misc_topology.tikz b/test/misc_topology.tikz new file mode 100644 index 0000000..29fd88c --- /dev/null +++ b/test/misc_topology.tikz @@ -0,0 +1,45 @@ +%!TEX TS-program = pdflatexmk +%!TEX root = test.tex + +% Copyright 2019 Martin Scheidt (ISC license) +% Permission to use, copy, modify, and/or distribute this file for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +\node[blue] at (4,0) {\large test misc. topology symbols}; + +\foreach \i in {1,2,...,3}{% base coordinate + \coordinate (A\i) at ($(0,0) + 2*(0,-\i)$);% base coordinate + \coordinate (B\i) at ($(8,0) + 2*(0,-\i)$);% base coordinate +} + +\foreach \i in {1}{% draw main tracks on base coordinate + \maintrack (A\i) -- (B\i); +} + +\foreach \i in {2,3}{% draw secondary tracks on base coordinate + \secondarytrack (A\i) -- (B\i); +} + +\foreach \i in {1,2,...,3}{% coordinates for testing symbols + \coordinate (X\i-1) at ($(1,0) + 2*(0,-\i)$); + \coordinate (X\i-2) at ($(3,0) + 2*(0,-\i)$); + \coordinate (X\i-3) at ($(5,0) + 2*(0,-\i)$); + \coordinate (X\i-4) at ($(7,0) + 2*(0,-\i)$); +} + +\tracklabel at (X1-1) label (12); +\tracklabel at (X1-3) label (really long text); +\tracklabel at (X2-2) label (22); +\trackdistance between (X1-2) and (X2-3) label (\SI[math-rm=\mathsf]{6,50}{\metre}); +\trackdistance between (X1-4) and (X2-4) label (4,50); + +\derailer[forward ,branch=left ] at (X3-1) label (X3-1); +\derailer[backward,branch=left ] at (X3-2) label (X3-2); +\derailer[forward ,branch=right] at (X3-3) label (X3-3); +\derailer[backward,branch=right] at (X3-4) label (X3-4); + +\bufferstop[backward] at (A1); +\bufferstop[forward] at (B1); +\bufferstop[backward,friction=.5] at (A2); +\bufferstop[forward ,friction=.5] at (B2); +\bufferstop[backward] at (A3); +\bufferstop[forward] at (B3); \ No newline at end of file diff --git a/test/slipturnout.tikz b/test/slipturnout.tikz new file mode 100644 index 0000000..d064b60 --- /dev/null +++ b/test/slipturnout.tikz @@ -0,0 +1,94 @@ +%!TEX TS-program = pdflatexmk +%!TEX root = test.tex + +% Copyright 2019 Martin Scheidt (ISC license) +% Permission to use, copy, modify, and/or distribute this file for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +\node[blue] at (4,0) {\large test slip turnouts}; + +\foreach \i in {1,2,...,9}{% base coordinate + \coordinate (A\i) at ($(0,0) + 2*(0,-\i)$);% base coordinate + \coordinate (B\i) at ($(8,0) + 2*(0,-\i)$);% base coordinate +} + +\foreach \i in {1,2,...,6}{% draw main tracks on base coordinate + \maintrack (A\i) -- (B\i); +} + +\foreach \i in {7,8,...,9}{% draw secondary tracks on base coordinate + \secondarytrack (A\i) -- (B\i); +} + +\foreach \i in {1,2,...,9}{% coordinates for testing symbols + \coordinate (X\i-1) at ($(1,0) + 2*(0,-\i)$); + \coordinate (X\i-2) at ($(3,0) + 2*(0,-\i)$); + \coordinate (X\i-3) at ($(5,0) + 2*(0,-\i)$); + \coordinate (X\i-4) at ($(7,0) + 2*(0,-\i)$); +} + +\foreach \i in {1,2,...,6}{% coordinates for testing symbols + \maintrack (X\i-1) -- ++( 0.75,-0.75); + \maintrack (X\i-1) -- ++(-0.75, 0.75); + \maintrack (X\i-2) -- ++( 0.75, 0.75); + \maintrack (X\i-2) -- ++(-0.75,-0.75); + \maintrack (X\i-3) -- ++( 0.75,-0.75); + \maintrack (X\i-3) -- ++(-0.75, 0.75); + \maintrack (X\i-4) -- ++( 0.75, 0.75); + \maintrack (X\i-4) -- ++(-0.75,-0.75); +} + +\foreach \i in {7,8,...,9}{% coordinates for testing symbols + \secondarytrack (X\i-1) -- ++( 0.75,-0.75); + \secondarytrack (X\i-1) -- ++(-0.75, 0.75); + \secondarytrack (X\i-2) -- ++( 0.75, 0.75); + \secondarytrack (X\i-2) -- ++(-0.75,-0.75); + \secondarytrack (X\i-3) -- ++( 0.75,-0.75); + \secondarytrack (X\i-3) -- ++(-0.75, 0.75); + \secondarytrack (X\i-4) -- ++( 0.75, 0.75); + \secondarytrack (X\i-4) -- ++(-0.75,-0.75); +} + +\slipturnout[branch=right] at (X1-1) label (X1-1a)(X1-1b); +\slipturnout[branch=left ] at (X1-2) label (X1-2a)(X1-2b); +\slipturnout[branch=right,slip=none,fouling point] at (X1-3) label (X1-3a)(X1-3b); +\slipturnout[branch=left ,slip=none,fouling point] at (X1-4) label (X1-4a)(X1-4b); + +\slipturnout[branch=right,slip=left ,fouling point] at (X2-1) label (X2-1a)(X2-1b); +\slipturnout[branch=left ,slip=left ,fouling point] at (X2-2) label (X2-2a)(X2-2b); +\slipturnout[branch=right,slip=right,fouling point] at (X2-3) label (X2-3a)(X2-3b); +\slipturnout[branch=left ,slip=right,fouling point] at (X2-4) label (X2-4a)(X2-4b); + +\slipturnout[branch=right,forward points=right,backward points=left] at (X3-1) label (X3-1a)(X3-1b); +\slipturnout[branch=left ,forward points=right,backward points=left] at (X3-2) label (X3-2a)(X3-2b); +\slipturnout[branch=right,forward points=right,backward points=left] at (X3-3) label (X3-3a)(X3-3b); +\slipturnout[branch=left ,forward points=right,backward points=left] at (X3-4) label (X3-4a)(X3-4b); + +\slipturnout[branch=right,forward points=left,backward points=right] at (X4-1) label (X4-1a)(X4-1b); +\slipturnout[branch=left ,forward points=left,backward points=right] at (X4-2) label (X4-2a)(X4-2b); +\slipturnout[branch=right,forward points=left,backward points=right] at (X4-3) label (X4-3a)(X4-3b); +\slipturnout[branch=left ,forward points=left,backward points=right] at (X4-4) label (X4-4a)(X4-4b); + +\slipturnout[branch=right,forward points=right,backward points=right] at (X5-1) label (X5-1a)(X5-1b); +\slipturnout[branch=left ,forward points=left ,backward points=left] at (X5-2) label (X5-2a)(X5-2b); +\slipturnout[branch=right,forward points=left ,backward points=left ] at (X5-3) label (X5-3a)(X5-3b); +\slipturnout[branch=left ,forward points=right,backward points=right] at (X5-4) label (X5-4a)(X5-4b); + +\slipturnout[branch=right,forward points=moving,backward points=moving] at (X6-1) label (X6-1a)(X6-1b); +\slipturnout[branch=left ,forward points=moving,backward points=moving] at (X6-2) label (X6-2a)(X6-2b); +\slipturnout[branch=right,manual operated] at (X6-3) label (X6-3a)(X6-3b); +\slipturnout[branch=left ,manual operated] at (X6-4) label (X6-4a)(X6-4b); + +\slipturnout[branch=right,manual operated] at (X7-1) label (X7-1a)(X7-1b); +\slipturnout[branch=left ,manual operated] at (X7-2) label (X7-2a)(X7-2b); +\slipturnout[branch=right,manual operated,fouling point] at (X7-3) label (X7-3a)(X7-3b); +\slipturnout[branch=left ,manual operated,fouling point] at (X7-4) label (X7-4a)(X7-4b); + +\slipturnout[branch=right,manual operated,slip=right] at (X8-1) label (X8-1a)(X8-1b); +\slipturnout[branch=left ,manual operated,slip=right] at (X8-2) label (X8-2a)(X8-2b); +\slipturnout[branch=right,manual operated,slip=left ] at (X8-3) label (X8-3a)(X8-3b); +\slipturnout[branch=left ,manual operated,slip=left ] at (X8-4) label (X8-4a)(X8-4b); + +\slipturnout[branch=right,slip=right] at (X9-1) label (X9-1a)(X9-1b); +\slipturnout[branch=left ,slip=right] at (X9-2) label (X9-2a)(X9-2b); +\slipturnout[branch=right,slip=left ] at (X9-3) label (X9-3a)(X9-3b); +\slipturnout[branch=left ,slip=left ] at (X9-4) label (X9-4a)(X9-4b); diff --git a/test/test.pdf b/test/test.pdf new file mode 100644 index 0000000..37d20b4 Binary files /dev/null and b/test/test.pdf differ diff --git a/test/test.tex b/test/test.tex new file mode 100644 index 0000000..8ed633e --- /dev/null +++ b/test/test.tex @@ -0,0 +1,26 @@ +%!TEX TS-program = pdflatexmk + +% Copyright 2019 Martin Scheidt (ISC license) +% Permission to use, copy, modify, and/or distribute this file for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +\documentclass[tikz,border=2]{standalone} + +\usepackage{lmodern,siunitx} +\usepackage[prefix=]{xcolor-solarized} + +\usetikzlibrary{trackschematic} + +\begin{document} + \begin{tikzpicture}[font=\sffamily] + \input{turnout.tikz} + \end{tikzpicture} + \begin{tikzpicture}[font=\sffamily] + \input{crossing.tikz} + \end{tikzpicture} + \begin{tikzpicture}[font=\sffamily] + \input{slipturnout.tikz} + \end{tikzpicture} + \begin{tikzpicture}[font=\sffamily] + \input{misc_topology.tikz} + \end{tikzpicture} +\end{document} \ No newline at end of file diff --git a/test/turnout.tikz b/test/turnout.tikz new file mode 100644 index 0000000..398e1ed --- /dev/null +++ b/test/turnout.tikz @@ -0,0 +1,83 @@ +%!TEX TS-program = pdflatexmk +%!TEX root = test.tex + +% Copyright 2019 Martin Scheidt (ISC license) +% Permission to use, copy, modify, and/or distribute this file for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +\node[blue] at (4,0) {\large test turnouts}; + +\foreach \i in {1,2,...,10}{% base coordinate + \coordinate (A\i) at ($(0,0) + 2*(0,-\i)$); + \coordinate (B\i) at ($(8,0) + 2*(0,-\i)$); +} + +\foreach \i in {1,2,...,5}{% draw main tracks on base coordinate + \maintrack (A\i) -- (B\i); +} + +\foreach \i in {6,7,...,10}{% draw secondary tracks on base coordinate + \secondarytrack (A\i) -- (B\i); +} + +\foreach \i in {1,2,...,10}{% coordinates for testing symbols + \coordinate (Y\i-1) at ($(1,0) + 2*(0,-\i)$); + \coordinate (Y\i-2) at ($(3,0) + 2*(0,-\i)$); + \coordinate (Y\i-3) at ($(5,0) + 2*(0,-\i)$); + \coordinate (Y\i-4) at ($(7,0) + 2*(0,-\i)$); +} + +\foreach \i in {1,2,...,5}{% coordinates for testing symbols + \maintrack (Y\i-1) -- ++( 0.75, 0.75); + \maintrack (Y\i-2) -- ++(-0.75,-0.75); + \maintrack (Y\i-3) -- ++( 0.75,-0.75); + \maintrack (Y\i-4) -- ++(-0.75, 0.75); +} + +\foreach \i in {6,7,...,10}{% coordinates for testing symbols + \secondarytrack (Y\i-1) -- ++( 0.75, 0.75); + \secondarytrack (Y\i-2) -- ++(-0.75,-0.75); + \secondarytrack (Y\i-3) -- ++( 0.75,-0.75); + \secondarytrack (Y\i-4) -- ++(-0.75, 0.75); +} + +\turnout[forward ,branch=left ] at (Y1-1) label (Y1-1); +\turnout[backward,branch=left ] at (Y1-2) label (Y1-2); +\turnout[forward ,branch=right] at (Y1-3) label (Y1-3); +\turnout[backward,branch=right] at (Y1-4) label (Y1-4); +\turnout[forward ,branch=left ,fouling point] at (Y2-1) label (Y2-1); +\turnout[backward,branch=left ,fouling point] at (Y2-2) label (Y2-2); +\turnout[forward ,branch=right,fouling point] at (Y2-3) label (Y2-3); +\turnout[backward,branch=right,fouling point] at (Y2-4) label (Y2-4); +\turnout[forward ,branch=left ,points=right] at (Y3-1) label (Y3-1); +\turnout[backward,branch=left ,points=right] at (Y3-2) label (Y3-2); +\turnout[forward ,branch=right,points=right] at (Y3-3) label (Y3-3); +\turnout[backward,branch=right,points=right] at (Y3-4) label (Y3-4); +\turnout[forward ,branch=left ,points=left ] at (Y4-1) label (Y4-1); +\turnout[backward,branch=left ,points=left ] at (Y4-2) label (Y4-2); +\turnout[forward ,branch=right,points=left ] at (Y4-3) label (Y4-3); +\turnout[backward,branch=right,points=left ] at (Y4-4) label (Y4-4); +\turnout[forward ,branch=left ,points=moving] at (Y5-1) label (Y5-1); +\turnout[backward,branch=left ,points=moving] at (Y5-2) label (Y5-2); +\turnout[forward ,branch=right,points=moving] at (Y5-3) label (Y5-3); +\turnout[backward,branch=right,points=moving] at (Y5-4) label (Y5-4); + +\turnout[forward ,branch=left ,manual operated] at (Y6-1) label (Y6-1); +\turnout[backward,branch=left ,manual operated] at (Y6-2) label (Y6-2); +\turnout[forward ,branch=right,manual operated] at (Y6-3) label (Y6-3); +\turnout[backward,branch=right,manual operated] at (Y6-4) label (Y6-4); +\turnout[forward ,branch=left ,manual operated,fouling point] at (Y7-1) label (Y7-1); +\turnout[backward,branch=left ,manual operated,fouling point] at (Y7-2) label (Y7-2); +\turnout[forward ,branch=right,manual operated,fouling point] at (Y7-3) label (Y7-3); +\turnout[backward,branch=right,manual operated,fouling point] at (Y7-4) label (Y7-4); +\turnout[forward ,branch=left ,manual operated,points=right] at (Y8-1) label (Y8-1); +\turnout[backward,branch=left ,manual operated,points=right] at (Y8-2) label (Y8-2); +\turnout[forward ,branch=right,manual operated,points=right] at (Y8-3) label (Y8-3); +\turnout[backward,branch=right,manual operated,points=right] at (Y8-4) label (Y8-4); +\turnout[forward ,branch=left ,manual operated,points=left ] at (Y9-1) label (Y9-1); +\turnout[backward,branch=left ,manual operated,points=left ] at (Y9-2) label (Y9-2); +\turnout[forward ,branch=right,manual operated,points=left ] at (Y9-3) label (Y9-3); +\turnout[backward,branch=right,manual operated,points=left ] at (Y9-4) label (Y9-4); +\turnout[forward ,branch=left ,manual operated,points=moving] at (Y10-1) label (Y10-1); +\turnout[backward,branch=left ,manual operated,points=moving] at (Y10-2) label (Y10-2); +\turnout[forward ,branch=right,manual operated,points=moving] at (Y10-3) label (Y10-3); +\turnout[backward,branch=right,manual operated,points=moving] at (Y10-4) label (Y10-4);