Hello community,
here is the log from the commit of package texlive-specs-v for openSUSE:Factory checked in at 2019-07-13 13:40:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/texlive-specs-v (Old)
and /work/SRC/openSUSE:Factory/.texlive-specs-v.new.4615 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "texlive-specs-v"
Sat Jul 13 13:40:23 2019 rev:41 rq:708439 version:unknown
Changes:
--------
--- /work/SRC/openSUSE:Factory/texlive-specs-v/texlive-specs-v.changes 2018-08-02 14:53:33.515817130 +0200
+++ /work/SRC/openSUSE:Factory/.texlive-specs-v.new.4615/texlive-specs-v.changes 2019-07-13 13:54:38.603003529 +0200
@@ -1,0 +2,38 @@
+Wed May 29 06:37:37 UTC 2019 - Dr. Werner Fink
+
+- Correct /etc/texmf/web2c/texmf.cnf (boo#1136314)
+
+-------------------------------------------------------------------
+Fri May 10 13:04:02 UTC 2019 - Dr. Werner Fink
+
+- Update to TeXLive 2019
+- Modify patches
+ * kpathsea_cnf.dif
+ * latex2man_tmphandling.dif
+ * latexpand_perl.dif
+ * luaotfload_varfonts.dif
+ * luatex_cnf.dif
+ * musixtex_various.dif
+ * tetex_scripts.dif
+ * texdoc_cnf.dif
+- Drop obsolate patches
+ * tex4ht_env.dif
+ * texdraw_info.dif
+- Patch bbold_bbold11.dif move from texlive-specs-c.spec to
+ texlive-specs-b.spec
+- Patch context_fourier-map.dif move from texlive-specs-f.spec to
+ texlive-specs-e.spec
+- Will fix Bug boo#1131436:
+ texlive-fontawesome5 does not update updmap on install/uninstall
+
+-------------------------------------------------------------------
+Wed Feb 6 12:21:21 UTC 2019 - werner@suse.de
+
+- In texlive-ukrhyph-doc use en_GB instead of en_UK (boo#1123654)
+
+-------------------------------------------------------------------
+Wed Aug 1 10:59:12 UTC 2018 - werner@suse.de
+
+- Map many Language Description Files (ldf) to know hypen-packages (boo#1099475)
+
+-------------------------------------------------------------------
New:
----
srdp-mathematik.doc.tar.xz
srdp-mathematik.tar.xz
statistics.doc.tar.xz
statistics.tar.xz
stickstoo.doc.tar.xz
stickstoo.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ texlive-specs-v.spec ++++++
++++ 7360 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/texlive-specs-v/texlive-specs-v.spec
++++ and /work/SRC/openSUSE:Factory/.texlive-specs-v.new.4615/texlive-specs-v.spec
++++++ simplified-latex.doc.tar.xz ++++++
++++++ simurgh.doc.tar.xz ++++++
++++++ simurgh.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/simurgh.tlpobj new/tlpkg/tlpobj/simurgh.tlpobj
--- old/tlpkg/tlpobj/simurgh.tlpobj 2018-03-03 20:16:59.000000000 +0100
+++ new/tlpkg/tlpobj/simurgh.tlpobj 2019-02-28 04:05:33.000000000 +0100
@@ -78,8 +78,10 @@
RELOC/tex/lualatex/simurgh/simurgh-unibidi.lua
RELOC/tex/lualatex/simurgh/simurgh-unibidi.sty
RELOC/tex/lualatex/simurgh/simurgh.sty
+catalogue-contact-bugs https://github.com/bidi-tex/simurgh/issues
+catalogue-contact-repository https://github.com/bidi-tex/simurgh
catalogue-ctan /macros/luatex/latex/simurgh
-catalogue-date 2016-06-24 19:18:15 +0200
+catalogue-date 2018-11-28 21:04:36 +0100
catalogue-license gpl2
catalogue-topics persian luatex
catalogue-version 0.01b
++++++ sitem.doc.tar.xz ++++++
++++++ sitem.tar.xz ++++++
++++++ siunitx.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/siunitx/README.md new/doc/latex/siunitx/README.md
--- old/doc/latex/siunitx/README.md 2018-04-30 00:36:26.000000000 +0200
+++ new/doc/latex/siunitx/README.md 2018-05-03 23:02:51.000000000 +0200
@@ -1,5 +1,5 @@
siunitx - A comprehensive (SI) units package
-============================================
+==============================================
Physical quantities have both numbers and units, and each
physical quantity should be expressed as the product of a number
@@ -15,3 +15,41 @@
varying typographic conventions with the same input syntax. The
package includes automated processing of numbers and units, and
the ability to control tabular alignment of numbers.
+
+Installation
+------------
+
+The package is supplied in `dtx` format and as a pre-extracted
+zip file, `siunitx.tds.zip`. The later is most convenient for
+most users: simply unzip this in your local texmf directory . If
+you want to unpack the `.dtx` yourself, running `tex
+siunitx.dtx` will extract the package whereas `latex
+siunitx.dtx` will extract it and also typeset the documentation.
+
+The package requires LaTeX3 support as provided in the
+`l3kernel` and `l3packages` bundles. Both of these are available
+on [CTAN](http://www.ctan.org/) as ready-to-install zip files.
+Suitable versions are available in MiKTeX 2.9 and TeX Live 2015
+(updating the relevant packages online may be necessary).
+LaTeX3, and so `siunitx`, requires the e-TeX extensions: these
+are available on all modern TeX systems.
+
+Typesetting the documentation requires a number of packages in
+addition to those needed to use the package. This is mainly
+because of the number of demonstration items included in the
+text. To compile the documentation without error, you will
+need the packages:
+ - `amsmath`
+ - `booktabs`
+ - `cancel`
+ - `caption`
+ - `cleveref`
+ - `colortbl`
+ - `csquotes`
+ - `datatool`
+ - `helvet`
+ - `mathpazo`
+ - `multirow`
+ - `listings`
+ - `pgfplots`
+ - `xcolor`
\ No newline at end of file
Binary files old/doc/latex/siunitx/siunitx-code.pdf and new/doc/latex/siunitx/siunitx-code.pdf differ
Binary files old/doc/latex/siunitx/siunitx.pdf and new/doc/latex/siunitx/siunitx.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/siunitx.doc.tlpobj new/tlpkg/tlpobj/siunitx.doc.tlpobj
--- old/tlpkg/tlpobj/siunitx.doc.tlpobj 2018-04-30 02:24:59.000000000 +0200
+++ new/tlpkg/tlpobj/siunitx.doc.tlpobj 2019-02-28 04:05:35.000000000 +0100
@@ -1,9 +1,8 @@
name siunitx.doc
category Package
-revision 47489
+revision 47746
shortdesc doc files of siunitx
relocated 1
-docfiles size=367
+docfiles size=151
RELOC/doc/latex/siunitx/README.md
- RELOC/doc/latex/siunitx/siunitx-code.pdf
RELOC/doc/latex/siunitx/siunitx.pdf
++++++ siunitx.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/siunitx/siunitx.sty new/tex/latex/siunitx/siunitx.sty
--- old/tex/latex/siunitx/siunitx.sty 2018-04-30 00:36:26.000000000 +0200
+++ new/tex/latex/siunitx/siunitx.sty 2018-05-18 23:09:37.000000000 +0200
@@ -15,7 +15,7 @@
%%
\RequirePackage{expl3}[2015/09/11]
\RequirePackage{xparse}
-\ProvidesExplPackage {siunitx} {2018-04-27} {2.7n}
+\ProvidesExplPackage {siunitx} {2018/05/17} {2.7s}
{A comprehensive (SI) units package}
\@ifpackagelater { expl3 } { 2015/11/15 }
{ }
@@ -5545,27 +5545,30 @@
\AtBeginDocument {
\@ifpackageloaded { cellspace }
{
- \newcolumntype { C } [1]
- { > { \bcolumn #1 \@nil } #1 < { \ecolumn } }
- \cs_set:Npn \__siunitx_tmp:w #1 \NC@do S #2 \q_stop
- { \NC@list { #1 #2 } }
- \exp_after:wN \__siunitx_tmp:w \tex_the:D \NC@list \q_stop
- \cs_undefine:N \NC@find@S
- \msg_new:nnn { siunitx } { moved-cellspace-column }
- { Column~type~for~cellspace~package~moved~to~'#1'. }
- \msg_warning:nnn { siunitx } { moved-cellspace-column } { C }
- \ifcellspace@m
- \def \env@matrix
- {
- \hskip -\arraycolsep
- \let \@ifnextchar \new@ifnextchar
- \array
+ \cs_if_exist:NT \NC@find@S
+ {
+ \newcolumntype { C } [1]
+ { > { \bcolumn #1 \@nil } #1 < { \ecolumn } }
+ \cs_set:Npn \__siunitx_tmp:w #1 \NC@do S #2 \q_stop
+ { \NC@list { #1 #2 } }
+ \exp_after:wN \__siunitx_tmp:w \tex_the:D \NC@list \q_stop
+ \cs_undefine:N \NC@find@S
+ \msg_new:nnn { siunitx } { moved-cellspace-column }
+ { Column~type~for~cellspace~package~moved~to~'#1'. }
+ \msg_warning:nnn { siunitx } { moved-cellspace-column } { C }
+ \ifcellspace@m
+ \def \env@matrix
{
- * { \c@MaxMatrixCols }
- { > { \bcolumn c \@nil $ } c < { $ \ecolumn } } @ { }
+ \hskip -\arraycolsep
+ \let \@ifnextchar \new@ifnextchar
+ \array
+ {
+ * { \c@MaxMatrixCols }
+ { > { \bcolumn c \@nil $ } c < { $ \ecolumn } } @ { }
+ }
}
- }
- \fi
+ \fi
+ }
}
{ }
}
@@ -5613,10 +5616,13 @@
\bool_new:N \l__siunitx_table_math_bool
\bool_new:N \l__siunitx_table_collect_pre_bool
\bool_new:N \l__siunitx_table_collect_post_bool
-\cs_new_protected:Npn \__siunitx_table_collect_begin:Nn #1#2 {
- \keys_set:nn { siunitx } {#2}
- \use:c { __siunitx_table_collect_begin_ #1 : }
-}
+\cs_new_protected:Npn \__siunitx_table_collect_begin:Nn #1#2
+ {
+ \keys_set:nn { siunitx } {#2}
+ \__siunitx_table_collect_begin:Nw #1
+ }
+\cs_new_protected:Npn \__siunitx_table_collect_begin:Nw #1#2 \ignorespaces
+ { \use:c { __siunitx_table_collect_begin_ #1 : } #2 }
\cs_new_protected:Npn \__siunitx_table_collect_begin_s: {
\cs_set_eq:NN \__siunitx_table_collect_token:N
\__siunitx_table_collect_token_s:N
@@ -5632,7 +5638,7 @@
\__siunitx_detect_font:
\bool_if:NTF \l__siunitx_number_parse_bool
{ \__siunitx_table_collect_get: }
- { \__siunitx_table_print_S_direct:N }
+ { \__siunitx_table_print_S_direct: }
}
\cs_new_protected:Npn \__siunitx_table_collect_braced:n #1 { }
\cs_new_protected:Npn \__siunitx_table_collect_expand:N #1 {
@@ -5686,19 +5692,14 @@
}
}
}
-\cs_new_protected:Npn \__siunitx_table_collect_get: {
- \cs_set_eq:NN \__siunitx_table_collect_next:
- \__siunitx_table_collect_get:
- \cs_set:Npn \__peek_execute_branches:
- {
- \if_catcode:w \exp_not:N \l_peek_token \c_group_begin_token
- \exp_after:wN \__siunitx_table_collect_braced:n
- \else:
- \exp_after:wN \__siunitx_table_collect_not_braced:N
- \fi:
- }
- \peek_after:Nw \__peek_ignore_spaces_execute_branches:
-}
+\cs_new_protected:Npn \__siunitx_table_collect_get:
+ {
+ \cs_set_eq:NN \__siunitx_table_collect_next:
+ \__siunitx_table_collect_get:
+ \peek_catcode_ignore_spaces:NTF \c_group_begin_token
+ { \__siunitx_table_collect_braced:n }
+ { \__siunitx_table_collect_not_braced:N }
+ }
\cs_new_protected:Npn \__siunitx_table_collect_init: {
\tl_clear:N \l__siunitx_table_collect_tl
\tl_clear:N \l__siunitx_table_collect_pre_tl
@@ -6705,19 +6706,11 @@
- \box_wd:N \l__siunitx_tmp_box
}
}
-\cs_new_protected:Npn \__siunitx_table_print_S_direct:N #1
+\cs_new_protected:Npn \__siunitx_table_print_S_direct:
{
- #1
- \cs_set:Npn \__peek_execute_branches:
- {
- \if_catcode:w \exp_not:N \l_peek_token \c_group_begin_token
- \exp_after:wN \__siunitx_table_print_S_direct_text:n
- \else:
- \m@th
- \exp_after:wN \__siunitx_table_print_S_direct_main:
- \fi:
- }
- \peek_after:Nw \__peek_ignore_spaces_execute_branches:
+ \peek_catcode_ignore_spaces:NTF \c_group_begin_token
+ { \__siunitx_table_print_S_direct_text:n }
+ { \__siunitx_table_print_S_direct_main: }
}
\cs_new_protected:Npn \__siunitx_table_print_S_direct_text:n #1
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/siunitx.tlpobj new/tlpkg/tlpobj/siunitx.tlpobj
--- old/tlpkg/tlpobj/siunitx.tlpobj 2018-04-30 02:24:59.000000000 +0200
+++ new/tlpkg/tlpobj/siunitx.tlpobj 2019-02-28 04:05:35.000000000 +0100
@@ -1,6 +1,6 @@
name siunitx
category Package
-revision 47489
+revision 47746
shortdesc A comprehensive (SI) units package
relocated 1
longdesc Typesetting values with units requires care to ensure that the
@@ -28,8 +28,11 @@
RELOC/tex/latex/siunitx/siunitx-binary.cfg
RELOC/tex/latex/siunitx/siunitx-version-1.cfg
RELOC/tex/latex/siunitx/siunitx.sty
+catalogue-contact-bugs https://github.com/josephwright/siunitx/issues
+catalogue-contact-home https://www.texdev.net
+catalogue-contact-repository https://github.com/josephwright/siunitx
catalogue-ctan /macros/latex/contrib/siunitx
-catalogue-date 2018-04-27 13:35:01 +0200
+catalogue-date 2018-05-17 22:18:13 +0200
catalogue-license lppl1.3c
catalogue-topics units scientific-docs
-catalogue-version 2.7n
+catalogue-version 2.7s
++++++ skak.doc.tar.xz ++++++
++++++ skak.tar.xz ++++++
++++++ skaknew.doc.tar.xz ++++++
++++++ skaknew.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/skaknew.tlpobj new/tlpkg/tlpobj/skaknew.tlpobj
--- old/tlpkg/tlpobj/skaknew.tlpobj 2018-03-03 20:17:01.000000000 +0100
+++ new/tlpkg/tlpobj/skaknew.tlpobj 2019-02-28 04:05:36.000000000 +0100
@@ -38,6 +38,7 @@
RELOC/fonts/type1/public/skaknew/SkakNew-FigurineBold.inf
RELOC/fonts/type1/public/skaknew/SkakNew-FigurineBold.pfb
RELOC/fonts/type1/public/skaknew/SkakNew-FigurineBold.pfm
+catalogue-contact-home http://www.art-satz.de/portfolio/schriften.html
catalogue-ctan /fonts/chess/skaknew
catalogue-date 2017-04-18 05:31:40 +0200
catalogue-license lppl
++++++ skb.doc.tar.xz ++++++
++++++ skb.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/skb.tlpobj new/tlpkg/tlpobj/skb.tlpobj
--- old/tlpkg/tlpobj/skb.tlpobj 2018-03-03 20:17:02.000000000 +0100
+++ new/tlpkg/tlpobj/skb.tlpobj 2019-02-28 04:05:37.000000000 +0100
@@ -24,6 +24,7 @@
RELOC/tex/latex/skb/skblncsbeamer.cls
RELOC/tex/latex/skb/skblncsppt.cls
RELOC/tex/latex/skb/skbmoderncv.cls
+catalogue-contact-repository http://sourceforge.net/projects/latex-skb
catalogue-ctan /macros/latex/contrib/skb
catalogue-date 2017-04-18 05:31:40 +0200
catalogue-license lppl1.3
++++++ skdoc.doc.tar.xz ++++++
++++++ skdoc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/skdoc.tlpobj new/tlpkg/tlpobj/skdoc.tlpobj
--- old/tlpkg/tlpobj/skdoc.tlpobj 2018-05-01 02:23:52.000000000 +0200
+++ new/tlpkg/tlpobj/skdoc.tlpobj 2019-02-28 04:05:37.000000000 +0100
@@ -13,7 +13,7 @@
runfiles size=13
RELOC/tex/latex/skdoc/skdoc.cls
catalogue-ctan /macros/latex/contrib/skdoc
-catalogue-date 2018-04-19 05:31:40 +0200
+catalogue-date 2019-01-12 10:17:10 +0100
catalogue-license lppl1.3
-catalogue-topics doc-supp
+catalogue-topics doc-supp class
catalogue-version 1.5a
++++++ skeycommand.doc.tar.xz ++++++
++++++ skeycommand.tar.xz ++++++
++++++ skeyval.doc.tar.xz ++++++
++++++ skeyval.tar.xz ++++++
++++++ skmath.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/skmath/README new/doc/latex/skmath/README
--- old/doc/latex/skmath/README 2017-01-09 00:01:04.000000000 +0100
+++ new/doc/latex/skmath/README 2018-12-30 23:14:46.000000000 +0100
@@ -1,6 +1,6 @@
%% skmath improved math commands
%%
-%% Copyright (C) 2012-2016 by Simon Sigurdhsson
+%% Copyright (C) 2012-2019 by Simon Sigurdhsson
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -17,7 +17,7 @@
%% This work consists of the file skmath.tex
%% and the derived file skmath.sty.
-This is version 0.4b of the skmath package, a package which provides
+This is version 0.5 of the skmath package, a package which provides
improved and new math commands for superior typesetting with lower effort.
The following files are enclosed.
Binary files old/doc/latex/skmath/skmath.pdf and new/doc/latex/skmath/skmath.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/skmath.doc.tlpobj new/tlpkg/tlpobj/skmath.doc.tlpobj
--- old/tlpkg/tlpobj/skmath.doc.tlpobj 2018-03-03 20:17:03.000000000 +0100
+++ new/tlpkg/tlpobj/skmath.doc.tlpobj 2019-02-28 04:05:38.000000000 +0100
@@ -1,8 +1,8 @@
name skmath.doc
category Package
-revision 42902
+revision 49550
shortdesc doc files of skmath
relocated 1
-docfiles size=54
+docfiles size=71
RELOC/doc/latex/skmath/README
RELOC/doc/latex/skmath/skmath.pdf
++++++ skmath.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/skmath/skmath.sty new/tex/latex/skmath/skmath.sty
--- old/tex/latex/skmath/skmath.sty 2017-01-09 00:01:08.000000000 +0100
+++ new/tex/latex/skmath/skmath.sty 2018-12-30 23:14:46.000000000 +0100
@@ -1,7 +1,7 @@
%% This is file `skmath.sty', generated from `skmath.tex' (key `package').
%% skmath improved math commands
%%
-%% Copyright (C) 2012-2016 by Simon Sigurdhsson
+%% Copyright (C) 2012-2019 by Simon Sigurdhsson
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -20,7 +20,7 @@
\RequirePackage{expl3,l3keys2e,xparse}
\ProvidesExplPackage{skmath}
- {2017/01/08}{0.4b}{improved math commands}
+ {2018/12/29}{0.5}{improved math commands}
\PassOptionsToPackage{intlimits,sumlimits,namelimits}{amsmath}
\RequirePackage{amssymb,mathtools,xfrac}
\msg_new:nnnn{skmath}{undefined-macro}{The~macro~`\token_to_str:N#1'~was~undefined!}
@@ -36,6 +36,9 @@
\cs_gset_nopar:Npn\__skmath_imaginary_unit:n#1{
\msg_critical:nnn{skmath}{undefined-macro}{\__skmath_imaginary_unit:n}
}
+\cs_gset_nopar:Npn\__skmath_total_derivative_d:{
+ \msg_critical:nnn{skmath}{undefined-macro}{\__skmath_total_derivative_d:n}
+}
\keys_define:nn{skmath / internal}{
% More on this:
% * http://en.wikipedia.org/wiki/Typographical_conventions_in_mathematical_formu...
@@ -58,6 +61,10 @@
imaginary-unit / slanted .code:n = { \cs_gset_nopar:Npn\__skmath_imaginary_unit:n##1{{##1}} },
complex-part-symbols .bool_set_inverse:N = \g__skmath_iso_complex_parts_bool,
complex-part-symbols .value_required:n = true,
+ total-derivative-d .choice:,
+ total-derivative-d .value_required:n = true,
+ total-derivative-d / upright .code:n = { \cs_gset_nopar:Npn\__skmath_total_derivative_d:{{\operator@font d}} },
+ total-derivative-d / slanted .code:n = { \cs_gset_nopar:Npn\__skmath_total_derivative_d:{{d}} },
}
\keys_define:nn{skmath}{
commonsets .bool_set:N = \g__skmath_define_common_sets_bool,
@@ -71,6 +78,7 @@
natural-log = upright,
imaginary-unit = upright,
complex-part-symbols = false,
+ total-derivative-d = upright,
},
notation / german .meta:nn = {skmath / internal}{
integral-d = upright,
@@ -78,6 +86,7 @@
natural-log = slanted, %???
imaginary-unit = slanted, %???
complex-part-symbols = true, %???
+ total-derivative-d = upright, %???
},
notation / english .meta:nn = {skmath / internal}{
integral-d = slanted,
@@ -85,6 +94,7 @@
natural-log = slanted, %???
imaginary-unit = slanted, %???
complex-part-symbols = true, %???
+ total-derivative-d = slanted, %???
},
notation / legacy .meta:nn = {skmath / internal}{
integral-d = upright,
@@ -92,6 +102,7 @@
natural-log = slanted,
imaginary-unit = slanted,
complex-part-symbols = true,
+ total-derivative-d = slanted,
},
% Possibly more style sets... ?
notation .initial:n = legacy, % Or is it? Perhaps a legacy option is required.
@@ -231,6 +242,8 @@
{\ensuremath{\__skmath_log:\__skmath_parens:n{#2}}}
{\ensuremath{\__skmath_log:\c_math_subscript_token{#1}\__skmath_parens:n{#2}}}%
}
+ \DeclareDocumentCommand\ee{}{\ensuremath{\__skmath_natural_log_e:}}
+
\RenewDocumentCommand\exp{sm}{\ensuremath{
\IfBooleanTF{#1}{
\__skmath_exp:\__skmath_parens:n{#2}
@@ -369,6 +382,18 @@
\__skmath_pd_subscript_vars:n{#2}
}
}
+\cs_new_nopar:Npn\__skmath_td_fraction:nn#1#2{
+ \frac{
+ \__skmath_total_derivative_d:
+ \__skmath_pd_if_vars_sum_above_one:nT{#2}{
+ \c_math_superscript_token{\__skmath_pd_vars_sum:n{#2}}
+ }
+ {#1}
+ }{
+ \__skmath_total_derivative_d:
+ #2
+ }
+}
\AtBeginDocument{%
\DeclareDocumentCommand\bar{m}{%
\ensuremath{\mkern 1.5mu\overline{\mkern-1.5mu{#1}\mkern-1.5mu}\mkern 1.5mu}}
@@ -379,6 +404,11 @@
{\__skmath_pd_fraction:nn{#2}{#3}}
}
}
+\DeclareDocumentCommand\td{mm}{
+ \ensuremath{
+ \__skmath_td_fraction:nn{#1}{#2}
+ }
+}
\DeclareDocumentCommand\d{m}{\ensuremath{\,\__skmath_integral_d: #1%
\peek_meaning_ignore_spaces:NT\d{\!}}}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/skmath.tlpobj new/tlpkg/tlpobj/skmath.tlpobj
--- old/tlpkg/tlpobj/skmath.tlpobj 2018-03-03 20:17:03.000000000 +0100
+++ new/tlpkg/tlpobj/skmath.tlpobj 2019-02-28 04:05:38.000000000 +0100
@@ -1,6 +1,6 @@
name skmath
category Package
-revision 42902
+revision 49550
shortdesc Extensions to the maths command repertoir
relocated 1
longdesc The package provides a selection of new maths commands and
@@ -8,7 +8,7 @@
runfiles size=4
RELOC/tex/latex/skmath/skmath.sty
catalogue-ctan /macros/latex/contrib/skmath
-catalogue-date 2017-01-08 17:16:31 +0100
+catalogue-date 2018-12-29 23:02:23 +0100
catalogue-license lppl1.3
catalogue-topics maths
-catalogue-version 0.4b
+catalogue-version 0.5
++++++ skrapport.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/skrapport/README new/doc/latex/skrapport/README
--- old/doc/latex/skrapport/README 2017-09-14 23:08:31.000000000 +0200
+++ new/doc/latex/skrapport/README 2018-12-30 00:01:12.000000000 +0100
@@ -1,6 +1,6 @@
%% skrapport Skånings rapportklass
%%
-%% Copyright (C) 2012-2017 by Simon Sigurdhsson
+%% Copyright (C) 2012-2019 by Simon Sigurdhsson
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -26,7 +26,7 @@
%% * skrapport-size11pt.clo
%% * skrapport-size12pt.clo
-This is version 0.12h of the skrapport document class, intended for simple
+This is version 0.12i of the skrapport document class, intended for simple
reports submitted by the author at Chalmers University of Technology.
The following files are enclosed.
Binary files old/doc/latex/skrapport/skrapport.pdf and new/doc/latex/skrapport/skrapport.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/skrapport.doc.tlpobj new/tlpkg/tlpobj/skrapport.doc.tlpobj
--- old/tlpkg/tlpobj/skrapport.doc.tlpobj 2018-03-03 20:17:04.000000000 +0100
+++ new/tlpkg/tlpobj/skrapport.doc.tlpobj 2019-02-28 04:05:38.000000000 +0100
@@ -1,6 +1,6 @@
name skrapport.doc
category Package
-revision 45304
+revision 49540
shortdesc doc files of skrapport
relocated 1
docfiles size=67
++++++ skrapport.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/skrapport/skrapport.cls new/tex/latex/skrapport/skrapport.cls
--- old/tex/latex/skrapport/skrapport.cls 2017-09-14 23:08:31.000000000 +0200
+++ new/tex/latex/skrapport/skrapport.cls 2018-12-30 00:01:12.000000000 +0100
@@ -29,7 +29,7 @@
\RequirePackage{expl3,l3keys2e,xparse,xstring,etoolbox}
\ProvidesExplClass{skrapport}%
- {2017/09/14}{0.12h}{stylish report document class}
+ {2018/12/29}{0.12i}{stylish report document class}
\msg_new:nnnn{skrapport}{option-deprecated}{Option~`#1'~deprecated!}
{Please~use~`#2'~instead.}
\msg_new:nnnn{skrapport}{option-no-effect}{Option~`#1'~deprecated!}
@@ -1064,7 +1064,7 @@
#2
\hbox_set:Nn\l_tmpa_box{{\skip_horizontal:n{#1}#4}}
\dim_set:Nn\hangindent{#1+\box_wd:N\l_tmpa_box}
- \noindent\box_use_clear:N\l_tmpa_box
+ \noindent\box_use_drop:N\l_tmpa_box
\interlinepenalty\@M % !!!
#3
\group_end:
@@ -1337,7 +1337,7 @@
\global\@minipagefalse % !!!
\hbox_to_wd:nn{\hsize}{
\hfil
- \box_use_clear:N\l_tmpa_box
+ \box_use_drop:N\l_tmpa_box
\hfil
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/skrapport.tlpobj new/tlpkg/tlpobj/skrapport.tlpobj
--- old/tlpkg/tlpobj/skrapport.tlpobj 2018-03-03 20:17:04.000000000 +0100
+++ new/tlpkg/tlpobj/skrapport.tlpobj 2019-02-28 04:05:38.000000000 +0100
@@ -1,6 +1,6 @@
name skrapport
category Package
-revision 45304
+revision 49540
shortdesc 'Simple' class for reports, etc.
relocated 1
longdesc The class is intended for simple documents (e.g., reports
@@ -18,8 +18,10 @@
RELOC/tex/latex/skrapport/skrapport-size11pt.clo
RELOC/tex/latex/skrapport/skrapport-size12pt.clo
RELOC/tex/latex/skrapport/skrapport.cls
+catalogue-contact-bugs https://github.com/urdh/skrapport/issues
+catalogue-contact-repository https://github.com/urdh/skrapport
catalogue-ctan /macros/latex/contrib/skrapport
-catalogue-date 2017-09-14 09:48:59 +0200
+catalogue-date 2018-12-29 22:01:02 +0100
catalogue-license lppl1.3
catalogue-topics class
-catalogue-version 0.12h
+catalogue-version 0.12i
++++++ skull.tar.xz ++++++
++++++ slantsc.doc.tar.xz ++++++
++++++ slantsc.tar.xz ++++++
++++++ slideshow.doc.tar.xz ++++++
++++++ slideshow.tar.xz ++++++
++++++ smalltableof.doc.tar.xz ++++++
++++++ smalltableof.tar.xz ++++++
++++++ smartdiagram.doc.tar.xz ++++++
++++++ smartdiagram.tar.xz ++++++
++++++ smartref.doc.tar.xz ++++++
++++++ smartref.tar.xz ++++++
++++++ smartunits.doc.tar.xz ++++++
++++++ smartunits.tar.xz ++++++
++++++ snapshot.doc.tar.xz ++++++
++++++ snapshot.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/snapshot.tlpobj new/tlpkg/tlpobj/snapshot.tlpobj
--- old/tlpkg/tlpobj/snapshot.tlpobj 2018-03-03 20:17:05.000000000 +0100
+++ new/tlpkg/tlpobj/snapshot.tlpobj 2019-02-28 04:05:39.000000000 +0100
@@ -19,8 +19,9 @@
runfiles size=3
RELOC/tex/latex/snapshot/snapshot.sty
catalogue-also bundledoc
+catalogue-contact-home http://www.ams.org/publications/authors/tex/snapshot
catalogue-ctan /macros/latex/contrib/snapshot
-catalogue-date 2017-04-18 05:31:40 +0200
+catalogue-date 2018-04-11 14:09:31 +0200
catalogue-license lppl
catalogue-topics file-mgmt
catalogue-version 1.14
++++++ snotez.doc.tar.xz ++++++
++++++ snotez.tar.xz ++++++
++++++ songbook.doc.tar.xz ++++++
++++++ songbook.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/songbook.tlpobj new/tlpkg/tlpobj/songbook.tlpobj
--- old/tlpkg/tlpobj/songbook.tlpobj 2018-03-03 20:17:06.000000000 +0100
+++ new/tlpkg/tlpobj/songbook.tlpobj 2019-02-28 04:05:40.000000000 +0100
@@ -16,6 +16,7 @@
RELOC/makeindex/songbook/songbook.ist
RELOC/tex/latex/songbook/conditionals.sty
RELOC/tex/latex/songbook/songbook.sty
+catalogue-contact-home http://rath.ca/Misc/Songbook/
catalogue-ctan /macros/latex/contrib/songbook
catalogue-date 2017-04-18 05:31:40 +0200
catalogue-license lgpl2.1
++++++ songs.doc.tar.xz ++++++
++++++ songs.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/songs.tlpobj new/tlpkg/tlpobj/songs.tlpobj
--- old/tlpkg/tlpobj/songs.tlpobj 2018-03-03 20:17:07.000000000 +0100
+++ new/tlpkg/tlpobj/songs.tlpobj 2019-02-28 04:05:41.000000000 +0100
@@ -14,6 +14,8 @@
runfiles size=26
RELOC/tex/latex/songs/songs.sty
catalogue-also songbook
+catalogue-contact-home http://songs.sourceforge.net
+catalogue-contact-repository https://sourceforge.net/projects/songs
catalogue-ctan /macros/latex/contrib/songs
catalogue-date 2017-06-13 07:48:52 +0200
catalogue-license gpl2
++++++ sort-by-letters.doc.tar.xz ++++++
++++++ sort-by-letters.tar.xz ++++++
++++++ soton.doc.tar.xz ++++++
++++++ soton.tar.xz ++++++
++++++ soul.doc.tar.xz ++++++
++++++ soul.tar.xz ++++++
++++++ soup.doc.tar.xz ++++++
Binary files old/doc/latex/soup/soup.pdf and new/doc/latex/soup/soup.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/soup.doc.tlpobj new/tlpkg/tlpobj/soup.doc.tlpobj
--- old/tlpkg/tlpobj/soup.doc.tlpobj 2018-03-03 20:17:07.000000000 +0100
+++ new/tlpkg/tlpobj/soup.doc.tlpobj 2019-04-06 23:34:46.000000000 +0200
@@ -1,8 +1,8 @@
name soup.doc
category Package
-revision 42992
+revision 50815
shortdesc doc files of soup
relocated 1
-docfiles size=33
+docfiles size=30
RELOC/doc/latex/soup/README.md
RELOC/doc/latex/soup/soup.pdf
++++++ soup.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/soup/soup.sty new/tex/latex/soup/soup.sty
--- old/tex/latex/soup/soup.sty 2017-01-19 05:01:05.000000000 +0100
+++ new/tex/latex/soup/soup.sty 2019-04-06 23:12:54.000000000 +0200
@@ -18,7 +18,7 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{soup}[2017/01/15 v1.0 Package for word search puzzles.]
+\ProvidesPackage{soup}[2019/04/05 v1.0.2 Package for word search puzzles.]
\RequirePackage{xparse}
\RequirePackage{expl3}
\RequirePackage{l3keys2e}
@@ -77,7 +77,7 @@
\prop_new:N \g_soup_data_prop
\seq_new:N \g_soup_clue_seq
-\cs_new:Nn \__soup_init:oo {
+\cs_new:Nn \__soup_init:nn {
\clist_clear_new:N \g_soup_symbol_clist
\dim_gzero_new:N \g_soup_highlight_dim
\dim_gzero_new:N \g_soup_spacing_dim
@@ -171,19 +171,21 @@
\end{tikzpicture}
}
\cs_new:Nn \__soup_draw_soup_tabular: {
+ \dim_zero_new:N \l_soup_colwidth_dim
+ \exp_args:Nnx
+ \dim_set:Nn \l_soup_colwidth_dim {\fp_to_dim:n {0.45 * \textwidth / (\g_soup_columns_int + 1)}}
+
\dim_zero_new:N \l_soup_lineheight_dim
- \dim_set:Nn \l_soup_lineheight_dim {\g_soup_spacing_dim - \baselineskip}
+ \dim_set:Nn \l_soup_lineheight_dim {2\l_soup_colwidth_dim - \baselineskip}
+ \setlength{\tabcolsep}{\l_soup_colwidth_dim}
\vspace{0.25\g_soup_spacing_dim}\par
- \noindent\fbox{\parbox[c][
- \g_soup_rows_int\g_soup_spacing_dim
- ][c]{\g_soup_columns_int\g_soup_spacing_dim}{
- \begin{tabular*}{
- \g_soup_columns_int\g_soup_spacing_dim
- }{
+ \noindent
+ \begin{tabular*}{\textwidth}{
@{\extracolsep{\fill}}
- *{\g_soup_columns_int}{c}
+ | *{\g_soup_columns_int}{c@{\hskip\l_soup_colwidth_dim}} |
}
+ \hline\rule{0pt}{\g_soup_spacing_dim}
\int_step_inline:nnnn {1} {1} {\g_soup_rows_int } {
\int_gset:Nn \g_tmpa_int {##1}
\int_step_variable:nnnNn {1} {1} {\g_soup_columns_int} \l_tmpb_int {
@@ -207,11 +209,9 @@
\int_compare:nNnTF \g_tmpa_int < \g_soup_rows_int {
\\[\l_soup_lineheight_dim]
}{
+ \\[\l_soup_lineheight_dim]\hline\end{tabular*}
}
}
- \end{tabular*}
- }
- }
}
\cs_new:Nn \__soup_show_random_symbol: {
\int_compare:nNnTF \g_soup_symbol_count_int = 0 {
@@ -350,7 +350,7 @@
\NewDocumentEnvironment{alphabetsoup}{ sO{15}oo }
{
\par\noindent
- \__soup_init:oo {#2}{#3}
+ \__soup_init:nn {#2}{#3}
\IfBooleanTF{#1}{
\def\showlist{}
}{
@@ -376,7 +376,7 @@
\NewDocumentEnvironment{Alphabetsoup}{ sO{15}oo }
{
\par\noindent
- \__soup_init:oo {#2}{#3}
+ \__soup_init:nn {#2}{#3}
\IfBooleanTF{#1}{
\def\showlist{}
}{
@@ -402,7 +402,7 @@
\NewDocumentEnvironment{homemadesoup}{ sO{15}omo }
{
\par\noindent
- \__soup_init:oo {#2}{#3}
+ \__soup_init:nn {#2}{#3}
\IfBooleanTF{#1}{
\def\showlist{}
}{
@@ -429,7 +429,7 @@
\NewDocumentEnvironment{numbersoup}{ sO{15}omO{0}o }
{
\par\noindent
- \__soup_init:oo{#2}{#3}
+ \__soup_init:nn{#2}{#3}
\IfBooleanTF{#1}{
\def\showlist{}
}{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/soup.tlpobj new/tlpkg/tlpobj/soup.tlpobj
--- old/tlpkg/tlpobj/soup.tlpobj 2018-03-03 20:17:07.000000000 +0100
+++ new/tlpkg/tlpobj/soup.tlpobj 2019-04-06 23:34:46.000000000 +0200
@@ -1,6 +1,6 @@
name soup
category Package
-revision 42992
+revision 50815
shortdesc Generate alphabet soup puzzles
relocated 1
longdesc Generate alphabet soup puzzles (aka word search puzzles), and
@@ -11,7 +11,7 @@
runfiles size=4
RELOC/tex/latex/soup/soup.sty
catalogue-ctan /macros/latex/contrib/soup
-catalogue-date 2017-01-20 06:07:11 +0100
+catalogue-date 2019-04-06 06:01:50 +0200
catalogue-license lppl1.3
catalogue-topics cwpuzzle games puzzle
-catalogue-version 1.0
+catalogue-version 1.0.2
++++++ sourcecodepro.doc.tar.xz ++++++
++++++ sourcecodepro.tar.xz ++++++
++++++ sourcesanspro.doc.tar.xz ++++++
++++++ sourcesanspro.tar.xz ++++++
++++++ sourceserifpro.doc.tar.xz ++++++
Binary files old/doc/latex/sourceserifpro/sourceserifpro-otf-specimen.pdf and new/doc/latex/sourceserifpro/sourceserifpro-otf-specimen.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/sourceserifpro/sourceserifpro-otf-specimen.tex new/doc/latex/sourceserifpro/sourceserifpro-otf-specimen.tex
--- old/doc/latex/sourceserifpro/sourceserifpro-otf-specimen.tex 2016-11-25 19:30:06.000000000 +0100
+++ new/doc/latex/sourceserifpro/sourceserifpro-otf-specimen.tex 2018-11-10 23:17:02.000000000 +0100
@@ -3,26 +3,27 @@
\usepackage[opentype]{sourceserifpro}
\newcommand*\spA{abcde}
\newcommand*\spB{01469}
-\newcommand*\spr[1][\spA]{& #1 & #1 & #1 & #1 & #1 & #1\\}
+\newcommand*\spr[1][\spA]{& #1 & #1 & #1 & #1 & #1 & #1 & #1\\}
\begin{document}
\begin{tabular}{
>{\sourceserifpro}l
+ >{}c
>{\sourceserifproextreme}c
>{\sourceserifprolight}c
>{\sourceserifpro}c
>{\sourceserifprolight\bfseries}c
>{\sourceserifpro\bfseries}c
>{\sourceserifproextreme\bfseries}c }
- & ExtraLight & Light & Regular & Semibold & Bold & Black \\
+ & Default & ExtraLight & Light & Regular & Semibold & Bold & Black \\
normal \spr
-% italic \spr[\itshape\spA]
-% small-caps \spr[\scshape\spA]
+ italic \spr[\itshape\spA]
+ small-caps \spr[\scshape\spA]
capitals \spr[\MakeUppercase\spA]
lining \spr[\spB]
-% lining italic \spr[\itshape\spB]
-% lining small-caps \spr[\scshape\spB]
+ lining italic \spr[\itshape\spB]
+ lining small-caps \spr[\scshape\spB]
old-style \spr[\oldstylenums{\spB}]
-% old-style italic \spr[\oldstylenums{\itshape \spB}]
-% old-style small-caps \spr[\oldstylenums{\scshape\spB}]
+ old-style italic \spr[\oldstylenums{\itshape \spB}]
+ old-style small-caps \spr[\oldstylenums{\scshape\spB}]
\end{tabular}
-\end{document}
\ No newline at end of file
+\end{document}
Binary files old/doc/latex/sourceserifpro/sourceserifpro-type1-specimen.pdf and new/doc/latex/sourceserifpro/sourceserifpro-type1-specimen.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/sourceserifpro/sourceserifpro-type1-specimen.tex new/doc/latex/sourceserifpro/sourceserifpro-type1-specimen.tex
--- old/doc/latex/sourceserifpro/sourceserifpro-type1-specimen.tex 2016-11-25 19:30:06.000000000 +0100
+++ new/doc/latex/sourceserifpro/sourceserifpro-type1-specimen.tex 2018-11-10 23:17:02.000000000 +0100
@@ -3,26 +3,27 @@
\usepackage[type1]{sourceserifpro}
\newcommand*\spA{abcde}
\newcommand*\spB{01469}
-\newcommand*\spr[1][\spA]{& #1 & #1 & #1 & #1 & #1 & #1\\}
+\newcommand*\spr[1][\spA]{& #1 & #1 & #1 & #1 & #1 & #1 & #1\\}
\begin{document}
\begin{tabular}{
- l
+ l
+ >{}c
>{\fontseries{el}\fontshape{n}\selectfont}c
>{\fontseries{l}\fontshape{n}\selectfont}c
>{\fontseries{m}\fontshape{n}\selectfont}c
>{\fontseries{sb}\fontshape{n}\selectfont}c
>{\fontseries{b}\fontshape{n}\selectfont}c
>{\fontseries{k}\fontshape{n}\selectfont}c }
- & ExtraLight & Light & Regular & Semibold & Bold & Black \\
+ & Default & ExtraLight & Light & Regular & Semibold & Bold & Black \\
normal \spr
-% italic \spr[\itshape\spA]
-% small-caps \spr[\scshape\spA]
+ italic \spr[\itshape\spA]
+ small-caps \spr[\scshape\spA]
capitals \spr[\MakeUppercase\spA]
lining \spr[\spB]
-% lining italic \spr[\itshape\spB]
-% lining small-caps \spr[\scshape\spB]
+ lining italic \spr[\itshape\spB]
+ lining small-caps \spr[\scshape\spB]
old-style \spr[\oldstylenums{\spB}]
-% old-style italic \spr[\oldstylenums{\itshape \spB}]
-% old-style small-caps \spr[\oldstylenums{\scshape\spB}]
+ old-style italic \spr[\oldstylenums{\itshape \spB}]
+ old-style small-caps \spr[\oldstylenums{\scshape\spB}]
\end{tabular}
-\end{document}
\ No newline at end of file
+\end{document}
Binary files old/doc/latex/sourceserifpro/sourceserifpro.pdf and new/doc/latex/sourceserifpro/sourceserifpro.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/sourceserifpro/sourceserifpro.tex new/doc/latex/sourceserifpro/sourceserifpro.tex
--- old/doc/latex/sourceserifpro/sourceserifpro.tex 2016-11-25 19:30:06.000000000 +0100
+++ new/doc/latex/sourceserifpro/sourceserifpro.tex 2018-11-10 23:17:02.000000000 +0100
@@ -18,7 +18,7 @@
}
\author{Silke Hofstra, \href{mailto:tex@slxh.nl}{tex@slxh.nl}}
-\date{Documentation for sourceserifpro v1.2.\\ \today}
+\date{Documentation for sourceserifpro v1.4.\\ \today}
\begin{document}
\maketitle
@@ -75,11 +75,17 @@
\subsection{Files}
\begin{itemize*}
\item SourceSerifPro-Black.otf
- \item SourceSerifPro-ExtraLight.otf
- \item SourceSerifPro-Regular.otf
+ \item SourceSerifPro-BlackIt.otf
\item SourceSerifPro-Bold.otf
+ \item SourceSerifPro-BoldIt.otf
+ \item SourceSerifPro-ExtraLight.otf
+ \item SourceSerifPro-ExtraLightIt.otf
\item SourceSerifPro-Light.otf
+ \item SourceSerifPro-LightIt.otf
+ \item SourceSerifPro-Regular.otf
+ \item SourceSerifPro-RegularIt.otf
\item SourceSerifPro-Semibold.otf
+ \item SourceSerifPro-SemiboldIt.otf
\end{itemize*}
\section{Type1}
@@ -90,9 +96,21 @@
\item SourceSerifPro-OsF
\item SourceSerifPro-TOsF
\end{itemize*}
-With series ‘el’, ‘l’, ‘m’, ‘sb’, ‘b’, ‘k’ and shape ‘n’.
+With series ‘el’, ‘l’, ‘m’, ‘sb’, ‘b’, ‘k’ and shape ‘n’, ‘i’ and ‘sc’.
\section{Version history}
+\subsection*{1.4}
+\begin{itemize*}
+ \item Fix OpenType italics
+\end{itemize*}
+
+\subsection*{1.3}
+\begin{itemize*}
+ \item Update fonts to 2.007R-ro/1.007R-it
+ \item Add small caps (Github issue \#2)
+ \item Add italics (Github issue \#3)
+\end{itemize*}
+
\subsection*{1.2}
\begin{itemize*}
\item Fixed unimplemented weights (Github issue \#1)
@@ -140,18 +158,23 @@
\centering
\begin{tabular}{>{\ttfamily}l l}
aalt & Access All Alternates \\
+ c2sc & Small Capitals From Capitals \\
case & Case-Sensitive Forms \\
+ ccmp & Glyph Composition/Decomposition \\
dnom & Denominators \\
frac & Fractions \\
kern & Kerning \\
liga & Standard Ligatures \\
lnum & Lining Figures \\
+ mark & Mark Positioning \\
+ mkmk & Mark to Mark Positioning \\
numr & Numerators \\
onum & Oldstyle Figures \\
ordn & Ordinals \\
pnum & Proportional Figures \\
sinf & Scientific Inferiors \\
size & Optical Size \\
+ smcp & Small Capitals \\
subs & Subscript \\
sups & Superscript \\
tnum & Tabular Figures \\
@@ -161,4 +184,3 @@
\textit{(list generated with otfinfo)}
\end{document}
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/sourceserifpro.doc.tlpobj new/tlpkg/tlpobj/sourceserifpro.doc.tlpobj
--- old/tlpkg/tlpobj/sourceserifpro.doc.tlpobj 2018-03-03 20:17:14.000000000 +0100
+++ new/tlpkg/tlpobj/sourceserifpro.doc.tlpobj 2019-02-28 04:05:48.000000000 +0100
@@ -1,9 +1,9 @@
name sourceserifpro.doc
category Package
-revision 40598
+revision 49120
shortdesc doc files of sourceserifpro
relocated 1
-docfiles size=35
+docfiles size=261
RELOC/doc/latex/sourceserifpro/LICENSE.txt
RELOC/doc/latex/sourceserifpro/sourceserifpro-otf-specimen.pdf
RELOC/doc/latex/sourceserifpro/sourceserifpro-otf-specimen.tex
++++++ sourceserifpro.tar.xz ++++++
++++ 11559 lines of diff (skipped)
++++++ spalign.doc.tar.xz ++++++
++++++ spalign.tar.xz ++++++
++++++ spanish-mx.doc.tar.xz ++++++
++++++ spanish-mx.tar.xz ++++++
++++++ spark-otf.doc.tar.xz ++++++
++++++ spark-otf.tar.xz ++++++
++++++ sparklines.doc.tar.xz ++++++
++++++ sparklines.tar.xz ++++++
++++++ spath3.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/spath3/README.txt new/doc/latex/spath3/README.txt
--- old/doc/latex/spath3/README.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/doc/latex/spath3/README.txt 2019-02-13 23:22:09.000000000 +0100
@@ -0,0 +1,9 @@
+----------------------------------------------------------------
+spath3 --- LaTeX3 functions for manipulating PGF soft paths
+E-mail: stacey@math.ntnu.no
+Released under the LaTeX Project Public License v1.3c or later
+See http://www.latex-project.org/lppl.txt
+----------------------------------------------------------------
+
+This package defines some functions used to manipulate PGFs soft paths.
+As applications of its use, included are a package for drawing calligraphic paths and a package for drawing knot diagrams.
Binary files old/doc/latex/spath3/calligraphy.pdf and new/doc/latex/spath3/calligraphy.pdf differ
Binary files old/doc/latex/spath3/calligraphy_doc.pdf and new/doc/latex/spath3/calligraphy_doc.pdf differ
Binary files old/doc/latex/spath3/knots.pdf and new/doc/latex/spath3/knots.pdf differ
Binary files old/doc/latex/spath3/knots_doc.pdf and new/doc/latex/spath3/knots_doc.pdf differ
Binary files old/doc/latex/spath3/spath3_code.pdf and new/doc/latex/spath3/spath3_code.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/spath3.doc.tlpobj new/tlpkg/tlpobj/spath3.doc.tlpobj
--- old/tlpkg/tlpobj/spath3.doc.tlpobj 2018-03-03 20:17:16.000000000 +0100
+++ new/tlpkg/tlpobj/spath3.doc.tlpobj 2019-02-28 04:05:54.000000000 +0100
@@ -1,12 +1,13 @@
name spath3.doc
category Package
-revision 39794
+revision 50018
shortdesc doc files of spath3
relocated 1
-docfiles size=277
+docfiles size=285
RELOC/doc/latex/spath3/README
- RELOC/doc/latex/spath3/calligraphy.pdf
+ RELOC/doc/latex/spath3/README.txt
+ RELOC/doc/latex/spath3/calligraphy_doc.pdf
RELOC/doc/latex/spath3/calligraphy_doc.tex
- RELOC/doc/latex/spath3/knots.pdf
+ RELOC/doc/latex/spath3/knots_doc.pdf
RELOC/doc/latex/spath3/knots_doc.tex
RELOC/doc/latex/spath3/spath3_code.pdf
++++++ spath3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/spath3/spath3.sty new/tex/latex/spath3/spath3.sty
--- old/tex/latex/spath3/spath3.sty 2016-11-25 19:33:59.000000000 +0100
+++ new/tex/latex/spath3/spath3.sty 2019-02-13 23:22:09.000000000 +0100
@@ -15,7 +15,7 @@
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\RequirePackage{pgf}
-\ProvidesExplPackage {spath3} {2016/02/19} {1.1} {Functions for
+\ProvidesExplPackage {spath3} {2019/02/12} {1.2} {Functions for
manipulating PGF soft paths}
\RequirePackage{xparse}
\tl_new:N \l__spath_tmpa_tl
@@ -28,6 +28,7 @@
\fp_new:N \l__spath_tmpa_fp
\fp_new:N \l__spath_tmpb_fp
\int_new:N \l__spath_tmpa_int
+\int_new:N \g__spath_map_int
\tl_new:N \g__spath_moveto_tl
\tl_new:N \g__spath_lineto_tl
\tl_new:N \g__spath_curveto_tl
@@ -194,7 +195,7 @@
}
\__spath_get:nnN {#1} {#2} #3
}
-\cs_generate_variant:Nn \spath_get:nnN {nnV,VnN,VnV}
+\cs_generate_variant:Nn \spath_get:nnN {VnN}
\cs_new_nopar:Npn \spath_generate_length:n #1
{
\__spath_get:nnN {#1} {path} \l__spath_tmpa_tl
@@ -1158,8 +1159,8 @@
}
\cs_new_nopar:Npn \spath_map_component:Nn #1#2
{
- \int_gincr:N \g__prg_map_int
- \cs_gset:cpn { __prg_map_ \int_use:N \g__prg_map_int :w } ##1 {#2}
+ \int_gincr:N \g__spath_map_int
+ \cs_gset:cpn { __spath_map_ \int_use:N \g__spath_map_int :w } ##1 {#2}
\tl_set:NV \l__spath_tmpa_tl #1
\tl_set:Nx \l__spath_tmpa_tl {\tl_tail:N \l__spath_tmpa_tl}
\tl_put_right:NV \l__spath_tmpa_tl \g__spath_moveto_tl
@@ -1171,7 +1172,7 @@
\tl_set:Nx \l__spath_tmpc_tl {\tl_head:N \l__spath_tmpa_tl}
\tl_if_eq:NNT \l__spath_tmpc_tl \g__spath_moveto_tl
{
- \exp_args:NnV \use:c { __prg_map_ \int_use:N \g__prg_map_int :w } \l__spath_tmpb_tl
+ \exp_args:NnV \use:c { __spath_map_ \int_use:N \g__spath_map_int :w } \l__spath_tmpb_tl
\tl_clear:N \l__spath_tmpb_tl
}
\tl_if_single:NTF \l__spath_tmpc_tl
@@ -1186,16 +1187,16 @@
}
\cs_new_nopar:Npn \spath_map_segment_inline:Nn #1#2
{
- \int_gincr:N \g__prg_map_int
- \cs_gset:cpn { __prg_map_ \int_use:N \g__prg_map_int :w } ##1 ##2 {#2}
- \spath_map_segment_function:Nc #1 { __prg_map_ \int_use:N \g__prg_map_int :w }
+ \int_gincr:N \g__spath_map_int
+ \cs_gset:cpn { __spath_map_ \int_use:N \g__spath_map_int :w } ##1 ##2 {#2}
+ \spath_map_segment_function:Nc #1 { __spath_map_ \int_use:N \g__spath_map_int :w }
}
\cs_new_nopar:Npn \spath_map_segment_inline:nn #1#2
{
- \int_gincr:N \g__prg_map_int
- \cs_gset:cpn { __prg_map_ \int_use:N \g__prg_map_int :w } ##1 ##2 {#2}
+ \int_gincr:N \g__spath_map_int
+ \cs_gset:cpn { __spath_map_ \int_use:N \g__spath_map_int :w } ##1 ##2 {#2}
\spath_get:nnN {#1} {path} \l__spath_tmpd_tl
- \spath_map_segment_function:Nc \l__spath_tmpd_tl { __prg_map_ \int_use:N \g__prg_map_int :w }
+ \spath_map_segment_function:Nc \l__spath_tmpd_tl { __spath_map_ \int_use:N \g__spath_map_int :w }
}
\cs_new_nopar:Npn \spath_map_segment_function:nN #1#2
{
@@ -1265,6 +1266,27 @@
\tl_set:Nx \l__spath_tmpa_tl {\tl_tail:N \l__spath_tmpa_tl}
}
+
+ \g__spath_closepath_tl
+ {
+ \tl_set_eq:NN \l__spath_tmpb_tl \g__spath_moveto_tl
+ \tl_put_right:Nx \l__spath_tmpb_tl
+ {
+ {\dim_use:N \l__spath_tmpa_dim}
+ {\dim_use:N \l__spath_tmpb_dim}
+ }
+ \tl_put_right:NV \l__spath_tmpb_tl \g__spath_lineto_tl
+
+ \tl_put_right:Nx \l__spath_tmpb_tl {{\tl_head:N \l__spath_tmpa_tl}}
+ \dim_set:Nn \l__spath_tmpa_dim {\tl_head:N \l__spath_tmpa_tl}
+ \tl_set:Nx \l__spath_tmpa_tl {\tl_tail:N \l__spath_tmpa_tl}
+
+ \tl_put_right:Nx \l__spath_tmpb_tl {{\tl_head:N \l__spath_tmpa_tl}}
+ \dim_set:Nn \l__spath_tmpb_dim {\tl_head:N \l__spath_tmpa_tl}
+ \tl_set:Nx \l__spath_tmpa_tl {\tl_tail:N \l__spath_tmpa_tl}
+
+ }
+
}
{
@@ -1322,8 +1344,8 @@
}
\NewDocumentCommand \SPathInfoInto { m m m }
{
- \tl_set:Nn \l_tmpa_tl #3
- \spath_get:nnV {#1} {#2} \l_tmpa_tl
+ \tl_clear_new:N #3
+ \spath_get:nnN {#1} {#2} #3
}
\NewDocumentCommand \SPathShow { m }
{
@@ -1372,8 +1394,8 @@
\tl_gclear:N \l__spath_smuggle_tl
\tl_set_eq:NN \l__spath_tmpa_tl \g__spath_moveto_tl
\tl_put_right:Nx \l__spath_tmpa_tl {
+ {\tl_item:nn {#2} {2}}
{\tl_item:nn {#2} {3}}
- {\tl_item:nn {#2} {4}}
}
\tl_put_right:NV \l__spath_tmpa_tl \g__spath_curvetoa_tl
\tl_put_right:Nx \l__spath_tmpa_tl
@@ -1463,7 +1485,7 @@
\cs_generate_variant:Nn \spath_split_curve:nnNN {nVNN, VVNN}
%%
-%% Copyright (C) 2011 by Andrew Stacey
+%% Copyright (C) 2011-2019 by Andrew Stacey
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -1477,15 +1499,15 @@
%%
%% This work consists of the files spath3.dtx
%% calligraphy_doc.tex
-%% knot_doc.tex
+%% knots_doc.tex
%% and the derived files spath3.ins,
-%% spath3.pdf,
+%% spath3_code.pdf,
%% spath3.sty,
%% tikzlibrarycalligraphy.code.tex
%% tikzlibraryknots.code.tex
-%% calligraphy_doc.pdf
-%% knots_doc.pdf
-%% README.txt
+%% calligraphy.pdf
+%% knots.pdf
+%% README
%%
%%
%% End of file `spath3.sty'.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/spath3/tikzlibrarycalligraphy.code.tex new/tex/latex/spath3/tikzlibrarycalligraphy.code.tex
--- old/tex/latex/spath3/tikzlibrarycalligraphy.code.tex 2016-11-25 19:33:59.000000000 +0100
+++ new/tex/latex/spath3/tikzlibrarycalligraphy.code.tex 2019-02-13 23:22:09.000000000 +0100
@@ -806,7 +806,7 @@
}
\fi
%%
-%% Copyright (C) 2011 by Andrew Stacey
+%% Copyright (C) 2011-2019 by Andrew Stacey
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -820,15 +820,15 @@
%%
%% This work consists of the files spath3.dtx
%% calligraphy_doc.tex
-%% knot_doc.tex
+%% knots_doc.tex
%% and the derived files spath3.ins,
-%% spath3.pdf,
+%% spath3_code.pdf,
%% spath3.sty,
%% tikzlibrarycalligraphy.code.tex
%% tikzlibraryknots.code.tex
-%% calligraphy_doc.pdf
-%% knots_doc.pdf
-%% README.txt
+%% calligraphy.pdf
+%% knots.pdf
+%% README
%%
%%
%% End of file `tikzlibrarycalligraphy.code.tex'.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/spath3/tikzlibraryknots.code.tex new/tex/latex/spath3/tikzlibraryknots.code.tex
--- old/tex/latex/spath3/tikzlibraryknots.code.tex 2016-11-25 19:33:59.000000000 +0100
+++ new/tex/latex/spath3/tikzlibraryknots.code.tex 2019-02-13 23:22:09.000000000 +0100
@@ -29,6 +29,8 @@
\tl_new:N \l__knot_clip_width_tl
\tl_new:N \l__knot_name_tl
\tl_new:N \l__knot_node_tl
+\tl_new:N \l__knot_aux_tl
+\tl_new:N \l__knot_auxa_tl
\int_new:N \l__knot_tmpa_int
\int_new:N \l__knot_strands_int
@@ -40,7 +42,8 @@
\dim_new:N \l__knot_tmpb_dim
\dim_new:N \l__knot_tmpc_dim
\dim_new:N \l__knot_tolerance_dim
-\dim_new:N \l__knot_clip_radius_dim
+\dim_new:N \l__knot_clip_bg_radius_dim
+\dim_new:N \l__knot_clip_draw_radius_dim
\bool_new:N \l__knot_draft_bool
\bool_new:N \l__knot_ignore_ends_bool
@@ -51,6 +54,9 @@
\bool_new:N \l__knot_prepend_prev_bool
\bool_new:N \l__knot_append_next_bool
\bool_new:N \l__knot_skip_bool
+\bool_new:N \l__knot_save_bool
+
+\seq_new:N \l__knot_nodes_seq
\bool_set_true:N \l__knot_ignore_ends_bool
\tikzset{
@@ -94,8 +100,16 @@
},
background~ colour=white,
knot~ diagram,
- name/.store~in=\l__knot_name_tl,
+ name/.store~ in=\l__knot_name_tl,
name={knot},
+ save~ intersections/.is~ choice,
+ save~ intersections/.default=true,
+ save~ intersections/true/.code={
+ \bool_set_true:N \l__knot_save_bool
+ },
+ save~ intersections/false/.code={
+ \bool_set_false:N \l__knot_save_bool
+ },
every~ strand/.style={draw},
ignore~ endpoint~ intersections/.code={
\tl_if_eq:nnTF {#1} {true}
@@ -122,13 +136,26 @@
},
consider~ self~ intersections/.default={true},
clip~ radius/.code={
- \dim_set:Nn \l__knot_clip_radius_dim {#1}
+ \dim_set:Nn \l__knot_clip_bg_radius_dim {#1}
+ \dim_set:Nn \l__knot_clip_draw_radius_dim {#1+2pt}
+ },
+ clip~ draw~ radius/.code={
+ \dim_set:Nn \l__knot_clip_draw_radius_dim {#1}
+ },
+ clip~ background~ radius/.code={
+ \dim_set:Nn \l__knot_clip_bg_radius_dim {#1}
},
clip~ radius=10pt,
end~ tolerance/.code={
\dim_set:Nn \l__knot_tolerance_dim {#1}
},
end~ tolerance=14pt,
+ clip/.style={
+ clip
+ },
+ background~ clip/.style={
+ clip
+ },
clip~ width/.code={
\tl_set:Nn \l__knot_clip_width_tl {#1}
},
@@ -137,6 +164,10 @@
\tl_clear_new:c {l__knot_crossing_#1}
\tl_set:cn {l__knot_crossing_#1} {x}
},
+ ignore~ crossing/.code={%
+ \tl_clear_new:c {l__knot_ignore_crossing_#1}
+ \tl_set:cn {l__knot_ignore_crossing_#1} {x}
+ },
draft~ mode/.is~ choice,
draft~ mode/off/.code={%
\bool_set_false:N \l__knot_draft_bool
@@ -201,6 +232,7 @@
\tikzset{knot~ diagram/.cd,every~ knot~ diagram/.try,#1}
\int_zero:N \l__knot_strands_int
\tl_clear:N \l__knot_redraws_tl
+ \seq_gclear:N \l__knot_nodes_seq
}
\cs_new_protected_nopar:Npn \knot_render:
{
@@ -223,11 +255,14 @@
\int_gzero:N \l__knot_intersections_int
\bool_if:NTF \l__knot_draft_bool
{
- \tl_set:Nn \l__knot_node_tl
- {\node[coordinate,pin={[knot~ diagram/draft/crossing~ label]{\int_use:N \l__knot_intersections_int}}]}
+ \tl_set:Nn \l__knot_node_tl {
+ \exp_not:N \node[coordinate,
+ pin={[node~ contents={\int_use:N \l__knot_intersections_int},knot~ diagram/draft/crossing~ label, knot~ diagram/draft/crossing~ \int_use:N \l__knot_intersections_int \c_space_tl label/.try]
+ }]
+ }
}
{
- \tl_set:Nn \l__knot_node_tl {\node[coordinate]}
+ \tl_set:Nn \l__knot_node_tl {\exp_not:N \node[coordinate]}
}
\int_step_variable:nnnNn {1} {1} {\l__knot_tmpa_int - 1} \l__knot_tmpa_tl
{
@@ -237,6 +272,7 @@
}
}
\tl_use:N \l__knot_redraws_tl
+ \seq_use:Nn \l__knot_nodes_seq {}
}
\endpgfscope
}
@@ -363,14 +399,63 @@
\spath_get:nnN {knot \tl_use:N \l__knot_tmpa_tl} {path} \l__knot_tmpc_tl
\spath_get:nnN {knot \tl_use:N \l__knot_tmpb_tl} {path} \l__knot_tmpd_tl
- \pgfintersectionofpaths{\pgfsetpath\l__knot_tmpc_tl}{\pgfsetpath\l__knot_tmpd_tl}
+ \bool_if:nTF {
+ \l__knot_save_bool
+ &&
+ \tl_if_exist_p:c {knot~ intersections~ \tl_use:N \l__knot_name_tl - \tl_use:N \l__knot_tmpa_tl - \tl_use:N \l__knot_tmpb_tl}
+ }
+ {
+ \tl_use:c {knot~ intersections~ \tl_use:N \l__knot_name_tl - \tl_use:N \l__knot_tmpa_tl - \tl_use:N \l__knot_tmpb_tl}
+ }
+ {
+\pgfintersectionofpaths{\pgfsetpath\l__knot_tmpc_tl}{\pgfsetpath\l__knot_tmpd_tl}
+ }
\int_compare:nT {\pgfintersectionsolutions > 0}
{
\int_step_function:nnnN {1} {1} {\pgfintersectionsolutions} \knot_do_intersection:n
}
+ \knot_save_intersections:VV \l__knot_tmpa_tl \l__knot_tmpb_tl
\group_end:
}
+\cs_new_protected_nopar:Npn \knot_save_intersections:nn #1#2
+{
+ \bool_if:NT \l__knot_save_bool
+ {
+ \tl_clear:N \l__knot_aux_tl
+ \tl_put_right:Nn \l__knot_aux_tl
+ {
+ \def\pgfintersectionsolutions
+ }
+ \tl_put_right:Nx \l__knot_aux_tl
+ {
+ {\int_eval:n {\pgfintersectionsolutions}}
+ }
+ \int_compare:nT {\pgfintersectionsolutions > 0}
+ {
+ \int_step_inline:nnnn {1} {1} {\pgfintersectionsolutions}
+ {
+ \pgfpointintersectionsolution{##1}
+ \dim_set:Nn \l__knot_tmpa_dim {\pgf@x}
+ \dim_set:Nn \l__knot_tmpb_dim {\pgf@y}
+ \tl_put_right:Nn \l__knot_aux_tl
+ {
+ \expandafter\def\csname pgfpoint@intersect@solution@##1\endcsname
+ }
+ \tl_put_right:Nx \l__knot_aux_tl
+ {
+ {\exp_not:N \pgf@x=\dim_use:N \l__knot_tmpa_dim\exp_not:N\relax\exp_not:N \pgf@y =\dim_use:N \l__knot_tmpb_dim\relax}
+ }
+ }
+ \tl_set:Nn \l__knot_auxa_tl {\expandafter \gdef \csname knot~ intersections~}
+ \tl_put_right:Nx \l__knot_auxa_tl {\tl_use:N \l__knot_name_tl - #1 - #2}
+ \tl_put_right:Nn \l__knot_auxa_tl {\endcsname}
+ \tl_put_right:Nx \l__knot_auxa_tl {{\tl_to_str:N \l__knot_aux_tl}}
+ \protected@write\@auxout{}{\tl_to_str:N \l__knot_auxa_tl}
+ }
+ }
+}
+\cs_generate_variant:Nn \knot_save_intersections:nn {VV}
\cs_new_protected_nopar:Npn \knot_do_intersection:n #1
{
\pgfpointintersectionsolution{#1}
@@ -424,113 +509,123 @@
{
\int_gincr:N \l__knot_intersections_int
- \bool_if:nTF
+ \bool_if:nF
{
- \tl_if_exist_p:c {l__knot_crossing_ \int_use:N
+ \tl_if_exist_p:c {l__knot_ignore_crossing_ \int_use:N
\l__knot_intersections_int}
&&
- ! \tl_if_empty_p:c {l__knot_crossing_ \int_use:N
+ ! \tl_if_empty_p:c {l__knot_ignore_crossing_ \int_use:N
\l__knot_intersections_int}
}
{
- \tl_set_eq:NN \l__knot_tmpg_tl \l__knot_tmpb_tl
- }
- {
- \tl_set_eq:NN \l__knot_tmpg_tl \l__knot_tmpa_tl
- }
- \bool_if:NT \l__knot_self_intersections_bool
- {
- \knot_test_endpoint:VnT \l__knot_tmpg_tl {initial point}
+ \bool_if:nTF
{
- \bool_set_true:N \l__knot_prepend_prev_bool
+ \tl_if_exist_p:c {l__knot_crossing_ \int_use:N
+ \l__knot_intersections_int}
+ &&
+ ! \tl_if_empty_p:c {l__knot_crossing_ \int_use:N
+ \l__knot_intersections_int}
}
{
- \bool_set_false:N \l__knot_prepend_prev_bool
+ \tl_set_eq:NN \l__knot_tmpg_tl \l__knot_tmpb_tl
}
-
- \knot_test_endpoint:VnT \l__knot_tmpg_tl {final point}
- {
- \bool_set_true:N \l__knot_append_next_bool
- }
- {
- \bool_set_false:N \l__knot_append_next_bool
- }
- \bool_if:nT
{
- \l__knot_prepend_prev_bool || \l__knot_append_next_bool
+ \tl_set_eq:NN \l__knot_tmpg_tl \l__knot_tmpa_tl
}
+ \bool_if:NT \l__knot_self_intersections_bool
{
- \spath_clone:nn {knot \tl_use:N \l__knot_tmpg_tl}
- {knot \tl_use:N \l__knot_prefix_tl -1}
-
- \tl_set_eq:cc {l__knot_options_ \tl_use:N \l__knot_prefix_tl -1} {l__knot_options_ \tl_use:N \l__knot_tmpg_tl}
-
+ \knot_test_endpoint:VnT \l__knot_tmpg_tl {initial point}
+ {
+ \bool_set_true:N \l__knot_prepend_prev_bool
+ }
+ {
+ \bool_set_false:N \l__knot_prepend_prev_bool
+ }
+ \knot_test_endpoint:VnT \l__knot_tmpg_tl {final point}
+ {
+ \bool_set_true:N \l__knot_append_next_bool
+ }
+ {
+ \bool_set_false:N \l__knot_append_next_bool
+ }
\bool_if:nT
{
- \l__knot_prepend_prev_bool
- &&
- \tl_if_exist_p:c {knot previous \tl_use:N \l__knot_tmpg_tl}
- &&
- !\tl_if_empty_p:c {knot previous \tl_use:N \l__knot_tmpg_tl}
+ \l__knot_prepend_prev_bool || \l__knot_append_next_bool
}
{
- \spath_prepend_no_move:nn {knot \tl_use:N \l__knot_prefix_tl -1} {knot \tl_use:c {knot previous \tl_use:N \l__knot_tmpg_tl}}
+ \spath_clone:nn {knot \tl_use:N \l__knot_tmpg_tl}
+ {knot \tl_use:N \l__knot_prefix_tl -1}
+
+ \tl_set_eq:cc {l__knot_options_ \tl_use:N \l__knot_prefix_tl -1} {l__knot_options_ \tl_use:N \l__knot_tmpg_tl}
+
\bool_if:nT
{
- \l__knot_splits_bool
+ \l__knot_prepend_prev_bool
&&
\tl_if_exist_p:c {knot previous \tl_use:N \l__knot_tmpg_tl}
&&
!\tl_if_empty_p:c {knot previous \tl_use:N \l__knot_tmpg_tl}
}
{
- \knot_test_endpoint:vnT {knot previous \tl_use:N \l__knot_tmpg_tl} {initial point}
+ \spath_prepend_no_move:nn {knot \tl_use:N \l__knot_prefix_tl -1} {knot \tl_use:c {knot previous \tl_use:N \l__knot_tmpg_tl}}
+ \bool_if:nT
{
- \spath_get:nnN {knot \tl_use:N \l__knot_prefix_tl -1} {path} \l_tmpa_tl
- \spath_prepend_no_move:nn {knot \tl_use:N \l__knot_prefix_tl -1} {knot \tl_use:c {knot previous \tl_use:c {knot previous \tl_use:N \l__knot_tmpg_tl}}}
- \spath_get:nnN {knot \tl_use:N \l__knot_prefix_tl -1} {path} \l_tmpa_tl
+ \l__knot_splits_bool
+ &&
+ \tl_if_exist_p:c {knot previous \tl_use:N \l__knot_tmpg_tl}
+ &&
+ !\tl_if_empty_p:c {knot previous \tl_use:N \l__knot_tmpg_tl}
+ }
+ {
+ \knot_test_endpoint:vnT {knot previous \tl_use:N \l__knot_tmpg_tl} {initial point}
+ {
+ \spath_get:nnN {knot \tl_use:N \l__knot_prefix_tl -1} {path} \l_tmpa_tl
+ \spath_prepend_no_move:nn {knot \tl_use:N \l__knot_prefix_tl -1} {knot \tl_use:c {knot previous \tl_use:c {knot previous \tl_use:N \l__knot_tmpg_tl}}}
+ \spath_get:nnN {knot \tl_use:N \l__knot_prefix_tl -1} {path} \l_tmpa_tl
+ }
}
}
- }
- \bool_if:nT
- {
- \l__knot_append_next_bool
- &&
- \tl_if_exist_p:c {knot next \tl_use:N \l__knot_tmpg_tl}
- &&
- !\tl_if_empty_p:c {knot previous \tl_use:N \l__knot_tmpg_tl}
- }
- {
- \spath_append_no_move:nn {knot \tl_use:N \l__knot_prefix_tl -1} {knot \tl_use:c {knot next \tl_use:N \l__knot_tmpg_tl}}
\bool_if:nT
{
- \l__knot_splits_bool
+ \l__knot_append_next_bool
&&
- \tl_if_exist_p:c {knot previous \tl_use:N
- \l__knot_tmpg_tl}
+ \tl_if_exist_p:c {knot next \tl_use:N \l__knot_tmpg_tl}
&&
!\tl_if_empty_p:c {knot previous \tl_use:N \l__knot_tmpg_tl}
}
{
- \knot_test_endpoint:vnT {knot previous \tl_use:N \l__knot_tmpg_tl} {final point}
+ \spath_append_no_move:nn {knot \tl_use:N \l__knot_prefix_tl -1} {knot \tl_use:c {knot next \tl_use:N \l__knot_tmpg_tl}}
+ \bool_if:nT
+ {
+ \l__knot_splits_bool
+ &&
+ \tl_if_exist_p:c {knot previous \tl_use:N
+ \l__knot_tmpg_tl}
+ &&
+ !\tl_if_empty_p:c {knot previous \tl_use:N \l__knot_tmpg_tl}
+ }
{
- \spath_append_no_move:nn {knot \tl_use:N \l__knot_prefix_tl -1} {knot \tl_use:c {knot next \tl_use:c {knot next \tl_use:N \l__knot_tmpg_tl}}}
+ \knot_test_endpoint:vnT {knot previous \tl_use:N \l__knot_tmpg_tl} {final point}
+ {
+ \spath_append_no_move:nn {knot \tl_use:N \l__knot_prefix_tl -1} {knot \tl_use:c {knot next \tl_use:c {knot next \tl_use:N \l__knot_tmpg_tl}}}
+ }
}
}
- }
- \tl_set:Nn \l__knot_tmpg_tl {\tl_use:N \l__knot_prefix_tl -1}
+ \tl_set:Nn \l__knot_tmpg_tl {\tl_use:N \l__knot_prefix_tl -1}
+ }
}
+ \pgfscope
+ \group_begin:
+ \tikzset{knot~ diagram/every~ intersection/.try, every~ intersection/.try, knot~ diagram/intersection~ \int_use:N \l__knot_intersections_int/.try}
+ \knot_draw_crossing:nVV {\tl_use:N \l__knot_tmpg_tl} \l__knot_tmpa_dim \l__knot_tmpb_dim
+ \group_end:
+ \endpgfscope
}
- \pgfscope
- \group_begin:
- \tikzset{knot~ diagram/every~ intersection/.try, every~ intersection/.try, knot~ diagram/intersection~ \int_use:N \l__knot_intersections_int/.try}
- \knot_draw_crossing:nVV {\tl_use:N \l__knot_tmpg_tl} \l__knot_tmpa_dim \l__knot_tmpb_dim
- \group_end:
- \endpgfscope
- \tl_use:N \l__knot_node_tl (\l__knot_name_tl \c_space_tl \int_use:N \l__knot_intersections_int) at (\l__knot_tmpa_dim, \l__knot_tmpb_dim) {};
+ \seq_gpush:Nx \l__knot_nodes_seq { \l__knot_node_tl (\l__knot_name_tl \c_space_tl \int_use:N \l__knot_intersections_int) at (\dim_use:N \l__knot_tmpa_dim, \dim_use:N \l__knot_tmpb_dim) {};}
+
}
}
@@ -539,9 +634,9 @@
{
\dim_compare:nTF
{
- \dim_abs:n {\pgf@x - \tl_item:Nn #1 {1}}
+ \dim_abs:n { \l__knot_tmpa_dim - \tl_item:Nn #1 {1}}
+
- \dim_abs:n {\pgf@y - \tl_item:Nn #1 {2}}
+ \dim_abs:n { \l__knot_tmpb_dim - \tl_item:Nn #1 {2}}
<
\l__knot_tolerance_dim
}
@@ -571,7 +666,7 @@
{
\group_begin:
\pgfscope
- \clip (#2, #3) circle[radius=\l__knot_clip_radius_dim];
+ \path[knot~ diagram/background~ clip] (#2, #3) circle[radius=\l__knot_clip_bg_radius_dim];
\tl_set:Nn \l_tmpa_tl {knot~ diagram/every~ strand/.try,}
\tl_if_exist:cT {l__knot_options_ #1}
@@ -584,7 +679,7 @@
\endpgfscope
\pgfscope
- \clip (#2, #3) circle[radius=1.1\l__knot_clip_radius_dim];
+ \path[knot~ diagram/clip] (#2, #3) circle[radius=\l__knot_clip_draw_radius_dim];
\tl_set:Nn \l_tmpa_tl {knot~ diagram/every~ strand/.try,}
\tl_if_exist:cT {l__knot_options_ #1}
@@ -599,6 +694,12 @@
}
\cs_generate_variant:Nn \knot_draw_crossing:nnn {nVV}
+
+\cs_new_nopar:Npn \knot_draw_crossing:nn #1#2
+{
+ \tikz@scan@one@point\pgfutil@firstofone #2 \relax
+ \knot_draw_crossing:nVV {#1} \pgf@x \pgf@y
+}
\cs_new_protected_nopar:Npn \knot_split_strands:
{
\int_gzero:N \l__knot_filaments_int
@@ -654,14 +755,16 @@
\tl_set:cx {knot previous filament \int_use:N \l__knot_filaments_int} {filament \int_eval:n {\l__knot_filaments_int - 1}}
}
}
- \g__spath_close_tl
+ \g__spath_closepath_tl
{
+ \tl_show:N #2
\int_gincr:N \l__knot_filaments_int
\spath_clear_new:n {knot filament \int_use:N \l__knot_filaments_int}
- \tl_set_eq:NN \l_tmpa_tl #2
- \tl_set:Nx \l_tmpa_tl {\tl_item:Nn #2 {1}\tl_item:Nn #2 {2}\tl_item:Nn #2 {3}}
+ \tl_clear:N \l_tmpa_tl
+ \tl_put_right:Nx {\tl_item:Nn #2 {1}\tl_item:Nn #2 {2}\tl_item:Nn #2 {3}}
\tl_put_right:NV \l_tmpa_tl \g__spath_lineto_tl
- \tl_set:Nx \l_tmpa_tl {\tl_item:Nn #2 {5}\tl_item:Nn #2 {6}}
+ \tl_put_right:Nx {\tl_item:Nn #2 {5}\tl_item:Nn #2 {6}}
+ \tl_show:N \l_tmpa_tl
\spath_put:nnV {knot filament \int_use:N \l__knot_filaments_int} {path} \l_tmpa_tl
\tl_set_eq:cN {l__knot_options_filament \int_use:N \l__knot_filaments_int} \l__knot_tmpa_tl
\tl_clear_new:c {knot previous filament \int_use:N \l__knot_filaments_int}
@@ -677,10 +780,9 @@
}
\NewDocumentCommand \redraw { m m }
{
- \tikz@scan@one@point\pgfutil@firstofone #2 \relax
- \tl_put_right:Nn \l__knot_redraws_tl {\knot_draw_crossing:nnn}
+ \tl_put_right:Nn \l__knot_redraws_tl {\knot_draw_crossing:nn}
\tl_put_right:Nx \l__knot_redraws_tl {
- {strand #1} {\dim_use:N \pgf@x} {\dim_use:N \pgf@y}
+ {strand #1} {#2}% {\dim_use:N \pgf@x} {\dim_use:N \pgf@y}
}
}
\ExplSyntaxOff
@@ -888,7 +990,7 @@
}
}
%%
-%% Copyright (C) 2011 by Andrew Stacey
+%% Copyright (C) 2011-2019 by Andrew Stacey
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -902,15 +1004,15 @@
%%
%% This work consists of the files spath3.dtx
%% calligraphy_doc.tex
-%% knot_doc.tex
+%% knots_doc.tex
%% and the derived files spath3.ins,
-%% spath3.pdf,
+%% spath3_code.pdf,
%% spath3.sty,
%% tikzlibrarycalligraphy.code.tex
%% tikzlibraryknots.code.tex
-%% calligraphy_doc.pdf
-%% knots_doc.pdf
-%% README.txt
+%% calligraphy.pdf
+%% knots.pdf
+%% README
%%
%%
%% End of file `tikzlibraryknots.code.tex'.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/spath3.tlpobj new/tlpkg/tlpobj/spath3.tlpobj
--- old/tlpkg/tlpobj/spath3.tlpobj 2018-03-03 20:17:17.000000000 +0100
+++ new/tlpkg/tlpobj/spath3.tlpobj 2019-02-28 04:05:54.000000000 +0100
@@ -1,18 +1,18 @@
name spath3
category Package
-revision 39794
+revision 50018
shortdesc Manipulate "soft paths" in PGF
relocated 1
longdesc The spath3 library provides methods for manipulating the "soft
longdesc paths" of TikZ/PGF. Packaged with it are two TikZ libraries
longdesc that make use of the methods provided. These are libraries for
longdesc drawing calligraphic paths and for drawing knot diagrams.
-runfiles size=27
+runfiles size=28
RELOC/tex/latex/spath3/spath3.sty
RELOC/tex/latex/spath3/tikzlibrarycalligraphy.code.tex
RELOC/tex/latex/spath3/tikzlibraryknots.code.tex
catalogue-ctan /graphics/pgf/contrib/spath3
-catalogue-date 2016-06-24 19:18:15 +0200
-catalogue-license lppl1.3
+catalogue-date 2019-02-13 10:37:08 +0100
+catalogue-license lppl1.3c
catalogue-topics pgf-tikz graphics-curve
-catalogue-version 1.1
+catalogue-version 1.2
++++++ spectralsequences.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/spectralsequences/README.md new/doc/latex/spectralsequences/README.md
--- old/doc/latex/spectralsequences/README.md 2017-12-11 23:22:32.000000000 +0100
+++ new/doc/latex/spectralsequences/README.md 2019-02-19 23:18:17.000000000 +0100
@@ -1,9 +1,9 @@
-spectralsequences v1.2.0
+spectralsequences v1.2.2
========================
Author: Hood Chatham
Email: hood@mit.edu
-Date: 2017-12-10
+Date: 2019-02-18
License: All files have the Latex Project Public License.
Description: Print spectral sequence diagrams using pgf/tikz.
@@ -13,7 +13,30 @@
Changelog:
==========
-## [1.2.0]
+## [1.2.2] (2018-02-18)
+### Fixed:
+- expl3 defined \exp_after:NNNf recently, so I changed \cs_new:Npn \exp_after:NNNf to \cs_set:Npn \exp_after:NNNf and copied the definition given by
+ expl3.
+- expl3 changed the definition of \peek_meaning_ignore_spaces to be in terms of \peek_meaning so \letting \peek_meaning to \peek_meaning_ignore_spaces
+ caused an infite regress.
+- expl3 changed \c__xparse_no_value_tl to \c__novalue_tl, so now I try to use each of them in sequence.
+- Fixed U argument type.
+- \sseqnewfamily was broken by an update to tikz that added a \scantokens call to the .ecode key handler, causing issues with @.
+- If \d was called without a source or target argument and was followed by a macro, \d would eat the first token of the expansion of that macro
+ causing an error.
+- Draft mode works a lot better now, though it's probably still buggy.
+
+## [1.2.1] (2018-10-08)
+### Fixed:
+- Tick style didn't work, now it does.
+- Orphan edges are consistently oriented correctly now (reported by Eric Peterson).
+- Fixed name class in copypage
+- Fixed incompatibility with new expl3 version (reported by Eric Peterson). The fix amounts to replacing a \cs_new:Npn with a \cs_gset:Npn.
+
+### Added:
+- \sseqlastlabel
+
+## [1.2.0] (2017-12-10)
### Added:
- \replacesource and \replacetarget
- \copypage
Binary files old/doc/latex/spectralsequences/examples/ANSS-S_2.pdf and new/doc/latex/spectralsequences/examples/ANSS-S_2.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/spectralsequences/examples/ANSS-S_2.tex new/doc/latex/spectralsequences/examples/ANSS-S_2.tex
--- old/doc/latex/spectralsequences/examples/ANSS-S_2.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/doc/latex/spectralsequences/examples/ANSS-S_2.tex 2019-02-19 23:18:17.000000000 +0100
@@ -9,7 +9,6 @@
minimum height=width("16"),
minimum width=width("16")
}}
-
\sseqnewfamily{imJ}
\begin{document}
Binary files old/doc/latex/spectralsequences/examples/ANSS-S_3.pdf and new/doc/latex/spectralsequences/examples/ANSS-S_3.pdf differ
Binary files old/doc/latex/spectralsequences/examples/ASS-S_2.pdf and new/doc/latex/spectralsequences/examples/ASS-S_2.pdf differ
Binary files old/doc/latex/spectralsequences/examples/ASS-S_3.pdf and new/doc/latex/spectralsequences/examples/ASS-S_3.pdf differ
Binary files old/doc/latex/spectralsequences/examples/ASS-tmf_2.pdf and new/doc/latex/spectralsequences/examples/ASS-tmf_2.pdf differ
Binary files old/doc/latex/spectralsequences/examples/HFPSS-EO2_3.pdf and new/doc/latex/spectralsequences/examples/HFPSS-EO2_3.pdf differ
Binary files old/doc/latex/spectralsequences/examples/HFPSS-KO.pdf and new/doc/latex/spectralsequences/examples/HFPSS-KO.pdf differ
Binary files old/doc/latex/spectralsequences/examples/J_RPinfty.pdf and new/doc/latex/spectralsequences/examples/J_RPinfty.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/spectralsequences/examples/J_RPinfty.tex new/doc/latex/spectralsequences/examples/J_RPinfty.tex
--- old/doc/latex/spectralsequences/examples/J_RPinfty.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/doc/latex/spectralsequences/examples/J_RPinfty.tex 2019-02-19 23:18:17.000000000 +0100
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2 2017-09-16 2017-09-16
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2019-02-18
%% License: Latex Project Public License
%%
%% File: example_endofVFoS.tex
Binary files old/doc/latex/spectralsequences/examples/MaySS-bo-A1.pdf and new/doc/latex/spectralsequences/examples/MaySS-bo-A1.pdf differ
Binary files old/doc/latex/spectralsequences/examples/MaySS-tmf-A2.pdf and new/doc/latex/spectralsequences/examples/MaySS-tmf-A2.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex new/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex
--- old/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex 2019-02-19 23:18:17.000000000 +0100
@@ -8,7 +8,6 @@
\documentclass[tooltips]{spectralsequence-example}
\begin{document}
\sseqset{htwostructstyle/.sseq style = {gray,very thin, run off=-}}
-%\pgfkeys{/sseqpages/struct line/htwostructstyle/.show code}
\NewSseqCommand\twods{ O{} U( r() m m }{
@@ -97,7 +96,9 @@
\begin{sseqdata}[name=tmfmayss,y range={0}{8}, x range={0}{25}, degree={-1}{1},
classes=fill,
class labels={below=3pt},differentials=blue,
- class pattern=linear, classes={ tooltip = {(\xcoord,\ycoord)} }, xscale=0.8,
+ class pattern=linear, classes={ tooltip = {(\xcoord,\ycoord)} },
+ xscale=1.48,
+ yscale=2.2,
title = {Page \page},
run off differentials = ->
]
Binary files old/doc/latex/spectralsequences/examples/SSS-KF3n.pdf and new/doc/latex/spectralsequences/examples/SSS-KF3n.pdf differ
Binary files old/doc/latex/spectralsequences/examples/SSS-KZ3.pdf and new/doc/latex/spectralsequences/examples/SSS-KZ3.pdf differ
Binary files old/doc/latex/spectralsequences/examples/hatcher.pdf and new/doc/latex/spectralsequences/examples/hatcher.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/spectralsequences/examples/hatcher.tex new/doc/latex/spectralsequences/examples/hatcher.tex
--- old/doc/latex/spectralsequences/examples/hatcher.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/doc/latex/spectralsequences/examples/hatcher.tex 2019-02-19 23:18:17.000000000 +0100
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2 2017-09-16 2017-09-16
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2019-02-18
%% License: Latex Project Public License
%%
%% File: example_hatcher.tex
Binary files old/doc/latex/spectralsequences/examples/unstable_ASS_SO.pdf and new/doc/latex/spectralsequences/examples/unstable_ASS_SO.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex new/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex
--- old/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex 2019-02-19 23:18:17.000000000 +0100
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2 2017-09-16 2017-09-16
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2019-02-18
%% License: Latex Project Public License
%%
%% File: example_unstable_ASS_SO.tex
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-KORP8.tex new/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-KORP8.tex
--- old/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-KORP8.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-KORP8.tex 2019-02-19 23:18:17.000000000 +0100
@@ -1,27 +1,27 @@
\NewSseqCommand \KOstar {m}{
- \begin{scope}[xshift = -#1, xshift=8*\b, yshift = #1]
- \class[rectangle,name=b^{\b}[0]](0,0)
- \class[name=b^{\b} e[0]](1,0) \structline
- \class[name=b^{\b} e^2[0]](2,0) \structline
- \class[rectangle,fill=none,name=b^{\b} u[0]](4,0)
+ \begin{scope}[ xshift = -#1, xshift = 8*\b, yshift = #1 ]
+ \class[rectangle, name = b^{\b}[0]](0,0)
+ \class[name = b^{\b} e[0]](1,0) \structline
+ \class[name = b^{\b} e^2[0]](2,0) \structline
+ \class[rectangle, fill = none, name = b^{\b} u[0]](4,0)
\end{scope}
}
\NewSseqCommand \KOpcell {m}{
\d1(b^{\b}[#1]) \replacetarget
\d1(b^{\b} u[#1]) \replacetarget
\structline(b^{\b}[#1+1])(b^{\b} e[#1+1])
- \structline[page=2,dashed](b^{\b} e[#1])(b^{\b} e^2[#1+1])
- \structline[page=2,dashed](b^{\b} e^2[#1])(b^{\b} u[#1+1])
+ \structline[page = 2, dashed](b^{\b} e[#1])(b^{\b} e^2[#1+1])
+ \structline[page = 2, dashed](b^{\b} e^2[#1])(b^{\b} u[#1+1])
}
\NewSseqCommand \KOetacell {m}{
\DrawIfValidDifferential2(b^{\b}[#1])
\d2(b^{\b} e[#1])
\DrawIfValidDifferential3(b^{\b} e^2[#1])
}
-\begin{sseqdata}[name=KO^*RP^8, Adams grading, class name handler=\SseqAHSSNameHandler,
- classes=fill, x range={-8}{10},xscale=0.7, yscale=0.5, x tick step = 4 ]
+\begin{sseqdata}[ name = KO^*RP^8, Adams grading, class name handler = \SseqAHSSNameHandler,
+ classes = fill, x range = {-8}{10}, xscale = 0.7, yscale = 0.5, x tick step = 4 ]
\foreach \b in {-2,...,2}{
\foreach \n in {0,...,6}{\KOstar{\n}}
\foreach \n in {1,3,...,5}{\KOpcell{\n}}
@@ -30,5 +30,5 @@
\structline[dashed](b^{\b}[4])(b^{\b}e[5])
}
\end{sseqdata}
-\printpage[name=KO^*RP^8, title=AHSS for $KO^*\mathbb{R}P^8$]\vskip6pt
-\printpage[name=KO^*RP^8,page=6]
\ No newline at end of file
+\printpage[ name = KO^*RP^8, title = AHSS for $KO^*\mathbb{R}P^8$ ] \vskip6pt
+\printpage[ name = KO^*RP^8, page = 6 ]
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2a.tex new/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2a.tex
--- old/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2a.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2a.tex 2019-02-19 23:18:17.000000000 +0100
@@ -5,13 +5,13 @@
\class(0,3)
\d3(1,0)
\replacesource
-\classoptions[fill,red](1,0) % (a) applies to most recent (last) generation.
+\classoptions[fill, red](1,0) % (a) applies to most recent (last) generation.
\end{sseqdata}
\printpage[ name = page_example2, page = 1 ] % generation 0 of (1,0), not styled
\quad
\begin{sseqpage}[ name = page_example2, page = 1, keep changes ]
-\classoptions[fill,blue](1,0) % (b) applies to the generation present on page 1, that is, generation 0.
+\classoptions[fill, blue](1,0) % (b) applies to the generation present on page 1, that is, generation 0.
\end{sseqpage} \quad
% generation 0 of (1,0), so class is blue from (b)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2b.tex new/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2b.tex
--- old/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2b.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2b.tex 2019-02-19 23:18:17.000000000 +0100
@@ -6,11 +6,11 @@
\printpage[ name = page_example2, page = 1 ]% generation 0 of (1,0), so class is red
\quad
\begin{sseqpage}[ name = page_example2, page = 1, keep changes ]
-\classoptions[fill,blue](1,0) % (d) applies to the generation present on page 1, that is, generation 0.
+\classoptions[fill, blue](1,0) % (d) applies to the generation present on page 1, that is, generation 0.
\end{sseqpage} \quad
% generation 0 of (1,0), class is blue from (d)
-\printpage[ name = page_example2,page = 2 ] \quad
+\printpage[ name = page_example2, page = 2 ] \quad
% generation 1 of (1,0), class is red from (c)
\printpage[ name = page_example2, page = 3 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-imJ.tex new/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-imJ.tex
--- old/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-imJ.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-imJ.tex 2019-02-19 23:18:17.000000000 +0100
@@ -1,22 +1,22 @@
\SseqNewFamily{imJ}
\begin{sseqdata}[
name=ANSS-S_2, Adams grading,
- class labels={below}, label distance=-1pt,
- class placement transform={rotate=90,scale=2},
- differentials=blue,
- x range={0}{9}, y range={0}{4},
- xscale=0.7, grid=go
+ class labels = {below}, label distance = -1pt,
+ class placement transform = {rotate = 90, scale = 2},
+ differentials = blue,
+ x range = {0}{9}, y range = {0}{4},
+ xscale = 0.7, grid = go
]
% Image of J classes
\begin{scope}[imJ]
\class[rectangle,fill,inner sep=3pt](0,0)
\DoUntilOutOfBoundsThenNMore{3}{\etaclass}
\classoptions["\alpha_1" above left](1,1)
-\class["\alpha_{2/2}",circlen=2](3,1)
+\class["\alpha_{2/2}", circlen = 2](3,1)
\structline(0,0) \structline[dashed](3,3)
\class["\alpha_3"](5,1) \d3\relax
\DoUntilOutOfBounds{ \etaclass \d3 }
-\class["\alpha_{4/4}", rectangle, "16" {font=\tiny,inside}, inner sep=1pt](7,1)
+\class["\alpha_{4/4}", rectangle, "16" {font = \tiny, inside}, inner sep = 1pt](7,1)
\DoUntilOutOfBoundsThenNMore{3}{\etaclass}
\end{scope}
@@ -27,6 +27,6 @@
\etaclass\structline(6,2,2) % This is a *nu
\end{sseqdata}
-\printpage[name=ANSS-S_2, title = with image of J, imJ style=purple]
+\printpage[ name = ANSS-S_2, title = with image of J, imJ style = purple]
-\printpage[name=ANSS-S_2, no imJ, x range={2}{9}, title = without image of J]
\ No newline at end of file
+\printpage[ name = ANSS-S_2, no imJ, x range={2}{9}, title = without image of J]
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-insert.tex new/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-insert.tex
--- old/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-insert.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-insert.tex 2019-02-19 23:18:17.000000000 +0100
@@ -6,28 +6,28 @@
}
}
-\begin{sseqdata}[name=insert-example, y range={0}{4}, class pattern = linear]
+\begin{sseqdata}[ name = insert-example, y range = {0}{4}, class pattern = linear ]
\tower(0,2)
\tower(0,3)
\tower(0,1)
\end{sseqdata}
\qquad
-\begin{sseqpage}[name=insert-example]
-\tower[red,classes={insert=1}](0,0)
+\begin{sseqpage}[ name = insert-example ]
+\tower[ red, classes = { insert = 1 } ](0,0)
\end{sseqpage}
\qquad
-\begin{sseqpage}[name=insert-example]
-\tower[red,classes={insert=2}](0,0)
+\begin{sseqpage}[ name = insert-example ]
+\tower[ red, classes = { insert = 2 } ](0,0)
\end{sseqpage}
\qquad
-\begin{sseqpage}[name=insert-example]
-\tower[red,classes={insert=3}](0,0)
+\begin{sseqpage}[ name = insert-example ]
+\tower[ red, classes = { insert = 3 } ](0,0)
\end{sseqpage}
\qquad
-\begin{sseqpage}[name=insert-example]
-\tower[red,classes={insert=-2}](0,0)
+\begin{sseqpage}[ name = insert-example ]
+\tower[ red, classes = { insert = -2 } ](0,0)
\end{sseqpage}
\qquad
-\begin{sseqpage}[name=insert-example]
-\tower[red,classes={insert=-3}](0,0)
-\end{sseqpage}
\ No newline at end of file
+\begin{sseqpage}[ name = insert-example ]
+\tower[ red, classes = { insert = -3 } ](0,0)
+\end{sseqpage}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-tikz.tex new/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-tikz.tex
--- old/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-tikz.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-tikz.tex 2019-02-19 23:18:17.000000000 +0100
@@ -6,20 +6,20 @@
\class(0,2)
\d2(1,0)
\end{sseqdata}
-
+%
\begin{sseqpage}[ name = tikz example ]
\circleclasses[ name path = myellipse, inner sep = 3pt, ellipse ratio = 1.6 ] (1,0) (0,2)
\path[ name path = myline ] (1.3,1.25) -- (0.6,1);
\draw[ name intersections = { of = myellipse and myline } ]
(intersection-1) to (1.3,1.25) node[ right, text width = 1.6cm ] {Consider this differential};
\end{sseqpage} \qquad
-
+%
\begin{sseqpage}[ name = tikz example ]
\draw[ xshift = 1 ] (0,0) to (0.6,0.2) node[ right, text width = 1.1cm ] {This is the source};
\draw[ yshift = 2 ] (0,0) to (0.6,0.2) node[ right, text width = 1.1cm ] {This is the target};
\end{sseqpage} \qquad
-
+%
\begin{sseqpage}[ page = 3, name = tikz example ]
-\circleclasses[ name path = myellipse, inner sep = 3pt, ellipse ratio = 1.6 ] (1,0)(0,2)
+\circleclasses[ inner sep = 3pt, ellipse ratio = 1.6 ] (1,0)(0,2)
\node[ right, font = \tiny ] at (1.2,1.2) {Now it's gone!};
-\end{sseqpage}
\ No newline at end of file
+\end{sseqpage}
\ No newline at end of file
Binary files old/doc/latex/spectralsequences/manual/spectralsequencesmanual-draftmode.pdf and new/doc/latex/spectralsequences/manual/spectralsequencesmanual-draftmode.pdf differ
Binary files old/doc/latex/spectralsequences/manual/spectralsequencesmanual.pdf and new/doc/latex/spectralsequences/manual/spectralsequencesmanual.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex new/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex
--- old/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex 2019-02-19 23:18:17.000000000 +0100
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2 2017-09-16 2017-09-16
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2019-02-18
%% License: Latex Project Public License
%%
%% File: spectralsequencesmanual.tex
@@ -19,8 +19,9 @@
% perhaps think about ordering, particularly of "Misc commands" section
% tutorial
% explain / cross reference examples folder?
+% \sseqlastlabel is not currently documented.
%
-\def\version{Version 1.2.0}
+\def\version{Version 1.2.2}
\input spectralsequencesmanualpreamble
@@ -78,7 +79,11 @@
Another option is to increase the static memory caps for \pdfLaTeX. See \href{https://tex.stackexchange.com/a/26213}{this \TeX stack exchange post} for instructions on how to do this.
\subsection{A warning about fragile macros}
-All the data in a \sseqpages\ environment is stored and used later. As a result, most of the \sseqpages\ commands currently cannot tolerate fragile macros. Unfortunately, it is impossible for \sseqpages\ to warn you about this situation -- if you use a fragile command in a place that it doesn't belong, the result will be an incomprehensible error message. If you are getting nonsense error messages, this might be why. The solution is to convert fragile macros into robust ones. \href{http://www.tex.ac.uk/FAQ-protect.html}{See here for more information.}
+All the data in a \sseqpages\ environment is stored and used later. As a result, most of the \sseqpages\ commands currently cannot tolerate fragile macros. Unfortunately, it is impossible for \sseqpages\ to warn you about this situation -- if you use a fragile command in a place that it doesn't belong, the result will be an incomprehensible error message. If you are getting nonsense error messages, this might be why. The solution is to convert fragile macros into robust ones. Common examples of fragile macros include |\widehat| and |\underline|. My suggested solution to this is to add the following code to your preamble for each fragile macro (example given for |\mathbb|):
+\begin{codeexample}[code only]
+\let\oldwidehat\widehat
+\protected\def\widehat{\oldwidehat}
+\end{codeexample}
\section{Package Options and Environments}
@@ -142,7 +147,7 @@
\class["\mathbb{Z}"](1,0)
\d["\cdot 2"]2(1,1)
\replacetarget["\mathbb{Z}/2"] %\replaceclass["\mathbb{Z}/2"](0,3)
-\d[-> >]3(1,0)
+\d[->>]3(1,0)
\replacesource["2\mathbb{Z}"] % \replaceclass["2\mathbb{Z}"](1,0)
\end{sseqdata}
\printpage[ name = replace class example, page = 2 ] \qquad
@@ -167,7 +172,7 @@
\begin{sseqpage}[ name = class options example,
right clip padding = 0.6cm ]
\classoptions[red](2,1,2) % Only is red on this page!
-\node[ background, text width = 10em ] at (0.3,-2.2)
+\node[ background ] at (0.3,-2.2)
{\textup{The red class is the problem}};
\end{sseqpage}
\end{codeexample}
@@ -361,17 +366,17 @@
\end{manualentry}
\begin{manualentry}{\pgfmanualpdflabel{""quotes}{}|"|\meta{text}|"|\opt{\meta{options}}}
-Specify a label for a class, a differential, or a structure line. This uses the \tikzpkg\ quotes syntax. If the label text includes an equal sign or comma, you need to enclose the entire label in braces, e.g., |\class["{x = y}"](0,0)|. The options include anything you might pass as an option to a \tikzpkg\ node, including arbitrary coordinate transforms, colors, opacity options, shapes, fill, draw, etc. The behavior is a little different depending on whether you use it on a class or on a differential or structure line.
+Specify a label for a class, a differential, or a structure line. This uses the \tikzpkg\ quotes syntax. If the label text includes an equal sign or comma, you need to enclose the entire label in braces, e.g., \codeverb|\class["{x = y}"](0,0)|. The options include anything you might pass as an option to a \tikzpkg\ node, including arbitrary coordinate transforms, colors, opacity options, shapes, fill, draw, etc. The behavior is a little different depending on whether you use it on a class or on a differential or structure line.
For a class, the \meta{text} is placed in the position |inside| the node by default -- in effect, the \meta{text} becomes the label text of the node (so saying |\class["label text"](0,0)| causes a similar effect to saying |\node at (0,0) {label text};|). There are other position options such as |left|, |above left|, etc which cause the label text to be placed in a separate node positioned appropriately. If the placement is above, left, etc, then any option that you may pass to a \tikzpkg\ node will also work for the label, including general coordinate transformations. If the placement is ``inside'', then the only relevant \opt{\meta{options}} are those that alter the appearance of text, such as opacity and color.
\begin{codeexample}[width = 4cm]
\begin{sseqpage}[ classes = { minimum width = width("a") + 0.5em }, no axes ]
\class["a"](0,0)
-\class["a",red](1,0)
-\class["a" black,red](2,0)
+\class["a", red](1,0)
+\class["a" black, red](2,0)
\class["b" above](0,1)
-\class["b" {below right,yshift = 0.1cm}](1,1)
-\class["a" {above right = {1em}}](2,1)
+\class["b" { below right, yshift = 0.1cm }](1,1)
+\class["a" { above right = {1em} }](2,1)
\end{sseqpage}
\end{codeexample}
You can adjust the default behavior of class labels using the |labels| style option or its relatives |class labels|, |inner class labels| or |outer class labels|.
@@ -380,7 +385,7 @@
\begin{sseqpage}[ no axes ]
\class(0,0)
\class(2,0)
-\node[circle,fill,"a"] at (1,0) {};
+\node[circle, fill, "a"] at (1,0) {};
\end{sseqpage}
\end{codeexample}
@@ -389,7 +394,7 @@
\begin{codeexample}[width = 6cm]
\begin{sseqpage}
\class(0,0)
-\class["xy" {above, xshift=-4pt, pin = red}](0,0)
+\class["xy" { above, xshift = -4pt, pin = red }](0,0)
\class(0,0)
\class(0,1)
\structline
@@ -508,23 +513,24 @@
\end{key}
\begin{key}{show name = \meta{label options}}
+\declareasstyle{show name}
This option is like saying |"class name"\marg{label options}| if the class has a name, and does nothing if the class has no name. If the class has multiple names, only the most recent is used. This is particularly useful with class styles, . For instance, by saying |this page classes = { show name = above }| you can display names of all of the sources and targets of differentials on each page.
\begin{codeexample}[width=7cm]
\begin{sseqdata}[
name = show name example,
- this page classes = { show name = {above right, pin} }
+ this page classes = { show name = { above right, pin } }
]
-\class[name=a](0,2)
-\class[name=b](0,3)
-\class[name=x](1,0)
+\class[ name = a ](0,2)
+\class[ name = b ](0,3)
+\class[ name = x ](1,0)
\d2(x)(a)
\replacesource[name=2x]
\d3(x)(b)
\end{sseqdata}
-\printpage[name=show name example,page=2]
+\printpage[ name = show name example, page = 2]
-\printpage[name=show name example,page=3]
+\printpage[ name = show name example, page = 3]
\end{codeexample}
\end{key}
@@ -548,8 +554,8 @@
\begin{sseqpage}[ degree = {-1}{1}, yscale = 1.1,
x range = {0}{5}, y range = {0}{5} ]
\tower(3,0)
-\hvee[tag = id](0,0)
-\hvee[tag = h21](4,2)
+\hvee[ tag = id ](0,0)
+\hvee[ tag = h21 ](4,2)
\foreach \n in {0,...,5} {
\d2(4+\n,2+\n,h21,id)
}
@@ -605,12 +611,14 @@
\end{key}
\begin{keylist}{class:page = \meta{page}\opt{-{}-\meta{page max}},generation = \meta{generation}\opt{-{}-\meta{generation max}}}
+\def\classpagehandler#1#2{\textcolor{keycolor}{\noligs{#2}}}
+\declarecustomhandler{class:page}{\classpagehandler}
These options only work in |\classoptions|. The |page| option gives a range of pages for which the options apply to. If only one page is specified, it is the minimum page and the option applies to all larger pages.
\begin{codeexample}[width = 6cm]
\begin{sseqdata}[ name = page_example, no axes,
title = \page, title style = {yshift = -0.5cm} ]
\class(0,0)
-\classoptions[class:page = {2--3},fill,blue](0,0)
+\classoptions[class:page = 2 -- 3, fill, blue](0,0)
\end{sseqdata}
\printpage[ name = page_example, page = 1 ] \qquad
@@ -657,8 +665,8 @@
\class(\x,\y)
}
\structline[densely dotted](0,0)(0,1)
-\structline[dashed,red, "a"](1,0)(1,1)
-\structline[dash dot,red, "a" black](2,0)(2,1)
+\structline[dashed, red, "a"](1,0)(1,1)
+\structline[dash dot, red, "a" black](2,0)(2,1)
\end{sseqpage}
\end{codeexample}
%
@@ -672,7 +680,7 @@
}
\structline[bend left = 20](0,0)(0,1)
\structline[bend right = 20](1,0)(1,1)
-\structline[in = 20,out = north](2,0)(2,1)
+\structline[in = 20, out = north](2,0)(2,1)
\end{sseqpage}
\end{codeexample}
\end{keylist}
@@ -712,13 +720,13 @@
\d3(1,1)(0,4) \replacesource
\structline[structline:page = 2](1,0)(1,1)
\end{sseqdata}
-\printpage[name = structpage example2,page = 1]
+\printpage[ name = structpage example2, page = 1 ]
\qquad
-\printpage[name = structpage example2,page = 2]
+\printpage[ name = structpage example2, page = 2 ]
\qquad
-\printpage[name = structpage example2,page = 3]
+\printpage[ name = structpage example2, page = 3 ]
\qquad
-\printpage[name = structpage example2,page = 4]
+\printpage[ name = structpage example2, page = 4 ]
\end{codeexample}
Similarly, for |\structlineoptions| you can specify a minimum page on which to apply the options, or a range of pages.
@@ -728,12 +736,12 @@
\begin{key}{fit = \meta{coordinates or nodes}}
The |\circleclasses| command uses the \href{\pgfmanualurl#section.52}{\tikzpkg\ fitting library}. Sometimes it's desirable to make the resulting node fit extra things, for example a label. It doesn't necessarily end up looking great though.
\begin{codeexample}[]
-\begin{sseqpage}[Adams grading,axes gap = 0.7cm]
+\begin{sseqpage}[ Adams grading, axes gap = 0.7cm ]
\class(0,2)
\class(1,0)
% Fit in the label x and also a symmetric invisible label to maintain symmetry
-\d["x"{name = x},"x"'{name = x',opacity = 0}]2(1,0)
-\circleclasses[fit = (x)(x'),rounded rectangle](1,0)(0,2)
+\d["x"{name = x}, "x"'{name = x', opacity = 0}]2(1,0)
+\circleclasses[fit = (x)(x'), rounded rectangle](1,0)(0,2)
\end{sseqpage}
\end{codeexample}
\end{key}
@@ -769,7 +777,7 @@
In particular, this means that foreground \tikzpkg\ paths can be clipped by the standard clipping, but background paths that are outside of the clipping expand the size of the \tikzpkg\ picture.
\begin{codeexample}[]
-\begin{sseqpage}[no ticks,yscale = 0.9,math nodes = false]
+\begin{sseqpage}[ no ticks, yscale = 0.9, math nodes = false ]
\class(0,0)
\class(1,1)
\begin{scope}[background]
@@ -957,6 +965,7 @@
\structline
}
\class(4,0)
+\d3
\DoUntilOutOfBounds{
\class(\lastx+1,\lasty+1)
\structline
@@ -1050,21 +1059,21 @@
\end{codeexample}
-The |\d| command has argument specification |O{} U( r()|. The argument type |U| is special to \sseqpages, and is a variant of until that reinserts the delimiting token. This allows the |(| token to also delimit the beginning of the |r()| argument. Note that the argument type |U| is specially added by \sseqpages\ and might be removed in the future if the \LaTeX3 team yells at me or something.
- \ExplSyntaxOn
- \cs_set_eq:NN \__xparse_add_type_U:w \sseq__xparse_add_type_U:w
- \cs_set_eq:NN \__xparse_normalize_type_U:w \sseq__xparse_normalize_type_U:w
- \sseq@install@xparse@Uarggrabber
- \ExplSyntaxOff
-\begin{codeexample}[width = 7cm,vbox]
-\DeclareDocumentCommand {\demo} { O{} U( r() }
- { \#1 = \textcolor{purple}{\{#1\}};
- \#2 = \textcolor{purple}{\{#2\}};
- \#3 = \textcolor{purple}{\{#3\}} }
-\hbox{\demo[opts]page(x,y)}
-\bigskip
-\hbox{\demo5(x,y)}
-\end{codeexample}
+%The |\d| command has argument specification |O{} U( r()|. The argument type |U| is special to \sseqpages, and is a variant of until that reinserts the delimiting token. This allows the |(| token to also delimit the beginning of the |r()| argument. Note that the argument type |U| is specially added by \sseqpages\ and might be removed in the future if the \LaTeX3 team yells at me or something.
+% \ExplSyntaxOn
+% \cs_set_eq:NN \__xparse_add_type_U:w \sseq__xparse_add_type_U:w
+% \cs_set_eq:NN \__xparse_normalize_type_U:w \sseq__xparse_normalize_type_U:w
+% \sseq@install@xparse@Uarggrabber
+% \ExplSyntaxOff
+%\begin{codeexample}[width = 7cm,vbox]
+%\DeclareDocumentCommand {\demo} { O{} U( r() }
+% { \#1 = \textcolor{purple}{\{#1\}};
+% \#2 = \textcolor{purple}{\{#2\}};
+% \#3 = \textcolor{purple}{\{#3\}} }
+%\hbox{\demo[opts]page(x,y)}
+%\bigskip
+%\hbox{\demo5(x,y)}
+%\end{codeexample}
The |\structline| and |\changeclasses| commands have argument specification |O{}r()r()|.
\begin{codeexample}[width = 7cm,vbox]
@@ -1099,7 +1108,7 @@
\end{commandlist}
\begin{command}{\SseqCopyPage\cmdarg{command}\marg{spectral sequence name}\marg{page}}
-This copies all of the classes and structlines on page |\meta{page}| of the spectral sequence named |\meta{spectral sequence name}|, throwing out differentials and tikz primitives. The resulting |\cmdarg{command}| has syntax as if you had used |\DeclareSseqGroup| with no extra arguments -- that is, it takes an optional options list, which are passed to a scope, and an optional coordinate pair.
+This defines \cmdarg{command} to print all of the classes and structlines on page |\meta{page}| of the spectral sequence named |\meta{spectral sequence name}|, throwing out differentials and tikz primitives. The resulting command has syntax as if you had used |\DeclareSseqGroup| with no extra arguments -- that is, it takes an optional options list, which are passed to a scope, and an optional coordinate pair.
\end{command}
\subsection{Families}
@@ -1284,12 +1293,12 @@
\begin{sseqpage}[ y range = {0}{6}, x tick step = 3,
xscale=0.6, yscale=1.3 ]
\class(0,2) \class(0,3) \class(3,2)
-\class[tag=h_0^i](0,0)
-\tower[tag=h_0^i]
+\class[tag = h_0^i](0,0)
+\tower[tag = h_0^i]
\class(0,2) \class(0,1)
-\htwotower[tag=h_2 h_0^i](0,0)
-\htwotower[tag=h_2 h_0^i]
+\htwotower[tag = h_2 h_0^i](0,0)
+\htwotower[tag = h_2 h_0^i]
\end{sseqpage}
\end{codeexample}
\end{command}
@@ -1405,7 +1414,7 @@
\begin{codeexample}[width = 7cm]
% Applies to both of the following sseqs:
-\sseqset{ sseqs = { blue, scale = 0.5 } }%
+\sseqset{ sseqs = { blue, scale = 0.5 } }
\begin{sseqpage}
\foreach \x in {0,1}
\foreach \y in {0,1,2} {
@@ -1499,7 +1508,7 @@
Inner class labels specifically applies to class labels that are inside the node, outer class labels specifically applies to ones outside it:
\begin{codeexample}[]
\begin{sseqpage}[ no axes, classes = { inner sep = 1pt },
- label distance=2pt,
+ label distance = 2pt,
outer class labels = { red },
inner class labels = { blue } ]
\class["a", "b" above](0,0)
@@ -1522,7 +1531,7 @@
\begin{codeexample}[width = 6cm]
\begin{sseqpage}[ label distance = 0.3em,
right label distance = 0em,
- no axes,yscale = 1.25 ]
+ no axes, yscale = 1.25 ]
\class["a" above](0,0)
\class["b" above right](0,1)
\class["c" right](1,0)
@@ -1610,8 +1619,8 @@
\SseqNormalizeMonomialSetVariables{xy}
\begin{sseqpage}[ class name handler = \SseqNormalizeMonomial,
classes = {show name = {right,pin}} ]
-\class[name=xy](0,0)
-\class[name=yxy](0,1)
+\class[name = xy](0,0)
+\class[name = yxy](0,1)
\class(1,0)
\structline(yx)(yyx)
\end{sseqpage}
@@ -2019,7 +2028,7 @@
The \meta{type} is either |border|, |center|, |frame|, or |none|. |no axes| is a shorthand for |axes type=none|. The |border| type is the default and puts the axes on the bottom and left of the picture. The |center| type by default places the axes to pass through $(0,0)$; this can be modified using the |x axis origin| and |y axis origin| keys. See \example{KRAHSS} and \example{KUHFPSS} for examples where this is used. The |frame| type draws a frame around the entire chart:
\begin{codeexample}[width=6cm]
-\begin{sseqpage}[axes type=frame]
+\begin{sseqpage}[ axes type = frame ]
\class(0,0)
\class(3,2)
\end{sseqpage}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex new/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex
--- old/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex 2019-02-19 23:18:17.000000000 +0100
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2 2017-09-16 2017-09-16
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2019-02-18
%% License: Latex Project Public License
%%
%% File: spectralsequencesmanualpreamble.tex
@@ -275,7 +275,8 @@
}
\def\pgfmanual@pretty@collectquote{%
\let\pgfmanualprettyprinterhandlecollectedargs=\pgfmanual@pretty@collectargs@finish@collectquote
- \pgfmanualprettyprintercollectupto"
+ \let\pgfmanualprettyprinterhandlecollectedargsVtwo\pgfmanualprettyprinterhandlecollectedargsVtwo@default
+ \pgfmanualprettyprintercollectupto"%
{\pgfmanual@pretty@collectquote@b}%
}
\def\pgfmanual@pretty@collectquote@b{%
@@ -289,9 +290,9 @@
\def\afterpgfmanual@pretty@collectquote{\pgfmanual@pretty@pgfkeys@loop}
\def\pgfmanual@pretty@collectargs@finish@collectquote#1{\textcolor{keycolor}{\pgfmanualpdfref{""quotes}{"#1"}}}
\def\pgfmanual@pretty@collectargs@finish@collectquote@b#1{%
+ \def\thekey{#1}%
\edef\temp{\ifpgfmanualprettyprinterfoundterminator,\fi}%
\pgfkeys{/codeexample/prettyprint/key name/.code={\textcolor{keycolor}{##1}}}%
- \def\thekey{#1}%
\def\leadingtoks{}\def\trailingtoks{}%
\pulloffstartspaces\pulloffsinglequote\pulloffstartspaces\pulloffstartbrace
\removetrailingspaces\removetrailingbrace
@@ -315,12 +316,13 @@
% Redefine point collection to correctly balance the parens
% Has unfortunate side effect that it now throws an error if parens don't balance.
\let\pgfmanual@pretty@collectpoint@old\pgfmanual@pretty@collectpoint
-\def\pgfmanual@pretty@collectpoint{\pgfmanual@pretty@collectpoint@(} %)
-\DeclareDocumentCommand\pgfmanual@pretty@collectpoint@{r()}{%
- \pgfmanualprettyprinterfoundterminatortrue
- \pgfmanual@pretty@collectargs@finish@collectpoint{#1}%
- \afterpgfmanual@pretty@collectpoint
-}
+%\def\pgfmanual@pretty@collectpoint{\pgfmanual@pretty@collectpoint@(} %)
+%\DeclareDocumentCommand\pgfmanual@pretty@collectpoint@{r()}{%
+% \pgfmanualprettyprinterfoundterminatortrue
+% \pgfmanual@pretty@collectargs@finish@collectpoint{#1}%
+% \afterpgfmanual@pretty@collectpoint
+%}
+
\pgfqkeys{/codeexample/prettyprint}{
@@ -399,7 +401,8 @@
}%
\fi
},
- point/.code={\pgfutil@in@){#1}\ifpgfutil@in@\prettyprintprocesspoint#1\else \textcolor{pointcolor}{\noligs{#1}}\fi},
+ point/.code={%\pgfutil@in@){#1}\ifpgfutil@in@\def\temp{#1}\prettyprintprocesspoint{#1}\else \textcolor{pointcolor}{\noligs{#1}}\fi
+ \textcolor{pointcolor}{\noligs{#1}}},
%/cs/.code={\pgfmanualpdfref{#1}{\textcolor{blue}{#1}}},
% /cs with args/.code 2 args={\pgfmanualpdfref{#1}{\textcolor{blue}{#1}}\{\pgfmanualprettyprintcode{#2}\pgfmanualclosebrace},
%/colored
@@ -420,7 +423,7 @@
\def\codeverb|{\pgfmanual@verb@code}
% balance the braces
-\NewDocumentCommand\prettyprintprocesspoint { r() } {%
+\NewDocumentCommand\prettyprintprocesspoint { m } {%
\textcolor{pointcolor}{%
\bgroup
\let\pgfmanual@pretty@collectpoint\pgfmanual@pretty@collectpoint@old
@@ -440,6 +443,19 @@
\expandafter\endofcodeexample\expandafter{\examplelines}%
}
+% For some reason it's started duplicating the last line of the file,
+% so I added an illogical extra \ifeof and that seems to fix the problem.
+\def\readexamplelines{
+ \ifeof\examplesource%
+ \else
+ \immediate\read\examplesource to \exampleline
+ \ifeof\examplesource\else %% Added
+ \edef\examplelines{\unexpanded\@xp{\examplelines}\unexpanded\@xp{\exampleline}}%
+ \fi %% Added
+ \expandafter\readexamplelines%
+ \fi
+}
+
\pgfqkeys{/sseqpages}{
class/class:name/.forward to=/sseqpages/class/name,
@@ -452,7 +468,7 @@
\hypersetup{
- pdftitle={The Spectralsequences Package},
+ pdftitle={The Spectral Sequences Package},
pdfauthor={Hood Chatham},
pdfsubject={A spectral sequence drawing package build on tikz},
pdfkeywords={spectral sequences,algebraic topology,homotopy theory,math,tikz,sseq},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/spectralsequences.doc.tlpobj new/tlpkg/tlpobj/spectralsequences.doc.tlpobj
--- old/tlpkg/tlpobj/spectralsequences.doc.tlpobj 2018-03-03 20:17:17.000000000 +0100
+++ new/tlpkg/tlpobj/spectralsequences.doc.tlpobj 2019-02-28 04:05:54.000000000 +0100
@@ -1,9 +1,9 @@
name spectralsequences.doc
category Package
-revision 46038
+revision 50072
shortdesc doc files of spectralsequences
relocated 1
-docfiles size=960
+docfiles size=903
RELOC/doc/latex/spectralsequences/README.md
RELOC/doc/latex/spectralsequences/examples/ANSS-S_2.pdf
RELOC/doc/latex/spectralsequences/examples/ANSS-S_2.tex
@@ -42,7 +42,9 @@
RELOC/doc/latex/spectralsequences/manual/pgfmanual-en-macros.tex
RELOC/doc/latex/spectralsequences/manual/spectralsequences-howitworks.pdf
RELOC/doc/latex/spectralsequences/manual/spectralsequences-howitworks.tex
+ RELOC/doc/latex/spectralsequences/manual/spectralsequencesmanual-draftmode.pdf
RELOC/doc/latex/spectralsequences/manual/spectralsequencesmanual-layoutcharts.tex
RELOC/doc/latex/spectralsequences/manual/spectralsequencesmanual.pdf
RELOC/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex
RELOC/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex
+ RELOC/doc/latex/spectralsequences/manual/sseqmanualtest.tex
++++++ spectralsequences.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/spectralsequences/spectralsequences.sty new/tex/latex/spectralsequences/spectralsequences.sty
--- old/tex/latex/spectralsequences/spectralsequences.sty 2017-12-11 23:22:32.000000000 +0100
+++ new/tex/latex/spectralsequences/spectralsequences.sty 2019-02-19 23:18:17.000000000 +0100
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2019-02-18
%% License: Latex Project Public License
%%
%% A package for drawing spectral sequences
@@ -13,21 +13,17 @@
% Try catch blocks
% Make an argument type for the \d page argument.
% deal with xmin, xmax, etc (was there actually a problem we were trying to fix?)
-% Make xmirror not mirror axes labels
%
% Redo sseqerrortest and set up regression test script as part of build (damn I didn't realize we'd lost anything imporant with that find -d disaster)
% Maybe we should add some other regression tests too
%
% Lower priority:
-% speed up off page edges (uses 10% of the draw time for page 0 of tmfass)
-% improve \DoUntilOutOfBounds progress check
% error messages that should be warnings by default?
-% should we specify our favorite conditionals library?
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{spectralsequences}[2017/12/10 v1.2.0]
+\ProvidesPackage{spectralsequences}[2019/02/18 v1.2.2]
\RequirePackage{tikz}
\RequirePackage{etoolbox}
@@ -52,6 +48,8 @@
\ifsseq@tooltip
\RequirePackage{pdfcomment}
+\else
+ \let\ulp@afterend\relax % So that removing the tooltip option doesn't cause the aux file to have an error.
\fi
\def\sseq@authorname{Hood Chatham}
@@ -66,6 +64,7 @@
% These are defined in sseqmain:
\class\classoptions\replaceclass\replacesource\replacetarget
\d\doptions\kill\structline\structlineoptions\circleclasses
+ \lastlabel
% The following are defined in sseqparsers:
\pgfmathparse\isalive\lastx\lasty\lastclass\savestack\restorestack\pushstack\nameclass\tagclass
\parsecoordinate\parsedifferential\getdtarget\gettag
@@ -121,7 +120,6 @@
\newif\ifsseq@error
\newtoks\sseq@temptoks
-\newtoks\sseq@temptoksii
\newtoks\sseq@scope@toks
\newcount\sseq@thepagecount
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex new/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex
--- old/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex 2019-02-19 23:18:17.000000000 +0100
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2019-02-18
%% License: Latex Project Public License
%%
%% File: sseqcheckdefinitions.code.tex
@@ -17,9 +17,11 @@
\begingroup
\def\sseq@checkprotecteddef#1{\def\sseq@temp{\sseq@checkdef@{#1}}\afterassignment\sseq@temp\protected\long\@xp\def\csname sseq@check@\sseq@macroname#1\endcsname}
\def\sseq@checkdef#1{\def\sseq@temp{\sseq@checkdef@{#1}}\afterassignment\sseq@temp\@xp\def\csname sseq@check@\sseq@macroname#1\endcsname}
-\def\sseq@checkdef@#1{\@xp\ifx\csname sseq@check@\sseq@macroname#1\endcsname#1\else
- \sseq@tempiffalse
-\fi}
+\def\sseq@checkdef@#1{
+ \@xp\ifx\csname sseq@check@\sseq@macroname#1\endcsname#1\else
+ \sseq@tempiffalse
+ \fi
+}
%%
%% sseqmacromakers.code.tex
@@ -45,23 +47,33 @@
\sseq@checkprotecteddef \__xparse_normalize_type_u:w #1 {
\quark_if_recursion_tail_stop_do:nn {#1} { \__xparse_bad_arg_spec:wn }
\__xparse_normalize_check_lu:N u
- \__xparse_add_arg_spec:n { u {#1} }
- \int_incr:N \l__xparse_mandatory_args_int
- \tl_clear:N \l__xparse_last_delimiters_tl
+ \__xparse_add_arg_spec_mandatory:n { u {#1} } % Oct 17, 2018
+% \int_incr:N \l__xparse_mandatory_args_int
+% \tl_clear:N \l__xparse_last_delimiters_tl
\__xparse_normalize_arg_spec_loop:n
}
\ifsseq@tempif
\global\sseq@patchxparseUtrue
\else
- %\sseq@warning{fit-patch-failed}
\global\sseq@patchxparseUfalse
\fi
\sseq@tempiftrue
}{}
-\ExplSyntaxOff
+\@ifpackagelater{expl3}{2018/10/01}{
+ % TODO: Check that \peek_meaning and \peek_meaning_remove have the right definitions
+ \sseq@tempiftrue
+ \sseq@checkprotecteddef\peek_meaning_ignore_spaces:NTF#1#2#3{\peek_remove_spaces:n{\peek_meaning:NTF#1{#2}{#3}}}
+ \sseq@checkprotecteddef\peek_meaning_remove_ignore_spaces:NTF#1#2#3{\peek_remove_spaces:n{\peek_meaning_remove:NTF#1{#2}{#3}}}
+ \ifsseq@tempif\else
+ \sseq@error@n{expl3-incompatibility}{\peek_meaning_ignore_spaces:NTF}
+ \fi
+}{}
+
+\ExplSyntaxOff
+\sseq@tempiftrue
%%
%% sseqkeys.code.tex
%%
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/spectralsequences/sseqdrawing.code.tex new/tex/latex/spectralsequences/sseqdrawing.code.tex
--- old/tex/latex/spectralsequences/sseqdrawing.code.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/tex/latex/spectralsequences/sseqdrawing.code.tex 2019-02-19 23:18:17.000000000 +0100
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2019-02-18
%% License: Latex Project Public License
%%
%% File: sseqdrawing.code.tex
@@ -221,32 +221,33 @@
% #6 -- xaxisgap
% #7 -- code
\def\sseq@tickloop@generic#1#2#3#4#5#6#7{
- \sseq@tempx=\numexpr % min
+ \sseq@tempcount=\numexpr % min
\sseq@intdivceiling{#1}{#3} * #3
-
\sseq@intdivceiling{#4}{#3} * #3 + #4
\relax
- \ifnum\sseq@tempx<#1\relax
- \advance\sseq@tempx#3\relax
+ \ifnum\sseq@tempcount<#1\relax
+ \advance\sseq@tempcount#3\relax
\fi
- \sseq@tempxb=\numexpr#2+1\relax % max
+ \sseq@tempcountb=\numexpr#2+1\relax % max
\loop
\bgroup
- \pgftransformshift{\sseq@qpointxy{\sseq@tempx}{#5}}%
+ \pgftransformshift{\sseq@qpointxy{\sseq@tempcount}{#5}}%
\pgftransformshift{\pgfqpoint{0pt}{#6}}
#7
\egroup
- \advance\sseq@tempx#3\relax
- \ifnum\sseq@tempx<\sseq@tempxb\repeat
+ \advance\sseq@tempcount#3\relax
+ \ifnum\sseq@tempcount<\sseq@tempcountb\repeat
}
\def\sseq@drawxticks{%
\sseq@tickloop@generic{\sseq@xmin}{\sseq@xmax}{\sseq@xtickstep}{\sseq@xtickstepoffset}{\sseq@yaxisorigin}{-\sseq@xaxisgap}{
- \sseq@xtickstyle
- \tikz@options
\pgftransformshift{\pgfqpoint{0pt}{-\sseq@xlabelgap}}
- \pgftext{\hbox{$\sseq@xtickfn{\the\sseq@tempx}$}}%
+ \pgftransformresetnontranslations
+ %\@xp\tikzset\@xp{\sseq@xtickstyle}
+ %\pgftext{\tikz@options\tikz@textfont\hbox{$\sseq@xtickfn{\the\sseq@tempx}$}}%
+ \@xp\node\@xp[\sseq@xtickstyle]{\hbox{$\sseq@xtickfn{\the\sseq@tempcount}$}};
}
\ifnum\sseq@xmajortickstep>\z@
\sseq@tickloop@generic{\sseq@xmin}{\sseq@xmax}{\sseq@xmajortickstep}{\sseq@xtickstepoffset}{\sseq@yaxisorigin}{-\sseq@xaxisgap}{
@@ -265,11 +266,11 @@
\def\sseq@drawyticks{%
\sseq@transform@xymirror
\sseq@tickloop@generic{\sseq@ymin}{\sseq@ymax}{\sseq@ytickstep}{\sseq@ytickstepoffset}{\sseq@xaxisorigin}{-\sseq@yaxisgap}{
- \sseq@ytickstyle
- \tikz@options
\pgftransformshift{\pgfqpoint{0pt}{-\sseq@ylabelgap}}
\pgftransformresetnontranslations
- \pgftext{\hbox{$\sseq@ytickfn{\the\sseq@tempx}$}}%
+ %\@xp\tikzset\@xp{\sseq@ytickstyle}
+ %\pgftext{\tikz@options\tikz@textfont\hbox{$\sseq@ytickfn{\the\sseq@tempx}$}}%
+ \@xp\node\@xp[\sseq@ytickstyle]{\hbox{$\sseq@ytickfn{\the\sseq@tempcount}$}};
}
\ifnum\sseq@ymajortickstep>\z@
\sseq@tickloop@generic{\sseq@ymin}{\sseq@ymax}{\sseq@ymajortickstep}{\sseq@ytickstepoffset}{\sseq@xaxisorigin}{-\sseq@yaxisgap}{
@@ -554,16 +555,6 @@
{ \csname sseq@\sseq@classpattern yoffset#1/#2\endcsname }
}}
}
-\def\sseq@class@getparts#1(#2,#3,#4)[#5].{
- \sseq@seterrorannotation@drawing{#1}{#2}{#3}{#4}{#5}
- \def\sseq@thisclassname{class.(#2,#3,#4)}
- \def\sseq@thisnodename{sseq{#2,#3,#4}}
- \def\sseq@thispos{(#2,#3)}
- \edef\sseq@thisposnum{\sseq@obj{class.(#2,#3,#4).n}}
- \def\sseq@thisclassnum{#5}
- \sseq@tempx=#2\relax
- \sseq@tempy=#3\relax
-}
\def\sseq@tooltip@wrapper#1#2{%
\edef\temp{\detokenize\@xpthree{#2}}%
@@ -581,7 +572,36 @@
}
}
-% #1 -- the name of the node object
+
+% #1 -- "class."
+% (#2,#3,#4) -- the class name x,y,n
+% #5 -- generation
+\def\sseq@class@getparts#1(#2,#3,#4)[#5].{
+ \sseq@seterrorannotation@drawing{#1}{#2}{#3}{#4}{#5}
+ \def\sseq@thisnodename{sseq{#2,#3,#4}}
+ \def\sseq@thispos{(#2,#3)}
+ \edef\sseq@thisposnodeindex{\sseq@obj{class.(#2,#3,#4).n}}
+ \edef\sseq@thispostotalnodes{\sseq@obj{partcoord.(#2,#3).numnodes}}
+ \def\sseq@thisclassnum{#5}
+ \sseq@tempx=#2\relax
+ \sseq@tempy=#3\relax
+}
+
+
+% #1 -- the name of the class object given as (x,y,n)[gen]
+% Mandatory fields:
+% partcoord.(x,y).numnodes
+% (x,y,n).num -- number of generations of this class
+% (x,y,n).n -- node n of numnodes (needed to allow node position to differ from creation order).
+% class.page -- the death page of the class
+% Optional fields:
+% class.options -- Options for this class.
+% class.nodetext -- The internal text of the node
+% class.nodetext.options -- options (color, font) to change the nodetext
+% class.labelnodes -- a list of external labels
+% class.name & class.showname -- If there is a name, use it as a label in some way
+% class.tooltip -- Make a tooltip. Fails if the user didn't load package with tooltip option
+% class.needstikz -- Use tikz to draw this node
% Someday I should document this horrible mess of code here
\newif\ifsseq@permanentcycle
\newcount\sseq@totalclassesdrawn
@@ -590,7 +610,13 @@
\global\advance\sseq@totalclassesdrawn\@ne
\begingroup
\sseq@class@getparts#1.
+ % defines:
+ % \sseq@thisnodename -- name we should give the pdfnode
+ % \sseq@thispos -- (x,y)
+ % \sseq@thispostotalnodes -- total number of nodes at (x,y)
+ % \sseq@thisposnodeindex -- index of this node
\sseq@needstikzfalse
+ % Apply first pass styles? TODO: What is this for again?
\sseq@options@firstpassmode
\sseq@thesseqstyle
\sseq@theclassstyle
@@ -606,12 +632,14 @@
\sseq@obj{#1.needstikz}
%
\sseq@outofrangetrue\relax % Mysterious that we need this \relax here...
+ % If we are in range, we'll draw the node, if not we just mark the coordinate.
\ifnum\sseq@tempx<\sseq@xmaxpp\relax\ifnum\sseq@tempx>\sseq@xminmm\relax\ifnum\sseq@tempy<\sseq@ymaxpp\relax\ifnum\sseq@tempy>\sseq@yminmm\relax
\sseq@outofrangefalse
\pgfscope
+ % Finish options setup
\let\tikz@options\pgfutil@empty
\let\tikz@alias=\pgfutil@empty
- \def\pgfkeysdefaultpath{/sseqpages/class/}
+ \def\pgfkeysdefaultpath{/sseqpages/class/}%
\sseq@options@secondpassmode
\sseq@thesseqstyle
\sseq@theclassstyle
@@ -628,15 +656,18 @@
\def\sseq@collections@featuretype{class}
\the\sseq@scope@toks
\sseq@obj{#1.options}
+ % Set up node position coordinate transform
\pgftransformshift{\pgfqpointxy{\numexpr\sseq@tempx +\sseq@xoffset-\sseq@x\relax}{\numexpr\sseq@tempy + \sseq@yoffset-\sseq@y\relax}}
\iftikz@fullytransformed\pgfgettransform{\savetransform}\fi
\pgftransformresetnontranslations
\sseq@globalrotatetransform
+ % Now the origin is at (x,y). Set up class placement offset.
\sseq@classplacementtransform
\sseq@obj@ifdef{#1.offset}{\sseq@obj{#1.offset}}{%
- \sseq@offset{\sseq@thisposnum}{\sseq@obj{partcoord.\sseq@thispos.numnodes}}%
+ \sseq@offset{\sseq@thisposnodeindex}{\sseq@thispostotalnodes}%
}%
\iftikz@fullytransformed\pgfsettransform{\savetransform}\else\pgftransformresetnontranslations\ifsseq@rotatelabels\sseq@globalrotatetransform\fi\fi
+ %
\tikz@options
% the value of \sseq@class@showname comes from styles. If there was a local option with showname, it's stored in #1.showname.
% local value takes priority.
@@ -649,118 +680,129 @@
\sseq@eval{\@nx\sseq@handleclassquotes@inner{\sseq@obj{#1.name}}{\sseq@class@showname}}
}{}
\fi
+ % Okay now we're ready to make the node
\ifsseq@needstikz
+ % The options code above put mode information into \tikz@mode which gets wiped by tikz
\let\sseq@mode\tikz@mode
- \tikzset{every text node part/.code/.expand once={\sseq@globalrotatetransform\sseq@classnodetextoptions{}}}%
\sseq@eval{%
- \@nx\node[/utils/exec={\let\@nx\tikz@mode\@nx\sseq@mode},
- /handlers/first char syntax/the character "/.initial=\@nx\sseq@handlequote
- ] (\sseq@thisnodename) {\unexpanded\@xp{\sseq@classnodetext}}
- [every text node part/.code={}];
+ \@nx\node[%
+ every text node part/.code/.expand once={\sseq@globalrotatetransform\sseq@classnodetextoptions{}},%
+ /utils/exec={\let\@nx\tikz@mode\@nx\sseq@mode}] % Set mode based on outer options
+ (\sseq@thisnodename) {\unexpanded\@xp{\sseq@classnodetext}};%
}%
\else
\tikz@node@textfont
- \sseq@setnodetext{\sseq@classnodetext}{\sseq@classnodetextoptions}
+ \sseq@setnodetext{\sseq@classnodetext}{\sseq@classnodetextoptions}%
\let\tikz@fig@name\sseq@thisnodename
\pgfmultipartnode{\tikz@shape}{\tikz@anchor}{\tikz@fig@name}{\sseq@drawnode}%
- \tikz@alias
+ \tikz@alias % makes extra names for this shape
\fi
- \sseq@obj{#1.labelnodes}
- \sseq@classlabelnodes % classlabelnodes comes from show name
- \sseq@obj@ifdef{#1.tooltip}{
- \pgfpointanchor{\sseq@thisnodename}{west}
- \pgf@xa=\pgf@x
- \pgfpointanchor{\sseq@thisnodename}{south}
- \pgf@ya=\pgf@y
-%
- \pgf@process{\pgfpointdiff{\pgfpointtransformed{\pgfpointanchor{\sseq@thisnodename}{west}}}{\pgfpointtransformed{\pgfpointanchor{\sseq@thisnodename}{east}}}}
- \pgf@xb=\pgf@x
- \pgf@process{\pgfpointdiff{\pgfpointtransformed{\pgfpointanchor{\sseq@thisnodename}{south}}}{\pgfpointtransformed{\pgfpointanchor{\sseq@thisnodename}{north}}}}
- \pgf@yb=\pgf@y
-%
- \setbox\tikz@tempbox=\hbox{
- \pgfinterruptpicture
- \sseqtooltip{\rule{\pgf@xb}{0pt}\rule{0pt}{\pgf@yb}}{\sseq@obj{#1.tooltip}}
- \endpgfinterruptpicture
- }
- {%
- \pgftransformshift{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
- \pgfapproximatenonlineartransformation%
- \pgfqboxsynced{\tikz@tempbox}%
- }%
- }{}
+ \sseq@obj{#1.labelnodes}%
+ \sseq@classlabelnodes % classlabelnodes comes from show name (I guess it can't put them into #1.labelnodes? TODO: why?)
+ \sseq@obj@ifdef{#1.tooltip}{\sseq@dotooltip{#1}}{}%
\endpgfscope
\fi\fi\fi\fi
+ % If the node is out of range, to save time we don't draw anything. However, structlines etc may depend on the out of range node,
+ % so we mark the coordinate.
\ifsseq@outofrange
\sseq@eval{\@nx\pgftransformshift{\@nx\pgfqpointxy{\numexpr\sseq@tempx+\sseq@xoffset-\sseq@x\relax}{\numexpr\sseq@tempy+\sseq@yoffset-\sseq@y\relax}}}%
\pgftransformresetnontranslations
\sseq@globalrotatetransform
\sseq@classplacementtransform
- \sseq@offset{\sseq@thisposnum}{\sseq@obj{partcoord.\sseq@thispos.numnodes}}
+ \sseq@offset{\sseq@thisposnodeindex}{\sseq@thispostotalnodes}%
\pgfcoordinate{\sseq@thisnodename}{\pgfpointorigin}%
\fi
\endgroup
}
+\def\sseq@dotooltip#1{%
+ \pgfpointanchor{\sseq@thisnodename}{west}%
+ \pgf@xa=\pgf@x
+ \pgfpointanchor{\sseq@thisnodename}{south}%
+ \pgf@ya=\pgf@y
+%
+ \pgf@process{\pgfpointdiff{\pgfpointtransformed{\pgfpointanchor{\sseq@thisnodename}{west}}}{\pgfpointtransformed{\pgfpointanchor{\sseq@thisnodename}{east}}}}%
+ \pgf@xb=\pgf@x
+ \pgf@process{\pgfpointdiff{\pgfpointtransformed{\pgfpointanchor{\sseq@thisnodename}{south}}}{\pgfpointtransformed{\pgfpointanchor{\sseq@thisnodename}{north}}}}%
+ \pgf@yb=\pgf@y
+%
+ \setbox\tikz@tempbox=\hbox{%
+ \pgfinterruptpicture
+ \sseqtooltip{\rule{\pgf@xb}{0pt}\rule{0pt}{\pgf@yb}}{\sseq@obj{#1.tooltip}}%
+ \endpgfinterruptpicture
+ }
+ {%
+ \pgftransformshift{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
+ \pgfapproximatenonlineartransformation%
+ \pgfqboxsynced{\tikz@tempbox}%
+ }%
+}
+
% #1 -- label text
% #2 -- options
+% Make the node textbox.
\def\sseq@setnodetext#1#2{%
- \setbox\pgfnodeparttextbox=\hbox{%
- \pgfscope%
- #2
- \tikzset{every text node part/.try}%
- \ifx\tikz@textopacity\pgfutil@empty%
+ \sseq@ifempty{#1}{% more often than not, the node is empty...
+ \setbox\pgfnodeparttextbox=\hbox{}%
+ }{%
+ \setbox\pgfnodeparttextbox=\hbox{%
+ \pgfscope%
+ #2
+ \tikzset{every text node part/.try}%
+ \ifx\tikz@textopacity\pgfutil@empty%
+ \else%
+ \pgfsetfillopacity{\tikz@textopacity}%
+ \pgfsetstrokeopacity{\tikz@textopacity}%
+ \fi%
+ \pgfinterruptpicture
+ \ifx\tikz@text@width\pgfutil@empty%
+ \tikz@textfont%
+ \else%
+ \begingroup%
+ \pgfmathsetlength{\pgf@x}{\tikz@text@width}%
+ \pgfutil@minipage[t]{\pgf@x}\leavevmode\hbox{}%
+ \tikz@textfont%
+ \tikz@text@action%
+ \fi%
+ \ifx\tikz@textcolor\pgfutil@empty%
+ \else%
+ \pgfutil@colorlet{.}{\tikz@textcolor}%
+ \fi%
+ \pgfsetcolor{.}%
+ \tikz@atbegin@node%
+ #1%
+ \tikz@atend@node%
+ \ifx\tikz@text@width\pgfutil@empty%
+ \else%
+ \pgfutil@endminipage%
+ \endgroup%
+ \fi%
+ \endpgfinterruptpicture
+ \endpgfscope%
+ }%
+ \ifx\tikz@text@width\pgfutil@empty%
\else%
- \pgfsetfillopacity{\tikz@textopacity}%
- \pgfsetstrokeopacity{\tikz@textopacity}%
+ \pgfmathsetlength{\pgf@x}{\tikz@text@width}%
+ \wd\pgfnodeparttextbox=\pgf@x%
\fi%
- \pgfinterruptpicture
- \ifx\tikz@text@width\pgfutil@empty%
- \tikz@textfont%
- \else%
- \begingroup%
- \pgfmathsetlength{\pgf@x}{\tikz@text@width}%
- \pgfutil@minipage[t]{\pgf@x}\leavevmode\hbox{}%
- \tikz@textfont%
- \tikz@text@action%
- \fi%
- \ifx\tikz@textcolor\pgfutil@empty%
+ \ifx\tikz@text@height\pgfutil@empty%
\else%
- \pgfutil@colorlet{.}{\tikz@textcolor}%
+ \pgfmathsetlength{\pgf@x}{\tikz@text@height}%
+ \ht\pgfnodeparttextbox=\pgf@x%
\fi%
- \pgfsetcolor{.}%
- \tikz@atbegin@node%
- #1%
- \tikz@atend@node%
- \ifx\tikz@text@width\pgfutil@empty%
- \else%
- \pgfutil@endminipage%
- \endgroup%
- \fi%
- \endpgfinterruptpicture
- \endpgfscope%
- }%
- \ifx\tikz@text@width\pgfutil@empty%
- \else%
- \pgfmathsetlength{\pgf@x}{\tikz@text@width}%
- \wd\pgfnodeparttextbox=\pgf@x%
- \fi%
- \ifx\tikz@text@height\pgfutil@empty%
- \else%
- \pgfmathsetlength{\pgf@x}{\tikz@text@height}%
- \ht\pgfnodeparttextbox=\pgf@x%
- \fi%
- \ifx\tikz@text@depth\pgfutil@empty%
- \else%
- \pgfmathsetlength{\pgf@x}{\tikz@text@depth}%
- \dp\pgfnodeparttextbox=\pgf@x%
- \fi%
+ \ifx\tikz@text@depth\pgfutil@empty%
+ \else%
+ \pgfmathsetlength{\pgf@x}{\tikz@text@depth}%
+ \dp\pgfnodeparttextbox=\pgf@x%
+ \fi%
+ }
}
+
+% A small part of the tikz main loop that has been paired down as much as possible for efficiency.
\def\sseq@drawnode{%
\pgfutil@tempdima=\pgflinewidth%
{%
\tikz@mode%
- %\iftikz@mode@clip \sseq@error@internal{Clip shouldn't happen here, but this error should be caught earlier}{}\fi %
\iftikz@mode@draw%
\iftikz@mode@double%
% Change line width
@@ -793,27 +835,27 @@
% #1 -- label text
% #2 -- options
-\def\sseq@drawlabel#1#2{
+\def\sseq@drawlabel#1#2{%
\bgroup\pgfscope
- \def\tikz@mode{}
+ \def\tikz@mode{}%
\let\sseq@tikz@transform@save\tikz@transform
- \pgfkeyssetvalue{/pgf/inner xsep}{2pt}
- \pgfkeyssetvalue{/pgf/inner ysep}{2pt}
+ \pgfkeyssetvalue{/pgf/inner xsep}{2pt}%
+ \pgfkeyssetvalue{/pgf/inner ysep}{2pt}%
\def\tikz@shape{rectangle}
- \let\tikz@transform\empty % The next line was set up to fix the classlabelstyle glitch
+ \let\tikz@transform\empty % The next line was set up to fix the classlabelstyle glitch (what does this mean?)
\sseq@options@secondpassmode
\sseq@thesseqstyle\sseq@thelabelstyle\sseq@theclasslabelstyle#2
\tikz@options
\pgftransformreset
- \pgftransformshift{\tikz@node@at}
+ \pgftransformshift{\tikz@node@at}%
\tikz@lib@pos@call
\tikz@transform
\tikz@mode
\let\tikz@transform\sseq@tikz@transform@save
- \sseq@setnodetext{\sseq@labeltextfn{#1}}{}
+ \sseq@setnodetext{\sseq@labeltextfn{#1}}{}%
\pgfmultipartnode{\tikz@shape}{\tikz@anchor}{label}{\sseq@drawnode}%
\ifsseq@pin
- \def\sseq@pinoptions{}
+ \def\sseq@pinoptions{}%
\let\tikz@options\empty
\let\tikz@mode\empty
\sseq@thepinstyle
@@ -821,11 +863,11 @@
\sseq@pinoptions
\tikz@options
\tikz@mode
- \sseq@drawedge@findsourcetarget{\tikz@fig@name}{}{label}{}
+ \sseq@drawedge@findsourcetarget{\tikz@fig@name}{}{label}{}%
\pgfpathmoveto{\sseq@sourcecoord}%
\pgfpathlineto{\sseq@targetcoord}%
\sseq@eval{\noexpand\pgfusepath{%
- draw
+ draw,
\iftikz@mode@fill fill,\fi
\iftikz@mode@draw draw,\fi
}}%
@@ -972,6 +1014,7 @@
\pgfpathlineto{\sseq@targetcoord}%
\pgfgetpath\thispath
\pgfusepath{discard}%
+ \pgfintersectionsortbysecondpath
\pgfintersectionofpaths{\pgfsetpath\sseq@theclippath}{\pgfsetpath\thispath}%
\ifcase\pgfintersectionsolutions\relax
% No intersections, but one or both endpoints may be out of range but still in clipping region due to scaling. Add ellipses as appropriate.
@@ -1004,6 +1047,7 @@
\def\sseq@drawedge@handletrickyedge{%
\ifsseq@draworphanedges
+ \pgfintersectionsortbysecondpath
\pgfintersectionofpaths{\pgfsetpath\sseq@therangepath}{\pgfsetpath\thispath}%
\ifnum\pgfintersectionsolutions=\z@
\sseq@drawedgefalse % don't draw orphan edges that never intersect actual range
@@ -1024,8 +1068,8 @@
\def\sseq@drawedge@handleorphan{%
- \def\sseq@sourcecoord{\pgfpointintersectionsolution{1}}%
- \def\sseq@targetcoord{\pgfpointintersectionsolution{2}}%
+ \def\sseq@sourcecoord{\pgfpointintersectionsolution{2}}%
+ \def\sseq@targetcoord{\pgfpointintersectionsolution{1}}%
\edef\temparrowstartspec{\@nx\pgfsetarrowsstart{\csname sseq@runoffarrow@start@\sseq@edgetype @spec\endcsname}}%
\edef\temparrowendspec{\@nx\pgfsetarrowsend{\csname sseq@runoffarrow@end@\sseq@edgetype @spec\endcsname}}%
\pgfcoordinate{tempa}{\sseq@sourcecoord}%
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/spectralsequences/sseqforeach.code.tex new/tex/latex/spectralsequences/sseqforeach.code.tex
--- old/tex/latex/spectralsequences/sseqforeach.code.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/tex/latex/spectralsequences/sseqforeach.code.tex 2019-02-19 23:18:17.000000000 +0100
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2019-02-18
%% License: Latex Project Public License
%%
%% File: sseqforeach.code.tex
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/spectralsequences/sseqkeys.code.tex new/tex/latex/spectralsequences/sseqkeys.code.tex
--- old/tex/latex/spectralsequences/sseqkeys.code.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/tex/latex/spectralsequences/sseqkeys.code.tex 2019-02-19 23:18:17.000000000 +0100
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2019-02-18
%% License: Latex Project Public License
%%
%% File: sseqkeys.code.tex
@@ -30,7 +30,6 @@
\protected\def\sseqset#1{\pgfqkeys{/sseqpages/userstyles}{#1}}
\def\sseq@sseqsetdirectory{/sseqpages/global/default}
-
\def\sseq@set{\pgfqkeys{/sseqpages}}
%%%
@@ -59,7 +58,7 @@
% Lots of options mainly do stuff on the drawing run, but still need to warn the sseq setup algorithms that they're around
% on the first pass. Some only do things on the first pass or only do things on the second pass.
% For example, shifts: shifts apply a coordinate transform on the second pass, but also need to factor into the coordinates of
-% classes etc which are computed at specification time not at draw time. So xshift=2 increases \sseq@x by 2 on it's first pass and
+% classes etc which are computed at specification time not at draw time. So xshift=2 increases \sseq@x by 2 on its first pass and
% applies a coordinate transform by 2cm on the second pass.
% normal mode does the firstpass options now and saves the secondpass options in \sseq@savedoptioncode for later use.
@@ -618,7 +617,7 @@
\pgfutil@in@{--}{#2}\ifpgfutil@in@
\sseq@getnumrange@range#1#2\sseq@nil
\else
- \edef#1{\the\numexpr#2}
+ \sseq@getnumrange@range#1#2--\sseq@infinity\sseq@nil
\fi
}
\def\sseq@getnumrange@range#1#2--#3\sseq@nil{\edef#1{\the\numexpr#2}\@xp\edef\csname\sseq@macroname#1max\endcsname{\the\numexpr#3}}
@@ -918,7 +917,6 @@
\def\sseq@mapfeaturelist#1{\def\\##1{#1}\sseq@featurelist}
\def\sseq@familylist{}
-
\def\sseq@collections@featuretype{}
\def\sseqnewfamily#1{%
% Make five bins associated to the new family, one for each feature type. Add them to storelist with empty defaults.
@@ -933,6 +931,7 @@
%
% A flag to decide whether to draw the family. Set/unset using "draw family" and "no family".
\@xp\sseq@addtostorelist\csname sseq@#1@maybedraw\endcsname{}
+ \makeatletter % the tikz people added an extra \scantokens into ecode...
\pgfqkeys{/sseqpages/global}{%
#1 style/.ecode={%
\@nx\sseq@addstylecodetomacro\@xp\@nx\sseq@tempcmd@class{/sseqpages/class,/sseqpages/collections/class}{##1}%
@@ -1289,19 +1288,24 @@
}
%%% Define global keys setter
+% Most keys are run twice -- once in the "/sseqpages/global" directory and once in the "/sseqpages/global/default" directory
+% The default "default" behavior is to add the option to the "sseq" style.
+% Keys prefixed by a tilde or using an "ignored" handler are only run in the "/sseqpages/global directory".
\gdef\sseq@globalkeys#1{%
\let\sseq@storetilde~%
\def~{}%
- \pgfqkeys{/sseqpages/global}{#1}%
- \sseq@globalkeys@#1,\sseq@nil
+ \pgfqkeys{/sseqpages/global}{#1}% run keys in global directory
+ \sseq@globalkeys@#1,\sseq@nil % handle defaults
\let~\sseq@storetilde
}
\def\sseq@globalkeys@#1,{%
\sseq@tempiftrue
- \sseq@keys@removehandler{#1}%
- \ifsseq@tempif
+ \sseq@keys@removehandler{#1}% this sets \sseq@tempif to be false if it has an ignored handler
+ % It also sets \sseq@temp to be the key.
+ \ifsseq@tempif % If not ignored handler
\pgfkeys{/sseqpages/\sseq@temp/.sseq @ global only}%
+ % Check if no previous default behavior is defined, and if not, define it to pass key to sseqs.
\pgfkeysifdefined{/sseqpages/global/default/\sseq@temp/.@cmd}{}{%
\pgfkeys{/sseqpages/global/default/\sseq@temp/.ecode={\@nx\pgfkeysalso{sseqs={\sseq@temp}}}}%
}%
@@ -1313,6 +1317,7 @@
\sseq@globalkeys@next
}
+% iterate over keys, throwing away empty keys and ones that start with ~.
\def\sseq@globalkeys@next{%
\@ifnextchar\sseq@nil{\@gobble}{%
\@ifnextchar~{\sseq@globalkeys@eatentry}{%
@@ -1323,6 +1328,7 @@
}%
}
+% Handlers to ignore for
\def\sseq@keys@ignorehandlers{%
\\{value forbidden}\\{value required}\\{default}%\\{sseq store in}\\{sseq is if}%
\\{sseq default code}\\{sseq default code 2 args}%
@@ -1386,7 +1392,7 @@
\sseq@thepagecount=\sseq@thepage\relax
\let\page\sseq@thepage
\edef\sseq@thepagemm{\the\numexpr\sseq@thepagecount-1\relax}
- \ifx\sseq@thepagemax\undefined
+ \ifx\sseq@thepagemax\sseq@infinity
\edef\sseq@thepagemaxpp{\the\numexpr\sseq@thepagecount+1\relax}
\else
\ifnum\sseq@thepagemax=\z@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/spectralsequences/sseqloadstore.code.tex new/tex/latex/spectralsequences/sseqloadstore.code.tex
--- old/tex/latex/spectralsequences/sseqloadstore.code.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/tex/latex/spectralsequences/sseqloadstore.code.tex 2019-02-19 23:18:17.000000000 +0100
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2019-02-18
%% License: Latex Project Public License
%%
%% File: sseqloadstore.code.tex
@@ -91,7 +91,8 @@
\def\sseq@obj@ifundef#1{\@ifundefined{\sseq@obj@fullname{#1}}}
\def\sseq@obj@ifdef#1#2#3{\@ifundefined{\sseq@obj@fullname{#1}}{#3}{#2}}
\def\sseq@obj@useifdef@else#1#2{\@ifundefined{\sseq@obj@fullname{#1}}{#2}{\sseq@obj{#1}}}
-\def\sseq@obj@inc#1{\bgroup\sseq@tempcount\sseq@obj{#1}\relax\advance\sseq@tempcount\@ne\sseq@obj@xdef{#1}{\the\sseq@tempcount}\egroup}
+\def\sseq@obj@inccheckdef#1{\sseq@obj@ifundef{#1}{\sseq@obj@gdef{#1}{1}}{\sseq@obj@inc{#1}}}
+\def\sseq@obj@inc#1{\sseq@obj@xdef{#1}{\the\numexpr\sseq@obj{#1}+1}}
\def\sseq@obj@gaddto#1{\sseq@obj@ifundef{#1}{\sseq@obj@gdef{#1}}{\@xptwo\sseq@g@addto@macro\sseq@obj{#1}}}
\def\sseq@obj@xaddto#1{\sseq@obj@ifundef{#1}{\sseq@obj@xdef{#1}}{\@xptwo\sseq@x@addto@macro\sseq@obj{#1}}}
\def\sseq@obj@xoaddto#1{\sseq@obj@ifundef{#1}{\sseq@obj@xodef{#1}}{\@xp\sseq@g@addto@macro\csname \sseq@obj@fullname{#1}\@xp\endcsname\@xp}}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/spectralsequences/sseqmacromakers.code.tex new/tex/latex/spectralsequences/sseqmacromakers.code.tex
--- old/tex/latex/spectralsequences/sseqmacromakers.code.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/tex/latex/spectralsequences/sseqmacromakers.code.tex 2019-02-19 23:18:17.000000000 +0100
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2019-02-18
%% License: Latex Project Public License
%%
%% File: sseqmacromakers.code.tex
@@ -13,7 +13,6 @@
%% For the user commands, sets up call stack, thiscall, etc
%%
-
\ExplSyntaxOn
%%% Install user commands
@@ -30,33 +29,42 @@
% Capital U argument type is "Until" but puts back the token when it's done.
% So xparse changed a bunch between the copy pushed to CTAN on February 7th and the copy pushed on February 9th
+\newtoks\sseq@patchxparseUnewcode
+\sseq@patchxparseUnewcode{
+ \cs_new_protected:Npn \sseq__xparse_grab_U:w #1#2 \__xparse_run_code:
+ { \sseq__xparse_grab_U_aux:nnN {#1} {#2} \cs_set_protected_nopar:Npn }
+ \cs_new_protected:Npn \sseq__xparse_grab_U_aux:nnN #1#2#3
+ {
+ \tl_set:Nn \l__xparse_signature_tl {#2}
+ \exp_after:wN #3 \l__xparse_fn_tl ##1 #1
+ { \__xparse_add_arg:n {##1} #1 }
+ \l__xparse_fn_tl
+ }
+ \cs_new_protected:Npn \sseq__xparse_add_type_U:w #1
+ {
+ \__xparse_flush_m_args:
+ \__xparse_add_default:
+ \__xparse_add_grabber_mandatory:N U
+ \tl_put_right:Nn \l__xparse_signature_tl { {#1} }
+ \__xparse_prepare_signature:N
+ }
+}
+
+
\@ifpackagelater{xparse}{2017/02/08}{
- \ifsseq@patchxparseU
- % NEW CODE
- \cs_new_protected:Npn \sseq__xparse_grab_U:w #1#2 \__xparse_run_code:
- { \sseq__xparse_grab_U_aux:nnN {#1} {#2} \cs_set_protected_nopar:Npn }
- \cs_new_protected:Npn \sseq__xparse_grab_U_aux:nnN #1#2#3
- {
- \tl_set:Nn \l__xparse_signature_tl {#2}
- \exp_after:wN #3 \l__xparse_fn_tl ##1 #1
- { \__xparse_add_arg:n {##1} #1 }
- \l__xparse_fn_tl
- }
- \cs_new_protected:Npn \sseq__xparse_add_type_U:w #1
- {
- \__xparse_flush_m_args:
- \__xparse_add_default:
- \__xparse_add_grabber_mandatory:N U
- \tl_put_right:Nn \l__xparse_signature_tl { {#1} }
- \__xparse_prepare_signature:N
- }
- \else
- % Assumptions failed, so just make U give an error (this isn't such a big deal since we don't use it for \d anymore).
- \cs_new_protected:Npn \sseq__xparse_add_type_U:w #1
- {
- \sseq@error{U-xparse-incompatible}
- }
- \fi
+ \@ifpackagelater{xparse}{2018/10/17}{
+ \ifsseq@patchxparseU
+ \the\sseq@patchxparseUnewcode
+ \else
+ % Assumptions failed, so just make U give an error (this isn't such a big deal since we don't use it for \d anymore).
+ \cs_new_protected:Npn \sseq__xparse_add_type_U:w #1
+ {
+ \sseq@error{U-xparse-incompatible}
+ }
+ \fi
+ }{
+ \the\sseq@patchxparseUnewcode
+ }
}{
% OLD CODE
\cs_new_protected:Npn \sseq__xparse_grab_U:w #1#2 \l__xparse_args_tl
@@ -79,16 +87,34 @@
}
}% END \@ifpackagelater
-
-\cs_new_protected:Npn \sseq__xparse_normalize_type_U:w #1 {
- \quark_if_recursion_tail_stop_do:nn {#1} { \__xparse_bad_arg_spec:wn }
- \__xparse_normalize_check_lu:N U
- \__xparse_add_arg_spec:n { U {#1} }
- \int_incr:N \l__xparse_mandatory_args_int
- \tl_clear:N \l__xparse_last_delimiters_tl
- \__xparse_normalize_arg_spec_loop:n
+% On 2018/10/01, the commit "Reimplement the ignore_spaces peek functions in terms of peek_spaces" did what it says.
+% Inside of \sseq@DeclareDocumentCommandAs we \let \peek_meaning to \peek_meaning_ignore_spaces
+% which is bad news if \peek_meaning_ignore_spaces is defined in terms of \peek_meaning. This fixes this bug by
+% redefining \peek_meaning_ignore_spaces in terms of a copy of \peek_meaning.
+\@ifpackagelater{expl3}{2018/10/01}{
+ \cs_set_eq:NN\copy_of_peek_meaning:NTF\peek_meaning:NTF
+ \cs_set:Npn\peek_meaning_ignore_spaces:NTF#1#2#3{\peek_remove_spaces:n{\copy_of_peek_meaning:NTF#1{#2}{#3}}}
+ \cs_set_eq:NN\copy_of_peek_meaning_remove:NTF\peek_meaning_remove:NTF
+ \cs_set:Npn\peek_meaning_remove_ignore_spaces:NTF#1#2#3{\peek_remove_spaces:n{\copy_of_peek_meaning_remove:NTF#1{#2}{#3}}}
+}{}
+
+\@ifpackagelater{xparse}{2018/10/17}{
+ \cs_new_protected:Npn \sseq__xparse_normalize_type_U:w #1 {
+ \quark_if_recursion_tail_stop_do:nn {#1} { \__xparse_bad_arg_spec:wn }
+ \__xparse_normalize_check_lu:N U
+ \__xparse_add_arg_spec_mandatory:n { U {#1} }
+ \__xparse_normalize_arg_spec_loop:n
+ }
+}{
+ \cs_new_protected:Npn \sseq__xparse_normalize_type_U:w #1 {
+ \quark_if_recursion_tail_stop_do:nn {#1} { \__xparse_bad_arg_spec:wn }
+ \__xparse_normalize_check_lu:N U
+ \__xparse_add_arg_spec:n { U {#1} }
+ \int_incr:N \l__xparse_mandatory_args_int
+ \tl_clear:N \l__xparse_last_delimiters_tl
+ \__xparse_normalize_arg_spec_loop:n
+ }
}
-
% Expandable commands are a menace to us because they define a bunch of helper commands that we then have to keep track of.
% We are too lazy to do this, so force \l__xparse_grab_expandably_bool to be false.
% This is backwards compatible (I think) because \bool_set_false:N just performs a chardef (no existence check)
@@ -179,6 +205,9 @@
}
\let\begingroupa\begingroup
\let\begingroupb\begingroup
+\newtoks\sseq@macro@setthiscall@toks
+\newtoks\sseq@macro@defaultarggetters@toks
+
\cs_new_protected:Npn\DeclareSseqCommand#1#2#3{%
\cs_if_exist:cTF { sseq @ builtin @ \cs_to_str:N #1 } {\sseq@error@x{wont-override-system-macro}{\string#1}\sseq@break} {}
\cs_if_free:cT { sseq @ usermacro @ \cs_to_str:N #1 } {
@@ -200,18 +229,18 @@
% You might think we could skip this patching, and it's probably possible.
% However, this is responsible for turning the #'s of catcode other into #'s of catcode arg. I don't have as good of a way to do that.
% Also, this allows me to use \sseq@parseargspec after defining the command, so I don't have to run any error checking inside of it
- % because if the argspec is invalid, \DeclareDocumentCommand will let me know.\sseq@temptoks
+ % because if the argspec is invalid, \DeclareDocumentCommand will let me know.
\cs_if_exist:cTF{ sseq @ usermacro @ \cs_to_str:N #1 @@unique@@ start \c_space_tl code }{
\patchcmd:cnfnn{ sseq @ usermacro @ \cs_to_str:N #1 @@unique@@ start \c_space_tl code }{\endgroup{}}{
\@xp\endgroup
\@xp\begingroupa
- \the\sseq@temptoks
+ \the\sseq@macro@setthiscall@toks
}{}{\sseq@error@x{usermacro-failed-patch}{\string#1}}
\cs_gset_eq:cc { sseq @ usermacro @ \cs_to_str:N #1 @@unique@@ start \c_space_tl code } { sseq @ usermacro @ \cs_to_str:N #1 @@unique@@ start \c_space_tl code}
}{
\pretocmd:cfnn{ sseq @ usermacro @ \cs_to_str:N #1 @@unique@@ start }{
\@xp\begingroupb
- \the\sseq@temptoks
+ \the\sseq@macro@setthiscall@toks
}{}{\sseq@error@x{usermacro-failed-patch}{\string#1}}
}
\cs_gset_eq:cc { sseq @ usermacro @ \cs_to_str:N #1 } { sseq @ usermacro @ \cs_to_str:N #1 }
@@ -257,7 +286,7 @@
\ifsseq@error
\@xp\sseq@break
\fi
- \sseq@temptoks\@xp{\sseq@SseqGroup@argspec} % This gets added to the command by DeclareSseqCommand
+ \sseq@macro@setthiscall@toks\@xp{\sseq@SseqGroup@argspec} % This gets added to the command by DeclareSseqCommand
#1#2{od()}{%
%can't use \sseq@atbeginusermacro@msgsetup until next spot b/c don't know what the whole call looks like yet
\IfNoValueTF{##1}{\def\sseq@options{}}{\def\sseq@options{##1}}%
@@ -267,20 +296,19 @@
\sseqnewgroup@splitcoord##2\sseq@nil
}%
\csname sseq @ usermacro @ \sseq@macroname #2 @ helper \@xp\endcsname\@gobbletwo % This gobble eats the endgroup added by sseqDeclareDocumentCommand
- }%
-
+ }
\sseq@parseargspec@newgroup{#2}{#3}%
% You might think we could skip this patching, and it's probably possible.
% However, this is responsible for turning the #'s of catcode other into #'s of catcode arg. I don't have as good of a way to do that.
\cs_if_exist:cTF{ sseq @ usermacro @ \cs_to_str:N #2 @ helper \c_space_tl code }{
\pretocmd:cfnn { sseq @ usermacro @ \cs_to_str:N #2 @ helper \c_space_tl code }{
- \the\sseq@temptoks
+ \the\sseq@macro@setthiscall@toks
}{}{\sseq@error@x{usermacro-failed-patch}{\string#1}}
% globalize definition:
\cs_gset_eq:cc { sseq @ usermacro @ \cs_to_str:N #2 @ helper \c_space_tl code } { sseq @ usermacro @ \cs_to_str:N #2 @ helper \c_space_tl code }
}{
\pretocmd:cfnn { sseq @ usermacro @ \cs_to_str:N #2 @ helper }{
- \the\sseq@temptoks
+ \the\sseq@macro@setthiscall@toks
}{}{\sseq@error@x{usermacro-failed-patch}{\string#1}}
}
\cs_gset_eq:cc { sseq @ usermacro @ \cs_to_str:N #2 @ helper } { sseq @ usermacro @ \cs_to_str:N #2 @ helper } % globalize definition
@@ -310,20 +338,20 @@
\bgroup\catcode`\#=12\relax
\gdef\sseq@SseqGroup@argspec{
\sseq@eval{\global\sseq@groupargspectoks{\IfNoValueF{#1}{\unexpanded{[#1]}}\IfNoValueF{#2}{\unexpanded{(#2)}}}}
- \@gobbletwo
+ \@gobbletwo % What does this \@gobbletwo do?
}
\gdef\sseq@thearg{#\the\sseq@tempcount}
\egroup
% When there are arguments with default values (O, D, R, G), we need to put them into temporary macros to compare them and see if they are the default value
-% that's what temptoksii is for.
+% that's what \sseq@macro@defaultarggetters@toks is for.
\def\sseq@parseargspec#1#2{%
\sseq@tempcount=\z@
\sseq@temptoks{\@nx#1}% Holds the stuff that goes in \esetthiscall (so most stuff)
- \sseq@temptoksii{}
+ \sseq@macro@defaultarggetters@toks{}
\sseq@parseargspec@#2\sseq@nil
- \sseq@eval{\sseq@temptoks{\the\sseq@temptoksii\@nx\sseq@usermacro@esetthiscall{\the\sseq@temptoks}}}
+ \sseq@eval{\sseq@macro@setthiscall@toks{\the\sseq@macro@defaultarggetters@toks\@nx\sseq@usermacro@esetthiscall{\the\sseq@temptoks}}}
}
% For NewGroup:
@@ -331,12 +359,11 @@
\def\sseq@parseargspec@newgroup#1#2{%
\sseq@tempcount=\z@
\sseq@temptoks{}
- \sseq@temptoksii{}%
+ \sseq@macro@defaultarggetters@toks{}%
\sseq@parseargspec@#2\sseq@nil
- % What's the second temptoks for?
\sseq@eval{
- \sseq@temptoks{
- \the\sseq@temptoksii
+ \sseq@macro@setthiscall@toks{
+ \the\sseq@macro@defaultarggetters@toks
\@nx\sseq@esetthiscall{
\@nx\@nx\@nx#1
\@nx\the\sseq@groupargspectoks
@@ -375,7 +402,7 @@
}
\def\sseq@parseargspec@setargdefault#1{%
- \sseq@e@addto@toks\sseq@temptoksii{%
+ \sseq@e@addto@toks\sseq@macro@defaultarggetters@toks{%
\def\@xp\@nx\csname sseq@parseargspec@temparg\@alph\sseq@tempcount\endcsname{\sseq@thearg}%
\def\@xp\@nx\csname sseq@parseargspec@tempdefault\@alph\sseq@tempcount\endcsname{\unexpanded{#1}}%
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/spectralsequences/sseqmain.code.tex new/tex/latex/spectralsequences/sseqmain.code.tex
--- old/tex/latex/spectralsequences/sseqmain.code.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/tex/latex/spectralsequences/sseqmain.code.tex 2019-02-19 23:18:17.000000000 +0100
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2019-02-18
%% License: Latex Project Public License
%%
%% File: sseqmain.code.tex
@@ -32,15 +32,15 @@
\def\sseqdata{\@ifnextchar[{\sseqdata@}{\sseqdata@[]}}%}
\def\sseqdata@[#1]{%
- \edef\sseq@restorefont{\font@name}
+ \edef\sseq@restorefont{\font@name}%
\selectfont\nullfont % Avoid space hazards!
- \def\par{}
+ \def\par{}%
%
\ifx\pgfpictureid\@undefined\else %Uh-oh, we're inside tikz.
\sseq@error@n{env-inside-tikz}{sseqdata}\@xp\sseq@breakdataenv
\fi
- \ifsseq@inprogress % Uh-oh, we're already in a sseq environment. This is not good.
+ \ifsseq@inprogress % Uh-oh, we're already in a sseq environment.
\sseq@error@n{env-inside-sseq}{sseqdata}\@xp\sseq@breakdataenv
\fi
\sseq@inprogresstrue
@@ -63,11 +63,11 @@
\sseq@installmacros
\sseq@installmsghooks
\sseq@install@xparse@Uarggrabber
- % The behavior of xmax and xmin is very particular, so it's best not to mess with them.
+ % The behavior of xmax and xmin is very particular, so it's best not to mess with them.
% In particular, they shouldn't be expanded until printing no matter what, but we don't want
% \pgfmathparse to barf on them. \pgfmathparse really doesn't like engine protected macros,
- % so in no case should this be engine protected. (Wish we could test an argument for the presence
- % of engine protected macros). If we try to do that, \sseq@ifpgfmathexpr will break in
+ % so in no case should this be engine protected. (Wish we could test an argument for the presence
+ % of engine protected macros). If we try to do that, \sseq@ifpgfmathexpr will break in
% \sseq@tikzprimitives@coords@notaclass@handle@.
\def\xmin{\protect\sseq@xmin}\def\xmax{\protect\sseq@xmax}
\def\ymin{\protect\sseq@ymin}\def\ymax{\protect\sseq@ymax}
@@ -108,11 +108,11 @@
}
% Just store all the settings
-\def\endsseqdata{
+\def\endsseqdata{%
\let\sseq@error@setup\sseq@error@setup@noinfo
- \sseq@checkend{sseqdata}
+ \sseq@checkend{sseqdata}%
\sseq@savedpaths@add{\endgroup} % prevent some of the two-pass user macros horrors
- \xdef\sseq@restorestyles{\sseq@stylelist}
+ \xdef\sseq@restorestyles{\sseq@stylelist}%
\sseq@storecmds
\ignorespacesafterend
\sseq@breakpoint
@@ -121,9 +121,9 @@
\def\sseqpage{\@ifnextchar[{\sseqpage@}{\sseqpage@[]}} %]
\def\sseqpage@[#1]{%
- \edef\sseq@restorefont{\font@name}
+ \edef\sseq@restorefont{\font@name}%
\selectfont\nullfont % Avoid space hazards!
- \def\par{}
+ \def\par{}%
%
\ifx\pgfpictureid\@undefined\else %Uh-oh, we're inside tikz.
\sseq@error@n{env-inside-tikz}{sseqpage}\@xp\sseq@breakpageenv
@@ -248,7 +248,7 @@
{from \sseq@xmin\space to \sseq@xmax\space (xmax - xmin = \the\numexpr\sseq@xmax-\sseq@xmin)}
{\the\sseq@tempcount}% max x range
{\pgfmathresult}% max xscale
- \@xp\sseq@break
+ %\@xp\sseq@break
\fi
%
\sseq@tempdimen = \dimexpr \textheight - \sseq@clip@padding@top - \sseq@yaxis@end@extend - \sseq@yaxis@start@extend - \sseq@xaxisgap \relax
@@ -355,7 +355,7 @@
% Shorthand for sseqpage with empty body
\def\printpage[#1]{%
- \begin{sseqpage}[#1]
+ \begin{sseqpage}[#1]%
\end{sseqpage}%
}
@@ -381,8 +381,8 @@
\sseq@savedpaths
\sseq@g@addto@macro#1{\endgroup}
\endgroup
- \@xp\let\csname\sseq@macroname#1 code\endcsname\sseq@copymacro
- \DeclareSseqGroup #1 {} { \csname\sseq@macroname#1 code\endcsname }
+ \@xp\let\csname\sseq@macroname#1 copiedcode\endcsname\sseq@copymacro
+ \DeclareSseqGroup #1 {} { \csname\sseq@macroname#1 copiedcode\endcsname }
\let\sseq@savedpaths\sseq@savedpaths@save
}
@@ -420,64 +420,64 @@
-\ifsseq@draftmode % Okay, have to dummy out all the main commands.
- % Only add tikz background paths to the savedpaths. We need to draw background paths because they might change the bounding box!
- \sseq@setsavedpaths@draftmode
-%
- % All we want to do here is record the range. Have to process options in order to figure out where it is.
- \sseq@DeclareDocumentCommand\class{or()}{%
- \begingroup
- \sseq@loadinputline
- \IfNoValueT{#2}{\sseq@break}%
- \sseq@xsetthiscall{\string\class\IfNoValueF{#1}{[\unexpanded{#1}]}\unexpanded{(#2)}}%
- \sseq@options@firstpassmode
- \the\sseq@sseqstyle
- \the\sseq@classstyle
- \sseq@options@normalmode
- \IfNoValueF{#1}{%
- \sseq@processoptions{class}{#1}% Outputs result into \sseq@savedoptioncode
- }%
- \sseq@cparsecoord{#2}{}%
- \sseq@xminmax{\xcoord}{\ycoord}%
- \sseq@yminmax{\xcoord}{\ycoord}%
- \sseq@pushstack@\coord % also need the class stack to calculate other \class commands.
- \sseq@cleanup@obj{partcoord.(\partialcoord).numnodes}%
- \ifnum\nodenum=\@ne
- \sseq@obj@gdef{partcoord.(\partialcoord).numnodes}{0}%
- \fi
- \sseq@obj@xdef{partcoord.(\partialcoord).numnodes}{\nodenum}%
- \edef\classname{class.\coord[0]}%
- \ifx\sseq@class@tag\pgfutil@empty\else
- \sseq@obj@ifdef{partcoord.(\partialcoord).tag.\sseq@class@tagprefix\sseq@class@tag}{%
- \sseq@error@xx{class-tag-already-defined}{\sseq@class@tagprefix\sseq@class@tag}{(\partialcoord)}% could be warning
- }{}%
- \sseq@cleanup@obj{partcoord.(\partialcoord).tag.\sseq@class@tagprefix\sseq@class@tag}%
- \sseq@obj@xdef{partcoord.(\partialcoord).tag.\sseq@class@tagprefix\sseq@class@tag}{\nodenum}%
- \fi
- \ifx\sseq@class@name\pgfutil@empty\else
- \sseq@cleanup@obj{\classname.name}
- \sseq@cleanup@obj{class.namedclass.\detokenize\@xp{\sseq@class@name}}
- \sseq@namehandler
- \sseq@obj@xdef{\classname.name}{\sseq@class@name}
- \sseq@obj@xdef{class.namedclass.\detokenize\@xp{\sseq@class@name}}{\coordnopar}
- \fi
- \sseq@breakpoint
- \endgroup
- }
- % Now the rest of these can be no-ops
- \sseq@DeclareDocumentCommand\classoptions{od()}{}
- \sseq@DeclareDocumentCommand\replaceclass{od()}{}
- \def\sseq@d@main#1#2#3#4#5{} % makes both \d and \doptions do nothing
- \sseq@DeclareDocumentCommand\structline{od()d()}{}
- \sseq@DeclareDocumentCommand\structlineoptions{od()d()}{}
- \sseq@DeclareDocumentCommand\circleclasses{or()r()}{}
- \endinput
-\fi
\protected\def\sseq@xcoord{}\protected\def\sseq@ycoord{}
+
+%%% "Quick" commands for "compiled" code.
+\def\sseq@qclass(#1,#2){
+ \sseq@obj@inccheckdef{partcoord.(#1,#2).numnodes}
+ \edef\tempn{\sseq@obj{partcoord.(#1,#2).numnodes}}
+ \edef\classname{class.(#1,#2,\tempn)}
+ \sseq@obj@xdef{\classname.n}{\tempn}
+ \sseq@obj@xdef{\classname.num}{0}
+ \sseq@obj@xdef{\classname[0].page}{\sseq@infinity}
+ \sseq@savedpaths@addclass{class.(#1,#2,\tempn)}
+}
+\def\sseq@qclassnamed(#1,#2)#3{
+ \sseq@qclass(#1,#2)
+ \def\sseq@class@name{#3}
+ \sseq@obj@xdef{\classname[0].name}{\sseq@class@name}
+ \sseq@obj@xdef{class.namedclass.\detokenize\@xp{\sseq@class@name}}{#1,#2,\tempn}
+}
+
+\def\sseq@qdnamed#1(#2)(#3){\sseq@eval{\@nx\sseq@qd#1(\sseq@obj{class.namedclass.\detokenize{#2}})(\sseq@obj{class.namedclass.\detokenize{#3}})}}
+\def\sseq@qd#1(#2,#3,#4)(#5,#6,#7){
+ \bgroup
+ \def\sseq@dname{d.#1(#2,#3,#4)(#5,#6,#7)}
+ \def\source{(#2,#3,#4)}
+ \def\target{(#5,#6,#7)}
+ \sseq@obj@gdef{\sseq@dname.page}{#1}
+ \sseq@obj@gdef{\sseq@dname.source}{(#2,#3,#4)}
+ \sseq@obj@gdef{\sseq@dname.target}{(#5,#6,#7)}
+ \sseq@d@setpageminrec{class.\source}{#1}{source}% automatically handles \sseq@cleanup@obj
+ \sseq@d@setpageminrec{class.\target}{#1}{target}
+ \sseq@savedpaths@adddifferential{\sseq@dname}
+ \egroup
+}
+
+\def\sseq@qstructlinenamed(#1)(#2){\sseq@eval{\@nx\sseq@qstructline(\sseq@obj{class.namedclass.\detokenize{#1}})(\sseq@obj{class.namedclass.\detokenize{#2}})}}
+\def\sseq@qstructline(#1,#2,#3)(#4,#5,#6){
+ \def\source{(#1,#2,#3)}
+ \def\target{(#4,#5,#6)}
+ \sseq@obj@xdef{structline.\source\target.num}{0}
+ \def\sseq@pagemin{0}
+ \edef\sseq@structlinename{structline.\source\target[\sseq@obj{structline.\source\target.num}]}
+ \sseq@cleanup@obj{\sseq@structlinename.page}
+ \sseq@obj@xdef{\sseq@structlinename.page}{\sseq@infinity}
+ \sseq@obj@xdef{\sseq@structlinename.pagemin}{\sseq@pagemin}
+ \sseq@obj@xdef{\sseq@structlinename.source}{\source}
+ \sseq@obj@xdef{\sseq@structlinename.target}{\target}
+ \sseq@class@adddependence{class.\source}{\sseq@structlinename}% If the source or target is already dead, this will set structlinename.page
+ \sseq@class@adddependence{class.\target}{\sseq@structlinename}
+ \sseq@savedpaths@addstructline{structline.\source\target}
+ %\sseq@cleanup@obj{\sseq@structlinename.options}
+ %\sseq@obj@xdef{\sseq@structlinename.options}{\ifsseq@needstikz\@nx\sseq@needstikztrue\fi\unexpanded\@xp{\sseq@savedoptioncode}}
+}
+
+
%%%%%
%%
%% The main commands
@@ -930,7 +930,7 @@
\egroup
}
-% #1 -- class
+% #1 -- object
% #2 -- page
% If there is a class #1 drawn on page #2, set \sseq@gen to be the generation of that class, otherwise set \sseq@gen to be -1.
\def\sseq@obj@pagetogen#1#2{
@@ -1021,20 +1021,20 @@
\def\sseq@d@main#1#2#3#4#5{%
\sseq@options@firstpassmode
- \def\sseq@edgetype{differential}
+ \def\sseq@edgetype{differential}%
\the\sseq@sseqstyle
\the\sseq@edgestyle
\the\sseq@differentialstyle
\the\sseq@scope@toks
\sseq@options@normalmode
- \IfNoValueF{#2}{
+ \IfNoValueF{#2}{%
\sseq@processoptions{differential}{#2}% Outputs result into \sseq@savedoptioncode
- }
+ }%
\sseq@xsetthiscall{\@xp\string\csname#1\endcsname\IfNoValueF{#2}{\unexpanded{[#2]}}\unexpanded{#3}\IfNoValueF{#4}{\unexpanded{(#4)}}\IfNoValueF{#5}{\unexpanded{(#5)}}}%
\sseq@ifintexpr{#3}{%
\sseq@tempcount=\numexpr#3\relax % this is a convenient way to get rid of spaces because #3 has to be a number
}{%
- \sseq@error@n{d-invalid-page}{#3}\sseq@break%
+ \sseq@error@n{d-invalid-page}{#3}\sseq@break
}%
\sseq@eval{\@nx\sseq@dparsecoord{\the\sseq@tempcount}{\IfNoValueTF{#4}{\lastclass0}{\unexpanded{#4}}}{\unexpanded{#5}}}
\sseq@eval{\unexpanded{\csname sseq@d@#1\endcsname{#2}}{\the\sseq@tempcount}}%
@@ -1196,7 +1196,7 @@
\bgroup
\sseq@eval{
\@nx\sseq@drawedge\sseq@obj{#1.source}\sseq@obj{#1.target}{differential}{%
- \@xptwo\@nx\sseq@obj{#1.options}
+ \@nx\sseq@obj{#1.options}
}
}
\egroup
@@ -1295,7 +1295,7 @@
\endgroup
}
\def\sseq@structline@structline{
- \@ifundefined{sseq@structline@pagemax}{}{\sseq@error{structline-no-page-max}}% could be warning
+ \@ifundefined{sseq@structline@pagemax}{}{\ifnum\sseq@structline@pagemax=\sseq@infinity\else \sseq@error{structline-no-page-max}\fi}% could be warning
\ifnum\sseq@pagemin<\sseq@obj{class.\source[\sseq@obj{class.\source.num}].page}\relax\else
\sseq@error{structline-stillborn}
\sseq@breakfi
@@ -1462,6 +1462,66 @@
\def\sseq@structline@draw#1{\sseq@eval{\@nx\sseq@drawedge\sseq@obj{#1.source}\sseq@obj{#1.target}{structline}{\@nx\sseq@obj{#1.options}}}}
+%% This is a dumb place to put this. It has to be after the differential commands are defined.
+\ifsseq@draftmode % Okay, have to dummy out all the main commands.
+ % Only add tikz background paths to the savedpaths. We need to draw background paths because they might change the bounding box!
+ \sseq@setsavedpaths@draftmode
+ \let\sseq@handlequote\@gobble
+%
+ % All we want to do here is record the range. Have to process options in order to figure out where it is.
+ \sseq@DeclareDocumentCommand\class{or()}{%
+ \begingroup
+ \sseq@loadinputline
+ \IfNoValueT{#2}{\sseq@break}%
+ \sseq@xsetthiscall{\string\class\IfNoValueF{#1}{[\unexpanded{#1}]}\unexpanded{(#2)}}%
+ \sseq@options@firstpassmode
+ \the\sseq@sseqstyle
+ \the\sseq@classstyle
+ \sseq@options@normalmode
+ \IfNoValueF{#1}{%
+ \sseq@processoptions{class}{#1}% Outputs result into \sseq@savedoptioncode
+ }%
+ \sseq@cparsecoord{#2}{}%
+ \sseq@xminmax{\xcoord}{\ycoord}%
+ \sseq@yminmax{\xcoord}{\ycoord}%
+ \sseq@pushstack@\coord % also need the class stack to calculate other \class commands.
+ \sseq@cleanup@obj{partcoord.(\partialcoord).numnodes}%
+ \ifnum\nodenum=\@ne
+ \sseq@obj@gdef{partcoord.(\partialcoord).numnodes}{0}%
+ \fi
+ \sseq@obj@xdef{partcoord.(\partialcoord).numnodes}{\nodenum}%
+ \edef\classname{class.\coord[0]}%
+ \ifx\sseq@class@tag\pgfutil@empty\else
+ \sseq@obj@ifdef{partcoord.(\partialcoord).tag.\sseq@class@tagprefix\sseq@class@tag}{%
+ \sseq@error@xx{class-tag-already-defined}{\sseq@class@tagprefix\sseq@class@tag}{(\partialcoord)}% could be warning
+ }{}%
+ \sseq@cleanup@obj{partcoord.(\partialcoord).tag.\sseq@class@tagprefix\sseq@class@tag}%
+ \sseq@obj@xdef{partcoord.(\partialcoord).tag.\sseq@class@tagprefix\sseq@class@tag}{\nodenum}%
+ \fi
+ \ifx\sseq@class@name\pgfutil@empty\else
+ \sseq@cleanup@obj{\classname.name}
+ \sseq@cleanup@obj{class.namedclass.\detokenize\@xp{\sseq@class@name}}
+ \sseq@namehandler
+ \sseq@obj@xdef{\classname.name}{\sseq@class@name}
+ \sseq@obj@xdef{class.namedclass.\detokenize\@xp{\sseq@class@name}}{\coordnopar}
+ \fi
+ \sseq@breakpoint
+ \endgroup
+ }
+
+ % Now the rest of these can be no-ops
+ \sseq@DeclareDocumentCommand\classoptions{od()}{}
+ \sseq@DeclareDocumentCommand\replaceclass{od()}{}
+ \sseq@DeclareDocumentCommand\replacesource{o}{}
+ \sseq@DeclareDocumentCommand\replacetarget{o}{}
+ \def\sseq@d@main#1#2#3#4#5{}
+ \DeclareDocumentCommand \sseq@DrawIfValidDifferential@@ { d() d() } {}
+ \sseq@DeclareDocumentCommand\structline{od()d()}{}
+ \sseq@DeclareDocumentCommand\structlineoptions{od()d()}{}
+ \sseq@DeclareDocumentCommand\circleclasses{or()r()}{}
+ \sseq@DeclareDocumentCommand\gettag{mr()}{}
+ \endinput
+\fi
\newcount\sseq@circleclassuid
@@ -1551,6 +1611,7 @@
}
\let\sseq@processlabels\sseq@processlabels@default
+\let\sseqlastlabel\empty
% I can't remember why we need to defer this. If at some point I figure this out, I should explain why here and in the definition of \class...
\def\sseq@handleclassquotes@inner#1#2{%
\begingroup\pgfscope
@@ -1562,6 +1623,7 @@
\sseq@theclasslabelstyle
\the\sseq@scope@toks
\sseq@options@normalmode
+ \gdef\sseqlastlabel{#2}
\sseq@processoptions{class/label}{#2}%
\sseq@classlabel@handler{#1}% labeltextfn is a private handler for transformations, sseq@classlabel@handler is exposed via "class label handler"
\ifsseq@classlabel
@@ -1570,7 +1632,7 @@
\sseq@x@addto@macro\sseq@classlabelnodes{%
\@nx\sseq@drawlabel{%
\sseq@maybemathswitch\unexpanded\@xp{\result}\sseq@maybemathswitch}%
- {% This is setup to prevent a bug where \classoptions and class label style don't work correctly together
+ {% This is set up to prevent a bug where \classoptions and class label style don't work correctly together
\the\sseq@sseqstyle\@nx\the\sseq@sseqstyle@page
\the\sseq@labelstyle\@nx\the\sseq@labelstyle@page
\the\sseq@classlabelstyle\@nx\the\sseq@classlabelstyle@page
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/spectralsequences/sseqmessages.code.tex new/tex/latex/spectralsequences/sseqmessages.code.tex
--- old/tex/latex/spectralsequences/sseqmessages.code.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/tex/latex/spectralsequences/sseqmessages.code.tex 2019-02-19 23:18:17.000000000 +0100
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2 2017-09-16 2017-09-16
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2019-02-18
%% License: Latex Project Public License
%%
%% File: sseqmessages.code.tex
@@ -353,6 +353,8 @@
\msg_critical:nn { spectralsequences } { pgfkeys-patch-failed }
}
+\sseq@newerror@internal{expl3-incompatibility}{Since this version of spectralsequences, the expl3 definition of #1 was updated in an incompatible way.}
+
\sseq@newerror@internal{this-shouldnt-happen}{This branch of the code should be unreachable. Something really weird has happened. Error occurred in #1.}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/spectralsequences/sseqparsers.code.tex new/tex/latex/spectralsequences/sseqparsers.code.tex
--- old/tex/latex/spectralsequences/sseqparsers.code.tex 2017-12-11 23:22:32.000000000 +0100
+++ new/tex/latex/spectralsequences/sseqparsers.code.tex 2019-02-19 23:18:17.000000000 +0100
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2 2017-09-16 2017-09-16
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2019-02-18
%% License: Latex Project Public License
%%
%% File: sseqparsers.code.tex
@@ -12,6 +12,8 @@
\ExplSyntaxOn
\let\sseq@NoValue\c__xparse_no_value_tl
+% They changed \c__xparse_no_value_tl to \c_novalue_tl at some point. If the first definition doesn't work, try again.
+\@ifundefined{sseq@NoValue}{\let\sseq@NoValue\c_novalue_tl}{}
\protected\def\sseqparseint#1#2{
\sseq@ifintexpr{#2+0}{ % +0 here to prevent \lastx from freaking out if it's at the end of #2.
@@ -40,7 +42,7 @@
%%% ifpgfmathexpr
-% #1 -- expresion to test
+% #1 -- expression to test
% #2 -- true case
% #3 -- false case
% This tests true if \pgfmathparse{#1} throws an error or not. Luckily, \pgfmathparse pipes its errors through \pgfmath@error so this is easy.
@@ -238,11 +240,13 @@
%%
%% #1 -- callback. Will pass control to this function when done.
%% stores output in \sseq@dpage
+%% It also sets the flag \sseq@tempif to be
+%% true if there is an open parenthesis after the page
+%% false if there is no open parentheis -- so no optional argument for \d.
\def\sseq@d@grabpage#1{
\let\sseq@grabdpage@return#1
\futurelet\testtok\sseq@grabdpage@
}
-
\def\sseq@grabdpage@{
\sseq@tempiftrue
\ifx\testtok\bgroup
@@ -256,21 +260,27 @@
\def\sseq@grabdpage@group#1{\def\sseq@dpage{#1}\sseq@grabdpage@return}
+% I guess this is "norm" because it's the most basic case.
+% Why did I make this so complicated?
\def\sseq@grabdpage@norm{
\futurelet\testtok\sseq@grabdpage@norm@
}
+% If the next token is a open group or a new paragraph, we're done collecting and there's no parenthetical argument.
+% If the next token is an open paren, we're done collecting and there is a parenthetical argument.
+% Spaces get added to the token list (I guess that's important because it changes arithmetic sometimes? there must have been an issue at some point)
+% Every other token gets handled by \sseq@grabdpage@token
\def\sseq@grabdpage@norm@{
\let\next\sseq@grabdpage@token
- \ifx\testtok\bgroup
+ \ifx\testtok\bgroup % Open group ==> done collecting page, no optional argument
\sseq@tempiffalse
\let\next\sseq@grabdpage@return
\else
- \ifx\testtok\par
+ \ifx\testtok\par % new paragraph ==> done collecting page, no optional argument
\sseq@tempiffalse
\let\next\sseq@grabdpage@return
\else
- \ifx\testtok(
+ \ifx\testtok( % paren ==> done collecting page, optional argument
\let\next\sseq@grabdpage@return
\else
\@xp\ifx\space\testtok
@@ -284,19 +294,20 @@
\def\sseq@grabdpage@space{\sseq@d@addto@macro\sseq@dpage{~}\@xp\sseq@grabdpage@norm\romannumeral-`0}
+% All other tokens
\def\sseq@grabdpage@token#1{
- \ifcat$\@xp\@gobble\string#1$%
+ \ifcat$\@xp\@gobble\string#1$% % If #1 is a non-macro token, just add it to \sseq@dpage
\sseq@d@addto@macro\sseq@dpage{#1}
\@xp\sseq@grabdpage@norm
- \else
- \ifx#1\end
+ \else % Now it's a macor
+ \ifx#1\end % \end ==> done
\sseq@tempiffalse
\@xp\sseq@grabdpage@return\@xp#1\romannumeral-`0
\else
- \ifx#1\begin
+ \ifx#1\begin % \begin ==> done
\sseq@tempiffalse
\@xp\sseq@grabdpage@return\@xp#1\romannumeral-`0
- \else
+ \else % Otherwise, let's try to expand it.
\@xp\sseq@grabdpage@token@fexpcs\@xp#1\romannumeral-`0
\fi
\fi
@@ -314,12 +325,12 @@
\fi
}
\def\sseq@grabdpage@token@fexpcs@@@#1{
- \ifcat$\@xp\@gobble\string#1$%
- \sseq@d@addto@macro\sseq@dpage{#1}
+ \ifcat$\@xp\@gobble\string#1$% Did it fexpand into a non control sequence token?
+ \sseq@d@addto@macro\sseq@dpage{#1} % If so add it
\@xp\sseq@grabdpage@norm
\else
\sseq@tempiffalse
- \@xp\sseq@grabdpage@return
+ \@xp\sseq@grabdpage@return\@xp#1% Else remember to put the token back if we're not going to use it!!
\fi
}
@@ -786,11 +797,12 @@
% Doesn't do any error checking -- the error checking is done by passing it through \sseq@parsecoord in a non-\edef context.
% #1 -- a callback. Must be a single command b/c it's an N in \exp_args
% #2 -- the coordinate
-\cs_new:Npn \exp_last_unbraced:NNNf #1#2#3#4
+\cs_set:Npn \exp_last_unbraced:NNNf #1#2#3#4
{
\exp_after:wN #1
\exp_after:wN #2
- \exp_after:wN #3 \tex_romannumeral:D -`0 #4
+ \exp_after:wN #3
+ \exp:w \exp_end_continue_f:w #4
}
\def\sseq@parsecoordex{\exp_last_unbraced:NNNf\sseq@parsecoordex@}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/spectralsequences.tlpobj new/tlpkg/tlpobj/spectralsequences.tlpobj
--- old/tlpkg/tlpobj/spectralsequences.tlpobj 2018-03-03 20:17:18.000000000 +0100
+++ new/tlpkg/tlpobj/spectralsequences.tlpobj 2019-02-28 04:05:55.000000000 +0100
@@ -1,6 +1,6 @@
name spectralsequences
category Package
-revision 46038
+revision 50072
shortdesc Print spectral sequence diagrams using PGF/TikZ
relocated 1
longdesc The package is a specialized tool built on top of PGF/TikZ for
@@ -17,7 +17,7 @@
longdesc replacements using TikZ commands. The package also provides a
longdesc carefully designed error reporting system intended to ensure
longdesc that it is as clear as possible what is going wrong.
-runfiles size=94
+runfiles size=98
RELOC/tex/latex/spectralsequences/spectralsequences.sty
RELOC/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex
RELOC/tex/latex/spectralsequences/sseqdrawing.code.tex
@@ -28,8 +28,9 @@
RELOC/tex/latex/spectralsequences/sseqmain.code.tex
RELOC/tex/latex/spectralsequences/sseqmessages.code.tex
RELOC/tex/latex/spectralsequences/sseqparsers.code.tex
+catalogue-contact-repository https://github.com/hoodmane/spectralsequences
catalogue-ctan /graphics/pgf/contrib/spectralsequences
-catalogue-date 2017-12-11 07:48:50 +0100
+catalogue-date 2019-02-19 07:50:50 +0100
catalogue-license lppl
catalogue-topics pgf-tikz
-catalogue-version 1.2.0
+catalogue-version 1.2.2
++++++ spelling.doc.tar.xz ++++++
++++++ spelling.tar.xz ++++++
++++++ sphdthesis.doc.tar.xz ++++++
++++++ sphdthesis.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/sphdthesis.tlpobj new/tlpkg/tlpobj/sphdthesis.tlpobj
--- old/tlpkg/tlpobj/sphdthesis.tlpobj 2018-03-03 20:17:19.000000000 +0100
+++ new/tlpkg/tlpobj/sphdthesis.tlpobj 2019-02-28 04:05:56.000000000 +0100
@@ -12,6 +12,7 @@
longdesc be difficult.
runfiles size=5
RELOC/tex/latex/sphdthesis/SPhdThesis.cls
+catalogue-contact-repository https://github.com/saurabhg17/SPhdThesis/archive/master.zip
catalogue-ctan /macros/latex/contrib/sphdthesis
catalogue-date 2017-04-18 05:31:40 +0200
catalogue-license pd
++++++ spie.doc.tar.xz ++++++
++++++ spie.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/spie.tlpobj new/tlpkg/tlpobj/spie.tlpobj
--- old/tlpkg/tlpobj/spie.tlpobj 2018-03-03 20:17:19.000000000 +0100
+++ new/tlpkg/tlpobj/spie.tlpobj 2019-02-28 04:05:56.000000000 +0100
@@ -8,6 +8,7 @@
RELOC/bibtex/bib/spie/report.bib
RELOC/bibtex/bst/spie/spiebib.bst
RELOC/tex/latex/spie/spie.cls
+catalogue-contact-home http://public.lanl.gov/kmh/spie/
catalogue-ctan /macros/latex/contrib/spie
catalogue-date 2017-04-18 05:31:40 +0200
catalogue-license lppl
++++++ splines.doc.tar.xz ++++++
++++++ splines.tar.xz ++++++
++++++ splitbib.doc.tar.xz ++++++
++++++ splitbib.tar.xz ++++++
++++++ splitindex.doc.tar.xz ++++++
++++++ splitindex.tar.xz ++++++
++++++ spot.doc.tar.xz ++++++
++++++ spot.tar.xz ++++++
++++++ spotcolor.doc.tar.xz ++++++
++++++ spotcolor.tar.xz ++++++
++++++ spreadtab.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/spreadtab/README new/doc/latex/spreadtab/README
--- old/doc/latex/spreadtab/README 2018-01-01 23:05:20.000000000 +0100
+++ new/doc/latex/spreadtab/README 2019-02-27 22:55:15.000000000 +0100
@@ -1,9 +1,9 @@
L'extension
spreadtab
- v0.4d
+ v0.5
- 1er janvier 2018
+ 27 f\'evrier 2019
Author : Christian Tellechea
Email : unbonpetit@netc.fr (CT)
@@ -31,4 +31,4 @@
The cells in a table have coordinates representing their row and
column, and by this way can be inserted into formulas to generate
-values in other cells.
\ No newline at end of file
+values in other cells.
Binary files old/doc/latex/spreadtab/spreadtab-en.pdf and new/doc/latex/spreadtab/spreadtab-en.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/spreadtab/spreadtab-en.tex new/doc/latex/spreadtab/spreadtab-en.tex
--- old/doc/latex/spreadtab/spreadtab-en.tex 2018-01-01 23:05:20.000000000 +0100
+++ new/doc/latex/spreadtab/spreadtab-en.tex 2019-02-27 22:55:15.000000000 +0100
@@ -4,7 +4,9 @@
\usepackage[T1]{fontenc}
\usepackage[a4paper,margin=2.6cm]{geometry}
\usepackage[table]{xcolor}
-\usepackage{amsmath,amssymb,textcomp,array,arydshln,tabularx,listings,numprint,xspace,spreadtab,fancyhdr,libertine,babel,enumitem}
+\usepackage{amsmath,amssymb,textcomp,array,arydshln,tabularx,listings,numprint,xspace,fancyhdr,libertine,babel,enumitem,bxtexlogo}
+\bxtexlogoimport{*}
+\usepackage[xfp,fp]{spreadtab}\STusexfp
\usepackage[italic]{mathastext}
\usepackage[scaled=0.8]{luximono}
\fancyhead[L]{}
@@ -92,6 +94,8 @@
\newcommand\verbinline[1][]{\lstinline[breaklines=false,basicstyle=\normalsize\ttfamily,#1]}
\newcommand\ST{\textsf{\STname}\xspace}
+\newcommand\xfp{\texttt{\bfseries xfp}\xspace}
+\newcommand\fp{\texttt{\bfseries fp}\xspace}
\newcommand\falseverb[1]{\texttt{\detokenize{#1}}}
\usepackage[bookmarks=true,bookmarksopen=true,colorlinks=true,hyperfootnotes=false,filecolor=black,linkcolor=blue,urlcolor=magenta,pdfauthor={Christian TELLECHEA},pdftitle={spreadtab},pdfsubject={Spreadtab provides spreadsheet features for LaTeX table environments},pdfkeywords={spreadtab},pdfcreator={LaTeX}]{hyperref}
@@ -133,16 +137,25 @@
\section{Introduction}
\subsection{Presentation}
-This package allows us to construct tables in a manner similar to a spreadsheet. The cells of a table have row and column indices and these can be used in formulas to generate values in other cells.
+This package allows us to construct tables in a manner similar to a spreadsheet. The cells of a table have row and column indices and these can be used in formulas to generate values in other cells. The package is loaded with the classic syntax in the preamble:
+\begin{center}
+\verb-\usepackage[<options>]{spreadtab}-
+\end{center}
+where the options "\verb|fp|" or "\verb|xfp|" select the calculation engine. If no option is specified, the engine will be \fp. If both options are specified, the active engine at the beginning of the document will be \xfp, but in this case, you can change the engine at any time by running \verbinline|\STusefp| or \verbinline|\STusexfp|. This documentation is compiled with the engine \xfp, unless examples where \fp engine is selected. As a general rule, the two calculation engines must give identical results, but
+\begin{itemize}
+ \item \fp is a fixed point calculation engine (18 digits before and 18 after) and therefore gives more digits after the decimal point than \xfp which performs floating point calculations with 16 significant digits; on the other hand, \xfp natively allows tests, manages infinity and \verb|NaN|, understands implicit multiplication by juxtaposition, etc.
+ \item differences exist between the two engines regarding the functions available both in terms of syntax and their existence. Indeed, the function \verb|max(...)| only admits \emph{two} numbers as arguments with \fp while \xfp accepts as many arguments as you want. Similarly, the exponential is obtained with \verb|e^x| or \verb|pow(x,e)| with \fp while the syntax with \xfp is \verb|exp(x)|. Moreover, the functions recognized by the two engines are not the same, as can be seen from their documentation: \verb|ceil| for example, only exists for \xfp. In general, we can consider \xfp to have more features than \fp;
+ \item the functions \verbinline|rand| and \verbinline|randint| are not available with the engine \xfp when compiling with an old version of \XeLaTeX{}.
+\end{itemize}
-The package requires $\varepsilon$-\TeX, \LaTeXe{} and the \href{http://www.ctan.org/tex-archive/macros/latex/contrib/fp/}{\texttt{\textbf{fp}}} package, which performs arithmetic on cell values. Also, the \href{http://www.ctan.org/tex-archive/macros/latex/contrib/xstring/}{\texttt{\textbf{xstring}}} package is needed in its \falseverb{v1.5d [2010/03/28]} version or later.\medskip
+The package requires \eTeX, \LaTeXe{} format and the \href{http://www.ctan.org/tex-archive/macros/latex/contrib/fp/}{\fp} or \href{https://ctan.org/pkg/xfp}{\xfp} packages, which performs arithmetic on cell values. Also, the \href{http://www.ctan.org/tex-archive/macros/latex/contrib/xstring/}{\texttt{\textbf{xstring}}} package is needed.\medskip
The package is compatible with \emph{all} tabular environments, and assumes that `\verb=&=' is used to delimit columns and `\verb-\\-' to end lines (but see page~\pageref{STeol}). This compatibility requirement led me to program \ST so that it works independently of the table environment. Thus, reading the table, processing and calculating the formulas is done \emph{before} the environment table `sees' the body of the table.\medskip
Consequently, \ST proceeds in 3 main stages before \verbinline=\begin{<table environment>}= sees the table:
\begin{itemize}
\item first, it reads the body of the table, divides it in lines and cells, and in each cell, seeks a possible formula;
- \item then, it computes the formulas in the cells, taking care for each to previously calculate all the dependent cells. The calculations are done by the \href{http://www.ctan.org/tex-archive/macros/latex/contrib/fp/}{\texttt{\textbf{fp}}} package;
+ \item then, it computes the formulas in the cells, taking care for each to previously calculate all the dependent cells. The calculations are made by the package \fp or \xfp, provided that the formulas to be evaluated in the cells are compatible with the syntaxes of the macros \verb|\FPeval| of the package \fp or \verb|\fpeval| of the package \xfp\footnote{If you want to use the logical "AND" of \xfp "\texttt{\string&\string&}", it is \emph{mandatory} to put this operator between brackets in an array so that the tokens \texttt{\string&\string&} are not understood as column separators. In a cell of a table, we will write for example \texttt{a1>1 \string{\string&\string&\string} a1<10}.};
\item finally, it is necessary to rebuild the table, replacing each formula by its numerical calculated value and handing over to the environment name specified by the user.
\end{itemize}
The syntax in both the following is allowed (and equivalent), where \verb-<name>- is the name of any table environment available with \LaTeX{} or with a package:\par\nobreak
@@ -168,7 +181,7 @@
\end{<name>}
\end{lstlisting}
-Although having features resembling those of a spreadsheet with \LaTeX{} is appreciable, the 3 stages described above take time, and above all, \verb-fp- is slow in its calculations. The \ST environment leads to \emph{much slower compilation} than with a classical table.
+Although having features resembling those of a spreadsheet with \LaTeX{} is appreciable, the 3 stages described above take time. The \ST environment leads to \emph{much slower compilation} than with a classical table.
Moreover, \ST \emph{cannot stand in for a spreadsheet program}. Indeed, it has very few features, and it does not provide visual assistance. This point may cause difficulty\footnote{I certify that, with use, this discomfort tends to disappear (if you do not work with huge tables, of course).} for big or complex tables. The syntax of \ST is also another difficulty. However, the advantage of this package is that it makes it possible to write \emph{in the \LaTeX{} code} tables involving calculation when these tables are usually exported\footnote{I mention the two main exportation programs: \href{http://calc2latex.sourceforge.net/}{\texttt{\textbf{cacl2latex}}} for `calc' (Open Office), and \href{http://www.ctan.org/tex-archive/support/excel2latex/}{\texttt{\textbf{excel2latex}}} for `excel' (Microsoft Office).} from a spreadsheet program to \LaTeX{} code. Consequently, it becomes possible to avoid the disadvantages of the exportation programs: fine tuning often necessary to obtain exactly what you want, exported tables containing the values only (formulas are lost when exportation is done), no compatibility with all types of environments, exportation must be started again if a single number or formula is modified in the table.
@@ -297,7 +310,7 @@
Moreover, if a cell is empty or filled with spaces, \ST will consider it as a text cell.
\subsection{Mixed cells}
-In reality, each cell is composed of two fields. The first is a \emph{numeric field} containing the formula; the second is a \emph{text field}, ignored by \falseverb{fp} and not taken into account for calculations:
+In reality, each cell is composed of two fields. The first is a \emph{numeric field} containing the formula; the second is a \emph{text field}, ignored by the calc engine and not taken into account for calculations:
\begin{itemize}
\item if nothing is specified in a cell, the entire cell is the number field, and the text field is empty (this was the case for all table cells of Pascal's triangle seen above);
\item if the cell contains the `\falseverb @' character, then the entire cell is the text field. The numeric field is empty and inaccessible;
@@ -435,7 +448,7 @@
\section{Features for formatting the table}
\subsection{Decimal seprarator}
-The \verb-fp- package returns its results with the decimal point separator. After the job of \verb-fp-, \ST can change this decimal separator: everything happens as if the results returned by \verb-fp- were taking this into account. The command \verbinline-\STsetdecimalsep- takes a mandatory argument which is the character used as decimal separator:
+The \fp and \xfp packages return results with the decimal point separator. After the job of calculation, \ST can change this decimal separator: everything happens as if the results returned by \fp or \xfp were taking this into account. The command \verbinline-\STsetdecimalsep- takes a mandatory argument which is the character used as decimal separator:
\begin{center}
\verbinline-\STsetdecimalsep-\verb-{<char>}-
\end{center}
@@ -494,14 +507,14 @@
\end{spreadtab}
\end{minipage}
-\subsection{Number formatting and the {\ttfamily fp} package}
-All calculations are made by the \verb-\FPeval- macro\footnote{This macro accepts infix or postfix notation. Consequently, both can be used to write formulas in a cell. For example the infix formula `\falseverb{a1+b1}' is equivalent to the postfix ones `\falseverb{a1 b1 add}' or `\falseverb{a1 b1 +}'.} of the \href{http://www.ctan.org/tex-archive/macros/latex/contrib/fp/}{\texttt{\textbf{fp}}} package. This package provides all necessary arithmetical functions along with various scientific and trigonometric functions. Calculations are made with 18 decimal digits of precision, and \falseverb{fp} displays \emph{all} the decimals!
+\subsection{Number formatting and the \fp package}
+With \verb|fp| option, all calculations are made by the \verb-\FPeval- macro\footnote{This macro accepts infix or postfix notation. Consequently, both can be used to write formulas in a cell. For example the infix formula `\falseverb{a1+b1}' is equivalent to the postfix ones `\falseverb{a1 b1 add}' or `\falseverb{a1 b1 +}'.} of the \href{http://www.ctan.org/tex-archive/macros/latex/contrib/fp/}{\fp} package. This package provides all necessary arithmetical functions along with various scientific and trigonometric functions. Calculations are made with 18 decimal digits of precision, and \fp displays \emph{all} the decimals! Without taking precautions, you can end up with a lot of numbers in the decimal parts of some results. This section is compiled with \verbinline|\STusefp|.\STusefp
The number of digits displayed can be controlled in various ways:
\begin{itemize}
\item the \href{http://www.ctan.org/tex-archive/macros/latex/contrib/numprint/}{\texttt{\textbf{numprint}}} package can be used in order to properly display numbers;
- \item \verb=fp= can round or truncate numbers with \verb-round(number,integer)- or \verb-trunc(number,integer)- but the syntax makes this tedious to write if this is needed for many cells;
- \item \ST can round \emph{all} the numbers in the table with the macro \verbinline-\STautoround- whose argument is number of digits in the decimal part. If the argument is empty, no rounding is done. If the starred macro \verbinline-\STautoround*- is used, the decimal part is filled with 0 as necessary.
+ \item \fp can round or truncate numbers with \verb-round(number,integer)- or \verb-trunc(number,integer)- but the syntax makes this tedious to write if this is needed for many cells;
+ \item \ST can round \emph{all} the numbers in the table with the macro \verbinline-\STautoround- whose argument is number of digits in the decimal part. If the argument is empty, no rounding is done. If the starred macro \verbinline-\STautoround*- is used, the decimal part is filled with 0 as necessary (only with \fp).
\end{itemize}
In this example, floating point numbers are rounded to 6 digits:\par\nobreak
\begin{lstlisting}
@@ -557,7 +570,7 @@
\end{spreadtab}
\end{center}
-Here is another similar example where we test if the number to display is negative with the command \verbinline-\FPifneg- from the \verb-fp- package. If this happens, the number is displayed in red. The command \verbinline-\STautoround- was preferred to \verbinline-\nprounddigits- from the \verb-numprint- package because the latter adds unnecessary 0's.
+Here is another similar example where we test if the number to display is negative with the command \verbinline-\FPifneg- from the \fp package. If this happens, the number is displayed in red. The command \verbinline-\STautoround- was preferred to \verbinline-\nprounddigits- from the \verb-numprint- package because the latter adds unnecessary 0's.
\begin{lstlisting}
\STsetdecimalsep{.}
\renewcommand\STprintnum[1]{\FPifneg{#1}\color{red}\fi\numprint{#1}}
@@ -575,7 +588,7 @@
@$x$ & -1 & 2 & -3 & 4 & -5 & 6 & -7 \\\hline
@$1/x$ &1/b1&1/c1&1/d1&1/e1&1/f1&1/g1&1/h1
\end{spreadtab}
-\end{center}
+\end{center}\STusexfp
\subsection{End of lines and horizontal rules}
\ST recognizes the usual line breaks and horizontal rules \verb|\\| and \verb|\hline|. It is also possible to specify the optional argument in line break: \verb-\\[<dimension>]-.
@@ -760,7 +773,7 @@
The marker `\falseverb{:=}' is necessary in every cell where the command \verbinline-\multicolumn- is written. Without it, \ST would consider that the whole cell (i.e. \verb-\multicolumn{2}{|c|}{<formula>}-) as the formula, which is impossible to calculate.
\section{Macro-functions}
-The \falseverb{fp} package provides a limited set of operations and functions. If these are not sufficient then \ST allows the advanced programmer to write macros using the operations and functions of \falseverb{fp}. This section presents the macro-functions currently available\footnote{Many others should be written soon and be available in future versions of the package.}. There will be more details on how to program macro functions in the next version of this manual.
+The \fp package provides a limited set of operations and functions. If these are not sufficient then \ST allows the advanced programmer to write macros using the operations and functions of \fp. This section presents the macro-functions currently available\footnote{Many others should be written soon and be available in future versions of the package.}. There will be more details on how to program macro functions in the next version of this manual.
\subsection{Mathematical macro-functions}
\subsubsection{Sum cells}
@@ -800,7 +813,7 @@
\end{minipage}%
\subsubsection{The \texttt{fact} macro}
-The macro-function \verbinline=fact(<number>)= computes the factorial of its argument, assuming it is an \emph{integer} between 0 and 18 to avoid overflows\footnote{Indeed, for \falseverb{fp} the greatest integer is $10^{18}-1$. The factorial of 19 is greater than this.}. The \falseverb{<number>} can also be a reference to a cell whose numeric field contains an integer.\medskip
+The macro-function \verbinline=fact(<number>)= computes the factorial of its argument. With the engine \href{https://www.ctan.org/pkg/fp}{\fp}, the argument must be less than 19 to avoid overflows. The \falseverb{<number>} can also be a reference to a cell whose numeric field contains an integer.\medskip
Here are the factorials from 0 to 8:\par\nobreak
\begin{lstlisting}
@@ -841,7 +854,10 @@
\subsubsection{Random numbers}
The macro-functions \verbinline-randint- and \verbinline-rand- each returns a random number depending on its argument.
-It should be noted that the seed initializing the random sequence depends on the date and the minute at which the compilation is done. Thus, the random sequence of numbers given by this function will change between two compilations made at different times. If random numbers need to be repeatable, the private macro \verb-\ST@seed- must be cancelled and a seed should be chosen for \falseverb{fp}. Here is the code to do this:\par\nobreak
+\paragraph{Random numbers with \fp calc engine}
+With this engine, \verbinline-randind- and \verbinline-rand- are \emph{macro functions} of \ST that rely on the macro \verb|\FPrandom| of \fp.
+
+It should be noted that the seed initializing the random sequence depends on the date and the minute at which the compilation is done. Thus, the random sequence of numbers given by this function will change between two compilations made at different times. If random numbers need to be repeatable, the private macro \verb-\ST@seed- must be cancelled and a seed should be chosen for \fp. Here is the code to do this:\par\nobreak
\begin{lstlisting}[backgroundcolor=\color{ST@codebckgcolor}]
\makeatletter
\renewcommand\ST@seed{}% redefines the private macro
@@ -853,21 +869,51 @@
The macro-function \verbinline-rand()- returns a random number between 0 and 1.\par\nobreak
\begin{lstlisting}
\STautoround{6}
+\STusefp
\begin{spreadtab}{{tabular}{|l|cccc|}}\hline
@numbers in [0;1] &rand() &rand() &rand() &rand() \\
@numbers in [-5;5] &randint(-5,5) &randint(-5,5) &randint(-5,5) &randint(-5,5)\\
@numbers in [0;20] &randint(20) &randint(20) &randint(20) &randint(20) \\
\hline
\end{spreadtab}
+\STusexfp
\end{lstlisting}
\begin{center}
\STautoround{6}
+\STusefp
\begin{spreadtab}{{tabular}{|l|cccc|}}\hline
@numbers in [0;1] &rand() &rand() &rand() &rand() \\
@numbers in [-5;5] &randint(-5,5) &randint(-5,5) &randint(-5,5) &randint(-5,5)\\
@numbers in [0;20] &randint(20) &randint(20) &randint(20) &randint(20) \\
\hline
\end{spreadtab}
+\STusexfp
+\end{center}
+
+\paragraph{Random numbers with \xfp engine}
+With this engine, \verbinline-randind- and \verbinline-rand- are functions recognized natively by \xfp. A warning will be issued if \XeLaTeX{} is used in an older version that does not implement pseudo-random number generation primitives; in this case, using the functions \verbinline-randind- and \verbinline-rand- will not be enabled and will throw compilation errors.
+
+As specified in the documentation of \href{http://mirrors.ctan.org/macros/latex/contrib/l3kernel/interface3.pdf}{\texttt{\textbf{\textbf{interface3}}}}, the function \verbinline|randint(<a>,<b>)| produces a random integer between the two arguments, but if \verb|<a>| is omitted, \verbinline|randint(<b>)| produces an integer between {\color{red}\bfseries1} and \verb|<b>| which is different from the \verbinline-randint- macro function of \ST used with \fp which produces an integer between {\color{red}\bfseries0} and \verb|<b>|.\STusexfp
+
+\begin{lstlisting}
+\STautoround{6}
+\STusexfp
+\begin{spreadtab}{{tabular}{|l|cccc|}}\hline
+@nombers in [0;1] &rand() &rand() &rand() &rand() \\
+@nombers in [-5;5] &randint(-5,5) &randint(-5,5) &randint(-5,5) &randint(-5,5)\\
+@nombers in [0;20] &randint(20) &randint(20) &randint(20) &randint(20) \\
+\hline
+\end{spreadtab}
+\end{lstlisting}
+\begin{center}
+\STautoround{6}
+\STusexfp
+\begin{spreadtab}{{tabular}{|l|cccc|}}\hline
+@nombres dans [0;1] &rand() &rand() &rand() &rand() \\
+@nombres dans [-5;5] &randint(-5,5) &randint(-5,5) &randint(-5,5) &randint(-5,5)\\
+@nombres dans [1;20] &randint(20) &randint(20) &randint(20) &randint(20) \\
+\hline
+\end{spreadtab}
\end{center}
\subsubsection{GCD and LCM}
@@ -897,7 +943,7 @@
\end{center}
\subsubsection{Scientific notation}
-The macro function `scitodec' converts a number written in scientific notation into a decimal number, understandable by \ST to achieve its calculations. The syntax is \verbinline-scitodec(<text>)-, where \verb-<text>- is:
+The macro function `scitodec' converts a number written in scientific notation into a decimal number, understandable by \fp to achieve its calculations. The syntax is \verbinline-scitodec(<text>)-, where \verb-<text>- is:
\begin{itemize}
\item a sequence of characters with the syntax \verb-<mantissa>EE<exponent>- where \verb-<mantissa>- is a decimal number and the \verb-<exponent>- is an integer. The `EE' may be written uppercase or lowercase.
@@ -928,6 +974,8 @@
\end{spreadtab}
\end{center}
+The engine \xfp natively understands numbers written in scientific notation in the form \verb|<a>e<b>| but this syntax is \emph{impossible} to use with \ST because the number \verb|4e3|, which is 4000, would be understood by \ST as 4 followed by the content of the cell \verb|e3|.
+
\subsubsection{Identity}
The simplest macro function is `\verbinline=id(<number>)='. It returns the number in its argument. Mathematically, it is not very useful, but with \ST, it makes possible the writing of mathematical expressions in arguments of macro functions where they are not otherwise allowed -- in the argument of \verbinline=sum= for example.
@@ -947,7 +995,7 @@
\end{center}
\subsection{Tests}
-Three macro-functions provide tests:\par\nobreak
+Since \fp and its macro \verb|\FPeval| do not accept test in its argument, three macro-functions provide tests (they are not interesting with \xfp and its terenary operator \verb|?:|, see below):\par\nobreak
\begin{center}
\verbinline=ifeq(number1,number2,number3,number4)=\par
\verbinline=ifgt(number1,number2,number3,number4)=\par
@@ -993,6 +1041,32 @@
[0,-1]+0.5 & iflt([-1,0],1,10,ifeq([-1,0],1,0,-10))\\\hline
\end{spreadtab}
\end{center}
+The engine \xfp and its ternary operator \verb|<a>?<b>:<c>| makes tests easier in the evaluated expressions: if the test \verb|<a>| is true, \verb|<b>| is retained otherwise, it is \verb|<c>|. Thus, the nested tests above become:
+
+\begin{lstlisting}
+\begin{spreadtab}{{tabular}{|*2c|}}\hline
+@$x$ & @$f(x)$ \\\hline
+-0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\\hline
+\end{spreadtab}
+\end{lstlisting}
+\begin{center}
+\begin{spreadtab}{{tabular}{|*2c|}}\hline
+@$x$ & @$f(x)$ \\\hline
+-0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\\hline
+\end{spreadtab}
+\end{center}
\subsection{Macro-functions manipulating dates}
\subsubsection{Date to number with \ttfamily engshortdatetonum}\label{datetonum}
@@ -1433,7 +1507,7 @@
\renewcommand\STprintnum[1]{\numprint{#1}}
\begin{spreadtab}{{tabular}{cc}}
\multicolumn{2}{c}{Convergence at $x=\color{red}:={0.5}$}\\[1.5ex]
-@$n$ & e^a1\SThidecol & @ $\displaystyle e^{\numprint{<<a1>>}}-\sum_{k=0}^n\frac{\numprint{<<a1>>}^k}{k!}$\\[3ex]\hline
+@$n$ & exp(a1)\SThidecol & @ $\displaystyle e^{\numprint{<<a1>>}}-\sum_{k=0}^n\frac{\numprint{<<a1>>}^k}{k!}$\\[3ex]\hline
\color{red}:={0}& a1^[-1,0]/fact([-1,0]) & \STcopy{v}{b!2-b3}\\
\STcopy{v}{a3+1}& \STcopy{v}{a!1^a4/fact(a4)+b3}& \\
& & \\
Binary files old/doc/latex/spreadtab/spreadtab-fr.pdf and new/doc/latex/spreadtab/spreadtab-fr.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/spreadtab/spreadtab-fr.tex new/doc/latex/spreadtab/spreadtab-fr.tex
--- old/doc/latex/spreadtab/spreadtab-fr.tex 2018-01-01 23:05:20.000000000 +0100
+++ new/doc/latex/spreadtab/spreadtab-fr.tex 2019-02-27 22:55:15.000000000 +0100
@@ -4,7 +4,9 @@
\usepackage[T1]{fontenc}
\usepackage[a4paper,margin=2.6cm]{geometry}
\usepackage[table]{xcolor}
-\usepackage{amsmath,amssymb,textcomp,array,arydshln,tabularx,listings,numprint,xspace,spreadtab,fancyhdr,libertine,babel,enumitem}
+\usepackage{amsmath,amssymb,textcomp,array,arydshln,tabularx,numprint,xspace,fancyhdr,libertine,babel,enumitem,listings,bxtexlogo}
+\bxtexlogoimport{*}\frenchsetup{og=«,fg=»}
+\usepackage[xfp,fp]{spreadtab}\STusexfp
\usepackage[italic]{mathastext}
\usepackage[scaled=0.8]{luximono}
\fancyhead[L]{}
@@ -33,7 +35,7 @@
numbersep=1em,classoffset=1,%
morekeywords={% les macros et commandes de spreadtab
spreadtab,endspreadtab,SThiderow,SThidecol,STsavecell,STautoround,STmessage,STsetdecimalsep,STtransposecar,STdebug,STdisplaytab,STsetdisplaymarks,%
- STnumericfieldmarker,STprintnum,STtextcell,STcopy,STtag,STmakegtag,STeol,fact,id,ifeq,ifgt,iflt,numtofrshortdate,%
+ STnumericfieldmarker,STprintnum,STtextcell,STcopy,STtag,STmakegtag,STeol,fact,id,ifeq,ifgt,iflt,numtofrshortdate,STusefp,STusexfp,%
numtoengshortdate,numtofrlongdate,numtoenglongdate,numtofrmonth,%
numtoengmonth,numtofrday,numtoengday,sum,rand,randint,sumprod,%
frshortdatetonum,engshortdatetonum,englongdatetonum,frlongdatetonum,gcd,lcm,tag,cell,row,col,value},%
@@ -92,6 +94,8 @@
\newcommand\verbinline[1][]{\lstinline[breaklines=false,basicstyle=\normalsize\ttfamily,#1]}
\newcommand\ST{\textsf{\STname}\xspace}
+\newcommand\xfp{\texttt{\bfseries xfp}\xspace}
+\newcommand\fp{\texttt{\bfseries fp}\xspace}
\newcommand\falseverb[1]{\texttt{\detokenize{#1}}}
\usepackage[bookmarks=true,bookmarksopen=true,colorlinks=true,hyperfootnotes=false,filecolor=black,linkcolor=blue,urlcolor=magenta,pdfauthor={Christian TELLECHEA},pdftitle={spreadtab},pdfsubject={Spreadtab permet d'utiliser des fonctionnalités de tableur dans un tableau avec LaTeX},pdfkeywords={spreadtab},pdfcreator={LaTeX}]{hyperref}
@@ -120,7 +124,7 @@
\begin{minipage}{0.8\linewidth}
\noindent\hrulefill\par
\hfill\textbf{\textit{Résumé}}\hfill{}\medskip\par\footnotesize
- Cette extension permet d'utiliser des fonctionnalités de tableur dans n'importe quel environnement \og tableau\fg{} avec \LaTeX{}.\par\smallskip
+ Cette extension permet d'utiliser des fonctionnalités de tableur dans n'importe quel environnement «tableau» avec \LaTeX{}.\par\smallskip
La principale fonctionnalité étant de pouvoir écrire des formules dans les cellules d'un tableau qui font références à d'autres cellules, de calculer les formules contenues dans les cellules et d'afficher les résultats numériques de ces formules dans le tableau.\par
\hrulefill
\end{minipage}
@@ -133,16 +137,25 @@
\section{Introduction}
\subsection{Présentation}
-Cette extension permet de construire des tableaux similaire à des feuilles de calculs. Les cellules du tableau ont des coordonnées (colonne et ligne) qui peuvent être utilisées dans des formules pour calculer des valeurs dans d'autres cellules.
+Cette extension permet de construire des tableaux similaires à des feuilles de calculs. Les cellules du tableau ont des coordonnées (colonne et ligne) qui peuvent être utilisées dans des formules pour calculer des valeurs dans d'autres cellules. On charge le package en écrivant dans le préambule la syntaxe classique
+\begin{center}
+\verb-\usepackage[<options>]{spreadtab}-
+\end{center}
+où les options «\verb|fp|» ou «\verb|xfp|» spécifient le moteur de calcul choisi. Si aucune option n'est spécifiée, le moteur sera \fp. Si les deux options sont spécifiées, le moteur actif au début du document sera \fp, mais dans ce cas, on peut changer de moteur à tout moment en exécutant \verbinline|\STusefp| ou \verbinline|\STusexfp|. Cette documentation est compilée avec le moteur \xfp, sauf exemple où le contraire est spécifié. En règle générale, les deux moteurs de calcul doivent donner des résultats identiques, mais :
+\begin{itemize}
+ \item \fp est un moteur de calcul à virgule fixe (18 chiffres avant et 18 après) et donne donc davantage de chiffres après la virgule que \xfp qui effectue les calculs en virgule flottante avec 16 chiffres significatifs; en revanche, \xfp accepte nativement des tests, gère l'infini et \verb|NaN|, comprend la multiplication implicite par juxtaposition, etc.
+ \item des différences existent entre les deux moteurs concernant les fonctions disponibles tant du point de vue de la syntaxe que de leur existence même. Ainsi, la fonction \verb|max(...)| n'admet que \emph{deux} nombres en argument avec \fp tandis que \xfp accepte autant d'arguments que l'on veut. De la même façon, l'exponentielle s'obtient avec \verb|e^x| ou \verb|pow(x,e)| avec \fp alors que la syntaxe avec \xfp est \verb|exp(x)|. Par ailleurs, les fonctions reconnues par les deux moteurs ne sont pas les mêmes, comme on peut le constater en lisant leurs documentations : \verb|ceil| par exemple, n'existe que pour \xfp. D'une manière générale, on peut considérer \xfp comme étant mieux doté en fonctionnalités que \fp;
+ \item les fonctions \verbinline|rand| et \verbinline|randint| ne sont pas disponibles avec le moteur \xfp lorsqu'on compile avec une version de \XeLaTeX{} trop ancienne.
+\end{itemize}
-Ce package nécessite le moteur $\varepsilon$-\TeX, le format \LaTeXe{} ainsi que le package \href{http://www.ctan.org/tex-archive/macros/latex/contrib/fp/}{\texttt{\textbf{fp}}} à qui sont confiés les calculs. Le package \href{http://www.ctan.org/tex-archive/macros/latex/contrib/xstring/}{\texttt{\textbf{xstring}}} est également requis dans une version \emph{supérieure ou égale} à la version \verb-v1.5d [2010/03/28]-.
+Ce package nécessite le moteur \eTeX, le format \LaTeXe{} ainsi que le package \href{https://www.ctan.org/pkg/fp}{\fp} ou \href{https://ctan.org/pkg/xfp}{\xfp} à qui sont confiés les calculs. Le package \href{https://www.ctan.org/pkg/xstring}{\texttt{\textbf{xstring}}} est également requis.
-J'ai souhaité dès le départ de rendre ce package compatible avec \emph{tous} les environnements de tableaux, sous réserve que les séparateurs entre colonnes soient \og\verb=&=\fg{} et les retours à la ligne soient \og\verb=\\=\fg{}. Cette contrainte forte sur la compatibilité m'a conduit à programmer \ST pour qu'il agisse d'une façon \emph{totalement indépendante} de l'environnement tableau. Ainsi, la lecture du tableau, le traitement et le calcul des formules se fait \emph{avant} que l'environnement tableau ne prenne la main et ne \og voit\fg{} le corps du tableau.
+J'ai souhaité dès le départ de rendre ce package compatible avec \emph{tous} les environnements de tableaux, sous réserve que les séparateurs entre colonnes soient «\verb=&=» et les retours à la ligne soient «\verb=\\=». Cette contrainte forte sur la compatibilité m'a conduit à programmer \ST pour qu'il agisse d'une façon \emph{totalement indépendante} de l'environnement tableau. Ainsi, la lecture du tableau, le traitement et le calcul des formules se fait \emph{avant} que l'environnement tableau ne prenne la main et ne «voit» le corps du tableau.
Par conséquent, \ST procède en 3 étapes :
\begin{itemize}
\item en premier lieu, \ST lit le corps du tableau et le divise en lignes puis en cellules en reconnaissant dans chacune la présence d'une éventuelle formule;
- \item ensuite, il procède au calcul des formules contenues dans les cellules, en ayant pris soin pour chacune de calculer auparavant les cellules dépendantes. L'ordre dans lequel les cellules doivent être calculées est déterminé par \ST. Les calculs sont faits par le package \href{http://www.ctan.org/tex-archive/macros/latex/contrib/fp/}{\texttt{\textbf{fp}}};
+ \item ensuite, il procède au calcul des formules contenues dans les cellules, en ayant pris soin pour chacune de calculer auparavant les cellules dépendantes. L'ordre dans lequel les cellules doivent être calculées est déterminé par \ST. Les calculs sont faits par le package \fp ou \xfp, sous réserve que les formules à évaluer dans les cellules soient compatibles avec les syntaxes des macros \verb|\FPeval| du package \fp ou \verb|\fpeval| du package \xfp\footnote{Si l'on souhaite utiliser le «ET» logique de \xfp noté «\texttt{\string&\string&}», il est \emph{obligatoire} de mettre cet opérateur entre accolades dans un tableau afin que les tokens \texttt{\string&} ne soient pas compris comme des séparateurs de colonnes. Dans une cellule d'un tableau, pour tester si le contenu de la cellule \texttt{a1} appartient à un intervalle, on écrira donc par exemple «\texttt{a1>1 \string{\string&\string&\string} a1<10}».};
\item enfin, il faut reconstruire le tableau en ayant remplacé chaque formule par la valeur numérique préalablement calculée et passer la main à l'environnement tableau spécifié par l'utilisateur.
\end{itemize}
Les deux syntaxes possibles (et équivalentes) sont les suivantes, où \verb-<nom>- représente le nom de n'importe quel environnement de type tableau disponible avec \LaTeX{} ou avec une extension :\par\nobreak
@@ -168,9 +181,9 @@
\end{<nom>}
\end{lstlisting}
-Même si disposer de fonctionnalités ressemblant à celles d'un tableur avec \LaTeX{} est appréciable, il ne faut pas perdre de vue que les 3 étapes décrites ci-dessus prennent du temps et surtout que \falseverb{fp} est lent dans ses calculs. L'ensemble conduit donc à des temps de compilation \emph{beaucoup plus importants} qu'avec un tableau classique.
+Même si disposer de fonctionnalités ressemblant à celles d'un tableur avec \LaTeX{} est appréciable, il ne faut pas perdre de vue que les 3 étapes décrites ci-dessus prennent du temps. L'ensemble conduit donc à des temps de compilation \emph{beaucoup plus importants} qu'avec un tableau classique.
-Il faut ajouter que \ST \emph{ne peut remplacer un tableur}. En effet, ses possibilités sont très limitées. De plus, surtout pour des tableaux complexes ou de grande taille, le manque d'aide visuelle devient gênant\footnote{Ceci dit, je certifie qu'avec l'habitude, cette gêne tend à s'estomper (si l'on s'en tient à des tableaux raisonnables, bien sûr).}, et la syntaxe de \ST constitue aussi un obstacle supplémentaire. L'avantage de cette extension est de pouvoir écrire \emph{dans le code \LaTeX} des tableaux comportant des calculs, alors que ces tableaux sont généralement exportés\footnote{On peut signaler les 2 principaux programmes d'exportation : \href{http://calc2latex.sourceforge.net/}{\texttt{\textbf{cacl2latex}}} pour \og calc\fg{} de Open Office, et \href{http://www.ctan.org/tex-archive/support/excel2latex/}{\texttt{\textbf{excel2latex}}} pour \og excel\fg{} de Microsoft Office.} d'une feuille de calcul d'un tableur vers le code \LaTeX. On évite ainsi les désagréments des programmes d'exportation : mise en forme souvent à retoucher pour obtenir exactement ce que l'on veut, non compatibilité avec tous les environnements de tableaux, obtention de tableaux ne contenant que les valeurs (les formules sont perdues à l'exportation), exportation à recommencer si l'on modifie un seul nombre ou formule dans le tableau.
+Il faut ajouter que \ST \emph{ne peut remplacer un tableur}. En effet, ses possibilités sont très limitées. De plus, surtout pour des tableaux complexes ou de grande taille, le manque d'aide visuelle devient gênant\footnote{Ceci dit, je certifie qu'avec l'habitude, cette gêne tend à s'estomper (si l'on s'en tient à des tableaux raisonnables, bien sûr).}, et la syntaxe de \ST constitue aussi un obstacle supplémentaire. L'avantage de cette extension est de pouvoir écrire \emph{dans le code \LaTeX} des tableaux comportant des calculs, alors que ces tableaux sont généralement exportés\footnote{On peut signaler les 2 principaux programmes d'exportation : \href{http://calc2latex.sourceforge.net/}{\texttt{\textbf{cacl2latex}}} pour «calc» de Open Office, et \href{http://www.ctan.org/tex-archive/support/excel2latex/}{\texttt{\textbf{excel2latex}}} pour «excel» de Microsoft Office.} d'une feuille de calcul d'un tableur vers le code \LaTeX. On évite ainsi les désagréments des programmes d'exportation : mise en forme souvent à retoucher pour obtenir exactement ce que l'on veut, non compatibilité avec tous les environnements de tableaux, obtention de tableaux ne contenant que les valeurs (les formules sont perdues à l'exportation), exportation à recommencer si l'on modifie un seul nombre ou formule dans le tableau.
\subsection{Motivation}
Quelques mois avant de commencer à m'attaquer à ce package, Derek \textsc{O'Connor} m'avait fait remarquer que rien n'était disponible dans le monde des extensions de \LaTeX{} pour imiter ---~ne serait-ce qu'un peu~--- le calcul de formules dans des tableaux, comme cela se fait couramment avec des tableurs. J'ai trouvé le défi intéressant et je me suis lancé dans l'écriture de ce package qui en fait, n'est qu'un exercice de programmation.
@@ -178,7 +191,7 @@
La route a été longue avant d'arriver à cette version et je tiens à remercier tout particulièrement Christophe \textsc{Casseau} pour l'intérêt qu'il a porté dès le début à ce travail et les suggestions qu'il m'a faites, ainsi que plus récemment Derek \textsc{O'Connor} pour ses conseils et pour les échanges constructifs que nous avons eus. J'adresse également mes remerciements à Andrew \textsc{Parsloe} pour la relecture et les corrections apportées à la traduction de ce manuel en anglais.
\section{Fonctionnalités courantes}
-Il faut noter tout d'abord qu'à l'intérieur d'un tableau sous environnement \ST, les caractères \og\verb=:=\fg{} et \og\verb=;=\fg{} perdent leur code de catégorie actif qui leur a été attribué si vous utilisez l'option \falseverb{frenchb} du package \falseverb{babel}. Par conséquent, l'espace automatique inséré avant ces caractères sera désactivé dans un tableau.
+Il faut noter tout d'abord qu'à l'intérieur d'un tableau sous environnement \ST, les caractères «\verb=:=», «\verb=;=», «\verb|!|» et «\verb|?|» perdent leur code de catégorie actif qui leur a été attribué si vous utilisez l'option \falseverb{french} du package \falseverb{babel}. Par conséquent, l'espace automatique inséré avant ces caractères sera désactivé dans un tableau.
\label{STeol}Par défaut, \ST considère qu'une ligne se termine avec ``\verb-\\-'' qui est habituel dans les tableaux. Ce marqueur de fin de ligne peut être modifié via la commande \verbinline-\STeol{<macro>}-. On peut par exemple écrire \verbinline-\STeol{\tabularnewline}-. Il faut bien comprendre que les fins de lignes qui seront insérées dans le tableau final seront toujours ``\verb-\\-'', même si le marqueur de fin de ligne lorsque \ST \emph{lit} le tableau a été modifié.
@@ -188,7 +201,7 @@
\item la colonne est une lettre de \falseverb a à \falseverb z, \falseverb a représentant la 1\iere{} colonne de gauche : on est donc d'emblée limité à 26 colonnes, ce qui devrait suffire pour la grande majorité des cas; la lettre est insensible à la casse, elle peut donc être indifféremment minuscule ou majuscule;
\item à la suite immédiate de la lettre, un nombre entier strictement positif représente le numéro de la ligne, la ligne numéro 1 étant la ligne du haut.
\end{itemize}
-Une référence absolue s'écrit donc par exemple : \og\falseverb{b4}\fg{}, \og\falseverb{C1}\fg{} ou \og\falseverb{d13}\fg\footnote{Cette notation se retrouve dans les tableurs : la lettre représente la colonne et le nombre qui suit représente la ligne. Cet ordre est le contraire de la convention utilisée avec les matrices en mathématiques.}. Visuellement, on peut illustrer ce fonctionnement par ce genre de tableau ressemblant à un tableur, ici volontairement limité à 5 lignes et 5 colonnes :
+Une référence absolue s'écrit donc par exemple : «\falseverb{b4}», «\falseverb{C1}» ou «\falseverb{d13}»\footnote{Cette notation se retrouve dans les tableurs : la lettre représente la colonne et le nombre qui suit représente la ligne. Cet ordre est le contraire de la convention utilisée avec les matrices en mathématiques.}. Visuellement, on peut illustrer ce fonctionnement par ce genre de tableau ressemblant à un tableur, ici volontairement limité à 5 lignes et 5 colonnes :
\begin{center}
\begin{OOocalc}[6em]{5}
&&&&\\&&&&\\&&&&\\&&&&\\&&&&\\
@@ -241,9 +254,9 @@
\end{minipage}%
\subsection{Références relatives}
-Pour faire référence à une cellule, il peut être commode de spécifier sa position par rapport à la cellule où se trouve la formule. Ainsi, les coordonnées \og relatives\fg{} d'une cellule sont 2 nombres relatifs écrits selon cette syntaxe : \falseverb{[x,y]}, où \falseverb x est le décalage horizontal par rapport à la cellule contenant la formule et \falseverb y est le décalage vertical. Ainsi, \falseverb{[-2,3]} fait référence à la cellule se trouvant 2 colonnes avant (à gauche) et 3 lignes après (plus bas) la cellule où se trouve la formule.
+Pour faire référence à une cellule, il peut être commode de spécifier sa position par rapport à la cellule où se trouve la formule. Ainsi, les coordonnées «relatives» d'une cellule sont 2 nombres relatifs écrits selon cette syntaxe : \falseverb{[x,y]}, où \falseverb x est le décalage horizontal par rapport à la cellule contenant la formule et \falseverb y est le décalage vertical. Ainsi, \falseverb{[-2,3]} fait référence à la cellule se trouvant 2 colonnes avant (à gauche) et 3 lignes après (plus bas) la cellule où se trouve la formule.
-Voici à nouveau le triangle de Pascal vu ci-dessus, mais les références sont relatives et l'environnement \og\verbinline-matrix-\fg{} du package \href{http://www.ctan.org/tex-archive/macros/latex/required/amslatex/math/}{\texttt{\textbf{amsmath}}} est utilisé :\par\nobreak
+Voici à nouveau le triangle de Pascal vu ci-dessus, mais les références sont relatives et l'environnement «\verbinline-matrix-» du package \href{http://www.ctan.org/tex-archive/macros/latex/required/amslatex/math/}{\texttt{\textbf{amsmath}}} est utilisé :\par\nobreak
\begin{minipage}{0.82\linewidth}
\begin{lstlisting}
$
@@ -275,7 +288,7 @@
On peut utiliser dans une même formule un mélange de références absolues et relatives.
\subsection{Cellules de texte}
-Si l'on veut mettre du texte dans une cellule, il faut indiquer à \ST que la cellule ne doit pas être calculée. Il suffit de placer quelque part dans la cellule le caractère \og\falseverb @\fg{}. Ce faisant, la cellule est ignorée par \ST et devient une cellule inerte à qui il n'est pas possible\footnote{Il y a une exception à cette règle, voir la page \protect\pageref{datetonum}.} de faire référence nulle part ailleurs dans le tableau.
+Si l'on veut mettre du texte dans une cellule, il faut indiquer à \ST que la cellule ne doit pas être calculée. Il suffit de placer quelque part dans la cellule le caractère «\falseverb @». Ce faisant, la cellule est ignorée par \ST et devient une cellule inerte à qui il n'est pas possible\footnote{Il y a une exception à cette règle, voir la page \protect\pageref{datetonum}.} de faire référence nulle part ailleurs dans le tableau.
Voici un exemple :\par\nobreak
\begin{lstlisting}
@@ -292,24 +305,24 @@
@ $f(x)=2x$ & 2*[0,-1] & 2*[0,-1] & 2*[0,-1] \\\hline
\end{spreadtab}
\end{center}
-Le caractère \og\falseverb @\fg{} est le développement de la séquence de contrôle \verbinline=\STtextcell=. On peut donc redéfinir cette séquence de contrôle en ce que l'on veut et par exemple, \verbinline-\renewcommand\STtextcell{`}- fera qu'une cellule contenant le caractère ``\verb=`='' sera comprise comme étant une cellule de texte.
+Le caractère «\falseverb @» est le développement de la séquence de contrôle \verbinline=\STtextcell=. On peut donc redéfinir cette séquence de contrôle en ce que l'on veut et par exemple, \verbinline-\renewcommand\STtextcell{`}- fera qu'une cellule contenant le caractère ``\verb=`='' sera comprise comme étant une cellule de texte.
De plus, si une cellule est vide ou entièrement constituée d'espaces, alors \ST la considérera comme une cellule de texte.
\subsection{Cellules mixtes}
-En réalité, chaque cellule est composée de \emph{deux} champs. D'un côté le \emph{champ numérique} qui contient la formule et de l'autre le \emph{champ textuel} qui sera ignoré par \falseverb{fp} et n'entre pas en ligne de compte pour les calculs :
+En réalité, chaque cellule est composée de \emph{deux} champs. D'un côté le \emph{champ numérique} qui contient la formule et de l'autre le \emph{champ textuel} qui sera ignoré par le moteur de calcul et n'entre pas en ligne de compte pour les calculs :
\begin{itemize}
\item dans une cellule, si rien n'est précisé, la totalité de la cellule est considérée comme étant le champ numérique, et le champ textuel est vide (c'était le cas pour toutes les cellules du tableau du triangle de Pascal vu précédemment);
- \item si la cellule contient \og\falseverb{@}\fg{}, alors la totalité de la cellule est considérée comme étant le champ textuel. Le champ numérique est vide et inaccessible.
- \item si la cellule contient \og\verb-:=-\fg, alors l'argument entre accolades qui suit est le champ numérique, et tout le reste est le champ textuel. La cellule a cette structure :\par\smallskip
+ \item si la cellule contient «\falseverb{@}», alors la totalité de la cellule est considérée comme étant le champ textuel. Le champ numérique est vide et inaccessible.
+ \item si la cellule contient «\verb-:=-», alors l'argument entre accolades qui suit est le champ numérique, et tout le reste est le champ textuel. La cellule a cette structure :\par\smallskip
\hfil\verb-<champ textuel>:={champ numérique}<suite du champ textuel>-\hfil\null\par\smallskip
- On peut changer ce marqueur en la séquence de contrôle \og\verb-\=-\fg{} par exemple, en redéfinissant la macro \verbinline-\STnumericfieldmarker- de cette façon :\par\smallskip{\centering
+ On peut changer ce marqueur en la séquence de contrôle «\verb-\=-» par exemple, en redéfinissant la macro \verbinline-\STnumericfieldmarker- de cette façon :\par\smallskip{\centering
\verbinline-\renewcommand\STnumericfieldmarker{\=}-\par\smallskip}
Dans ce cas, le développement de \verb-\=- n'aurait strictement aucune importance et n'interviendrait pas dans le processus : pour \ST, il ne s'agit que d'un marqueur de début de formule qui est cherché et reconnu sans être développé.
\end{itemize}
-Une fois le \og\verb-champ numérique-\fg{} calculé, lui seul et le marqueur \og\verb-:=-\fg{} seront remplacés par la valeur numérique calculée.
+Une fois le «\verb-champ numérique-» calculé, lui seul et le marqueur «\verb-:=-» seront remplacés par la valeur numérique calculée.
-Il faut noter que \og\verb-:={champ numérique}-\fg{} peut se trouver à l'intérieur d'accolades et ce quelque soit le niveau d'imbrication. Par exemple, dans une cellule, on peut écrire \verb-\textbf{:={a1+1}}-. Si le champ numérique de la cellule \falseverb{a1} est 5, alors la cellule contiendra au final \verb-\textbf{6}-.
+Il faut noter que «\verb-:={champ numérique}-» peut se trouver à l'intérieur d'accolades et ce quelque soit le niveau d'imbrication. Par exemple, dans une cellule, on peut écrire \verb-\textbf{:={a1+1}}-. Si le champ numérique de la cellule \falseverb{a1} est 5, alors la cellule contiendra au final \verb-\textbf{6}-.
Pour fixer les idées, voici un exemple très simple :\par\nobreak
\begin{lstlisting}
@@ -322,7 +335,7 @@
valeur 1 : :={50} & valeur 2 : :={29} & moyenne : \textbf{:={(a1+b1)/2}}\\\hline
\end{spreadtab}
\end{center}
-À noter également que \og\verb-:={}-\fg{}, qui définit formule vide, a le même effet que \og\verb-@-\fg dans une cellule : celle-ci est comprise comme cellule de texte. Cependant, \og\verb-@-\fg et \og\verb-:={}-\fg{} \emph{ne sont pas équivalents} car une cellule textuelle contenant ce dernier peut recevoir une formule par copie (voir section suivante), ce qui est impossible avec \og\verb-@-\fg.
+À noter également que «\verb-:={}-», qui définit formule vide, a le même effet que «\verb-@-» dans une cellule : celle-ci est comprise comme cellule de texte. Cependant, «\verb-@-» et «\verb-:={}-» \emph{ne sont pas équivalents} car une cellule textuelle contenant ce dernier peut recevoir une formule par copie (voir section suivante), ce qui est impossible avec «\verb-@-».
\subsection{Copier des formules}
Pour éviter d'avoir à recopier des formules identiques dans des cellules voisines, \ST fournit l'instruction \verbinline-\STcopy-.
@@ -331,13 +344,13 @@
\begin{center}
\verbinline-\STcopy{>-$x$\verbinline-,v-$y$\verbinline-}{formule}-
\end{center}
-où $x$ et $y$ sont des nombres positifs qui représentent des décalages horizontaux et verticaux par rapport à la cellule où se trouve l'instruction. La cellule qui contient la commande et la cellule obtenue par ces décalages définissent une plage rectangulaire de cellules qui recevront la \verb-<formule>-\footnote{La copie ne peut donc se faire que vers des cellules se trouvant à droite et plus bas que la cellule dans laquelle se trouve la commande.}. La commande \verbinline-\STcopy -\emph{ne doit pas} se trouver dans une cellule où un marqueur de champ numérique \og\verb-:=-\fg{} est présent.
+où $x$ et $y$ sont des nombres positifs qui représentent des décalages horizontaux et verticaux par rapport à la cellule où se trouve l'instruction. La cellule qui contient la commande et la cellule obtenue par ces décalages définissent une plage rectangulaire de cellules qui recevront la \verb-<formule>-\footnote{La copie ne peut donc se faire que vers des cellules se trouvant à droite et plus bas que la cellule dans laquelle se trouve la commande.}. La commande \verbinline-\STcopy -\emph{ne doit pas} se trouver dans une cellule où un marqueur de champ numérique «\verb-:=-» est présent.
Voici comment se déroule la copie : elle se fait en partant de la cellule où se trouve l'instruction, la cellule source. Pour chaque cellule cible, toutes les références dans la formule sont incrémentées pour tenir compte du décalage entre la cellule cible et la cellule source. Ainsi par exemple, mettons que la cellule source contienne la formule \verb-a1+b2+c3-. Lorsque cette formule est copiée dans une cellule cible se trouvant 2 colonnes à droite et 5 lignes en dessous, cette formule deviendra : \verb-c6+d7+e8-. La formule peut également contenir des références relatives qui, puisqu'elle sont relatives, ne seront pas modifiées.
-En faisant précéder d'un \og\verb-!-\fg une coordonnée d'une référence, cette coordonnée reste inchangée lors de la copie. Reprenons l'exemple précédent avec la formule \verb-a!1+!b2+!c!3-. Si cette formule est copiée dans la cellule se trouvant 2 colonnes à droite et 5 lignes en dessous, alors, elle deviendra : \verb-c1+b7+c3-. Cette fonctionnalité est compatible avec des références relatives : mettons qu'une cellule contienne la formule \verb|[-1,!-1]+[!-1,1]+[!1,!2]| et que cette formule soit copiée vers la cellule se trouvant 2 colonnes à droite et 5 lignes en dessous. Alors, elle deviendra : \verb|[-1,-6]+[-3,1]+[-1,-3]|.
+En faisant précéder d'un «\verb-!-» une coordonnée d'une référence, cette coordonnée reste inchangée lors de la copie. Reprenons l'exemple précédent avec la formule \verb-a!1+!b2+!c!3-. Si cette formule est copiée dans la cellule se trouvant 2 colonnes à droite et 5 lignes en dessous, alors, elle deviendra : \verb-c1+b7+c3-. Cette fonctionnalité est compatible avec des références relatives : mettons qu'une cellule contienne la formule \verb|[-1,!-1]+[!-1,1]+[!1,!2]| et que cette formule soit copiée vers la cellule se trouvant 2 colonnes à droite et 5 lignes en dessous. Alors, elle deviendra : \verb|[-1,-6]+[-3,1]+[-1,-3]|.
-Le caractère \og\verb-!-\fg est le développement de la séquence de contrôle \verbinline-\STtransposecar-. On peut donc modifier ce caractère en tout autre avec \verbinline-\renewcommand\STtransposecar-\verb-{}-. Le point d'exclamation, utilisé par défaut, garde son code de catégorie actif qui lui a été attribué par le package \verb-babel- chargé avec l'option \verb-frenchb-.
+Le caractère «\verb-!-» est le développement de la séquence de contrôle \verbinline-\STtransposecar-. On peut donc modifier ce caractère en tout autre avec \verbinline-\renewcommand\STtransposecar-\verb-{}-. Le point d'exclamation, utilisé par défaut, garde son code de catégorie actif qui lui a été attribué par le package \verb-babel- chargé avec l'option \verb-frenchb-.
Dans la syntaxe \verbinline-\STcopy{>-$x$\verbinline-,v-$y$\verbinline-}{formule}-, si le nombre $x$ est absent, la copie dans le sens horizontal se fait vers la droite jusqu'au bord droit du tableau. Si $y$ est absent, la copie dans le sens vertical se fait jusqu'en bas du tableau.
@@ -388,7 +401,7 @@
Lors d'une copie de formule, si la cellule cible contient déjà un champ numérique non vide, celui-ci n'est pas écrasé et la copie ne se fait pas.
-Si des commandes \verbinline-\STcopy- se trouvant danns des plusieurs cellules départ ont une même cellule cible, la formule que cette dernière reçoit est celle correspondant à la dernière commande \verbinline-\STcopy- rencontrée lorsque le tableau est lu de haut en bas et de droite à gauche. Dans l'exemple visuel ci-dessous, le \verbinline-\STcopy- se trouvant dans la cellule rose \falseverb{B1} a son champ cible partiellement recouvert par celui du \verbinline-\STcopy- se trouvant dans la cellule verte \falseverb{C3}. En effet, cette dernière est rencontrée plus tard lors de la lecture du tableau :
+Si des commandes \verbinline-\STcopy- se trouvant dans des plusieurs cellules départ ont une même cellule cible, la formule que cette dernière reçoit est celle correspondant à la dernière commande \verbinline-\STcopy- rencontrée lorsque le tableau est lu de haut en bas et de droite à gauche. Dans l'exemple visuel ci-dessous, le \verbinline-\STcopy- se trouvant dans la cellule rose \falseverb{B1} a son champ cible partiellement recouvert par celui du \verbinline-\STcopy- se trouvant dans la cellule verte \falseverb{C3}. En effet, cette dernière est rencontrée plus tard lors de la lecture du tableau :
\begin{center}
\begin{OOocalc}[2.3cm]{6}
1 &\CC{palepink}\ttfamily\textbackslash STcopy \{v,>\}\{!a1+1\} &\CC{lightpink} &\CC{lightpink} &\CC{lightpink} &\CC{lightpink} \\
@@ -398,7 +411,7 @@
5 &\CC{lightpink} &\CC{lightpink} &\CC{lightpink} &\CC{lightpink} &\CC{lightpink}~\par~ \\
\end{OOocalc}
\end{center}
-Voici cet exemple repris ci-dessous pour mettre en évidence ces comportements. Dans cet exemple, la celule \verb-b5- qui est composée d'un champ numérique et la cellule \verb-c5- qui est mixte, leur champ numérique n'étant pas vide, il est conservé.
+Voici cet exemple repris ci-dessous pour mettre en évidence ces comportements. Dans cet exemple, la cellule \verb-b5- qui est composée d'un champ numérique et la cellule \verb-c5- qui est mixte, leur champ numérique n'étant pas vide, il est conservé.
\begin{lstlisting}
\begin{spreadtab}{{tabular}{|*6{c|}}}\hline
1 &\STcopy{v,>}{!a1+1} & & & & \\\hline
@@ -417,7 +430,7 @@
5 & -1 & a:={0}b & & & \\\hline
\end{spreadtab}
\end{center}
-Comme on l'a dit à la fin du chapitre précédent, on peut également copier une formule dans une cellule de texte contenant un champ numérique vide (c'est-à-dire une cellule contenant \og\verb-:={}-\fg). Dans ce cas, la formule est copiée à l'endroit où se trouve \og\verb-:={}-\fg. Par contre, dans une cellule de texte contenant \og\verb-@-\fg, la copie ne se fait pas et la cellule reste purement textuelle.
+Comme on l'a dit à la fin du chapitre précédent, on peut également copier une formule dans une cellule de texte contenant un champ numérique vide (c'est-à-dire une cellule contenant «\verb-:={}-»). Dans ce cas, la formule est copiée à l'endroit où se trouve «\verb-:={}-». Par contre, dans une cellule de texte contenant «\verb-@-», la copie ne se fait pas et la cellule reste purement textuelle.
Exemple :
\begin{lstlisting}
@@ -435,7 +448,7 @@
\section{Mise en forme du tableau}
\subsection{Séparateur décimal}
-Le package \verb-fp- renvoie ses résultats décimaux avec le point comme séparateur décimal. Il est possible de changer ce séparateur décimal de telle sorte que tout se passe comme si les résultats retournés par \verb-fp- en tenaient compte. L'instruction \verbinline-\STsetdecimalsep- permet de changer le séparateur décimal en n'importe quel caractère en utilisant la syntaxe :
+Les packages \fp et \xfp renvoient les résultats décimaux avec le point comme séparateur décimal. Il est possible de changer ce séparateur décimal de telle sorte que tout se passe comme si les résultats retournés par \fp ou \xfp en tenaient compte. L'instruction \verbinline-\STsetdecimalsep- permet de changer le séparateur décimal en n'importe quel caractère en utilisant la syntaxe :
\begin{center}
\verbinline-\STsetdecimalsep-\verb-{}-
\end{center}
@@ -494,16 +507,16 @@
\end{spreadtab}
\end{minipage}
-\subsection{Mise en forme des nombres}
-Comme cela a été précisé, tous les calculs sont faits par le package \href{http://www.ctan.org/tex-archive/macros/latex/contrib/fp/}{\texttt{\textbf{fp}}} et sa macro \falseverb{\FPeval}\footnote{À ce propos, les notations infixe ou postfixe sont acceptées par {\ttfamily\string\FPeval} ce qui signifie que les formules dans \ST peuvent être indifféremment sous forme infixe ou postfixe. Par exemple, la formule infixe \og\falseverb{a1+b1}\fg{} est équivalente aux formules postfixes \og\falseverb{a1 b1 add}\fg{} ou \og\falseverb{a1 b1 +}\fg.}. Ce package fournit d'extraordinaires possibilités de calcul pour \TeX{} et dispose de toutes les fonctions arithmétiques, scientifiques et trigonométriques usuelles. Les calculs sont faits avec une précision de $10^{-18}$, et les 18 décimales sont affichées lorsqu'un calcul ne tombe pas juste ! Sans prendre des précautions, on peut se retrouver avec beaucoup de chiffres dans les parties décimales de certains résultats.
+\subsection{Mise en forme des nombres avec le moteur \fp}
+Comme cela a été précisé avec l'option \fp, tous les calculs sont faits par le package \href{http://www.ctan.org/tex-archive/macros/latex/contrib/fp/}{\texttt{\textbf{fp}}} et sa macro \falseverb{\FPeval}\footnote{À ce propos, les notations infixe ou postfixe sont acceptées par {\ttfamily\string\FPeval} ce qui signifie que les formules dans \ST peuvent être indifféremment sous forme infixe ou postfixe. Par exemple, la formule infixe «\falseverb{a1+b1}» est équivalente aux formules postfixes «\falseverb{a1 b1 add}» ou «\falseverb{a1 b1 +}».}. Ce package fournit d'extraordinaires possibilités de calcul pour \TeX{} et dispose de toutes les fonctions arithmétiques, scientifiques et trigonométriques usuelles. Les calculs sont faits avec une précision de $10^{-18}$, et les 18 décimales sont affichées lorsqu'un calcul ne tombe pas juste ! Sans prendre des précautions, on peut se retrouver avec beaucoup de chiffres dans les parties décimales de certains résultats. Toute cette section est compilée avec \verbinline|\STusefp|.\STusefp
Pour se prémunir de ce problème, plusieurs solutions existent :
\begin{itemize}
\item on peut utiliser le package \href{http://www.ctan.org/tex-archive/macros/latex/contrib/numprint/}{\texttt{\textbf{numprint}}} qui est ce qui se fait de mieux dans l'affichage des nombres;
- \item on peut demander à \verb=fp= d'arrondir un résultat avec sa fonction \verb-round(nombre,entier)- qui arrondit \verb=nombre= avec \verb=entier= chiffres après la virgule;
- \item on peut également demander à \ST d'arrondir \emph{tous} les nombres placés dans le tableau à une certaine précision avec la macro \verbinline-\STautoround- dont l'argument est le nombre de chiffres demandés après la virgule. Si l'argument est vide, aucun arrondi n'est fait. Si on utilise la macro étoilée \verbinline-\STautoround*-, la partie décimale est remplie si besoin avec des 0 inutiles.
+ \item on peut demander à \fp d'arrondir un résultat avec sa fonction \verb-round(nombre,entier)- qui arrondit \verb=nombre= avec \verb=entier= chiffres après la virgule;
+ \item on peut également demander à \ST d'arrondir \emph{tous} les nombres placés dans le tableau à une certaine précision avec la macro \verbinline-\STautoround- dont l'argument est le nombre de chiffres demandés après la virgule. Si l'argument est vide, aucun arrondi n'est fait. Si on utilise la macro étoilée \verbinline-\STautoround*-, la partie décimale est remplie si besoin avec des 0 inutiles (uniquement avec \fp).
\end{itemize}
-Voici un exemple simple des nombres de 1 à 7 et leurs inverses, arrondis à $10^{-6}$ :\par\nobreak
+Voici un exemple, des nombres de 1 à 7 et leurs inverses sont arrondis à $10^{-6}$ :\par\nobreak
\begin{lstlisting}
\STautoround{6}
\begin{spreadtab}{{tabular}{|l|*7{>{\centering\arraybackslash}m{1.35cm}|}}}
@@ -557,7 +570,7 @@
\end{spreadtab}
\end{center}
-Voici un autre exemple similaire où l'on teste si le nombre à afficher est négatif avec la commande \verbinline-\FPifneg- du package \verb-fp-. Si tel est le cas, le nombre est affiché en rouge. La commande \verbinline-\STautoround- a été préférée à \verbinline-\nprounddigits- du package \verb-numprint- puisque cette dernière ajoute des 0 inutiles. On a également remis le point décimal par défaut puisque \verbinline-\numprint- est en charge de l'affichage des nombres.
+Voici un autre exemple similaire où l'on teste si le nombre à afficher est négatif avec la commande \verbinline-\FPifneg- du package \fp. Si tel est le cas, le nombre est affiché en rouge. La commande \verbinline-\STautoround- a été préférée à \verbinline-\nprounddigits- du package \verb-numprint- puisque cette dernière ajoute des 0 inutiles. On a également remis le point décimal par défaut puisque \verbinline-\numprint- est en charge de l'affichage des nombres.
\begin{lstlisting}
\STsetdecimalsep{.}
\renewcommand\STprintnum[1]{\FPifneg{#1}\color{red}\fi\numprint{#1}}
@@ -569,13 +582,13 @@
\end{lstlisting}
\begin{center}
\STsetdecimalsep{.}
-\renewcommand\STprintnum[1]{\FPifneg{#1}\color{red}\fi\numprint{#1}}
+\renewcommand\STprintnum[1]{\STifneg{#1}\color{red}\fi\numprint{#1}}
\STautoround{6}
\begin{spreadtab}{{tabular}{cccccccc}}
@$x$ & -1 & 2 & -3 & 4 & -5 & 6 & -7 \\\hline
@$1/x$ &1/b1&1/c1&1/d1&1/e1&1/f1&1/g1&1/h1
\end{spreadtab}
-\end{center}
+\end{center}\STusexfp
\subsection{Retours à la ligne et filets horizontaux}
Pour bien délimiter la fin d'une ligne, \ST est contraint de reconnaître les retours à la ligne et les filets horizontaux. Ce package permet d'utiliser dans le tableau l'argument optionnel de \verb-\\- de cette façon : \verb-\\[<dimension>]-.
@@ -757,20 +770,20 @@
\multicolumn{2}{|K{1}}{:=8}&\multicolumn{2}{|K{1}}{:=7}&\multicolumn{2}{|K{1}|}{:=6}\\\hline
\end{spreadtab}
\end{center}
-On remarque que le marqueur de champ numérique \og\falseverb{:=}\fg{} est nécessaire dans chaque cellule où se trouve la commande \verbinline-\multicolumn-. On comprend en effet que si ce marqueur n'existait pas, la totalite de la cellule, c'est-à-dire \verb-\multicolumn{2}{|c|}{<formule>}- serait considérée comme étant une formule.
+On remarque que le marqueur de champ numérique «\falseverb{:=}» est nécessaire dans chaque cellule où se trouve la commande \verbinline-\multicolumn-. On comprend en effet que si ce marqueur n'existait pas, la totalite de la cellule, c'est-à-dire \verb-\multicolumn{2}{|c|}{<formule>}- serait considérée comme étant une formule.
\section{Macro-fonctions}
L'extension \falseverb{fp} fournit un nombre conséquent d'opérations et de fonctions. Malgré tout, dans le cadre d'un package comme \ST, celles-ci peuvent être insuffisantes et il est possible au programmeur averti d'écrire des macro-fonctions supplémentaires en utilisant celles fournies par \falseverb{fp}. Cette section présente les macro-fonctions pour l'instant disponibles\footnote{Bien d'autres restent à écrire ! Elles seront disponibles dans des versions futures de \ST.}. Il y aura plus de précisions sur la méthode pour programmer des macro-fonctions dans la prochaine version de ce manuel.
\subsection{Macro-fonctions mathématiques}
\subsubsection{Sommer des cellules}
-La fonction \og\verbinline=sum=\fg permet de faire la somme d'une ou plusieurs plages de cellules.
+La fonction «\verbinline=sum=» permet de faire la somme d'une ou plusieurs plages de cellules.
Elle s'utilise ainsi : \verbinline=sum(;;...;<plage n>)=, où une plage de cellules est :
\begin{itemize}
- \item soit une cellule isolée comme \og\falseverb{a1}\fg{} ou \og\falseverb{[2,1]}\fg{};
- \item soit une zone rectangulaire délimitée par la cellule supérieure gauche et inférieure droite de cette façon : \og\verb=:=\fg, à condition que \og\verb==\fg se trouve \emph{avant} \og\verb==\fg{} lorsqu'on parcourt le tableau de haut en bas, de gauche à droite.\par
- Voici des exemple de plages de cellules : \og\falseverb{a2:d5}\fg{}, \og\falseverb{[-1,-1]:[2,3]}\fg{}, \og\falseverb{b4:[5,1]}\fg{}.
+ \item soit une cellule isolée comme «\falseverb{a1}» ou «\falseverb{[2,1]}»;
+ \item soit une zone rectangulaire délimitée par la cellule supérieure gauche et inférieure droite de cette façon : «\verb=:=», à condition que «\verb==» se trouve \emph{avant} «\verb==» lorsqu'on parcourt le tableau de haut en bas, de gauche à droite.\par
+ Voici des exemple de plages de cellules : «\falseverb{a2:d5}», «\falseverb{[-1,-1]:[2,3]}», «\falseverb{b4:[5,1]}».
\end{itemize}
Dans les plages de cellules, les cellules vides ou ne contenant que du texte sont considérées comme contenant le nombre 0. Il en est de même pour les cellules masquée car fusionnées par \verbinline-\multicolumn-.
@@ -800,7 +813,7 @@
\end{minipage}%
\subsubsection{Macro-fonction \ttfamily fact}
-La macro-fonction \verbinline=fact(<nombre>)= permet de calculer la factorielle de son argument, sous réserve que celui-ci soit un entier compris entre 0 et 18 inclus pour éviter des débordements\footnote{En effet, pour \falseverb{fp} le plus grand entier est $10^{18}-1$. La factorielle de 19 dépasse ce nombre.}. Le \falseverb{<nombre>} peut aussi être une référence vers une cellule contenant un nombre entier.
+La macro-fonction \verbinline=fact(<nombre>)= permet de calculer la factorielle de son argument. Avec le moteur de calcul \href{https://www.ctan.org/pkg/fp}{\fp} le nombre doit être un entier compris entre 0 et 18 inclus pour éviter des débordements. Le \falseverb{<nombre>} peut aussi être une référence vers une cellule contenant un nombre entier.
Voici les factorielles de 0 à 8 :\par\nobreak
\begin{lstlisting}
@@ -839,9 +852,12 @@
De la même façon que pour la macro-fonction \verbinline-sum-, les cellules de texte, vides ou fusionnées par un \verbinline-\multicolumn- sont considérées comme contenant le nombre 0.
\subsubsection{Nombres aléatoires}
-Les macro-fonctions \verbinline-randint- et \verbinline-rand- renvoient un nombre aléatoire.
+\verbinline-randint- et \verbinline-rand- renvoient un nombre aléatoire, respectivement entier entre bornes et décimal entre 0 et 1.
+
+\paragraph{Nombres aléatoires avec le moteur \fp}
+Avec ce moteur, \verbinline-randint- et \verbinline-rand- sont des \emph{macro fonctions} de \ST qui s'appuient sur la macro \verb|\FPrandom| de \fp.
-À noter : la \og graine\fg{} qui initialise la suite aléatoire dépend de la date ainsi que de la la minute à laquelle est faite la compilation. Les séries aléatoires données par cette fonction changeront entre deux compilations faites à des heures dont les minutes diffèrent. Si l'on veut vraiment avoir des nombres aléatoires indépendant du moment de compilation et donc reproductibles, il faut neutraliser la macro interne \verb-\ST@seed- et définir une graine pour \verb-fp- :\par\nobreak
+À noter : la «graine» qui initialise la suite aléatoire dépend de la date ainsi que de la la minute à laquelle est faite la compilation. Les séries aléatoires données par cette fonction changeront entre deux compilations faites à des heures dont les minutes diffèrent. Si l'on veut vraiment avoir des nombres aléatoires indépendant du moment de compilation et donc reproductibles, il faut neutraliser la macro interne \verb-\ST@seed- et définir une graine pour \fp :\par\nobreak
\begin{lstlisting}[backgroundcolor=\color{ST@codebckgcolor}]
\makeatletter
\renewcommand\ST@seed{}% redefinit la macro interne
@@ -853,21 +869,51 @@
La macro fonction \verbinline-rand()- renvoie un nombre aléatoire décimal compris entre 0 et 1 :\par\nobreak
\begin{lstlisting}
\STautoround{6}
+\STusefp
\begin{spreadtab}{{tabular}{|l|cccc|}}\hline
@nombres dans [0;1] &rand() &rand() &rand() &rand() \\
@nombres dans [-5;5] &randint(-5,5) &randint(-5,5) &randint(-5,5) &randint(-5,5)\\
@nombres dans [0;20] &randint(20) &randint(20) &randint(20) &randint(20) \\
\hline
\end{spreadtab}
+\STusexfp
\end{lstlisting}
\begin{center}
\STautoround{6}
+\STusefp
+\begin{spreadtab}{{tabular}{|l|cccc|}}\hline
+@nombres dans [0;1] &rand() &rand() &rand() &rand() \\
+@nombres dans [-5;5] &randint(-5,5) &randint(-5,5) &randint(-5,5) &randint(-5,5)\\
+@nombres dans [0;20] &randint(20) &randint(20) &randint(20) &randint(20) \\
+\hline
+\end{spreadtab}
+\STusexfp
+\end{center}
+
+\paragraph{Nombres aléatoires avec le moteur \xfp}
+Avec ce moteur, \verbinline-randint- et \verbinline-rand- sont des fonctions reconnues nativement par \xfp. Un avertissement sera émis si \XeLaTeX{} est utilisé dans une version trop ancienne qui n'implémente pas les primitives de génération de nombres pseudo-aléatoires; dans ce cas, utiliser les fonctions \verbinline-randint- et \verbinline-rand- ne sera pas possible et conduira à des erreurs de compilation.
+
+Comme le spécifie la documentation de \href{http://mirrors.ctan.org/macros/latex/contrib/l3kernel/interface3.pdf}{\texttt{\textbf{interface3}}}, la fonction \verbinline|randint(<a>,<b>)| produit un entier aléatoire entre les deux arguments, mais si \verb|<a>| est omis, \verbinline|randint(<b>)| produit un entier entre {\color{red}\bfseries1} et \verb|<b>| ce qui constitue un comportement différent de la macro fonction \verbinline-randint- de \ST utilisée avec \fp qui produit un entier entre {\color{red}\bfseries0} et \verb|<b>|.\STusexfp
+
+\begin{lstlisting}
+\STautoround{6}
+\STusexfp
\begin{spreadtab}{{tabular}{|l|cccc|}}\hline
@nombres dans [0;1] &rand() &rand() &rand() &rand() \\
@nombres dans [-5;5] &randint(-5,5) &randint(-5,5) &randint(-5,5) &randint(-5,5)\\
@nombres dans [0;20] &randint(20) &randint(20) &randint(20) &randint(20) \\
\hline
\end{spreadtab}
+\end{lstlisting}
+\begin{center}
+\STautoround{6}
+\STusexfp
+\begin{spreadtab}{{tabular}{|l|cccc|}}\hline
+@nombres dans [0;1] &rand() &rand() &rand() &rand() \\
+@nombres dans [-5;5] &randint(-5,5) &randint(-5,5) &randint(-5,5) &randint(-5,5)\\
+@nombres dans [1;20] &randint(20) &randint(20) &randint(20) &randint(20) \\
+\hline
+\end{spreadtab}
\end{center}
\subsubsection{PGCD et PPCM}
@@ -897,7 +943,7 @@
\end{center}
\subsubsection{Écriture scientifique}
-La macro fonction "scitodec" permet de convertir un nombre écrit en écriture scientifique en nombre décimal compréhensible par \ST pour faire ses calculs. La syntaxe est \verbinline-scitodec(<texte>)-, où le \verb-<texte>- est :
+La macro fonction "scitodec" permet de convertir un nombre écrit en écriture scientifique en nombre décimal. La syntaxe est \verbinline-scitodec(<texte>)-, où le \verb-<texte>- est :
\begin{enumerate}[label=--]
\item une suite de caractères se présentant sous la syntaxe \verb-<mantisse>EE<exposant>-, où la \verb-<mantisse>- est un nombre décimal et l'\verb->exposant>- est un entier relatif. Les "E" peuvent être écrit en majuscule ou minuscule.
@@ -928,8 +974,10 @@
\end{spreadtab}
\end{center}
+Le moteur \xfp est comprend nativement les nombres écrits en notation scientifique sous la forme \verb|<a>e<b>| mais l'utilisation de cette syntaxe est \emph{impossible} à utiliser avec \ST car le nombre \verb|4e3|, qui est 4000, serait compris par \ST comme 4 suivi du contenu de la cellule \verb|e3|.
+
\subsubsection{Identité}
-La plus simple des macros fonctions est \og\verbinline=id(<nombre>)=\fg. Celle-ci renvoie le nombre qui se trouve entre parenthèses. Mathématiquement, elle ne sert pas à grand chose, mais avec \ST, elle permet de passer des expressions mathématiques à des macros qui n'en admettent pas. On peut ainsi s'en servir dans les plages de cellules de \verbinline=sum= par exemple.
+La plus simple des macros fonctions est «\verbinline=id(<nombre>)=». Celle-ci renvoie le nombre qui se trouve entre parenthèses. Mathématiquement, elle ne sert pas à grand chose, mais avec \ST, elle permet de passer des expressions mathématiques à des macros qui n'en admettent pas. On peut ainsi s'en servir dans les plages de cellules de \verbinline=sum= par exemple.
Dans le code ci dessous, la macro \verbinline=id= est utilisée pour déterminer la plage de cellules à additionner avec \verbinline-sum-. Dans cet exemple, la valeur du champ numérique de la cellule a2 vaut 8. Et donc, "\verbinline=sum([0,-1]:[id(a2-1),-1])/a2=" est équivalent à \verbinline=sum([0,-1]:[7,-1])/8= :
@@ -947,7 +995,7 @@
\end{center}
\subsection{Macro-fonctions de test}
-Elles sont au nombre de 3 et ont la syntaxe suivante :\par\nobreak
+Comme \fp et sa macro \verb|\FPeval| n'admet pas de test dans son argument, 3 macro-fonctions de test sont disponibles (elles sont moins intéressantes pour \xfp qui dispose de l'opérateur «\verb|?:|», voir plus bas) :\par\nobreak
\begin{center}
\verbinline=ifeq(nombre1,nombre2,nombre3,nombre4)=\par
\verbinline=ifgt(nombre1,nombre2,nombre3,nombre4=\par
@@ -993,10 +1041,36 @@
[0,-1]+0.5 & iflt([-1,0],1,10,ifeq([-1,0],1,0,-10))\\\hline
\end{spreadtab}
\end{center}
+Le moteur \xfp et son opérateur ternaire \verb|<a>?<b>:<c>| rend les tests plus faciles dans les expressions évaluées : si le test \verb|<a>| est vrai, \verb|<b>| est retenu sinon, c'est \verb|<c>|. Ainsi, l'imbrication de tests ci-dessus se programme :
+
+\begin{lstlisting}
+\begin{spreadtab}{{tabular}{|*2c|}}\hline
+@$x$ & @$f(x)$ \\\hline
+-0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\\hline
+\end{spreadtab}
+\end{lstlisting}
+\begin{center}
+\begin{spreadtab}{{tabular}{|*2c|}}\hline
+@$x$ & @$f(x)$ \\\hline
+-0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\
+[0,-1]+0.5 & [-1,0]<1 ? 10 : [-1,0]=1 ? 0 : -10\\\hline
+\end{spreadtab}
+\end{center}
\subsection{Macro-fonctions de date}
\subsubsection{Convertir une date en nombre avec \ttfamily frshortdatetonum}\label{datetonum}
-La macro \verbinline-frshortdatetonum- permet de convertir une date de la forme 14/7/1789 en un nombre qui est en fait le nombre de jours écoulés depuis le 1\ier{} mars de l'an 0\footnote{Cet \og an 0\fg{} n'existe d'ailleurs pas, mais cela ne devrait pas être gênant pour les dates contemporaines}. Il est important de noter que cette macro-fonction requiert un argument \emph{textuel} et non pas un nombre ou le résultat d'un calcul mathématique. Par conséquent, si l'argument de cette macro-fonction fait référence à une cellule, cette cellule \emph{doit} être une cellule textuelle, c'est à dire contenant \og\verb-@-\fg{} ou \og\verb-:={}-\fg{}
+La macro \verbinline-frshortdatetonum- permet de convertir une date de la forme 14/7/1789 en un nombre qui est en fait le nombre de jours écoulés depuis le 1\ier{} mars de l'an 0\footnote{Cet «an 0» n'existe d'ailleurs pas, mais cela ne devrait pas être gênant pour les dates contemporaines}. Il est important de noter que cette macro-fonction requiert un argument \emph{textuel} et non pas un nombre ou le résultat d'un calcul mathématique. Par conséquent, si l'argument de cette macro-fonction fait référence à une cellule, cette cellule \emph{doit} être une cellule textuelle, c'est à dire contenant «\verb-@-» ou «\verb-:={}-»
Dans l'exemple ci-dessous, les deux premières lignes montrent que la cellule de gauche contient une date, et la cellule de droite fait référence à cette date pour calculer le nombre correspondant. La troisième ligne montre dans la cellule de gauche la date 0, mais surtout calcule dans la cellule de droite le nombre correspondant à la date \emph{d'aujourd'hui}, en transformant en nombre les compteurs de \TeX{} \verbinline-\day-, \verbinline-\month- et \verbinline-\year- qui contiennent les numéros des jours, mois et année courants.\par\nobreak
\begin{lstlisting}
@@ -1013,7 +1087,7 @@
frshortdatetonum(1/3/0) & frshortdatetonum(\number\day/\number\month/\number\year)
\end{spreadtab}
\end{center}
-Une autre macro-fonction existe, elle transforme une date longue du type \og 25 décembre 1789\fg{} en un nombre. L'argument peut aussi être la séquence de contrôle \verbinline-\today- si l'on a pris le soin de charger l'extension \verb-babel- avec l'option \verb-frenchb-.\par\nobreak
+Une autre macro-fonction existe, elle transforme une date longue du type «25 décembre 1789» en un nombre. L'argument peut aussi être la séquence de contrôle \verbinline-\today- si l'on a pris le soin de charger l'extension \verb-babel- avec l'option \verb-frenchb-.\par\nobreak
\begin{lstlisting}[escapechar=Z]
\begin{spreadtab}{{tabular}{cc}}
frlongdatetonum(\today) & frlongdatetonum(25 dZéZcembre 2009)\\
@@ -1033,7 +1107,7 @@
Voici ces fonctions :
\begin{itemize}
\item \verbinline-numtofrshortdate- transforme un nombre en une date courte du type 14/7/1789;
- \item \verbinline-numtofrlongdate- transforme un nombre en une date longue du type \og 14 juillet 1789\fg;
+ \item \verbinline-numtofrlongdate- transforme un nombre en une date longue du type «14 juillet 1789»;
\item \verbinline-numtofrmonth- extrait d'un nombre représentant une date le nom du mois correspondant;
\item \verbinline-numtofrday- extrait d'un nombre représentant une date le nom du jour correspondant.
\end{itemize}
@@ -1234,14 +1308,14 @@
\end{center}
Il y a 4 cellules \emph{visibles} fusionnées, on écrira donc \verbinline-\multicolumn{4}- car on ne tient \emph{jamais} compte des colonnes masquées dans le décompte du nombre de cellules à fusionner.
-Maintenant, on compte 4 lettres à partir de la lettre \falseverb{b} en l'incluant dans le décompte. On arrive à la lettre \falseverb{e} : cela détermine un intervalle de colonnes \og\falseverb{b-e}\fg. Dans cet intervalle, 2 colonnes masquées sont incluses (\falseverb c et \falseverb d) et 1 colonne masquée n'est pas comprise (\falseverb f). Ces 2 nombres sont importants pour comprendre la suite, aussi, notons-les $x$ et $y$ dans le cas général.
+Maintenant, on compte 4 lettres à partir de la lettre \falseverb{b} en l'incluant dans le décompte. On arrive à la lettre \falseverb{e} : cela détermine un intervalle de colonnes «\falseverb{b-e}». Dans cet intervalle, 2 colonnes masquées sont incluses (\falseverb c et \falseverb d) et 1 colonne masquée n'est pas comprise (\falseverb f). Ces 2 nombres sont importants pour comprendre la suite, aussi, notons-les $x$ et $y$ dans le cas général.
La règle est la suivante :
\begin{itemize}
- \item il faut rajouter $y$ signes \og\verb-&-\fg{} après le \verbinline-\multicolumn- (pour l'exemple, il en faudrait 1).
- \item les références des colonnes des cellules qui suivent le \verbinline-\multicolumn- seront décalées de $x$ lettres vers le début de l'alphabet. Pour l'exemple donnée, si on veut faire référence à la cellule marquée \og \falseverb{i2}\fg{}, il faudra écrire \falseverb{g2} (au lieu de \falseverb{i2}).
+ \item il faut rajouter $y$ signes «\verb-&-» après le \verbinline-\multicolumn- (pour l'exemple, il en faudrait 1).
+ \item les références des colonnes des cellules qui suivent le \verbinline-\multicolumn- seront décalées de $x$ lettres vers le début de l'alphabet. Pour l'exemple donnée, si on veut faire référence à la cellule marquée «\falseverb{i2}», il faudra écrire \falseverb{g2} (au lieu de \falseverb{i2}).
\end{itemize}
-Voici un vrai exemple dont la structure est similaire au précédent : $x=2$ et $y=1$. Dans le code, remarquer le \og\textcolor{red}{\texttt{\&}}\fg{} qui a été ajouté puisque $y=1$. Par ailleurs, on reste simple avec les formules, on ajoute 1 au nombre du dessus :\par\nobreak
+Voici un vrai exemple dont la structure est similaire au précédent : $x=2$ et $y=1$. Dans le code, remarquer le «\textcolor{red}{\texttt{\&}}» qui a été ajouté puisque $y=1$. Par ailleurs, on reste simple avec les formules, on ajoute 1 au nombre du dessus :\par\nobreak
\begin{lstlisting}[escapechar=Z]
\begin{spreadtab}{{tabular}{|*{7}{c|}}}
\hline
@@ -1380,7 +1454,7 @@
\section{Exemples}
Voici quelques tableaux pour finir !
-Afin que l'on sache quels nombres sont calculés, seuls les nombres non calculés sont en \textcolor{red}{rouge}. Dans ces tableaux, beaucoup d'artifices (des struts, des multicolumn) et des packages (notamment numprint et ses colonnes \og N\fg{} qui alignent les séparateurs décimaux) ont été utilisés pour obtenir un résultat satisfaisant. Le code est parfois lourd et peu lisible, mais il ne s'agit pas ici d'exemples basiques mais de tableaux peaufinés !
+Afin que l'on sache quels nombres sont calculés, seuls les nombres non calculés sont en \textcolor{red}{rouge}. Dans ces tableaux, beaucoup d'artifices (des struts, des multicolumn) et des packages (notamment numprint et ses colonnes «N» qui alignent les séparateurs décimaux) ont été utilisés pour obtenir un résultat satisfaisant. Le code est parfois lourd et peu lisible, mais il ne s'agit pas ici d'exemples basiques mais de tableaux peaufinés !
\subsection{Encore un triangle de Pascal}
\begin{lstlisting}
@@ -1433,7 +1507,7 @@
\renewcommand\STprintnum[1]{\numprint{#1}}
\begin{spreadtab}{{tabular}{cc}}
\multicolumn{2}{c}{Convergence en $x=\color{red}:={0.5}$}\\[1.5ex]
-@$n$ & e^a1\SThidecol & @ $\displaystyle e^{\numprint{<<a1>>}}-\sum_{k=0}^n\frac{\numprint{<<a1>>}^k}{k!}$\\[3ex]\hline
+@$n$ & exp(a1)\SThidecol & @ $\displaystyle e^{\numprint{<<a1>>}}-\sum_{k=0}^n\frac{\numprint{<<a1>>}^k}{k!}$\\[3ex]\hline
\color{red}:={0}& a1^[-1,0]/fact([-1,0]) & \STcopy{v}{b!2-b3}\\
\STcopy{v}{a3+1}& \STcopy{v}{a!1^a4/fact(a4)+b3}& \\
& & \\
@@ -1499,7 +1573,7 @@
\end{center}
\subsection{Tableau de facturation}
-Voici un tableau de facturation, où les séparateurs décimaux sont alignés dans les colonnes grâce au spécificateur de colonne \og N\fg{} du package \falseverb{numprint}.
+Voici un tableau de facturation, où les séparateurs décimaux sont alignés dans les colonnes grâce au spécificateur de colonne «N» du package \falseverb{numprint}.
Ce tableau est généré par l'environnement \verb=tabularx= de façon à occuper 80\% de la largeur de la ligne. La commande \verbinline=\multicolumn= a été largement utilisée pour la mise en forme :\par\nobreak
\begin{lstlisting}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/spreadtab.doc.tlpobj new/tlpkg/tlpobj/spreadtab.doc.tlpobj
--- old/tlpkg/tlpobj/spreadtab.doc.tlpobj 2018-03-03 20:17:22.000000000 +0100
+++ new/tlpkg/tlpobj/spreadtab.doc.tlpobj 2019-02-28 04:05:58.000000000 +0100
@@ -1,9 +1,9 @@
name spreadtab.doc
category Package
-revision 46185
+revision 50147
shortdesc doc files of spreadtab
relocated 1
-docfiles size=336
+docfiles size=343
RELOC/doc/latex/spreadtab/README
RELOC/doc/latex/spreadtab/spreadtab-en.pdf
RELOC/doc/latex/spreadtab/spreadtab-en.tex
++++++ spreadtab.tar.xz ++++++
++++ 2415 lines of diff (skipped)
++++++ spverbatim.doc.tar.xz ++++++
++++++ spverbatim.tar.xz ++++++
++++++ sr-vorl.doc.tar.xz ++++++
++++++ sr-vorl.tar.xz ++++++
++++++ srbook-mem.doc.tar.xz ++++++
++++++ srbook-mem.tar.xz ++++++
++++++ srcltx.doc.tar.xz ++++++
++++++ srcltx.tar.xz ++++++
++++++ srcredact.doc.tar.xz ++++++
++++++ srcredact.tar.xz ++++++
++++++ sseq.doc.tar.xz ++++++
++++++ sseq.tar.xz ++++++
++++++ sslides.doc.tar.xz ++++++
++++++ sslides.tar.xz ++++++
++++++ stack.tar.xz ++++++
++++++ stackengine.doc.tar.xz ++++++
++++++ stackengine.tar.xz ++++++
++++++ stage.doc.tar.xz ++++++
++++++ stage.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/stage.tlpobj new/tlpkg/tlpobj/stage.tlpobj
--- old/tlpkg/tlpobj/stage.tlpobj 2018-03-03 20:17:24.000000000 +0100
+++ new/tlpkg/tlpobj/stage.tlpobj 2019-02-28 04:06:00.000000000 +0100
@@ -7,6 +7,10 @@
longdesc a standard manuscript format for production and submission.
runfiles size=2
RELOC/tex/latex/stage/stage.cls
+catalogue-contact-bugs https://github.com/rrthomas/stage/issues
+catalogue-contact-development https://github.com/rrthomas/stage
+catalogue-contact-home https://github.com/rrthomas/stage
+catalogue-contact-repository https://github.com/rrthomas/stage
catalogue-ctan /macros/latex/contrib/stage
catalogue-date 2017-04-27 23:31:51 +0200
catalogue-license lppl1.3
++++++ standalone.doc.tar.xz ++++++
++++++ standalone.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/standalone.tlpobj new/tlpkg/tlpobj/standalone.tlpobj
--- old/tlpkg/tlpobj/standalone.tlpobj 2018-03-27 02:24:58.000000000 +0200
+++ new/tlpkg/tlpobj/standalone.tlpobj 2019-02-28 04:06:01.000000000 +0100
@@ -19,6 +19,9 @@
RELOC/tex/latex/standalone/standalone.sty
RELOC/tex/plain/standalone/standalone.tex
catalogue-also combine docmute includex newclude
+catalogue-contact-bugs https://bitbucket.org/martin_scharrer/standalone/issues
+catalogue-contact-home https://bitbucket.org/martin_scharrer/standalone/
+catalogue-contact-repository https://bitbucket.org/martin_scharrer/standalone/src
catalogue-ctan /macros/latex/contrib/standalone
catalogue-date 2018-03-26 21:22:24 +0200
catalogue-license lppl1.3
++++++ stanli.doc.tar.xz ++++++
++++++ stanli.tar.xz ++++++
++++++ starfont.doc.tar.xz ++++++
++++++ starfont.tar.xz ++++++
++++++ startex.doc.tar.xz ++++++
++++++ startex.tar.xz ++++++
++++++ statex.doc.tar.xz ++++++
++++++ statex.tar.xz ++++++
++++++ statex2.doc.tar.xz ++++++
++++++ statex2.tar.xz ++++++
++++++ statistik.doc.tar.xz ++++++
++++++ statistik.tar.xz ++++++
++++++ statmath.doc.tar.xz ++++++
++++++ statmath.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/statmath.tlpobj new/tlpkg/tlpobj/statmath.tlpobj
--- old/tlpkg/tlpobj/statmath.tlpobj 2018-03-12 02:24:07.000000000 +0100
+++ new/tlpkg/tlpobj/statmath.tlpobj 2019-02-28 04:06:03.000000000 +0100
@@ -11,8 +11,10 @@
longdesc preambles as well as a welcome help for novice users.
runfiles size=2
RELOC/tex/latex/statmath/statmath.sty
+catalogue-contact-bugs https://github.com/ankargren/statmath/issues
+catalogue-contact-home https://github.com/ankargren/statmath
catalogue-ctan /macros/latex/contrib/statmath
-catalogue-date 2018-03-10 13:02:20 +0100
+catalogue-date 2018-04-29 07:15:59 +0200
catalogue-license lppl1.3
catalogue-topics statistics
catalogue-version 0.1
++++++ staves.doc.tar.xz ++++++
++++++ staves.tar.xz ++++++
++++++ stdclsdv.doc.tar.xz ++++++
++++++ stdclsdv.tar.xz ++++++
++++++ stdpage.doc.tar.xz ++++++
++++++ stdpage.tar.xz ++++++
++++++ stealcaps.doc.tar.xz ++++++
++++++ stealcaps.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/stealcaps.tlpobj new/tlpkg/tlpobj/stealcaps.tlpobj
--- old/tlpkg/tlpobj/stealcaps.tlpobj 2018-03-03 20:17:27.000000000 +0100
+++ new/tlpkg/tlpobj/stealcaps.tlpobj 2019-02-28 04:06:04.000000000 +0100
@@ -15,6 +15,9 @@
longdesc iftex, fontspec.
runfiles size=1
RELOC/tex/latex/stealcaps/stealcaps.sty
+catalogue-contact-bugs https://github.com/giannotr/stealcaps/issues
+catalogue-contact-home https://github.com/giannotr/stealcaps
+catalogue-contact-repository https://github.com/giannotr/stealcaps.git
catalogue-ctan /macros/latex/contrib/stealcaps
catalogue-date 2018-01-26 07:47:53 +0100
catalogue-license lppl1.3c
++++++ steinmetz.doc.tar.xz ++++++
++++++ steinmetz.tar.xz ++++++
++++++ stellenbosch.doc.tar.xz ++++++
++++++ stellenbosch.tar.xz ++++++
++++++ stex.doc.tar.xz ++++++
Binary files old/doc/latex/stex/cmath/cmath.pdf and new/doc/latex/stex/cmath/cmath.pdf differ
Binary files old/doc/latex/stex/dcm/dcm.pdf and new/doc/latex/stex/dcm/dcm.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/stex/example/background/Makefile new/doc/latex/stex/example/background/Makefile
--- old/doc/latex/stex/example/background/Makefile 2016-11-25 19:30:09.000000000 +0100
+++ new/doc/latex/stex/example/background/Makefile 2019-03-20 23:31:24.000000000 +0100
@@ -2,6 +2,7 @@
TARGET = all.tex
BUTFILES = pre.tex post.tex
MODSLIBDIR = .
+BIBINPUTS = $(PREFIX)/lib/bib:
include $(STEXDIR)/lib/make/Makefile.vars
all: pdf mpdf
Binary files old/doc/latex/stex/example/background/all.pdf and new/doc/latex/stex/example/background/all.pdf differ
Binary files old/doc/latex/stex/example/background/functions.pdf and new/doc/latex/stex/example/background/functions.pdf differ
Binary files old/doc/latex/stex/example/background/reals.pdf and new/doc/latex/stex/example/background/reals.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/stex/example/paper/Makefile new/doc/latex/stex/example/paper/Makefile
--- old/doc/latex/stex/example/paper/Makefile 2016-11-25 19:30:09.000000000 +0100
+++ new/doc/latex/stex/example/paper/Makefile 2019-03-20 23:31:24.000000000 +0100
@@ -1,6 +1,7 @@
STEXDIR = ../..
TARGET = paper.tex
MODSLIBDIR = ../background
+BIBINPUTS = $(PREFIX)/lib/bib:
include $(STEXDIR)/lib/make/Makefile.vars
all: pdf mpdf
Binary files old/doc/latex/stex/example/paper/continuous.pdf and new/doc/latex/stex/example/paper/continuous.pdf differ
Binary files old/doc/latex/stex/example/paper/differentiable.pdf and new/doc/latex/stex/example/paper/differentiable.pdf differ
Binary files old/doc/latex/stex/example/paper/intro.pdf and new/doc/latex/stex/example/paper/intro.pdf differ
Binary files old/doc/latex/stex/example/paper/paper.pdf and new/doc/latex/stex/example/paper/paper.pdf differ
Binary files old/doc/latex/stex/hwexam/hwexam.pdf and new/doc/latex/stex/hwexam/hwexam.pdf differ
Binary files old/doc/latex/stex/metakeys/metakeys.pdf and new/doc/latex/stex/metakeys/metakeys.pdf differ
Binary files old/doc/latex/stex/mikoslides/mikoslides.pdf and new/doc/latex/stex/mikoslides/mikoslides.pdf differ
Binary files old/doc/latex/stex/modules/modules.pdf and new/doc/latex/stex/modules/modules.pdf differ
Binary files old/doc/latex/stex/omdoc/omdoc.pdf and new/doc/latex/stex/omdoc/omdoc.pdf differ
Binary files old/doc/latex/stex/omtext/omtext.pdf and new/doc/latex/stex/omtext/omtext.pdf differ
Binary files old/doc/latex/stex/presentation/presentation.pdf and new/doc/latex/stex/presentation/presentation.pdf differ
Binary files old/doc/latex/stex/problem/problem.pdf and new/doc/latex/stex/problem/problem.pdf differ
Binary files old/doc/latex/stex/rfdmeta/certification.pdf and new/doc/latex/stex/rfdmeta/certification.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/stex/rfdmeta/certification.tex new/doc/latex/stex/rfdmeta/certification.tex
--- old/doc/latex/stex/rfdmeta/certification.tex 2016-11-25 19:30:09.000000000 +0100
+++ new/doc/latex/stex/rfdmeta/certification.tex 2019-03-20 23:31:24.000000000 +0100
@@ -10,12 +10,11 @@
\symdef{tuev}{\text{T\"UV}}
\begin{omgroup}[id=foo,hasState=test]{Definitions}
\begin{definition}[for=hasState]
- A document {\definiendum[hasState]{has state}} $x$, iff
- the project manager decrees it so.
+ A document \defii{has}{state} $x$, iff the project manager decrees it so.
\end{definition}
\begin{definition}[for=statedocrd,hasState=$\statedocrd\tuev$]
- A document has state \definiendum[statedocrd]{rd. $x$},
- iff it has been submitted to $x$ for certification.
+ A document has state \defi[name=statedocrd]{rd. $x$}, iff it has been submitted to $x$ for
+ certification.
\end{definition}
\begin{definition}[for=tuev,hasState=$\statedocrd\tuev$]
The $\tuev$ (Technischer \"Uberwachungs Verein) is a national
@@ -24,3 +23,8 @@
\end{omgroup}
\end{module}
\end{document}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
Binary files old/doc/latex/stex/rfdmeta/rdfmeta.pdf and new/doc/latex/stex/rfdmeta/rdfmeta.pdf differ
Binary files old/doc/latex/stex/smglom/smglom.pdf and new/doc/latex/stex/smglom/smglom.pdf differ
Binary files old/doc/latex/stex/smultiling/smultiling.pdf and new/doc/latex/stex/smultiling/smultiling.pdf differ
Binary files old/doc/latex/stex/sproof/sproof.pdf and new/doc/latex/stex/sproof/sproof.pdf differ
Binary files old/doc/latex/stex/sref/book.pdf and new/doc/latex/stex/sref/book.pdf differ
Binary files old/doc/latex/stex/sref/idc.pdf and new/doc/latex/stex/sref/idc.pdf differ
Binary files old/doc/latex/stex/sref/scr.pdf and new/doc/latex/stex/sref/scr.pdf differ
Binary files old/doc/latex/stex/sref/sref.pdf and new/doc/latex/stex/sref/sref.pdf differ
Binary files old/doc/latex/stex/statements/statements.pdf and new/doc/latex/stex/statements/statements.pdf differ
Binary files old/doc/latex/stex/stex/stex.pdf and new/doc/latex/stex/stex/stex.pdf differ
Binary files old/doc/latex/stex/structview/structview.pdf and new/doc/latex/stex/structview/structview.pdf differ
Binary files old/doc/latex/stex/tikzinput/tikzinput.pdf and new/doc/latex/stex/tikzinput/tikzinput.pdf differ
Binary files old/doc/latex/stex/workaddress/workaddress.pdf and new/doc/latex/stex/workaddress/workaddress.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/stex.doc.tlpobj new/tlpkg/tlpobj/stex.doc.tlpobj
--- old/tlpkg/tlpobj/stex.doc.tlpobj 2018-03-03 20:17:30.000000000 +0100
+++ new/tlpkg/tlpobj/stex.doc.tlpobj 2019-03-21 02:24:28.000000000 +0100
@@ -1,9 +1,9 @@
name stex.doc
category Package
-revision 40320
+revision 50489
shortdesc doc files of stex
relocated 1
-docfiles size=1703
+docfiles size=1816
RELOC/doc/latex/stex/cmath/README
RELOC/doc/latex/stex/cmath/cmath.pdf
RELOC/doc/latex/stex/dcm/README
@@ -27,7 +27,6 @@
RELOC/doc/latex/stex/example/paper/differentiable.tex
RELOC/doc/latex/stex/example/paper/intro.pdf
RELOC/doc/latex/stex/example/paper/intro.tex
- RELOC/doc/latex/stex/example/paper/paper.pdf
RELOC/doc/latex/stex/example/paper/paper.tex
RELOC/doc/latex/stex/hwexam/README
RELOC/doc/latex/stex/hwexam/hwexam.pdf
++++++ stex.tar.xz ++++++
++++ 2003 lines of diff (skipped)
++++++ stix.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/stix.doc.tlpobj new/tlpkg/tlpobj/stix.doc.tlpobj
--- old/tlpkg/tlpobj/stix.doc.tlpobj 2018-05-02 02:24:32.000000000 +0200
+++ new/tlpkg/tlpobj/stix.doc.tlpobj 2019-02-28 04:06:19.000000000 +0100
@@ -1,6 +1,6 @@
name stix.doc
category Package
-revision 47540
+revision 47652
shortdesc doc files of stix
relocated 1
docfiles size=591
++++++ stix.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/stix.tlpobj new/tlpkg/tlpobj/stix.tlpobj
--- old/tlpkg/tlpobj/stix.tlpobj 2018-05-10 02:25:12.000000000 +0200
+++ new/tlpkg/tlpobj/stix.tlpobj 2019-02-28 04:06:19.000000000 +0100
@@ -116,6 +116,7 @@
RELOC/tex/latex/stix/t1stix.fd
RELOC/tex/latex/stix/ts1stix.fd
catalogue-also xits stix2-otf stix2-type1
+catalogue-contact-home http://www.stixfonts.org/
catalogue-ctan /fonts/stix
catalogue-date 2018-04-18 21:20:16 +0200
catalogue-license ofllppl1.3
++++++ stix2-otf.doc.tar.xz ++++++
++++++ stix2-otf.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/stix2-otf.tlpobj new/tlpkg/tlpobj/stix2-otf.tlpobj
--- old/tlpkg/tlpobj/stix2-otf.tlpobj 2018-05-02 02:24:34.000000000 +0200
+++ new/tlpkg/tlpobj/stix2-otf.tlpobj 2019-02-28 04:06:21.000000000 +0100
@@ -17,8 +17,11 @@
RELOC/fonts/opentype/public/stix2-otf/STIX2Text-BoldItalic.otf
RELOC/fonts/opentype/public/stix2-otf/STIX2Text-Italic.otf
RELOC/fonts/opentype/public/stix2-otf/STIX2Text-Regular.otf
+catalogue-contact-bugs https://github.com/stipub/stixfonts/issues
+catalogue-contact-home http://www.stixfonts.org/
+catalogue-contact-repository https://github.com/stipub/stixfonts
catalogue-ctan /fonts/stix2-otf
-catalogue-date 2018-04-16 05:33:18 +0200
+catalogue-date 2018-05-02 06:34:24 +0200
catalogue-license ofl
catalogue-topics font font-otf font-maths font-symbol font-symbol-maths font-body font-collection font-nonroman font-serif
catalogue-version 2.0.0
++++++ stix2-type1.doc.tar.xz ++++++
++++++ stix2-type1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/stix2-type1.tlpobj new/tlpkg/tlpobj/stix2-type1.tlpobj
--- old/tlpkg/tlpobj/stix2-type1.tlpobj 2018-05-02 02:24:36.000000000 +0200
+++ new/tlpkg/tlpobj/stix2-type1.tlpobj 2019-02-28 04:06:22.000000000 +0100
@@ -142,8 +142,11 @@
RELOC/tex/latex/stix2/stix2.sty
RELOC/tex/latex/stix2/t1stix2.fd
RELOC/tex/latex/stix2/ts1stix2.fd
+catalogue-contact-bugs https://github.com/stipub/stixfonts/issues
+catalogue-contact-development https://github.com/stipub/stixfonts
+catalogue-contact-home http://www.stixfonts.org/
catalogue-ctan /fonts/stix2-type1
-catalogue-date 2018-04-16 05:33:18 +0200
+catalogue-date 2018-05-02 06:34:24 +0200
catalogue-license ofllppl1.3
catalogue-topics font font-type1 font-maths font-symbol-maths font-bbd font-body font-collection font-nonroman font-otf font-serif font-symbol font-supp font-supp-maths font-supp-symbol
catalogue-version 2.0.0
++++++ stmaryrd.doc.tar.xz ++++++
++++++ stmaryrd.tar.xz ++++++
++++++ storebox.doc.tar.xz ++++++
++++++ storebox.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/storebox.tlpobj new/tlpkg/tlpobj/storebox.tlpobj
--- old/tlpkg/tlpobj/storebox.tlpobj 2018-03-03 20:17:36.000000000 +0100
+++ new/tlpkg/tlpobj/storebox.tlpobj 2019-02-28 04:06:24.000000000 +0100
@@ -12,6 +12,7 @@
runfiles size=4
RELOC/tex/latex/storebox/storebox-pgf.sty
RELOC/tex/latex/storebox/storebox.sty
+catalogue-contact-repository https://bitbucket.org/martin_scharrer/storebox
catalogue-ctan /macros/latex/contrib/storebox
catalogue-date 2017-04-18 05:31:40 +0200
catalogue-license lppl1.3
++++++ storecmd.doc.tar.xz ++++++
++++++ storecmd.tar.xz ++++++
++++++ stringstrings.doc.tar.xz ++++++
++++++ stringstrings.tar.xz ++++++
++++++ structmech.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/structmech/README.md new/doc/latex/structmech/README.md
--- old/doc/latex/structmech/README.md 2018-04-07 22:54:29.000000000 +0200
+++ new/doc/latex/structmech/README.md 2018-05-29 00:26:36.000000000 +0200
@@ -25,7 +25,7 @@
tlc
-06/04/2018
+05/29/2018
Binary files old/doc/latex/structmech/doc/structmech.pdf and new/doc/latex/structmech/doc/structmech.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/structmech/doc/structmech.tex new/doc/latex/structmech/doc/structmech.tex
--- old/doc/latex/structmech/doc/structmech.tex 2018-04-07 22:54:29.000000000 +0200
+++ new/doc/latex/structmech/doc/structmech.tex 2018-05-29 00:26:36.000000000 +0200
@@ -1,74 +1,80 @@
-\documentclass[a4paper,10pt]{scrartcl}
-\usepackage[margin=20mm]{geometry}
-\usepackage[convention=sign]{structmech}\usepackage{amsmath,amsfonts,amssymb,indentfirst,fancyvrb,mathpazo,zi4,listings,float}
-\usepackage[colorlinks]{hyperref}
-\lstset{xleftmargin=2mm,numbers=left,numbersep=4mm,numberstyle=\color{0066CC},keywordstyle=\bfseries\color{CC0066},commentstyle=\color{CC6600},stringstyle=\bfseries\color{00CC66},stepnumber=1,frame=shadowbox,breaklines,frameround=tttt,basicstyle=\ttfamily\footnotesize}
-\addtokomafont{disposition}{\rmfamily}
-\title{structmech}\subtitle{A TikZ command set for structural mechanics drawings}
-\author{Theodore Chang\footnote{E-mail: \href{tlcfem@gmail.com}{tlcfem@gmail.com}}\\\normalsize{}University of Canterbury, Christchurch, NZ}
-\date{\normalsize{}v0.1 released on \today}
-\newcommand*{\Highlight}[1]{\colorbox{00CC66}{\color{CC0066}#1}}
-\begin{document}\maketitle\tableofcontents
-\section{Intro}
-\Highlight{structmech} is a collection of several commands to draw basic elements in structural mechanics with TikZ. It can be used to draw illustrations that may be used for teaching and excising purposes. The GPL v3 license is used for this package.
+\documentclass[10pt,a4paper]{article}
+\usepackage[margin=30mm]{geometry}
+\usepackage{amsmath,fancyvrb,float,hyperref,structmech}
+\usepackage{mathpazo}
+\title{structmech\\\large{}A TikZ command set for structural mechanics drawings}
+\author{Theodore Chang\footnote{E-mail: \href{tlcfem@gmail.com}{tlcfem@gmail.com}}\\[2mm]\normalsize{}University of Canterbury, Christchurch, NZ}
+\date{\normalsize{}v1.0 released on \today}
+\newcommand*{\Highlight}[1]{\colorbox{cyan}{\color{red}\texttt{#1}}}
+\begin{document}
+\maketitle
+\section{Introduction}
+When I was preparing lecture notes on structural mechanics related topics, it took me a lot of time to draw simple beam systems and distributions of internal forces, such as shear force diagram (SFD) and bending moment diagram (BMD), using basic TikZ. I thus tried to write some generalised commands that can draw key elements with simple syntax. That's how this package is created. This package is under GPL v3 license and/or later version. Please feel free to redistribute, expand or rewrite the functionality.
\section{Options}
-Use following command to load the package.
+To load the package, please use the following command in the preamble.
\begin{Verbatim}[frame=single,label=Syntax]
\usepackage[key=val]{structmech}
\end{Verbatim}
-Available options are:
+Some options are available for controlling the parameters used during plotting, they are:
\begin{enumerate}
-\item axial: Define the axial force color. \Highlight{axial=colorValue}. Any predefined color value is acceptable.
-\item rotation: Define the rotation arc color. \Highlight{rotation=colorValue}. Any predefined color value is acceptable.
-\item node: Define the nodal force/displacement color. \Highlight{node=colorValue}. Any predefined color value is acceptable.
-\item fill: Define the fill patch color. \Highlight{fill=colorValue}. Any predefined color value is acceptable.
-\item convention: Define the sign convention. Value \Highlight{convention=sign} draws all quantities along positive direction and indicate negative quantities with minus sign $-$. Value \Highlight{convention=direction} label all numbers as positive but draw the negative quantities along negative directions.
+\item \Highlight{fill} defines the default fill patch colour, any predefined colour value is acceptable.
+\item \Highlight{line} defines the default line colour, any predefined colour value is acceptable.
+\item \Highlight{node} defines the nodal force/displacement colour, any predefined colour value is acceptable.
+\item \Highlight{axis} defines the axial force/displacement colour, any predefined colour value is acceptable.
+\item \Highlight{rotation} defines the rotation force/displacement colour, any predefined colour value is acceptable.
+\item \Highlight{convention} defines the sign convention, value \Highlight{convention=sign} draws all quantities along the positive direction and indicates the negative quantities with minus sign $-$, value \Highlight{convention=direction} labels all numbers as positive values but draws the negative quantities along the negative direction.
+\item \Highlight{showvalue} defines whether to show the values when plotting the diagrams of the internal forces, possible values are \Highlight{showvalue=on} and \Highlight{showvalue=off}.
+\item \Highlight{absvalue} defines whether to show the absolute values when plotting the diagrams of the internal forces, possible values are \Highlight{absvalue=on} and \Highlight{absvalue=off}.
+\item \Highlight{opacity} defines the fill patch opacity, default value is $0.4$.
+\item \Highlight{linewidth} defines the line width, default value is $0.4$ millimetre.
\end{enumerate}
-Use following command to change option values.
+These options can be changed in the document via the following command.
\begin{Verbatim}[frame=single,label=Syntax]
-\setstructmech{axial=red}
+\setstructmech{key=val}
\end{Verbatim}
-Some examples.
+Here are some examples that use the basic force command to show how the user can control the property of the diagram elements. Other options can be changed in a similar fashion.
\begin{Verbatim}[frame=single,label=Example]
-\setstructmech{axial=red}
-\BasicForce{0,3}{3,3}{}
-\setstructmech{axial=blue}
-\BasicForce{0,2}{3,2}{}
-\setstructmech{axial=black}
-\BasicForce{0,1}{3,1}{}
+\setstructmech{axis=red}
+\BasicForce{0,0}{3,0}{}
+\setstructmech{axis=blue,rotation=green}
+\BasicForce{4,0}{7,0}{}
+\setstructmech{axis=black}
+\BasicForce{8,0}{11,0}{}
\end{Verbatim}
\begin{figure}[H]
\centering
\begin{tikzpicture}
-\setstructmech{axial=red}
-\BasicForce{0,3}{3,3}{}
-\setstructmech{axial=blue}
-\BasicForce{0,2}{3,2}{}
-\setstructmech{axial=black}
-\BasicForce{0,1}{3,1}{}
+\setstructmech{axis=red}
+\BasicForce{0,0}{3,0}{}
+\setstructmech{axis=blue,rotation=green}
+\BasicForce{4,0}{7,0}{}
+\setstructmech{axis=black}
+\BasicForce{8,0}{11,0}{}
\end{tikzpicture}
\end{figure}
\section{Nodal Forces/Displacements}
\begin{Verbatim}[frame=single,label=Syntax]
\NodalForce[1]{2}[3][4][5]{6}[7]
\end{Verbatim}
-\begin{enumerate}
-\item[1.][1] --- Color of arrows, optional. Any existing color value, either build-in (refer to \texttt{xcolor}) or user-defined color is acceptable. Default value is \Highlight{\texttt{CC0066}}.
-\item[2.]\{2\} --- Node coordinates. Accept two coordinates of the target node in the form of \Highlight{$x,y$}.
-\item[3.][3] --- Label for horizontal force/displacement, optional. If not assigned or left blank, only the arrow (without label) will be drew. Assign \Highlight{\texttt{N}} for drawing nothing along horizontal direction.
-\item[4.][4] --- Label for vertical force/displacement, optional. If not assigned or left blank, only the arrow (without label) will be drew. Assign \Highlight{\texttt{N}} for drawing nothing along vertical direction.
-\item[5.][5] --- Label for rotational force/displacement, optional. If not assigned or left blank, only the arrow (without label) will be drew. Assign \Highlight{\texttt{N}} for drawing nothing along rotational direction.
-\item[6.]\{6\} --- Rotation angle, optional. Default value is \Highlight{$0$}.
-\item[7.][7] --- Scale, optional.
-\end{enumerate}
+\begin{itemize}
+\item[][1] --- optional, colour of arrows, any existing colour value is acceptable, default value is the colour defined by the \Highlight{node} option.
+\item[]\{2\} --- node coordinate pair, accepts two coordinates of the target node in the form of \Highlight{$x,y$}.
+\item[][3] --- optional, label for local horizontal force/displacement, if not assigned or left blank, only the arrow (without label) will be drew, assign \Highlight{N} for drawing nothing along horizontal direction.
+\item[][4] --- optional, label for local vertical force/displacement, if not assigned or left blank, only the arrow (without label) will be drew, assign \Highlight{N} for drawing nothing along horizontal direction.
+\item[][5] --- optional, label for local rotational force/displacement, if not assigned or left blank, only the arrow (without label) will be drew, assign \Highlight{N} for drawing nothing along horizontal direction.
+\item[]\{6\} --- optional, rotation, default value is \Highlight{$0$}.
+\item[][7] --- optional, scale, default value is \Highlight{$1$}.
+\end{itemize}
\begin{Verbatim}[frame=single,label=Example]
\NodalForce{0,0}
\NodalForce[red]{2,0}
\NodalForce[blue]{4,0}[][][]
+\setstructmech{node=green}
\NodalForce{6,0}[N]
\NodalForce{8,0}[][N]
\NodalForce{10,0}[][][N]
\NodalForce{12,0}[N][]
+\setstructmech{node=orange}
\setstructmech{convention=direction}
\NodalForce{0,-3}[-V_1][-V_2][-V_3]
\setstructmech{convention=sign}
@@ -84,10 +90,12 @@
\NodalForce{0,0}
\NodalForce[red]{2,0}
\NodalForce[blue]{4,0}[][][]
+\setstructmech{node=green}
\NodalForce{6,0}[N]
\NodalForce{8,0}[][N]
\NodalForce{10,0}[][][N]
\NodalForce{12,0}[N][]
+\setstructmech{node=orange}
\setstructmech{convention=direction}
\NodalForce{0,-3}[-V_1][-V_2][-V_3]
\setstructmech{convention=sign}
@@ -103,33 +111,33 @@
\BasicForce[1]{2}{3}{4}{5}[6][7][8]
\end{Verbatim}
\begin{enumerate}
-\item[1.][1] --- The number of forces to draw, optional. \Highlight{\texttt{1}} for axial force only, \Highlight{\texttt{2L}} for lower end bending moment only, \Highlight{\texttt{2H}} for high end bending moment only, \Highlight{\texttt{2}} for both two end moments, \Highlight{\texttt{3}} for all three force components. Default value is \Highlight{\texttt{3}}.
-\item[2.]\{2\} --- The coordinate for the lower end in the form of \Highlight{$x,y$}.
-\item[3.]\{3\} --- The coordinate for the high end in the form of \Highlight{$x,y$}.
-\item[4.]\{4\} --- Label for the member, leave blank if not required.
-\item[5.]\{5\} --- Further adjustment of the member label, optional, parameters used for TikZ positioning are acceptable, such as \Highlight{\texttt{right=2mm}} or \Highlight{\texttt{anchor=north}}. The default value is \Highlight{\texttt{above=2mm}}, leave blank if not required.
-\item[6.][6] --- Label for first force drew. Available for all four values for \Highlight{\texttt{\#1}}, leave blank if not required.
-\item[7.][7] --- Label for second force drew. Available for \Highlight{\texttt{\#1=2}}, leave blank if not required.
-\item[8.][8] --- Label for third force drew. Available for \Highlight{\texttt{\#1=3}}, leave blank if not required.
-\item[9.]Note the color is configured in the package option.
+\item[][1] --- optional, the number of forces to draw, \Highlight{1} for axial force only, \Highlight{2L} for lower end bending moment only, \Highlight{2H} for high end bending moment only, \Highlight{2} for both two end moments, \Highlight{3} for all three force components, default value is \Highlight{3}.
+\item[]\{2\} --- the coordinates of the lower end in the form of \Highlight{$x,y$}.
+\item[]\{3\} --- the coordinates of the high end in the form of \Highlight{$x,y$}.
+\item[]\{4\} --- label for the member, leave blank if not required.
+\item[]\{5\} --- optional, further adjustment of the member label, parameters used for TikZ positioning are acceptable, such as \Highlight{right=2mm} or \Highlight{anchor=north}, the default value is \Highlight{above=2mm}, leave blank if not required.
+\item[][6] --- label for the first force drew, available for all four values for the first parameter \Highlight{\#1}, leave blank if not required.
+\item[][7] --- label for the second force drew, available for \Highlight{\#1=2}, leave blank if not required.
+\item[][8] --- label for the third force drew, available for \Highlight{\#1=3}, leave blank if not required.
\end{enumerate}
+The colours of three components can be configured using global options. Here are a few examples, please find out the order and the difference in the following fourteen examples.
\begin{Verbatim}[frame=single,label=Example]
\BasicForce{0,0}{3,0}{}
-\BasicForce[1]{0,2}{3,2}{}
-\BasicForce[2]{0,4}{3,4}{}
-\BasicForce[3]{0,6}{3,6}{}
-\BasicForce[2L]{0,8}{3,8}{}
-\BasicForce[2H]{0,10}{3,10}{}
\BasicForce[1]{5,0}{8,0}{a}[U_1]
+\BasicForce[1]{0,2}{3,2}{}
\BasicForce[2]{5,2}{8,2}{a}[U_1][U_2]
+\setstructmech{axis=red,rotation=green}
+\BasicForce[2]{0,4}{3,4}{}
\BasicForce[2L]{5,4}{8,4}{a}[U_1]
+\BasicForce[3]{0,6}{3,6}{}
\BasicForce[2H]{5,6}{8,6}{a}[U_1]
+\BasicForce[2L]{0,8}{3,8}{}
\BasicForce{5,8}{8,8}{a}[U_1][U_2][U_3]
-\BasicForce{5,10}{8,10}{a}{above left=2mm and 6mm,0066CC}[U_1][U_2][U_3]
+\BasicForce[2H]{0,10}{3,10}{}
+\BasicForce{5,10}{8,10}{a}{above left=2mm and 6mm}[U_1][U_2][U_3]
\setstructmech{convention=direction}
\BasicForce[3]{0,12}{3,12}{a}[-U_1][-U_2][-U_3]
\BasicForce[3]{5,12}{8,12}{a}[U_1][U_2][-U_3]
-\setstructmech{convention=sign}
\end{Verbatim}
\begin{figure}[H]
\centering
@@ -137,72 +145,87 @@
\draw[dashed](-1,1)--(9,1)(-1,3)--(9,3)(-1,5)--(9,5)(-1,7)--(9,7)(-1,9)--(9,9)(-1,11)--(9,11);
\draw[line width=.6mm](-1,0)--(9,0)(-1,2)--(9,2)(-1,4)--(9,4)(-1,6)--(9,6)(-1,8)--(9,8)(-1,10)--(9,10)(-1,12)--(9,12);
\BasicForce{0,0}{3,0}{}
-\BasicForce[1]{0,2}{3,2}{}
-\BasicForce[2]{0,4}{3,4}{}
-\BasicForce[3]{0,6}{3,6}{}
-\BasicForce[2L]{0,8}{3,8}{}
-\BasicForce[2H]{0,10}{3,10}{}
\BasicForce[1]{5,0}{8,0}{a}[U_1]
+\BasicForce[1]{0,2}{3,2}{}
\BasicForce[2]{5,2}{8,2}{a}[U_1][U_2]
+\setstructmech{axis=red,rotation=green}
+\BasicForce[2]{0,4}{3,4}{}
\BasicForce[2L]{5,4}{8,4}{a}[U_1]
+\BasicForce[3]{0,6}{3,6}{}
\BasicForce[2H]{5,6}{8,6}{a}[U_1]
+\BasicForce[2L]{0,8}{3,8}{}
\BasicForce{5,8}{8,8}{a}[U_1][U_2][U_3]
-\BasicForce{5,10}{8,10}{a}{above left=2mm and 6mm,0066CC}[U_1][U_2][U_3]
+\BasicForce[2H]{0,10}{3,10}{}
+\BasicForce{5,10}{8,10}{a}{above left=2mm and 6mm}[U_1][U_2][U_3]
\setstructmech{convention=direction}
\BasicForce[3]{0,12}{3,12}{a}[-U_1][-U_2][-U_3]
\BasicForce[3]{5,12}{8,12}{a}[U_1][U_2][-U_3]
-\setstructmech{convention=sign}
\end{tikzpicture}
\end{figure}
-\section{UDL}
+\section{Uniformly Distributed Load}
\begin{Verbatim}[frame=single,label=Syntax]
\UDL[1]{2}{3}[4]{5}
\end{Verbatim}
\begin{enumerate}
-\item[1.][1] --- Flip the side \Highlight{F}, optional.
-\item[2.]\{2\} --- Coordinate for lower end node, in form of \Highlight{$x,y$}.
-\item[3.]\{3\} --- Coordinate for higher end node, in form of \Highlight{$x,y$}.
-\item[4.][4] --- Label, optional.
-\item[5.]\{5\} --- Scale, optional.
+\item[][1] --- optional, flip the side, assign value \Highlight{F} if the default behaviour is not the one you want.
+\item[]\{2\} --- the coordinates of the lower end node in form of \Highlight{$x,y$}.
+\item[]\{3\} --- the coordinates of the higher end node in form of \Highlight{$x,y$}.
+\item[][4] --- optional, label.
+\item[]\{5\} --- optional, scale, default value is \Highlight{$1$}.
\end{enumerate}
\begin{Verbatim}[frame=single,label=Example]
\UDL{-4,0}{-1,4}[10]
\UDL{-2,0}{1,4}[-10]
-\setstructmech{fill=CC6600,convention=direction}
+\setstructmech{fill=red,convention=direction}
\UDL{0,0}{3,4}[-10]
-\setstructmech{fill=CC0066,convention=sign}
-\UDL[F]{2,0}{5,4}
-\UDL{5,0}{8,4}[20]
-\UDL{8,0}{11,4}{2}
+\setstructmech{fill=red,convention=sign}
+\UDL[F]{1,0}{4,4}
+\UDL{6,0}{9,4}{2}
\end{Verbatim}
\begin{figure}[H]
\centering
\begin{tikzpicture}
+\draw[line width=.6mm](-4,0)--++(3,4)(-2,0)--++(3,4)(0,0)--++(3,4)(1,0)--++(3,4)(6,0)--++(3,4);
\UDL{-4,0}{-1,4}[10]
\UDL{-2,0}{1,4}[-10]
-\setstructmech{fill=CC6600,convention=direction}
+\setstructmech{fill=red,convention=direction}
\UDL{0,0}{3,4}[-10]
-\setstructmech{fill=CC0066,convention=sign}
-\UDL[F]{2,0}{5,4}
-\UDL{5,0}{8,4}[20]
-\UDL{8,0}{11,4}{2}
+\setstructmech{fill=red,convention=sign}
+\UDL[F]{1,0}{4,4}
+\UDL{6,0}{9,4}{2}
\end{tikzpicture}
\end{figure}
\section{Supports}
-\subsection{Hinge Support}
+\subsection{Hinge/Fixed/Roller/Slider Support}
\begin{Verbatim}[frame=single,label=Syntax]
\HingeSupport[1]{2}{3}
+\FixedSupport[1]{2}{3}
+\RollerSupport[1]{2}{3}
+\SliderSupport[1]{2}{3}
\end{Verbatim}
\begin{enumerate}
-\item[1.][1] --- Rotation angle, optional.
-\item[2.]\{2\} --- Node coordinate, in form of \Highlight{$x,y$}.
-\item[3.]\{3\} --- Scale, optional.
+\item[][1] --- optional, rotation, default value is \Highlight{$0$}.
+\item[]\{2\} --- node coordinates in form of \Highlight{$x,y$}.
+\item[]\{3\} --- optional, scale, default value is \Highlight{$1$}.
\end{enumerate}
\begin{Verbatim}[frame=single,label=Example]
\HingeSupport{0,0}
\HingeSupport[75]{2,0}{1.5}
\HingeSupport[150]{2,2}{2}
\HingeSupport[225]{0,2}{2.5}
+\FixedSupport{4,0}
+\FixedSupport[75]{6,0}{1.5}
+\FixedSupport[150]{6,2}{2}
+\FixedSupport[225]{4,2}{2.5}
+\setstructmech{linewidth=.2mm,line=red}
+\RollerSupport{6,-5}
+\RollerSupport[75]{8,-5}{1.5}
+\RollerSupport[150]{8,-3}{2}
+\RollerSupport[225]{6,-3}{2.5}
+\SliderSupport{0,-5}
+\SliderSupport[75]{2,-5}{1.5}
+\SliderSupport[150]{2,-3}{2}
+\SliderSupport[225]{0,-3}{2.5}
\end{Verbatim}
\begin{figure}[H]
\centering
@@ -212,97 +235,39 @@
\HingeSupport[150]{2,2}{2}
\HingeSupport[225]{0,2}{2.5}
\draw
- (0,0)node[draw,circle,fill=white,inner sep=0,minimum size=2mm]{}--
- (2,0)node[draw,circle,fill=white,inner sep=0,minimum size=2mm]{}--
- (2,2)node[draw,circle,fill=white,inner sep=0,minimum size=2mm]{}--
- (0,2)node[draw,circle,fill=white,inner sep=0,minimum size=2mm]{}--cycle;
-\end{tikzpicture}
-\end{figure}
-\subsection{Fixed Support}
-\begin{Verbatim}[frame=single,label=Syntax]
-\FixedSupport[1]{2}{3}
-\end{Verbatim}
-\begin{enumerate}
-\item[1.][1] --- Rotation angle, optional.
-\item[2.]\{2\} --- Node coordinate, in form of \Highlight{$x,y$}.
-\item[3.]\{3\} --- Scale, optional.
-\end{enumerate}
-\begin{Verbatim}[frame=single,label=Example]
-\FixedSupport{0,0}
-\FixedSupport[75]{2,0}{1.5}
-\FixedSupport[150]{2,2}{2}
-\FixedSupport[225]{0,2}{2.5}
-\end{Verbatim}
-\begin{figure}[H]
-\centering
-\begin{tikzpicture}
-\FixedSupport{0,0}
-\FixedSupport[75]{2,0}{1.5}
-\FixedSupport[150]{2,2}{2}
-\FixedSupport[225]{0,2}{2.5}
-\draw
- (0,0)node[draw,fill=white,inner sep=0,minimum size=3mm]{}--
- (2,0)node[draw,fill=white,inner sep=0,minimum size=3mm]{}--
- (2,2)node[draw,fill=white,inner sep=0,minimum size=3mm]{}--
- (0,2)node[draw,fill=white,inner sep=0,minimum size=3mm]{}--cycle;
-\end{tikzpicture}
-\end{figure}
-\subsection{Roller Support}
-\begin{Verbatim}[frame=single,label=Syntax]
-\RollerSupport[1]{2}{3}
-\end{Verbatim}
-\begin{enumerate}
-\item[1.][1] --- Rotation angle, optional.
-\item[2.]\{2\} --- Node coordinate, in form of \Highlight{$x,y$}.
-\item[3.]\{3\} --- Scale, optional.
-\end{enumerate}
-\begin{Verbatim}[frame=single,label=Example]
-\RollerSupport{0,0}
-\RollerSupport[75]{2,0}{1.5}
-\RollerSupport[150]{2,2}{2}
-\RollerSupport[225]{0,2}{2.5}
-\end{Verbatim}
-\begin{figure}[H]
-\centering
-\begin{tikzpicture}
-\RollerSupport{0,0}
-\RollerSupport[75]{2,0}{1.5}
-\RollerSupport[150]{2,2}{2}
-\RollerSupport[225]{0,2}{2.5}
-\draw
(0,0)node[draw,fill=white,circle,inner sep=0,minimum size=2mm]{}--
(2,0)node[draw,fill=white,circle,inner sep=0,minimum size=2mm]{}--
(2,2)node[draw,fill=white,circle,inner sep=0,minimum size=2mm]{}--
(0,2)node[draw,fill=white,circle,inner sep=0,minimum size=2mm]{}--cycle;
-\end{tikzpicture}
-\end{figure}
-\subsection{Slider Support}
-\begin{Verbatim}[frame=single,label=Syntax]
-\SliderSupport[1]{2}{3}
-\end{Verbatim}
-\begin{enumerate}
-\item[1.][1] --- Rotation angle, optional.
-\item[2.]\{2\} --- Node coordinate, in form of \Highlight{$x,y$}.
-\item[3.]\{3\} --- Scale, optional.
-\end{enumerate}
-\begin{Verbatim}[frame=single,label=Example]
-\SliderSupport{0,0}
-\SliderSupport[75]{2,0}{1.5}
-\SliderSupport[150]{2,2}{2}
-\SliderSupport[225]{0,2}{2.5}
-\end{Verbatim}
-\begin{figure}[H]
-\centering
-\begin{tikzpicture}
-\SliderSupport{0,0}
-\SliderSupport[75]{2,0}{1.5}
-\SliderSupport[150]{2,2}{2}
-\SliderSupport[225]{0,2}{2.5}
+\FixedSupport{6,0}
+\FixedSupport[75]{8,0}{1.5}
+\FixedSupport[150]{8,2}{2}
+\FixedSupport[225]{6,2}{2.5}
+\setstructmech{linewidth=.2mm,line=red}
\draw
- (0,0)node[draw,fill=white,inner sep=0,minimum size=3mm]{}--
- (2,0)node[draw,fill=white,inner sep=0,minimum size=3mm]{}--
- (2,2)node[draw,fill=white,inner sep=0,minimum size=3mm]{}--
- (0,2)node[draw,fill=white,inner sep=0,minimum size=3mm]{}--cycle;
+ (6,0)node[draw,fill=white,circle,inner sep=0,minimum size=2mm]{}--
+ (8,0)node[draw,fill=white,circle,inner sep=0,minimum size=2mm]{}--
+ (8,2)node[draw,fill=white,circle,inner sep=0,minimum size=2mm]{}--
+ (6,2)node[draw,fill=white,circle,inner sep=0,minimum size=2mm]{}--cycle;
+\RollerSupport{6,-5}
+\RollerSupport[75]{8,-5}{1.5}
+\RollerSupport[150]{8,-3}{2}
+\RollerSupport[225]{6,-3}{2.5}
+\draw
+ (6,-5)node[draw,fill=white,circle,inner sep=0,minimum size=2mm]{}--
+ (8,-5)node[draw,fill=white,circle,inner sep=0,minimum size=2mm]{}--
+ (8,-3)node[draw,fill=white,circle,inner sep=0,minimum size=2mm]{}--
+ (6,-3)node[draw,fill=white,circle,inner sep=0,minimum size=2mm]{}--cycle;
+\SliderSupport{0,-5}
+\SliderSupport[75]{2,-5}{1.5}
+\SliderSupport[150]{2,-3}{2}
+\setstructmech{linewidth=.2mm}
+\SliderSupport[225]{0,-3}{2.5}
+\draw
+ (0,-5)node[draw,fill=white,circle,inner sep=0,minimum size=2mm]{}--
+ (2,-5)node[draw,fill=white,circle,inner sep=0,minimum size=2mm]{}--
+ (2,-3)node[draw,fill=white,circle,inner sep=0,minimum size=2mm]{}--
+ (0,-3)node[draw,fill=white,circle,inner sep=0,minimum size=2mm]{}--cycle;
\end{tikzpicture}
\end{figure}
\subsection{Sleeve Support}
@@ -310,10 +275,10 @@
\SleeveSupport[1]{2}[3]{4}
\end{Verbatim}
\begin{enumerate}
-\item[1.][1] --- Rotation angle, optional.
-\item[2.]\{2\} --- Node coordinate, in form of \Highlight{$x,y$}.
-\item[3.][3] --- Gap width, optional.
-\item[4.]\{4\} --- Scale, optional.
+\item[][1] --- optional, rotation.
+\item[]\{2\} --- node coordinates in form of \Highlight{$x,y$}.
+\item[][3] --- optional, gap width.
+\item[]\{4\} --- optional, scale.
\end{enumerate}
\begin{Verbatim}[frame=single,label=Example]
\SleeveSupport{0,0}
@@ -340,13 +305,15 @@
\Rigid[1]{2}{3}
\end{Verbatim}
\begin{enumerate}
-\item[1.][1] --- Rotation angle, optional.
-\item[2.]\{2\} --- Node coordinate, in form of \Highlight{$x,y$}.
-\item[3.]\{3\} --- Scale, optional.
+\item[][1] --- optional, rotation.
+\item[]\{2\} --- node coordinates in form of \Highlight{$x,y$}.
+\item[]\{3\} --- optional, scale.
\end{enumerate}
+The colour is controlled by the \Highlight{fill} option instead of the \Highlight{line} option due to the fill patch is used in this command.
\begin{Verbatim}[frame=single,label=Example]
\Rigid{0,0}
\Rigid[-90]{2,0}{1.5}
+\setstructmech{fill=yellow}
\Rigid[0]{2,2}{2}
\Rigid[90]{0,2}{2.5}
\end{Verbatim}
@@ -355,6 +322,7 @@
\begin{tikzpicture}
\Rigid{0,0}
\Rigid[-90]{2,0}{1.5}
+\setstructmech{fill=green}
\Rigid[0]{2,2}{2}
\Rigid[90]{0,2}{2.5}
\draw
@@ -366,16 +334,18 @@
\end{figure}
\section{Coordinate System Frame}
\begin{Verbatim}[frame=single,label=Syntax]
-\CoorOrigin[1]{2}{3}
+\CoorOrigin[1]{2}[3][4]{5}
\end{Verbatim}
\begin{enumerate}
-\item[1.][1] --- Rotation angle, optional.
-\item[2.]\{2\} --- Node coordinate, in form of \Highlight{$x,y$}.
-\item[3.]\{3\} --- Scale, optional.
+\item[][1] --- optional, rotation, default value is \Highlight{$0$}.
+\item[]\{2\} --- node coordinates in form of \Highlight{$x,y$}.
+\item[][3] --- optional, label for $x$ axis, default value is \Highlight{$x$}.
+\item[][4] --- optional, label for $y$ axis, default value is \Highlight{$y$}.
+\item[]\{5\} --- optional, scale.
\end{enumerate}
\begin{Verbatim}[frame=single,label=Example]
\CoorOrigin{0,0}
-\CoorOrigin[75]{4,0}{1.5}
+\CoorOrigin[75]{4,0}[\xi][\eta]{1.5}
\CoorOrigin[150]{8,0}{2}
\CoorOrigin[225]{12,0}{2.5}
\end{Verbatim}
@@ -383,9 +353,9 @@
\centering
\begin{tikzpicture}
\CoorOrigin{0,0}
-\CoorOrigin[75]{4,0}{1.5}
+\CoorOrigin[75]{4,0}[\xi][\eta]{1.5}
\CoorOrigin[150]{8,0}{2}
-\CoorOrigin[225]{12,0}{2.5}
+\CoorOrigin[225]{12,0}[x(\xi)][y(\eta)]{2.5}
\end{tikzpicture}
\end{figure}
\section{Internal Force Diagram}
@@ -394,28 +364,32 @@
\IForceA[1]{2}{3}{4}{5}{6}
\end{Verbatim}
\begin{enumerate}
-\item[1.][1] --- Fill color, optional
-\item[2.]\{2\} --- Node coordinate of lower end, in form of \Highlight{$x,y$}.
-\item[3.]\{3\} --- Node coordinate of higher end, in form of \Highlight{$x,y$}.
-\item[4.]\{4\} --- Bending moment value of lower end, can be negative.
-\item[5.]\{5\} --- Bending moment value of higher end, can be negative.
-\item[6.]\{6\} --- Scale, optional.
+\item[][1] --- optional, fill colour.
+\item[]\{2\} --- node coordinates of the lower end in form of \Highlight{$x,y$}.
+\item[]\{3\} --- node coordinates of the higher end in form of \Highlight{$x,y$}.
+\item[]\{4\} --- force value of the lower end, can be negative.
+\item[]\{5\} --- force value of the higher end, can be negative.
+\item[]\{6\} --- optional, scale.
\end{enumerate}
-Caveat: it shall be noted that all internal forces follow the sign convention that is adopted in finite element method, instead of the one used in material mechanics. All quantities are defined in the local coordinate system, and the anticlockwise moment is taken as positive value.
+Caveat: it shall be noted that all internal forces follow the sign convention that is adopted in finite element method, instead of the one used in material mechanics. All quantities are defined in the local coordinate system.
\begin{Verbatim}[frame=single,label=Example]
-\IForceA{0,0}{0,4}{1}{-2}{0.5}
+\IForceA{0,0}{0,4}{1}{-2}
+\setstructmech{absvalue=on}
\IForceA[blue]{0,4}{4,4}{2}{-0.5}{0.5}
-\IForceA{4,4}{4,0}{0.5}{1}{0.5}
-\IForceA[cyan]{4,0}{0,0}{-1}{-1}{0.5}
+\IForceA[cyan]{4,4}{4,0}{0.5}{2}
+\setstructmech{showvalue=off,opacity=.8}
+\IForceA[red]{4,0}{0,0}{-1}{-1}
\end{Verbatim}
\begin{figure}[H]
\centering
\begin{tikzpicture}
\draw[line width=.4mm](0,0)rectangle(4,4);
-\IForceA{0,0}{0,4}{1}{-2}{0.5}
+\IForceA{0,0}{0,4}{1}{-2}
+\setstructmech{absvalue=on}
\IForceA[blue]{0,4}{4,4}{2}{-0.5}{0.5}
-\IForceA{4,4}{4,0}{0.5}{1}{0.5}
-\IForceA[cyan]{4,0}{0,0}{-1}{-1}{0.5}
+\IForceA[cyan]{4,4}{4,0}{0.5}{2}
+\setstructmech{showvalue=off,opacity=.8}
+\IForceA[red]{4,0}{0,0}{-1}{-1}
\end{tikzpicture}
\end{figure}
\subsection{Parabolic Internal Force}
@@ -423,28 +397,33 @@
\IForceB[1]{2}{3}{4}{5}{6}{7}
\end{Verbatim}
\begin{enumerate}
-\item[1.][1] --- Fill color, optional
-\item[2.]\{2\} --- Node coordinate of the lower end, in form of \Highlight{$x,y$}.
-\item[3.]\{3\} --- Node coordinate of the higher end, in form of \Highlight{$x,y$}.
-\item[4.]\{4\} --- Bending moment value of the lower end, can be negative.
-\item[5.]\{5\} --- Bending moment value of the higher end, can be negative.
-\item[6.]\{6\} --- The difference of the moment value of the centre point.
-\item[7.]\{7\} --- Scale, optional.
+\item[][1] --- optional, fill colour.
+\item[]\{2\} --- node coordinates of the lower end in form of \Highlight{$x,y$}.
+\item[]\{3\} --- node coordinates of the higher end in form of \Highlight{$x,y$}.
+\item[]\{4\} --- bending moment value of the lower end, can be negative.
+\item[]\{5\} --- bending moment value of the higher end, can be negative.
+\item[]\{6\} --- the increment of the moment value of the centre point.
+\item[]\{7\} --- optional, scale.
\end{enumerate}
It should be noted that parameter \Highlight{\#6} defines the difference of the true moment value and the corresponding value of an assumed linear distribution. The positive value indicates that the parabola bends towards the local positive direction. Since this command draws a parabola, the load should be a uniformly distributed load. So this value \Highlight{\#6} is $\pm\dfrac{wl^2}{8}$, the sign depends on the direction of the UDL.
\begin{Verbatim}[frame=single,label=Example]
-\IForceB{0,0}{0,4}{1}{-2}{1}{0.5}
-\IForceB{0,4}{4,4}{-1}{1}{2}{0.5}
-\IForceB{4,4}{4,0}{0.5}{1}{0}{0.5}
+\draw[line width=.4mm](0,0)rectangle(4,4);
+\IForceB{0,0}{0,4}{1}{-4}{1}{0.5}
+\IForceB[red]{0,4}{4,4}{-2}{-1}{-2}{0.5}
+\setstructmech{absvalue=on}
+\IForceB[purple]{4,4}{4,0}{3}{-1}{2}{0.5}
+\setstructmech{showvalue=off,opacity=.8}
\IForceB[cyan]{4,0}{0,0}{1.5}{0}{2}{0.5}
\end{Verbatim}
\begin{figure}[H]
\centering
\begin{tikzpicture}
\draw[line width=.4mm](0,0)rectangle(4,4);
-\IForceB{0,0}{0,4}{1}{-2}{1}{0.5}
-\IForceB{0,4}{4,4}{-1}{1}{2}{0.5}
-\IForceB{4,4}{4,0}{0.5}{1}{0}{0.5}
+\IForceB{0,0}{0,4}{1}{-4}{1}{0.5}
+\IForceB[red]{0,4}{4,4}{-2}{-1}{-2}{0.5}
+\setstructmech{absvalue=on}
+\IForceB[purple]{4,4}{4,0}{3}{-1}{2}{0.5}
+\setstructmech{showvalue=off,opacity=1}
\IForceB[cyan]{4,0}{0,0}{1.5}{0}{2}{0.5}
\end{tikzpicture}
\end{figure}
@@ -453,19 +432,20 @@
\BeamDeformP[1]{2}{3}{4}[5]{6}[7]{8}
\end{Verbatim}
\begin{enumerate}
-\item[1.][1] --- Line color, optional
-\item[2.]\{2\} --- Node coordinate of the lower end, in form of \Highlight{$x,y$}.
-\item[3.]\{3\} --- Node coordinate of the higher end, in form of \Highlight{$x,y$}.
-\item[4.]\{4\} --- Perpendicular displacement of the lower end, can be negative, leave zero if not required.
-\item[5.][5] --- Rotation value of the lower end, can be negative, optional.
-\item[6.]\{6\} --- Perpendicular displacement of the high end, can be negative, leave zero if not required.
-\item[7.][7] --- Rotation value of the high end, can be negative, optional.
-\item[8.]\{8\} --- Scale, optional.
+\item[][1] --- optional, line colour.
+\item[]\{2\} --- node coordinates of the lower end in form of \Highlight{$x,y$}.
+\item[]\{3\} --- node coordinates of the higher end in form of \Highlight{$x,y$}.
+\item[]\{4\} --- perpendicular displacement of the lower end, can be negative, leave zero if not required.
+\item[][5] --- optional, rotation value of the lower end, can be negative.
+\item[]\{6\} --- perpendicular displacement of the high end, can be negative, leave zero if not required.
+\item[][7] --- optional, rotation value of the high end, can be negative.
+\item[]\{8\} --- optional, scale.
\end{enumerate}
-This command draws deformation based on local coordinate system. The translations are perpendicular to the member cord.
+Caveat: This command draws deformation based on local coordinate system. The translations are perpendicular to the member cord.
\begin{Verbatim}[frame=single,label=Example]
\BeamDeformP{0,0}{0,4}{.5}{-1}
\BeamDeformP[blue]{0,4}{4,4}{0}[30]{0}[50]{1}
+\setstructmech{linewidth=.6mm}
\BeamDeformP[red]{4,4}{4,0}{.5}[30]{0}[50]{2}
\end{Verbatim}
\begin{figure}[H]
@@ -474,6 +454,7 @@
\draw[line width=.4mm](0,0)rectangle(4,4);
\BeamDeformP{0,0}{0,4}{.5}{-1}
\BeamDeformP[blue]{0,4}{4,4}{0}[30]{0}[50]{1}
+\setstructmech{linewidth=.6mm}
\BeamDeformP[red]{4,4}{4,0}{.5}[30]{0}[50]{2}
\end{tikzpicture}
\end{figure}
@@ -482,26 +463,24 @@
\BeamDeformR[1]{2}{3}[4][5]{6}
\end{Verbatim}
\begin{enumerate}
-\item[1.][1] --- Line color, optional
-\item[2.]\{2\} --- Node coordinate of the lower end, in form of \Highlight{$x,y$}.
-\item[3.]\{3\} --- Node coordinate of the higher end, in form of \Highlight{$x,y$}.
-\item[4.][4] --- Rotation value of the lower end, can be negative, optional.
-\item[5.][5] --- Rotation value of the high end, can be negative, optional.
-\item[6.]\{6\} --- Scale, optional.
+\item[][1] --- optional, line colour.
+\item[]\{2\} --- node coordinates of the lower end in form of \Highlight{$x,y$}.
+\item[]\{3\} --- node coordinates of the higher end in form of \Highlight{$x,y$}.
+\item[][4] --- optional, rotation value of the lower end, can be negative.
+\item[][5] --- optional, rotation value of the high end, can be negative.
+\item[]\{6\} --- optional, scale.
\end{enumerate}
-Caveat: if the nodal translations are expressed as global values, they can be readily combined into parameters \Highlight{\#2} and \Highlight{\#3}, so there is no need to provide another command to plot the deformation in the global coordinate system.
+Caveat: If the nodal translations are expressed as global values, they can be readily combined into parameters \Highlight{\#2} and \Highlight{\#3}, so there is no need to provide another command to plot the deformation in the global coordinate system.
\begin{Verbatim}[frame=single,label=Example]
-\BeamDeformR{0,0}{0,4}[20][30]
+\BeamDeformR{0,0}{0,4}[50][30]
\BeamDeformR[blue]{0,4}{4,4}[20][30]{2}
\end{Verbatim}
\begin{figure}[H]
\centering
\begin{tikzpicture}
\draw[line width=.4mm](0,0)rectangle(4,4);
-\BeamDeformR{0,0}{0,4}[20][30]
+\BeamDeformR{0,0}{0,4}[50][30]
\BeamDeformR[blue]{0,4}{4,4}[20][30]{2}
\end{tikzpicture}
\end{figure}
-\section{Implementation}
-\lstinputlisting[language=tex]{structmech.sty}
\end{document}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/structmech/tex/structmech.sty new/doc/latex/structmech/tex/structmech.sty
--- old/doc/latex/structmech/tex/structmech.sty 2018-04-07 22:54:29.000000000 +0200
+++ new/doc/latex/structmech/tex/structmech.sty 2018-05-29 00:26:36.000000000 +0200
@@ -15,33 +15,33 @@
%% along with this program. If not, see .
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% structmech: A TikZ command set for structural mechanics drawings
-% v0.1 by tlc
+% v1.0 by tlc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{structmech}[2018/04/07 structmech: A TikZ command set for structural mechanics drawings]
-\RequirePackage{tikz}
-\RequirePackage{tikz-3dplot}
+\ProvidesPackage{structmech}[2018/05/29 v1.0 structmech: A TikZ command set for structural mechanics drawings]
\RequirePackage{ifthen}
-\RequirePackage{xparse}
-\RequirePackage{xstring}
\RequirePackage{kvoptions}
+\RequirePackage{tikz}
\RequirePackage{xkeyval}
-\usetikzlibrary{backgrounds,calc,positioning,arrows.meta,decorations.pathreplacing,decorations.pathmorphing,shapes.arrows}
-\definecolor{0066CC}{RGB}{0,102,204}
-\definecolor{00CC66}{RGB}{0,204,102}
-\definecolor{CC0066}{RGB}{204,0,102}
-\definecolor{CC6600}{RGB}{204,102,0}
-\DeclareOptionX<structmech>{axial}[CC0066]{\def\axialColor{#1}}
-\DeclareOptionX<structmech>{rotation}[00CC66]{\def\rotColor{#1}}
-\DeclareOptionX<structmech>{node}[0066CC]{\def\nodalColor{#1}}
-\DeclareOptionX<structmech>{fill}[CC0066]{\def\fillColor{#1}}
-\DeclareOptionX<structmech>{convention}[sign]{\IfStrEq{#1}{sign}{\def\convention{#1}}{}\IfStrEq{#1}{direction}{\def\convention{#1}}{}}
-\ExecuteOptionsX<structmech>{axial,rotation,node,convention,fill}
+\RequirePackage{xparse}
+\RequirePackage{xstring}
+\usetikzlibrary{calc,decorations.pathreplacing,positioning}
+\DeclareOptionX<structmech>{fill}[black]{\def\fillColor{#1}}
+\DeclareOptionX<structmech>{line}[black]{\def\lineColor{#1}}
+\DeclareOptionX<structmech>{node}[black]{\def\nodeColor{#1}}
+\DeclareOptionX<structmech>{axis}[black]{\def\axisColor{#1}}
+\DeclareOptionX<structmech>{rotation}[black]{\def\rotationColor{#1}}
+\DeclareOptionX<structmech>{convention}[sign]{\IfStrEq{#1}{sign}{\def\convention{sign}}{\def\convention{direction}}}
+\DeclareOptionX<structmech>{showvalue}[on]{\IfStrEq{#1}{on}{\def\showvalue{on}}{\def\showvalue{off}}}
+\DeclareOptionX<structmech>{absvalue}[off]{\IfStrEq{#1}{on}{\def\absvalue{on}}{\def\absvalue{off}}}
+\DeclareOptionX<structmech>{opacity}[.4]{\def\fillOpacity{#1}}
+\DeclareOptionX<structmech>{linewidth}[.4mm]{\def\lineWidth{#1}}
+\ExecuteOptionsX<structmech>{fill,line,node,axis,rotation,convention,showvalue,absvalue,opacity,linewidth}
\ProcessOptionsX<structmech>
\tikzset{
- BMD/.style={draw=0066CC,fill=0066CC,fill opacity=.4},
NOFILL/.style={fill=none,fill opacity=1},
-RotBasic/.style={\rotColor,line width=.4mm,->},
+ DIAGRAM/.style={draw=\lineColor,fill=\fillColor,fill opacity=\fillOpacity},
+ROTATION/.style={draw=\rotationColor,line width=\lineWidth,->},
FIXED/.style={postaction={draw,decorate,decoration={border,pre length=1mm,post length=1mm,angle=-60,amplitude=1mm,segment length=1mm}}}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -53,44 +53,44 @@
% Command 1: Label All Nodal Forces.
% \NodalForce[1]{2}[3][4][5]{6}[7]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\NodalForce}{O{\nodalColor} m O{} O{} O{} G{0} O{1}}{
+\NewDocumentCommand{\NodalForce}{O{\nodeColor} m O{} O{} O{} G{0} O{1}}{
\begin{scope}[rotate around={#6:(#2)},shift={(#2)},scale=#7]
\IfEq{#3}{}
- {\draw[#1,line width=.4mm,->](-1,0)--(-.2,0);}
- {\IfEq{#3}{N}
- {}
- {\IfStrEq{\convention}{sign}
- {\draw[#1,line width=.4mm,->](-1,0)--(-.2,0);\node[fill=none,#1]at(-1.4,0){\footnotesize$#3$};}
- {\StrLeft{#3}{1}[\SS]\IfStrEq{\SS}{-}
- {\draw[#1,line width=.4mm,->](-.2,0)--(-1,0);\node[fill=none,#1]at(-1.4,0){\footnotesize$\StrDel[1]{#3}{-}$};}
- {\draw[#1,line width=.4mm,->](-1,0)--(-.2,0);\node[fill=none,#1]at(-1.4,0){\footnotesize$#3$};}
- }
- }
- }
+ {\draw[#1,line width=\lineWidth,->](-1,0)--(-.2,0);}
+ {\IfEq{#3}{N}
+ {}
+ {\IfStrEq{\convention}{sign}
+ {\draw[#1,line width=\lineWidth,->](-1,0)--(-.2,0);\node[fill=none,#1]at(-1.4,0){\footnotesize$#3$};}
+ {\StrLeft{#3}{1}[\SS]\IfStrEq{\SS}{-}
+ {\draw[#1,line width=\lineWidth,->](-.2,0)--(-1,0);\node[fill=none,#1]at(-1.4,0){\footnotesize$\StrDel[1]{#3}{-}$};}
+ {\draw[#1,line width=\lineWidth,->](-1,0)--(-.2,0);\node[fill=none,#1]at(-1.4,0){\footnotesize$#3$};}
+ }
+ }
+ }
\IfEq{#4}{}
- {\draw[#1,line width=.4mm,->](0,-1)--(0,-.2);}
- {\IfEq{#4}{N}
- {}
- {\IfStrEq{\convention}{sign}
- {\draw[#1,line width=.4mm,->](0,-1)--(0,-.2);\node[fill=none,#1]at(0,-1.4){\footnotesize$#4$};}
- {\StrLeft{#4}{1}[\SS]\IfStrEq{\SS}{-}
- {\draw[#1,line width=.4mm,->](0,-.2)--(0,-1);\node[fill=none,#1]at(0,-1.4){\footnotesize$\StrDel[1]{#4}{-}$};}
- {\draw[#1,line width=.4mm,->](0,-1)--(0,-.2);\node[fill=none,#1]at(0,-1.4){\footnotesize$#4$};}
- }
- }
- }
+ {\draw[#1,line width=\lineWidth,->](0,-1)--(0,-.2);}
+ {\IfEq{#4}{N}
+ {}
+ {\IfStrEq{\convention}{sign}
+ {\draw[#1,line width=\lineWidth,->](0,-1)--(0,-.2);\node[fill=none,#1]at(0,-1.4){\footnotesize$#4$};}
+ {\StrLeft{#4}{1}[\SS]\IfStrEq{\SS}{-}
+ {\draw[#1,line width=\lineWidth,->](0,-.2)--(0,-1);\node[fill=none,#1]at(0,-1.4){\footnotesize$\StrDel[1]{#4}{-}$};}
+ {\draw[#1,line width=\lineWidth,->](0,-1)--(0,-.2);\node[fill=none,#1]at(0,-1.4){\footnotesize$#4$};}
+ }
+ }
+ }
\IfEq{#5}{}
- {\draw[#1,line width=.4mm,->](.2121,-.2121)arc[#1,start angle=-45,end angle=135,radius=3mm];}
- {\IfEq{#5}{N}
- {}
- {\IfStrEq{\convention}{sign}
- {\draw[#1,line width=.4mm,->](.2121,-.2121)arc[#1,start angle=-45,end angle=135,radius=3mm];\node[#1,fill=none]at(-.5303,.5303){\footnotesize$#5$};}
- {\StrLeft{#5}{1}[\SS]\IfStrEq{\SS}{-}
- {\draw[#1,line width=.4mm,<-](.2121,-.2121)arc[#1,start angle=-45,end angle=135,radius=3mm];\node[#1,fill=none]at(-.5303,.5303){\footnotesize$\StrDel[1]{#5}{-}$};}
- {\draw[#1,line width=.4mm,->](.2121,-.2121)arc[#1,start angle=-45,end angle=135,radius=3mm];\node[#1,fill=none]at(-.5303,.5303){\footnotesize$#5$};}
- }
- }
- }
+ {\draw[#1,line width=\lineWidth,->](.2121,-.2121)arc[#1,start angle=-45,end angle=135,radius=3mm];}
+ {\IfEq{#5}{N}
+ {}
+ {\IfStrEq{\convention}{sign}
+ {\draw[#1,line width=\lineWidth,->](.2121,-.2121)arc[#1,start angle=-45,end angle=135,radius=3mm];\node[#1,fill=none]at(-.5303,.5303){\footnotesize$#5$};}
+ {\StrLeft{#5}{1}[\SS]\IfStrEq{\SS}{-}
+ {\draw[#1,line width=\lineWidth,<-](.2121,-.2121)arc[#1,start angle=-45,end angle=135,radius=3mm];\node[#1,fill=none]at(-.5303,.5303){\footnotesize$\StrDel[1]{#5}{-}$};}
+ {\draw[#1,line width=\lineWidth,->](.2121,-.2121)arc[#1,start angle=-45,end angle=135,radius=3mm];\node[#1,fill=none]at(-.5303,.5303){\footnotesize$#5$};}
+ }
+ }
+ }
\end{scope}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -109,100 +109,100 @@
EndRotD/.style={start angle=\Angle+90,end angle=\Angle-90,radius=3mm},
}
\IfEq{#1}{1}
- {
- \IfNoValueTF{#6}
- {\draw[\axialColor,line width=.4mm,<->](#2)--(#3)node[midway,fill=none,#5]{$#4$};}
- {\IfStrEq{\convention}{sign}
- {\draw[\axialColor,line width=.4mm,<->](#2)--(#3)node[midway,fill=none,#5]{$#4$}node[midway,fill=white]{\footnotesize$#6$};}
- {\StrLeft{#6}{1}[\SS]\IfStrEq{\SS}{-}
- {\draw[\axialColor,line width=.4mm,>-<](#2)--(#3)node[midway,fill=none,#5]{$#4$}node[midway,fill=white]{\footnotesize$\StrDel[1]{#6}{-}$};}
- {\draw[\axialColor,line width=.4mm,<->](#2)--(#3)node[midway,fill=none,#5]{$#4$}node[midway,fill=white]{\footnotesize$#6$};}
- }
- }
- }
- {}
+ {
+ \IfNoValueTF{#6}
+ {\draw[\axisColor,line width=\lineWidth,<->](#2)--(#3)node[midway,fill=none,#5]{$#4$};}
+ {\IfStrEq{\convention}{sign}
+ {\draw[\axisColor,line width=\lineWidth,<->](#2)--(#3)node[midway,fill=none,#5]{$#4$}node[midway,fill=white]{\footnotesize$#6$};}
+ {\StrLeft{#6}{1}[\SS]\IfStrEq{\SS}{-}
+ {\draw[\axisColor,line width=\lineWidth,>-<](#2)--(#3)node[midway,fill=none,#5]{$#4$}node[midway,fill=white]{\footnotesize$\StrDel[1]{#6}{-}$};}
+ {\draw[\axisColor,line width=\lineWidth,<->](#2)--(#3)node[midway,fill=none,#5]{$#4$}node[midway,fill=white]{\footnotesize$#6$};}
+ }
+ }
+ }
+ {}
\IfEq{#1}{2L}
- {
- \draw[\axialColor,draw=none](#2)--(#3)node[midway,fill=none,#5]{$#4$};
- \IfNoValueTF{#6}
- {\draw[RotBasic]($(#2)+(\Angle+90:.3)$)arc[EndRotA];}
- {\IfStrEq{\convention}{sign}
- {\node[fill=none,\rotColor]at($(#2)+(\Angle+90:.6)$){\footnotesize$#6$};\draw[RotBasic]($(#2)+(\Angle+90:.3)$)arc[EndRotA];}
- {\StrLeft{#6}{1}[\SS]\IfStrEq{\SS}{-}
- {\node[fill=none,\rotColor]at($(#2)+(\Angle-90:.6)$){\footnotesize$\StrDel[1]{#6}{-}$};\draw[RotBasic]($(#2)+(\Angle-90:.3)$)arc[EndRotC];}
- {\node[fill=none,\rotColor]at($(#2)+(\Angle+90:.6)$){\footnotesize$#6$};\draw[RotBasic]($(#2)+(\Angle+90:.3)$)arc[EndRotA];}
- }
- }
- }
- {}
+ {
+ \draw[\axisColor,draw=none](#2)--(#3)node[midway,fill=none,#5]{$#4$};
+ \IfNoValueTF{#6}
+ {\draw[ROTATION]($(#2)+(\Angle+90:.3)$)arc[EndRotA];}
+ {\IfStrEq{\convention}{sign}
+ {\node[fill=none,\rotationColor]at($(#2)+(\Angle+90:.6)$){\footnotesize$#6$};\draw[ROTATION]($(#2)+(\Angle+90:.3)$)arc[EndRotA];}
+ {\StrLeft{#6}{1}[\SS]\IfStrEq{\SS}{-}
+ {\node[fill=none,\rotationColor]at($(#2)+(\Angle-90:.6)$){\footnotesize$\StrDel[1]{#6}{-}$};\draw[ROTATION]($(#2)+(\Angle-90:.3)$)arc[EndRotC];}
+ {\node[fill=none,\rotationColor]at($(#2)+(\Angle+90:.6)$){\footnotesize$#6$};\draw[ROTATION]($(#2)+(\Angle+90:.3)$)arc[EndRotA];}
+ }
+ }
+ }
+ {}
\IfEq{#1}{2H}
- {
- \draw[\axialColor,draw=none](#2)--(#3)node[midway,fill=none,#5]{$#4$};
- \IfNoValueTF{#6}
- {\draw[RotBasic]($(#3)+(\Angle-90:.3)$)arc[EndRotB];}
- {\IfStrEq{\convention}{sign}
- {\node[fill=none,\rotColor]at($(#3)+(\Angle-90:.6)$){\footnotesize$#6$};\draw[RotBasic]($(#3)+(\Angle-90:.3)$)arc[EndRotB];}
- {\StrLeft{#6}{1}[\SS]\IfStrEq{\SS}{-}
- {\node[fill=none,\rotColor]at($(#3)+(\Angle+90:.6)$){\footnotesize$\StrDel[1]{#6}{-}$};\draw[RotBasic]($(#3)+(\Angle+90:.3)$)arc[EndRotD];}
- {\node[fill=none,\rotColor]at($(#3)+(\Angle-90:.6)$){\footnotesize$#6$};\draw[RotBasic]($(#3)+(\Angle-90:.3)$)arc[EndRotB];}
- }
- }
- }
- {}
+ {
+ \draw[\axisColor,draw=none](#2)--(#3)node[midway,fill=none,#5]{$#4$};
+ \IfNoValueTF{#6}
+ {\draw[ROTATION]($(#3)+(\Angle-90:.3)$)arc[EndRotB];}
+ {\IfStrEq{\convention}{sign}
+ {\node[fill=none,\rotationColor]at($(#3)+(\Angle-90:.6)$){\footnotesize$#6$};\draw[ROTATION]($(#3)+(\Angle-90:.3)$)arc[EndRotB];}
+ {\StrLeft{#6}{1}[\SS]\IfStrEq{\SS}{-}
+ {\node[fill=none,\rotationColor]at($(#3)+(\Angle+90:.6)$){\footnotesize$\StrDel[1]{#6}{-}$};\draw[ROTATION]($(#3)+(\Angle+90:.3)$)arc[EndRotD];}
+ {\node[fill=none,\rotationColor]at($(#3)+(\Angle-90:.6)$){\footnotesize$#6$};\draw[ROTATION]($(#3)+(\Angle-90:.3)$)arc[EndRotB];}
+ }
+ }
+ }
+ {}
\IfEq{#1}{2}
- {
- \draw[\axialColor,draw=none](#2)--(#3)node[midway,fill=none,#5]{$#4$};
- \IfNoValueTF{#6}
- {\draw[RotBasic]($(#2)+(\Angle+90:.3)$)arc[EndRotA];}
- {\IfStrEq{\convention}{sign}
- {\node[fill=none,\rotColor]at($(#2)+(\Angle+90:.6)$){\footnotesize$#6$};\draw[RotBasic]($(#2)+(\Angle+90:.3)$)arc[EndRotA];}
- {\StrLeft{#6}{1}[\SS]\IfStrEq{\SS}{-}
- {\node[fill=none,\rotColor]at($(#2)+(\Angle-90:.6)$){\footnotesize$\StrDel[1]{#6}{-}$};\draw[RotBasic]($(#2)+(\Angle-90:.3)$)arc[EndRotC];}
- {\node[fill=none,\rotColor]at($(#2)+(\Angle+90:.6)$){\footnotesize$#6$};\draw[RotBasic]($(#2)+(\Angle+90:.3)$)arc[EndRotA];}
- }
- }
- \IfNoValueTF{#7}
- {\draw[RotBasic]($(#3)+(\Angle-90:.3)$)arc[EndRotB];}
- {\IfStrEq{\convention}{sign}
- {\node[fill=none,\rotColor]at($(#3)+(\Angle-90:.6)$){\footnotesize$#7$};\draw[RotBasic]($(#3)+(\Angle-90:.3)$)arc[EndRotB];}
- {\StrLeft{#7}{1}[\SS]\IfStrEq{\SS}{-}
- {\node[fill=none,\rotColor]at($(#3)+(\Angle+90:.6)$){\footnotesize$\StrDel[1]{#7}{-}$};\draw[RotBasic]($(#3)+(\Angle+90:.3)$)arc[EndRotD];}
- {\node[fill=none,\rotColor]at($(#3)+(\Angle-90:.6)$){\footnotesize$#7$};\draw[RotBasic]($(#3)+(\Angle-90:.3)$)arc[EndRotB];}
- }
- }
- }
- {}
+ {
+ \draw[\axisColor,draw=none](#2)--(#3)node[midway,fill=none,#5]{$#4$};
+ \IfNoValueTF{#6}
+ {\draw[ROTATION]($(#2)+(\Angle+90:.3)$)arc[EndRotA];}
+ {\IfStrEq{\convention}{sign}
+ {\node[fill=none,\rotationColor]at($(#2)+(\Angle+90:.6)$){\footnotesize$#6$};\draw[ROTATION]($(#2)+(\Angle+90:.3)$)arc[EndRotA];}
+ {\StrLeft{#6}{1}[\SS]\IfStrEq{\SS}{-}
+ {\node[fill=none,\rotationColor]at($(#2)+(\Angle-90:.6)$){\footnotesize$\StrDel[1]{#6}{-}$};\draw[ROTATION]($(#2)+(\Angle-90:.3)$)arc[EndRotC];}
+ {\node[fill=none,\rotationColor]at($(#2)+(\Angle+90:.6)$){\footnotesize$#6$};\draw[ROTATION]($(#2)+(\Angle+90:.3)$)arc[EndRotA];}
+ }
+ }
+ \IfNoValueTF{#7}
+ {\draw[ROTATION]($(#3)+(\Angle-90:.3)$)arc[EndRotB];}
+ {\IfStrEq{\convention}{sign}
+ {\node[fill=none,\rotationColor]at($(#3)+(\Angle-90:.6)$){\footnotesize$#7$};\draw[ROTATION]($(#3)+(\Angle-90:.3)$)arc[EndRotB];}
+ {\StrLeft{#7}{1}[\SS]\IfStrEq{\SS}{-}
+ {\node[fill=none,\rotationColor]at($(#3)+(\Angle+90:.6)$){\footnotesize$\StrDel[1]{#7}{-}$};\draw[ROTATION]($(#3)+(\Angle+90:.3)$)arc[EndRotD];}
+ {\node[fill=none,\rotationColor]at($(#3)+(\Angle-90:.6)$){\footnotesize$#7$};\draw[ROTATION]($(#3)+(\Angle-90:.3)$)arc[EndRotB];}
+ }
+ }
+ }
+ {}
\IfEq{#1}{3}
- {
- \IfNoValueTF{#6}
- {\draw[\axialColor,line width=.4mm,<->](#2)--(#3)node[midway,fill=none,#5]{$#4$};}
- {\IfStrEq{\convention}{sign}
- {\draw[\axialColor,line width=.4mm,<->](#2)--(#3)node[midway,fill=none,#5]{$#4$}node[midway,fill=white]{\footnotesize$#6$};}
- {\StrLeft{#6}{1}[\SS]\IfStrEq{\SS}{-}
- {\draw[\axialColor,line width=.4mm,>-<](#2)--(#3)node[midway,fill=none,#5]{$#4$}node[midway,fill=white]{\footnotesize$\StrDel[1]{#6}{-}$};}
- {\draw[\axialColor,line width=.4mm,<->](#2)--(#3)node[midway,fill=none,#5]{$#4$}node[midway,fill=white]{\footnotesize$#6$};}
- }
- }
- \IfNoValueTF{#7}
- {\draw[RotBasic]($(#2)+(\Angle+90:.3)$)arc[EndRotA];}
- {\IfStrEq{\convention}{sign}
- {\node[fill=none,\rotColor]at($(#2)+(\Angle+90:.6)$){\footnotesize$#7$};\draw[RotBasic]($(#2)+(\Angle+90:.3)$)arc[EndRotA];}
- {\StrLeft{#7}{1}[\SS]\IfStrEq{\SS}{-}
- {\node[fill=none,\rotColor]at($(#2)+(\Angle-90:.6)$){\footnotesize$\StrDel[1]{#7}{-}$};\draw[RotBasic]($(#2)+(\Angle-90:.3)$)arc[EndRotC];}
- {\node[fill=none,\rotColor]at($(#2)+(\Angle+90:.6)$){\footnotesize$#7$};\draw[RotBasic]($(#2)+(\Angle+90:.3)$)arc[EndRotA];}
- }
- }
- \IfNoValueTF{#8}
- {\draw[RotBasic]($(#3)+(\Angle-90:.3)$)arc[EndRotB];}
- {\IfStrEq{\convention}{sign}
- {\node[fill=none,\rotColor]at($(#3)+(\Angle-90:.6)$){\footnotesize$#8$};\draw[RotBasic]($(#3)+(\Angle-90:.3)$)arc[EndRotB];}
- {\StrLeft{#8}{1}[\SS]\IfStrEq{\SS}{-}
- {\node[fill=none,\rotColor]at($(#3)+(\Angle+90:.6)$){\footnotesize$\StrDel[1]{#8}{-}$};\draw[RotBasic]($(#3)+(\Angle+90:.3)$)arc[EndRotD];}
- {\node[fill=none,\rotColor]at($(#3)+(\Angle-90:.6)$){\footnotesize$#8$};\draw[RotBasic]($(#3)+(\Angle-90:.3)$)arc[EndRotB];}
- }
- }
- }
- {}
+ {
+ \IfNoValueTF{#6}
+ {\draw[\axisColor,line width=\lineWidth,<->](#2)--(#3)node[midway,fill=none,#5]{$#4$};}
+ {\IfStrEq{\convention}{sign}
+ {\draw[\axisColor,line width=\lineWidth,<->](#2)--(#3)node[midway,fill=none,#5]{$#4$}node[midway,fill=white]{\footnotesize$#6$};}
+ {\StrLeft{#6}{1}[\SS]\IfStrEq{\SS}{-}
+ {\draw[\axisColor,line width=\lineWidth,>-<](#2)--(#3)node[midway,fill=none,#5]{$#4$}node[midway,fill=white]{\footnotesize$\StrDel[1]{#6}{-}$};}
+ {\draw[\axisColor,line width=\lineWidth,<->](#2)--(#3)node[midway,fill=none,#5]{$#4$}node[midway,fill=white]{\footnotesize$#6$};}
+ }
+ }
+ \IfNoValueTF{#7}
+ {\draw[ROTATION]($(#2)+(\Angle+90:.3)$)arc[EndRotA];}
+ {\IfStrEq{\convention}{sign}
+ {\node[fill=none,\rotationColor]at($(#2)+(\Angle+90:.6)$){\footnotesize$#7$};\draw[ROTATION]($(#2)+(\Angle+90:.3)$)arc[EndRotA];}
+ {\StrLeft{#7}{1}[\SS]\IfStrEq{\SS}{-}
+ {\node[fill=none,\rotationColor]at($(#2)+(\Angle-90:.6)$){\footnotesize$\StrDel[1]{#7}{-}$};\draw[ROTATION]($(#2)+(\Angle-90:.3)$)arc[EndRotC];}
+ {\node[fill=none,\rotationColor]at($(#2)+(\Angle+90:.6)$){\footnotesize$#7$};\draw[ROTATION]($(#2)+(\Angle+90:.3)$)arc[EndRotA];}
+ }
+ }
+ \IfNoValueTF{#8}
+ {\draw[ROTATION]($(#3)+(\Angle-90:.3)$)arc[EndRotB];}
+ {\IfStrEq{\convention}{sign}
+ {\node[fill=none,\rotationColor]at($(#3)+(\Angle-90:.6)$){\footnotesize$#8$};\draw[ROTATION]($(#3)+(\Angle-90:.3)$)arc[EndRotB];}
+ {\StrLeft{#8}{1}[\SS]\IfStrEq{\SS}{-}
+ {\node[fill=none,\rotationColor]at($(#3)+(\Angle+90:.6)$){\footnotesize$\StrDel[1]{#8}{-}$};\draw[ROTATION]($(#3)+(\Angle+90:.3)$)arc[EndRotD];}
+ {\node[fill=none,\rotationColor]at($(#3)+(\Angle-90:.6)$){\footnotesize$#8$};\draw[ROTATION]($(#3)+(\Angle-90:.3)$)arc[EndRotB];}
+ }
+ }
+ }
+ {}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Command 3: Hinge support
@@ -210,8 +210,8 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NewDocumentCommand{\HingeSupport}{O{0} m G{1}}{
\begin{scope}[rotate around={#1:(#2)},shift={(#2)},scale=#3]
-\draw[line width=.2mm](0,0)--++(-.25,-.4)--++(.5,0)--cycle;
-\draw[line width=.2mm,FIXED](-.4,-.4)--++(.8,0);
+\draw[line width=\lineWidth](0,0)--++(-.25,-.4)--++(.5,0)--cycle;
+\draw[line width=\lineWidth,FIXED](-.4,-.4)--++(.8,0);
\end{scope}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -228,27 +228,27 @@
\pgfpointdiff{\pgfpointanchor{A}{center}}{\pgfpointanchor{B}{center}}
\pgfmathparse{veclen(\pgf@x,\pgf@y)/28.45274}
\let\Length\pgfmathresult
-\draw[\fillColor,fill=\fillColor,fill opacity=.4](#2)--(#3)--($(#3)+(\Angle+\FAC*90:\Length/10*#5)$)--($(#2)+(\Angle+\FAC*90:\Length/10*#5)$)--cycle;
+\draw[\fillColor,fill=\fillColor,fill opacity=\fillOpacity](#2)--(#3)--($(#3)+(\Angle+\FAC*90:#5)$)--($(#2)+(\Angle+\FAC*90:#5)$)--cycle;
\IfNoValueTF{#4}
- {}
- {\IfStrEq{\convention}{sign}
- {\node[NOFILL]at($(#2)!.5!(#3)+(\Angle+\FAC*90:\Length/5*#5)$)[rotate=\Angle]{$#4$};}
- {\StrLeft{#4}{1}[\SS]\IfStrEq{\SS}{-}
- {\node[NOFILL]at($(#2)!.5!(#3)+(\Angle+\FAC*90:\Length/5*#5)$)[rotate=\Angle]{$\StrDel[1]{#4}{-}$};}
- {\node[NOFILL]at($(#2)!.5!(#3)+(\Angle+\FAC*90:\Length/5*#5)$)[rotate=\Angle]{$#4$};}
- }
- }
+ {}
+ {\IfStrEq{\convention}{sign}
+ {\node[NOFILL]at($(#2)!.5!(#3)+(\Angle+\FAC*90:1.2*#5)$)[rotate=\Angle]{$#4$};}
+ {\StrLeft{#4}{1}[\SS]\IfStrEq{\SS}{-}
+ {\node[NOFILL]at($(#2)!.5!(#3)+(\Angle+\FAC*90:1.2*#5)$)[rotate=\Angle]{$\StrDel[1]{#4}{-}$};}
+ {\node[NOFILL]at($(#2)!.5!(#3)+(\Angle+\FAC*90:1.2*#5)$)[rotate=\Angle]{$#4$};}
+ }
+ }
\foreach\x in{0,.1,.2,...,1}{
\coordinate(C)at($(#2)!\x!(#3)$);
\IfNoValueTF{#4}
- {\draw[<-](C)--++($(\Angle+\FAC*90:\Length/10*#5)$);}
- {\IfStrEq{\convention}{sign}
- {\draw[<-](C)--++($(\Angle+\FAC*90:\Length/10*#5)$);}
- {\StrLeft{#4}{1}[\SS]\IfStrEq{\SS}{-}
- {\draw[->](C)--++($(\Angle+\FAC*90:\Length/10*#5)$);}
- {\draw[<-](C)--++($(\Angle+\FAC*90:\Length/10*#5)$);}
- }
- }
+ {\draw[<-](C)--++($(\Angle+\FAC*90:#5)$);}
+ {\IfStrEq{\convention}{sign}
+ {\draw[<-](C)--++($(\Angle+\FAC*90:#5)$);}
+ {\StrLeft{#4}{1}[\SS]\IfStrEq{\SS}{-}
+ {\draw[->](C)--++($(\Angle+\FAC*90:#5)$);}
+ {\draw[<-](C)--++($(\Angle+\FAC*90:#5)$);}
+ }
+ }
};
}
\makeatother
@@ -258,7 +258,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NewDocumentCommand{\FixedSupport}{O{0} m G{1}}{
\begin{scope}[rotate around={#1:(#2)},shift={(#2)},scale=#3]
-\draw[line width=.2mm,FIXED](-.4,0)--++(.8,0);
+\draw[draw=\lineColor,line width=\lineWidth,FIXED](-.4,0)--++(.8,0);
\end{scope}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -267,12 +267,12 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NewDocumentCommand{\RollerSupport}{O{0} m G{1}}{
\begin{scope}[rotate around={#1:(#2)},shift={(#2)},scale=#3]
-\draw[line width=.2mm]
- (0,0)--++(-.25,-.3)--++(.5,0)--cycle
- (-.15,-.35)circle(.05)
- (+.15,-.35)circle(.05);
-\draw[line width=.2mm,FIXED]
- (-.4,-.4)--++(.8,0);
+\draw[draw=\lineColor,line width=\lineWidth]
+ (0,0)--++(-.25,-.3)--++(.5,0)--cycle
+ (-.15,-.35)circle(.05)
+ (+.15,-.35)circle(.05);
+\draw[draw=\lineColor,line width=\lineWidth,FIXED]
+ (-.4,-.4)--++(.8,0);
\end{scope}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -281,15 +281,15 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NewDocumentCommand{\SliderSupport}{O{0} m G{1}}{
\begin{scope}[rotate around={#1:(#2)},shift={(#2)},scale=#3]
-\draw[line width=.2mm]
- (-.25,-.1/#3)--++(.5,0)
- (-.15,-.14/#3)--++(0,-.22)
- (+.15,-.14/#3)--++(0,-.22);
-\draw[line width=.2mm,fill=white]
- (-.15,-.14/#3)circle(.04)++(0,-.22)circle(.04)
- (+.15,-.14/#3)circle(.04)++(0,-.22)circle(.04);
-\draw[line width=.2mm,FIXED]
- (-.4,-.14/#3-.26)--++(.8,0);
+\draw[draw=\lineColor,line width=\lineWidth]
+ (-.25,-.1/#3)--++(.5,0)
+ (-.15,-.14/#3)--++(0,-.22)
+ (+.15,-.14/#3)--++(0,-.22);
+\draw[draw=\lineColor,line width=\lineWidth,fill=white]
+ (-.15,-.14/#3)circle(.04)++(0,-.22)circle(.04)
+ (+.15,-.14/#3)circle(.04)++(0,-.22)circle(.04);
+\draw[draw=\lineColor,line width=\lineWidth,FIXED]
+ (-.4,-.14/#3-.26)--++(.8,0);
\end{scope}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -298,18 +298,17 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NewDocumentCommand{\SleeveSupport}{O{0} m O{.4} G{1}}{
\begin{scope}[rotate around={#1:(#2)},shift={(#2)},scale=#4]
-\draw[line width=.2mm,FIXED](#3/2,-.4)--++(0,.8);
-\draw[line width=.2mm,FIXED](-#3/2,.4)--++(0,-.8);
+\draw[draw=\lineColor,line width=\lineWidth,FIXED](#3/2,-.4)--++(0,.8)(-#3/2,.4)--++(0,-.8);
\end{scope}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Command 9: Coordinate system frame
% \CoorOrigin[1]{2}{3}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\CoorOrigin}{O{0} m G{1}}{
-\begin{scope}[rotate around={#1:(#2)},shift={(#2)},scale=#3]
-\draw[line width=.2mm,->](-.2,0)--++(1,0);\node[fill=none,draw=none]at(1.1,0){\footnotesize$x$};
-\draw[line width=.2mm,->](0,-.2)--++(0,1);\node[fill=none,draw=none]at(0,1.1){\footnotesize$y$};
+\NewDocumentCommand{\CoorOrigin}{O{0} m O{x} O{y} G{1}}{
+\begin{scope}[rotate around={#1:(#2)},shift={(#2)},scale=#5]
+\draw[draw=\lineColor,line width=\lineWidth,->](-.2,0)--++(1,0);\node[fill=none,draw=none]at(1.1,0){\footnotesize$#3$};
+\draw[draw=\lineColor,line width=\lineWidth,->](0,-.2)--++(0,1);\node[fill=none,draw=none]at(0,1.1){\footnotesize$#4$};
\end{scope}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -318,7 +317,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NewDocumentCommand{\Rigid}{O{0} m G{1}}{
\begin{scope}[rotate around={#1:(#2)},shift={(#2)},scale=#3]
-\draw[fill=black,rounded corners=.2mm](0,0)--(.25,.4)--(.4,.25)--cycle;
+\draw[draw=\fillColor,fill=\fillColor,rounded corners=.2mm](0,0)--(.25,.4)--(.4,.25)--cycle;
\end{scope}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -333,32 +332,39 @@
\let\Angle\pgfmathresult
\coordinate(C)at($(A)+(\Angle+90:#4*#6)$);
\coordinate(D)at($(B)+(\Angle-90:#5*#6)$);
-\draw[#1,fill=#1,fill opacity=.3](A)--(C)--(D)--(B)--cycle;
+\draw[#1,fill=#1,fill opacity=\fillOpacity](A)--(C)--(D)--(B)--cycle;
\pgfpointdiff{\pgfpointanchor{A}{center}}{\pgfpointanchor{B}{center}}
\pgfmathparse{veclen(\pgf@x,\pgf@y)/28.45274}
\let\Length\pgfmathresult
+\IfStrEq{\showvalue}{on}{
\StrLeft{#4}{1}[\SA]
\IfStrEq{\SA}{-}
- {\node[NOFILL]at($(C)+(\Angle-90:\Length/8)$)[rotate=\Angle]{$#4$};}
- {\node[NOFILL]at($(C)+(\Angle+90:\Length/8)$)[rotate=\Angle]{$#4$};}
+ {\IfStrEq{\absvalue}{on}
+ {\node[NOFILL]at($(C)+(\Angle-90:\Length/8)$)[rotate=\Angle]{$\StrDel[1]{#4}{-}$};}
+ {\node[NOFILL]at($(C)+(\Angle-90:\Length/8)$)[rotate=\Angle]{$#4$};}
+ }
+ {\node[NOFILL]at($(C)+(\Angle+90:\Length/8)$)[rotate=\Angle]{$#4$};}
\StrLeft{#5}{1}[\SB]
\IfStrEq{\SB}{-}
- {\node[NOFILL]at($(D)+(\Angle+90:\Length/8)$)[rotate=\Angle]{$#5$};}
- {\node[NOFILL]at($(D)+(\Angle-90:\Length/8)$)[rotate=\Angle]{$#5$};}
+ {\IfStrEq{\absvalue}{on}
+ {\node[NOFILL]at($(D)+(\Angle+90:\Length/8)$)[rotate=\Angle]{$\StrDel[1]{#5}{-}$};}
+ {\node[NOFILL]at($(D)+(\Angle+90:\Length/8)$)[rotate=\Angle]{$#5$};}
+ }
+ {\node[NOFILL]at($(D)+(\Angle-90:\Length/8)$)[rotate=\Angle]{$#5$};}
+}{}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Command 12: Parabolic Internal Force
% \IForceB[1]{2}{3}{4}{5}{6}{7}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NewDocumentCommand{\IForceB}{O{\fillColor} m m m m m G{1}}{
-\coordinate(A)at(#2);
-\coordinate(B)at(#3);
+\coordinate(A)at(#2);\coordinate(B)at(#3);
% original cord
\pgfmathanglebetweenpoints{\pgfpointanchor{A}{center}}{\pgfpointanchor{B}{center}}
\let\Angle\pgfmathresult
\coordinate(C)at($(A)+(\Angle+90:#4*#7)$);
\coordinate(D)at($(B)+(\Angle-90:#5*#7)$);
-% shape cord
+% inclined cord
\pgfmathanglebetweenpoints{\pgfpointanchor{C}{center}}{\pgfpointanchor{D}{center}}
\let\AngleB\pgfmathresult
% original length
@@ -373,25 +379,31 @@
\coordinate(G)at($(C)+(\AngleB:\LengthB/2)$);
\pgfmathsetmacro\height{#6*#7};
\begin{scope}[rotate around={\AngleB:(G)},shift={(G)}]
-\draw[#1,fill=#1,fill opacity=.3](-.5*\LengthB,0)parabola bend(0,\height)(.5*\LengthB,0)--++(\Angle-\AngleB+90:#5*#7)--($(-.5*\LengthB,0)+(\Angle-\AngleB-90:#4*#7)$)--cycle;
+\draw[#1,fill=#1,fill opacity=\fillOpacity](-.5*\LengthB,0)parabola bend(0,\height)(.5*\LengthB,0)--++(\Angle-\AngleB+90:#5*#7)--($(-.5*\LengthB,0)+(\Angle-\AngleB-90:#4*#7)$)--cycle;
\end{scope}
-
+\IfStrEq{\showvalue}{on}{
\StrLeft{#4}{1}[\SA]
\IfStrEq{\SA}{-}
- {\node[NOFILL]at($(C)+(\Angle-90:\Length/8)$)[rotate=\Angle]{$#4$};}
- {\node[NOFILL]at($(C)+(\Angle+90:\Length/8)$)[rotate=\Angle]{$#4$};}
+ {\IfStrEq{\absvalue}{on}
+ {\node[NOFILL]at($(C)+(\Angle-90:\Length/8)$)[rotate=\Angle]{$\StrDel[1]{#4}{-}$};}
+ {\node[NOFILL]at($(C)+(\Angle-90:\Length/8)$)[rotate=\Angle]{$#4$};}
+ }
+ {\node[NOFILL]at($(C)+(\Angle+90:\Length/8)$)[rotate=\Angle]{$#4$};}
\StrLeft{#5}{1}[\SB]
\IfStrEq{\SB}{-}
- {\node[NOFILL]at($(D)+(\Angle+90:\Length/8)$)[rotate=\Angle]{$#5$};}
- {\node[NOFILL]at($(D)+(\Angle-90:\Length/8)$)[rotate=\Angle]{$#5$};}
+ {\IfStrEq{\absvalue}{on}
+ {\node[NOFILL]at($(D)+(\Angle+90:\Length/8)$)[rotate=\Angle]{$\StrDel[1]{#5}{-}$};}
+ {\node[NOFILL]at($(D)+(\Angle+90:\Length/8)$)[rotate=\Angle]{$#5$};}
+ }
+ {\node[NOFILL]at($(D)+(\Angle-90:\Length/8)$)[rotate=\Angle]{$#5$};}
+}{}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Command 13: Beam Deformation (perpendicular)
% \BeamDeformP[1]{2}{3}{4}[5]{6}[7]{8}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NewDocumentCommand{\BeamDeformP}{O{\fillColor} m m m O{0} m O{0} G{1}}{
-\coordinate(A)at(#2);
-\coordinate(B)at(#3);
+\coordinate(A)at(#2);\coordinate(B)at(#3);
% original cord
\pgfmathanglebetweenpoints{\pgfpointanchor{A}{center}}{\pgfpointanchor{B}{center}}
\let\Angle\pgfmathresult
@@ -399,18 +411,17 @@
\coordinate(D)at($(B)+(\Angle-90:#6*#8)$);
\pgfmathanglebetweenpoints{\pgfpointanchor{C}{center}}{\pgfpointanchor{D}{center}}
\let\AngleB\pgfmathresult
-\draw[#1,line width=.8mm](C)to[out=\AngleB+#5*#8,in=180+\AngleB+#7*#8](D);
+\draw[#1,line width=\lineWidth](C)to[out=\AngleB+#5*#8,in=180+\AngleB+#7*#8](D);
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Command 13: Beam Deformation (Rotation Only)
% \BeamDeformR[1]{2}{3}[4][5]{6}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NewDocumentCommand{\BeamDeformR}{O{\fillColor} m m O{0} O{0} G{1}}{
-\coordinate(A)at(#2);
-\coordinate(B)at(#3);
+\coordinate(A)at(#2);\coordinate(B)at(#3);
% original cord
\pgfmathanglebetweenpoints{\pgfpointanchor{A}{center}}{\pgfpointanchor{B}{center}}
\let\Angle\pgfmathresult
-\draw[#1,line width=.8mm](A)to[out=\Angle+#4*#6,in=180+\Angle+#5*#6](B);
+\draw[#1,line width=\lineWidth](A)to[out=\Angle+#4*#6,in=180+\Angle+#5*#6](B);
}
\makeatother
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/structmech.doc.tlpobj new/tlpkg/tlpobj/structmech.doc.tlpobj
--- old/tlpkg/tlpobj/structmech.doc.tlpobj 2018-04-08 02:25:29.000000000 +0200
+++ new/tlpkg/tlpobj/structmech.doc.tlpobj 2019-02-28 04:06:25.000000000 +0100
@@ -1,9 +1,9 @@
name structmech.doc
category Package
-revision 47351
+revision 47859
shortdesc doc files of structmech
relocated 1
-docfiles size=74
+docfiles size=52
RELOC/doc/latex/structmech/README.md
RELOC/doc/latex/structmech/doc/structmech.pdf
RELOC/doc/latex/structmech/doc/structmech.tex
++++++ struktex.doc.tar.xz ++++++
Binary files old/doc/latex/struktex/struktex.de.pdf and new/doc/latex/struktex/struktex.de.pdf differ
Binary files old/doc/latex/struktex/struktex.en.pdf and new/doc/latex/struktex/struktex.en.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/struktex.doc.tlpobj new/tlpkg/tlpobj/struktex.doc.tlpobj
--- old/tlpkg/tlpobj/struktex.doc.tlpobj 2018-03-08 02:25:56.000000000 +0100
+++ new/tlpkg/tlpobj/struktex.doc.tlpobj 2019-02-28 04:06:25.000000000 +0100
@@ -1,6 +1,6 @@
name struktex.doc
category Package
-revision 46873
+revision 47931
shortdesc doc files of struktex
relocated 1
docfiles size=232
++++++ struktex.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/struktex.tlpobj new/tlpkg/tlpobj/struktex.tlpobj
--- old/tlpkg/tlpobj/struktex.tlpobj 2018-03-08 02:25:56.000000000 +0100
+++ new/tlpkg/tlpobj/struktex.tlpobj 2019-02-28 04:06:25.000000000 +0100
@@ -1,6 +1,6 @@
name struktex
category Package
-revision 46873
+revision 47931
shortdesc Draw Nassi-Shneiderman charts
relocated 1
longdesc Even in the age of OOP one must develop algorithms.
@@ -18,7 +18,7 @@
RELOC/tex/latex/struktex/struktxp.sty
catalogue-also pict2e
catalogue-ctan /macros/latex/contrib/struktex
-catalogue-date 2018-03-07 21:19:48 +0100
+catalogue-date 2018-06-04 21:54:41 +0200
catalogue-license lppl1.2
catalogue-topics diagram-flow
-catalogue-version 2.3-17-ga8f1af9
+catalogue-version 2.3c-0-g7d3fc5b
++++++ sttools.doc.tar.xz ++++++
++++++ sttools.tar.xz ++++++
++++++ stubs.doc.tar.xz ++++++
++++++ stubs.tar.xz ++++++
++++++ studenthandouts.doc.tar.xz ++++++
++++++ studenthandouts.tar.xz ++++++
++++++ sty2dtx.doc.tar.xz ++++++
++++++ sty2dtx.tar.xz ++++++
++++++ suanpan.doc.tar.xz ++++++
++++++ suanpan.tar.xz ++++++
++++++ subdepth.doc.tar.xz ++++++
++++++ subdepth.tar.xz ++++++
++++++ subeqn.doc.tar.xz ++++++
++++++ subeqn.tar.xz ++++++
++++++ subeqnarray.doc.tar.xz ++++++
++++++ subeqnarray.tar.xz ++++++
++++++ subfig.doc.tar.xz ++++++
++++++ subfig.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/subfig.tlpobj new/tlpkg/tlpobj/subfig.tlpobj
--- old/tlpkg/tlpobj/subfig.tlpobj 2018-03-03 20:17:39.000000000 +0100
+++ new/tlpkg/tlpobj/subfig.tlpobj 2019-02-28 04:06:27.000000000 +0100
@@ -12,20 +12,22 @@
longdesc environment for each subfigure. An optional first argument is
longdesc used as the caption for that subfigure. This package supersedes
longdesc the subfigure package (which is no longer maintained). The name
-longdesc was changed since the package is completely backward compatible
-longdesc with the older package The major advantage to the new package
-longdesc is that the user interface is keyword/value driven and easier
-longdesc to use. To ease the transition from the subfigure package, the
-longdesc distribution it includes a configuration file (subfig.cfg)
-longdesc which nearly emulates the subfigure package. The functionality
-longdesc of the package is provided by the (more recent still)
-longdesc subcaption package.
+longdesc was changed since the package is not completely backward
+longdesc compatible with the older package The major advantage of the
+longdesc new package is that the user interface is keyword/value driven
+longdesc and easier to use. To ease the transition from the subfigure
+longdesc package, the distribution includes a configuration file
+longdesc (subfig.cfg) which nearly emulates the subfigure package. The
+longdesc functionality of the package is provided by the (more recent
+longdesc still) subcaption package.
runfiles size=8
RELOC/tex/latex/subfig/altsf.cfg
RELOC/tex/latex/subfig/subfig.sty
catalogue-also subfloat
+catalogue-contact-bugs https://github.com/bidi-tex/subfig/issues
+catalogue-contact-repository https://github.com/bidi-tex/subfig
catalogue-ctan /macros/latex/contrib/subfig
-catalogue-date 2016-06-24 19:18:15 +0200
+catalogue-date 2018-11-28 21:07:40 +0100
catalogue-license lppl
catalogue-topics caption subfloat
catalogue-version 1.3
++++++ subfigmat.doc.tar.xz ++++++
++++++ subfigmat.tar.xz ++++++
++++++ subfigure.doc.tar.xz ++++++
++++++ subfigure.tar.xz ++++++
++++++ subfiles.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/subfiles/README new/doc/latex/subfiles/README
--- old/doc/latex/subfiles/README 2016-11-25 19:30:10.000000000 +0100
+++ new/doc/latex/subfiles/README 2018-07-31 22:54:49.000000000 +0200
@@ -1,6 +1,6 @@
subfiles - class and package for multi-file projects in LaTeX
-Autor: Federico Garcia
+Author: Federico Garcia
This material is subject to the LaTeX Project Public License. See
http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html
Binary files old/doc/latex/subfiles/subfiles.pdf and new/doc/latex/subfiles/subfiles.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/subfiles.doc.tlpobj new/tlpkg/tlpobj/subfiles.doc.tlpobj
--- old/tlpkg/tlpobj/subfiles.doc.tlpobj 2018-03-03 20:17:39.000000000 +0100
+++ new/tlpkg/tlpobj/subfiles.doc.tlpobj 2019-02-28 04:06:28.000000000 +0100
@@ -1,8 +1,8 @@
name subfiles.doc
category Package
-revision 26645
+revision 48323
shortdesc doc files of subfiles
relocated 1
-docfiles size=15
+docfiles size=58
RELOC/doc/latex/subfiles/README
RELOC/doc/latex/subfiles/subfiles.pdf
++++++ subfiles.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/subfiles/subfiles.cls new/tex/latex/subfiles/subfiles.cls
--- old/tex/latex/subfiles/subfiles.cls 2016-11-25 19:33:59.000000000 +0100
+++ new/tex/latex/subfiles/subfiles.cls 2018-07-31 22:54:49.000000000 +0200
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright 2002, 2012 Federico Garcia
+%% Copyright 2002, 2012 Federico Garcia; 2018 Gernot Salzer
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -20,22 +20,17 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Federico Garcia.
+%% The Current Maintainer of this work is Gernot Salzer (salzer@logic.at).
%%
%% This work consists of the files subfiles.dtx and subfiles.ins
%% and the derived files subfiles.sty and subfiles.pdf
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{subfiles}[2012/05/23 Federico Garcia]
-\RequirePackage{verbatim}
+\ProvidesClass{subfiles}[2018/07/31 Federico Garcia, Gernot Salzer]
\DeclareOption*{\typeout{Preamble taken from file `\CurrentOption'}%
\let\preamble@file\CurrentOption}
\ProcessOptions
-\let\old@document@subfiles\document
-\let\old@enddocument@subfiles\enddocument
\let\old@documentclass@subfiles\documentclass
-\let\document\comment
-\let\enddocument\endcomment
\let\documentclass\LoadClass\relax
\input{\preamble@file}
{\catcode`\@=11
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/subfiles/subfiles.sty new/tex/latex/subfiles/subfiles.sty
--- old/tex/latex/subfiles/subfiles.sty 2016-11-25 19:33:59.000000000 +0100
+++ new/tex/latex/subfiles/subfiles.sty 2018-07-31 22:54:49.000000000 +0200
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright 2002, 2012 Federico Garcia
+%% Copyright 2002, 2012 Federico Garcia; 2018 Gernot Salzer
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -20,13 +20,13 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Federico Garcia.
+%% The Current Maintainer of this work is Gernot Salzer (salzer@logic.at).
%%
%% This work consists of the files subfiles.dtx and subfiles.ins
%% and the derived files subfiles.sty and subfiles.pdf
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{subfiles}[2012/05/23 Federico Garcia]
+\ProvidesPackage{subfiles}[2018/07/31 Federico Garcia, Gernot Salzer]
\DeclareOption*{\PackageWarning{\CurrentOption ignored}}
\ProcessOptions
\RequirePackage{verbatim}
@@ -35,6 +35,12 @@
\newenvironment{document}{}{}%
\renewcommand{\documentclass}[2][subfiles]{}}
\newcommand\subfile[1]{\begingroup\skip@preamble\input{#1}\endgroup}
+\@ifclassloaded{subfiles}{%
+ \let\old@document@subfiles\document
+ \let\old@enddocument@subfiles\enddocument
+ \let\document\comment
+ \let\enddocument\endcomment
+}{}
\endinput
%%
%% End of file `subfiles.sty'.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/subfiles.tlpobj new/tlpkg/tlpobj/subfiles.tlpobj
--- old/tlpkg/tlpobj/subfiles.tlpobj 2018-03-03 20:17:39.000000000 +0100
+++ new/tlpkg/tlpobj/subfiles.tlpobj 2019-02-28 04:06:28.000000000 +0100
@@ -1,6 +1,6 @@
name subfiles
category Package
-revision 26645
+revision 48323
shortdesc Individual typesetting of subfiles of a "main" document
relocated 1
longdesc Using subfiles the user can handle multi-file projects more
@@ -12,7 +12,7 @@
RELOC/tex/latex/subfiles/subfiles.sty
catalogue-also combine standalone
catalogue-ctan /macros/latex/contrib/subfiles
-catalogue-date 2016-06-24 19:18:15 +0200
+catalogue-date 2018-07-31 17:12:00 +0200
catalogue-license lppl1.3
catalogue-topics subdocs
-catalogue-version 1.1
+catalogue-version 1.2
++++++ subfloat.doc.tar.xz ++++++
++++++ subfloat.tar.xz ++++++
++++++ substances.doc.tar.xz ++++++
++++++ substances.tar.xz ++++++
++++++ substitutefont.doc.tar.xz ++++++
++++++ substitutefont.tar.xz ++++++
++++++ substr.doc.tar.xz ++++++
++++++ substr.tar.xz ++++++
++++++ subsupscripts.doc.tar.xz ++++++
++++++ subsupscripts.tar.xz ++++++
++++++ sudoku.doc.tar.xz ++++++
++++++ sudoku.tar.xz ++++++
++++++ sudokubundle.doc.tar.xz ++++++
++++++ sudokubundle.tar.xz ++++++
++++++ suftesi.doc.tar.xz ++++++
Binary files old/doc/latex/suftesi/suftesi.pdf and new/doc/latex/suftesi/suftesi.pdf differ
Binary files old/doc/latex/suftesi/templates.zip and new/doc/latex/suftesi/templates.zip differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/suftesi.doc.tlpobj new/tlpkg/tlpobj/suftesi.doc.tlpobj
--- old/tlpkg/tlpobj/suftesi.doc.tlpobj 2018-03-03 20:17:41.000000000 +0100
+++ new/tlpkg/tlpobj/suftesi.doc.tlpobj 2019-02-28 04:06:29.000000000 +0100
@@ -1,9 +1,8 @@
name suftesi.doc
category Package
-revision 40238
+revision 49138
shortdesc doc files of suftesi
relocated 1
-docfiles size=438
+docfiles size=270
RELOC/doc/latex/suftesi/README
RELOC/doc/latex/suftesi/suftesi.pdf
- RELOC/doc/latex/suftesi/templates.zip
++++++ suftesi.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/suftesi/suftesi.cls new/tex/latex/suftesi/suftesi.cls
--- old/tex/latex/suftesi/suftesi.cls 2016-11-25 19:33:59.000000000 +0100
+++ new/tex/latex/suftesi/suftesi.cls 2018-11-12 23:10:37.000000000 +0100
@@ -6,7 +6,7 @@
%%
%% suftesi.dtx (with options: `class')
%%
-%% Copyright 2009-2016 by Ivan Valbusa
+%% Copyright 2009-2018 by Ivan Valbusa
%%
%% This program is provided under the terms of the
%% LaTeX Project Public License distributed from CTAN
@@ -19,7 +19,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesClass{suftesi}
- [2016/04/04 v2.9 A class for typesetting theses, books and articles]
+ [2018/11/09 v2.9.1 A class for typesetting theses, books and articles]
\ClassWarningNoLine{suftesi}{%
******************************************\MessageBreak
@@ -1092,8 +1092,12 @@
\definecolor{sufgray}{rgb}{0.5,0.5,0.5}
\RequirePackage{multicol}
\RequirePackage{emptypage}
-\RequirePackage{iftex}
\RequirePackage{microtype}
+\RequirePackage{iftex}
+ \ifLuaTeX
+ \RequirePackage{luatex85}
+ \else
+ \fi
\ifsuftesi@FSPL
\RequirePackage{cclicenses}
\else
@@ -1219,18 +1223,18 @@
\else
\ifsuftesi@libertine
\RequirePackage{textcomp}
- \RequirePackage[sb]{libertine}
- \RequirePackage[varqu,varl,scaled=0.94]{inconsolata}
- \ifsuftesi@mathextended
- \RequirePackage{amsthm}
- \RequirePackage[libertine,bigdelims,vvarbb]{newtxmath}
- \RequirePackage[cal=boondoxo]{mathalfa}
- \else
- \ifsuftesi@mathminimal
- \RequirePackage[libertine,bigdelims,vvarbb]{newtxmath}
- \else
- \fi
- \fi
+\RequirePackage[sb]{libertine}
+\RequirePackage[varqu,varl,scaled=0.94]{inconsolata}
+\ifsuftesi@mathextended
+\RequirePackage{amsthm}
+\RequirePackage{libertinust1math}
+\RequirePackage[cal=stix,scr=boondoxo,bb=boondox]{mathalfa}
+\else
+\ifsuftesi@mathminimal
+\RequirePackage{libertinust1math}
+\else
+\fi
+\fi
\useosf
\ifsuftesi@bodoni
\gdef\SUFfntscale{0.9}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/suftesi.tlpobj new/tlpkg/tlpobj/suftesi.tlpobj
--- old/tlpkg/tlpobj/suftesi.tlpobj 2018-03-03 20:17:41.000000000 +0100
+++ new/tlpkg/tlpobj/suftesi.tlpobj 2019-02-28 04:06:30.000000000 +0100
@@ -1,14 +1,14 @@
name suftesi
category Package
-revision 40238
+revision 49138
shortdesc A document class for typesetting theses, books and articles
relocated 1
-longdesc The class is specifically designed for use with theses in the
-longdesc humanities.
+longdesc The class can be used to typeset any kind of book (originally
+longdesc designed for use in the humanities).
runfiles size=21
RELOC/tex/latex/suftesi/suftesi.cls
catalogue-ctan /macros/latex/contrib/suftesi
-catalogue-date 2016-06-24 19:18:15 +0200
+catalogue-date 2018-11-12 12:44:06 +0100
catalogue-license lppl1.3
catalogue-topics book-pub class dissertation
-catalogue-version 2.9
+catalogue-version 2.9.1
++++++ sugconf.doc.tar.xz ++++++
++++++ sugconf.tar.xz ++++++
++++++ superiors.doc.tar.xz ++++++
++++++ superiors.tar.xz ++++++
++++++ supertabular.doc.tar.xz ++++++
++++++ supertabular.tar.xz ++++++
++++++ susy.doc.tar.xz ++++++
++++++ susy.tar.xz ++++++
++++++ svg-inkscape.doc.tar.xz ++++++
++++++ svg.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/svg/README.md new/doc/latex/svg/README.md
--- old/doc/latex/svg/README.md 2017-11-29 23:07:30.000000000 +0100
+++ new/doc/latex/svg/README.md 2018-11-13 23:48:18.000000000 +0100
@@ -5,7 +5,7 @@
Copyright (C) Philip Ilten , 2012-2016
Copyright (C) Falk Hanisch , 2017-
- svg 2017/11/29 v2.01
+ svg 2018/11/12 v2.02b
----------------------------------------------------------------------------
@@ -34,6 +34,20 @@
Versions
--------
+**v2.02b** (2018/11/12)
++ fix bug for package **tikzscale** which changes `includgraphics` globally
+
+**v2.02a** (2018/10/17)
++ fix bug for package **polyglossia** which fakes **babel** poorly
+
+**v2.02** (2018/09/08)
++ distortion of included and extracted graphics supported with options `distort`
+ (or `keepaspectratio`) and `extractdistort` as well as rotation for
+ extractions (`extractangle`)
++ fixed errors with active double qoutes from **babel** in path arguments
++ multiple dots within file names possible
++ package **trimspaces** required
+
**v2.01** (2017/11/29)
+ new option `svgextension` to change the format of files exported by
***Inkscape*** from `svg` to a custom one
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/svg/svg-preamble.tex new/doc/latex/svg/svg-preamble.tex
--- old/doc/latex/svg/svg-preamble.tex 2017-06-06 23:53:10.000000000 +0200
+++ new/doc/latex/svg/svg-preamble.tex 2018-09-08 23:41:57.000000000 +0200
@@ -1,10 +1,5 @@
\documentclass{scrartcl}
-\usepackage{ifxetex}
-\usepackage{ifluatex}
-\ifxetex\else\ifluatex\else
\usepackage[T1]{fontenc}
-\usepackage{selinput}\SelectInputMappings{adieresis={ä},germandbls={ß}}
-\fi\fi
\usepackage{svg}
\usepackage{relsize}
\usepackage{hyperref}
Binary files old/doc/latex/svg/svg.pdf and new/doc/latex/svg/svg.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/svg.doc.tlpobj new/tlpkg/tlpobj/svg.doc.tlpobj
--- old/tlpkg/tlpobj/svg.doc.tlpobj 2018-03-03 20:17:42.000000000 +0100
+++ new/tlpkg/tlpobj/svg.doc.tlpobj 2019-02-28 04:06:31.000000000 +0100
@@ -1,9 +1,9 @@
name svg.doc
category Package
-revision 45941
+revision 49148
shortdesc doc files of svg
relocated 1
-docfiles size=416
+docfiles size=434
RELOC/doc/latex/svg/LICENSE.md
RELOC/doc/latex/svg/README.md
RELOC/doc/latex/svg/root.C
++++++ svg.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/svg/svg-extract.sty new/tex/latex/svg/svg-extract.sty
--- old/tex/latex/svg/svg-extract.sty 2017-11-29 23:07:30.000000000 +0100
+++ new/tex/latex/svg/svg-extract.sty 2018-11-13 23:48:18.000000000 +0100
@@ -33,7 +33,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{svg-extract}[%
- 2017/11/29 v2.01\space%
+ 2018/11/12 v2.02b\space%
(extract independent graphics from SVG pictures)%
]
\RequirePackage{svg}[2017/03/27]
@@ -81,7 +81,7 @@
}%
\svg@deprecated@key{pdf}{extractformat={\svgx@format}}%
\else%
- \FamilyKeyStateUnknownValue
+ \FamilyKeyStateUnknownValue%
\fi%
\fi%
}
@@ -94,7 +94,7 @@
}%
\svg@deprecated@key{eps}{extractformat={\svgx@format}}%
\else%
- \FamilyKeyStateUnknownValue
+ \FamilyKeyStateUnknownValue%
\fi%
\fi%
}
@@ -196,7 +196,7 @@
`pdftopsopt' instead. See the manual for\MessageBreak%
more. Nothing was done%
}%
- \FamilyKeyStateProcessed
+ \FamilyKeyStateProcessed%
}
\newif\if@svgx@cnv@run
\newcommand*\svgx@cnv@cmd{}
@@ -286,7 +286,7 @@
}%
\svg@deprecated@key{png}{convertformat={\svgx@cnv@format}}%
\else%
- \FamilyKeyStateUnknownValue
+ \FamilyKeyStateUnknownValue%
\fi%
\fi%
}
@@ -341,12 +341,13 @@
}
\newcommand*\svgx@out@path{}
\DefineFamilyKey{SVG}{extractpath}{%
+ \svg@sanitize@dq\svg@tempb{#1}%
\FamilySetNumerical{SVG}{extractpath}{svg@tempa}{%
{svgpath}{0},{svgdir}{0},%
{svgsubpath}{1},{svgsubdir}{1},%
{basepath}{2},{basedir}{2},{jobpath}{2},{jobdir}{2},%
{basesubpath}{3},{basesubdir}{3},{jobsubpath}{3},{jobsubdir}{3}%
- }{#1}%
+ }{\svg@tempb}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed%
\ifcase\svg@tempa\relax% svgpath
\renewcommand*\svgx@out@path{\svg@file@path}%
@@ -358,7 +359,7 @@
\renewcommand*\svgx@out@path{./svg-extract/}%
\fi%
\else%
- \renewcommand*\svgx@out@path{#1}%
+ \edef\svgx@out@path{\svg@tempb}%
\svg@normalize@path{\svgx@out@path}%
\FamilyKeyStateProcessed%
\fi%
@@ -370,12 +371,13 @@
\newcommand*\svgx@out@name{}
\newif\if@svgx@out@sec
\DefineFamilyKey{SVG}{extractname}{%
+ \svg@quotes@remove[{#1}]{\svg@tempb}%
\FamilySetNumerical{SVG}{extractname}{svg@tempa}{%
{filename}{0},{name}{0},%
{filenamenumbered}{1},{namenumbered}{1},%
{numberedfilename}{1},{numberedname}{1},%
{numbered}{2},{section}{2},{numberedsection}{2},{sectionnumbered}{2}%
- }{#1}%
+ }{\svg@tempb}%
\@svgx@out@secfalse%
\ifx\FamilyKeyState\FamilyKeyStateProcessed%
\ifcase\svg@tempa\relax% filename
@@ -387,10 +389,11 @@
\@svgx@out@sectrue%
\fi%
\else%
- \def\svg@tempa##1.##2\@nil{%
- \IfArgIsEmpty{##1}{}{\renewcommand*\svgx@out@name{##1}}%
- }%
- \svg@tempa#1.\@nil%
+ \if@svg@quotes@found%
+ \edef\svgx@out@name{"\svg@tempb"}%
+ \else%
+ \edef\svgx@out@name{\svg@tempb}%
+ \fi%
\FamilyKeyStateProcessed%
\fi%
}
@@ -409,8 +412,10 @@
\FamilyKeyStateProcessed%
}{%
\FamilySetLengthMacro{SVG}{extractwidth}{\svgx@param@width}{#1}%
- \ifdim\svgx@param@width<\z@\relax%
- \FamilyKeyStateUnknownValue%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifdim\svgx@param@width<\z@\relax%
+ \FamilyKeyStateUnknownValue%
+ \fi%
\fi%
}%
}%
@@ -427,12 +432,41 @@
\FamilyKeyStateProcessed%
}{%
\FamilySetLengthMacro{SVG}{extractheight}{\svgx@param@height}{#1}%
- \ifdim\svgx@param@height<\z@\relax%
- \FamilyKeyStateUnknownValue%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifdim\svgx@param@height<\z@\relax%
+ \FamilyKeyStateUnknownValue%
+ \fi%
\fi%
}%
}%
}
+\newif\if@svgx@param@distort
+\DefineFamilyKey{SVG}{extractdistort}[true]{%
+ \FamilyKeyStateUnknownValue%
+ \svg@ifvalueisrelax{#1}{%
+ \@svgx@param@distortfalse%
+ \FamilyKeyStateProcessed%
+ }{%
+ \ifstr{#1}{inherit}{%
+ \renewcommand*\if@svgx@param@distort{\if@svg@param@distort}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \FamilySetBool{SVG}{extractdistort}{@svgx@param@distort}{#1}%
+ }%
+ }%
+}
+\DefineFamilyKey{SVG}{extractkeepaspectratio}[true]{%
+ \FamilySetBool{SVG}{extractkeepaspectratio}{@svg@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@svg@tempswa%
+ \FamilyOptions{SVG}{extractdistort=false}%
+ \else
+ \FamilyOptions{SVG}{extractdistort=true}%
+ \fi%
+ \else%
+ \FamilyOptions{SVG}{extractdistort=#1}%
+ \fi%
+}
\newcommand*\svgx@param@scale{\svg@param@scale}
\DefineFamilyKey{SVG}{extractscale}{%
\FamilyKeyStateUnknownValue%
@@ -459,9 +493,9 @@
\let\svgx@param@pretex\relax%
}{%
\ifstr{#1}{inherit}{%
- \def\svgx@param@pretex{\svg@param@pretex}%
+ \renewcommand*\svgx@param@pretex{\svg@param@pretex}%
}{%
- \def\svgx@param@pretex{#1}%
+ \renewcommand*\svgx@param@pretex{#1}%
}%
}%
\FamilyKeyStateProcessed%
@@ -472,9 +506,9 @@
\let\svgx@param@apptex\relax%
}{%
\ifstr{#1}{inherit}{%
- \def\svgx@param@apptex{\svg@param@apptex}%
+ \renewcommand*\svgx@param@apptex{\svg@param@apptex}%
}{%
- \def\svgx@param@apptex{#1}%
+ \renewcommand*\svgx@param@apptex{#1}%
}%
}%
\FamilyKeyStateProcessed%
@@ -569,11 +603,11 @@
\fi%
}%
\edef\svg@tempb{%
- \noexpand\endgroup%
+ \endgroup%
\ifx\svg@tempa\relax%
- \noexpand\let\noexpand\svg@tempa\noexpand\relax%
+ \let\noexpand\svg@tempa\noexpand\relax%
\else%
- \noexpand\def\noexpand\svg@tempa{\svg@tempa}%
+ \def\noexpand\svg@tempa{\svg@tempa}%
\fi%
}%
\svg@tempb%
@@ -611,21 +645,23 @@
\fi%
}%
}
-\newcommand*\svgxdelayed[1]{
+\newif\if@svgx@standalone
+\newcommand*\svgxsetbox[2][]{%
+ \@svgx@standalonetrue%
+ \svgx@setbox{#1}{#2}%
\scr@ifundefinedorrelax{AtEndPreamble}{%
- \AtBeginDocument{#1}%
+ \let\svg@tempa\@firstofone%
}{%
- \AtEndPreamble{\AtBeginDocument{#1}}%
+ \def\svg@tempa{\AtEndPreamble}%
}%
+ \svg@tempa{\AtBeginDocument{\svgx@setbox{#1}{#2}}}%
}
-\newbox\svgx@box
-\newcommand*\svgxsetbox[2][]{%
- \csname @tud@x@standalone@croptrue\endcsname%
- \sbox\svgx@box{\svg@@input[{#1},draft=false]{#2}}%
+\newcommand*\svgx@setbox[2]{%
+ \sbox\svg@box{\svg@@input[{#1},draft=false]{#2}}%
\svgxsetpapersize%
}
\newcommand*\svgxsetpapersize{%
- \setlength\paperwidth{\the\wd\svgx@box}%
+ \setlength\paperwidth{\the\wd\svg@box}%
\scr@ifundefinedorrelax{stockwidth}{}{%
\setlength\stockwidth{\paperwidth}%
}%
@@ -633,7 +669,7 @@
\setlength\mediawidth{\paperwidth}%
}%
\setlength\textwidth{\paperwidth}%
- \setlength\paperheight{\the\dimexpr\ht\svgx@box+\dp\svgx@box\relax}%
+ \setlength\paperheight{\the\dimexpr\ht\svg@box+\dp\svg@box\relax}%
\scr@ifundefinedorrelax{stockheight}{}{%
\setlength\stockheight{\paperheight}%
}%
@@ -665,22 +701,44 @@
\if@svgx@beamer%
\setbeamertemplate{navigation symbols}{}%
\begin{frame}[plain]%
- \usebox\svgx@box%
+ \usebox\svg@box%
\end{frame}%
\else%
- \usebox\svgx@box%
+ \usebox\svg@box%
\fi%
\endgraf%
\endgroup%
}
\FamilyExecuteOptions{SVG}{%
- extract=true,extractpath=basesubdir,extractruns=2,extractname=namenumbered,%
+ extract=true,extractpath=basesubdir,%
+ extractruns=2,extractname=namenumbered,extractdistort=false,%
convert=magick,convert=false,%
gsdevice={png=png16m},gsdevice={jpeg=jpeg},gsdevice={jpg=jpeg},%
gsdevice={tif=tiff48nc},gsdevice={tiff=tiff48nc},%
gsdevice={eps=eps2write},gsdevice={ps=ps2write}%
}
\FamilyProcessOptions{SVG}
+\DefineFamilyMember[.param]{SVG}
+\newcommand*\svgx@param@angle{0}
+\svg@local@param@def{%
+ \DefineFamilyKey[.param]{SVG}{extractangle}{%
+ \FamilyKeyStateUnknownValue%
+ \svg@ifvalueisrelax{#1}{%
+ \renewcommand*\svgx@param@angle{0}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \ifstr{#1}{inherit}{%
+ \renewcommand*\svgx@param@angle{\svg@param@angle}%
+ \FamilyKeyStateProcessed%
+ }{%
+ \ifisdimension{#1\p@}{%
+ \renewcommand*\svgx@param@angle{#1}%
+ \FamilyKeyStateProcessed%
+ }{}%
+ }%
+ }%
+ }%
+}
\let\svghidepreamblestart\relax
\let\svghidepreambleend\relax
\ifnum\pdf@shellescape=\@ne\relax\else%
@@ -692,7 +750,7 @@
\PackageWarning{svg-extract}{%
You didn't enable `shell escape' (or `write18')\MessageBreak%
so it wasn't possible to run the extraction for\MessageBreak%
- file `\svg@tempa'%
+ file `\svg@tempa'\MessageBreak%
}%
\endgroup%
\fi%
@@ -833,6 +891,9 @@
\ifdim\svgx@param@height>\z@\relax%
\svg@tempa{height=\svgx@param@height}%
\fi%
+ \if@svgx@param@distort%
+ \svg@tempa{distort=true}%
+ \fi%
\ifdim\dimexpr\svgx@param@scale\p@\relax=\p@\relax\else%
\svg@tempa{scale=\svgx@param@scale}%
\fi%
@@ -864,6 +925,11 @@
\fi%
}{}%
\fi%
+ \ifdim\dimexpr\svgx@param@angle\p@\relax=\z@\relax\else%
+ \edef\svg@tempa{%
+ angle=\svgx@param@angle\ifx\svg@tempa\@empty\else,\svg@tempa\fi%
+ }%
+ \fi%
\ifx\svg@tempa\@empty%
\def\svg@tempa{\string\svgxsetbox{#1}}%
\else%
@@ -879,9 +945,6 @@
}{}%
\fi%
\immediate\write\svgx@stream@out{%
- \string\svgxdelayed{\@percentchar^^J%
- \space\space\svg@tempa\@percentchar^^J%
- }^^J^^J%
\string\begin{document}^^J%
\string\pagestyle{empty}^^J%
\string\svgxoutputbox\@percentchar^^J%
@@ -954,7 +1017,7 @@
\expandafter\svgx@ifinlist\expandafter{\svg@tempa}{\svgx@format}{%
\PackageWarning{svg-extract}{%
File type `\svg@tempa' was specified for option\MessageBreak%
- `extractformat' (\svgx@format) as well as for \MessageBreak
+ `extractformat' (\svgx@format) as well as for \MessageBreak%
option `convertformat' (\svgx@cnv@format) so the\MessageBreak%
conversion won't be done%
}%
@@ -1073,8 +1136,8 @@
}%
\svg@tempa#1,\@nil%
\edef\svg@tempa{%
- \noexpand\endgroup%
- \noexpand\def\noexpand\svgx@cnv@informat{\svg@tempa}%
+ \endgroup%
+ \def\noexpand\svgx@cnv@informat{\svg@tempa}%
}%
\svg@tempa%
\ifx\svgx@cnv@informat\@empty%
@@ -1133,9 +1196,9 @@
\edef\svg@tempb{%
The graphic file \svg@tempb\space failed\MessageBreak%
for `#1.#2'\MessageBreak%
- Troubleshooting: Please check the log file how the\MessageBreak%
- invocation of the extraction took place and try\MessageBreak%
- to execute it yourself in the terminal%
+ Troubleshooting: Please check the log file how\MessageBreak%
+ the invocation of the extraction took place and\MessageBreak%
+ try to execute it yourself in the terminal%
}%
\else%
\def\svg@tempb{%
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/svg/svg.sty new/tex/latex/svg/svg.sty
--- old/tex/latex/svg/svg.sty 2017-11-29 23:07:30.000000000 +0100
+++ new/tex/latex/svg/svg.sty 2018-11-13 23:48:18.000000000 +0100
@@ -33,16 +33,25 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{svg}[%
- 2017/11/29 v2.01\space%
+ 2018/11/12 v2.02b\space%
(include SVG pictures)%
]
\RequirePackage{scrbase}[2016/06/14]
-\RequirePackage{ifxetex}[2010/09/12]
-\RequirePackage{ifluatex}[2016/05/16]
\RequirePackage{ifpdf}[2016/05/14]
+\RequirePackage{ifluatex}[2016/05/16]
+\RequirePackage{ifxetex}[2010/09/12]
\RequirePackage{pdftexcmds}[2016/05/21]
\RequirePackage{shellesc}[2016/06/07]
+\RequirePackage{trimspaces}[2009/09/17]
\RequirePackage{graphicx}[1999/02/16]
+\newcommand*\svg@tempa{}
+\newcommand*\svg@tempb{}
+\newbox\svg@box
+\newif\if@svg@tempswa
+\edef\svg@catcodecodes@restore{%
+ \catcode`\noexpand\"\the\catcode`\"\relax%
+}
+\@makeother\"%
\DefineFamily{SVG}
\DefineFamilyMember{SVG}
\newcommand*\svg@deprecated@key[3][svg]{%
@@ -53,9 +62,6 @@
}%
\FamilyOptions{SVG}{#3}%
}
-\newcommand*\svg@tempa{}
-\newcommand*\svg@tempb{}
-\newif\if@svg@tempswa
\newif\if@svg@use@xcolor
\FamilyBoolKey{SVG}{usexcolor}{@svg@use@xcolor}
\DeclareOption{noxcolor}{\FamilyOptions{SVG}{usexcolor=false}}
@@ -82,7 +88,7 @@
}
\newcommand*\svg@ink@mode{}
\DefineFamilyKey{SVG}{inkscape}[true]{%
- \lowercase{\def\svg@tempa{#1}}%
+ \lowercase{\svg@sanitize@dq\svg@tempb{#1}}%
\FamilySetNumerical{SVG}{inkscape}{svg@tempa}{%
{false}{0},{off}{0},{no}{0},%
{true}{1},{on}{1},{yes}{1},{onlynewer}{1},{newer}{1},%
@@ -93,7 +99,7 @@
{tex}{9},{latex}{9},{exportlatex}{9},{latexexport}{9},%
{notex}{10},{nolatex}{10},{noexportlatex}{10},{nolatexexport}{10},%
{latexnoexport}{10},{raw}{10},{plain}{10},{simple}{10}%
- }{\svg@tempa}%
+ }{\svg@tempb}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed%
\ifnum\svg@tempa<\thr@@\relax%
\let\svg@ink@mode\svg@tempa%
@@ -120,16 +126,23 @@
\def\svg@tempa##1dpi##2\@nil{%
\ifstr{##2}{dpi}{\FamilyOptions{SVG}{inkscapedpi=##1}}{}%
}%
- \lowercase{\svg@tempa#1dpi\@nil}%
+ \lowercase{\expandafter\svg@tempa\svg@tempb dpi\@nil}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed\else%
+ \svg@quotes@remove[{#1}]{\svg@tempb}%
\def\svg@tempa##1-##2\@nil{%
\IfArgIsEmpty{##2}{\def\svg@tempb{}}{%
- \def\svg@tempa##1####1\@nil{\def\svg@tempb{####1}}%
- \svg@tempa#1\@nil%
+ \def\svg@tempa####1-\@nil{\def\svg@tempb{-####1}}%
+ \svg@tempa##2\@nil%
}%
- \def\svg@tempa{##1}%
+ \edef\svg@tempa{\trim@spaces{##1}}%
+ }%
+ \edef\svg@tempb{%
+ \noexpand\svg@tempa\svg@tempb-\noexpand\@nil%
}%
- \svg@tempa#1-\@nil%
+ \svg@tempb%
+ \if@svg@quotes@found%
+ \edef\svg@tempa{"\svg@tempa"}%
+ \fi%
\PackageWarning{svg}{%
Setting the executable%
\ifx\svg@tempb\@empty\else%
@@ -235,14 +248,8 @@
}
\newcommand*\svg@file@ext{svg}
\DefineFamilyKey{SVG}{svgextension}{%
- \def\svg@tempa##1.##2.##3\relax{%
- \IfArgIsEmpty{##1}{%
- \def\svg@file@ext{##2}%
- }{%
- \def\svg@file@ext{##1}%
- }%
- }%
- \lowercase{\svg@tempa#1..\relax}%
+ \lowercase{\svg@quotes@remove[{#1}]{\svg@file@ext}}%
+ \svg@remove@leadingchar.\svg@file@ext%
}
\DefineFamilyKey{SVG}{extension}{\FamilyOptions{SVG}{svgextension=#1}}
\DefineFamilyKey{SVG}{ext}{\FamilyOptions{SVG}{svgextension=#1}}
@@ -250,12 +257,13 @@
\newcommand*\svg@out@name{\svg@file@name\svg@file@suffix}
\newcommand*\svg@out@base{\svg@out@path\svg@out@name.\svg@ink@format}
\DefineFamilyKey{SVG}{inkscapepath}{%
+ \svg@sanitize@dq\svg@tempb{#1}%
\FamilySetNumerical{SVG}{inkscapepath}{svg@tempa}{%
{svgpath}{0},{svgdir}{0},%
{svgsubpath}{1},{svgsubdir}{1},%
{basepath}{2},{basedir}{2},{jobpath}{2},{jobdir}{2},%
{basesubpath}{3},{basesubdir}{3},{jobsubpath}{3},{jobsubdir}{3}%
- }{#1}%
+ }{\svg@tempb}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed%
\ifcase\svg@tempa\relax% svgpath
\renewcommand*\svg@out@path{\svg@file@path}%
@@ -267,7 +275,7 @@
\renewcommand*\svg@out@path{./svg-inkscape/}%
\fi%
\else%
- \renewcommand*\svg@out@path{#1}%
+ \edef\svg@out@path{\svg@tempb}%
\svg@normalize@path{\svg@out@path}%
\FamilyKeyStateProcessed%
\fi%
@@ -284,8 +292,10 @@
\FamilyKeyStateProcessed%
}{%
\FamilySetLengthMacro{SVG}{width}{\svg@param@width}{#1}%
- \ifdim\svg@param@width<\z@\relax%
- \FamilyKeyStateUnknownValue%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifdim\svg@param@width<\z@\relax%
+ \FamilyKeyStateUnknownValue%
+ \fi%
\fi%
}%
}
@@ -297,11 +307,25 @@
\FamilyKeyStateProcessed%
}{%
\FamilySetLengthMacro{SVG}{height}{\svg@param@height}{#1}%
- \ifdim\svg@param@height<\z@\relax%
- \FamilyKeyStateUnknownValue%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \ifdim\svg@param@height<\z@\relax%
+ \FamilyKeyStateUnknownValue%
+ \fi%
\fi%
}%
}
+\newif\if@svg@param@distort
+\FamilyBoolKey{SVG}{distort}{@svg@param@distort}
+\DefineFamilyKey{SVG}{keepaspectratio}[true]{%
+ \FamilySetBool{SVG}{keepaspectratio}{@svg@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed%
+ \if@svg@tempswa%
+ \FamilyOptions{SVG}{distort=false}%
+ \else
+ \FamilyOptions{SVG}{distort=true}%
+ \fi%
+ \fi%
+}
\newcommand*\svg@param@scale{1}
\DefineFamilyKey{SVG}{scale}{%
\FamilyKeyStateUnknownValue%
@@ -357,13 +381,31 @@
\newif\if@svg@draft
\FamilyBoolKey{SVG}{draft}{@svg@draft}
\AtBeginDocument{\if@svg@draft\else\ifGin@draft\@svg@drafttrue\fi\fi}
-\newcommand*\svg@quotes@remove[1]{%
+\newcommand*\svg@deactivate@dq{}
+\AfterPackage+{babel}{%
+ \renewcommand*\svg@deactivate@dq{\bbl@deactivate{"}}%
+ \providecommand*\bbl@deactivate[1]{}%
+}
+\newcommand*\svg@sanitize@dq[2]{%
\begingroup%
- \edef\svg@tempa{#1}%
+ \svg@deactivate@dq%
+ \edef\svg@tempa{\endgroup\def\noexpand#1{#2}}%
+ \svg@tempa%
+}
+\newcommand*\svg@quotes@remove[2][]{%
+ \begingroup%
+ \IfArgIsEmpty{#1}{\def\svg@tempb{#2}}{\def\svg@tempb{#1}}%
+ \svg@sanitize@dq\svg@tempa{\svg@tempb}%
+ \expandafter\svg@quotes@check\expandafter{\svg@tempa}%
\expandafter\svg@quotes@@remove\svg@tempa""\@nil%
\edef\svg@tempb{%
\endgroup%
- \noexpand\def\noexpand#1{\unexpanded\expandafter{\svg@tempa}}%
+ \def\noexpand#2{\svg@tempa}%
+ \if@svg@quotes@found%
+ \noexpand\@svg@quotes@foundtrue%
+ \else%
+ \noexpand\@svg@quotes@foundfalse%
+ \fi%
}%
\svg@tempb%
}
@@ -383,43 +425,66 @@
\def\svg@quotes@@check#1"#2\@nil{%
\IfArgIsEmpty{#2}{\@svg@quotes@foundfalse}{\@svg@quotes@foundtrue}%
}
+\newcommand*\svg@remove@leadingchar[2]{%
+ \begingroup%
+ \svg@sanitize@dq\svg@tempa{#2}%
+ \def\svg@tempb{%
+ \def\svg@tempa####1\@nil{\def\svg@tempa{####1}}%
+ \kernel@ifnextchar#1%
+ {\expandafter\svg@tempa\@gobble}%
+ {\svg@tempa}%
+ }%
+ \expandafter\svg@tempb\svg@tempa\@nil%
+ \edef\svg@tempb{%
+ \endgroup%
+ \def\noexpand#2{\svg@tempa}%
+ }%
+ \svg@tempb%
+}
\newcommand*\svg@set@input@path[1][]{%
\begingroup%
+ \svg@deactivate@dq%
\ifx\svg@file@path\@empty\else%
+ \svg@normalize@path{\svg@file@path}%
\edef\svg@file@path{{\svg@file@path}}%
\fi%
\svg@append@input@path{\svg@file@path}{\svg@input@path}%
\svg@append@input@path{\svg@file@path}{\Ginput@path}%
- \svg@append@input@path{\svg@file@path}{{#1}}%
+ \IfArgIsEmpty{#1}{}{\svg@append@input@path{\svg@file@path}{{#1}}}%
\svg@append@input@path{\svg@file@path}{\input@path}%
- \def\svg@tempb{}%
- \expandafter\@tfor\expandafter\svg@tempa\expandafter:\expandafter=%
- \svg@file@path\do{%
- \ifx\svg@tempa\@empty\else%
- \svg@normalize@path{\svg@tempa}%
- \edef\svg@tempb{%
- \unexpanded\expandafter{\svg@tempb}{\svg@tempa}%
- }%
- \fi%
- }%
\edef\svg@tempa{%
\endgroup%
- \ifx\svg@tempb\@empty\else%
- \noexpand\def\noexpand\input@path{\unexpanded\expandafter{\svg@tempb}}%
+ \ifx\svg@file@path\@empty\else%
+ \def\noexpand\input@path{\svg@file@path}%
\fi%
}%
\svg@tempa%
}
\newcommand*\svg@append@input@path[2]{%
\ifx#2\@undefined\else%
- \edef#1{\unexpanded\expandafter{#1}#2}%
+ \edef\svg@tempb{#2}%
+ \expandafter\@tfor\expandafter\svg@tempa\expandafter:\expandafter=%
+ \svg@tempb\do{%
+ \ifx\svg@tempa\@empty\else%
+ \@svg@tempswatrue%
+ \svg@normalize@path{\svg@tempa}%
+ \expandafter\@tfor\expandafter\svg@tempb\expandafter:\expandafter=%
+ #1\do{%
+ \ifx\svg@tempa\svg@tempb%
+ \@svg@tempswafalse%
+ \@break@tfor%
+ \fi%
+ }%
+ \if@svg@tempswa%
+ \edef#1{#1{\svg@tempa}}%
+ \fi%
+ \fi%
+ }%
\fi%
}
\newcommand*\svg@normalize@path[1]{%
\begingroup%
- \edef\svg@tempa{#1}%
- \svg@quotes@check{\svg@tempa}%
- \svg@quotes@remove{\svg@tempa}%
+ \svg@quotes@remove[{#1}]{\svg@tempa}%
\ifx\svg@tempa\@empty\relax%
\def\svg@tempa{./}%
\fi%
@@ -427,9 +492,9 @@
\edef\svg@tempb{%
\endgroup%
\if@svg@quotes@found%
- \noexpand\def\noexpand#1{"\unexpanded\expandafter{\svg@tempa}"}%
+ \def\noexpand#1{"\svg@tempa"}%
\else%
- \noexpand\def\noexpand#1{\unexpanded\expandafter{\svg@tempa}}%
+ \def\noexpand#1{\svg@tempa}%
\fi%
}%
\svg@tempb%
@@ -440,7 +505,7 @@
\IfArgIsEmpty{#1}{\def\svg@tempa{}}{\def\svg@tempa{#1/}}%
}{%
\svg@normalize@@path#2/\@nil%
- \edef\svg@tempa{#1/\unexpanded\expandafter{\svg@tempa}}%
+ \edef\svg@tempa{#1/\svg@tempa}%
}%
}
\newcommand*\svg@ifvalueisrelax[1]{%
@@ -515,6 +580,8 @@
\svg@dummy@key{name}
\svg@dummy@key{extractwidth}
\svg@dummy@key{extractheight}
+\svg@dummy@key{extractdistort}
+\svg@dummy@key{extractkeepaspectratio}
\svg@dummy@key{extractscale}
\svg@dummy@key{extractpretex}
\svg@dummy@key{extractapptex}
@@ -523,8 +590,9 @@
\svg@dummy@key[true]{clear}
\svg@dummy@key[true]{exclude}
\FamilyExecuteOptions{SVG}{%
- inkscape=true,inkscapepath=basesubdir,inkscapelatex=true,%
- inkscapearea=drawing,usexcolor=true,usetransparent=true%
+ inkscape=true,inkscapepath=basesubdir,
+ inkscapelatex=true,inkscapearea=drawing,distort=false,%
+ usexcolor=true,usetransparent=true%
}
\FamilyProcessOptions{SVG}
\newif\if@svg@file@found
@@ -534,94 +602,112 @@
\newcommand*\svg@file@suffix{}
\newcommand*\svg@get@path[3][\svg@file@ext]{%
\begingroup%
- \edef\svg@tempa{#2}%
- \svg@quotes@check{\svg@tempa}%
- \svg@quotes@remove{\svg@tempa}%
- \expandafter\svg@filename@parse\expandafter{\svg@tempa}%
+ \svg@filename@parse[{#1}]{#2}%
\IfArgIsEmpty{#1}{%
\edef\svg@tempa{\filename@area\filename@base.\filename@ext}%
}{%
\edef\svg@tempa{\filename@area\filename@base.#1}%
}%
- \if@svg@quotes@found%
- \edef\svg@tempa{"\svg@tempa"}%
- \fi%
- \svg@set@input@path[#3]%
+ \svg@set@input@path[{#3}]%
\@svg@tempswafalse%
\expandafter\IfFileExists\expandafter{\svg@tempa}{%
\@svg@tempswatrue%
- \expandafter\svg@filename@parse\expandafter{\@filef@und}%
+ \edef\@filef@und{\expandafter\trim@spaces\expandafter{\@filef@und}}%
+ \svg@filename@parse[{#1}]{\@filef@und}%
}{}%
\edef\svg@tempa{%
\endgroup%
\if@svg@tempswa%
\noexpand\@svg@file@foundtrue%
- \noexpand\def\noexpand\svg@file@path{\filename@area}%
- \noexpand\def\noexpand\svg@file@name{\filename@base}%
- \noexpand\def\noexpand\svg@file@base{\filename@area\filename@base}%
+ \def\noexpand\svg@file@path{\filename@area}%
+ \def\noexpand\svg@file@name{\filename@base}%
+ \def\noexpand\svg@file@base{\filename@area\filename@base}%
\else%
\noexpand\@svg@file@foundfalse%
- \noexpand\def\noexpand\svg@file@path{}%
- \noexpand\def\noexpand\svg@file@name{#2}%
- \noexpand\def\noexpand\svg@file@base{#2}%
+ \def\noexpand\svg@file@path{}%
+ \def\noexpand\svg@file@name{#2}%
+ \def\noexpand\svg@file@base{#2}%
\fi%
}%
\svg@tempa%
}
-\newcommand*\svg@filename@parse[1]{%
+\newcommand*\svg@filename@parse[2][]{%
\begingroup%
- \def\svg@tempa##1{%
- \def\svg@tempb####1####2\@nil{%
- \ifstr{####1}{"}{\def\svg@tempb{####2}}{\def\svg@tempb{####1####2}}%
- }%
- \expandafter\svg@tempb##1\@nil%
- \edef##1{\svg@tempb}%
- }%
- \filename@parse{#1}%
- \ifx\filename@ext\relax\else%
- \edef\filename@base{\filename@base.\filename@ext}%
- \fi%
- \svg@quotes@check{\filename@area}%
+ \svg@sanitize@dq\svg@tempa{#2}%
+ \expandafter\filename@parse\expandafter{\svg@tempa}%
+ \svg@quotes@remove{\filename@area}%
\if@svg@quotes@found%
- \svg@quotes@remove{\filename@area}%
\edef\filename@area{"\filename@area"}%
- \svg@tempa{\filename@base}%
+ \svg@remove@leadingchar"\filename@base%
\fi%
- \svg@quotes@check{\filename@base}%
- \if@svg@quotes@found%
- \svg@quotes@remove{\filename@base}%
+ \ifx\filename@ext\relax\else%
+ \svg@quotes@remove{\filename@ext}%
+ \svg@extension@parse{#1}%
+ \if@svg@quotes@found%
+ \edef\filename@base{\filename@base"}%
+ \fi%
\fi%
- \let\svg@tempa\filename@area%
- \expandafter\filename@parse\expandafter{\filename@base}%
- \let\filename@area\svg@tempa%
+ \svg@quotes@remove{\filename@base}%
\if@svg@quotes@found%
- \edef\filename@base{"\filename@base"}%
+ \edef\filename@base{"\filename@base"}%
\fi%
\edef\svg@tempa{%
- \noexpand\endgroup%
- \noexpand\def\noexpand\filename@area{\filename@area}%
- \noexpand\def\noexpand\filename@base{\filename@base}%
+ \endgroup%
+ \def\noexpand\filename@area{\filename@area}%
+ \def\noexpand\filename@base{\filename@base}%
\ifx\filename@ext\relax%
- \noexpand\let\noexpand\filename@ext\noexpand\relax%
+ \let\noexpand\filename@ext\noexpand\relax%
\else%
- \noexpand\def\noexpand\filename@ext{\filename@ext}%
+ \def\noexpand\filename@ext{\filename@ext}%
\fi%
}%
\svg@tempa%
}
+\newcommand*\svg@extension@parse[1]{%
+ \IfArgIsEmpty{#1}{}{%
+ \ifstr{#1}{\filename@ext}{}{%
+ \begingroup%
+ \edef\svg@tempa{%
+ \def\noexpand\svg@tempa{}%
+ \let\noexpand\svg@tempb\relax%
+ \noexpand\svg@extension@@parse%
+ \filename@ext.\noexpand\@nil#1\noexpand\@nil%
+ }%
+ \svg@tempa%
+ \edef\svg@tempa{%
+ \endgroup%
+ \def\noexpand\filename@base{\filename@base\svg@tempa}%
+ \ifx\svg@tempb\relax%
+ \let\noexpand\filename@ext\relax%
+ \else%
+ \def\noexpand\filename@ext{\svg@tempb}%
+ \fi%
+ }%
+ \svg@tempa%
+ }%
+ }%
+}
+\newcommand*\svg@extension@@parse{}
+\def\svg@extension@@parse#1.#2\@nil#3\@nil{%
+ \edef\svg@tempa{\svg@tempa.#1}%
+ \IfArgIsEmpty{#2}{}{%
+ \ifstr{#2}{#3.}{%
+ \edef\svg@tempb{#3}%
+ }{%
+ \svg@extension@@parse#2\@nil#3\@nil%
+ }%
+ }%
+}
\newcommand*\svg@file@missing[3][]{%
\begingroup%
- \edef\svg@tempa{#2}%
- \expandafter\svg@filename@parse\expandafter{\svg@tempa}%
- \svg@quotes@remove{\filename@area}%
- \svg@quotes@remove{\filename@base}%
- \ifx\filename@ext\relax\else%
- \svg@quotes@remove{\filename@ext}%
- \fi%
+ \svg@quotes@remove[{#2}]{\svg@tempa}%
+ \svg@filename@parse[{#1}]{\svg@tempa}%
\IfArgIsEmpty{#1}{%
+ \svg@quotes@remove[{#3}]{\svg@tempb}%
\def\svg@tempa{%
Did you run the export with Inkscape? There's no file\MessageBreak%
- `\filename@area\filename@base.\filename@ext'%
+ `\filename@area\filename@base.\filename@ext'\MessageBreak%
+ although `\svg@tempb' was found.%
}%
}{%
\edef\filename@ext{#1}%
@@ -636,7 +722,7 @@
\ifx\input@path\@undefined%
\def\svg@tempb{No additional path was given.}%
\else%
- \def\svg@tempb{Following folders have been searched:}%
+ \def\svg@tempb{Following folders have additionally been searched:}%
\expandafter\@tfor\expandafter\svg@tempa\expandafter:\expandafter=%
\input@path\do{%
\edef\svg@tempb{\svg@tempb\noexpand\MessageBreak\svg@tempa}%
@@ -677,6 +763,13 @@
\svg@local@param@use%
\FamilyOptions{SVG}{#1}%
\ifstr{\svg@ink@format}{png}{\FamilyOptions{SVG}{inkscapelatex=false}}{}%
+ \@svg@tempswafalse%
+ \ifdim\svg@param@width>\z@\relax\ifdim\svg@param@height>\z@\relax%
+ \@svg@tempswatrue%
+ \fi\fi%
+ \if@svg@tempswa\else%
+ \FamilyOptions{SVG}{distort=false}%
+ \fi%
}
\newcommand*\svg@local@param@use{}
\newcommand*\svg@local@param@def[1]{%
@@ -690,9 +783,16 @@
\newcommand*\svg@input@path{}
\let\svg@input@path\input@path
\newcommand*\svgpath[1]{%
- \def\svg@input@path{#1}%
+ \def\svg@tempa##1\@nil{%
+ \ifx\svg@tempb\bgroup%
+ \def\svg@input@path{#1}%
+ \else%
+ \def\svg@input@path{{#1}}%
+ \fi%
+ }%
+ \futurelet\svg@tempb\svg@tempa#1\@nil%
}
-\newcommand*{\includesvg}[2][]{%
+\newcommand*\includesvg[2][]{%
\begingroup%
\svg@deprecated@param%
\svg@local@param@set{#1}%
@@ -707,12 +807,12 @@
\svg@ink@run%
\IfFileExists{\svg@out@base}{}{%
\@svg@file@foundfalse%
- \svg@file@missing{\svg@out@base}{}%
+ \svg@file@missing{\svg@out@base}{\svg@file@base.\svg@file@ext}%
}%
\if@svg@ink@latex%
\IfFileExists{\svg@out@base_tex}{}{%
\@svg@file@foundfalse%
- \svg@file@missing{\svg@out@base_tex}{}%
+ \svg@file@missing{\svg@out@base_tex}{\svg@file@base.\svg@file@ext}%
}%
\fi%
\if@svg@file@found%
@@ -730,8 +830,10 @@
\newcommand*\svg@param@angle{0}
\svg@local@param@def{%
\DefineFamilyKey[.param]{SVG}{angle}{%
- \renewcommand*\svg@param@angle{#1}%
- \FamilyKeyStateProcessed%
+ \ifisdimension{#1\p@}{%
+ \renewcommand*\svg@param@angle{#1}%
+ \FamilyKeyStateProcessed%
+ }{}%
}%
}
\newcommand*\svg@param@origin{c}
@@ -741,39 +843,56 @@
\FamilyKeyStateProcessed%
}%
}
-\newcommand*{\includeinkscape}[2][]{%
+\newcommand*\includeinkscape[2][]{%
\begingroup%
\svg@deprecated@param%
- \filename@parse{#2}%
+ \svg@filename@parse{#2}%
\ifx\filename@ext\relax\else%
\svg@quotes@remove{\filename@ext}%
\expandafter\lowercase\expandafter{%
\expandafter\def\expandafter\filename@ext\expandafter{\filename@ext}%
}%
- \let\svg@tempb\filename@ext%
- \def\svg@tempa##1_tex##2\@nil{\def\svg@tempb{##1}}%
- \expandafter\svg@tempa\svg@tempb_tex\@nil%
- \@for\svg@tempa:={pdf,eps,ps,png}\do{%
- \ifstr{\svg@tempb}{\svg@tempa}{%
- \edef\svg@tempa{%
- \noexpand\FamilyOptions{SVG}{inkscapeformat=\svg@tempb}%
- }%
- \svg@tempa%
- }{}%
+ \def\svg@tempb##1_tex##2\@nil{%
+ \IfArgIsEmpty{##1}{}{\def\filename@ext{##1}}%
+ \ifstr{##2}{_tex}{\@svg@tempswatrue}{\@svg@tempswafalse}%
}%
- \ifstr{\filename@ext}{\svg@ink@format_tex}{%
- \FamilyOptions{SVG}{inkscapelatex=true}%
- }{}%
+ \@svg@tempswafalse%
+ \@tfor\svg@tempa:={pdf}{eps}{ps}{png}\do{%
+ \begingroup%
+ \expandafter\svg@tempb\filename@ext_tex\@nil%
+ \svg@extension@parse{\svg@tempa}%
+ \ifx\filename@ext\relax%
+ \def\svg@tempb{\endgroup}%
+ \else%
+ \edef\svg@tempb{%
+ \endgroup%
+ \noexpand\FamilyOptions{SVG}{inkscapeformat=\svg@tempa}%
+ \if@svg@tempswa%
+ \noexpand\FamilyOptions{SVG}{inkscapelatex=true}%
+ \fi%
+ \def\noexpand\filename@base{\filename@base}%
+ \def\noexpand\filename@ext{\filename@ext}%
+ \noexpand\@svg@tempswatrue%
+ }%
+ \fi%
+ \svg@tempb%
+ \if@svg@tempswa%
+ \@break@tfor%
+ \fi%
+ }%
+ \if@svg@tempswa\else%
+ \svg@extension@parse{\svg@ink@format}%
+ \fi%
\fi%
\svg@local@param@set{#1}%
- \expandafter\svg@get@path\expandafter[\svg@ink@format]{#2}{\svg@out@path}%
+ \svg@get@path[\svg@ink@format]{\filename@area\filename@base}{\svg@out@path}%
\if@svg@file@found%
\edef\svg@out@name{\svg@file@name}%
\edef\svg@out@base{\svg@file@path\svg@file@name.\svg@ink@format}%
\if@svg@ink@latex%
\IfFileExists{\svg@out@base_tex}{}{%
\@svg@file@foundfalse%
- \svg@file@missing{\svg@out@base_tex}{}%
+ \svg@file@missing{\svg@out@base_tex}{\svg@out@base}%
}%
\fi%
\if@svg@file@found%
@@ -821,8 +940,7 @@
\ifnum\pdf@shellescape=\@ne\relax\if@svg@ink@run%
\svg@iffilenewer{\svg@out@base_tex}{\svg@out@base}{%
\@svg@ink@runfalse%
- \edef\svg@tempa{\svg@out@base}%
- \svg@quotes@remove{\svg@tempa}%
+ \svg@quotes@remove[\svg@out@base]{\svg@tempa}%
\PackageWarning{svg}{%
Since the encountered filedate of file\MessageBreak%
`\svg@tempa_tex' is newer than \MessageBreak%
@@ -851,10 +969,8 @@
\space with added options `\svg@ink@opt'%
\fi%
}%
- \edef\svg@tempa{\svg@file@base}%
- \edef\svg@tempb{\svg@out@name}%
- \svg@quotes@remove{\svg@tempa}%
- \svg@quotes@remove{\svg@tempb}%
+ \svg@quotes@remove[\svg@file@base]{\svg@tempa}%
+ \svg@quotes@remove[\svg@out@name]{\svg@tempb}%
\ShellEscape{\svg@ink@cmd{\svg@tempa}{\svg@tempb}}%
\IfFileExists{\svg@out@name.\svg@ink@format}{%
\edef\svg@tempb{\svg@tempb.\svg@ink@format}%
@@ -874,8 +990,7 @@
}%
}%
\else%
- \edef\svg@tempa{\svg@file@base}%
- \svg@quotes@remove{\svg@tempa}%
+ \svg@quotes@remove[\svg@file@base]{\svg@tempa}%
\PackageWarning{svg}{%
You didn't enable `shell escape' (or `write18')\MessageBreak%
so it wasn't possible to launch the Inkscape export\MessageBreak%
@@ -922,7 +1037,7 @@
\PackageInfo{svg}{Last page of `#1' is \the\@tempcnta}%
\fi%
\edef\svg@tempa{%
- \noexpand\endgroup%
+ \endgroup%
\noexpand\FamilyOptions{SVG}{lastpage=\the\@tempcnta}%
}%
\svg@tempa%
@@ -952,32 +1067,57 @@
\if@svg@draft%
\@svg@ink@latexfalse%
\fi%
- \edef\svg@tempa{#2}%
+ \def\svg@tempb##1.##2\@nil{%
+ \IfArgIsEmpty{##2}{%
+ \def\svg@tempb{##1}%
+ }{%
+ \edef\svg@tempa{\svg@tempa.##1}%
+ \svg@tempb##2\@nil%
+ }%
+ }%
+ \edef\svg@tempa{%
+ \def\noexpand\svg@tempa{}%
+ \noexpand\svg@tempb#2.\noexpand\@nil%
+ }%
+ \svg@tempa%
+ \svg@remove@leadingchar.\svg@tempa%
+ \edef\svg@tempa{{\svg@tempa}.\svg@tempb}%
+ \edef\svg@tempb{#2}%
\if@svg@ink@latex%
\svg@patches{\svg@tempa}%
\ifnum\value{svg@param@lastpage}=\z@\relax%
- \expandafter\svg@get@lastpage\expandafter{\svg@tempa}%
+ \expandafter\svg@get@lastpage\expandafter{\svg@tempb}%
\fi%
\edef\svg@tempa{%
\ifx\svg@param@pretex\relax\else%
\noexpand\svg@param@pretex%
\fi%
- \noexpand\input{\svg@tempa_tex}%
+ \noexpand\input{\svg@tempb_tex}%
\ifx\svg@param@apptex\relax\else%
\noexpand\svg@param@apptex%
\fi%
}%
+ \if@svg@param@distort%
+ \def\svg@tempb{\resizebox*{\svg@param@width}{\svg@param@height}}%
+ \else%
+ \let\svg@tempb\@firstofone%
+ \fi%
+ \sbox\svg@box{\svg@tempb{\svg@tempa}}%
\ifdim\dimexpr\svg@param@angle\p@\relax=\z@\relax%
- \svg@tempa%
+ \let\svg@tempb\@firstofone%
\else%
- \edef\svg@tempb{origin=\svg@param@origin}%
- \expandafter\rotatebox\expandafter[\svg@tempb]{\svg@param@angle}{%
- \svg@tempa%
+ \edef\svg@tempb{%
+ \noexpand\rotatebox[origin=\svg@param@origin]{\svg@param@angle}%
}%
\fi%
+ \svg@tempb{\usebox\svg@box}%
\else%
\svg@wrn@scale%
- \edef\svg@tempb{keepaspectratio,scale=\svg@param@scale}%
+ \edef\svg@tempb{%
+ draft\if@svg@draft\else=false\fi,%
+ scale=\svg@param@scale,%
+ keepaspectratio\if@svg@param@distort=false\fi%
+ }%
\ifdim\svg@param@height>\z@\relax%
\edef\svg@tempb{\svg@tempb,height=\svg@param@height}%
\fi%
@@ -989,22 +1129,18 @@
\svg@tempb,origin=\svg@param@origin,angle=\svg@param@angle%
}%
\fi%
- \if@svg@draft%
- \edef\svg@tempb{\svg@tempb,draft}%
- \else%
- \edef\svg@tempb{\svg@tempb,draft=false}%
- \fi%
\expandafter\includegraphics\expandafter[\svg@tempb]{\svg@tempa}%
\fi%
}
+\newcommand*\svg@picture@saved{}
+\let\svg@picture@saved\picture
+\newcommand*\svg@includegraphics@saved{}
+\let\svg@includegraphics@saved\includegraphics
\newcommand*\svg@patches[1]{%
- \let\svg@picture@saved\picture%
\let\picture\svg@picture@patched%
- \let\svg@includegraphics@saved\includegraphics%
\let\includegraphics\svg@includegraphics@patched%
\edef\svg@includegraphics@file{#1}%
}
-\newcommand*\svg@picture@saved{}
\newcommand*\svg@picture@patched{}
\newcommand*\svg@pictur@patched{}
\long\def\svg@picture@patched#1{\svg@pictur@patched@#1}
@@ -1035,7 +1171,6 @@
\FamilyCounterKey{SVGpatch}{page}{svg@param@currpage}
\DefineFamilyKey{SVGpatch}{width}{\FamilyKeyStateProcessed}
\newcommand*\svg@includegraphics@file{}
-\newcommand*\svg@includegraphics@saved{}
\newcommand*\svg@includegraphics@patched[2][]{%
\FamilyOptions{SVGpatch}{#1}%
\ifnum\value{svg@param@lastpage}<\z@\relax%
@@ -1077,8 +1212,7 @@
\fi
\newcommand*\svg@shell@mkdir[1]{%
\begingroup%
- \edef\svg@tempa{#1}%
- \svg@quotes@remove{\svg@tempa}%
+ \svg@quotes@remove[{#1}]{\svg@tempa}%
\@svg@tempswatrue%
\ifstr{\svg@tempa}{}{\@svg@tempswafalse}{%
\ifstr{\svg@tempa}{./}{\@svg@tempswafalse}{%
@@ -1094,6 +1228,7 @@
\newcommand*\svg@shell@rm[1]{%
\ShellEscape{\svg@shell@@rm\space"#1"}%
}
+\svg@catcodecodes@restore
\endinput
%%
%% End of file `svg.sty'.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/svg.tlpobj new/tlpkg/tlpobj/svg.tlpobj
--- old/tlpkg/tlpobj/svg.tlpobj 2018-03-03 20:17:43.000000000 +0100
+++ new/tlpkg/tlpobj/svg.tlpobj 2019-02-28 04:06:31.000000000 +0100
@@ -1,6 +1,6 @@
name svg
category Package
-revision 45941
+revision 49148
shortdesc Include and extract SVG pictures in LaTeX documents
relocated 1
longdesc This bundle contains the two packages svg and svg-extract. The
@@ -15,12 +15,15 @@
longdesc allows the extraction of these graphics into independent files
longdesc in different graphic formats, exactly as it is rendered within
longdesc the LaTeX document, using either ImageMagick or Ghostscript.
-runfiles size=18
+runfiles size=20
RELOC/tex/latex/svg/svg-extract.sty
RELOC/tex/latex/svg/svg.sty
catalogue-also svg-inkscape
+catalogue-contact-bugs https://github.com/mrpiggi/svg/issues
+catalogue-contact-home https://github.com/mrpiggi/svg
+catalogue-contact-repository https://github.com/mrpiggi/svg
catalogue-ctan /graphics/svg
-catalogue-date 2017-11-29 09:47:37 +0100
-catalogue-license lppl1.3
+catalogue-date 2018-11-13 10:20:49 +0100
+catalogue-license lppl1.3c
catalogue-topics graphics-incl graphics-import
-catalogue-version 2.01
+catalogue-version 2.02b
++++++ svgcolor.doc.tar.xz ++++++
++++++ svgcolor.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/svgcolor.tlpobj new/tlpkg/tlpobj/svgcolor.tlpobj
--- old/tlpkg/tlpobj/svgcolor.tlpobj 2018-03-03 20:17:43.000000000 +0100
+++ new/tlpkg/tlpobj/svgcolor.tlpobj 2019-02-28 04:06:32.000000000 +0100
@@ -8,7 +8,7 @@
runfiles size=4
RELOC/tex/latex/svgcolor/svgcolor.sty
catalogue-ctan /macros/latex/contrib/svgcolor
-catalogue-date 2016-06-24 19:18:15 +0200
+catalogue-date 2018-09-15 14:10:32 +0200
catalogue-license lppl
catalogue-topics colour
catalogue-version 1.0
++++++ svn-multi.doc.tar.xz ++++++
++++++ svn-multi.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/svn-multi.tlpobj new/tlpkg/tlpobj/svn-multi.tlpobj
--- old/tlpkg/tlpobj/svn-multi.tlpobj 2018-03-03 20:17:43.000000000 +0100
+++ new/tlpkg/tlpobj/svn-multi.tlpobj 2019-02-28 04:06:32.000000000 +0100
@@ -15,6 +15,7 @@
texmf-dist/tex/latex/svn-multi/svn-multi.sty
texmf-dist/tex/latex/svn-multi/svnkw.sty
catalogue-also svn svninfo
+catalogue-contact-repository https://bitbucket.org/martin_scharrer/svn-multi
catalogue-ctan /macros/latex/contrib/svn-multi
catalogue-date 2017-04-18 05:31:40 +0200
catalogue-license lppl
++++++ svn-prov.doc.tar.xz ++++++
++++++ svn-prov.tar.xz ++++++
++++++ svn.doc.tar.xz ++++++
++++++ svn.tar.xz ++++++
++++++ svninfo.doc.tar.xz ++++++
++++++ svninfo.tar.xz ++++++
++++++ svrsymbols.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/fonts/svrsymbols/README new/doc/fonts/svrsymbols/README
--- old/doc/fonts/svrsymbols/README 2016-11-25 19:27:34.000000000 +0100
+++ new/doc/fonts/svrsymbols/README 2019-02-13 23:22:42.000000000 +0100
@@ -1,4 +1,4 @@
-The svrsymbols package is a LaTeX interface to theSVRsymbols
+The svrsymbols package is a LaTeX interface to the SVRsymbols
font. The glyphs of this font are ideograms that have been
designed for use in Physics texts. Some symbols are standard and
some are entirely new. In version 2.0a of the package, we added
@@ -6,6 +6,11 @@
April 8, 2016
+In version 2.0b we added an OpenType font for those people who prefer
+to use LibreOffice or MS-Office.
+
+February 12, 2019
+
Pablo García Risueño
Apostolos Syropoulos
Natàlia Vergés
Binary files old/doc/fonts/svrsymbols/svrsymbols.pdf and new/doc/fonts/svrsymbols/svrsymbols.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/svrsymbols.doc.tlpobj new/tlpkg/tlpobj/svrsymbols.doc.tlpobj
--- old/tlpkg/tlpobj/svrsymbols.doc.tlpobj 2018-03-03 20:17:44.000000000 +0100
+++ new/tlpkg/tlpobj/svrsymbols.doc.tlpobj 2019-02-28 04:06:33.000000000 +0100
@@ -1,6 +1,6 @@
name svrsymbols.doc
category Package
-revision 40371
+revision 50019
shortdesc doc files of svrsymbols
relocated 1
docfiles size=18
++++++ svrsymbols.tar.xz ++++++
Binary files old/fonts/opentype/public/svrsymbols/SVRsymbols.otf and new/fonts/opentype/public/svrsymbols/SVRsymbols.otf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/svrsymbols/svrsymbols.sty new/tex/latex/svrsymbols/svrsymbols.sty
--- old/tex/latex/svrsymbols/svrsymbols.sty 2016-11-25 19:33:59.000000000 +0100
+++ new/tex/latex/svrsymbols/svrsymbols.sty 2019-02-13 23:22:42.000000000 +0100
@@ -6,7 +6,7 @@
%%
%% svrsymbols.dtx (with options: `svrsymbols')
%%
-%% (c) Copyright 2015-2016 Pablo Garcia Risueno, Apostolos Syropoulos,
+%% (c) Copyright 2015-2019 Pablo Garcia Risueno, Apostolos Syropoulos,
%% and Natalia Verges.
%% This program can be redistributed and/or modified under the
%% terms of the LaTeX Project Public License Distributed from
@@ -37,10 +37,10 @@
%% Right brace \} Tilde \~}
%%
\ProvidesFile{svrsymbols.sty}
- [2016/04/08 v2.0a Package `svrsymbols.sty']
+ [2019/02/12 v2.0b Package `svrsymbols.sty']
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{svrsymbols}
- [2016/04/08 v.2.0a, New Symbols for Physics.]
+ [2019/02/12 v.2.0b, New Symbols for Physics.]
\DeclareFontFamily{OML}{svr}{}
\DeclareFontShape{OML}{svr}{m}{it}{
<-> SVRsymbols
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/svrsymbols.tlpobj new/tlpkg/tlpobj/svrsymbols.tlpobj
--- old/tlpkg/tlpobj/svrsymbols.tlpobj 2018-03-03 20:17:44.000000000 +0100
+++ new/tlpkg/tlpobj/svrsymbols.tlpobj 2019-02-28 04:06:33.000000000 +0100
@@ -1,21 +1,22 @@
name svrsymbols
category Package
-revision 40371
-shortdesc 'A new font with symbols for use in Physics texts.'
+revision 50019
+shortdesc A font with symbols for use in physics texts
relocated 1
-longdesc The svrsymbols package is a LaTeX interface to theSVRsymbols
+longdesc The svrsymbols package is a LaTeX interface to the SVRsymbols
longdesc font. The glyphs of this font are ideograms that have been
-longdesc designed for use in Physics texts. Some symbols are standard
+longdesc designed for use in physics texts. Some symbols are standard
longdesc and some are entirely new.
execute addMap svrsymbols.map
-runfiles size=19
+runfiles size=26
RELOC/fonts/afm/public/svrsymbols/SVRsymbols.afm
RELOC/fonts/map/dvips/svrsymbols/svrsymbols.map
+ RELOC/fonts/opentype/public/svrsymbols/SVRsymbols.otf
RELOC/fonts/tfm/public/svrsymbols/SVRsymbols.tfm
RELOC/fonts/type1/public/svrsymbols/SVRsymbols.pfb
RELOC/tex/latex/svrsymbols/svrsymbols.sty
catalogue-ctan /fonts/svrsymbols
-catalogue-date 2016-06-24 19:18:15 +0200
-catalogue-license lppl1.3
-catalogue-topics font font-maths font-symbol-maths
-catalogue-version 2.0a
+catalogue-date 2019-02-12 22:24:22 +0100
+catalogue-license lppl1.3c
+catalogue-topics font font-maths font-symbol-maths physics
+catalogue-version 2.0b
++++++ swebib.doc.tar.xz ++++++
++++++ swebib.tar.xz ++++++
++++++ swimgraf.doc.tar.xz ++++++
++++++ swimgraf.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/swimgraf.tlpobj new/tlpkg/tlpobj/swimgraf.tlpobj
--- old/tlpkg/tlpobj/swimgraf.tlpobj 2018-03-03 20:17:45.000000000 +0100
+++ new/tlpkg/tlpobj/swimgraf.tlpobj 2019-02-28 04:06:33.000000000 +0100
@@ -20,6 +20,6 @@
RELOC/tex/latex/swimgraf/swimgraf.cfg
RELOC/tex/latex/swimgraf/swimgraf.sty
catalogue-ctan /macros/latex/contrib/swimgraf
-catalogue-date 2016-06-24 19:18:15 +0200
+catalogue-date 2018-09-15 14:13:15 +0200
catalogue-license lppl
catalogue-topics data-disp
++++++ syllogism.doc.tar.xz ++++++
++++++ syllogism.tar.xz ++++++
++++++ symbol.tar.xz ++++++
++++++ sympytexpackage.doc.tar.xz ++++++
++++++ sympytexpackage.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/sympytexpackage.tlpobj new/tlpkg/tlpobj/sympytexpackage.tlpobj
--- old/tlpkg/tlpobj/sympytexpackage.tlpobj 2018-03-03 20:17:45.000000000 +0100
+++ new/tlpkg/tlpobj/sympytexpackage.tlpobj 2019-02-28 04:06:34.000000000 +0100
@@ -10,6 +10,7 @@
runfiles size=4
RELOC/scripts/sympytexpackage/sympytex.py
RELOC/tex/latex/sympytexpackage/sympytex.sty
+catalogue-contact-home http://elec.otago.ac.nz/w/index.php/SympyTeX
catalogue-ctan /macros/latex/contrib/sympytexpackage
catalogue-date 2017-04-18 05:31:40 +0200
catalogue-license gpl2
++++++ synctex.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/texmf-dist/doc/man/man1/synctex.1 new/texmf-dist/doc/man/man1/synctex.1
--- old/texmf-dist/doc/man/man1/synctex.1 2017-05-03 19:35:31.000000000 +0200
+++ new/texmf-dist/doc/man/man1/synctex.1 2019-02-28 20:09:21.000000000 +0100
@@ -1,8 +1,8 @@
-.Dd 04/23/2017 \" DATE
+.Dd 06/13/2018 \" DATE
.Dt synctex 1 \" Program name and manual section number
.Sh NAME
.Nm synctex
-.Nd command line client tool to support the Synchronize TeXnology available in recent TeX engines.
+.Nd command line client tool to support the Synchronize TeXnology available in most TeX engines.
.Sh SYNOPSIS
.Nm
\fIcommand\fP [\fIoptions\fP] [\fIargs\fP]
@@ -14,18 +14,20 @@
.Pp
Run `synctex help' to access the built-in tool documentation.
.Sh TEX ENGINE OPTION -synctex=NUMBER
+.Bl -bullet
.It
-.Li If NUMBER=0 or no option is given, no synctex file is created.
+If NUMBER=0 or no option is given, no synctex file is created.
.It
-.Li If NUMBER<0, synctex files are text files.
+If NUMBER<0, synctex files are text files.
.It
-.Li If NUMBER>0, synctex files are compressed with gz.
+If NUMBER>0, synctex files are compressed with gz.
.It
-.Li If NUMBER&2, no .gz extension is used.
+If NUMBER&2, no .gz extension is used.
.It
-.Li If NUMBER&4, activate form support, useful for pdftex.
+If NUMBER&4, activate form support, useful for pdftex.
.It
-.Li If NUMBER&8, better file compression.
+If NUMBER&8, better file compression.
+.El
.Pp
Use for example `pdftex -synctex=15 foo.tex' to activate all the options.
.Pp
Binary files old/texmf-dist/doc/man/man1/synctex.man1.pdf and new/texmf-dist/doc/man/man1/synctex.man1.pdf differ
Binary files old/texmf-dist/doc/man/man5/synctex.man5.pdf and new/texmf-dist/doc/man/man5/synctex.man5.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/synctex.doc.tlpobj new/tlpkg/tlpobj/synctex.doc.tlpobj
--- old/tlpkg/tlpobj/synctex.doc.tlpobj 2018-03-31 02:26:52.000000000 +0200
+++ new/tlpkg/tlpobj/synctex.doc.tlpobj 2019-03-27 02:26:39.000000000 +0100
@@ -1,6 +1,6 @@
name synctex.doc
category TLCore
-revision 47198
+revision 50602
shortdesc doc files of synctex
docfiles size=17
texmf-dist/doc/man/man1/synctex.1
++++++ synproof.doc.tar.xz ++++++
++++++ synproof.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/synproof.tlpobj new/tlpkg/tlpobj/synproof.tlpobj
--- old/tlpkg/tlpobj/synproof.tlpobj 2018-03-03 20:17:47.000000000 +0100
+++ new/tlpkg/tlpobj/synproof.tlpobj 2019-02-28 04:06:36.000000000 +0100
@@ -11,7 +11,7 @@
runfiles size=2
RELOC/tex/latex/synproof/synproof.sty
catalogue-ctan /macros/latex/contrib/synproof
-catalogue-date 2016-06-24 19:18:15 +0200
+catalogue-date 2018-09-15 14:15:12 +0200
catalogue-license lppl
catalogue-topics logic linguistic
catalogue-version 1.0
++++++ syntax.doc.tar.xz ++++++
++++++ syntax.tar.xz ++++++
++++++ syntrace.doc.tar.xz ++++++
++++++ syntrace.tar.xz ++++++
++++++ synttree.doc.tar.xz ++++++
++++++ synttree.tar.xz ++++++
++++++ systeme.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/generic/systeme/README new/doc/generic/systeme/README
--- old/doc/generic/systeme/README 2018-01-01 23:05:01.000000000 +0100
+++ new/doc/generic/systeme/README 2019-01-14 00:30:37.000000000 +0100
@@ -1,9 +1,9 @@
L'extension
systeme
- v0.31
+ v0.32
- 1er janvier 2018
+ 13 janvier 2019
Author : Christian Tellechea
Email : unbonpetit@netc.fr (CT)
@@ -24,4 +24,4 @@
This package allows you to enter systems of linear equations or
inequalities in a intuitive way, and produces output where the terms
-and signs are aligned vertically.
\ No newline at end of file
+and signs are aligned vertically.
Binary files old/doc/generic/systeme/systeme_fr.pdf and new/doc/generic/systeme/systeme_fr.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/generic/systeme/systeme_fr.tex new/doc/generic/systeme/systeme_fr.tex
--- old/doc/generic/systeme/systeme_fr.tex 2018-01-01 23:05:01.000000000 +0100
+++ new/doc/generic/systeme/systeme_fr.tex 2019-01-14 00:30:37.000000000 +0100
@@ -1,22 +1,14 @@
% Documentation de systeme
-\documentclass[10pt]{article}
+\documentclass[10pt,french]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
-\usepackage[a4paper,margin=2.75cm,head=12pt,headsep=7mm,footskip=7mm]{geometry}
+\usepackage[a4paper,margin=3cm,head=12pt,headsep=7mm,footskip=7mm]{geometry}
\usepackage[bottom]{footmisc}
-\usepackage{libertine}
+\usepackage{libertine,amsmath,fancybox,enumitem,systeme,xcolor,amssymb,array,longtable,fancyhdr}
\renewcommand*\oldstylenums[1]{{\fontfamily{fxlj}\selectfont #1}}
\usepackage[scaled=0.8]{luximono}
\usepackage[libertine]{newtxmath}%
-\usepackage{amsmath}
-\usepackage{fancybox}
-\usepackage{enumitem}
-\usepackage{systeme}
-\usepackage{xcolor}
-\usepackage{amssymb}
-\usepackage{array,longtable}
\usepackage[protrusion=true,expansion,final,babel=true]{microtype}
-\usepackage{fancyhdr}
\fancypagestyle{plain}{%
\fancyhead[L]{\small L'extension \bfseries systeme}
\fancyhead[C]{}
@@ -93,12 +85,13 @@
\def\longfrdate{\expandafter\longfrdate@i\SYSdate\@nil}
\makeatother
-\usepackage[frenchb]{babel}
+\usepackage{babel}
\frenchbsetup{StandardLists=true}
\usepackage[plainpages=false,pdfpagelabels,bookmarks=true,bookmarksopen=true,colorlinks=true,hyperfootnotes=false,filecolor=black,linkcolor=blue,urlcolor=magenta,pdfauthor={Christian TELLECHEA},pdftitle={systeme},pdfsubject={Saisie intuitive de systèmes d'équations},pdfkeywords={systeme},pdfcreator={LaTeX}]{hyperref}
\setitemize{leftmargin=3em,topsep=0pt,parsep=0pt,itemsep=0pt,label=--}
+
\begin{document}
\begin{titlepage}
\null\par\vspace{1.5cm}
@@ -156,7 +149,7 @@
-a+2b+c=-5}/
La virgule, qui est le séparateur par défaut, peut être changée en tout autre caractère. Il suffit de placer ce nouveau caractère dans l'argument de la commande \verb-\syseqsep-.
-La commande \verb-\systeme- fonctionnera en mode math ou non et donnera un résultat correct si toutes les inconnues se trouvent dans le membre de gauche, le membre de droite étant celui des constantes. Les équations doivent être \emph{développées}, c'est-à-dire que chaque terme est séparé de son voisin par un "+" ou un "-". De plus, les inconnues doivent être des lettres minuscules non accentuées, c'est-à-dire tout caractère de \og\verb-a-\fg{} à \og\verb-z-\fg.
+La commande \verb-\systeme- fonctionnera en mode math ou non et donnera un résultat correct si toutes les inconnues se trouvent dans le membre de gauche, le membre de droite étant celui des constantes. Les équations doivent être \emph{développées}, c'est-à-dire que chaque terme est séparé de son voisin par un "+" ou un "-". De plus, les inconnues doivent être des lettres minuscules non accentuées, c'est-à-dire tout caractère de \og\verb-a-\fg{} à \og\verb-z-\fg. Les espaces sont ignorés dans l'argument de la macro \verb|\systeme|.
L'alignement construit sera un tableau précédé d'une accolade et aura les spécificités suivantes :
\begin{itemize}
@@ -225,7 +218,7 @@
y_1-x_1+3y_2=4,
2x_1-y_2-y_1=-1}/
-Lorque les inconnues sont indicées, elles sont classés alphabétiquement puis dans l'ordre croissant de leur indice.
+Lorsque les inconnues sont indicées, elles sont classés alphabétiquement puis dans l'ordre croissant de leur indice.
Le tri alphabétique est une facilité mais il peut s'avérer gênant surtout dans les systèmes $4\times4$ où, bien souvent, la 4\ieme{} inconnue est \og$t$\fg{} :
\exemple{Tri alphabétique indésirable}/\systeme{x+2y-3z+t=0,
@@ -252,8 +245,8 @@
A-\alpha+3\beta=4,
2A+\alpha-\beta=0,
-A+3\alpha-2\beta=5}/
- \item seules les inconnues figurant dans l'argument optionnel sont reconnues dans les équations. Dans l'exemple ci dessous, la lettre $m$ n'est pas reconnue comme inconnue :
- \exemple{Iconnues forcées}/\systeme[xy]{mx-y=3,
+ \item seules les inconnues figurant dans l'argument optionnel sont reconnues dans les équations. Dans l'exemple ci dessous, la lettre $m$ n'est pas comprise comme étant une inconnue :
+ \exemple{Inconnues forcées}/\systeme[xy]{mx-y=3,
x-m^2y=-1}/
\end{enumerate}
@@ -305,7 +298,7 @@
\systeme{x+2y-z=0,2x-y+z=1,x-3y+2z=1}/
\subsection{Colonne supplémentaire}
-Lorsqu'une équation comporte le signe \og\verb-@-\fg{}, tout ce qui se trouve à droite de ce caractère sera mis dans une colonne supplementaire au fer à gauche qui se trouvera à droite du système, en dernière position.
+Lorsqu'une équation comporte le signe \og\verb-@-\fg{}, tout ce qui se trouve à droite de ce caractère sera mis dans une colonne supplémentaire au fer à gauche qui se trouvera à droite du système, en dernière position.
\exemple{Colonne supplémentaire}/\systeme{x+y=125@L_1,
x-y=12@L_2}/
@@ -351,10 +344,14 @@
\systeme{a+b=4,2a-b=5}
\quad
\systeme{x-3y=0,2x+y=1}/
+
On peut effacer (et donc annuler) le schéma de numérotation automatique en entrant un argument vide : \verb-\sysautonum{}-.
-Il existe un compteur global\footnote{Il s'agit d'un compteur \TeX{} portant le doux nom de {\ttfamily\string\SYSeqnum}, accessible via les commandes \TeX{} habituelles, c'est-à-dire qu'on peut le faire précéder de \texttt{\string\number}, \texttt{\string\romannumeral} pour l'afficher.} d'équations accessible de la même façon que le compteur local mais avec \og\verb-**-\fg{}. Voici un exemple de numérotation persistante, où l'on voit que \number\SYSeqnum\ équations ont été écrites jusqu'ici :
-\exemple{Numérotation globale}/\sysautonum*{\hbox{eq (**)}}
+Il existe un compteur global\footnote{Il s'agit d'un compteur \TeX{} portant le doux nom de {\ttfamily\string\SYSeqnum}, accessible via les commandes \TeX{} habituelles, c'est-à-dire qu'on peut le faire précéder de \texttt{\string\number}, \texttt{\string\romannumeral} pour l'afficher.} d'équations accessible de la même façon que le compteur local mais avec \og\verb-**-\fg{}. Voici un exemple de numérotation persistante :
+\exemple{Numérotation globale}/On met en évidence que \number\SYSeqnum{}
+équations ont été écrites jusqu'ici~:
+
+\sysautonum*{\hbox{eq (**)}}
\systeme{x-y+z=3,
2x+y+z=1,
x-z=8}
@@ -362,10 +359,20 @@
\systeme{u+w=9,
v+2w=0,
u-v=1}/
+
+Il est enfin possible d'utiliser la colonne supplémentaire pour retenir le numéro d'une équation et le rappeler plus tard :
+\exemple{Numérotation globale}/\syscodeextracol{\kern1em}{}
+\systeme{x-y+z=3@\gdef\foo{**}(\textbf{**}),
+ 2x+y+z=1@\gdef\bar{**}(\textbf{**}),
+ x-z=8@\gdef\baz{**}(\textbf{**})}
+
+L'équation \no\foo{} est la première du système,
+\bar{} et \baz{} sont les deux suivantes./
+
On peut à tout moment réinitialiser le compteur global d'équations à l'aide de \og\verb-\sysreseteqnum-\fg.
\subsection{Substitution post traitement}
-Juste avant l'affichage du système, il est encore possible de substituter dans le code du système tout caractère par un autre\footnote{Plus exactement, toute \emph{suite de tokens} par une autre.}. Pour cela, la commande \verb-\syssubstitute- agit pour tous les systèmes à venir et son argument est fait de caractères allant par paires; le premier étant le caractère à substituer et le second étant ce par quoi il le sera. Les subtitutions définies par \verb-\syssubstitute- viennent \emph{s'ajouter} à celles déjà définies.
+Juste avant l'affichage du système, il est encore possible de substituer dans le code du système tout caractère par un autre\footnote{Plus exactement, toute \emph{suite de tokens} par une autre.}. Pour cela, la commande \verb-\syssubstitute- agit pour tous les systèmes à venir et son argument est fait de caractères allant par paires; le premier étant le caractère à substituer et le second étant ce par quoi il le sera. Les substitutions définies par \verb-\syssubstitute- viennent \emph{s'ajouter} à celles déjà définies.
Dans cet exemple, on entre des coefficients décimaux où le point est le séparateur décimal. On va demander à ce que tous les \og\verb-.-\fg{} soient remplacés par des \og\verb-,-\fg{}. On remplacera aussi l'inconnue $a_1$ par $x_n$, et $a_2$ par $x_{n+1}$, ces 3 substitutions étant faites avec \verb-\syssubstitute{.,{a_1}{x_n}{a_2}{x_{n+1}}}- :
\exemple{Substitution post traitement}/\syssubstitute{.,{a_1}{x_n}{a_2}{x_{n+1}}}
@@ -375,7 +382,6 @@
\section{Liste des commandes}
Voici la liste de toutes les commandes définies par cette extension :
-
\begin{longtable}{>\footnotesize l>\footnotesize p{9cm}}\\\hline
\hfill\normalsize Commandes\hfill\null &\hfill\normalsize Description\hfill\null\\\hline
\verb-\systeme{}-&compose un système d'équations ou d'inéquations\\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/systeme.doc.tlpobj new/tlpkg/tlpobj/systeme.doc.tlpobj
--- old/tlpkg/tlpobj/systeme.doc.tlpobj 2018-03-03 20:17:47.000000000 +0100
+++ new/tlpkg/tlpobj/systeme.doc.tlpobj 2019-02-28 04:06:36.000000000 +0100
@@ -1,9 +1,9 @@
name systeme.doc
category Package
-revision 46184
+revision 49690
shortdesc doc files of systeme
relocated 1
-docfiles size=120
+docfiles size=118
RELOC/doc/generic/systeme/README
RELOC/doc/generic/systeme/systeme_fr.pdf
RELOC/doc/generic/systeme/systeme_fr.tex
++++++ systeme.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/generic/systeme/systeme.sty new/tex/generic/systeme/systeme.sty
--- old/tex/generic/systeme/systeme.sty 2018-01-01 23:05:01.000000000 +0100
+++ new/tex/generic/systeme/systeme.sty 2019-01-14 00:30:37.000000000 +0100
@@ -1,3 +1,4 @@
+\def\SYSstyfile{0}
\RequirePackage{xstring}
\input systeme.tex
\ProvidesPackage\SYSname[\SYSdate\space v\SYSver\space Mise en forme de systemes d'equations (CT)]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/generic/systeme/systeme.tex new/tex/generic/systeme/systeme.tex
--- old/tex/generic/systeme/systeme.tex 2018-01-01 23:05:01.000000000 +0100
+++ new/tex/generic/systeme/systeme.tex 2019-01-14 00:30:37.000000000 +0100
@@ -1,657 +1,651 @@
% !TeX encoding = ISO-8859-1
% Ce fichier contient le code de l'extension "systeme"
-\expandafter\edef\csname SYS@savedatcatcode\endcsname{\number\catcode`\@}
-\catcode`\@11
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
\def\SYSname {systeme} %
-\def\SYSver {0.31} %
+\def\SYSver {0.32} %
% %
-\def\SYSdate {2018/01/01} %
+\def\SYSdate {2019/01/13} %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% --------------------------------------------------------------------
-% Author : Christian Tellechea
-% Status : Maintained
-% Email : unbonpetit@netc.fr
-% Package URL: https://www.ctan.org/pkg/systeme
-% Bug tracker: https://framagit.org/unbonpetit/systeme/issues
-% Repository : https://framagit.org/unbonpetit/systeme/tree/master
-% Copyright : Christian Tellechea 2017
-% Licence : Released under the LaTeX Project Public License v1.3c
-% or later, see http://www.latex-project.org/lppl.txt
-% Files : 1) systeme.tex
-% 2) systeme.sty
-% 3) systeme-fr.tex
-% 4) systeme-fr.pdf
-% 5) README
-% --------------------------------------------------------------------
-% --------------------------------------------------------------------
-
-\def\SYS@newmacro#1{%
- \ifdefined#1%
- \errmessage{Package systeme Error: la macro \string#1\space existe deja. Contacter l'auteur svp.}%
- \fi
- \def#1%
-}
-\SYS@newmacro\SYSlongdate {1\ier{} janvier 218}
+% %
+% Author : Christian Tellechea %
+% Status : Maintained %
+% Email : unbonpetit@netc.fr %
+% Package URL: https://www.ctan.org/pkg/systeme %
+% Bug tracker: https://framagit.org/unbonpetit/systeme/issues %
+% Repository : https://framagit.org/unbonpetit/systeme/tree/master %
+% Copyright : Christian Tellechea 2011-2019 %
+% Licence : Released under the LaTeX Project Public License v1.3c %
+% or later, see http://www.latex-project.org/lppl.txt %
+% Files : 1) systeme.tex %
+% 2) systeme.sty %
+% 3) systeme-fr.tex %
+% 4) systeme-fr.pdf %
+% 5) README %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\unless\ifdefined\SYSstyfile
+ \immediate\write-1 {Package: \SYSname\space\SYSdate\space\space v\SYSver\space\space Saisie naturelle de systemes d'equations}%
+\fi
-\newtoks\SYS@systemecode
-\newtoks\SYS@systempreamble
+\expandafter\edef\csname SYS_restorecatcode\endcsname{\catcode\number`\_=\number\catcode`\_\relax}
+\catcode`\_11
+
+\begingroup
+ \catcode`\_8
+ \gdef\SYSunder{_}
+\endgroup
+
+\unless\ifdefined\xstringversion
+ \def\SYS_nextaction{\input xstring.tex\relax}%
+ \expandafter\SYS_nextaction
+\fi
-\newif\ifSYS@firstterm
-\newif\ifSYS@sortvariable
-\newif\ifSYS@star
-\newif\ifSYS@extracol
-\newif\ifSYS@autonum
-\newif\ifSYS@followautonum
-\newif\ifSYS@constterm
+\newtoks\SYS_systemecode
+\newtoks\SYS_systempreamble
+
+\newif\ifSYS_firstterm
+\newif\ifSYS_sortvariable
+\newif\ifSYS_star
+\newif\ifSYS_extracol
+\newif\ifSYS_autonum
+\newif\ifSYS_followautonum
+\newif\ifSYS_constterm
\newcount\SYSeqnum
-\expandafter\ifx\csname @latexerr\endcsname\relax% on n'utilise pas LaTeX ?
- \ifdefined\xstringversion\else\def\SYS@nextaction{\input xstring.tex}\expandafter\SYS@nextaction\fi
- \immediate\write\m@ne{Package: \SYSname\space\SYSdate\space\space v\SYSver\space\space Saisie naturelle de systemes d'equations}%
- \newskip\normalbaselineskip \normalbaselineskip=12pt
- \long\def\@firstoftwo#1#2{#1}
- \long\def\@secondoftwo#1#2{#2}
- \long\def\@firstofone#1{#1}
- \long\def\@gobble#1{}
- \long\def\@ifnextchar#1#2#3{%
- \let\reserved@d=#1%
- \def\reserved@a{#2}%
- \def\reserved@b{#3}%
- \futurelet\@let@arg\@ifnch}
- \def\@ifnch{%
- \ifx\@let@arg\@sptoken
- \let\reserved@c\@xifnch
- \else
- \ifx\@let@arg\reserved@d
- \let\reserved@c\reserved@a
- \else
- \let\reserved@c\reserved@b
- \fi
- \fi
- \reserved@c}
- \def\:{\let\@sptoken= } \:
- \def\:{\@xifnch} \expandafter\def\: {\futurelet\@let@arg\@ifnch}
- \long\def\@testopt#1#2{\@ifnextchar[{#1}{#1[{#2}]}}
- \def\@ifstar#1{\@ifnextchar *{\@firstoftwo{#1}}}
- \def\@empty{}
- \def\space{ }
+\long\def\SYS_execarg#1{#1}
+\long\def\SYS_gobtwoargs#1#2{}
+\def\SYS_addtotok#1#2{#1\expandafter{\the#1#2}}
+\def\SYS_expaddtotok#1#2{\xs_exparg{\SYS_addtotok#1}{#2}}
+\def\SYS_addtotab{\SYS_addtotok\SYS_systemecode}
+\def\SYS_cslet#1{\expandafter\let\csname#1\endcsname}
+\def\SYS_letcs#1#2{\expandafter\let\expandafter#1\csname#2\endcsname}
+\def\SYS_firstinlist#1,#2\_nil{#1}
+\def\SYS_removefirstinlist#1,{}
+\def\SYS_ifinstr#1#2{%
+ \def\SYS_ifinstr_i##1#2##2\_nil{\xs_ifempty{##2}\xs_execsecond\xs_execfirst}%
+ \SYS_ifinstr_i#1\__nil#2\_nil
+}
+
+\ifdefined\usepackage\else% on n'utilise pas LaTeX ?
+ \newskip\normalbaselineskip
+ \normalbaselineskip=12pt
\fi
-% d\'efinit ce qu'est le s\'eparateur des \'equations par d\'efaut
-\SYS@newmacro\syseqsep{\def\SYS@defaulteqsep}
+% d�finit ce qu'est le s�parateur des �quations par d�faut
+\def\syseqsep{\def\SYS_defaulteqsep}
\syseqsep{,}
-% d\'efinit le coefficient pour l'espacement interligne
-\SYS@newmacro\syslineskipcoeff{\def\SYS@lineskipcoeff}
+% d�finit le coefficient pour l'espacement interligne
+\def\syslineskipcoeff{\def\SYS_lineskipcoeff}
\syslineskipcoeff{1.25}
-% d\'efinit le signe qui marquera une colonne suppl\'ementaire \`a droite du tableau
-\SYS@newmacro\sysextracolsign{\def\SYS@extracolsign}
-\expandafter\sysextracolsign\expandafter{\string @}% on d\'efinit l'arobas avec le bon catcode.
+% d�finit le signe qui marquera une colonne suppl�mentaire � droite du tableau
+\def\sysextracolsign{\def\SYS_extracolsign}
+\xs_exparg\sysextracolsign{\string @}% on d�finit l'arobas avec le bon catcode.
-% d\'efinit ce qui sera ins\'er\'e au d\'ebut et \`a la fin de la colonne suppl\'ementaire
-\SYS@newmacro\syscodeextracol#1#2{\def\SYS@extracolstart{#1}\def\SYS@extracolend{#2}}
+% d�finit ce qui sera ins�r� au d�but et � la fin de la colonne suppl�mentaire
+\def\syscodeextracol#1#2{\def\SYS_extracolstart{#1}\def\SYS_extracolend{#2}}
\syscodeextracol{\kern1.5em$}{$}
-\SYS@newmacro\sysreseteqnum{\global\SYSeqnum\z@}
-
-\SYS@newmacro\SYS@cslet#1{\expandafter\let\csname#1\endcsname}
-
-% d\'efinit l'autonum\'erotation
-\SYS@newmacro\sysautonum{\@ifstar{\SYS@followautonumtrue\SYS@autonum}{\SYS@followautonumfalse\SYS@autonum}}
+\def\sysreseteqnum{\global\SYSeqnum0 }
-\SYS@newmacro\SYS@autonum#1{%
- \ifx\@empty#1\@empty
- \SYS@extracolfalse
- \SYS@autonumfalse
- \else
- \SYS@extracoltrue
- \SYS@autonumtrue
- \def\SYS@autonumarg{#1}%
- \fi
+% d�finit l'autonum�rotation
+\def\sysautonum{%
+ \xs_ifstar
+ {\SYS_followautonumtrue\SYS_autonum}
+ {\SYS_followautonumfalse\SYS_autonum}%
+}
+
+\def\SYS_autonum#1{%
+ \xs_ifempty{#1}
+ {\SYS_extracolfalse
+ \SYS_autonumfalse
+ }
+ {\SYS_extracoltrue
+ \SYS_autonumtrue
+ \def\SYS_autonumarg{#1}%
+ }%
}
-% dimension qui sera ajout\'ee \`a la hauteur et \`a la profondeur du strutup ou strutdown
-% ins\'er\'e \`a la premi\`ere et la derni\`ere \'equation
-\SYS@newmacro\SYS@extrastrutdim{1.5pt}
+% dimension qui sera ajout�e � la hauteur et � la profondeur du strutup ou strutdown
+% ins�r� � la premi�re et la derni�re �quation
+\def\SYS_extrastrutdim{1.5pt}
-% liste des signes devant \^etre compris comme signe d'\'egalit\'e s\'eparant les 2 membres de l'\'equation
-\SYS@newmacro\SYS@equalsignlist{<=,>=,=,<,>,\leq,\geq,\leqslant,\geqslant}
+% liste des signes devant �tre compris comme signe d'�galit� s�parant les 2 membres de l'�quation
+\def\SYS_equalsignlist{<=,>=,=,<,>,\leq,\geq,\leqslant,\geqslant}
-\SYS@newmacro\sysaddeqsign#1{%
+\def\sysaddeqsign#1{%
\saveexpandmode\expandarg
- \IfSubStr{\expandafter,\SYS@equalsignlist,}{,#1,}
- \relax
- {\expandafter\def\expandafter\SYS@equalsignlist\expandafter{\SYS@equalsignlist,#1}}%
+ \IfSubStr{\expandafter,\SYS_equalsignlist,}{,#1,}
+ {}
+ {\xs_exparg{\def\SYS_equalsignlist}{\SYS_equalsignlist,#1}}%
\restoreexpandmode
}
-% enl\`eve l'item #2 de la sc #1 qui contient une liste
-\SYS@newmacro\SYS@removeiteminlist#1#2{%
+% enl�ve l'item #2 de la sc #1 qui contient une liste
+\def\SYS_removeiteminlist#1#2{%
\saveexpandmode\expandarg
\IfSubStr{\expandafter,#1,}{,#2,}
- {\StrSubstitute{\expandafter\@nil\expandafter,#1,\@nil}{,#2,},[#1]%
- \StrDel#1{\noexpand\@nil,}[#1]%
- \StrDel#1{,\@nil}[#1]%
+ {\StrSubstitute{\expandafter\_nil\expandafter,#1,\_nil}{,#2,},[#1]%
+ \StrDel#1{\noexpand\_nil,}[#1]%
+ \StrDel#1{,\_nil}[#1]%
}%
- \relax
+ {}%
\restoreexpandmode
}
-\SYS@newmacro\sysremoveeqsign#1{%
- \SYS@removeiteminlist\SYS@equalsignlist{#1}%
- \SYS@removeiteminlist\SYS@equivsignlist{#1}%
+\def\sysremoveeqsign#1{%
+ \SYS_removeiteminlist\SYS_equalsignlist{#1}%
+ \SYS_removeiteminlist\SYS_equivsignlist{#1}%
}
-% d\'efinit le signe d'\'egalit\'e #1 comme devant \^etre remplac\'e par #2 lors de l'affichage
-\SYS@newmacro\sysequivsign#1#2{%
- \IfSubStr\SYS@equivsignlist{\noexpand#1,}\relax{\expandafter\def\expandafter\SYS@equivsignlist\expandafter{\SYS@equivsignlist#1,}}%
- \expandafter\def\csname SYS@equivsign@\string#1\endcsname{#2}%
+% d�finit le signe d'�galit� #1 comme devant �tre remplac� par #2 lors de l'affichage
+\def\sysequivsign#1#2{%
+ \IfSubStr\SYS_equivsignlist{\noexpand#1,}
+ {}
+ {\xs_exparg{\def\SYS_equivsignlist}{\SYS_equivsignlist#1,}}%
+ \expandafter\def\csname SYS_equivsign_\string#1\endcsname{#2}%
}
-\SYS@newmacro\SYS@equivsignlist{}
+\def\SYS_equivsignlist{}
\sysequivsign{<=}\leq
\sysequivsign{>=}\geq
-\SYS@newmacro\SYS@firstiteminlist#1,#2\@nil{#1}
-
-\SYS@newmacro\SYS@removefirstiteminlist#1,{}
-
-% #1 est l'\'equation courante. La macro la s\'epare en 2 membres -> \SYS@leftmember et \SYS@rightmember
-% le signe de s\'eparation entre les 2 membres se trouve dans \SYS@currenteqsign
-\SYS@newmacro\SYS@splitinmembers#1{%
- \def\SYS@leftmember{#1}\let\SYS@currenteqsign\@empty\let\SYS@rightmember\@empty
- \expandafter\SYS@splitinmembers@i\expandafter{\SYS@equalsignlist,}% parcourt \SYS@equalsignlist pour s\'eparer en 2 membres
- \IfSubStr{\expandafter,\SYS@equivsignlist}{\expandafter,\SYS@currenteqsign,}% si le signe est dans la liste des substitutions
- {\expandafter\let\expandafter\SYS@currenteqsign\csname SYS@equivsign@\detokenize\expandafter{\SYS@currenteqsign}\endcsname}% le remplacer
- \relax
-}
-
-% #1 est la liste des signes d'\'egalit\'e
-\SYS@newmacro\SYS@splitinmembers@i#1{%
- \ifx\@empty#1\@empty
- \else
- \IfSubStr\SYS@leftmember{\SYS@firstiteminlist#1\@nil}% si l'\'equation contient un des signes
- {\expandafter\def\expandafter\SYS@currenteqsign\expandafter{\SYS@firstiteminlist#1\@nil}% sauvagarde le signe
- \StrBehind\SYS@leftmember\SYS@currenteqsign[\SYS@rightmember]% proc\`ede \`a la s\'eparation
- \StrBefore\SYS@leftmember\SYS@currenteqsign[\SYS@leftmember]% en deux membres
- \let\SYS@nextaction\relax
+% #1 est l'�quation courante. La macro la s�pare en 2 membres -> \SYS_leftmember et \SYS_rightmember
+% le signe de s�paration entre les 2 membres se trouve dans \SYS_currenteqsign
+\def\SYS_splitinmembers#1{%
+ \def\SYS_leftmember{#1}%
+ \let\SYS_currenteqsign\empty
+ \let\SYS_rightmember\empty
+ \xs_exparg\SYS_splitinmembers_i{\SYS_equalsignlist,}% parcourt \SYS_equalsignlist pour s�parer en 2 membres
+ \IfSubStr{\expandafter,\SYS_equivsignlist}{\expandafter,\SYS_currenteqsign,}% si le signe est dans la liste des substitutions
+ {\SYS_letcs\SYS_currenteqsign{SYS_equivsign_\detokenize\expandafter{\SYS_currenteqsign}}}% le remplacer
+ {}%
+}
+
+% #1 est la liste des signes d'�galit�
+\def\SYS_splitinmembers_i#1{%
+ \xs_ifempty{#1}
+ {}
+ {\IfSubStr\SYS_leftmember{\SYS_firstinlist#1\_nil}% si l'�quation contient un des signes
+ {\xs_exparg{\def\SYS_currenteqsign}{\SYS_firstinlist#1\_nil}% sauvagarde le signe
+ \StrBehind\SYS_leftmember\SYS_currenteqsign[\SYS_rightmember]% proc�de � la s�paration
+ \StrBefore\SYS_leftmember\SYS_currenteqsign[\SYS_leftmember]% en deux membres
}%
- {\def\SYS@nextaction{\expandafter\SYS@splitinmembers@i\expandafter{\SYS@removefirstiteminlist#1}}}% sinon, recommencer en enlevant le 1er signe
- \expandafter\SYS@nextaction
- \fi
+ {\xs_exparg\SYS_splitinmembers_i{\SYS_removefirstinlist#1}% sinon, recommencer en enlevant le 1er signe
+ }%
+ }%
}
-\SYS@newmacro\SYS@ifcontains#1#2{%
- \def\SYS@ifcontains@i##1#2##2\@nil{\ifx\@empty##2\@empty\expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi}%
- \SYS@ifcontains@i#1\@@nil#2\@nil
-}
-
-% analyse une \'equation et la d\'ecoupe en termes et signes
-\SYS@newmacro\SYS@spliteqinterms#1{%
- \IfSubStr{\noexpand#1}\SYS@extracolsign% y a t-il un signe de colonne suppl\'ementaire ?
- {\StrBefore{\noexpand#1}\SYS@extracolsign[\SYS@leftmember]%
- \StrBehind{\noexpand#1}\SYS@extracolsign[\SYS@rightmember]%
- \SYS@cslet{SYS@extracol@\SYS@eqnumber}\SYS@rightmember
- \SYS@extracoltrue
- }%
- {\def\SYS@leftmember{#1}}%
- \expandafter\SYS@splitinmembers\expandafter{\SYS@leftmember}% trouver les membres de gauche et droite et le signe qui les s\'epare
- \unless\ifx\SYS@currenteqsign\@empty
- \SYS@cslet{SYS@eqsign@\SYS@eqnumber}\SYS@currenteqsign% stocker ce signe s'il existe
- \fi
- \IfBeginWith\SYS@leftmember\space{\StrGobbleLeft\SYS@leftmember\@ne[\SYS@leftmember]}\relax% pas d'espace pour commencer le membre de gauche
- \IfBeginWith\SYS@leftmember+% amputer le membre de gauche du premier signe et le stocker temporairement s'il existe et sinon...
- {\StrSplit\SYS@leftmember\@ne\SYS@currentsign\SYS@leftmember}%
- {\IfBeginWith\SYS@leftmember-%
- {\StrSplit\SYS@leftmember\@ne\SYS@currentsign\SYS@leftmember}%
- {\def\SYS@currentsign{+}}}% ce signe est "+"
- \SYS@spliteqinterms@i\@ne
- \SYS@cslet{SYS@right@\SYS@eqnumber}\SYS@rightmember
-}
-
-\SYS@newmacro\SYS@spliteqinterms@i#1{%
- \StrPosition\SYS@leftmember+[\SYS@posplus]%
- \StrPosition\SYS@leftmember-[\SYS@posminus]%
- \ifnum\numexpr\SYS@posplus+\SYS@posminus=\z@ % il n'y a ni "+" ni "-"
- \let\SYS@currentterm\SYS@leftmember% prendre tout ce qui reste
- \SYS@assignterm% et assigner ce dernier terme avec le dernier signe trouv\'e
- \else
- \edef\SYS@nextsign{\ifnum\SYS@posplus=\z@-\else\ifnum\SYS@posminus=\z@+\else\ifnum\SYS@posplus<\SYS@posminus+\else-\fi\fi\fi}% d\'ecider de ce qu'est le prochain signe
- \StrBefore\SYS@leftmember\SYS@nextsign[\SYS@currentterm]% prendre ce qu'il y a avant
- \StrBehind\SYS@leftmember\SYS@nextsign[\SYS@leftmember]% et stocker ce qu'il y a ensuite pour apr\`es
- \SYS@assignterm% assigner ce qu'il y a avant avec le dernier signe trouv\'e
- \let\SYS@currentsign\SYS@nextsign% on continue, le prochain signe devient le signe courant
- \expandafter\SYS@spliteqinterms@i\expandafter{\number\numexpr#1+1\expandafter}%
- \fi
+% analyse une �quation et la d�coupe en termes et signes
+\def\SYS_spliteqinterms#1{%
+ \IfSubStr{\noexpand#1}\SYS_extracolsign% y a t-il un signe de colonne suppl�mentaire ?
+ {\StrBefore{\noexpand#1}\SYS_extracolsign[\SYS_leftmember]%
+ \StrBehind{\noexpand#1}\SYS_extracolsign[\SYS_rightmember]%
+ \SYS_cslet{SYS_extracol_\SYS_eqnumber}\SYS_rightmember
+ \SYS_extracoltrue
+ }%
+ {\def\SYS_leftmember{#1}%
+ }%
+ \xs_exparg\SYS_splitinmembers{\SYS_leftmember}% trouver les membres de gauche et droite et le signe qui les s�pare
+ \xs_ifx{\SYS_currenteqsign\empty}
+ {}%
+ {\SYS_cslet{SYS_eqsign_\SYS_eqnumber}\SYS_currenteqsign}% stocker ce signe s'il existe
+ \IfBeginWith\SYS_leftmember\space
+ {\StrGobbleLeft\SYS_leftmember1[\SYS_leftmember]}
+ {}% pas d'espace pour commencer le membre de gauche
+ \IfBeginWith\SYS_leftmember+% amputer le membre de gauche du premier signe et le stocker temporairement s'il existe et sinon...
+ {\StrSplit\SYS_leftmember1\SYS_currentsign\SYS_leftmember
+ }%
+ {\IfBeginWith\SYS_leftmember-%
+ {\StrSplit\SYS_leftmember1\SYS_currentsign\SYS_leftmember}%
+ {\def\SYS_currentsign{+}}% ce signe est "+"
+ }%
+ \SYS_spliteqinterms_i1%
+ \SYS_cslet{SYS_right_\SYS_eqnumber}\SYS_rightmember
+}
+
+\def\SYS_spliteqinterms_i#1{%
+ \StrPosition\SYS_leftmember+[\SYS_posplus]%
+ \StrPosition\SYS_leftmember-[\SYS_posminus]%
+ \xs_ifnum{\numexpr\SYS_posplus+\SYS_posminus=0 }% il n'y a ni "+" ni "-"
+ {\let\SYS_currentterm\SYS_leftmember% prendre tout ce qui reste
+ \SYS_assignterm% et assigner ce dernier terme avec le dernier signe trouv�
+ }
+ {\edef\SYS_nextsign{\ifnum\SYS_posplus=0 -\else\ifnum\SYS_posminus=0 +\else\ifnum\SYS_posplus<\SYS_posminus+\else-\fi\fi\fi}% d�cider de ce qu'est le prochain signe
+ \StrBefore\SYS_leftmember\SYS_nextsign[\SYS_currentterm]% prendre ce qu'il y a avant
+ \StrBehind\SYS_leftmember\SYS_nextsign[\SYS_leftmember]% et stocker ce qu'il y a ensuite pour apr�s
+ \SYS_assignterm% assigner ce qu'il y a avant avec le dernier signe trouv�
+ \let\SYS_currentsign\SYS_nextsign% on continue, le prochain signe devient le signe courant
+ \xs_exparg\SYS_spliteqinterms_i{\number\numexpr#1+1}%
+ }%
}
-\SYS@newmacro\SYS@assignterm{%
- \expandafter\SYS@findletter\expandafter{\SYS@currentterm}% trouver le nom de la variable
- \ifx\SYS@letterfound\@empty
- \SYS@consttermtrue
- \ifcsname SYS@term@const@\SYS@eqnumber\endcsname% si terme constant d\'ej\`a rencontr\'e, l'ajouter \`a celui qui existe
- \SYS@expaddtocs\SYS@currentsign\SYS@currentterm
- \expandafter\SYS@expaddtocs\csname SYS@term@const@\SYS@eqnumber\endcsname{\SYS@currentsign}%
+\def\SYS_assignterm{%
+ \xs_exparg\SYS_findletter{\SYS_currentterm}% trouver le nom de la variable
+ \xs_ifx{\SYS_letterfound\empty}
+ {\SYS_consttermtrue
+ \ifcsname SYS_term_const_\SYS_eqnumber\endcsname% si terme constant d�j� rencontr�, l'ajouter � celui qui existe
+ \xs_eaddtomacro\SYS_currentsign\SYS_currentterm
+ \expandafter\xs_eaddtomacro\csname SYS_term_const_\SYS_eqnumber\endcsname{\SYS_currentsign}%
\else
- \SYS@cslet{SYS@sign@const@\SYS@eqnumber}\SYS@currentsign% sinon proc\'eder aux assignations
- \SYS@cslet{SYS@term@const@\SYS@eqnumber}\SYS@currentterm
+ \SYS_cslet{SYS_sign_const_\SYS_eqnumber}\SYS_currentsign% sinon proc�der aux assignations
+ \SYS_cslet{SYS_term_const_\SYS_eqnumber}\SYS_currentterm
\fi
- \else
- \ifcsname SYS@term@\detokenize\expandafter{\SYS@letterfound}@\SYS@eqnumber\endcsname
- \errmessage{Package systeme Error: l'inconnue "\detokenize\expandafter{\SYS@letterfound}" a deja ete trouvee dans l'equation !}%
+ }
+ {\ifcsname SYS_term_\detokenize\expandafter{\SYS_letterfound}_\SYS_eqnumber\endcsname
+ \errmessage{Package systeme Error: l'inconnue "\detokenize\expandafter{\SYS_letterfound}" a deja ete trouvee dans l'�quation !}%
\fi
- \ifSYS@sortvariable
- \SYS@insletter\SYS@letterfound% l'ins\'erer si besoin dans la liste ordonn\'ee des variables
+ \ifSYS_sortvariable
+ \SYS_insletter\SYS_letterfound% l'ins�rer si besoin dans la liste ordonn�e des variables
\fi
-% \show\SYS@letterlist
- \SYS@cslet{SYS@sign@\detokenize\expandafter{\SYS@letterfound}@\SYS@eqnumber}\SYS@currentsign% proc\'eder aux assignations
- \SYS@cslet{SYS@term@\detokenize\expandafter{\SYS@letterfound}@\SYS@eqnumber}\SYS@currentterm
- \fi
+ \SYS_cslet{SYS_sign_\detokenize\expandafter{\SYS_letterfound}_\SYS_eqnumber}\SYS_currentsign% proc�der aux assignations
+ \SYS_cslet{SYS_term_\detokenize\expandafter{\SYS_letterfound}_\SYS_eqnumber}\SYS_currentterm
+ }%
}
-% cherche la premi\`ere lettre minuscule dans #1
-\SYS@newmacro\SYS@findletter#1{%
+% cherche la premi�re lettre minuscule dans #1
+\def\SYS_findletter#1{%
\saveexploremode\exploregroups
- \StrRemoveBraces{#1}[\SYS@currentfindletter]%
- \let\SYS@letterfound\@empty
- \SYS@findletter@i
+ \StrRemoveBraces{#1}[\SYS_currentfindletter]%
+ \let\SYS_letterfound\empty
+ \SYS_findletter_i
\restoreexploremode
}
-\SYS@newmacro\SYS@findletter@i{%
- \StrSplit\SYS@currentfindletter\@ne\SYS@currentchar\SYS@currentfindletter
- \ifSYS@sortvariable% si le tri auto est activ\'e
- \ifcat\relax\expandafter\noexpand\SYS@currentchar
- \let\SYS@nextaction\@secondoftwo% faux si c'est une sc
+\def\SYS_findletter_i{%
+ \StrSplit\SYS_currentfindletter1\SYS_currentchar\SYS_currentfindletter
+ \ifSYS_sortvariable% si le tri auto est activ�
+ \ifcat\relax\expandafter\noexpand\SYS_currentchar
+ \let\SYS_nextaction\xs_execsecond% faux si c'est une sc
\else
- \ifnum\expandafter`\SYS@currentchar<`a
- \let\SYS@nextaction\@secondoftwo% pas une lettre minuscule
- \else
- \ifnum\expandafter`\SYS@currentchar>`z
- \let\SYS@nextaction\@secondoftwo% pas une lettre minuscule
- \else
- \SYS@testsubscript% tester s'il y a un indice
- \let\SYS@nextaction\@firstoftwo
- \fi
- \fi
+ \xs_ifnum{\expandafter`\SYS_currentchar<`a }
+ {\let\SYS_nextaction\xs_execsecond% pas une lettre minuscule
+ }
+ {\xs_ifnum{\expandafter`\SYS_currentchar>`z }
+ {\let\SYS_nextaction\xs_execsecond% pas une lettre minuscule
+ }
+ {\SYS_testsubscript% tester s'il y a un indice
+ \let\SYS_nextaction\xs_execfirst
+ }%
+ }%
\fi
\else
\noexploregroups
- \IfSubStr\SYS@letterlist\SYS@currentchar% ce qui est trouv\'e est dans la liste ?
- {\SYS@testsubscript% tester s'il y a un indice apr\`es le caract\`ere courant
- \let\SYS@nextaction\@firstoftwo
+ \IfSubStr\SYS_letterlist\SYS_currentchar% ce qui est trouv� est dans la liste ?
+ {\SYS_testsubscript% tester s'il y a un indice apr�s le caract�re courant
+ \let\SYS_nextaction\xs_execfirst
+ }%
+ {\let\SYS_nextaction\xs_execsecond
}%
- {\let\SYS@nextaction\@secondoftwo}%
\exploregroups
\fi
- \SYS@nextaction
- {\let\SYS@letterfound\SYS@currentchar
- \IfSubStr\SYS@letterfound_\relax{\SYS@addtocs\SYS@letterfound{_{-1}}}%
+ \SYS_nextaction
+ {\let\SYS_letterfound\SYS_currentchar
+ \IfSubStr\SYS_letterfound\SYSunder\relax{\xs_eaddtomacro\SYS_letterfound{\SYSunder{-1}}}%
+ }%
+ {\xs_ifx{\SYS_currentfindletter\empty}{}{\SYS_findletter_i}%
}%
- {\unless\ifx\SYS@currentfindletter\@empty\expandafter\SYS@findletter@i\fi}%
}
-\SYS@newmacro\SYS@addtocs#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}}
-
-\SYS@newmacro\SYS@expaddtocs#1#2{\expandafter\SYS@addtocs\expandafter#1\expandafter{#2}}
-
-% teste si \SYS@currentfindletter commence par "_" et si oui, rajoute les 2 caract\`eres \`a \SYS@currentchar et les enl\`eve \`a \SYS@currentfindletter
-\SYS@newmacro\SYS@testsubscript{%
+% teste si \SYS_currentfindletter commence par "_" et si oui, rajoute les 2 caract�res � \SYS_currentchar et les enl�ve � \SYS_currentfindletter
+\def\SYS_testsubscript{%
\noexploregroups
- \IfBeginWith\SYS@currentfindletter_%
- {%\StrChar\SYS@currentfindletter\tw@[\SYS@currentletterafter]% TODO BUGFIX
- \StrGobbleLeft\SYS@currentfindletter1[\SYS@currentletterafter]%
-% \show\SYS@currentletterafter
+ \IfBeginWith\SYS_currentfindletter\SYSunder
+ {\StrGobbleLeft\SYS_currentfindletter1[\SYS_currentletterafter]%
\exploregroups
- \StrRemoveBraces\SYS@currentletterafter[\SYS@currentletterafter]%
- \IfInteger\SYS@currentletterafter
- {\ifnum\SYS@currentletterafter=\m@ne\errmessage{L'indice ne doit pas etre -1.}\fi}%
- {\errmessage{L'indice n'est pas un nombre entier !}}%
- \SYS@expaddtocs\SYS@currentchar{\expandafter_\expandafter{\SYS@currentletterafter}}%
- }\relax
+ \StrRemoveBraces\SYS_currentletterafter[\SYS_currentletterafter]%
+ \IfInteger\SYS_currentletterafter
+ {\xs_ifnum{\SYS_currentletterafter=-1 }
+ {\errmessage{L'indice ne doit pas etre -1.}}
+ {}%
+ }%
+ {\errmessage{L'indice n'est pas un nombre entier !}%
+ }%
+ \xs_eeaddtomacro\SYS_currentchar{\expandafter\SYSunder\expandafter{\number\SYS_currentletterafter}}% Bug 0.31 -> corrig� 0.32: si espace apr�s l'inbdice : supprim�
+ }
+ {}%
\exploregroups
}
-% ins\`ere l'inconnue dans la sc #1 \`a sa place dans \SYS@letterlist
-\SYS@newmacro\SYS@insletter#1{%
- \IfSubStr\SYS@letterlist{#1}%
- \relax
- {\let\SYS@insunknown#1%
- \StrChar{#1}\thr@@[\SYS@insnum]%
- \StrRemoveBraces\SYS@insnum[\SYS@insnum]%
- \StrChar{#1}\@ne[\SYS@currentinsletter]%
- \let\SYS@letterlist@left\@empty
- \let\SYS@letterlist@right\SYS@letterlist
- \SYS@insletter@i}%
-}
-
-\SYS@newmacro\SYS@insletter@i{%
- \ifx\SYS@letterlist@right\@empty% l'inconnue viendra \`a la fin de \SYS@letterlist
- \SYS@expaddtocs\SYS@letterlist@left\SYS@insunknown
- \let\SYS@letterlist\SYS@letterlist@left
- \else
- \StrChar\SYS@letterlist@right\@ne[\SYS@currentletter]% la lettre suivante
- \unless\ifnum\expandafter`\SYS@currentinsletter>\expandafter`\SYS@currentletter% est elle la bonne ?
- \let\SYS@letterlist@right@right\SYS@letterlist@right
- \let\SYS@letterlist@right@left\@empty
- \expandafter\expandafter\expandafter\SYS@insletter@ii%
- \else% sinon
- \StrSplit\SYS@letterlist@right\thr@@\SYS@currentletter\SYS@letterlist@right
- \SYS@expaddtocs\SYS@letterlist@left\SYS@currentletter
- \expandafter\expandafter\expandafter\SYS@insletter@i
- \fi
- \fi
+% ins�re l'inconnue dans la sc #1 � sa place dans \SYS_letterlist
+\def\SYS_insletter#1{%
+ \IfSubStr\SYS_letterlist{#1}%
+ {}
+ {\let\SYS_insunknown#1%
+ \StrChar{#1}3[\SYS_insnum]%
+ \StrRemoveBraces\SYS_insnum[\SYS_insnum]%
+ \StrChar{#1}1[\SYS_currentinsletter]%
+ \let\SYS_letterlist_left\empty
+ \let\SYS_letterlist_right\SYS_letterlist
+ \SYS_insletter_i
+ }%
}
-\SYS@newmacro\SYS@insletter@ii{%
- \ifx\SYS@letterlist@right@right\@empty
- \let\SYS@letterlist\SYS@letterlist@left
- \SYS@expaddtocs\SYS@letterlist\SYS@letterlist@right@left
- \SYS@expaddtocs\SYS@letterlist\SYS@insunknown
- \else
- \StrChar\SYS@letterlist@right@right\@ne[\SYS@currentletter]% la lettre suivante
- \ifnum\expandafter`\SYS@currentinsletter<\expandafter`\SYS@currentletter% est elle une autre ?
- \let\SYS@letterlist\SYS@letterlist@left
- \SYS@expaddtocs\SYS@letterlist\SYS@letterlist@right@left
- \SYS@expaddtocs\SYS@letterlist\SYS@insunknown
- \SYS@expaddtocs\SYS@letterlist\SYS@letterlist@right@right
- \else
- \StrChar\SYS@letterlist@right@right\thr@@[\SYS@currentsubscript]% le prochain indice
- \StrRemoveBraces\SYS@currentsubscript[\SYS@currentsubscript]%
- \unless\ifnum\SYS@insnum>\SYS@currentsubscript% est-il le bon, c'est-\`a-dire trop grand ?
- \let\SYS@letterlist\SYS@letterlist@left
- \SYS@expaddtocs\SYS@letterlist\SYS@letterlist@right@left
- \SYS@expaddtocs\SYS@letterlist\SYS@insunknown
- \SYS@expaddtocs\SYS@letterlist\SYS@letterlist@right@right
- \else
- \StrSplit\SYS@letterlist@right@right\thr@@\SYS@currentletter\SYS@letterlist@right@right
- \SYS@expaddtocs\SYS@letterlist@right@left\SYS@currentletter
- \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\SYS@insletter@ii
- \fi
- \fi
- \fi
+\def\SYS_insletter_i{%
+ \xs_ifx{\SYS_letterlist_right\empty}% l'inconnue viendra � la fin de \SYS_letterlist
+ {\xs_eaddtomacro\SYS_letterlist_left\SYS_insunknown
+ \let\SYS_letterlist\SYS_letterlist_left
+ }
+ {\StrChar\SYS_letterlist_right1[\SYS_currentletter]% la lettre suivante
+ \xs_ifnum{\expandafter`\SYS_currentinsletter>\expandafter`\SYS_currentletter\relax}% lettre pas bonne ?
+ {\StrSplit\SYS_letterlist_right3\SYS_currentletter\SYS_letterlist_right
+ \xs_eaddtomacro\SYS_letterlist_left\SYS_currentletter
+ \SYS_insletter_i
+ }% sinon
+ {\let\SYS_letterlist_right_right\SYS_letterlist_right
+ \let\SYS_letterlist_right_left\empty
+ \SYS_insletter_ii%
+ }%
+ }%
}
-\SYS@newmacro\SYS@addtotok#1#2{#1\expandafter{\the#1#2}}
-
-\SYS@newmacro\SYS@expaddtotok#1#2{\expandafter\SYS@addtotok\expandafter#1\expandafter{#2}}
-
-\SYS@newmacro\SYS@addtocode{\SYS@addtotok\SYS@systemecode}
-
-\SYS@newmacro\SYS@expaddtocode#1{\expandafter\SYS@addtocode\expandafter{#1}}
+\def\SYS_insletter_ii{%
+ \xs_ifx{\SYS_letterlist_right_right\empty}
+ {\let\SYS_letterlist\SYS_letterlist_left
+ \xs_eaddtomacro\SYS_letterlist\SYS_letterlist_right_left
+ \xs_eaddtomacro\SYS_letterlist\SYS_insunknown
+ }
+ {\StrChar\SYS_letterlist_right_right1[\SYS_currentletter]% la lettre suivante
+ \xs_ifnum{\expandafter`\SYS_currentinsletter<\expandafter`\SYS_currentletter\relax}% est elle une autre ?
+ {\let\SYS_letterlist\SYS_letterlist_left
+ \xs_eaddtomacro\SYS_letterlist\SYS_letterlist_right_left
+ \xs_eaddtomacro\SYS_letterlist\SYS_insunknown
+ \xs_eaddtomacro\SYS_letterlist\SYS_letterlist_right_right
+ }
+ {\StrChar\SYS_letterlist_right_right3[\SYS_currentsubscript]% le prochain indice
+ \StrRemoveBraces\SYS_currentsubscript[\SYS_currentsubscript]%
+ \xs_ifnum{\SYS_insnum>\SYS_currentsubscript\relax}% est-il le bon, c'est-�-dire trop grand ?
+ {\StrSplit\SYS_letterlist_right_right3\SYS_currentletter\SYS_letterlist_right_right
+ \xs_eaddtomacro\SYS_letterlist_right_left\SYS_currentletter
+ \SYS_insletter_ii
+ }
+ {\let\SYS_letterlist\SYS_letterlist_left
+ \xs_eaddtomacro\SYS_letterlist\SYS_letterlist_right_left
+ \xs_eaddtomacro\SYS_letterlist\SYS_insunknown
+ \xs_eaddtomacro\SYS_letterlist\SYS_letterlist_right_right
+ }%
+ }%
+ }%
+}
% reconstruit le code du tableau qui sera dans le \halign
-\SYS@newmacro\SYS@buildsystem#1#2{% #1=no ligne, #2=no inconnue
- \StrSplit\SYS@letterlist@tmp3\SYS@currentvariable\SYS@letterlist@tmp
- \ifcsname SYS@sign@\detokenize\expandafter{\SYS@currentvariable}@#1\endcsname
- \expandafter\expandafter\expandafter\ifx\csname SYS@sign@\detokenize\expandafter{\SYS@currentvariable}@#1\endcsname+% signe + ?
- \ifnum#2=\@ne% premi\`ere variable ?
- \let\SYS@nextaction\@gobble
- \else
- \ifSYS@firstterm% premier terme de l'\'equation ?'
- \let\SYS@nextaction\@gobble
+\def\SYS_buildsystem#1#2{% #1=no ligne, #2=no inconnue
+ \StrSplit\SYS_letterlist_tmp3\SYS_currentvariable\SYS_letterlist_tmp
+ \ifcsname SYS_sign_\detokenize\expandafter{\SYS_currentvariable}_#1\endcsname
+ \xs_eearg\xs_ifx{\csname SYS_sign_\detokenize\expandafter{\SYS_currentvariable}_#1\endcsname+}% signe + ?
+ {\xs_ifnum{#2=1 }% premi�re variable ?
+ {\xs_gobarg
+ }
+ {\ifSYS_firstterm% premier terme de l'�quation ?'
+ \expandafter\xs_gobarg
\else
- \let\SYS@nextaction\@firstofone
+ \expandafter\SYS_execarg
\fi
- \fi
- \else
- \ifnum#2=\@ne
- \expandafter\def\csname SYS@term@\detokenize\expandafter{\SYS@currentvariable}@#1\expandafter\expandafter\expandafter\endcsname
+ }%
+ }
+ {\xs_ifnum{#2=1 }
+ {\expandafter\def\csname SYS_term_\detokenize\expandafter{\SYS_currentvariable}_#1\expandafter\expandafter\expandafter\endcsname
\expandafter\expandafter\expandafter{%
- \csname SYS@sign@\detokenize\expandafter{\SYS@currentvariable}@#1\expandafter\expandafter\expandafter\endcsname
- \csname SYS@term@\detokenize\expandafter{\SYS@currentvariable}@#1\endcsname}%
- \let\SYS@nextaction\@gobble
+ \csname SYS_sign_\detokenize\expandafter{\SYS_currentvariable}_#1\expandafter\expandafter\expandafter\endcsname
+ \csname SYS_term_\detokenize\expandafter{\SYS_currentvariable}_#1\endcsname}%
+ \xs_gobarg
+ }
+ {\SYS_execarg
+ }%
+ }%
+ {%
+ \SYS_addtotab{{}}%
+ \xs_eearg\SYS_addtotab{\csname SYS_sign_\detokenize\expandafter{\SYS_currentvariable}_#1\endcsname{}}%
+ }%
+ \SYS_firsttermfalse
+ \fi
+ \unless\ifSYS_star
+ \xs_ifnum{#2=1 }
+ {}
+ {\SYS_addtotab&}%
+ \fi
+ \ifcsname SYS_term_\detokenize\expandafter{\SYS_currentvariable}_#1\endcsname
+ \xs_eearg\SYS_addtotab{\csname SYS_term_\detokenize\expandafter{\SYS_currentvariable}_#1\endcsname}%
+ \fi
+ \unless\ifSYS_star
+ \SYS_addtotab&%
+ \fi
+ \xs_ifnum{#2<\SYS_numberofvariable\relax}
+ {\xs_exparg{\SYS_buildsystem{#1}}{\number\numexpr#2+1}%
+ }
+ {\ifSYS_constterm
+ \ifcsname SYS_sign_const_#1\endcsname% si le terme constant existe dans cette ligne
+ \SYS_addtotab{{}}%
+ \ifSYS_firstterm\else
+ \xs_eearg\SYS_addtotab{\csname SYS_sign_const_#1\endcsname}%
+ \fi
+ \SYS_addtotab{{}}%
+ \unless\ifSYS_star
+ \SYS_addtotab&% Bug 0.31 -> corrig� 0.32
+ \fi
+ \xs_eearg\SYS_addtotab{\csname SYS_term_const_#1\endcsname}%
\else
- \let\SYS@nextaction\@firstofone
+ \unless\ifSYS_star
+ \SYS_addtotab&% Bug 0.31 -> corrig� 0.32
+ \fi
\fi
+ \SYS_addtotab&%
\fi
- \SYS@nextaction{%
- \SYS@addtocode{{}}%
- \expandafter\SYS@expaddtocode\expandafter{\csname SYS@sign@\detokenize\expandafter{\SYS@currentvariable}@#1\endcsname{}}%
- }%
- \SYS@firsttermfalse
- \fi
- \unless\ifSYS@star
- \unless\ifnum#2=\@ne\SYS@addtocode&\fi
- \fi
- \ifcsname SYS@term@\detokenize\expandafter{\SYS@currentvariable}@#1\endcsname
- \expandafter\SYS@expaddtocode\expandafter{\csname SYS@term@\detokenize\expandafter{\SYS@currentvariable}@#1\endcsname}%
- \fi
- \unless\ifSYS@star\SYS@addtocode&\fi
- \ifnum#2<\SYS@numberofvariable
- \edef\SYS@nextaction{\noexpand\SYS@buildsystem{#1}{\number\numexpr#2+1}}%
- \expandafter\SYS@nextaction
- \else
- \ifSYS@constterm
- \SYS@addtocode{{}}%
- \ifSYS@firstterm\else\expandafter\SYS@expaddtocode\expandafter{\csname SYS@sign@const@#1\endcsname}\fi
- \SYS@addtocode{{}&}%
- \expandafter\SYS@expaddtocode\expandafter{\csname SYS@term@const@#1\endcsname&}%
- \fi
- \ifcsname SYS@eqsign@#1\endcsname
- \SYS@addtocode{{}}%
- \expandafter\SYS@expaddtocode\expandafter{\csname SYS@eqsign@#1\endcsname{}&}%
- \expandafter\SYS@expaddtocode\expandafter{\csname SYS@right@#1\endcsname}%
+ \ifcsname SYS_eqsign_#1\endcsname
+ \SYS_addtotab{{}}%
+ \xs_eearg\SYS_addtotab{\csname SYS_eqsign_#1\endcsname{}&}%
+ \xs_eearg\SYS_addtotab{\csname SYS_right_#1\endcsname}%
\else
- \SYS@addtocode&%
+ \SYS_addtotab&%
\fi
\saveexploremode\exploregroups
- \ifcsname SYS@extracol@#1\endcsname
- \SYS@addtocode&%
- \expandafter\IfSubStr\csname SYS@extracol@#1\endcsname{**}% le contenu de l'extra col contient-il "**" ?
- {\expandafter\let\expandafter\SYS@autonumarg\csname SYS@extracol@#1\endcsname
- \StrSubstitute\SYS@autonumarg{**}{\number\numexpr\SYSeqnum+#1-\SYS@eqnumber}[\SYS@currentautonum]%
- \SYS@cslet{SYS@extracol@#1}\SYS@currentautonum
- \SYS@autonumtrue
+ \ifcsname SYS_extracol_#1\endcsname
+ \SYS_addtotab&%
+ \expandafter\IfSubStr\csname SYS_extracol_#1\endcsname{**}% le contenu de l'extra col contient-il "**" ?
+ {\SYS_letcs\SYS_autonumarg{SYS_extracol_#1}%
+ \StrSubstitute\SYS_autonumarg{**}{\number\numexpr\SYSeqnum+#1-\SYS_eqnumber}[\SYS_currentautonum]%
+ \SYS_cslet{SYS_extracol_#1}\SYS_currentautonum
+ \SYS_autonumtrue
}%
- {\expandafter\IfSubStr\csname SYS@extracol@#1\endcsname*% le contenu de l'extra col contient-il "*" ?
- {\expandafter\let\expandafter\SYS@autonumarg\csname SYS@extracol@#1\endcsname
- \StrSubstitute\SYS@autonumarg*{\noexpand#1}[\SYS@currentautonum]%
- \SYS@cslet{SYS@extracol@#1}\SYS@currentautonum
- \SYS@autonumtrue
+ {\expandafter\IfSubStr\csname SYS_extracol_#1\endcsname*% le contenu de l'extra col contient-il "*" ?
+ {\SYS_letcs\SYS_autonumarg{SYS_extracol_#1}%
+ \StrSubstitute\SYS_autonumarg*{\noexpand#1}[\SYS_currentautonum]%
+ \SYS_cslet{SYS_extracol_#1}\SYS_currentautonum
+ \SYS_autonumtrue
}%
- {\ifSYS@autonum
- \IfSubStr\SYS@autonumarg{**}%
- {\StrSubstitute\SYS@autonumarg{**}{\number\numexpr\SYSeqnum+#1-\SYS@eqnumber}[\SYS@currentautonum]}%
- {\StrSubstitute\SYS@autonumarg*{\noexpand#1}[\SYS@currentautonum]}%
- \SYS@expaddtocode\SYS@currentautonum
+ {\ifSYS_autonum
+ \IfSubStr\SYS_autonumarg{**}%
+ {\StrSubstitute\SYS_autonumarg{**}{\number\numexpr\SYSeqnum+#1-\SYS_eqnumber}[\SYS_currentautonum]}%
+ {\StrSubstitute\SYS_autonumarg*{\noexpand#1}[\SYS_currentautonum]}%
+ \xs_exparg\SYS_addtotab\SYS_currentautonum
\fi
}%
}%
- \expandafter\SYS@expaddtocode\expandafter{\csname SYS@extracol@#1\endcsname}%
+ \xs_eearg\SYS_addtotab{\csname SYS_extracol_#1\endcsname}%
\else% pas d'extra colonne pour cette ligne ?
- \ifSYS@autonum% mais si il y un autonum
- \SYS@addtocode&%
- \IfSubStr\SYS@autonumarg{**}%
- {\StrSubstitute\SYS@autonumarg{**}{\number\numexpr\SYSeqnum+#1-\SYS@eqnumber}[\SYS@currentautonum]}%
- {\StrSubstitute\SYS@autonumarg*{\noexpand#1}[\SYS@currentautonum]}%
- \SYS@expaddtocode\SYS@currentautonum
+ \ifSYS_autonum% mais si il y un autonum
+ \SYS_addtotab&%
+ \IfSubStr\SYS_autonumarg{**}%
+ {\StrSubstitute\SYS_autonumarg{**}{\number\numexpr\SYSeqnum+#1-\SYS_eqnumber}[\SYS_currentautonum]}%
+ {\StrSubstitute\SYS_autonumarg*{\noexpand#1}[\SYS_currentautonum]}%
+ \xs_exparg\SYS_addtotab\SYS_currentautonum
\fi
\fi
\restoreexploremode
- \ifnum#1<\SYS@eqnumber
- \SYS@addtocode\cr
- \SYS@firsttermtrue
- \let\SYS@letterlist@tmp\SYS@letterlist
- \edef\SYS@nextaction{\noexpand\SYS@buildsystem{\number\numexpr#1+1}{1}}%
- \expandafter\expandafter\expandafter\SYS@nextaction
- \else% fin de l'alignement
- \SYS@addtocode{\SYS@strutdown\cr}%
- \fi
- \fi
+ \xs_ifnum{#1<\SYS_eqnumber\relax}
+ {\SYS_addtotab\cr
+ \SYS_firsttermtrue
+ \let\SYS_letterlist_tmp\SYS_letterlist
+ \xs_exparg\SYS_buildsystem{\number\numexpr#1+1}{1}%
+ }% fin de l'alignement
+ {\SYS_addtotab{\SYS_strutdown\cr}%
+ }%
+ }%
+}
+
+% ajoute "_{-1}" � tous les tokens de #1 qui n'ont pas un indice
+\def\SYS_scanletterlist#1{%
+ \let\SYS_letterlist\empty
+ \def\SYS_lettersremaining{#1}%
+ \SYS_scanletterlist_i
}
-% ajoute "_\m@ne" \`a tous les tokens de #1 qui n'ont pas un indice
-\SYS@newmacro\SYS@scanletterlist#1{%
- \let\SYS@letterlist\@empty
- \def\SYS@lettersremaining{#1}%
- \SYS@scanletterlist@i
-}
-
-\SYS@newmacro\SYS@scanletterlist@i{%
- \StrSplit\SYS@lettersremaining\@ne\SYS@currentchar\SYS@lettersremaining
- \SYS@expaddtocs\SYS@letterlist\SYS@currentchar
- \IfBeginWith\SYS@lettersremaining_%
- {\StrChar\SYS@lettersremaining\tw@[\SYS@currentchar]%
- \StrRemoveBraces\SYS@currentchar[\SYS@currentchar]%
- \SYS@expaddtocs\SYS@letterlist{\expandafter_\expandafter{\SYS@currentchar}}%
- \StrGobbleLeft\SYS@lettersremaining\tw@[\SYS@lettersremaining]%
+\def\SYS_scanletterlist_i{%
+ \StrSplit\SYS_lettersremaining1\SYS_currentchar\SYS_lettersremaining
+ \xs_eaddtomacro\SYS_letterlist\SYS_currentchar
+ \IfBeginWith\SYS_lettersremaining\SYSunder
+ {\StrChar\SYS_lettersremaining2[\SYS_currentchar]%
+ \StrRemoveBraces\SYS_currentchar[\SYS_currentchar]%
+ \xs_eeaddtomacro\SYS_letterlist{\expandafter\SYSunder\expandafter{\SYS_currentchar}}%
+ \StrGobbleLeft\SYS_lettersremaining2[\SYS_lettersremaining]%
+ }%
+ {\xs_eaddtomacro\SYS_letterlist{\SYSunder{-1}}%
}%
- {\SYS@addtocs\SYS@letterlist{_{-1}}}%
- \unless\ifx\SYS@lettersremaining\empty\expandafter\SYS@scanletterlist@i\fi
+ \xs_ifx{\SYS_lettersremaining\empty}
+ {}
+ {\SYS_scanletterlist_i}%
}
-\SYS@newmacro\sysdelim#1#2{\def\SYS@delim@left{\left#1}\def\SYS@delim@right{\right#2}}
+\def\sysdelim#1#2{\def\SYS_delim_left{\left#1}\def\SYS_delim_right{\right#2}}
\sysdelim\{.
-\SYS@newmacro\systeme{\@ifstar{\SYS@startrue\SYS@systeme@i}{\SYS@starfalse\SYS@systeme@i}}
+\def\systeme{\xs_ifstar{\SYS_startrue\SYS_systeme_i}{\SYS_starfalse\SYS_systeme_i}}
-\SYS@newmacro\SYS@systeme@i{%
+\def\SYS_systeme_i{%
\relax\iffalse{\fi\ifnum0=`}\fi
\begingroup
\mathcode`\,="013B
- \catcode`\^7 \catcode`\_8
+ \catcode`\^7
+ \catcode`\_8
\expandarg\noexploregroups
- \setbox\z@\hbox{$($}%
- \edef\SYS@strutup{\vrule depth\z@ width\z@ height\dimexpr\ht\z@+\SYS@extrastrutdim\relax}%
- \edef\SYS@strutdown{\vrule height\z@ width\z@ depth\dimexpr\dp\z@+\SYS@extrastrutdim\relax}%
- \SYS@cslet++\SYS@cslet--%
- \@testopt\SYS@systeme@ii{}%
+ \setbox0 \hbox{$($}%
+ \edef\SYS_strutup {\vrule depth0pt width0pt height\dimexpr\ht0 +\SYS_extrastrutdim\relax}%
+ \edef\SYS_strutdown{\vrule height0pt width0pt depth\dimexpr\dp0 +\SYS_extrastrutdim\relax}%
+ \SYS_cslet++\SYS_cslet--%
+ \xs_testopt\SYS_systeme_ii{}%
}
-\SYS@newmacro\SYS@systeme@ii[#1]{%
- \ifx\@empty#1\@empty
- \let\SYS@letterlist\@empty
- \SYS@sortvariabletrue
- \else
- \SYS@scanletterlist{#1}% ajoute des _{-1} si besoin
- \SYS@sortvariablefalse
- \fi
- \SYS@consttermfalse
- \expandafter\@testopt\expandafter\SYS@systeme@iii\expandafter{\SYS@defaulteqsep}%
+\def\SYS_systeme_ii[#1]{%
+ \xs_ifempty{#1}
+ {\let\SYS_letterlist\empty
+ \SYS_sortvariabletrue
+ }
+ {\SYS_scanletterlist{#1}% ajoute des _{-1} si besoin
+ \SYS_sortvariablefalse
+ }%
+ \SYS_consttermfalse
+ \xs_exparg{\xs_testopt\SYS_systeme_iii}{\SYS_defaulteqsep}%
}
-\SYS@newmacro\SYS@systeme@iii[#1]#2{%
- \SYS@newmacro\SYS@systeme@iv##1#1##2\@nil{%
- \ifx\@empty##1\@empty
- \SYS@addtocode\cr% une ligne vide
- \else
- \SYS@spliteqinterms{##1}% analyser l'eq courante
- \fi
- \ifx\@empty##2\@empty% tant qu'il reste des \'equations
- \else
- \edef\SYS@eqnumber{\number\numexpr\SYS@eqnumber+\@ne}% augmenter de 1 leur nombre
- \global\advance\SYSeqnum\@ne
- \def\SYS@nextaction{\SYS@systeme@iv##2\@nil}% recommencer avec ce qu'il reste
- \expandafter\SYS@nextaction
- \fi
+\def\SYS_systeme_iii[#1]#2{%
+ \def\SYS_systeme_iv##1#1##2\_nil{%
+ \xs_ifempty{##1}
+ {\SYS_addtotab\cr}% on a une ligne vide
+ {\SYS_spliteqinterms{##1}}% analyser l'�q courante
+ \xs_ifempty{##2}% tant qu'il reste des �quations
+ {}
+ {\edef\SYS_eqnumber{\number\numexpr\SYS_eqnumber+1}% augmenter de 1 leur nombre
+ \global\advance\SYSeqnum1
+ \SYS_systeme_iv##2\_nil% recommencer avec ce qu'il reste
+ }%
}%
- \global\advance\SYSeqnum\@ne
- \def\SYS@eqnumber{1}%
- \ifdefined\SYS@autonumarg
- \ifx\SYS@autonumarg\@empty% on initialise que si \SYS@autonumarg est vide
- \SYS@extracolfalse
- \SYS@autonumfalse
- \fi
- \else
- \SYS@extracolfalse
- \SYS@autonumfalse
- \fi
- \SYS@systeme@iv#2#1\@nil% analyser toutes les \'equations et en faire des termes et des signes
- \StrCount\SYS@letterlist_[\SYS@numberofvariable]%
- \SYS@systemecode{}\SYS@systempreamble{}%
- \ifSYS@star
- \SYS@makesyspreamble\@ne
+ \global\advance\SYSeqnum1
+ \def\SYS_eqnumber{1}%
+ \ifdefined\SYS_autonumarg
+ \xs_ifx{\SYS_autonumarg\empty}% on initialise que si \SYS_autonumarg est vide
+ {\SYS_extracolfalse
+ \SYS_autonumfalse
+ }
+ {}%
\else
- \SYS@makesyspreamble\SYS@numberofvariable% fabriquer le pr\'eambule du \halign
+ \SYS_extracolfalse
+ \SYS_autonumfalse
\fi
- \SYS@firsttermtrue
- \let\SYS@letterlist@tmp\SYS@letterlist
- \SYS@buildsystem11% construire le syst\`eme...
- \ifdefined\SYS@substlist
- \unless\ifx\SYS@substlist\@empty
- \edef\SYS@systemcs{\the\SYS@systemecode}%
- \SYS@substlist
- \SYS@systemecode\expandafter{\SYS@systemcs}%
- \fi
- \fi
- \ifmmode
- \expandafter\@firstofone
- \else
- \expandafter\SYS@entermath
+ \SYS_systeme_iv#2#1\_nil% analyser toutes les �quations et en faire des termes et des signes
+ \StrCount\SYS_letterlist\SYSunder[\SYS_numberofvariable]%
+ \SYS_systemecode{}\SYS_systempreamble{}%
+ \xs_exparg\SYS_makesyspreamble{\number\ifSYS_star1\else\SYS_numberofvariable\fi\space}% fabriquer le pr�ambule du \halign
+ \SYS_firsttermtrue
+ \let\SYS_letterlist_tmp\SYS_letterlist
+ \SYS_buildsystem11% construire le syst�me...
+ \ifdefined\SYS_substlist
+ \xs_ifx{\SYS_substlist\empty}
+ {}
+ {\edef\SYS_systemcs{\the\SYS_systemecode}%
+ \SYS_substlist
+ \SYS_systemecode\expandafter{\SYS_systemcs}%
+ }%
\fi
- {\SYS@delim@left
+ \csname SYS_\ifmmode execarg\else entermath\fi\endcsname
+ {\SYS_delim_left
\vcenter{%
- \lineskiplimit\z@\lineskip\z@
- \baselineskip\SYS@lineskipcoeff\normalbaselineskip
- \halign\expandafter\expandafter\expandafter{\expandafter\the\expandafter\SYS@systempreamble\the\SYS@systemecode}%
+ \lineskiplimit=0pt
+ \lineskip=0pt
+ \baselineskip\SYS_lineskipcoeff\normalbaselineskip
+ \halign\expandafter\expandafter\expandafter{\expandafter\the\expandafter\SYS_systempreamble\the\SYS_systemecode}%
}%
- \SYS@delim@right
+ \SYS_delim_right
}% ...l'afficher en mode math
\endgroup
\ifnum0=`{\fi\iffalse}\fi
- \unless\ifSYS@followautonum
- \ifdefined\SYS@autonumarg
- \let\SYS@autonumarg\@empty% annule la num\'erotation auto
+ \unless\ifSYS_followautonum
+ \ifdefined\SYS_autonumarg
+ \let\SYS_autonumarg\empty% annule la num�rotation auto
\fi
\fi
}
-% Construire le pr\'eambule du \halign
-\SYS@newmacro\SYS@makesyspreamble#1{%
- \def\SYS@preamblenum{#1}%
- \SYS@makesyspreamble@i\@ne
+% Construire le pr�ambule du \halign
+\def\SYS_makesyspreamble#1{%
+ \def\SYS_preamblenum{#1}%
+ \SYS_makesyspreamble_i1%
}
-\SYS@newmacro\SYS@makesyspreamble@i#1{%
- \ifnum#1<\SYS@preamblenum% tant qu'il reste des variables
- \SYS@addtotok\SYS@systempreamble{\hfil$##$&\hfil$##$&}% une colonne pour le terme et une pour le signe
- \expandafter\SYS@makesyspreamble@i\expandafter{\number\numexpr#1+\@ne\expandafter}%
- \else
- \ifSYS@constterm
- \SYS@addtotok\SYS@systempreamble{\hfil$##$&\hfil$##$&}% une colonne pour le terme constant et son signe
+\def\SYS_makesyspreamble_i#1{%
+ \xs_ifnum{#1<\SYS_preamblenum\relax}% tant qu'il reste des variables
+ {\SYS_addtotok\SYS_systempreamble{\hfil$##$&\hfil$##$&}% une colonne pour le terme et une pour le signe
+ \xs_exparg\SYS_makesyspreamble_i{\number\numexpr#1+1}%
+ }
+ {\ifSYS_constterm
+ \SYS_addtotok\SYS_systempreamble{\hfil$##$&\hfil$##$&}% une colonne pour le terme constant et son signe
\fi
- \SYS@addtotok\SYS@systempreamble{\hfil$##$&$##$&$##$\hfil\null}% ajouter 1 colonne pour le signe = et une pour le terme de droite
- \ifSYS@extracol
- \SYS@addtotok\SYS@systempreamble{&\SYS@extracolstart##\SYS@extracolend\hfil\null}% la colonne suppl\'ementaire (pas de mode math)
+ \SYS_addtotok\SYS_systempreamble{\hfil$##$&$##$&$##$\hfil\null}% ajouter 1 colonne pour le signe = et une pour le terme de droite
+ \ifSYS_extracol
+ \SYS_addtotok\SYS_systempreamble{&\SYS_extracolstart##\SYS_extracolend\hfil\null}% la colonne suppl�mentaire (pas de mode math)
\fi
- \SYS@addtotok\SYS@systempreamble{\cr\SYS@strutup}% ajouter la fin du pr\'eambule et le strut de premi\`ere ligne
- \fi
+ \SYS_addtotok\SYS_systempreamble{\cr\SYS_strutup}% ajouter la fin du pr�ambule et le strut de premi�re ligne
+ }%
}
-\SYS@newmacro\SYS@entermath#1{$\relax#1$}
+\def\SYS_entermath#1{$\relax#1$}
-% d\'efinit les substitutions \`a faire dans le tableau avant l'affichage
-\SYS@newmacro\syssubstitute{%
- \unless\ifdefined\SYS@substlist\let\SYS@substlist\@empty\fi
- \SYS@substitute@i
-}
-
-\SYS@newmacro\SYS@substitute@i#1{%
- \ifx\@empty#1\@empty
- \else
- \SYS@addtocs\SYS@substlist{\StrSubstitute\SYS@systemcs}%
- \StrChar{\noexpand#1}\@ne[\SYS@currentchar]\StrRemoveBraces\SYS@currentchar[\SYS@currentchar]%
- \SYS@expaddtocs\SYS@substlist{\expandafter{\expandafter\noexpand\SYS@currentchar}}%
- \StrChar{\noexpand#1}\tw@[\SYS@currentchar]\StrRemoveBraces\SYS@currentchar[\SYS@currentchar]%
- \SYS@expaddtocs\SYS@substlist{\expandafter{\expandafter\noexpand\SYS@currentchar}[\SYS@systemcs]}%
- \def\SYS@nextaction{\expandafter\SYS@substitute@i\expandafter{\@gobbletwo#1}}%
- \expandafter\SYS@nextaction
- \fi
+% d�finit les substitutions � faire dans le tableau avant l'affichage
+\def\syssubstitute{%
+ \unless\ifdefined\SYS_substlist\let\SYS_substlist\empty\fi
+ \SYS_substitute_i
+}
+
+\def\SYS_substitute_i#1{%
+ \xs_ifempty{#1}
+ {}
+ {\xs_addtomacro\SYS_substlist{\StrSubstitute\SYS_systemcs}%
+ \StrChar{\noexpand#1}1[\SYS_currentchar]\StrRemoveBraces\SYS_currentchar[\SYS_currentchar]%
+ \xs_eaddtomacro\SYS_substlist{\expandafter{\expandafter\noexpand\SYS_currentchar}}%
+ \StrChar{\noexpand#1}2[\SYS_currentchar]\StrRemoveBraces\SYS_currentchar[\SYS_currentchar]%
+ \xs_eaddtomacro\SYS_substlist{\expandafter{\expandafter\noexpand\SYS_currentchar}[\SYS_systemcs]}%
+ \xs_exparg\SYS_substitute_i{\SYS_gobtwoargs#1}%
+ }%
}
% annule les substitutions
-\SYS@newmacro\sysnosubstitute{\let\SYS@substlist\@empty}
+\def\sysnosubstitute{\let\SYS_substlist\empty}
-\catcode`\@\SYS@savedatcatcode\relax
+\SYS_restorecatcode
\endinput
@@ -660,29 +654,36 @@
######################################################################
v0.1 27/02/2011
- - Premi\`ere version publique sur le CTAN
+ - Premi�re version publique sur le CTAN.
----------------------------------------------------------------------
v0.2 08/03/2011
- Le premier argument optionnel met en place de nouvelles
- fonctionnalit\'es
- - Possibilit\'e d'avoir des inconnues indic\'ees
- - Mise en place d'une colonne suppl\'ementaire et d'une
- num\'erotation automatique
- - La commande \'etoil\'ee \systeme* d\'egrade l'alignement pour ne
- plus prendre en compte que les signes d'\'egalit\'e
+ fonctionnalit�s.
+ - Possibilit� d'avoir des inconnues indic�es.
+ - Mise en place d'une colonne suppl�mentaire et d'une
+ num�rotation automatique.
+ - La commande �toil�e \systeme* d�grade l'alignement pour ne
+ plus prendre en compte que les signes d'�galit�.
- Une substitution est possible en fin de traitement, juste
- avant d'afficher le syst\`eme.
+ avant d'afficher le syst�me.
----------------------------------------------------------------------
v0.2a 15/05/2011
- - Bug corrig\'e lorsque les termes comportent des accolades
+ - Bug corrig� lorsque les termes comportent des accolades.
----------------------------------------------------------------------
-v0.2b 2011/06/23
- - La commande \setdelim permet de modifier les d\'elimiteurs
- extensibles plac\'es de part et d'autre du syst\`eme.
+v0.2b 23/06/2011
+ - La commande \setdelim permet de modifier les d�limiteurs
+ extensibles plac�s de part et d'autre du syst�me.
----------------------------------------------------------------------
v0.3 21/12/2013
- - Un terme constant est permis dans le membre de gauche
- ----------------------------------------------------------------------
+ - Un terme constant est permis dans le membre de gauche.
+----------------------------------------------------------------------
v0.31 01/01/2018
- - Il manquait un "&" apr\`es le terme constant, merci \`a Thomas Soll
- de l'avoir signal\'e
\ No newline at end of file
+ - Il manquait un "&" apr�s le terme constant, merci � Thomas Soll
+ de l'avoir signal�.
+----------------------------------------------------------------------
+v0.32 13/01/2019
+ - Correction d'un bug : les espaces �taient pris en compte dans
+ les noms des termes.
+ - Correction d'un bug : si version �toil�e et terme constant dans
+ membre de gauche, d�faut d'alignement.
+ - Nettoyage du code.
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/systeme.tlpobj new/tlpkg/tlpobj/systeme.tlpobj
--- old/tlpkg/tlpobj/systeme.tlpobj 2018-03-03 20:17:47.000000000 +0100
+++ new/tlpkg/tlpobj/systeme.tlpobj 2019-02-28 04:06:36.000000000 +0100
@@ -1,6 +1,6 @@
name systeme
category Package
-revision 46184
+revision 49690
shortdesc Format systems of equations
relocated 1
longdesc The package allows you to enter systems of equations or
@@ -13,8 +13,10 @@
runfiles size=8
RELOC/tex/generic/systeme/systeme.sty
RELOC/tex/generic/systeme/systeme.tex
+catalogue-contact-bugs https://framagit.org/unbonpetit/systeme/issues
+catalogue-contact-repository https://framagit.org/unbonpetit/systeme/tree/master
catalogue-ctan /macros/generic/systeme
-catalogue-date 2018-01-01 21:00:41 +0100
+catalogue-date 2019-01-13 21:13:02 +0100
catalogue-license lppl1.3c
catalogue-topics maths maths-syseqn simplified
-catalogue-version 0.31
+catalogue-version 0.32
++++++ t-angles.doc.tar.xz ++++++
++++++ t-angles.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/t-angles.tlpobj new/tlpkg/tlpobj/t-angles.tlpobj
--- old/tlpkg/tlpobj/t-angles.tlpobj 2018-03-03 20:17:48.000000000 +0100
+++ new/tlpkg/tlpobj/t-angles.tlpobj 2019-02-28 04:06:36.000000000 +0100
@@ -11,6 +11,7 @@
longdesc pdfLaTeX.
runfiles size=6
RELOC/tex/latex/t-angles/t-angles.sty
+catalogue-contact-home http://www.math.ksu.edu/~lub/
catalogue-ctan /macros/latex/contrib/t-angles
catalogue-date 2017-04-18 05:31:40 +0200
catalogue-license gpl
++++++ t2.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/generic/t2/etc/mathtext.dtx new/doc/generic/t2/etc/mathtext.dtx
--- old/doc/generic/t2/etc/mathtext.dtx 2016-11-25 19:27:55.000000000 +0100
+++ new/doc/generic/t2/etc/mathtext.dtx 2018-05-30 00:21:14.000000000 +0200
@@ -10,7 +10,7 @@
% \begin{macrocode}
%<*mathtext>
\ProvidesPackage{mathtext}
- [1999/01/28 v1.0 transparent text-and-math defs]
+ [2018/04/13 v1.1 transparent text-and-math defs]
% \end{macrocode}
%
% This stuff is intended to be put into the LaTeX kernel.
@@ -104,6 +104,20 @@
{\default@shape}}%
\expandafter\let\csname#1-cmd\endcsname\@changed@cmd
\expandafter\let\csname#1-tmcmd\endcsname\@changed@tmcmd
+% \end{macrocode}
+% 2018 addition to load UTF-8 support file (David Carlisle, for latex3 project)
+% \begin{macrocode}
+ \begingroup
+ \wlog{Now handling font encoding #1 ...}%
+ \lowercase{%
+ \InputIfFileExists{#1enc.dfu}}%
+ {\wlog{... processing UTF-8 mapping file for font %
+ encoding #1}}%
+ {\wlog{... no UTF-8 mapping file for font encoding #1}}%
+ \endgroup
+% \end{macrocode}
+% end of 2018 addition
+% \begin{macrocode}
\else
\@font@info{Redeclaring font encoding #1}%
\fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/t2.doc.tlpobj new/tlpkg/tlpobj/t2.doc.tlpobj
--- old/tlpkg/tlpobj/t2.doc.tlpobj 2018-04-14 02:24:32.000000000 +0200
+++ new/tlpkg/tlpobj/t2.doc.tlpobj 2019-02-28 04:06:38.000000000 +0100
@@ -1,9 +1,9 @@
name t2.doc
category Package
-revision 47458
+revision 47870
shortdesc doc files of t2
relocated 1
-docfiles size=66
+docfiles size=67
RELOC/doc/generic/t2/Makefile
RELOC/doc/generic/t2/OT2uni.map
RELOC/doc/generic/t2/README
++++++ t2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/t2.tlpobj new/tlpkg/tlpobj/t2.tlpobj
--- old/tlpkg/tlpobj/t2.tlpobj 2018-04-14 02:24:32.000000000 +0200
+++ new/tlpkg/tlpobj/t2.tlpobj 2019-02-28 04:06:39.000000000 +0100
@@ -1,15 +1,15 @@
name t2
category Package
-revision 47458
+revision 47870
shortdesc Support for using T2 encoding
relocated 1
-longdesc The T2 bundle provides a variety of separate support functions,
-longdesc for using Cyrillic characters in LaTeX: - the mathtext package,
-longdesc for using Cyrillic letters 'transparently' in formulae - the
+longdesc The T2 bundle provides a variety of separate support functions
+longdesc for using Cyrillic characters in LaTeX: the mathtext package,
+longdesc for using Cyrillic letters 'transparently' in formulae; the
longdesc citehack package, for using Cyrillic (or indeed any non-ascii)
-longdesc characters in citation keys; - support for Cyrillic in BibTeX;
-longdesc - support for Cyrillic in Makeindex; and - various items of
-longdesc font support.
+longdesc characters in citation keys; support for Cyrillic in BibTeX;
+longdesc support for Cyrillic in Makeindex; and various items of font
+longdesc support.
runfiles size=109
RELOC/fonts/enc/t2/t2a-mod1.enc
RELOC/fonts/enc/t2/t2a-mod2.enc
@@ -71,6 +71,6 @@
RELOC/tex/latex/t2/mathtext.sty
RELOC/tex/latex/t2/misccorr.sty
catalogue-ctan /macros/latex/contrib/t2
-catalogue-date 2016-06-24 19:18:15 +0200
+catalogue-date 2018-05-08 17:14:58 +0200
catalogue-license lppl
catalogue-topics fontenc cyrillic
++++++ tabfigures.doc.tar.xz ++++++
++++++ tabfigures.tar.xz ++++++
++++++ table-fct.doc.tar.xz ++++++
++++++ table-fct.tar.xz ++++++
++++++ tableaux.doc.tar.xz ++++++
++++++ tableaux.tar.xz ++++++
++++++ tablefootnote.doc.tar.xz ++++++
++++++ tablefootnote.tar.xz ++++++
++++++ tableof.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/tableof/README new/doc/latex/tableof/README
--- old/doc/latex/tableof/README 2016-11-25 19:30:11.000000000 +0100
+++ new/doc/latex/tableof/README 1970-01-01 01:00:00.000000000 +0100
@@ -1,91 +0,0 @@
-
-
-ABSTRACT
-
-
-- Package: tableof (Tables of tagged contents)
-- Version: 1.4a (2015/03/10)
-- License: LPPL 1.3c
-- Copyright (C) 2012-2015 Jean-Francois Burnol
-
-The commands \toftagstart, \toftagstop, \toftagthis, \tofuntagthis are
-used to tag chapters, sections or any other sectioning units destined to
-end up in the table(s) of contents. Then:
-
- \nexttocwithtags{req. 1, req. 2, ... }{excl. 1, excl. 2, ... }
- \tableofcontents % or equivalent command
-
-
-specifies which tags are to be required and which ones are to be
-excluded from the typeset TOC.
-
-For documents with classes where \tableofcontents is only single-use,
-the package provides:
-
- \tableoftaggedcontents{req. 1, req. 2, ... }{excl. 1, excl. 2, ... }
-
-which does not have this restriction.
-
-
-
-INSTALLATION
-
-
-For extracting the style file:
-
- latex tableof.dtx
-
-Files tableof.sty, tableof.ins and tableoftest.tex are generated on the
-first latex run. Move tableof.sty to a suitable location within the TeX
-installation:
-
- tableof.sty -> <TDS>/tex/latex/tableof/
-
-To produce the documentation:
-
- latex tableof.dtx (a second time)
- dvipdfmx tableof.dvi
-
-tableof.ins is for TeX distributions expecting it.
-
-tableoftest.tex is an example of use of the package commands. Run latex
-twice on it to see examples of tagged tables of contents.
-
-
-
-CHANGE HISTORY
-
-
-- v1.4a (2015/03/10) changes for enhanced compatibility with etoc.
-
-- v1.4 (2015/02/20) under the hood code improvements.
-
-- v1.3 (2015/02/11) comma separated lists of tags now allow spaces.
-
-- v1.2 (2013/03/04) added command \tableoftaggedcontents.
-
-- v1.1 (2012/12/13) added command \nexttocwithtags.
-
-- v1.0 (2012/12/06) first release.
-
-
-
-LICENSE
-
-
- This Work may be distributed and/or modified under the
- conditions of the LaTeX Project Public License, either
- version 1.3c of this license or (at your option) any later
- version. This version of this license is in
-
-http://www.latex-project.org/lppl/lppl-1-3c.txt
-
- and 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.
-
- The Author of this Work is:
- Jean-Francois Burnol <jfbu at free dot fr>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/tableof/README.md new/doc/latex/tableof/README.md
--- old/doc/latex/tableof/README.md 2016-11-25 19:30:11.000000000 +0100
+++ new/doc/latex/tableof/README.md 2018-10-02 23:38:29.000000000 +0200
@@ -2,9 +2,9 @@
========
- Package: tableof (Tables of tagged contents)
-- Version: 1.4a (2015/03/10)
+- Version: 1.4b (2018/10/02)
- License: LPPL 1.3c
-- Copyright (C) 2012-2015 Jean-Francois Burnol <jfbu at free dot fr>
+- Copyright (C) 2012-2018 Jean-Francois Burnol <jfbu at free dot fr>
The commands `\toftagstart`, `\toftagstop`, `\toftagthis`, `\tofuntagthis`
are used to tag chapters, sections or any other sectioning units destined
@@ -51,7 +51,10 @@
Change History
==============
-* v1.4a (2015/03/10) changes for enhanced compatibility with etoc.
+* v1.4b (2018/10/02) fix to bug when a document ended with `\clearpage`
+ before the `\end{document}`. `tableof` now requires `atveryend` package.
+
+* v1.4a (2015/03/10) changes for enhanced compatibility with `etoc`.
* v1.4 (2015/02/20) under the hood code improvements.
@@ -68,19 +71,11 @@
=======
This Work may be distributed and/or modified under the
- conditions of the LaTeX Project Public License, either
- version 1.3c of this license or (at your option) any later
- version. This version of this license is in
+ conditions of the LaTeX Project Public License,
+ version 1.3c. This version of this license is in
- and the latest version of this license is in
-
-
-
- and version 1.3 or later is part of all distributions of
- LaTeX version 2005/12/01 or later.
-
The Author of this Work is:
Jean-Francois Burnol <jfbu at free dot fr>
Binary files old/doc/latex/tableof/tableof.pdf and new/doc/latex/tableof/tableof.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/tableof.doc.tlpobj new/tlpkg/tlpobj/tableof.doc.tlpobj
--- old/tlpkg/tlpobj/tableof.doc.tlpobj 2018-03-03 20:17:51.000000000 +0100
+++ new/tlpkg/tlpobj/tableof.doc.tlpobj 2019-02-28 04:06:39.000000000 +0100
@@ -1,9 +1,8 @@
name tableof.doc
category Package
-revision 36489
+revision 48815
shortdesc doc files of tableof
relocated 1
-docfiles size=16
- RELOC/doc/latex/tableof/README
+docfiles size=15
RELOC/doc/latex/tableof/README.md
RELOC/doc/latex/tableof/tableof.pdf
++++++ tableof.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/tableof/tableof.sty new/tex/latex/tableof/tableof.sty
--- old/tex/latex/tableof/tableof.sty 2016-11-25 19:33:59.000000000 +0100
+++ new/tex/latex/tableof/tableof.sty 2018-10-02 23:38:29.000000000 +0200
@@ -22,14 +22,15 @@
%% in the same archive or directory.)
%%
\ProvidesPackage{tableof}
- [2015/03/10 v1.4a Tables of tagged contents (jfB)]
+ [2018/10/02 v1.4b Tables of tagged contents (JFB)]
%%
%% Package: tableof
-%% Version: 1.4a (2015/03/10)
+%% Version: 1.4b (2018/10/02)
%% License: LPPL 1.3c
-%% Copyright (C) 2012-2015 Jean-Francois Burnol <jfbu at free dot fr>
+%% Copyright (C) 2012-2018 Jean-Francois Burnol <jfbu at free dot fr>
%%
\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{atveryend}
\DeclareOption*{\PackageWarning{tableof}{Option `\CurrentOption' is unknown.}}
\ProcessOptions\relax
\newtoks\tof@toctoks
@@ -62,7 +63,8 @@
{\def\tof@gobblethree@orfour#1#2#3#4{}%
\ifx\hyper@last\@undefined\tof@toctoks{}\fi}
{\def\tof@gobblethree@orfour#1#2#3{}}}
-\AtEndDocument{\addtocontents{toc}{\string\tof@finish}}
+\AfterLastShipout
+ {\immediate\write\@auxout{\string\@writefile{toc}{\string\tof@finish}}}
\let\tof@global \@empty
\let\tof@begingroup \begingroup
\let\tof@endgroup \endgroup
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/tableof.tlpobj new/tlpkg/tlpobj/tableof.tlpobj
--- old/tlpkg/tlpobj/tableof.tlpobj 2018-03-03 20:17:51.000000000 +0100
+++ new/tlpkg/tlpobj/tableof.tlpobj 2019-02-28 04:06:39.000000000 +0100
@@ -1,6 +1,6 @@
name tableof
category Package
-revision 36489
+revision 48815
shortdesc Tagging tables of contents
relocated 1
longdesc The package provides the commands to flag chapters or sections
@@ -15,7 +15,7 @@
runfiles size=2
RELOC/tex/latex/tableof/tableof.sty
catalogue-ctan /macros/latex/contrib/tableof
-catalogue-date 2016-06-24 19:18:15 +0200
+catalogue-date 2018-10-02 13:25:15 +0200
catalogue-license lppl1.3
catalogue-topics toc-etc
-catalogue-version 1.4a
+catalogue-version 1.4b
++++++ tablestyles.doc.tar.xz ++++++
++++++ tablestyles.tar.xz ++++++