From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- .../chemmacros/chemmacros.module.tikz.code.tex | 187 +++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 macros/latex/contrib/chemmacros/chemmacros.module.tikz.code.tex (limited to 'macros/latex/contrib/chemmacros/chemmacros.module.tikz.code.tex') diff --git a/macros/latex/contrib/chemmacros/chemmacros.module.tikz.code.tex b/macros/latex/contrib/chemmacros/chemmacros.module.tikz.code.tex new file mode 100644 index 0000000000..2e8dfd243c --- /dev/null +++ b/macros/latex/contrib/chemmacros/chemmacros.module.tikz.code.tex @@ -0,0 +1,187 @@ +% -------------------------------------------------------------------------- +% +% the CHEMMACROS package -- module: `tikz' +% +% -------------------------------------------------------------------------- +% Clemens Niederberger +% -------------------------------------------------------------------------- +% https://github.org/cgnieder/chemmacros/ +% contact@mychemistry.eu +% -------------------------------------------------------------------------- +% If you have any ideas, questions, suggestions or bugs to report, please +% feel free to contact me. +% -------------------------------------------------------------------------- +% Copyright 2011-2017 Clemens Niederberger +% +% 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 Clemens Niederberger. +% -------------------------------------------------------------------------- +\ChemModule*{tikz}{2015/10/26 upright greek symbols} + +\RequirePackage{tikz} +\usetikzlibrary{calc,decorations.pathmorphing} + +\ExplSyntaxOn + +\tl_const:Nx \c_chemmacros_other_colon_tl { \token_to_str:N : } + +% -------------------------------------------------------------------------- +% TikZ drawings - helper macros +\cs_new_protected:Npn \chemmacros_tikz_picture:nn #1#2 + { \tikzpicture[{#1}] #2 \endtikzpicture } +\cs_new_protected:Npn \chemmacros_tikz:nn #1#2 { \tikz[{#1}] {#2} } +\cs_new_protected:Npn \chemmacros_tikz_draw:n #1 { \draw[{#1}] } +\cs_new_protected:Npn \chemmacros_tikz_node:n #1 { \node[{#1}] } +\cs_new_protected:Npn \chemmacros_tikz_shade:n #1 { \shade[{#1}] } +\cs_new_protected:Npn \chemmacros_tikz_shadedraw:n #1 { \shadedraw[{#1}] } +\cs_new_protected:Npn \chemmacros_tikz_node_in_draw:n #1 { node[{#1}] } + +\cs_generate_variant:Nn \chemmacros_tikz_picture:nn { xn } +\cs_generate_variant:Nn \chemmacros_tikz_draw:n { x } +\cs_generate_variant:Nn \chemmacros_tikz_node:n { x } +\cs_generate_variant:Nn \chemmacros_tikz_shade:n { x } +\cs_generate_variant:Nn \chemmacros_tikz_shadedraw:n { x } +\cs_generate_variant:Nn \chemmacros_tikz_node_in_draw:n { x } + +% -------------------------------------------------------------------------- +% arrow tips for electron movement +\dim_new:N \l__chemmacros_el_length_dim + +% full tip for pairs +\pgfarrowsdeclare { el } { el } + { + \dim_set:Nn \l__chemmacros_el_length_dim + { 2.5pt + 2.5\pgflinewidth } + \pgfarrowsleftextend { -\l__chemmacros_el_length_dim } + \pgfarrowsrightextend { .5\pgflinewidth } + } + { + \dim_set:Nn \l__chemmacros_el_length_dim + { 2.5pt + 2.5\pgflinewidth } + \pgfsetdash {} { 0pt } + \pgfsetroundjoin + \pgfsetroundcap + \pgfpathmoveto { \pgfpoint { 0pt } { 0pt } } + \pgfpathlineto + { + \pgfpoint + { -\l__chemmacros_el_length_dim } + { .3\l__chemmacros_el_length_dim } + } + \pgfpathlineto + { \pgfpoint { -.5\l__chemmacros_el_length_dim } { 0pt } } + \pgfpathlineto + { + \pgfpoint + { -\l__chemmacros_el_length_dim } + { -.3\l__chemmacros_el_length_dim } + } + \pgfpathlineto { \pgfpoint { 0pt } { 0pt } } + \pgfusepathqfillstroke + } + +% half tip on the left +\pgfarrowsdeclare { left~el } { left~el } + { + \dim_set:Nn \l__chemmacros_el_length_dim + { 2.5pt + 2.5\pgflinewidth } + \pgfarrowsleftextend { -\l__chemmacros_el_length_dim } + \pgfarrowsrightextend { .5\pgflinewidth } + } + { + \dim_set:Nn \l__chemmacros_el_length_dim + { 2.5pt + 2.5\pgflinewidth } + \pgfsetdash {} { 0pt } + \pgfsetroundjoin + \pgfsetroundcap + \pgfpathmoveto { \pgfpoint { 0pt } { 0pt } } + \pgfpathlineto + { + \pgfpoint + { -\l__chemmacros_el_length_dim } + { .3\l__chemmacros_el_length_dim } + } + \pgfpathlineto { \pgfpoint { -.5\l__chemmacros_el_length_dim } { 0pt } } + \pgfpathlineto { \pgfpoint { 0pt } { 0pt } } + \pgfusepathqfillstroke + } + +% half tip in the right +\pgfarrowsdeclare { right~el } { right~el } + { + \dim_set:Nn \l__chemmacros_el_length_dim + { 2.5pt + 2.5\pgflinewidth } + \pgfarrowsleftextend { -\l__chemmacros_el_length_dim } + \pgfarrowsrightextend { .5\pgflinewidth } + } + { + \dim_set:Nn \l__chemmacros_el_length_dim + { 2.5pt + 2.5\pgflinewidth } + \pgfsetdash {} { 0pt } + \pgfsetroundjoin + \pgfsetroundcap + \pgfpathmoveto { \pgfpoint { 0pt } { 0pt } } + \pgfpathlineto + { + \pgfpoint + { -\l__chemmacros_el_length_dim } + { -.3\l__chemmacros_el_length_dim } + } + \pgfpathlineto { \pgfpoint { -.5\l__chemmacros_el_length_dim } { 0pt } } + \pgfpathlineto { \pgfpoint { 0pt } { 0pt } } + \pgfusepathqfillstroke + } +% -------------------------------------------------------------------------- +% http://tex.stackexchange.com/a/25689/ +\ChemCompatibilityFrom{5.3} +\pgfdeclaredecoration{wave}{initial}{ + \state{initial}[ + width = +0pt , + next~ state = sine, + persistent~ precomputation = { + \pgfmathsetmacro\matchinglength{ + \pgfdecoratedinputsegmentlength / + int(\pgfdecoratedinputsegmentlength/\pgfdecorationsegmentlength) + } + \setlength{\pgfdecorationsegmentlength}{\matchinglength pt} + } + ]{} + \state{sine}[width=\pgfdecorationsegmentlength]{ + \pgfpathsine{ + \pgfpoint + {0.25\pgfdecorationsegmentlength} + {0.5\pgfdecorationsegmentamplitude} + } + \pgfpathcosine{ + \pgfpoint + {0.25\pgfdecorationsegmentlength} + {-0.5\pgfdecorationsegmentamplitude} + } + \pgfpathsine{ + \pgfpoint + {0.25\pgfdecorationsegmentlength} + {-0.5\pgfdecorationsegmentamplitude} + } + \pgfpathcosine{ + \pgfpoint + {0.25\pgfdecorationsegmentlength} + {0.5\pgfdecorationsegmentamplitude} + } + } + \state{final}{} +} +\EndChemCompatibility + +% -------------------------------------------------------------------------- +\tex_endinput:D + +2015/10/26 - add decoration `wave' (complete sines) -- cgit v1.2.3