diff options
author | Karl Berry <karl@freefriends.org> | 2015-02-24 23:12:22 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-02-24 23:12:22 +0000 |
commit | 6393e0fa1c1b3ab125e43ddbeecbdca740f7d6ac (patch) | |
tree | 90fba8c6dfe27fdf2da8a732c92a9bfc1202f60f | |
parent | 1c213966cd11f3051008400dd35517dc22c1e600 (diff) |
tikz-palattice (24feb15)
git-svn-id: svn://tug.org/texlive/trunk@36373 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/latex/tikz-palattice/Makefile | 40 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/tikz-palattice/README | 13 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/tikz-palattice/elsa.tex | 735 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/tikz-palattice/example1_linear.tex | 53 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/tikz-palattice/example2_circular.tex | 60 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/tikz-palattice/example3_coordinates.tex | 242 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/tikz-palattice/example4_labels.tex | 308 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/tikz-palattice/tikz-palattice_documentation.pdf | bin | 0 -> 333188 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/tikz-palattice/tikz-palattice_documentation.tex | 581 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/tikz-palattice/tikz-palattice.sty | 647 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tlpkg-ctan-check | 2 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/collection-pictures.tlpsrc | 1 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/tikz-palattice.tlpsrc | 0 |
13 files changed, 2681 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/tikz-palattice/Makefile b/Master/texmf-dist/doc/latex/tikz-palattice/Makefile new file mode 100644 index 00000000000..b985a3967a1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-palattice/Makefile @@ -0,0 +1,40 @@ +latex = pdflatex +packagename = tikz-palattice +INSTALL_PATH = /usr/local/share/texmf/tex/latex +e1 = example1_linear +e2 = example2_circular +e3 = example3_coordinates +e4 = example4_labels +e5 = elsa +doc = tikz-palattice_documentation + +all: doc allexamples +doc: $(doc).pdf +allexamples: $(e1).pdf $(e2).pdf $(e3).pdf $(e4).pdf $(e5).pdf + + +$(e1).pdf: $(e1).tex + $(latex) $< + +$(e2).pdf: $(e2).tex + $(latex) $< + +$(e3).pdf: $(e3).tex + $(latex) $< + +$(e4).pdf: $(e4).tex + $(latex) $< + +$(e5).pdf: $(e5).tex + $(latex) $< + +$(doc).pdf: $(doc).tex $(e1).pdf $(e5).pdf + $(latex) $< + + +install: + install -m 644 -p -D -v tikz-palattice.sty $(INSTALL_PATH)/$(packagename)/$(packagename).sty + mktexlsr + +clean: + rm $(e1).pdf $(e2).pdf $(e3).pdf $(e4).pdf $(e5).pdf diff --git a/Master/texmf-dist/doc/latex/tikz-palattice/README b/Master/texmf-dist/doc/latex/tikz-palattice/README new file mode 100644 index 00000000000..cefce969a9e --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-palattice/README @@ -0,0 +1,13 @@ +Package Name: tikz-palattice + +Author Name: Jan Schmidt + +License: LaTeX Project Public License 1.3 + +Description: The tikz-palattice package allows for drawing a map of a particle accelerator just by +giving a list of elements - similar to lattice files for simulation software. The +package includes 12 common element types like dipoles, quadrupoles, cavities or screens, +as well as automatic labels with element names, a legend, a rule and an environment to +fade out parts of the accelerator. The coordinate of any element can be saved and used +for custom tikz drawings or annotations. Thereby, lattices can be connected to draw +injection/extraction or even a complete accelerator facility.
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tikz-palattice/elsa.tex b/Master/texmf-dist/doc/latex/tikz-palattice/elsa.tex new file mode 100644 index 00000000000..fa71259bdcb --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-palattice/elsa.tex @@ -0,0 +1,735 @@ +%% elsa.tex +%% Copyright 2015 J. Schmidt +%% tikz-palattice LaTeX package +% +% 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 J. Schmidt. +% +% This work consists of the files tikz-palattice.sty and tikz-palattice_documentation.tex +% and the 5 example files example1_linear.tex, example2_circular.tex, +% example3_coordinates.tex, example4_labels.tex and elsa.tex + + +\documentclass[tikz]{standalone} +%\usepackage[ngerman]{babel} +\usepackage[english]{babel} +\usepackage[utf8]{inputenc} +\usepackage{iflang} +\usepackage{tikz-palattice} + +\sisetup{range-units=single, range-phrase=\,-\,, detect-weight=true, detect-family=true} +\addto\extrasngerman{\sisetup{locale = DE}} +\addto\extrasenglish{\sisetup{locale = US}} + +\def\scale{0.5} + +\tikzset{biggestlabel/.style={font=\bfseries\Huge,scale=2.5, align=center}} +\tikzset{biglabel/.style={font=\bfseries\Huge,scale=2, align=center}} +\tikzset{mediumlabel/.style={font=\huge,scale=2, align=center}} +\tikzset{smalllabel/.style={font=\Large,scale=2, align=center}} + + + +% --------------------------------------------------------------------- +% The lattice data given in this file is designated for drawing a map +% and should not be used for any calculations or simulation! +% --------------------------------------------------------------------- + +\begin{document} +\begin{lattice}[\scale] +\def\quadl{0.2} +\setelementcolor{dipole}{blue!55!cyan!90}[blue!55!cyan!90] +\setelementcolor{solenoid}{cyan} +\setlinecolor{drift}{red!70!black} +\def\photonbeam{black} +% "switch labels off": +%\setlabelcolor{white} + +\drawrule{(58,-7)}[5][2][0.2] +\setangle{180} +\start{(0,0)} + +%----------------------------------- +%LINAC2 +%----------------------------------- +\turnlabels +\source{\IfLanguageName{ngerman}{Quelle}{Source} pol. $e^-$}{1} +\drift{2.5} +\drift{0.5} % wand +\source{}{0.2} +\drift{0.8} +\savecoordinate{L2label} +\cavity{}{3.85} +\drift{0.35} +\quadrupole{Q1}{\quadl} +\drift{0.5} +\quadrupole{Q2}{\quadl} +\drift{0.35} +\quadrupole{Q3}{\quadl} +\drift{0.3} +\dipole{M90}{0.5}{-90} +\drift{0.3} +\quadrupole{Q4}{\quadl} +\drift{0.75} +\quadrupole{Q5}{\quadl} +\drift{1.9} +\quadrupole{Q6}{\quadl} +\drift{3.55} +\quadrupole{Q7}{\quadl} +\drift{2.1} +\corrector{KD}{\quadl} +\drift{2.1} +\dipole{}{0.4}{0}[r][0.3] % M3 +\savecoordinate{M3}[center] +\drift{0.4} +\quadrupole{Q8}{\quadl} +\drift{3} +\savecoordinate{BoosterInj} +% \begin{fade}[0] +% \drift{30} +% \end{fade} +%text +\node[mediumlabel, anchor=north, yshift=-1cm] at (L2label) +{LINAC 2\\{\Large \SI{26}{\MeV}}}; + + +%----------------------------------- +%LINAC1 +%lattice backwards to set start at M3 +%----------------------------------- +\goto{M3} +\setangle{-180} +\drift{0.44} +\quadrupole{Q7}{\quadl} +\drift{0.2} +%\turnlabels +\quadrupole{Q6}{\quadl} +%\turnlabels +\drift{0.35} +\dipole{M2}{0.3}{45} +\drift{1.1} +\dipole{M1}{0.3}{45} +\savecoordinate{M1}[center] +\turnlabels +\drift{0.58} +\quadrupole{Q5}{\quadl} +\drift{0.36} +\quadrupole{Q4}{\quadl} +\drift{0.58} +\quadrupole{Q3}{\quadl} +\drift{0.38} +\cavity{}{0.67}[0.3] %EKS +\drift{0.1} +\dipole{EKS}{0.2}{0} +\rotate{60} +\drift{0.15} +\rotate{-60} +\dipole{}{0.2}{0} +\rotate{-60} +\drift{0.15} +\rotate{60} +\dipole{}{0.2}{0} +\drift{0.07} +\quadrupole{Q2}{\quadl} +\drift{0.13} +\quadrupole{Q1}{\quadl} +\drift{0.16} +\savecoordinate{L1label} +\cavity{}{2.73} +\drift{0.35} +\dipole{}{0.35}{0} +\drift{0.17} +\drift{1.3} +\rotate{180} +\source{}{0.5} +%text +\node[mediumlabel, xshift=-1cm, anchor=east] at (L1label) +{LINAC 1\\{\Large \SI{20}{\MeV}}}; + + +%----------------------------- +%LINAC1-Bestrahlungsplatz +%----------------------------- +\goto{M1} +\setangle{90} +\turnlabels +\drift{0.25} +\drift{0.37} +\quadrupole{QT1}{\quadl} +\drift{0.2} +\quadrupole{QT2}{\quadl} +\drift{0.7} +\turnlabels +\savecoordinate{bestrahlung} +\def\bestrl{0.25} +\drift{\bestrl} +\draw [fill=none] (bestrahlung) +(-\bestrl,-\bestrl) rectangle +(\bestrl,\bestrl); +%text +\node[smalllabel, yshift=5mm, anchor=east, text width=3cm] at (bestrahlung) +{\IfLanguageName{ngerman}{Bestrahlungs\-platz}{irradiation area}}; + + +%----------------------------- +%Booster +%----------------------------- +\begin{scope} +\setelementcolor{dipole}{green!55!black}[green!55!black] +\goto{BoosterInj} +%\marker{Start}[0.5] +\setlabeldistance{0.5} +\kicker{INJSEPT}{0.88} +\savecoordinate{links} +\drift{0.44725} +\dipole{M1}{4.0056}{-30}[s][0.6] +\drift{1.7945} +\dipole{M2}{4.0056}{-30}[s][0.6] +\drift{0.35975} +\kicker{B1}{0.3875} +\drift{0.3} +\kicker{K1}{0.3875} +\drift{0.35975} +\dipole{M3}{4.0056}{-30}[s][0.6] +\drift{0.35975} +\kicker{B2}{0.3875} +\drift{0.3} +\kicker{S1}{0.3875} +\drift{0.35975} +\dipole{M4}{4.0056}{-30}[s][0.6] +\drift{0.4295} +\corrector{VC1}{0.13} +\drift{0.245} +\kicker{S2}{0.63} +\drift{0.36} +\dipole{M5}{4.0056}{-30}[s][0.6] +\drift{0.34225} +\kicker{S3}{1.08} +\savecoordinate{Booster_extract}[center] +\drift{0.37225} +\dipole{M6}{4.0056}{-30}[s][0.6] +\drift{0.38725} +\corrector{VC2}{0.13} +\drift{0.315} +\kicker{B3}{0.6} +\savecoordinate{rechts} +\drift{0.36225} +\dipole{M7}{4.0056}{-30}[s][0.6] +\drift{0.49225} +\corrector{VC3}{0.13} +\drift{0.295} +\kicker{K2}{0.45} +\drift{0.42725} +\dipole{M8}{4.0056}{-30}[s][0.6] +\drift{0.86225} +\kicker{K3}{0.45} +\drift{0.48225} +\dipole{M9}{4.0056}{-30}[s][0.6] +\drift{0.44725} +\cavity{DORIS}{0.9} +\drift{0.44725} +\dipole{M10}{4.0056}{-30}[s][0.6] +\drift{1.7945} +\dipole{M11}{4.0056}{-30}[s][0.6] +\drift{1.7945} +\dipole{M12}{4.0056}{-30}[s][0.6] +\drift{0.46725} +\end{scope} +%title +\path (links) -- (rechts) node[midway,biggestlabel, text width=6cm] {Booster- Synchrotron\\{\SIrange{0.5}{1.2}{\GeV}}}; + + + +%----------------------------- +% Transferkanal Booster->ELSA +%----------------------------- +\goto{Booster_extract} +\setangle{-47} +\drift{2} +\turnlabels +\corrector{KV1}{0.25} +\drift{0.16} +\quadrupole{QA}{0.48} +\drift{0.16} +\corrector{KV2}{0.25} +\turnlabels +\drift{1.4} +\corrector{KV3}{0.25} +\drift{0.16} +\quadrupole{QB}{0.48} +\drift{3.67} +\quadrupole{QC}{0.48} +\drift{0.16} +\corrector{}{0.25} +\drift{1.9} +\savecoordinate{ELSA_inject} + + + +%----------------------------- +% Stretcherring +%----------------------------- +\goto{ELSA_inject} +\setangle{-55} +\setlabeldistance{0.5} +\turnlabels + +% "end" put at beginning to start at injection +\quadrupole{QD31}{0.4997} +\drift{0.30115} +\dipole{M31}{2.875}{15} +\drift{0.307} +\corrector{KV31}{0.1} +\drift{1.05465} +\quadrupole{QF32}{0.4997} +\drift{0.13665} +\sextupole{SX32}{0.287} +\drift{0.2069} +\quadrupole{LQ32}{0.45}[0.2] +\drift{0.5031} +\corrector{KV32}{0.1} +\drift{0.41025} +\quadrupole{SQ32}{0.45} +\drift{1.382} +\quadrupole{TJQ32}{0.5515}[0.2] +\drift{0.12625} + +% usual start +%\marker{start}[0.5] +\drift{0.03415} +\quadrupole{QD1}{0.4997} +\drift{0.19515} +\corrector{KV01}{0.1} +\drift{1.79875} +\quadrupole{SQ1}{0.45}[0.2] +\drift{1.01375} +\quadrupole{LQ1}{0.45}[0.2] +\drift{0.2065} +\sextupole{SX1}{0.287} +\drift{0.13665} +\quadrupole{QF2}{0.4997} +\drift{1.05365} +\corrector{KV02}{0.1} +\drift{0.3077} +\dipole{M2}{2.875}{15} +\drift{0.30145} +\quadrupole{QD3}{0.4997} +\drift{0.13665} +\sextupole{SD3}{0.287} +\drift{0.4305} +\corrector{KV03}{0.1} +\drift{1.84183} +\drift{1.84183} + +\rotatelabels{60}[west] +\quadrupole{QF4}{0.4997} +\drift{0.13665} +\sextupole{SF4}{0.287} +\drift{0.214} +\corrector{KV04}{0.1} +\drift{0.7237} +\rotatelabels{0} + +\dipole{M4}{2.875}{15} +\drift{0.30145} + +\rotatelabels{77}[west] +\quadrupole{QD5}{0.4997} +\drift{0.09715} +\corrector{KV05}{0.1} +\rotatelabels{0} + +\drift{1.2642} +\dipole{M5}{2.875}{15} +\drift{0.30145} +\quadrupole{QF6}{0.4997} +\drift{0.94465} +\corrector{KV06}{0.1} +\drift{0.4167} +\dipole{M6}{2.875}{15} +\drift{0.30145} + +\rotatelabels{-72}[east] +\quadrupole{QD7}{0.4997} +\drift{0.41215} +\kicker{MSE23}{0.90027}%{-4.86172} +\savecoordinate{ELSA_extract_neu} +\drift{0.04893} +\rotatelabels{0} + +% deleted due to "neue Extraktion" +%\drift{0.19415} +%\corrector{KV07}{0.1} +%\drift{1.1672} + +\dipole{M7}{2.875}{15} +\savecoordinate{sylibeamline}[center] +\drift{0.30145} +\quadrupole{QF8}{0.4997} +\drift{1.02365} +\corrector{KV08}{0.1} +\drift{0.3377} +\dipole{M8}{2.875}{15} +\drift{0.30145} +\quadrupole{QD9}{0.4997} +\drift{0.30135} +\dipole{M9}{2.875}{15} +\drift{0.3208} +\corrector{KV09}{0.1} +\drift{1.04065} +\quadrupole{QF10}{0.4997} +\drift{0.30135} +\dipole{M10}{2.875}{15} +\drift{0.7203} +\corrector{KV10}{0.1} +\drift{0.2175} +\sextupole{SD10}{0.287} +\drift{0.13665} +\quadrupole{QD11}{0.4997} +\drift{0.30135} +\dipole{M11}{2.875}{15} +\drift{0.7208} +\corrector{KV11}{0.1} +\drift{0.217} +\sextupole{SF11}{0.287} +\drift{0.13665} +\quadrupole{QF12}{0.4997} +\drift{0.30135} +\dipole{M12}{2.875}{15} +\drift{1.1743} +\corrector{KV12}{0.1} +\drift{0.18715} +\quadrupole{QD13}{0.4997} +\drift{0.30135} +\dipole{M13}{2.875}{15} +\drift{0.7398} +\corrector{KV13}{0.1} +\drift{0.62165} +\quadrupole{QF14}{0.4997} +\savecoordinate{rechts} +\drift{1.86133} +\drift{1.86133} +\corrector{KV14}{0.1} +\drift{0.81515} +\quadrupole{QD15}{0.4997} +\drift{0.30135} +\dipole{M15}{2.875}{15} +\drift{0.9368} +\corrector{KV15}{0.1} +\drift{0.42465} +\quadrupole{QF16}{0.4997} +\drift{0.13665} +\sextupole{SX16}{0.287} +\drift{0.2065} +\quadrupole{LQ16}{0.45}[0.2] +\drift{0.3075} +\cavity{PETRA1}{1.6} +\drift{0.93725} +\quadrupole{TJQD16}{0.5515}[0.2] +\drift{0.1614} +\quadrupole{QD17}{0.4997} +\drift{0.10615} +\corrector{KV17}{0.1} +\drift{0.244} +\cavity{PETRA2}{1.6} +\drift{1.43175} +\drift{0.07575} +\quadrupole{LQ17}{0.45}[0.2] +\drift{0.2065} +\sextupole{SX17}{0.287} +\drift{0.13665} +\quadrupole{QF18}{0.4997} +\drift{0.41665} +\corrector{KV18}{0.1} +\drift{0.9447} +\dipole{M18}{2.875}{15} +\drift{0.30145} + +%labels rotated (anchor automatic) +\rotatelabels{61}[east] +\quadrupole{QD19}{0.4997} +\drift{0.13665} +\sextupole{SD19}{0.287} +\drift{0.1965} +\corrector{KV19}{0.1} +\drift{1.747} +\drift{1.747} +\sextupole{SF19}{0.287} +\drift{0.13665} +\quadrupole{QF20}{0.4997} +\drift{0.22565} +\corrector{KV20}{0.1} +\rotatelabels{0} + +\drift{1.1357} +\dipole{M20}{2.875}{15} +\drift{0.30145} + +\rotatelabels{76}[east] +\quadrupole{QD21}{0.4997} +\drift{0.21015} +\corrector{KV21}{0.1} +\rotatelabels{0} + +\drift{1.151} +\dipole{M21}{2.875}{15} +\drift{0.30165} +\quadrupole{QF22}{0.4997} +\drift{0.99865} +\corrector{KV22}{0.1} +\drift{0.363} +\dipole{M22}{2.875}{15} +\drift{0.30115} +\quadrupole{QD23}{0.4997} + +\drift{0.21} +\kicker{MSE23}{0.9}%{-5.00994} +\savecoordinate{ELSA_extract} +\drift{0.3} + +\dipole{M23}{2.875}{15} +\drift{0.30165} +\quadrupole{QF24}{0.4997} +\drift{0.99265} +\corrector{KV24}{0.1} +\drift{0.369} +\dipole{M24}{2.875}{15} +\drift{0.30115} +\quadrupole{QD25}{0.4997} +\savecoordinate{compton}[center] +\drift{0.30115} +\dipole{M25}{2.875}{15} +\drift{0.716} +\corrector{KV25}{0.1} +\drift{0.64565} +\quadrupole{QF26}{0.4997} +\drift{0.30165} +\dipole{M26}{2.875}{15} +\drift{0.723} +\corrector{KV26}{0.1} +\drift{0.214} +\sextupole{SD26}{0.287} +\drift{0.13715} +\quadrupole{QD27}{0.4997} +\drift{0.30115} +\dipole{M27}{2.875}{15} +\drift{0.728} +\corrector{KV27}{0.1} +\drift{0.21} +\sextupole{SF27}{0.287} +\drift{0.13665} +\quadrupole{QF28}{0.4997} +\drift{0.30165} +\dipole{M28}{2.875}{15} +\drift{1.168} +\corrector{KV28}{0.1} +\drift{0.19315} +\quadrupole{QD29}{0.4997} +\drift{0.30115} +\dipole{M29}{2.875}{15} +\savecoordinate{links} +\drift{0.318} +\corrector{KV29}{0.1} +\drift{1.04365} +\quadrupole{QF30}{0.4997} +\drift{1.56882} +\drift{1.56882} +\corrector{KV30}{0.1} +\drift{1.0} +\drift{0.40015} +\resetlabeldistance + +%title - aligned between M29 and QF14 via \savecoordinate +\draw[draw=none] (links) -- (rechts) node[midway, biggestlabel] +{ELSA Stretcherring\\{\SIrange{0.5}{3.2}{\GeV}}}; + + +%----------------------- +% Compton-Polarimeter +%----------------------- +\begin{scope} + \setlinecolor{drift}{\photonbeam} + \goto{compton} + \drift{13.7} + \savecoordinate{comptonlabel} + \beamdump{}{1.6}[0.7] + \goto{compton} + \rotate{180} + \drift{3.9} + \beamdump{}{0.25}[0.25] +\end{scope} +%label +\node[smalllabel, anchor=east, text width=4cm] at (comptonlabel) +{Compton-\\{Polarimeter}}; +%------------------------------ +% Syli-Beamline (Streak-Kamera) +%------------------------------ +\begin{scope} + \setlinecolor{drift}{\photonbeam} + \goto{sylibeamline} + \rotate{-11.5} + \drift{12.5} + \savecoordinate{sylilabel} + \beamdump{}{1.25}[0.5] +\end{scope} +% label +\node[smalllabel, anchor=west, yshift=1cm, text width=4cm] at (sylilabel) +{\IfLanguageName{ngerman}{Synchrotronlicht}{synchrotron light}\\\IfLanguageName{ngerman}{Diagnoseplatz}{diagnostic area}}; + + +%----------------------- +%Extraktion + CB +%----------------------- +\goto{ELSA_extract} +\turnlabels +%\setangle{195-5.00994} +\rotate{-8} +\drift{0.2} +%---- +%\dipole{M23}{0.9}{1.60428} +\drift{0.9} +\rotate{1.60428} +%---- +\drift{1.08} +\rotatelabels{90}[west] +\corrector{SSV1}{0.34} +\drift{0.1} +\corrector{SSH1}{0.34} +\drift{0.36} +\quadrupole{QF1}{0.4749} +\drift{0.39} +\solenoid{}{2} +\drift{0.38} +\quadrupole{QD1}{0.4749} +\drift{0.25} +\corrector{SSH2}{0.34} +\drift{0.1} +\corrector{SSV2}{0.34} +\drift{0.6} +\rotatelabels{0} +\turnlabels +\dipole{MB1}{1.08}{10.7716}[r][0.6] +\savecoordinate{MB1}[center] +\drift{0.41} +\quadrupole{QN1}{0.3}[0.2] +\drift{0.93} +\quadrupole{QN2}{0.3}[0.2] +\drift{0.33} +\dipole{MB3}{1.08012}{2.92208}[r][0.6] +\drift{0.42} +\corrector{SSH3}{0.34} +\drift{1.61} +\quadrupole{QF2}{0.4749} +\drift{2.218} +\rotatelabels{0}[west] +\corrector{SSV3}{0.2} +\rotatelabels{0} +\drift{0.242} +\quadrupole{QD2}{0.4749} +\drift{1.6515} +\savecoordinate{CBphotons} +\begin{labeldistance}{1} + \dipole{Tagger}{1.26}{8.99544}[r][1.2] + \drift{1.34} + \dipole{M5}{1.26}{6.1994}[r][1.2] +\end{labeldistance} +\drift{5.7} +\savecoordinate{CBlabel} +\drift{5.7} +\beamdump{}{1}[1] + +%Photon-Beamline +\goto{CBphotons} +\begin{scope} +\setlinecolor{drift}{\photonbeam} +\drift{16} +\beamdump{\IfLanguageName{ngerman}{Photonenkamera}{photon camera}}{0.4}[0.2] +\end{scope} + +%title +\node[mediumlabel, anchor=east, yshift=1.5cm] at (CBlabel) {Crystal Barrel}; +\node[biglabel, yshift=3.8cm,xshift=-3cm, text width=7cm] at (CBlabel) +{\IfLanguageName{ngerman}{Hadronenphysik- Experimente}{hadron physics experiments}}; + + +%------------------- +%BGO-OD +%------------------- + \goto{MB1} + %\setangle{175} + \rotate{-10.8-11} + \turnlabels + \drift{1.03} + \dipole{MB2}{1.08166}{-11}[r][0.6] + \drift{1.06} + \quadrupole{QF2}{0.45} + \drift{1.32} + \rotatelabels{90}[west] + \corrector{SSH3}{0.34} + \drift{0.1} + \corrector{SSV3}{0.34} + \rotatelabels{0} + \drift{1.76} + \quadrupole{QD2}{0.45} + \drift{0.95} + \begin{scope} + \setlabeldistance{0.7} + \dipole{Tagger}{1.34}{0}[r][1] + \end{scope} + + % photon beamline + \begin{scope} + \setlinecolor{drift}{\photonbeam} + \drift{6.95} + \dipole{}{1.61}{0}[r][3.64] %spektrometer + \savecoordinate{BGOlabel} + \drift{3.13} + \beamdump{\IfLanguageName{ngerman}{Photonenkamera}{photon camera}}{0.4}[0.2] + \end{scope} + + % label + \node[mediumlabel, anchor=east, yshift=-0.7cm, xshift=-0.3cm] at (BGOlabel) {BGO-OD}; + + +%----------------------------- +%neue externe Strahlführung +%----------------------------- +\goto{ELSA_extract_neu} +\rotate{-4} +\drift{1.578} +\drift{1.578} +\quadrupole{QF1}{0.5}[0.3] +\drift{2.06505} +\drift{2.06505} +\drift{2.06505} +\quadrupole{QD1}{0.4997}[0.3] +\drift{0.89515} +\begin{labeldistance}{1.2} + \dipole{MB}{1.50274}{-12}[r][2] +\end{labeldistance} +\drift{0.89415} +\quadrupole{QF2}{0.4997}[0.3] +\drift{2.1063} +\quadrupole{QD2}{0.4997}[0.3] +\drift{2.77607} +\savecoordinate{NEWSFlabel} +\drift{2.77607} +\beamdump{}{0.4} + % title + \node[smalllabel, anchor=north, yshift=-5mm, text width=4.5cm] at (NEWSFlabel) + {\IfLanguageName{ngerman}{Messplatz für}{area + for}\\\IfLanguageName{ngerman}{Detektortests}{detector + tests}\\\IfLanguageName{ngerman}{(im Aufbau)}{(under construction)}}; + +%--------------------------- +% legend shows all element types occuring before this commmand +\legend{(67,46)}[2] +\end{lattice} +\end{document} diff --git a/Master/texmf-dist/doc/latex/tikz-palattice/example1_linear.tex b/Master/texmf-dist/doc/latex/tikz-palattice/example1_linear.tex new file mode 100644 index 00000000000..8dfdaafba0e --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-palattice/example1_linear.tex @@ -0,0 +1,53 @@ +%% example1_linear.tex +%% Copyright 2015 J. Schmidt +%% tikz-palattice LaTeX package +% +% 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 J. Schmidt. +% +% This work consists of the files tikz-palattice.sty and tikz-palattice_documentation.tex +% and the 5 example files example1_linear.tex, example2_circular.tex, +% example3_coordinates.tex, example4_labels.tex and elsa.tex + +\documentclass[]{standalone} +\usepackage[ngerman]{babel} +\usepackage[utf8]{inputenc} +\usepackage{tikz-palattice} + + +\begin{document} + +\begin{lattice} + \source{MySource}{0.4} + \drift{0.167} + \quadrupole{Q1}{0.4} + \drift{0.1} + \kicker{VC1}{0.1} + \drift{0.29} + \drift{0.2} + \screen{S1} + \drift{0.2} + \quadrupole{Q2}{0.4} + \drift{0.3} + \marker{marker 1}[1.2] + \drift{1.16}[Space left!] + \marker{marker 2}[1.2] + \drift{0.15} + \cavity{Acceleration?}{2} + \drift{0.63} + \dipole{M1}{0.5}{90}[r] + \drift{0.3} + \quadrupole{Q42}{0.4} + \drift{0.3} +\end{lattice} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/tikz-palattice/example2_circular.tex b/Master/texmf-dist/doc/latex/tikz-palattice/example2_circular.tex new file mode 100644 index 00000000000..3bf446797f3 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-palattice/example2_circular.tex @@ -0,0 +1,60 @@ +%% example2_circular.tex +%% Copyright 2015 J. Schmidt +%% tikz-palattice LaTeX package +% +% 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 J. Schmidt. +% +% This work consists of the files tikz-palattice.sty and tikz-palattice_documentation.tex +% and the 5 example files example1_linear.tex, example2_circular.tex, +% example3_coordinates.tex, example4_labels.tex and elsa.tex + +\documentclass[]{standalone} +\usepackage[ngerman]{babel} +\usepackage[utf8]{inputenc} +\usepackage{tikz-palattice} + + +\begin{document} + +\begin{lattice} + \setlinecolor{drift}{red} + + \drift{1} + \dipole{M1}{2}{45} + \drift{1} + \dipole{M2}{2}{45} + \drift{1} + \setelementcolor{dipole}{green!50!black} % change color of all following dipoles + \dipole{M3}{2}{45} + \drift{1} + \dipole{M4}{2}{45} + \drift{1} + \begin{scope} % color change only applied within scope + \setelementcolor{dipole}{red}[red] % optional 3rd argument sets top color -> no (visible) color gradient + \dipole{M5}{2}{45} + \end{scope} + \drift{1} + \dipole{M6}{2}{45} + \drift{1} + \resetelementcolor{dipole} % reset color of following dipoles to default + \dipole{M7}{2}{45}[r] % rectangle dipole type + \drift{1} + \dipole{M8}{2}{45}[br] % bend rectangle dipole type + + \drawrule{(1,-0.5)} +\end{lattice} + +\end{document} + + + diff --git a/Master/texmf-dist/doc/latex/tikz-palattice/example3_coordinates.tex b/Master/texmf-dist/doc/latex/tikz-palattice/example3_coordinates.tex new file mode 100644 index 00000000000..a7f34469b18 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-palattice/example3_coordinates.tex @@ -0,0 +1,242 @@ +%% example3_coordinates.tex +%% Copyright 2015 J. Schmidt +%% tikz-palattice LaTeX package +% +% 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 J. Schmidt. +% +% This work consists of the files tikz-palattice.sty and tikz-palattice_documentation.tex +% and the 5 example files example1_linear.tex, example2_circular.tex, +% example3_coordinates.tex, example4_labels.tex and elsa.tex + +\documentclass[a4paper]{scrartcl} +\usepackage[english]{babel} +\usepackage[utf8]{inputenc} +\usepackage{subcaption} +\usepackage{verbatim} +\usepackage{tikz-palattice} + + +% compile twice to connect lattices! + + +\title{Two more lattices} +\subtitle{scaling lattices and accessing coordinates} +\date{} + +\begin{document} +\maketitle + +\begin{figure}[h] +\centering +\begin{subfigure}{.45\textwidth} + \centering + % this is the ring from example 2, but plotted smaller (30%). + % the element sizes (in meter) are the same - as the rule indicates. + \begin{lattice}[0.3] + \setlabelfont{\tiny} + \begin{labeldistance}{0.3} + \drift{1} + \dipole{M1}{2}{45} + \drift{1} + \turnlabels + \dipole{M2}{2}{45} + \turnlabels + \drift{1} + \dipole{M3}{2}{45} + \drift{1} + \savecoordinate{myCoord1}[center] + \dipole{M4}{2}{45} + \drift{1} + \dipole{M5}{2}{45} + \drift{1} + \dipole{M6}{2}{45} + \drift{1} + \savecoordinate{myCoord2}[center] + \dipole{M7}{2}{45} + \drift{1} + \dipole{M8}{2}{45} + \drawrule{(-2.5,-1)}[2] + \end{labeldistance} + % custom drawing using saved coordinates (to center of drifts) + \draw[->, thick] (myCoord2) -- (myCoord1) node[midway,fill=white,rotate=20] {signal}; + \end{lattice} +\end{subfigure} +% +% +% +\begin{subfigure}{.45\textwidth} + \centering + \begin{lattice} + \setangle{70} + \turnlabels %labels to the left + \drift{0.5} + \quadrupole{QF1}{0.3} + \drift{0.2} + \kicker{}{0.1} + \drift{0.07} + \quadrupole{QD2}{0.3} + \drift{0.4} + \setelementcolor{kicker}{cyan} + \kicker{Septum}{0.5} + \resetelementcolor{kicker} + \savecoordinate{Septum}[center] %save to connect other beamline + \drift{0.8} + \kicker{}{0.1} + \drift{0.37} + \quadrupole{QD3}{0.2} + \drift{0.17} + \kicker{}{0.1} + \drift{0.1} + \sextupole{SF1}{0.2} + \drift{0.27} + \dipole{MB1}{0.2}{30}[s][0.4] + \drift{0.2} + + % now go back to saved coordinate and continue with another beamline + \goto{Septum} + \rotate{-20} + \turnlabels %labels to the right + \drift{0.6} + \kicker{SS1}{0.2} + \drift{0.2} + \kicker{SSH1}{0.2} + \drift{0.3} + \dipole{M1}{0.2}{-30}[r][0.4] + \begin{fade} %fade out this part + \drift{0.2} + \dipole{M2}{0.2}{50}[r][0.4] + \drift{0.2} + \dipole{M3}{0.2}{-20}[r][0.4] + \drift{0.7} + \end{fade} + + \drawrule{(-0.75,-0.2)}[0.8] + \end{lattice} +\end{subfigure} +\caption{A figure with two lattices} +\label{fig:lattices} +\end{figure} + + + + + + +\clearpage +\begin{figure} +\centering +\begin{subfigure}[b]{.45\textwidth} +\centering + \begin{lattice} + \rotate{90} + \turnlabels %labels to the left + \drift{0.5} + \quadrupole{QF1}{0.3} + \drift{0.2} + \kicker{}{0.1} + \drift{0.07} + \quadrupole{QD2}{0.3} + \drift{0.4} + \setelementcolor{kicker}{cyan} + \kicker{Septum}{0.5} + \resetelementcolor{kicker} + \savecoordinate{Septum}[center] %save to connect other beamline + \drift{0.8} + \kicker{}{0.1} + \drift{0.37} + \quadrupole{QD3}{0.2} + \drift{0.17} + \kicker{}{0.1} + \drift{0.1} + \sextupole{SF1}{0.2} + \drift{0.27} + \dipole{MB1}{0.2}{30}[s][0.4] + \drift{0.2} + \end{lattice} + % + %now draw second lattice and connect them using the saved coordinate + \begin{lattice}[1][overlay] + \start{(Septum)} + \rotate{70} + \drift{0.6} + \kicker{SS1}{0.2} + \drift{0.2} + \kicker{SSH1}{0.2} + \drift{0.3} + \dipole{M1}{0.2}{-30}[r][0.4] + \begin{fade} %fade out this part + \drift{0.2} + \dipole{M2}{0.2}{50}[r][0.4] + \drift{0.2} + \dipole{M3}{0.2}{-20}[r][0.4] + \drift{0.7} + \end{fade} + \legend{(-1,6.5)} + \end{lattice} + \caption{two lattice environments and start} +\end{subfigure} +% +\begin{subfigure}[b]{.45\textwidth} + \centering + \begin{lattice} + \rotate{90} + \turnlabels %labels to the left + \drift{0.5} + \quadrupole{QF1}{0.3} + \drift{0.2} + \kicker{}{0.1} + \drift{0.07} + \quadrupole{QD2}{0.3} + \drift{0.4} + \setelementcolor{kicker}{cyan} + \kicker{Septum}{0.5} + \resetelementcolor{kicker} + \savecoordinate{Septum}[center] %save to connect other beamline + \drift{0.8} + \kicker{}{0.1} + \drift{0.37} + \quadrupole{QD3}{0.2} + \drift{0.17} + \kicker{}{0.1} + \drift{0.1} + \sextupole{SF1}{0.2} + \drift{0.27} + \dipole{MB1}{0.2}{30}[s][0.4] + \drift{0.2} + + % now go back to saved coordinate and continue with another beamline + \goto{Septum} + \rotate{-20} + \turnlabels %labels to the right + \drift{0.6} + \kicker{SS1}{0.2} + \drift{0.2} + \kicker{SSH1}{0.2} + \drift{0.3} + \dipole{M1}{0.2}{-30}[r][0.4] + \begin{fade} %fade out this part + \drift{0.2} + \dipole{M2}{0.2}{50}[r][0.4] + \drift{0.2} + \dipole{M3}{0.2}{-20}[r][0.4] + \drift{0.7} + \end{fade} + \legend{(0,6.5)} + \end{lattice} + \caption{one lattice environment and goto} +\end{subfigure} +\caption{Two ways to connect lattices} +\label{fig:twoways} +\end{figure} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/tikz-palattice/example4_labels.tex b/Master/texmf-dist/doc/latex/tikz-palattice/example4_labels.tex new file mode 100644 index 00000000000..cb698a2ce31 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-palattice/example4_labels.tex @@ -0,0 +1,308 @@ +%% example4_labels.tex +%% Copyright 2015 J. Schmidt +%% tikz-palattice LaTeX package +% +% 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 J. Schmidt. +% +% This work consists of the files tikz-palattice.sty and tikz-palattice_documentation.tex +% and the 5 example files example1_linear.tex, example2_circular.tex, +% example3_coordinates.tex, example4_labels.tex and elsa.tex + +\documentclass[]{standalone} +\usepackage[ngerman]{babel} +\usepackage[utf8]{inputenc} +\usepackage{tikz-palattice} + + +\begin{document} +\begin{lattice}[0.5] +\drawrule{(-9,-11)}[5][3][0.2] + +\turnlabels +\setlabeldistance{0.5} +\rotate{-35} +\marker{start}[0.5] + +\drift{0.03415} +\quadrupole{QD1}{0.4997} +\drift{0.19515} +\kicker{KV01}{0.1} +\drift{1.79875} +\quadrupole{SQ1}{0.45}[0.2] +\drift{1.01375} +\quadrupole{LQ1}{0.45}[0.2] +\drift{0.2065} +\sextupole{SX1}{0.287} +\drift{0.13665} +\quadrupole{QF2}{0.4997} +\drift{1.05365} +\kicker{KV02}{0.1} +\drift{0.3077} +\dipole{M2}{2.875}{15} +\drift{0.30145} +\quadrupole{QD3}{0.4997} +\drift{0.13665} +\sextupole{SD3}{0.287} +\drift{0.4305} +\kicker{KV03}{0.1} +\drift{1.84183} +\drift{1.84183} + +% labels rotated (with manually set anchor) +\rotatelabels{65}[west] +\quadrupole{QF4}{0.4997} +\drift{0.13665} +\sextupole{SF4}{0.287} +\drift{0.214} +\kicker{KV04}{0.1} +\drift{0.7237} +\rotatelabels{0} + +\dipole{M4}{2.875}{15} +\drift{0.30145} +\quadrupole{QD5}{0.4997} +\drift{0.09715} + +% labels with changed fontsize +\setlabelfont{\tiny} +\kicker{KV05}{0.1} +\setlabelfont{\normalsize} + +\drift{1.2642} +\dipole{M5}{2.875}{15} +\drift{0.30145} +\quadrupole{QF6}{0.4997} +\drift{0.94465} +\kicker{KV06}{0.1} +\drift{0.4167} +\dipole{M6}{2.875}{15} +\drift{0.30145} + +%labels rotated (with manually set anchor) within scope (forget changes after scope) +\begin{scope} +\rotatelabels{-65}[east] +\quadrupole{QD7}{0.4997} +\drift{0.19415} +\kicker{KV07}{0.1} +\end{scope} + + +\drift{1.1672} +\dipole{M7}{2.875}{15} +\drift{0.30145} +\quadrupole{QF8}{0.4997} +\drift{1.02365} +\kicker{KV08}{0.1} +\drift{0.3377} +\dipole{M8}{2.875}{15} +\drift{0.30145} +\quadrupole{QD9}{0.4997} +\drift{0.30135} +\dipole{M9}{2.875}{15} +\drift{0.3208} +\kicker{KV09}{0.1} +\drift{1.04065} +\quadrupole{QF10}{0.4997} +\drift{0.30135} +\dipole{M10}{2.875}{15} +\drift{0.7203} +\kicker{KV10}{0.1} +\drift{0.2175} +\sextupole{SD10}{0.287} +\drift{0.13665} +\quadrupole{QD11}{0.4997} +\drift{0.30135} +\dipole{M11}{2.875}{15} +\drift{0.7208} +\kicker{KV11}{0.1} +\drift{0.217} +\sextupole{SF11}{0.287} +\drift{0.13665} +\quadrupole{QF12}{0.4997} +\drift{0.30135} +\dipole{M12}{2.875}{15} +\drift{1.1743} +\kicker{KV12}{0.1} +\drift{0.18715} +\quadrupole{QD13}{0.4997} +\drift{0.30135} +\dipole{M13}{2.875}{15} +\drift{0.7398} +\kicker{KV13}{0.1} +\drift{0.62165} +\quadrupole{QF14}{0.4997} +\savecoordinate{rechts} +\drift{1.86133} +\drift{1.86133} +\kicker{KV14}{0.1} +\drift{0.81515} +\quadrupole{QD15}{0.4997} +\drift{0.30135} +\dipole{M15}{2.875}{15} +\drift{0.9368} +\kicker{KV15}{0.1} +\drift{0.42465} +\quadrupole{QF16}{0.4997} +\drift{0.13665} +\sextupole{SX16}{0.287} +\drift{0.2065} +\quadrupole{LQ16}{0.45}[0.2] +\drift{0.3075} +\cavity{PETRA1}{1.6} +\drift{0.93725} +\quadrupole{TJQD16}{0.5515}[0.2] +\drift{0.1614} + +% turn labels to other side +\turnlabels +\quadrupole{QD17}{0.4997} +\turnlabels + +\drift{0.10615} +\kicker{KV17}{0.1} +\drift{0.244} +\cavity{PETRA2}{1.6} +\drift{1.43175} +\drift{0.07575} +\quadrupole{LQ17}{0.45}[0.2] +\drift{0.2065} +\sextupole{SX17}{0.287} +\drift{0.13665} +\quadrupole{QF18}{0.4997} +\drift{0.41665} +\kicker{KV18}{0.1} +\drift{0.9447} +\dipole{M18}{2.875}{15} +\drift{0.30145} + +%labels rotated (with manually set anchor) within scope (forget changes after scope) +\begin{scope} +\rotatelabels{65}[east] +\quadrupole{QD19}{0.4997} +\drift{0.13665} +\sextupole{SD19}{0.287} +\drift{0.1965} +\kicker{KV19}{0.1} +\end{scope} + +\drift{1.747} +\drift{1.747} +\sextupole{SF19}{0.287} +\drift{0.13665} + +% turn labels to other side within scope (no second \turnlabels needed) +\begin{scope} +\turnlabels +\quadrupole{QF20}{0.4997} +\end{scope} + +\drift{0.22565} +\kicker{KV20}{0.1} + +\drift{1.1357} +\dipole{M20}{2.875}{15} +\drift{0.30145} + +%labels in other distance to elements +\begin{labeldistance}{0.8} + \quadrupole{QD21}{0.4997} +\end{labeldistance} %back to previous label distance (same as \setlabeldistance within scope) + +\drift{0.21015} +\kicker{KV21}{0.1} +\drift{1.151} +\dipole{M21}{2.875}{15} +\drift{0.30165} +\quadrupole{QF22}{0.4997} +\drift{0.99865} +\kicker{KV22}{0.1} +\drift{0.363} +\dipole{M22}{2.875}{15} +\drift{0.30115} +\quadrupole{QD23}{0.4997} +\drift{1.46115} +\dipole{M23}{2.875}{15} +\drift{0.30165} +\quadrupole{QF24}{0.4997} +\drift{0.99265} +\kicker{KV24}{0.1} +\drift{0.369} +\dipole{M24}{2.875}{15} +\drift{0.30115} +\quadrupole{QD25}{0.4997} +\drift{0.30115} +\dipole{M25}{2.875}{15} +\drift{0.716} +\kicker{KV25}{0.1} +\drift{0.64565} +\quadrupole{QF26}{0.4997} +\drift{0.30165} +\dipole{M26}{2.875}{15} +\drift{0.723} +\kicker{KV26}{0.1} +\drift{0.214} +\sextupole{SD26}{0.287} +\drift{0.13715} +\quadrupole{QD27}{0.4997} +\drift{0.30115} +\dipole{M27}{2.875}{15} +\drift{0.728} +\kicker{KV27}{0.1} +\drift{0.21} +\sextupole{SF27}{0.287} +\drift{0.13665} +\quadrupole{QF28}{0.4997} +\drift{0.30165} +\dipole{M28}{2.875}{15} +\drift{1.168} +\kicker{KV28}{0.1} +\drift{0.19315} +\quadrupole{QD29}{0.4997} +\drift{0.30115} +\dipole{M29}{2.875}{15} +\savecoordinate{links} +\drift{0.318} +\kicker{KV29}{0.1} +\drift{1.04365} +\quadrupole{QF30}{0.4997} +\drift{1.56882} +\drift{1.56882} +\kicker{KV30}{0.1} +\drift{1.40015} +\quadrupole{QD31}{0.4997} +\drift{0.30115} +\dipole{M31}{2.875}{15} +\drift{0.307} +\kicker{KV31}{0.1} +\drift{1.05465} +\quadrupole{QF32}{0.4997} +\drift{0.13665} +\sextupole{SX32}{0.287} +\drift{0.2069} +\quadrupole{LQ32}{0.45}[0.2] +\drift{0.5031} +\kicker{KV32}{0.1} +\drift{0.41025} +\quadrupole{SQ32}{0.45} +\drift{1.382} +\quadrupole{TJQ32}{0.5515}[0.2] +\drift{0.12625} + +% legend shows all element types occuring before this commmand +\legend{(35,38)}[2] + +%title - aligned between M29 and QF14 via \savecoordinate +\draw[draw=none] (links) -- (rechts) node[midway, font=\bfseries\Huge,scale=2, align=center] +{ELSA Stretcherring\\{\SIrange[range-units=single,detect-weight=true]{0.5}{3.2}{\GeV}}}; +\end{lattice} +\end{document} diff --git a/Master/texmf-dist/doc/latex/tikz-palattice/tikz-palattice_documentation.pdf b/Master/texmf-dist/doc/latex/tikz-palattice/tikz-palattice_documentation.pdf Binary files differnew file mode 100644 index 00000000000..aec4f712bfc --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-palattice/tikz-palattice_documentation.pdf diff --git a/Master/texmf-dist/doc/latex/tikz-palattice/tikz-palattice_documentation.tex b/Master/texmf-dist/doc/latex/tikz-palattice/tikz-palattice_documentation.tex new file mode 100644 index 00000000000..a88c4f61161 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz-palattice/tikz-palattice_documentation.tex @@ -0,0 +1,581 @@ +%% tikz-palattice_documentation.tex +%% Copyright 2015 J. Schmidt +%% tikz-palattice LaTeX package +% +% 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 J. Schmidt. +% +% This work consists of the files tikz-palattice.sty and tikz-palattice_documentation.tex +% and the 5 example files example1_linear.tex, example2_circular.tex, +% example3_coordinates.tex, example4_labels.tex and elsa.tex + +\documentclass[a4paper]{scrartcl} +\usepackage[english]{babel} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{fixltx2e} +\usepackage{graphicx} +\usepackage{subcaption} +\usepackage[normalem]{ulem} +\usepackage{amsmath} +\usepackage{textcomp} +\usepackage{marvosym} +\usepackage{amssymb} +\usepackage[colorlinks]{hyperref} +\usepackage{siunitx} +\usepackage{listings} +\usepackage{xcolor} +\usepackage{tikz-palattice} + +\newcommand{\option}[1]{{\color{blue}$\langle$\textit{#1}$\rangle$}} +\newcommand{\optiondef}[2]{{\color{green!50!black}$\langle$\textit{#1=#2}$\rangle$}} +\newcommand{\tikzlabel}{Ti\textit{k}Z} + +\author{Jan Schmidt <schmidt@physik.uni-bonn.de>} +\date{v2.1 (February 23, 2015)} +\title{tikz-palattice - draw particle accelerator lattices with \tikzlabel} +\begin{document} + +\definecolor{keycolor}{RGB}{172, 42, 42} +\lstset{ +basicstyle=\small\sffamily, +backgroundcolor=\color{gray!20}, +%numbers=left, +numberstyle=\tiny, +breaklines=true, +%frame=l, +xleftmargin=\parindent, +columns=fullflexible, +showstringspaces=false, +keywordstyle=\bfseries\color{keycolor}, +commentstyle=\color{black!50}, +identifierstyle=,%\color{blue}, +stringstyle=, +escapeinside={(*}{*)} +} + +\maketitle + +\begin{abstract} + The tikz-palattice package allows for drawing a map of a particle accelerator just by + giving a list of elements - similar to lattice files for simulation software. The + package includes 12 common element types like dipoles, quadrupoles, cavities or screens, + as well as automatic labels with element names, a legend, a rule and an environment to + fade out parts of the accelerator. The coordinate of any element can be saved and used + for custom tikz drawings or annotations. Thereby, lattices can be connected to draw + injection/extraction or even a complete accelerator facility. +\end{abstract} + + +\begin{figure}[h] + \centering + \includegraphics[width=\textwidth]{elsa.pdf} + \caption{The Electron Stretcher Facility ELSA at Bonn University, drawn with + tikz-palattice} +\label{fig:elsa} +\end{figure} + + +\clearpage +\parindent=0pt +Copyright 2015 Jan Schmidt + +\medskip +Permission is granted to distribute and/or modify both the documentation and the code +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 + +\tableofcontents + +\section{Installation} +\label{sec-1} +\subsection{Copy tikz-palattice.sty} +\label{sec-1-1} +You just need to copy the lattice.sty file to a place where your \LaTeX{} installation can recognize it. +This can be +\begin{itemize} +\item the same folder as your .tex document or +\item in the \LaTeX{} system or user tree. +\end{itemize} +E.g. to add it to the system tree for texlive under ubuntu: +\begin{lstlisting} +sudo mkdir -p /usr/local/share/texmf/tex/latex/lattice/ +sudo cp lattice.sty /usr/local/share/texmf/tex/latex/lattice/ +sudo mktexlsr +\end{lstlisting} +For this path there is also a Makefile prepared, so just enter +\begin{lstlisting} +sudo make install +\end{lstlisting} +Otherwise read the documentation of your \LaTeX{} distribution. + +\subsection{Required packages} +\label{sec-1-2} +\begin{itemize} +\item tikz +\item siunitx +\item ifthen +\item xargs +\item etoolbox +\end{itemize} + +\lstset{language=[LaTeX]TeX} + +\section{Basic Usage} +\label{sec:remarks} + +Basically, an accelerator lattice is drawn by writing element commands one after the +other. White spaces and newlines are ignored. Usually you will use one \lstinline+drift+ +and one other element alternately: + +\begin{minipage}[c]{0.5\textwidth} +\begin{lstlisting} + \begin{lattice} + \source{Gun}{0.4} + \drift{0.267} + \quadrupole{Q1}{0.4} + \drift{0.29} + \dipole{M1}{0.8}{30} + \drift{0.29} + \kicker{VC1}{0.1} + \drift{0.2} + \end{lattice} +\end{lstlisting} +\end{minipage} +% +\begin{minipage}[c]{0.5\textwidth} + \begin{center} + \begin{lattice} + \source{Gun}{0.4} + \drift{0.267} + \quadrupole{Q1}{0.4} + \drift{0.29} + \dipole{M1}{0.8}{30} + \drift{0.29} + \kicker{VC1}{0.1} + \drift{0.2} + \end{lattice} + \end{center} +\end{minipage} + + +Descriptions of the commands are given in section \ref{sec-5}. There are 5 examples coming +with this package. Some of the drawings are shown in this document. Please look at the +separate tex-files for the source code. + +\paragraph{Some general remarks:} +\begin{itemize} +\item it is recommended to draw lattices using \lstinline+\documentclass{standalone}+ + especially for larger beamlines. +\item lengths are set in meter, so you write \{1.32\} for \SI{1.32}{\m}. +\item beamline with angle \SI{0}{\degree} goes to the right, positive angles bend counter clockwise. +\item settings (colors, font, rotatelabel,\ldots{}) changed within a \verb+scope+ environment are set back to the previous values outside of \verb+scope+ +\item picture scale: for lattice scale=1 an element of 1m length is plotted with \SI{2}{\cm} length +\end{itemize} + +Below, the arguments of commands are given in angle brackets. The values after an equal +sign are default values of optional arguments. E.g. \optiondef{scale}{1} indicates that +the default value of "scale" is 1. + + + +\section{The lattice Environment} +\label{sec-4} + +To draw a lattice just add +\begin{lstlisting} +\usepackage{lattice} +\end{lstlisting} +to your preambel and use the lattice environment with +\begin{lstlisting} + \begin{lattice}[(*\optiondef{scale}{1}*)][(*\optiondef{tikz options}{}*)] + ... + \end{lattice} +\end{lstlisting} +The \lstinline+lattice+ environment contains a \lstinline+tikzpicture+ environment in +which the lattice is drawn using usual tikz commands. The \lstinline+lattice+ environment +has 2 optional arguments: +\begin{enumerate} +\item \optiondef{scale}{1} scales whole picture (default is 1). +\item \optiondef{tikz options}{} gives any options for the \lstinline+tikzpicture+ (e.g. + overlay, default is none). +\end{enumerate} + + +\section{Within lattice Environment} +\label{sec-5} + +\subsection{Elements} +\label{sec-5-1} + + Here is a list of all implemented element types. The element names are self-explanatory: +\begin{lstlisting} + \drift{(*\option{length/m}*)}[(*\optiondef{name}{}*)] + \dipole{(*\option{name}*)}{(*\option{arc length/m}*)}{(*\option{bending angle/deg}*)}[(*\optiondef{type}{s}*)][(*\optiondef{thickness/m}{0.6}*)] + \quadrupole{(*\option{name}*)}{(*\option{length/m}*)}[(*\optiondef{thickness/m}{0.5}*)] + \sextupole{(*\option{name}*)}{(*\option{length/m}*)}[(*\optiondef{thickness/m}{0.3}*)] + \corrector{(*\option{name}*)}{(*\option{length/m}*)}[(*\optiondef{thickness/m}{0.25}*)] + \kicker{(*\option{name}*)}{(*\option{length/m}*)}[(*\optiondef{thickness/m}{0.25}*)] + \cavity{(*\option{name}*)}{(*\option{length/m}*)}[(*\optiondef{thickness/m}{0.45}*)] + \solenoid{(*\option{name}*)}{(*\option{length/m}*)}[(*\optiondef{thickness/m}{0.2}*)] + \beamdump{(*\option{name}*)}{(*\option{length/m}*)}[(*\optiondef{thickness/m}{0.5}*)] + \source{(*\option{name}*)}{(*\option{length/m}*)}[(*\optiondef{thickness/m}{0.5}*)] + \screen{(*\option{name}*)}[(*\optiondef{length/m}{0.2}*)] + \valve{(*\option{name}*)} + \marker{(*\option{name}*)}[(*\optiondef{length/m}{0.35}*)] % a line perpendicular to the beamline, see Fig. (*\ref{fig:example1}*) +\end{lstlisting} + +The \lstinline+dipole+ option \optiondef{type}{s} allows to select different dipole +shapes. It is shown in example~2. Possible values are: +\begin{itemize} +\item s for a sector magnet (entrance/exit surface 90 degree to beampipe) +\item br for a bend rectangle magnet (parallel entrance/exit surfaces) +\item r for a rectangle magnet +\end{itemize} +If you use any other letters, also the default (s) is used. + + +\begin{figure}[h] + \centering + \includegraphics[width=10cm]{example1_linear} + \caption{Example 1} + \label{fig:example1} +\end{figure} + + +\subsection{Orientation of the lattice} +\label{sec-5-2} + +\begin{lstlisting} + \start{(*\option{coordinate/m}*)} +\end{lstlisting} +sets starting point of the lattice. Use it before the first element. \option{coordinate/m} +is of form (x,y) or any tikz label, e.g. (mylabel.east) You can use this with +\lstinline+\savecoordinate+ (section \ref{sec:coords}) to connect lattices, but it is +recommended to do this via \lstinline+\goto+ (see below). Both are shown in example 3. + +\begin{lstlisting} + \rotate{(*\option{angle/deg}*)} +\end{lstlisting} +bends the beamline by the given angle. + +\begin{lstlisting} + \setangle{(*\option{angle/deg}*)} +\end{lstlisting} +sets the beamline angle to the given angle. The next element is drawn with beam axis in +this direction. + +\begin{lstlisting} + \goto{(*\option{coordinate name}*)} +\end{lstlisting} +sets current position and angle to values saved +with \lstinline+\savecoordinate+ (section \ref{sec:coords}). +Use this to connect lattices and draw injection, extraction or even a complete accelerator +facility. This is shown in example 3. + + + +\subsection{Rule and Legend} +\label{sec:rule-legend} + +\begin{lstlisting} + \drawrule{(*\option{position/m}*)}[(*\optiondef{tick distance/m}{1}*)][(*\optiondef{scale}{1}*)][(*\optiondef{height/m}{0.1}*)] +\end{lstlisting} +draws a rule to visualize the size of the lattice. Coordinate is of form (x,y) or any tikz +label, e.g. (mylabel.east) + +\begin{lstlisting} + \legend{(*\option{position/m}*)}[(*\optiondef{scale}{1}*)] +\end{lstlisting} +draws a legend with all element types that occur in the lattice before this command. +The given \option{position/m} is north west (upper left corner) of the legend box. +The scale option scales the whole box including the text, which has the usual label +textsize if scale=1. + +\begin{lstlisting} + \completelegend{(*\option{position/m}*)}[(*\optiondef{scale}{1}*)] +\end{lstlisting} +is similar to \lstinline+\legend+, but shows all element types. + + +\clearpage +\begin{figure}[h] + \centering + % this is the ring from example 2, but plotted smaller (30%). + % the element sizes (in meter) are the same - as the rule indicates. + \begin{lattice}[0.3] + \setlabelfont{\tiny} + \begin{labeldistance}{0.3} + \drift{1} + \dipole{M1}{2}{45} + \drift{1} + \turnlabels + \dipole{M2}{2}{45} + \turnlabels + \drift{1} + \dipole{M3}{2}{45} + \drift{1} + \savecoordinate{myCoord1}[center] + \dipole{M4}{2}{45} + \drift{1} + \dipole{M5}{2}{45} + \drift{1} + \dipole{M6}{2}{45} + \drift{1} + \savecoordinate{myCoord2}[center] + \dipole{M7}{2}{45} + \drift{1} + \dipole{M8}{2}{45} + \drawrule{(-2.5,-1)}[2] + \end{labeldistance} + % custom drawing using saved coordinates (to center of drifts) + \draw[->, thick] (myCoord2) -- (myCoord1) node[midway,fill=white,rotate=20] {signal}; + \end{lattice} +\caption{From example 3} +\label{fig:fromexample3} +\end{figure} + + +\subsection{Labels} +\label{sec:labels} +Every element has a text label showing the given element name. The position and +orientation of the label is set automatically according to the current angle of the +beamline. Several commands to modify the labels manually are described below. If you want +to disable labels, leave the element names blank or set the label color (section \ref{sec:colors}) to your background color. + +\begin{lstlisting} + \turnlabels +\end{lstlisting} +moves labels to other side of elements (swap with marker labels) + +\begin{lstlisting} + \rotatelabels{(*\option{angle/deg}*)}[(*\optiondef{anchor}{}*)] +\end{lstlisting} +allows rotation of element labels. +The \optiondef{anchor}{} sets the center of rotation (north, center, south west, +\ldots{}). West corresponds to the labels first character. By default the anchor is set +automatically depending on the current angle of the beamline. + +\begin{lstlisting} + \begin{labeldistance}{(*\option{distance/m}*)} + ... + \end{labeldistance} +\end{lstlisting} +sets the distance of text labels to the element center for all elements within this +environment. Default is 0.35. + +\begin{lstlisting} + \setlabeldistance{(*\option{distance/m}*)} + \resetlabeldistance +\end{lstlisting} +sets the distance of text labels to the element center for all following elements. the +reset command sets the default value. Default is 0.35. + +\begin{lstlisting} + \setlabelfont{(*\option{fontsize}*)} +\end{lstlisting} +sets the text label font size. Default is \lstinline+\normalsize+. + + + +\subsubsection{Colors} +\label{sec:colors} +The colors can be changed at any point of the lattice. A setting is valid until the next +color command. The reset commands set the according default color. Use a \lstinline+scope+ +environment to change a color for a section of a lattice. + +\begin{lstlisting} + \setlinecolor{(*\option{type}*)}{(*\option{color}*)} + \resetlinecolor{(*\option{type}*)} +\end{lstlisting} +for \option{type} drift and marker. + +\begin{lstlisting} + \setelementcolor{(*\option{type}*)}{(*\option{color}*)}[(*\optiondef{gradient color}{white}*)] + \resetelementcolor{(*\option{type}*)} +\end{lstlisting} +for all element types. Set \optiondef{gradient color}{white} equal to \option{color} to +"disable" the gradient. + +\begin{lstlisting} + \setlabelcolor{(*\option{color}*)} +\end{lstlisting} +for textlabels. Set to background color to hide text labels. + + +\begin{lstlisting} + \begin{fade}[(*\optiondef{opacity}{0.25}*)] + ... + \end{fade} +\end{lstlisting} + reduces the opacity of all elements within the environment and sets all colors to gray. + So you can fade out regions of the lattice - e.g. for presentations. + This can also be used to completely hide regions by setting \optiondef{opacity}{0.25} to zero. + + + + +\subsection{Access lattice Coordinates} +\label{sec:coords} +You can use element coordinates to draw anything you want using pgf/tikz. + +\begin{lstlisting} + \savecoordinate{(*\option{name}*)}[(*\optiondef{position}{east}*)] +\end{lstlisting} + saves the coordinate of the previous element to access it later. Position specifies the exact place of the element. East and center are available. East is always downstream. + +\begin{itemize} +\item you can use all tikz/pgf commands within the lattice environment to draw anything. +\item You can use this to connect multiple beamlines \textbf{within a lattice environment} with + \lstinline+\goto{name}+ (recommended, Figure \ref{fig:twoways} (b)). +\item You can use this to connect \textbf{multiple lattice environments} with + \lstinline+\start{name}+. Use the tikz overlay option. (Figure \ref{fig:twoways} (a)) +\end{itemize} + + + + +\begin{figure} +\centering +\begin{subfigure}[b]{.45\textwidth} +\centering + \begin{lattice} + \rotate{90} + \turnlabels %labels to the left + \drift{0.5} + \quadrupole{QF1}{0.3} + \drift{0.2} + \kicker{}{0.1} + \drift{0.07} + \quadrupole{QD2}{0.3} + \drift{0.4} + \setelementcolor{kicker}{cyan} + \kicker{Septum}{0.5} + \resetelementcolor{kicker} + \savecoordinate{Septum}[center] %save to connect other beamline + \drift{0.8} + \kicker{}{0.1} + \drift{0.37} + \quadrupole{QD3}{0.2} + \drift{0.17} + \kicker{}{0.1} + \drift{0.1} + \sextupole{SF1}{0.2} + \drift{0.27} + \dipole{MB1}{0.2}{30}[s][0.4] + \drift{0.2} + \end{lattice} + % + %now draw second lattice and connect them using the saved coordinate + \begin{lattice}[1][overlay] + \start{(Septum)} + \rotate{70} + \drift{0.6} + \kicker{SS1}{0.2} + \drift{0.2} + \kicker{SSH1}{0.2} + \drift{0.3} + \dipole{M1}{0.2}{-30}[r][0.4] + \begin{fade} %fade out this part + \drift{0.2} + \dipole{M2}{0.2}{50}[r][0.4] + \drift{0.2} + \dipole{M3}{0.2}{-20}[r][0.4] + \drift{0.7} + \end{fade} + \legend{(-1,6.5)} + \end{lattice} + \caption{two lattice environments and start} +\end{subfigure} +% +\begin{subfigure}[b]{.45\textwidth} + \centering + \begin{lattice} + \rotate{90} + \turnlabels %labels to the left + \drift{0.5} + \quadrupole{QF1}{0.3} + \drift{0.2} + \kicker{}{0.1} + \drift{0.07} + \quadrupole{QD2}{0.3} + \drift{0.4} + \setelementcolor{kicker}{cyan} + \kicker{Septum}{0.5} + \resetelementcolor{kicker} + \savecoordinate{Septum}[center] %save to connect other beamline + \drift{0.8} + \kicker{}{0.1} + \drift{0.37} + \quadrupole{QD3}{0.2} + \drift{0.17} + \kicker{}{0.1} + \drift{0.1} + \sextupole{SF1}{0.2} + \drift{0.27} + \dipole{MB1}{0.2}{30}[s][0.4] + \drift{0.2} + + % now go back to saved coordinate and continue with another beamline + \goto{Septum} + \rotate{-20} + \turnlabels %labels to the right + \drift{0.6} + \kicker{SS1}{0.2} + \drift{0.2} + \kicker{SSH1}{0.2} + \drift{0.3} + \dipole{M1}{0.2}{-30}[r][0.4] + \begin{fade} %fade out this part + \drift{0.2} + \dipole{M2}{0.2}{50}[r][0.4] + \drift{0.2} + \dipole{M3}{0.2}{-20}[r][0.4] + \drift{0.7} + \end{fade} + \legend{(0,6.5)} + \end{lattice} + \caption{one lattice environment and goto} +\end{subfigure} +\caption{From example 3: Two ways to connect lattices} +\label{fig:twoways} +\end{figure} + + +\clearpage +\section{TODO} +\label{sec:todo} + +\paragraph{What is missing?} +\begin{itemize} +\item manually adding and editing legend entries +\item The look of the elements can be improved +\item More element types can be added +\item \ldots{} +\end{itemize} + +I am not an \TeX{} programmer. I basically used the \tikzlabel{} commands and wrote a +bunch of macros. So there is: +\begin{itemize} +\item no error handling implemented +\item no dedicated scoping of internal macros (use of lattice with documentclass standalone recommended) +\end{itemize} + +\paragraph{Known issues:} +\begin{itemize} +\item Legend entry alignment is buggy for some legend scales that differ significantly + from~1 +\item Please report bugs! +\end{itemize} + +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tikz-palattice/tikz-palattice.sty b/Master/texmf-dist/tex/latex/tikz-palattice/tikz-palattice.sty new file mode 100644 index 00000000000..2084ee12501 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tikz-palattice/tikz-palattice.sty @@ -0,0 +1,647 @@ +%% tikz-palattice.sty +%% Copyright 2015 J. Schmidt +%% tikz-palattice LaTeX package +% +% 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 J. Schmidt. +% +% This work consists of the files tikz-palattice.sty and tikz-palattice_documentation.tex +% and the 5 example files example1_linear.tex, example2_circular.tex, +% example3_coordinates.tex, example4_labels.tex and elsa.tex + +\ProvidesPackage{tikz-palattice}[2015/02/23 v2.1] +\RequirePackage{tikz} +\RequirePackage{ifthen} +\RequirePackage{siunitx} +\RequirePackage{xargs} +\RequirePackage{etoolbox} +\usetikzlibrary{calc,positioning,fit} +\usetikzlibrary{scopes} +\pgfdeclarelayer{background} +\pgfsetlayers{background,main} + + + + +%---lattice environment--- +\newenvironmentx{lattice}[2][1=1, 2=]{% +%begin +\tikzpicture[node distance=0mm, remember picture, #2] +\newdimen\labeldist +\newdimen\savelabeldist +\newdimen\corners; +\newdimen\elementheight; +\newdimen\elementwidth; +\newdimen\markerlen; +\pgfmathsetmacro{\scal}{#1*0.1}; +\def\labelfont{\normalsize}; +\def\labelcolor{black}; +\def\labelang{-90}; +\def\marklabelang{+90}; +\def\labelrot{0}; +\providetoggle{userlabelanchor} +\settoggle{userlabelanchor}{false} +\pgfmathsetlength{\labeldist}{\scal*20cm*0.35}; +\pgfmathsetlength{\savelabeldist}{\scal*20cm*0.35}; +\pgfmathtruncatemacro{\i}{0}; +\pgfmathtruncatemacro{\j}{0}; +\global\def\angle{0} +\node (nodeeast0) [start] at (0,0) {}; +\coordinate (east\j) at (nodeeast\j.center); %\declarecoords ("east" only +\global\providetoggle{dip} \global\settoggle{dip}{false} +\global\providetoggle{quad} \global\settoggle{quad}{false} +\global\providetoggle{sext} \global\settoggle{sext}{false} +\global\providetoggle{kick} \global\settoggle{kick}{false} +\global\providetoggle{correct} \global\settoggle{correct}{false} +\global\providetoggle{sol} \global\settoggle{sol}{false} +\global\providetoggle{cav} \global\settoggle{cav}{false} +\global\providetoggle{sourc} \global\settoggle{sourc}{false} +\global\providetoggle{scree} \global\settoggle{scree}{false} +\global\providetoggle{valv} \global\settoggle{valv}{false} +}{% +%end +\endtikzpicture +} + + + +%---general settings--- +\newcommand{\rotate}[1]{\pgfmathparse{\angle+#1} \global\let\angle\pgfmathresult} +\newcommand{\setangle}[1]{\pgfmathparse{#1} \global\let\angle\pgfmathresult} +\newcommand{\start}[1]{% + \tikzset{x=2cm,y=2cm} + \node (nodeeast0) [start] at #1 {}; + \coordinate (east\j) at (nodeeast\j.center); + \tikzset{x=1cm,y=1cm} +} + +\newcommandx{\savecoordinate}[2][2=east]{% +\global\csedef{angle#1}{\angle} +\coordinate (#1) at (#2\i); +} + +\newcommand{\goto}[1]{% +\coordinate (east\j) at (#1); +%\node[fill=yellow] at (Septum) {\csuse{angle#1}}; +\pgfmathparse{\csuse{angle#1}} \global\let\angle\pgfmathresult +%\expandafter\global\csname angle#1\endcsname{\angle} +} + + + +%---color settings--- +\newcommandx{\setelementcolor}[3][3=white]{% +\tikzset{#1/.append style={bottom color=#2, top color=#3, fadeElement}}} +\newcommand{\resetelementcolor}[1]{\tikzset{#1/.style={default_#1}}} +\newcommand{\setlinecolor}[2]{\tikzset{#1/.append style={#2, fade}}} +\newcommand{\resetlinecolor}[1]{\tikzset{#1/.style={default_#1}}} + +\newenvironmentx{fade}[1][1=0.25]{% +\tikzset{fade/.style={opacity=#1, color=gray}} +\tikzset{fadeElement/.style={fade, color=gray,bottom color=gray,top color=white}} +}{% +\tikzset{fade/.style={opacity=1.0}} % color not set +\tikzset{fadeElement/.style={fade}} +} + + +%---label settings--- +\newenvironment{labeldistance}[1]{% + \pgfmathsetlength{\savelabeldist}{\labeldist} + \pgfmathsetlength{\labeldist}{\scal*20cm*#1}; +}{% + \pgfmathsetlength{\labeldist}{\savelabeldist}; +} + +\newcommand{\setlabeldistance}[1]{% +\pgfmathsetlength{\savelabeldist}{\labeldist} +\pgfmathsetlength{\labeldist}{\scal*20cm*#1};} +\newcommand{\resetlabeldistance}{\pgfmathsetlength{\labeldist}{\savelabeldist};} +\newcommand{\setlabelfont}[1]{\def\labelfont{#1}} +\newcommand{\setlabelcolor}[1]{\def\labelcolor{#1}} + +\newcommand{\turnlabels}{% +\ifthenelse{\labelang = -90}{% +\def\labelang{+90} \def\marklabelang{-90}}{% +\def\labelang{-90} \def\marklabelang{+90}}} + +\newcommandx{\rotatelabels}[2][2=notset]{% + \def\labelrot{#1} + \ifthenelse{\equal{#2}{notset}}{% + \settoggle{userlabelanchor}{false} + }{% + \settoggle{userlabelanchor}{true} + \def\labelanchor{#2}} +} + + + +% rule (maßstab) +\newcommandx{\drawrule}[4][2=1, 3=1, 4=0.06]{% + \coordinate (rule0) at ($(0,0)!\scal*20!#1$); + \tikzset{rule/.append style={line width=20pt*#4*10*\scal}} + \draw[rule] (rule0) --++(#2*20cm*\scal,0) coordinate (rule1) --++(0,#4*20cm*\scal) + --++(-#2*20cm*\scal,0) --++(0,-#4*20cm*\scal); + \draw[rule,fill=white] (rule1) --++(#2*20cm*\scal,0) coordinate (rule2) --++(0,#4*20cm*\scal) + --++(-#2*20cm*\scal,0) --++(0,-#4*20cm*\scal); + \draw[rule] (rule2) --++(#2*20cm*\scal,0) coordinate (rule3) --++(0,#4*20cm*\scal) + --++(-#2*20cm*\scal,0) --++(0,-#4*20cm*\scal); + \foreach \x in {0,1,2,3} {% + \pgfmathsetmacro{\len}{#2*\x} + \path [draw=none] (rule\x) --+ (-90:0.06*\labeldist/\scal) node[label, black, scale=#3, anchor=north] + {\SI[zero-decimal-to-integer, round-mode=places, round-precision=1]{\len}{\meter}}; + \draw [black,line width=30pt*#4*10*\scal] (rule\x) --+ (-90:1mm); + \draw [black,line width=30pt*#4*10*\scal] (rule\x) --+ (90:#4*20cm*\scal+1mm); + } +} + +%legend (types that occured in the lattice before this command) +\newcommandx{\legend}[2][2=1]{% +\coordinate (legendstart) at ($(0,0)!\scal*20!#1$); +\pgfmathsetmacro{\savescal}{\scal} +\pgfmathsetmacro{\saveang}{\angle} +\pgfmathsetmacro{\scal}{0.05} +\pgfmathsetmacro{\angle}{-90} +\def\h{0.4} +\def\l{0.3} +\def\dist{0.18} +\turnlabels +\tikzset{drift/.append style={draw=none}} +\savecoordinate{_here_} +\coordinate (east\j) at (legendstart); +\coordinate (legendstart') at ($(legendstart) + (-\h*\scal*15*#2,\dist*\scal*15*#2)$); +\coordinate (legendstart'') at ($(legendstart) + (\h*\scal*15*#2,\dist*\scal*15*#2)$); +\edef\points{(legendstart') (legendstart'')} +\begin{scope}[scale=#2, every node/.style={scale=#2}] +\setlabelcolor{black} + \iftoggle{dip}{\dipole{Dipole}{\l}{0}[s][\h]\xdef\points{(elementlabel\j) + \points}\drift{\dist}}{}% + \iftoggle{quad}{\quadrupole{Quadrupole}{\l}[\h]\xdef\points{(elementlabel\j) + \points}\drift{\dist}}{}% + \iftoggle{sext}{\sextupole{Sextupole}{\l}[\h]\xdef\points{(elementlabel\j) + \points}\drift{\dist}}{}% + \iftoggle{correct}{\corrector{Corrector}{\l}[\h]\xdef\points{(elementlabel\j) + \points}\drift{\dist}}{}% + \iftoggle{kick}{\kicker{Kicker}{\l}[\h]\xdef\points{(elementlabel\j) + \points}\drift{\dist}}{}% + \iftoggle{cav}{\cavity{Cavity}{\l}[\h]\xdef\points{(elementlabel\j) + \points}\drift{\dist}}{}% + \iftoggle{sol}{\solenoid{Solenoid}{\l}[\h]\xdef\points{(elementlabel\j) + \points}\drift{\dist}}{}% + \iftoggle{sourc}{\source{Source}{\l}[\h]\xdef\points{(elementlabel\j) + \points}\drift{\dist}}{}% + \iftoggle{scree}{\screen{Screen}[\l]\xdef\points{(elementlabel\j) + \points}\drift{\dist}}{}% + \iftoggle{valv}{\drift{\dist}\valve{Valve}\xdef\points{(elementlabel\j) + \points}\drift{\dist}}{}% +\end{scope} +\node[draw=black, rounded corners, fit=\points] {}; +\pgfmathsetmacro{\scal}{\savescal} +\pgfmathsetmacro{\angle}{\saveang} +\tikzset{drift/.append style={draw=black}} +\turnlabels +\coordinate (east\j) at (_here_); +} + +%complete legend (all types) +\newcommandx{\completelegend}[2][2=1]{% + \settoggle{dip}{true} + \settoggle{quad}{true} + \settoggle{sext}{true} + \settoggle{kick}{true} + \settoggle{correct}{true} + \settoggle{sol}{true} + \settoggle{cav}{true} + \settoggle{sourc}{true} + \settoggle{scree}{true} + \settoggle{valv}{true} + \legend{#1}[#2] +} + + +%---commands for internal use--- +\newcommand{\updatelabelanchor}{% + \pgfmathtruncatemacro\iang{\angle} + % handle angle not in [0,360] ([-720,+1080] handled) + \ifthenelse{\iang<0}{\pgfmathtruncatemacro\iang{\iang+360}}{} + \ifthenelse{\iang<0}{\pgfmathtruncatemacro\iang{\iang+360}}{} + \ifthenelse{\iang>360}{\pgfmathtruncatemacro\iang{\iang-360}}{} + \ifthenelse{\iang>360}{\pgfmathtruncatemacro\iang{\iang-360}}{} + % set label anchor according to angle + \iftoggle{userlabelanchor}{}{% %if labelanchor is set by user just use the set value + \ifthenelse{\labelang = -90}{% + \def\labelanchor{north}; + \ifthenelse{\iang > 30}{\def\labelanchor{west}}{} + \ifthenelse{\iang > 150}{\def\labelanchor{south}}{} + \ifthenelse{\iang > 210}{\def\labelanchor{east}}{} + \ifthenelse{\iang > 330}{\def\labelanchor{north}}{} + }{% + \def\labelanchor{south}; + \ifthenelse{\iang > 30}{\def\labelanchor{east}}{} + \ifthenelse{\iang > 150}{\def\labelanchor{north}}{} + \ifthenelse{\iang > 210}{\def\labelanchor{west}}{} + \ifthenelse{\iang > 330}{\def\labelanchor{south}}{} + } + } +} + +\newcommand{\updatemarkerlabelanchor}{% + \pgfmathtruncatemacro\iang{\angle} + % handle angle not in [0,360] ([-720,+1080] handled) + \ifthenelse{\iang<0}{\pgfmathtruncatemacro\iang{\iang+360}}{} + \ifthenelse{\iang<0}{\pgfmathtruncatemacro\iang{\iang+360}}{} + \ifthenelse{\iang>360}{\pgfmathtruncatemacro\iang{\iang-360}}{} + \ifthenelse{\iang>360}{\pgfmathtruncatemacro\iang{\iang-360}}{} + % set label anchor according to angle + \ifthenelse{\marklabelang = +90}{% + \def\labelanchor{south}; + \ifthenelse{\iang > 30}{\def\labelanchor{east}}{} + \ifthenelse{\iang > 150}{\def\labelanchor{north}}{} + \ifthenelse{\iang > 210}{\def\labelanchor{west}}{} + \ifthenelse{\iang > 330}{\def\labelanchor{south}}{} + }{% + \def\labelanchor{north}; + \ifthenelse{\iang > 30}{\def\labelanchor{west}}{} + \ifthenelse{\iang > 150}{\def\labelanchor{south}}{} + \ifthenelse{\iang > 210}{\def\labelanchor{east}}{} + \ifthenelse{\iang > 330}{\def\labelanchor{north}}{} + } +} + + +\newcommand{\elementlabel}[1]{% + \updatelabelanchor + \path [draw=none] (center\j) --+ (\angle\labelang:\labeldist) node[label] (elementlabel\j) {#1}; +} + +\newcommand{\jinc}{\pgfmathparse{int(\i+1)} \global\let\j\pgfmathresult} +\newcommand{\iinc}{\global\let\i\j} +\newcommand{\angleinc}[1]{\pgfmathparse{\angle+#1} \global\let\angle\pgfmathresult} +\newcommand{\declarecoords}{\coordinate (east\j) at (nodeeast\j.center); \coordinate (center\j) at (nodecenter\j.center);} + + + + + +% ----- element commands ----- +% drift +\newcommandx{\drift}[2][2=]{% +\jinc +\begin{pgfonlayer}{background} + \draw[drift] (east\i) --++ (\angle:#1*10cm*\scal) node[] (nodecenter\j) {} --++ + (\angle:#1*10cm*\scal) node[] (nodeeast\j) {}; +\end{pgfonlayer}{background} +\declarecoords +\elementlabel{#2}; +\iinc; +} + +%rectangle-element (used for quad,sext,kicker,cavity,...) +\newcommandx{\rectangleelement}[4]{% +\pgfmathsetlength{\corners}{(#2)>=0.4 ? (1mm*10*\scal) : 0mm}; +\pgfmathsetlength{\elementheight}{#3*20cm*\scal}; +\draw[drift] (east\i) --++ (\angle:#2*10cm*\scal) node[] (nodecenter\j) {} --++ +(\angle:#2*10cm*\scal) node[] (nodeeast\j) {}; +\draw[#4] (east\i) --++ (0,\elementheight/2) --++ (#2*20cm*\scal,0) --++ +(0,-\elementheight) --++ (-#2*20cm*\scal,0) --++ (0,\elementheight/2); +} + + +%dipole (br,r,s) +\newcommandx{\dipole}[5][4=s, 5=0.6]{% +\jinc +\pgfmathsetlength{\corners}{(#2)>=0.4 ? (1mm*10*\scal) : 0mm}; +\pgfmathsetlength{\elementheight}{#5*20cm*\scal}; +\def\winkel{#3} +\ifthenelse{\equal{#3}{0}}{ + \rectangleelement{#1}{#2}{#5}{dipole} +}{ + \newdimen\radius + \newdimen\ri + \newdimen\ra + \pgfmathsetlength{\radius}{(#2*20cm*\scal)/rad(\winkel)}; % bogenlänge + \pgfmathsetlength{\ri}{\radius-0.5*\elementheight} + \pgfmathsetlength{\ra}{\radius+0.5*\elementheight} + + % draw bend beampipe + \draw[drift,rotate=\angle] (east\i) arc (-90:(-90+\winkel/2):\radius) node[] (nodecenter\j) {}; + \draw[drift,rotate=\angle] (nodecenter\j) arc ((-90+\winkel/2):(-90+\winkel):\radius) node[] (nodeeast\j) {}; + + % [r]ectangle + \ifthenelse{\equal{#4}{r}}{ + \angleinc{0.5*#3} + \newdimen\straightlength + \pgfmathsetlength{\straightlength}{sin(\winkel/2)*2*\radius} % sekante des kreisbogens + \draw[dipole] (east\i) --++ (0,-\elementheight/2) --++ (\straightlength,0) --++ + (0,\elementheight) --++ (-\straightlength,0) --++ (0,-\elementheight/2); + }{ + % [s]ector + \ifthenelse{\equal{#4}{s}}{% + \draw[dipole] (east\i) -- ++ + (0,-\elementheight/2) arc (-90:(-90+\winkel):\ra) -- ++(\winkel+90:\elementheight) arc + ((-90+\winkel):-90:\ri) --++ (0,-\elementheight); + \angleinc{0.5*\winkel} + }{ + % [b]end[r]ectangle + \angleinc{0.5*#3} + \draw[dipole] (east\i) -- ++ + (0,-\elementheight/2) arc (-90-\winkel/2:-90+\winkel/2:\radius) -- ++(0,\elementheight) arc + (-90+\winkel/2:-90-\winkel/2:\radius) -- cycle; + } + } +} + +\declarecoords +\elementlabel{#1}; +\iinc +\global\settoggle{dip}{true} +\angleinc{0.5*\winkel} +} + + +%quadrupole +\newcommandx{\quadrupole}[3][3=0.5]{% +\jinc +\rectangleelement{#1}{#2}{#3}{quadrupole} +\declarecoords +\elementlabel{#1} +\iinc +\global\settoggle{quad}{true} +} + +%sextupole +\newcommandx{\sextupole}[3][3=0.3]{% +\jinc +\rectangleelement{#1}{#2}{#3}{sextupole} +\declarecoords +\elementlabel{#1} +\iinc +\global\settoggle{sext}{true} +} + +%kicker +\newcommandx{\kicker}[3][3=0.25]{% +\jinc +\rectangleelement{#1}{#2}{#3}{kicker} +\declarecoords +\elementlabel{#1} +\iinc +\global\settoggle{kick}{true} +} + +% corrector +\newcommandx{\corrector}[3][3=0.25]{% +\jinc +\rectangleelement{#1}{#2}{#3}{corrector} +\declarecoords +\elementlabel{#1} +\iinc +\global\settoggle{correct}{true} +} + +%cavity +\newcommandx{\cavity}[3][3=0.45]{% +\jinc +\rectangleelement{#1}{#2}{#3}{cavity} +\declarecoords +\elementlabel{#1} +\iinc +\global\settoggle{cav}{true} +} + +%solenoid +\newcommandx{\solenoid}[3][3=0.2]{% +\jinc +\rectangleelement{#1}{#2}{#3}{solenoid} +\declarecoords +\elementlabel{#1} +\iinc +\global\settoggle{sol}{true} +} + +%beamdump +\newcommandx{\beamdump}[3][3=0.5]{% +\jinc +\rectangleelement{#1}{#2}{#3}{beamdump} +\declarecoords +\elementlabel{#1} +\iinc +%\global\settoggle{}{true} no legend for beamdump +} + +%source +\newcommandx{\source}[3][3=0.5]{% +\jinc +\pgfmathsetlength{\corners}{(#2)>=0.4 ? (1mm*10*\scal) : 0mm}; +\pgfmathsetlength{\elementheight}{#3*20cm*\scal}; +\draw[drift] (east\i) --++ (\angle:#2*10cm*\scal) node[] (nodecenter\j) {} --++ +(\angle:#2*10cm*\scal) node[] (nodeeast\j) {}; +\draw[source] (east\i) --++ (0,\elementheight/2) --++ (#2*20cm*\scal,-\elementheight/2) +--++ (-#2*20cm*\scal,-\elementheight/2) --++ (0,\elementheight/2); +\declarecoords +\elementlabel{#1} +\iinc +\global\settoggle{sourc}{true} +} + +%screen +\newcommandx{\screen}[2][2=0.2]{% +\jinc +\pgfmathsetlength{\corners}{(#2)>=0.4 ? (1mm*10*\scal) : 0mm}; +\newdimen\radius +\pgfmathsetlength{\radius}{#2*20cm*\scal/2}; +\draw[drift] (east\i) --++ (\angle:#2*10cm*\scal) node[] (nodecenter\j) {} --++ +(\angle:#2*10cm*\scal) node[] (nodeeast\j) {}; +\draw[screen] (nodecenter\j.center) circle (\radius); +\draw[screen] (nodecenter\j.center) --++ (45:\radius); +\draw[screen] (nodecenter\j.center) --++ (45+180:\radius); +\declarecoords +\elementlabel{#1} +\iinc +\global\settoggle{scree}{true} +} + +%valve +\newcommandx{\valve}[2][2=0.01]{% +\jinc +\rectangleelement{#1}{#2}{0.15}{valve} +\declarecoords +\elementlabel{#1} +\iinc +\global\settoggle{valv}{true} +} + + +%marker +\newcommandx{\marker}[2][2=0.35]{% +\pgfmathsetlength{\markerlen}{#2*20cm*\scal}; +\updatemarkerlabelanchor +\draw [marker] (east\i) --+ (\angle-90:\markerlen); % half length (=> 10cm) +\draw [marker] (east\i) --+ (\angle+90:\markerlen); +\draw [draw=none] (east\i) --+ (\angle\marklabelang:\markerlen+0.5*\labeldist) node[label] {#1}; +} + + + + + +% ----- styles ----- +%fade (for global fade setting) +\tikzset{fade/.style={ +opacity=1 +}} +\tikzset{fadeElement/.style={ +fade +}} + +%element (for all, except drift) +\tikzset{element/.style={ +rounded corners=\corners, +line width=0.8pt*10*\scal, draw=black, +top color=white, +anchor=west, +rotate=\angle, +fadeElement %must be last to overwrite other settings +}} + +%dipole +\tikzset{default_dipole/.style={ +bottom color=blue, +element, +}, +dipole/.style={default_dipole} +} + + +%quadrupole +\tikzset{default_quadrupole/.style={ +bottom color=yellow, +element +}, +quadrupole/.style={default_quadrupole} +} + +%sextupole +\tikzset{default_sextupole/.style={ +bottom color=violet!70!black, +element +}, +sextupole/.style={default_sextupole} +} + +%kicker +\tikzset{default_kicker/.style={ +bottom color=red!90!black, +element +}, +kicker/.style={default_kicker} +} + +%corrector +\tikzset{default_corrector/.style={ +bottom color=orange!90!black, +element +}, +corrector/.style={default_corrector} +} + +%cavity +\tikzset{default_cavity/.style={ +bottom color=brown!80!black, +element +}, +cavity/.style={default_cavity} +} + +%solenoid +\tikzset{default_solenoid/.style={ +bottom color=green!70!black, +element +}, +solenoid/.style={default_solenoid} +} + +%beamdump +\tikzset{default_beamdump/.style={ +bottom color=gray, +element +}, +beamdump/.style={default_beamdump} +} + +%source +\tikzset{default_source/.style={ +bottom color=gray, +element +}, +source/.style={default_source} +} + +%screen +\tikzset{default_screen/.style={ +bottom color=white, +element +}, +screen/.style={default_screen} +} + +%valve +\tikzset{default_valve/.style={ +bottom color=gray, +element, +top color=gray, +draw=none +}, +valve/.style={default_valve} +} + + + +%drift +\tikzset{default_drift/.style={ +line width=0.8pt*10*\scal, draw=black, +fade %must be last to overwrite other settings +}, +drift/.style={default_drift} +} + +%text label +\tikzset{label/.style={ +text=\labelcolor, +font=\labelfont, +rotate=\labelrot, +anchor=\labelanchor, +fade %must be last to overwrite other settings +}} + +%marker (line) +\tikzset{default_marker/.style={ +red, densely dashed, +fade %must be last to overwrite other settings +}, +marker/.style={default_marker} +} + +%rule +\tikzset{rule/.style={ +draw=black, +fill=black, +fade %must be last to overwrite other settings +}} + +%start +\tikzset{start/.style={% +draw=none, +anchor=center, +scale=0.1, +fade %must be last to overwrite other settings +}} diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 4ad4bdf043b..39a5d5677e7 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -508,7 +508,7 @@ my @TLP_working = qw( thumb thumbpdf thumbs thumby thuthesis ticket ticollege tikz-bayesnet tikz-cd tikz-3dplot tikz-dependency tikz-dimline tikz-inet - tikz-opm tikz-qtree tikz-timing + tikz-opm tikz-palattice tikz-qtree tikz-timing tikzinclude tikzmark tikzorbital tikzpagenodes tikzpfeile tikzposter tikzscale tikzsymbols timetable timing-diagrams tipa tipa-de tipfr diff --git a/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc b/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc index 784ffe2b06f..48e2fad227e 100644 --- a/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc @@ -109,6 +109,7 @@ depend tikz-dependency depend tikz-dimline depend tikz-inet depend tikz-opm +depend tikz-palattice depend tikz-qtree depend tikz-timing depend tikzinclude diff --git a/Master/tlpkg/tlpsrc/tikz-palattice.tlpsrc b/Master/tlpkg/tlpsrc/tikz-palattice.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/tikz-palattice.tlpsrc |