diff options
author | Karl Berry <karl@freefriends.org> | 2020-01-16 22:01:23 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-01-16 22:01:23 +0000 |
commit | 027668ae0269a68a604395640ca7ebd51e554c4a (patch) | |
tree | c096f005eaf9be6ceb156a46c3d818dbf6c1fa18 /Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.constructions.code.tex | |
parent | e76d924f69c5d9f65440dbb689b18d3440d80468 (diff) |
tikz-trackschematic (16jan20)
git-svn-id: svn://tug.org/texlive/trunk@53426 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.constructions.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.constructions.code.tex | 389 |
1 files changed, 389 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.constructions.code.tex b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.constructions.code.tex new file mode 100644 index 00000000000..a8713de5119 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.constructions.code.tex @@ -0,0 +1,389 @@ +%% symbol library for TikZ track schematics +% +% Copyright (c) 2018 - 2020, 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. +% +\ProvidesFileRCS{tikzlibrarytrackschematic.construction.code.tex}% +% +%%%%%%%%%%%%%%% +% global settings +%%%%%%%%%%%%%%% +\RequirePackage{tikz,etoolbox,lmodern}% +\usetikzlibrary{calc}% +% +\ifdeflength{\objectlength}{}{% Not defined, so define it! + \newlength{\objectlength}% +}% +\setlength{\objectlength}{4cm}% +% +%%%%%%%%%%%%%%% +% tikz keys for multiple use +%%%%%%%%%%%%%%% +\pgfkeys{% + /tikz/trackschematic/.is family,% + /tikz/trackschematic/.cd,% + %% color foreground + foreground/.store in=\foreground,% + foreground=black,% DEFAULT + /tikz/foreground/.forward to=/tikz/trackschematic/foreground,% + %% color background + background/.store in=\background,% + background=white,% DEFAULT + /tikz/background/.forward to=/tikz/trackschematic/background,% + %% length + length/.store in=\objectlength,% default length 4cm + /tikz/length/.forward to=/tikz/trackschematic/length,% + %% traffic practice + traffic practice/.value required,% left OR right + traffic practice/.store in=\trafficpractice,% + traffic practice=right,% DEFAULT + /tikz/traffic practice/.forward to=/tikz/trackschematic/traffic practice,% + /tikz/position/.forward to=/tikz/trackschematic/traffic practice,% +}% +\newlength{\objectwidth}\setlength{\objectwidth}{0.5cm}% +\pgfkeys{% + /tikz/trackschematic/constructions/.is family,% + /tikz/trackschematic/constructions/.cd,% + %% side + side/.value required,% left, right OR both + side/.store in=\side,% left, right OR both + /tikz/side/.forward to=/tikz/trackschematic/constructions/side,% + %% width + width/.store in=\objectwidth,% default width 0.5cm + /tikz/width/.forward to=/tikz/trackschematic/constructions/width,% +}% +% +%%%%%%%%%%%%%%% +% symbol platform +%%%%%%%%%%%%%%% +% +%% command +\newcommand\platform{}% just for safety +\def\platform[#1]#2(#3){% \platform[options] at (coord); + \pic[#1] at (#3) {platform={#2}}% symbol +}% +%% symbol definition +\tikzset{% + pics/platform/.default=,% + pics/platform/.style args={#1}{code={% + %% settings + \def\coordcommand{#1}% beware of leading and tailing spaces! + % + \ifdefstring{\side}{left}{% side + \pgfmathsetmacro{\sidefactor}{1}% + }{% + \ifdefstring{\side}{right}{% side + \pgfmathsetmacro{\sidefactor}{-1}% + }{% + \ifdefstring{\side}{both}{% side + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/constructions/side}{“left“, “right“ OR “both“ as key required}}% + }% + }% + }% end \ifdefstring{\side} + %% platform shape + \tikzset{every path/.style={draw=\foreground,line width=0.75pt}};% + \ifdefstring{\side}{both}{% double side + \path ($-0.5*(\objectlength,0) + (0, \objectwidth)$) --% + ($-0.5*(\objectlength,0) + (0, 0.2)$) --% + ($ 0.5*(\objectlength,0) + (0, 0.2)$) --% + ($ 0.5*(\objectlength,0) + (0, \objectwidth)$);% part 1 + \path ($-0.5*(\objectlength,0) + (0, 0.3)$) --% + ($ 0.5*(\objectlength,0) + (0, 0.3)$);% part 2 + \path ($-0.5*(\objectlength,0) + (0,-\objectwidth)$) --% + ($-0.5*(\objectlength,0) + (0,-0.2)$) --% + ($ 0.5*(\objectlength,0) + (0,-0.2)$) --% + ($ 0.5*(\objectlength,0) + (0,-\objectwidth)$);% part 3 + \path ($-0.5*(\objectlength,0) + (0,-0.3)$) --% + ($ 0.5*(\objectlength,0) + (0,-0.3)$);% part 4 + }{% single side + \path ($-0.5*(\objectlength,0) + \sidefactor*(0,\objectwidth)$) --% + ($-0.5*(\objectlength,0) + \sidefactor*(0,0.2)$) --% + ($ 0.5*(\objectlength,0) + \sidefactor*(0,0.2)$) --% + ($ 0.5*(\objectlength,0) + \sidefactor*(0,\objectwidth)$);% part 1 + \path ($-0.5*(\objectlength,0) + \sidefactor*(0,0.3)$) --% + ($ 0.5*(\objectlength,0) + \sidefactor*(0,0.3)$);% part 2 + }% + }},% +}% +% +%%%%%%%%%%%%%%% +% symbol level crossing +%%%%%%%%%%%%%%% +% +%% command +\newcommand\levelcrossing{}% just for safety +\def\levelcrossing[#1]#2(#3){% \levelcrossing[options] at (coord); + \pic[side=both,#1] at (#3) {level_crossing={#2}}% symbol +}% +%% tikz keys +\newlength{\roadwidth}\setlength{\roadwidth}{0.4cm}% +\newtoggle{show_road}\settoggle{show_road}{true}% +\pgfkeys{% + /tikz/trackschematic/constructions/level crossing/.is family,% + /tikz/trackschematic/constructions/level crossing/.cd,% + %% barrier + barrier/.store in=\barrier,% full, semi OR none + barrier=none,% DEFAULT + /tikz/barrier/.forward to=/tikz/trackschematic/constructions/level crossing/barrier,% + /tikz/barrier side/.forward to=/tikz/trackschematic/constructions/side,% + %% show road + no road/.value forbidden,% + no road/.code={\settoggle{show_road}{false}},% + /tikz/no road/.forward to=/tikz/trackschematic/constructions/level crossing/no road,% + %% road width + road width/.store in=\roadwidth,% default width 0.4cm + /tikz/road width/.forward to=/tikz/trackschematic/constructions/level crossing/road width,% +}% +%% symbol definition +\tikzset{% + pics/level_crossing/.default=,% + pics/level_crossing/.style args={#1}{code={% + %% settings + \def\coordcommand{#1} % beware of leading and tailing spaces! + %% traffic practice setup + \ifdefstring{\trafficpractice}{left}{% branch + \pgfmathsetmacro{\trafficfactor}{-1}% + }{% + \ifdefstring{\trafficpractice}{right}{% branch + \pgfmathsetmacro{\trafficfactor}{1}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/trafficcontrol/traffic practice}{“left“ OR “right“ as key required}}% + }% + }% end \ifdefstring{\trafficpractice} + %% symbol + \tikzset{every path/.style={draw=\foreground,line width=1pt}};% + \iftoggle{show_road}{% true + \path ($0.5*(-\roadwidth,0) + (0,-0.1)$) --% + ++($(0,-\objectwidth)$);% road part 1 + \path ($0.5*( \roadwidth,0) + (0,-0.1)$) --% + ++($(0,-\objectwidth)$);% road part 2 + \path ($0.5*(-\roadwidth,0) + (0, 0.1)$) --% + ++($(0, \objectwidth)$);% road part 3 + \path ($0.5*( \roadwidth,0) + (0, 0.1)$) --% + ++($(0, \objectwidth)$);% road part 4 + }{}% END \iftoggle{show_road} + \ifdefstring{\barrier}{full}{% full barrier + \ifdefstring{\side}{both}{% + \filldraw[\foreground]% left barrier part 1 + ($(-0.5\roadwidth,0)+(-0.2,0)+(0,0.35)$) circle (0.05);% + \filldraw[\foreground]% left barrier part 2 + ($( 0.5\roadwidth,0)+( 0.2,0)+(0,0.35)$) circle (0.05);% + \path ($(-0.5\roadwidth,0)+(-0.2,0)+(0,0.35)$) --% + ++($( 0.45\roadwidth,0)+( 0.2,0)$);% left barrier part 3 + \path ($( 0.5\roadwidth,0)+( 0.2,0)+(0,0.35)$) --% + ++($(-0.45\roadwidth,0)+(-0.2,0)$);% left barrier part 4 + % + \filldraw[\foreground]% right barrier part 1 + ($( 0.5\roadwidth,0)+( 0.2,0)+(0,-0.35)$) circle (0.05);% + \filldraw[\foreground]% right barrier part 2 + ($(-0.5\roadwidth,0)+(-0.2,0)+(0,-0.35)$) circle (0.05);% + \path ($( 0.5\roadwidth,0)+( 0.2,0)+(0,-0.35)$) --% + ++($(-0.45\roadwidth,0)+(-0.2,0)$);% right barrier part 3 + \path ($(-0.5\roadwidth,0)+(-0.2,0)+(0,-0.35)$) --% + ++($( 0.45\roadwidth,0)+( 0.2,0)$);% right barrier part 4 + }{% + \ifdefstring{\side}{left}{% + \filldraw[\foreground]% left barrier part 1 + ($(-0.5\roadwidth,0)+(-0.2,0)+(0,0.35)$) circle (0.05);% + \filldraw[\foreground]% left barrier part 2 + ($( 0.5\roadwidth,0)+( 0.2,0)+(0,0.35)$) circle (0.05);% + \path ($(-0.5\roadwidth,0)+(-0.2,0)+(0,0.35)$) --% + ++($( 0.45\roadwidth,0)+( 0.2,0)$);% left barrier part 3 + \path ($( 0.5\roadwidth,0)+( 0.2,0)+(0,0.35)$) --% + ++($(-0.45\roadwidth,0)+(-0.2,0)$);% left barrier part 4 + }{% + \ifdefstring{\side}{right}{% + \filldraw[\foreground]% right barrier part 1 + ($( 0.5\roadwidth,0)+( 0.2,0)+(0,-0.35)$) circle (0.05);% + \filldraw[\foreground]% right barrier part 2 + ($(-0.5\roadwidth,0)+(-0.2,0)+(0,-0.35)$) circle (0.05);% + \path ($( 0.5\roadwidth,0)+( 0.2,0)+(0,-0.35)$) --% + ++($(-0.45\roadwidth,0)+(-0.2,0)$);% right barrier part 3 + \path ($(-0.5\roadwidth,0)+(-0.2,0)+(0,-0.35)$) --% + ++($( 0.45\roadwidth,0)+( 0.2,0)$);% right barrier part 4 + }{%% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/constructions/side}{“left“, “right“ OR “both“ as key required}}% + }% END \ifdefstring{\side}{right} + }% END \ifdefstring{\side}{left} + }% END \ifdefstring{\side}{both} + }{% + \ifdefstring{\barrier}{semi}{% semi barrier + \ifdefstring{\side}{both}{% + \filldraw[\foreground]% left barrier part 1 + ($\trafficfactor*(-0.5\roadwidth,0)+\trafficfactor*(-0.2,0)+(0,0.35)$) circle (0.05);% + \path ($\trafficfactor*(-0.5\roadwidth,0)+\trafficfactor*(-0.2,0)+(0,0.35)$) --% + ++($\trafficfactor*(0.5\roadwidth,0)+\trafficfactor*(0.2,0)$);% left barrier part 2 + % + \filldraw[\foreground]% right barrier part 1 + ($\trafficfactor*(0.5\roadwidth,0)+\trafficfactor*(0.2,0)+(0,-0.35)$) circle (0.05);% + \path ($\trafficfactor*(0.5\roadwidth,0)+\trafficfactor*(0.2,0)+(0,-0.35)$) --% + ++($\trafficfactor*(-0.5\roadwidth,0)+\trafficfactor*(-0.2,0)$);% right barrier part 2 + }{% + \ifdefstring{\side}{left}{% + \filldraw[\foreground]% left barrier part 1 + ($\trafficfactor*(-0.5\roadwidth,0)+\trafficfactor*(-0.2,0)+(0,0.35)$) circle (0.05);% + \path ($\trafficfactor*(-0.5\roadwidth,0)+\trafficfactor*(-0.2,0)+(0,0.35)$) --% + ++($\trafficfactor*(0.5\roadwidth,0)+\trafficfactor*(0.2,0)$);% left barrier part 2 + }{% + \ifdefstring{\side}{right}{% + \filldraw[\foreground]% right barrier part 1 + ($\trafficfactor*(0.5\roadwidth,0)+\trafficfactor*(0.2,0)+(0,-0.35)$) circle (0.05);% + \path ($\trafficfactor*(0.5\roadwidth,0)+\trafficfactor*(0.2,0)+(0,-0.35)$) --% + ++($\trafficfactor*(-0.5\roadwidth,0)+\trafficfactor*(-0.2,0)$);% right barrier part 2 + }{%% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/constructions/side}{“left“, “right“ OR “both“ as key required}}% + }% END \ifdefstring{\side}{right} + }% END \ifdefstring{\side}{left} + }% END \ifdefstring{\side}{both} + }{% + \ifdefstring{\barrier}{none}{% no barriers + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/constructions/level crossing/barrier}{“full“, “semi“ OR “none“ as key required}}% + }% + }% END \ifdefstring{\barrier}{semi} + }% END \ifdefstring{\barrier}{full} + }},% +}% +% +%%%%%%%%%%%%%%% +% symbol bridge +%%%%%%%%%%%%%%% +% +%% command +\newcommand\bridge{}% just for safety +\def\bridge[#1]#2(#3){% \bridge[options] at (coord); + \pic[side=both,#1] at (#3) {bridge={#2}}% symbol +}% +\newlength{\shiftleft}\setlength{\shiftleft}{0cm}% +\newlength{\shiftright}\setlength{\shiftright}{0cm}% +\newtoggle{show_background}\settoggle{show_background}{true}% +%% tikz keys +\pgfkeys{% + /tikz/trackschematic/constructions/bridge/.is family,% + /tikz/trackschematic/constructions/bridge/.cd,% + % shift + shift left/.store in=\shiftleft,% default shift 0cm + /tikz/shift left/.forward to=/tikz/trackschematic/constructions/bridge/shift left,% + shift right/.store in=\shiftright,% default shift 0cm + /tikz/shift right/.forward to=/tikz/trackschematic/constructions/bridge/shift right,% + %% show road + no background/.value forbidden,% + no background/.code={\settoggle{show_background}{false}},% + /tikz/no background/.forward to=/tikz/trackschematic/constructions/bridge/no background,% +}% +%% symbol definition +\tikzset{% + pics/bridge/.default=,% + pics/bridge/.style args={#1}{code={% + %% settings + \def\coordcommand{#1} % beware of leading and tailing spaces! + %% symbol + \iftoggle{show_background}{% true + \fill[\background]% + ($(-0.5\objectlength,\objectwidth)+(0,-0.1)$) rectangle% + ($(0.5\objectlength,-\objectwidth)+(0,0.1)$);% + }{}% + \tikzset{every path/.style={draw=\foreground,line width=0.75pt}};% + \ifdefstring{\side}{both}{% + \path ($-0.5*(\objectlength,0)+(-0.1,0)+(\shiftleft,\objectwidth)$) --% + ++($(0.1,-0.1)$) --% + ++($(\objectlength,0)$) --% + ++($(0.1,0.1)$);% left bridge + \path ($-0.5*(\objectlength,0)+(-0.1,0)+(\shiftright,-\objectwidth)$) --% + ++($(0.1,0.1)$) --% + ++($(\objectlength,0)$) --% + ++($(0.1,-0.1)$);% right bridge + }{% + \ifdefstring{\side}{left}{% + \path ($-0.5*(\objectlength,0)+(-0.1,0)+(\shiftleft,\objectwidth)$) --% + ++($(0.1,-0.1)$) --% + ++($(\objectlength,0)$) --% + ++($(0.1,0.1)$);% left bridge + }{% + \ifdefstring{\side}{right}{% + \path ($-0.5*(\objectlength,0)+(-0.1,0)+(\shiftright,-\objectwidth)$) --% + ++($(0.1,0.1)$) --% + ++($(\objectlength,0)$) --% + ++($(0.1,-0.1)$);% right bridge + }{%% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/constructions/side}{“left“, “right“ OR “both“ as key required}}% + }% END \ifdefstring{\side}{right} + }% END \ifdefstring{\side}{left} + }% END \ifdefstring{\side}{both} + }},% +}% +% +%%%%%%%%%%%%%%% +% symbol interlocking +%%%%%%%%%%%%%%% +% +%% command +\newcommand\interlocking{}% just for safety +\def\interlocking#1(#2){% \interlocking at (coord); + \pic at (#2) {interlocking={#1}}% symbol +}% +%% tikz keys +% \pgfkeys{% +% /tikz/trackschematic/.is family,% +% /tikz/trackschematic/.cd,% +% }% +%% symbol definition +\tikzset{% + pics/interlocking/.default=,% + pics/interlocking/.style args={#1}{code={% + %% settings + \def\coordcommand{#1} % beware of leading and tailing spaces! + %% symbol + \tikzset{every path/.style={draw=\foreground,line width=1pt}};% + \path (-0.6,-0.4 ) rectangle ++(1.2,0.8); % building + \path[fill=\foreground] (-0.5,-0.3 ) rectangle ++(1.0,0.2); % table + \path[fill=\foreground] ( 0 , 0.15) circle (0.15); % human dot + }},% +}% +% +%%%%%%%%%%%%%%% +% symbol hump +%%%%%%%%%%%%%%% +% +%% command +\newcommand\hump{}% just for safety +\def\hump#1(#2){% \hump at (coord); + \pic at (#2) {hump={#1}}% symbol +}% +%% tikz keys +% \pgfkeys{% +% /tikz/trackschematic/.is family,% +% /tikz/trackschematic/.cd,% +% }% +%% symbol definition +\tikzset{% + pics/hump/.default=,% + pics/hump/.style args={#1}{code={% + %% settings + \def\coordcommand{#1} % beware of leading and tailing spaces! + %% symbol + \tikzset{every path/.style={draw=\foreground,line width=0.75pt}};% + % left side + \path (-0.3, 0.1) -- ++(0,0.05); + \path (-0.2, 0.1) -- ++(0,0.15); + \path (-0.1, 0.1) -- ++(0,0.25); + \path ( 0.0, 0.1) -- ++(0,0.35); + \path ( 0.1, 0.1) -- ++(0,0.25); + \path ( 0.2, 0.1) -- ++(0,0.15); + \path ( 0.3, 0.1) -- ++(0,0.05); + % right side + \path (-0.3,-0.1) -- ++(0,-0.05); + \path (-0.2,-0.1) -- ++(0,-0.15); + \path (-0.1,-0.1) -- ++(0,-0.25); + \path ( 0.0,-0.1) -- ++(0,-0.35); + \path ( 0.1,-0.1) -- ++(0,-0.25); + \path ( 0.2,-0.1) -- ++(0,-0.15); + \path ( 0.3,-0.1) -- ++(0,-0.05); + }},% +}% +% +%%%%%%%%%%%%%%% +\endinput% +%
\ No newline at end of file |