summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/chemmacros/chemmacros.module.polymers.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/chemmacros/chemmacros.module.polymers.code.tex')
-rw-r--r--Master/texmf-dist/tex/latex/chemmacros/chemmacros.module.polymers.code.tex166
1 files changed, 166 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/chemmacros/chemmacros.module.polymers.code.tex b/Master/texmf-dist/tex/latex/chemmacros/chemmacros.module.polymers.code.tex
new file mode 100644
index 00000000000..dc304d4ba55
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/chemmacros/chemmacros.module.polymers.code.tex
@@ -0,0 +1,166 @@
+% --------------------------------------------------------------------------
+%
+% the CHEMMACROS package -- module: `polymers'
+%
+% --------------------------------------------------------------------------
+% 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-2016 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{polymers}{2016/03/07 polymers}
+
+\chemmacros_load_modules:n {nomenclature,tikz}
+
+% --------------------------------------------------------------------------
+% copolymers
+\NewChemIUPAC \copolymer { \textit {co} }
+\LetChemIUPAC \co \copolymer
+
+\NewChemIUPAC \statistical { \textit {stat} }
+\LetChemIUPAC \stat \statistical
+
+\NewChemIUPAC \random { \textit {ran} }
+\LetChemIUPAC \ran \random
+
+\NewChemIUPAC \alternating { \textit {alt} }
+\LetChemIUPAC \alt \alternating
+
+\NewChemIUPAC \periodic { \textit {per} }
+\LetChemIUPAC \per \periodic
+
+\NewChemIUPAC \block { \textit {block} }
+\NewChemIUPAC \graft { \textit {graft} }
+
+% --------------------------------------------------------------------------
+% non-linear (co)polymers
+\NewChemIUPAC \blend { \textit {blend} }
+\NewChemIUPAC \comb { \textit {comb} }
+
+\NewChemIUPAC \complex { \textit {compl} }
+\LetChemIUPAC \compl \complex
+
+\NewChemIUPAC \cyclic { \textit {cyclo} }
+\LetChemIUPAC \cyclo \cyclic
+
+\NewChemIUPAC \branch { \textit {branch} }
+\NewChemIUPAC \network { \textit {net} }
+\LetChemIUPAC \net \network
+
+\NewChemIUPAC \ipnetwork { \textit {ipn} }
+\LetChemIUPAC \ipn \ipnetwork
+
+\NewChemIUPAC \sipnetwork { \textit {sipn} }
+\LetChemIUPAC \sipn \sipnetwork
+
+\NewChemIUPAC \star { \textit {star} }
+
+% --------------------------------------------------------------------------
+
+\tl_new:N \l__chemmacros_polymer_delimiter_left_tl
+\tl_new:N \l__chemmacros_polymer_delimiter_right_tl
+
+\tl_new:N \l__chemmacros_polymer_subscript_tl
+\tl_new:N \l__chemmacros_polymer_superscript_tl
+
+\dim_new:N \l__chemmacros_polymer_delimiter_height_dim
+\dim_new:N \l__chemmacros_polymer_delimiter_depth_dim
+
+\cs_new_protected:Npn \__chemmacros_set_polymer_delimiters:NN #1#2
+ {
+ \tl_set:Nn \l__chemmacros_polymer_delimiter_left_tl {#1}
+ \tl_set:Nn \l__chemmacros_polymer_delimiter_right_tl {#2}
+ }
+
+% #1: height
+% #2: depth
+% #3: opening node
+% #4: closing node
+% #5: subscript
+% #6: superscript
+\cs_new_protected:Npn \chemmacros_make_polymer_braces:nnnnnn #1#2#3#4#5#6
+ {
+ \dim_set:Nn \l__chemmacros_polymer_delimiter_height_dim { (#1+#2)/2 }
+ \dim_set:Nn \l__chemmacros_polymer_delimiter_depth_dim { (#1-#2)/2 }
+ \chemmacros_tikz_picture:nn {remember~ picture, overlay }
+ {
+ \chemmacros_tikz_node:n
+ { at = (#3) , yshift = \l__chemmacros_polymer_delimiter_depth_dim }
+ {
+ \c_math_toggle_token
+ \tex_left:D \l__chemmacros_polymer_delimiter_left_tl
+ \tex_vrule:D
+ height \l__chemmacros_polymer_delimiter_height_dim
+ depth \l__chemmacros_polymer_delimiter_height_dim
+ width \c_zero_dim
+ \tex_right:D .
+ \c_math_toggle_token
+ } ;
+ \chemmacros_tikz_node:n
+ { at = (#4) , yshift = \l__chemmacros_polymer_delimiter_depth_dim }
+ {
+ \c_math_toggle_token
+ \tex_left:D .
+ \tex_vrule:D
+ height \l__chemmacros_polymer_delimiter_height_dim
+ depth \l__chemmacros_polymer_delimiter_height_dim
+ width \c_zero_dim
+ \tex_right:D \l__chemmacros_polymer_delimiter_right_tl
+ \c_math_subscript_token { \hbox_overlap_right:n {#5} }
+ \c_math_superscript_token { \hbox_overlap_right:n {#6} }
+ \c_math_toggle_token
+ } ;
+ }
+ }
+\cs_generate_variant:Nn \chemmacros_make_polymer_braces:nnnnnn {nnnnVV}
+
+\chemmacros_define_keys:nn {polymers}
+ {
+ delimiters .code:n = \__chemmacros_set_polymer_delimiters:NN #1 ,
+ delimiters .initial:n = [] ,
+ superscript .tl_set:N = \l__chemmacros_polymer_superscript_tl ,
+ subscript .tl_set:N = \l__chemmacros_polymer_subscript_tl ,
+ subscript .initial:n = $n$
+ }
+
+\NewDocumentCommand \makepolymerdelims {O{}momm}
+ {
+ \group_begin:
+ \chemmacros_set_keys:nn {polymers} {#1}
+ \IfNoValueTF {#3}
+ {
+ \chemmacros_make_polymer_braces:nnnnVV {#2} {#2} {#4} {#5}
+ \l__chemmacros_polymer_subscript_tl
+ \l__chemmacros_polymer_superscript_tl
+ }
+ {
+ \chemmacros_make_polymer_braces:nnnnVV {#2} {#3} {#4} {#5}
+ \l__chemmacros_polymer_subscript_tl
+ \l__chemmacros_polymer_superscript_tl
+ }
+ \group_end:
+ }
+
+% --------------------------------------------------------------------------
+\tex_endinput:D
+
+2016/03/07 - first version
+2016/03/08 - \makepolymerdelims
+