summaryrefslogtreecommitdiff
path: root/macros/latex/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib')
-rw-r--r--macros/latex/contrib/gensymb/LICENSE416
-rw-r--r--macros/latex/contrib/gensymb/README30
-rw-r--r--macros/latex/contrib/gensymb/gensymb.dtx (renamed from macros/latex/contrib/was/gensymb.dtx)23
-rw-r--r--macros/latex/contrib/gensymb/gensymb.ins (renamed from macros/latex/contrib/was/gensymb.ins)2
-rw-r--r--macros/latex/contrib/gensymb/gensymb.pdfbin0 -> 220452 bytes
-rw-r--r--macros/latex/contrib/iexec/iexec.dtx76
-rw-r--r--macros/latex/contrib/iexec/iexec.pdfbin293850 -> 293663 bytes
-rw-r--r--macros/latex/contrib/koma-script/README.md145
-rw-r--r--macros/latex/contrib/koma-script/doc/common-fontsize-de.tex6
-rw-r--r--macros/latex/contrib/koma-script/doc/common-fontsize-en.tex5
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-00-de.pdfbin14804 -> 14941 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-00-en.pdfbin16176 -> 15964 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-01-de.pdfbin17284 -> 17413 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-01-en.pdfbin18888 -> 18849 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-02-de.pdfbin17530 -> 17657 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-02-en.pdfbin19191 -> 19146 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-03-de.pdfbin17567 -> 17692 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-03-en.pdfbin19225 -> 19179 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-04-de.pdfbin17621 -> 17746 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-04-en.pdfbin19268 -> 19223 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-05-de.pdfbin17717 -> 17841 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-05-en.pdfbin19282 -> 19240 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-06-de.pdfbin17722 -> 17842 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-06-en.pdfbin19282 -> 19238 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-07-de.pdfbin17595 -> 17721 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-07-en.pdfbin19243 -> 19198 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-08-de.pdfbin28921 -> 29051 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-08-en.pdfbin30751 -> 30710 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-09-de.pdfbin28903 -> 29032 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-09-en.pdfbin30731 -> 30689 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-10-de.pdfbin28921 -> 29051 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-10-en.pdfbin30751 -> 30710 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-11-de.pdfbin28924 -> 29052 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-11-en.pdfbin30753 -> 30712 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-12-de.pdfbin28921 -> 29051 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-12-en.pdfbin30751 -> 30710 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-13-de.pdfbin29801 -> 29928 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-13-en.pdfbin31988 -> 32107 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-14-de.pdfbin29774 -> 29898 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-14-en.pdfbin31958 -> 32077 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-15-de.pdfbin29800 -> 29928 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-15-en.pdfbin31988 -> 32106 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-16-de.pdfbin30792 -> 30922 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-16-en.pdfbin32975 -> 33097 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-17-de.pdfbin30818 -> 30949 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-17-en.pdfbin33009 -> 33133 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-18-de.pdfbin30817 -> 30945 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-18-en.pdfbin33001 -> 33124 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-19-de.pdfbin31313 -> 31434 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-19-en.pdfbin33279 -> 33406 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-20-de.pdfbin31498 -> 31498 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-20-en.pdfbin33285 -> 33285 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-21-de.pdfbin42786 -> 42786 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-21-en.pdfbin44408 -> 44408 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-22-de.pdfbin43093 -> 43094 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-22-en.pdfbin44705 -> 44705 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-23-de.pdfbin43093 -> 43094 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/letter-example-23-en.pdfbin44705 -> 44705 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/scrbase-en.tex8
-rw-r--r--macros/latex/contrib/koma-script/doc/scrbookreportarticle-de.tex20
-rw-r--r--macros/latex/contrib/koma-script/doc/scrbookreportarticle-en.tex19
-rw-r--r--macros/latex/contrib/koma-script/doc/scrguide-de.pdfbin3257748 -> 3260052 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/scrguide-en.pdfbin3163933 -> 3165693 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/scrguide.bib32
-rw-r--r--macros/latex/contrib/koma-script/doc/scrguide.cls13
-rw-r--r--macros/latex/contrib/koma-script/doc/scrjura-de.tex4
-rw-r--r--macros/latex/contrib/koma-script/doc/scrjura-example-de.pdfbin56778 -> 56778 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/scrjura-example-en.pdfbin57972 -> 57972 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-de.tex4
-rw-r--r--macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-en.tex2
-rw-r--r--macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-example-de.pdfbin137420 -> 137420 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-example-en.pdfbin135452 -> 135452 bytes
-rw-r--r--macros/latex/contrib/koma-script/doc/scrlfile-de.tex4
-rw-r--r--macros/latex/contrib/koma-script/doc/scrlfile-en.tex4
-rw-r--r--macros/latex/contrib/koma-script/doc/scrlttr2-de.tex11
-rw-r--r--macros/latex/contrib/koma-script/doc/scrlttr2-en.tex14
-rw-r--r--macros/latex/contrib/koma-script/doc/scrwfile-de.tex8
-rw-r--r--macros/latex/contrib/koma-script/doc/scrwfile-en.tex6
-rw-r--r--macros/latex/contrib/koma-script/doc/tocbasic-de.tex11
-rw-r--r--macros/latex/contrib/koma-script/doc/tocbasic-en.tex14
-rw-r--r--macros/latex/contrib/koma-script/koma-script-source-doc.dtx8
-rw-r--r--macros/latex/contrib/koma-script/scrkernel-compatibility.dtx16
-rw-r--r--macros/latex/contrib/koma-script/scrkernel-floats.dtx38
-rw-r--r--macros/latex/contrib/koma-script/scrkernel-fonts.dtx220
-rw-r--r--macros/latex/contrib/koma-script/scrkernel-sections.dtx94
-rw-r--r--macros/latex/contrib/koma-script/scrkernel-version.dtx4
-rw-r--r--macros/latex/contrib/koma-script/scrlayer.dtx42
-rw-r--r--macros/latex/contrib/koma-script/scrmain.ins4
-rw-r--r--macros/latex/contrib/koma-script/scrstrip.inc4
-rw-r--r--macros/latex/contrib/koma-script/scrwfile.dtx48
-rw-r--r--macros/latex/contrib/koma-script/tocbasic.dtx28
-rw-r--r--macros/latex/contrib/media4svg/ChangeLog4
-rw-r--r--macros/latex/contrib/media4svg/README.md17
-rw-r--r--macros/latex/contrib/media4svg/example/beamer-example-1.svg58
-rw-r--r--macros/latex/contrib/media4svg/example/beamer-example-2.svg20
-rw-r--r--macros/latex/contrib/media4svg/example/beamer-example-3.svg22
-rw-r--r--macros/latex/contrib/media4svg/example/beamer-example-4.svg28
-rw-r--r--macros/latex/contrib/media4svg/example/beamer-example.tex155
-rw-r--r--macros/latex/contrib/media4svg/media4svg.sty54
-rw-r--r--macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdfbin8867402 -> 9163233 bytes
-rw-r--r--macros/latex/contrib/profcollege/latex/ProfCollege.sty1960
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCEngrenages.mp73
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCLabyNombre.mp49
-rw-r--r--macros/latex/contrib/was/gensymb.pdfbin227912 -> 0 bytes
104 files changed, 3251 insertions, 572 deletions
diff --git a/macros/latex/contrib/gensymb/LICENSE b/macros/latex/contrib/gensymb/LICENSE
new file mode 100644
index 0000000000..2244313901
--- /dev/null
+++ b/macros/latex/contrib/gensymb/LICENSE
@@ -0,0 +1,416 @@
+The LaTeX Project Public License
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+LPPL Version 1.3c 2008-05-04
+
+Copyright 1999 2002-2008 LaTeX3 Project
+ Everyone is allowed to distribute verbatim copies of this
+ license document, but modification of it is not allowed.
+
+
+PREAMBLE
+========
+
+The LaTeX Project Public License (LPPL) is the primary license under
+which the LaTeX kernel and the base LaTeX packages are distributed.
+
+You may use this license for any work of which you hold the copyright
+and which you wish to distribute. This license may be particularly
+suitable if your work is TeX-related (such as a LaTeX package), but
+it is written in such a way that you can use it even if your work is
+unrelated to TeX.
+
+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
+below, gives instructions, examples, and recommendations for authors
+who are considering distributing their works under this license.
+
+This license gives conditions under which a work may be distributed
+and modified, as well as conditions under which modified versions of
+that work may be distributed.
+
+We, the LaTeX3 Project, believe that the conditions below give you
+the freedom to make and distribute modified versions of your work
+that conform with whatever technical specifications you wish while
+maintaining the availability, integrity, and reliability of
+that work. If you do not see how to achieve your goal while
+meeting these conditions, then read the document `cfgguide.tex'
+and `modguide.tex' in the base LaTeX distribution for suggestions.
+
+
+DEFINITIONS
+===========
+
+In this license document the following terms are used:
+
+ `Work'
+ Any work being distributed under this License.
+
+ `Derived Work'
+ Any work that under any applicable law is derived from the Work.
+
+ `Modification'
+ Any procedure that produces a Derived Work under any applicable
+ law -- for example, the production of a file containing an
+ original file associated with the Work or a significant portion of
+ such a file, either verbatim or with modifications and/or
+ translated into another language.
+
+ `Modify'
+ To apply any procedure that produces a Derived Work under any
+ applicable law.
+
+ `Distribution'
+ Making copies of the Work available from one person to another, in
+ whole or in part. Distribution includes (but is not limited to)
+ making any electronic components of the Work accessible by
+ file transfer protocols such as FTP or HTTP or by shared file
+ systems such as Sun's Network File System (NFS).
+
+ `Compiled Work'
+ A version of the Work that has been processed into a form where it
+ is directly usable on a computer system. This processing may
+ include using installation facilities provided by the Work,
+ transformations of the Work, copying of components of the Work, or
+ other activities. Note that modification of any installation
+ facilities provided by the Work constitutes modification of the Work.
+
+ `Current Maintainer'
+ A person or persons nominated as such within the Work. If there is
+ no such explicit nomination then it is the `Copyright Holder' under
+ any applicable law.
+
+ `Base Interpreter'
+ A program or process that is normally needed for running or
+ interpreting a part or the whole of the Work.
+
+ A Base Interpreter may depend on external components but these
+ are not considered part of the Base Interpreter provided that each
+ external component clearly identifies itself whenever it is used
+ interactively. Unless explicitly specified when applying the
+ license to the Work, the only applicable Base Interpreter is a
+ `LaTeX-Format' or in the case of files belonging to the
+ `LaTeX-format' a program implementing the `TeX language'.
+
+
+
+CONDITIONS ON DISTRIBUTION AND MODIFICATION
+===========================================
+
+1. Activities other than distribution and/or modification of the Work
+are not covered by this license; they are outside its scope. In
+particular, the act of running the Work is not restricted and no
+requirements are made concerning any offers of support for the Work.
+
+2. You may distribute a complete, unmodified copy of the Work as you
+received it. Distribution of only part of the Work is considered
+modification of the Work, and no right to distribute such a Derived
+Work may be assumed under the terms of this clause.
+
+3. You may distribute a Compiled Work that has been generated from a
+complete, unmodified copy of the Work as distributed under Clause 2
+above, as long as that Compiled Work is distributed in such a way that
+the recipients may install the Compiled Work on their system exactly
+as it would have been installed if they generated a Compiled Work
+directly from the Work.
+
+4. If you are the Current Maintainer of the Work, you may, without
+restriction, modify the Work, thus creating a Derived Work. You may
+also distribute the Derived Work without restriction, including
+Compiled Works generated from the Derived Work. Derived Works
+distributed in this manner by the Current Maintainer are considered to
+be updated versions of the Work.
+
+5. If you are not the Current Maintainer of the Work, you may modify
+your copy of the Work, thus creating a Derived Work based on the Work,
+and compile this Derived Work, thus creating a Compiled Work based on
+the Derived Work.
+
+6. If you are not the Current Maintainer of the Work, you may
+distribute a Derived Work provided the following conditions are met
+for every component of the Work unless that component clearly states
+in the copyright notice that it is exempt from that condition. Only
+the Current Maintainer is allowed to add such statements of exemption
+to a component of the Work.
+
+ a. If a component of this Derived Work can be a direct replacement
+ for a component of the Work when that component is used with the
+ Base Interpreter, then, wherever this component of the Work
+ identifies itself to the user when used interactively with that
+ Base Interpreter, the replacement component of this Derived Work
+ clearly and unambiguously identifies itself as a modified version
+ of this component to the user when used interactively with that
+ Base Interpreter.
+
+ b. Every component of the Derived Work contains prominent notices
+ detailing the nature of the changes to that component, or a
+ prominent reference to another file that is distributed as part
+ of the Derived Work and that contains a complete and accurate log
+ of the changes.
+
+ c. No information in the Derived Work implies that any persons,
+ including (but not limited to) the authors of the original version
+ of the Work, provide any support, including (but not limited to)
+ the reporting and handling of errors, to recipients of the
+ Derived Work unless those persons have stated explicitly that
+ they do provide such support for the Derived Work.
+
+ d. You distribute at least one of the following with the Derived Work:
+
+ 1. A complete, unmodified copy of the Work;
+ if your distribution of a modified component is made by
+ offering access to copy the modified component from a
+ designated place, then offering equivalent access to copy
+ the Work from the same or some similar place meets this
+ condition, even though third parties are not compelled to
+ copy the Work along with the modified component;
+
+ 2. Information that is sufficient to obtain a complete,
+ unmodified copy of the Work.
+
+7. If you are not the Current Maintainer of the Work, you may
+distribute a Compiled Work generated from a Derived Work, as long as
+the Derived Work is distributed to all recipients of the Compiled
+Work, and as long as the conditions of Clause 6, above, are met with
+regard to the Derived Work.
+
+8. The conditions above are not intended to prohibit, and hence do not
+apply to, the modification, by any method, of any component so that it
+becomes identical to an updated version of that component of the Work as
+it is distributed by the Current Maintainer under Clause 4, above.
+
+9. Distribution of the Work or any Derived Work in an alternative
+format, where the Work or that Derived Work (in whole or in part) is
+then produced by applying some process to that format, does not relax or
+nullify any sections of this license as they pertain to the results of
+applying that process.
+
+10. a. A Derived Work may be distributed under a different license
+ provided that license itself honors the conditions listed in
+ Clause 6 above, in regard to the Work, though it does not have
+ to honor the rest of the conditions in this license.
+
+ b. If a Derived Work is distributed under a different license, that
+ Derived Work must provide sufficient documentation as part of
+ itself to allow each recipient of that Derived Work to honor the
+ restrictions in Clause 6 above, concerning changes from the Work.
+
+11. This license places no restrictions on works that are unrelated to
+the Work, nor does this license place any restrictions on aggregating
+such works with the Work by any means.
+
+12. Nothing in this license is intended to, or may be used to, prevent
+complete compliance by all parties with all applicable laws.
+
+
+NO WARRANTY
+===========
+
+There is no warranty for the Work. Except when otherwise stated in
+writing, the Copyright Holder provides the Work `as is', without
+warranty of any kind, either expressed or implied, including, but not
+limited to, the implied warranties of merchantability and fitness for a
+particular purpose. The entire risk as to the quality and performance
+of the Work is with you. Should the Work prove defective, you assume
+the cost of all necessary servicing, repair, or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will The Copyright Holder, or any author named in the components of the
+Work, or any other party who may distribute and/or modify the Work as
+permitted above, be liable to you for damages, including any general,
+special, incidental or consequential damages arising out of any use of
+the Work or out of inability to use the Work (including, but not limited
+to, loss of data, data being rendered inaccurate, or losses sustained by
+anyone as a result of any failure of the Work to operate with any other
+programs), even if the Copyright Holder or said author or said other
+party has been advised of the possibility of such damages.
+
+
+MAINTENANCE OF THE WORK
+=======================
+
+The Work has the status `author-maintained' if the Copyright Holder
+explicitly and prominently states near the primary copyright notice in
+the Work that the Work can only be maintained by the Copyright Holder
+or simply that it is `author-maintained'.
+
+The Work has the status `maintained' if there is a Current Maintainer
+who has indicated in the Work that they are willing to receive error
+reports for the Work (for example, by supplying a valid e-mail
+address). It is not required for the Current Maintainer to acknowledge
+or act upon these error reports.
+
+The Work changes from status `maintained' to `unmaintained' if there
+is no Current Maintainer, or the person stated to be Current
+Maintainer of the work cannot be reached through the indicated means
+of communication for a period of six months, and there are no other
+significant signs of active maintenance.
+
+You can become the Current Maintainer of the Work by agreement with
+any existing Current Maintainer to take over this role.
+
+If the Work is unmaintained, you can become the Current Maintainer of
+the Work through the following steps:
+
+ 1. Make a reasonable attempt to trace the Current Maintainer (and
+ the Copyright Holder, if the two differ) through the means of
+ an Internet or similar search.
+
+ 2. If this search is successful, then enquire whether the Work
+ is still maintained.
+
+ a. If it is being maintained, then ask the Current Maintainer
+ to update their communication data within one month.
+
+ b. If the search is unsuccessful or no action to resume active
+ maintenance is taken by the Current Maintainer, then announce
+ within the pertinent community your intention to take over
+ maintenance. (If the Work is a LaTeX work, this could be
+ done, for example, by posting to comp.text.tex.)
+
+ 3a. If the Current Maintainer is reachable and agrees to pass
+ maintenance of the Work to you, then this takes effect
+ immediately upon announcement.
+
+ b. If the Current Maintainer is not reachable and the Copyright
+ Holder agrees that maintenance of the Work be passed to you,
+ then this takes effect immediately upon announcement.
+
+ 4. If you make an `intention announcement' as described in 2b. above
+ and after three months your intention is challenged neither by
+ the Current Maintainer nor by the Copyright Holder nor by other
+ people, then you may arrange for the Work to be changed so as
+ to name you as the (new) Current Maintainer.
+
+ 5. If the previously unreachable Current Maintainer becomes
+ reachable once more within three months of a change completed
+ under the terms of 3b) or 4), then that Current Maintainer must
+ become or remain the Current Maintainer upon request provided
+ they then update their communication data within one month.
+
+A change in the Current Maintainer does not, of itself, alter the fact
+that the Work is distributed under the LPPL license.
+
+If you become the Current Maintainer of the Work, you should
+immediately provide, within the Work, a prominent and unambiguous
+statement of your status as Current Maintainer. You should also
+announce your new status to the same pertinent community as
+in 2b) above.
+
+
+WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
+======================================================
+
+This section contains important instructions, examples, and
+recommendations for authors who are considering distributing their
+works under this license. These authors are addressed as `you' in
+this section.
+
+Choosing This License or Another License
+----------------------------------------
+
+If for any part of your work you want or need to use *distribution*
+conditions that differ significantly from those in this license, then
+do not refer to this license anywhere in your work but, instead,
+distribute your work under a different license. You may use the text
+of this license as a model for your own license, but your license
+should not refer to the LPPL or otherwise give the impression that
+your work is distributed under the LPPL.
+
+The document `modguide.tex' in the base LaTeX distribution explains
+the motivation behind the conditions of this license. It explains,
+for example, why distributing LaTeX under the GNU General Public
+License (GPL) was considered inappropriate. Even if your work is
+unrelated to LaTeX, the discussion in `modguide.tex' may still be
+relevant, and authors intending to distribute their works under any
+license are encouraged to read it.
+
+A Recommendation on Modification Without Distribution
+-----------------------------------------------------
+
+It is wise never to modify a component of the Work, even for your own
+personal use, without also meeting the above conditions for
+distributing the modified component. While you might intend that such
+modifications will never be distributed, often this will happen by
+accident -- you may forget that you have modified that component; or
+it may not occur to you when allowing others to access the modified
+version that you are thus distributing it and violating the conditions
+of this license in ways that could have legal implications and, worse,
+cause problems for the community. It is therefore usually in your
+best interest to keep your copy of the Work identical with the public
+one. Many works provide ways to control the behavior of that work
+without altering any of its licensed components.
+
+How to Use This License
+-----------------------
+
+To use this license, place in each of the components of your work both
+an explicit copyright notice including your name and the year the work
+was authored and/or last substantially modified. Include also a
+statement that the distribution and/or modification of that
+component is constrained by the conditions in this license.
+
+Here is an example of such a notice and statement:
+
+ %% pig.dtx
+ %% Copyright 2005 M. Y. Name
+ %
+ % This work may be distributed and/or modified under the
+ % conditions of the LaTeX Project Public License, either version 1.3
+ % of this license or (at your option) any later version.
+ % The latest version of this license is in
+ % http://www.latex-project.org/lppl.txt
+ % and version 1.3 or later is part of all distributions of LaTeX
+ % version 2005/12/01 or later.
+ %
+ % This work has the LPPL maintenance status `maintained'.
+ %
+ % The Current Maintainer of this work is M. Y. Name.
+ %
+ % This work consists of the files pig.dtx and pig.ins
+ % and the derived file pig.sty.
+
+Given such a notice and statement in a file, the conditions
+given in this license document would apply, with the `Work' referring
+to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
+generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
+referring to any `LaTeX-Format', and both `Copyright Holder' and
+`Current Maintainer' referring to the person `M. Y. Name'.
+
+If you do not want the Maintenance section of LPPL to apply to your
+Work, change `maintained' above into `author-maintained'.
+However, we recommend that you use `maintained', as the Maintenance
+section was added in order to ensure that your Work remains useful to
+the community even when you can no longer maintain and support it
+yourself.
+
+Derived Works That Are Not Replacements
+---------------------------------------
+
+Several clauses of the LPPL specify means to provide reliability and
+stability for the user community. They therefore concern themselves
+with the case that a Derived Work is intended to be used as a
+(compatible or incompatible) replacement of the original Work. If
+this is not the case (e.g., if a few lines of code are reused for a
+completely different task), then clauses 6b and 6d shall not apply.
+
+
+Important Recommendations
+-------------------------
+
+ Defining What Constitutes the Work
+
+ The LPPL requires that distributions of the Work contain all the
+ files of the Work. It is therefore important that you provide a
+ way for the licensee to determine which files constitute the Work.
+ This could, for example, be achieved by explicitly listing all the
+ files of the Work near the copyright notice of each file or by
+ using a line such as:
+
+ % This work consists of all files listed in manifest.txt.
+
+ in that place. In the absence of an unequivocal list it might be
+ impossible for the licensee to determine what is considered by you
+ to comprise the Work and, in such a case, the licensee would be
+ entitled to make reasonable conjectures as to which files comprise
+ the Work.
+
diff --git a/macros/latex/contrib/gensymb/README b/macros/latex/contrib/gensymb/README
new file mode 100644
index 0000000000..233087075f
--- /dev/null
+++ b/macros/latex/contrib/gensymb/README
@@ -0,0 +1,30 @@
+============================================================
+
+ gensymb – Generic symbols for both text and math mode
+
+============================================================
+Walter Schmidt
+
+Keiran Harcombe
+kjh@harcombe.net
+
+This LaTeX package provides generic commands
+\degree, \celsius, \perthousand, \micro and \ohm, which
+work both in text and math mode. The package should
+co-operate flawlessly with the well-known units.sty.
+Various means are provided to fake the symbols or take
+them from external symbol fonts, if they are not available
+in the default fonts used in the document. The package
+makes optionally use of upgreek.sty.
+
+The style files can be unpacked by running the particular
+installation script (.ins) through LaTeX. The files will
+be created immediately in the appropriate TDS directory
+tex/latex/was, if this directory exists and the DOCSTRIP
+tool is properly configured -- otherwise they are written
+into the current directory.
+
+The documentation of a package can be generated by running
+the particular .dtx file through LaTeX.
+
+==finis
diff --git a/macros/latex/contrib/was/gensymb.dtx b/macros/latex/contrib/gensymb/gensymb.dtx
index 95d5874076..8629a84f87 100644
--- a/macros/latex/contrib/was/gensymb.dtx
+++ b/macros/latex/contrib/gensymb/gensymb.dtx
@@ -2,19 +2,24 @@
%
% \iffalse
%
-% File `gensymb.dtx'.
-% Copyright (c) 2003 Walter Schmidt
+%% gensymb.dtx
+% Copyright (c) 2005--2022 Walter Schmidt
+% Copyright (c) 2022-- Keiran Harcombe
%
-% This program may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.2
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
-% and version 1.2 or later is part of all distributions of LaTeX
-% version 1999/12/01 or later.
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
%
-% This program consists of the files gensymb.dtx and gensymb.ins
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Keiran Harcombe
%
+% This work consists of the files gensymb.dtx, gensymb.ins
+% and the derived file gensymb.sty.%
% \fi
%
% \iffalse
@@ -23,7 +28,7 @@
\ProvidesFile{gensymb.drv}
%</driver>
%<package>\ProvidesPackage{gensymb}
- [2003/07/02 v1.0 (WaS)]
+ [2022/10 v1.0.1 (KJH)]
%<*driver>
\documentclass{ltxdoc}
\OnlyDescription
@@ -40,7 +45,7 @@
% \GetFileInfo{gensymb.drv}
%
% \title{The \textsf{gensymb} package for \LaTeXe}
-% \author{Walter Schmidt\thanks{{\ttfamily w.a.schmidt@gmx.net}}}
+% \author{Walter Schmidt & Keiran Harcombe\thanks{{\ttfamily kjh@harcombe.net}}}
% \date{(\fileversion{} -- \filedate)}
% \maketitle
% \sloppy
diff --git a/macros/latex/contrib/was/gensymb.ins b/macros/latex/contrib/gensymb/gensymb.ins
index 431cb17295..fe37ed2d39 100644
--- a/macros/latex/contrib/was/gensymb.ins
+++ b/macros/latex/contrib/gensymb/gensymb.ins
@@ -1,6 +1,6 @@
% file gensymb.ins
\input docstrip
-\usedir{tex/latex/was}
+\usedir{tex/latex/contrib/gensymb}
\generate{\file{gensymb.sty}{\from{gensymb.dtx}{package}}}
diff --git a/macros/latex/contrib/gensymb/gensymb.pdf b/macros/latex/contrib/gensymb/gensymb.pdf
new file mode 100644
index 0000000000..f0ab15cb81
--- /dev/null
+++ b/macros/latex/contrib/gensymb/gensymb.pdf
Binary files differ
diff --git a/macros/latex/contrib/iexec/iexec.dtx b/macros/latex/contrib/iexec/iexec.dtx
index 28c2a62136..82182ba085 100644
--- a/macros/latex/contrib/iexec/iexec.dtx
+++ b/macros/latex/contrib/iexec/iexec.dtx
@@ -50,7 +50,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{iexec}
%<*package>
-[2022-10-10 0.8.1 Inputable Shell Executions]
+[2022-10-12 0.9.0 Inputable Shell Executions]
%</package>
%<*driver>
\documentclass{ltxdoc}
@@ -105,12 +105,11 @@ Today is
% Today is \iexec[log]{date +\%e-\%b-\%Y}
% \end{multicols}
-% \begin{macro}{\iexec}
+% \DescribeMacro{\iexec}
% The only command provided by this package is |\iexec| \oarg{options} \marg{cmd}.
% Its only mandatory argument \meta{cmd} is the command to be executed
% through the terminal shell (bash, or whatever is set as the default one
% on your user console).
-% \end{macro}
% You have to run |pdflatex| (or just |latex|)
% with the |--shell-escape| flag
@@ -119,7 +118,7 @@ Today is
% \section{Options}
-% \begin{macro}{quiet}
+% \DescribeMacro{quiet}
% If you don't want the output to be visible,
% use |\phantom\{\iexec{...}}|.
% Otherwise, you can use |quiet| option:
@@ -137,13 +136,12 @@ I just want to delete some file:
%\iffalse
%</verb>
%\fi
-% \end{macro}
% In this case, whatever the shell command produces will not be included
% into the document.
-% \begin{macro}{stdout}
-% The output of your code is saved into the file provided as the
-% second optional argument of |\iexec| (the default value is |iexec.tmp|):
+% \DescribeMacro{stdout}
+% The output of your code is saved into the file provided as an
+% optional argument of |\iexec| (the default value is |iexec.tmp|):
%\iffalse
%<*verb>
%\fi
@@ -158,9 +156,26 @@ Today is \iexec[stdout=date.txt]{date +\%e-\%b-\%Y | tr -d '\\n'}.
%</verb>
%\fi
% The tailing part of the command here removes all ends-of-line.
-% \end{macro}
-% \begin{macro}{trace}
+% \DescribeMacro{stderr}
+% The error output of the code is saved into the file provided as an
+% optional argument of |\iexec| (by default the error output
+% is streamed into |stdout|):
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\documentclass{article}
+\usepackage{iexec}
+\begin{document}
+Today is \iexec[stderr=my.txt]{broken-command}.
+\end{document}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+
+% \DescribeMacro{trace}
% The file specified will be deleted right after its usage. If you don't
% want this to happen, use |trace| package option: all files will remain
% in the directory where they were created.
@@ -179,9 +194,8 @@ This file won't be deleted: \iexec[stdout=me.txt]{whoami}.
%\iffalse
%</verb>
%\fi
-% \end{macro}
-% \begin{macro}{append}
+% \DescribeMacro{append}
% The stdout produced will be appended to the file specified:
%\iffalse
%<*verb>
@@ -198,9 +212,8 @@ This file won't be deleted: \iexec[stdout=me.txt]{whoami}.
%\iffalse
%</verb>
%\fi
-% \end{macro}
-% \begin{macro}{log}
+% \DescribeMacro{log}
% The stdout produced will be printed in \TeX{} log:
%\iffalse
%<*verb>
@@ -215,9 +228,8 @@ This file won't be deleted: \iexec[stdout=me.txt]{whoami}.
%\iffalse
%</verb>
%\fi
-% \end{macro}
-% \begin{macro}{null}
+% \DescribeMacro{null}
% The stdout of the command will be sent to |/dev/null|:
%\iffalse
%<*verb>
@@ -232,7 +244,6 @@ This file won't be deleted: \iexec[stdout=me.txt]{whoami}.
%\iffalse
%</verb>
%\fi
-% \end{macro}
% \StopEventually{}
@@ -244,6 +255,8 @@ This file won't be deleted: \iexec[stdout=me.txt]{whoami}.
% \changes{v0.5.0}{2022/01/08}{Major bug fixes}
% \changes{v0.6.0}{2022/10/09}{Additional options 'log' and 'append'}
% \changes{v0.7.0}{2022/10/10}{Additional option 'null'}
+% \changes{v0.8.0}{2022/10/11}{Bug fixes}
+% \changes{v0.9.0}{2022/10/12}{Additional option 'stderr'}
% First, we include a few packages:
% \begin{macrocode}
@@ -263,6 +276,7 @@ This file won't be deleted: \iexec[stdout=me.txt]{whoami}.
/iexec,
stdout/.estore in = \iexec@stdout,
stdout/.default = iexec.tmp,
+ stderr/.estore in = \iexec@stderr,
trace/.estore in = \iexec@traceit,
append/.estore in = \iexec@append,
log/.estore in = \iexec@log,
@@ -308,6 +322,10 @@ This file won't be deleted: \iexec[stdout=me.txt]{whoami}.
\fi\fi%
\begingroup%
% \end{macrocode}
+% Then, start the log from a clean line:
+% \begin{macrocode}
+ \message{^^J}%
+% \end{macrocode}
% Then, we define a few special chars in order to escape them in the shell
% (the full
% list of them is in \href{https://ctan.mirror.norbert-ruehl.de/info/macros2e/macros2e.pdf}{macros2e}):
@@ -319,33 +337,37 @@ This file won't be deleted: \iexec[stdout=me.txt]{whoami}.
% \end{macrocode}
% Then, we execute it:
% \begin{macrocode}
- \ShellEscape{#2 \ifdefined\iexec@append>\fi>\ifdefined\iexec@null/dev/null\else\iexec@stdout\fi}%
+ \def\iexec@cmd{(#2)
+ \ifdefined\iexec@append>\fi>
+ \ifdefined\iexec@null/dev/null\else\iexec@stdout\fi
+ \space\ifdefined\iexec@stderr2>\iexec@stderr\else2>&1\fi}
+ \ShellEscape{\iexec@cmd}%
% \end{macrocode}
% Then, a message is printed to TeX log:
% \begin{macrocode}
- \message{^^Jiexec: [#2 \ifdefined\iexec@append>\fi>\ifdefined\iexec@null/dev/null\else\iexec@stdout\fi]^^J}%
+ \message{iexec: [\iexec@cmd]^^J}%
\endgroup%
% \end{macrocode}
% Then, if required, the content of the stdout file will be printed to the log:
% \begin{macrocode}
\ifdefined\iexec@null\else
\ifdefined\iexec@log
- \message{^^Jiexec: this is the content of \iexec@stdout:^^J}%
+ \message{iexec: this is the content of \iexec@stdout:^^J}%
\iexec@typeout{\iexec@stdout}
- \message{^^J<EOF>^^J}%
+ \message{<EOF>^^J}%
\fi\fi%
% \end{macrocode}
% Then, include the produced output into the current document:
% \begin{macrocode}
\ifdefined\iexec@null\else
\ifdefined\iexec@quiet
- \message{^^Jiexec: Due to 'quiet' option we didn't read
+ \message{iexec: Due to 'quiet' option we didn't read
the content of '\iexec@stdout' (\pdffilesize{} bytes)^^J}%
\else%
- \message{^^Jiexec: We include the content of
+ \message{iexec: We include the content of
'\iexec@stdout' (\pdffilesize{} bytes)...^^J}%
\input{\iexec@stdout}%
- \message{^^Jiexec: The content of '\iexec@stdout'
+ \message{iexec: The content of '\iexec@stdout'
was included into the document^^J}%
\fi\fi%
% \end{macrocode}
@@ -353,15 +375,15 @@ This file won't be deleted: \iexec[stdout=me.txt]{whoami}.
% \begin{macrocode}
\ifdefined\iexec@null\else
\ifiexec@trace%
- \message{^^Jiexec: Due to package option 'trace',
+ \message{iexec: Due to package option 'trace',
the file '\iexec@stdout' was not deleted^^J}%
\else%
\ifdefined\iexec@traceit%
- \message{^^Jiexec: Due to 'trace' option,
+ \message{iexec: Due to 'trace' option,
the file '\iexec@stdout' was not deleted^^J}%
\else%
\ShellEscape{rm \iexec@stdout}%
- \message{^^Jiexec: The file '\iexec@stdout' was deleted^^J}%
+ \message{iexec: The file '\iexec@stdout' was deleted^^J}%
\fi%
\fi\fi%
\endgroup
diff --git a/macros/latex/contrib/iexec/iexec.pdf b/macros/latex/contrib/iexec/iexec.pdf
index 58c79fa6a3..9bab38749a 100644
--- a/macros/latex/contrib/iexec/iexec.pdf
+++ b/macros/latex/contrib/iexec/iexec.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/README.md b/macros/latex/contrib/koma-script/README.md
index 5505b16a69..1aa2aa7fa1 100644
--- a/macros/latex/contrib/koma-script/README.md
+++ b/macros/latex/contrib/koma-script/README.md
@@ -1,4 +1,4 @@
-# KOMA-Script 2022/07/04 v3.37
+# KOMA-Script 2022/10/12 v3.38
Copyright [Markus Kohm](mailto:komascript@gmx.info) 1994–2022
This material is subject to the LaTeX Project Public License Version 1.3c. See [`lppl.txt`](lppl.txt) (English) or [`lppl-de.txt`](lppl-de.txt) (German) for the details of that license.
@@ -9,9 +9,9 @@ KOMA-Script is a versatile bundle of LaTeX2e document classes and packages. The
------------------------------------------------------------------------------
-##Classes and packages in this release:
+## Classes and packages in this release:
-###`koma-script-source-doc` — internal source documentation class of KOMA-Script
+### `koma-script-source-doc` — internal source documentation class of KOMA-Script
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -28,10 +28,11 @@ Requires: ltxdoc - the LaTeX2e source documentation class
scrartcl - the KOMA-Script article class
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022-03-10 v0.91
+Version: 2022-07-08 v0.92
</pre>
***
-###`scraddr` — Package to provide data from scrlttr2's adr-files
+
+### `scraddr` — Package to provide data from scrlttr2's adr-files
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -46,7 +47,8 @@ State: Author maintained
Version: 2022/01/24 v1.1d
</pre>
***
-###`scrartcl` — versatile class may be used as a drop-in replacement of article
+
+### `scrartcl` — versatile class may be used as a drop-in replacement of article
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -66,10 +68,11 @@ Requires: scrkbase - internal KOMA-Script package
Recommended: scrlayer-scrpage - KOMA-Script package
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrarticle` — wrapper class to scrartcl
+
+### `scrarticle` — wrapper class to scrartcl
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -82,10 +85,11 @@ Abstract: scrreport is a very simple wrapper class to scrartcl. Is has
Requires: scrartcl.cls - KOMA-Script class
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrbase` — basic features for KOMA-Script, e.g. conditionals and key=value
+
+### `scrbase` — basic features for KOMA-Script, e.g. conditionals and key=value
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -122,10 +126,11 @@ Requires: keyval - key=value package from the graphics bundle
manipulation
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrbook` — versatile class may be used as a drop-in replacement of book
+
+### `scrbook` — versatile class may be used as a drop-in replacement of book
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -143,10 +148,11 @@ Requires: scrkbase - internal KOMA-Script package
typearea - KOMA-Script package
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrdate` — calender date operations, e.g. calculation of the day of the week
+
+### `scrdate` — calender date operations, e.g. calculation of the day of the week
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -163,10 +169,11 @@ Requires: scrkbase - KOMA-Script package for some basic features.
manipulation
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrdoc` — deprecated internal source documentation class of KOMA-Script
+
+### `scrdoc` — deprecated internal source documentation class of KOMA-Script
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -181,7 +188,8 @@ State: deprecated, will be removed soon
Version: 2022/06/24 v0.1j
</pre>
***
-###`scrextend` — make some features of the KOMA-Script classes available for others
+
+### `scrextend` — make some features of the KOMA-Script classes available for others
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -192,10 +200,11 @@ Requires: scrkbase - internal package with some basics of KOMA-Script
etoolbox - tool-box for LaTeX programming using e-TeX
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrfontsizes` — package to generate a KOMA-Script font size file
+
+### `scrfontsizes` — package to generate a KOMA-Script font size file
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -205,10 +214,11 @@ Abstract: scrfontsizes is a LaTeX package of the KOMA-Script bundle.
Requires: scrextend - some KOMA-Script features for other classes
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrhack` — patch some isues with other packages
+
+### `scrhack` — patch some isues with other packages
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -224,10 +234,11 @@ Requires: scrkbase - internal KOMA-Script package with basics
xpatch - extending etoolbox patching commands
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrjura` — contract environment for advocates and scholary persons in law
+
+### `scrjura` — contract environment for advocates and scholary persons in law
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -241,10 +252,11 @@ Requires: scrkbase - internal KOMA-Script package with basics
tocbasic - features for helper files and float environments
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrkbase` — internal basic features for KOMA-Script classes and packages
+
+### `scrkbase` — internal basic features for KOMA-Script classes and packages
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -257,10 +269,11 @@ Requires: scrbase - KOMA-Script package for some basic features.
manipulation
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrlayer-notecolumn` — control note columns parallel to the main text
+
+### `scrlayer-notecolumn` — control note columns parallel to the main text
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -282,7 +295,8 @@ State: Author maintained, proof of concept
Version: 2022/06/29 v0.3.3915
</pre>
***
-###`scrlayer-scrpage` — controlling page headers and footers
+
+### `scrlayer-scrpage` — controlling page headers and footers
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -300,10 +314,11 @@ Abstract: scrlayer-scrpage is a LaTeX package of the KOMA-Script
Requires: scrlayer.sty
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrlayer` — defining layers and controlling page headers and footers
+
+### `scrlayer` — defining layers and controlling page headers and footers
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -326,10 +341,11 @@ Abstract: scrlayer is a LaTeX package of the KOMA-Script bundle.
Requires: scrkbase.sty
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrletter` — wrapper class to scrlttr2
+
+### `scrletter` — wrapper class to scrlttr2
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -342,10 +358,11 @@ Abstract: scrreport is a very simple wrapper class to scrlttr2. Is has
Requires: scrlttr2.cls - KOMA-Script class
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrletter` — letter extention to KOMA-Script classes
+
+### `scrletter` — letter extention to KOMA-Script classes
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -358,10 +375,11 @@ Requires: scrkbase - internal KOMA-Script package
Recommended: marvosym - package by Martin Vogel providing symbols
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrlfile-hook` — internal subpackage of scrlfile
+
+### `scrlfile-hook` — internal subpackage of scrlfile
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -370,10 +388,11 @@ Abstract: scrlfile-hook is an internal subpackage of scrlfile to be
Requires: scrlogo.sty
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrlfile-pacholdlatex` — internal subpackage of scrlfile
+
+### `scrlfile-pacholdlatex` — internal subpackage of scrlfile
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -382,10 +401,11 @@ Abstract: scrlfile-patcholdlatex is an internal subpackage of scrlfile
Requires: scrlogo.sty
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrlfile` — control of package dependencies
+
+### `scrlfile` — control of package dependencies
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -401,10 +421,11 @@ Abstract: scrlfile is a LaTeX package of the KOMA-Script bundle. It
Requires: scrlfile-hook.sty, scrlfile-patcholdlatex.sty, scrlogo.sty
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrlogo` — print the KOMA-Script logo
+
+### `scrlogo` — print the KOMA-Script logo
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -414,10 +435,11 @@ Abstract: scrlogo is a LaTeX package of the KOMA-Script bundle. It
Requires:
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrlttr2` — versatile letter class with separation of text area and note paper
+
+### `scrlttr2` — versatile letter class with separation of text area and note paper
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -448,10 +470,11 @@ Requires: scrkbase - internal KOMA-Script package
Recommended: marvosym - package by Martin Vogel providing symbols
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrreport` — wrapper class to scrreprt
+
+### `scrreport` — wrapper class to scrreprt
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -464,10 +487,11 @@ Abstract: scrreport is a very simple wrapper class to scrreprt. Is has
Requires: scrreprt.cls - KOMA-Script class
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrreprt` — versatile class may be used as a drop-in replacement of report
+
+### `scrreprt` — versatile class may be used as a drop-in replacement of report
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -485,10 +509,11 @@ Requires: scrkbase - internal KOMA-Script package
typearea - KOMA-Script package
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrtime` — show the time of the LaTeX run
+
+### `scrtime` — show the time of the LaTeX run
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -498,10 +523,11 @@ Abstract: scrtime is a LaTeX package of the KOMA-Script bundle. It
Requires: scrkbase - internal package with some basics of KOMA-Script
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`scrwfile` — Spare write handles for helper files to avoid `No room' messages
+
+### `scrwfile` — Spare write handles for helper files to avoid `No room' messages
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -528,10 +554,11 @@ Requires: scrbase - some basic features for class and package
scrlfile - control of package dependencies
License: LPPL 1.3c or later
State: Author maintained
-Version: 2021/05/30 v0.1.10
+Version: 2022/10/06 v0.1.11
</pre>
***
-###`tocbasic` — Management of tables and lists of contents using helper files
+
+### `tocbasic` — Management of tables and lists of contents using helper files
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -554,10 +581,11 @@ Abstract: tocbasic is a LaTeX package of the KOMA-Script bundle. The
Requires: scrbase - KOMA-Script package for some basic features.
License: LPPL 1.3c or later
State: Author maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-###`typearea` — Calculating typeing area and margins depending on typographic rules
+
+### `typearea` — Calculating typeing area and margins depending on typographic rules
<pre>
Maintainer: Markus Kohm
E-Mail: komascript@gmx.info
@@ -576,10 +604,11 @@ Abstract: Many LaTeX classes, including the standard classes, present
Requires: scrkbase - internal basic features for KOMA-Script packages
License: LPPL 1.3c or later
State: Autor maintained
-Version: 2022/07/04 v3.37
+Version: 2022/10/12 v3.38
</pre>
***
-##Installation:
+
+## Installation:
We highly recommend installing the latest official release via the package manager of the TeX distribution you are using. For example, for Vanilla TeX Live this would be `tlmgr` or `tlshell` or `tlcockpit`. For MiKTeX it would be `MiKTeX Console`. Linux users who use the TeX Live of their Linux distribution will often find KOMA script in one of the many TeX Live supplementary packages. In Debian, for example, it is in `texlive-latex-recommended`.
diff --git a/macros/latex/contrib/koma-script/doc/common-fontsize-de.tex b/macros/latex/contrib/koma-script/doc/common-fontsize-de.tex
index b14cbdd95c..f6c51556d6 100644
--- a/macros/latex/contrib/koma-script/doc/common-fontsize-de.tex
+++ b/macros/latex/contrib/koma-script/doc/common-fontsize-de.tex
@@ -24,7 +24,7 @@
% ======================================================================
\KOMAProvidesFile{common-fontsize-de.tex}
- [$Date: 2022-06-05 12:40:11 +0200 (So, 05. Jun 2022) $
+ [$Date: 2022-10-06 14:30:20 +0200 (Do, 06. Okt 2022) $
KOMA-Script guide (common paragraphs: fontsize)]
\section{Wahl der Schriftgröße für das Dokument}
@@ -121,7 +121,9 @@ und der Klasse abhängig. %
Diese\textnote{Achtung!} Option sollte keinesfalls als Ersatz für
\Macro{fontsize} (siehe \cite{latex:fntguide}) missverstanden werden. Sie
sollte auch nicht anstelle einer der von der Grundschrift abhängigen
-Schriftgrößenanweisungen, \Macro{tiny} bis \Macro{Huge}, verwendet werden!
+Schriftgrößenanweisungen, \Macro{tiny} bis \Macro{Huge}, verwendet werden! Die
+Verwendung innerhalb eines Absatzes ist aus diesem Grund auch explizit
+verboten!
\IfThisCommonLabelBase{scrlttr2}{%
Bei \Class{scrlttr2} ist \OptionValue{fontsize}{12pt} voreingestellt.
diff --git a/macros/latex/contrib/koma-script/doc/common-fontsize-en.tex b/macros/latex/contrib/koma-script/doc/common-fontsize-en.tex
index b1e8dcd1b0..e8ad65e077 100644
--- a/macros/latex/contrib/koma-script/doc/common-fontsize-en.tex
+++ b/macros/latex/contrib/koma-script/doc/common-fontsize-en.tex
@@ -24,7 +24,7 @@
% ======================================================================
\KOMAProvidesFile{common-fontsize-en.tex}
- [$Date: 2022-06-05 12:40:11 +0200 (So, 05. Jun 2022) $
+ [$Date: 2022-10-06 14:30:20 +0200 (Do, 06. Okt 2022) $
KOMA-Script guide (common paragraphs: fontsize)]
\translator{Markus Kohm\and Krickette Murabayashi\and Karl Hagen}
@@ -105,7 +105,8 @@ depends on these packages and on the class. \IfThisCommonLabelBase{maincls}{%
This\textnote{Attention!} option should by no means be misinterpreted as a
substitute for \Macro{fontsize} (see \cite{latex:fntguide}). Also, you should
not use it in place of one of the font size commands that are relative to the
-main font, from \Macro{tiny} to \Macro{Huge}.
+main font, from \Macro{tiny} to \Macro{Huge}. The use within a paragraph is
+therefore also explicitly prohibited.
\IfThisCommonLabelBase{scrlttr2}{%
For \Class{scrlttr2} the default is \OptionValue{fontsize}{12pt}.
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-00-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-00-de.pdf
index 08b3010193..2249512b97 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-00-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-00-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-00-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-00-en.pdf
index 37dca09318..67abe74cd3 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-00-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-00-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-01-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-01-de.pdf
index 85cb21242a..b5a190fa23 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-01-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-01-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-01-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-01-en.pdf
index ecf1c97783..270c7c3d7d 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-01-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-01-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-02-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-02-de.pdf
index e51467739e..82f7716e3a 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-02-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-02-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-02-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-02-en.pdf
index 5dd319ab72..31bcb38952 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-02-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-02-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-03-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-03-de.pdf
index 069e0fe921..eb2f4259cb 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-03-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-03-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-03-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-03-en.pdf
index 950caf38ec..fbfd018450 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-03-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-03-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-04-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-04-de.pdf
index f3dcc6a937..9631976843 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-04-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-04-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-04-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-04-en.pdf
index aeb27cae95..48ad48858a 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-04-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-04-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-05-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-05-de.pdf
index 8d4f4c09bf..a0f0bca15d 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-05-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-05-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-05-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-05-en.pdf
index fcffded9b7..2a956f2965 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-05-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-05-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-06-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-06-de.pdf
index 209da9c98e..e66bd554e1 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-06-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-06-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-06-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-06-en.pdf
index 8610f26119..c64985369e 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-06-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-06-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-07-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-07-de.pdf
index 31ef8a8944..4e65475a2f 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-07-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-07-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-07-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-07-en.pdf
index b401622527..2f76bfa3f7 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-07-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-07-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-08-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-08-de.pdf
index 778bfce9b1..d9de127751 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-08-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-08-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-08-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-08-en.pdf
index 341c1e8550..dc4a322f89 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-08-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-08-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-09-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-09-de.pdf
index f353e53639..259a7dc2dd 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-09-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-09-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-09-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-09-en.pdf
index 750b66b484..1a384afac1 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-09-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-09-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-10-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-10-de.pdf
index f014485f97..dac0d2ec28 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-10-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-10-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-10-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-10-en.pdf
index e4298822bc..a277f2fc55 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-10-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-10-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-11-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-11-de.pdf
index 56d76928d3..9f50de50e4 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-11-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-11-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-11-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-11-en.pdf
index ebfcc1282c..8fcbc7e47d 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-11-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-11-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-12-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-12-de.pdf
index 93c2806ec5..72a9aea2d5 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-12-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-12-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-12-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-12-en.pdf
index 0b6c8d50c5..4bebc44a1f 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-12-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-12-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-13-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-13-de.pdf
index 9b99ab6a1b..88f0d60137 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-13-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-13-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-13-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-13-en.pdf
index e67542f275..e8a805b47b 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-13-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-13-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-14-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-14-de.pdf
index 664b450743..64b9623031 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-14-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-14-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-14-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-14-en.pdf
index a6d1032174..d737001ea5 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-14-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-14-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-15-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-15-de.pdf
index 3decabe3a0..2c8345548d 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-15-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-15-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-15-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-15-en.pdf
index 9f4b4d2ef9..4939295488 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-15-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-15-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-16-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-16-de.pdf
index 57e1e3252b..048a7793da 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-16-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-16-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-16-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-16-en.pdf
index 1db47bbf48..52ed1ab06a 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-16-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-16-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-17-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-17-de.pdf
index 1a4aa70316..9aefd10579 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-17-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-17-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-17-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-17-en.pdf
index 8d9479cf8a..7903207d01 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-17-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-17-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-18-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-18-de.pdf
index b027108d4a..94935d2668 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-18-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-18-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-18-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-18-en.pdf
index 1349911d41..d70ca642c1 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-18-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-18-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-19-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-19-de.pdf
index 7b9cd2c348..464fb712e4 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-19-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-19-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-19-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-19-en.pdf
index 05514b4534..3f45de2755 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-19-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-19-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-20-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-20-de.pdf
index c6533e0b9a..3cf39ec1b7 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-20-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-20-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-20-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-20-en.pdf
index 916ceb1345..09d88c5d65 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-20-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-20-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-21-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-21-de.pdf
index b8eccb8443..7602ec5e30 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-21-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-21-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-21-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-21-en.pdf
index 993f0f3135..cc74aca2f1 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-21-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-21-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-22-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-22-de.pdf
index 69c2272384..873f92bf96 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-22-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-22-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-22-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-22-en.pdf
index b05ee71af2..5b5c16e21d 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-22-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-22-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-23-de.pdf b/macros/latex/contrib/koma-script/doc/letter-example-23-de.pdf
index 25f291c9a0..c1bbff8084 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-23-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-23-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/letter-example-23-en.pdf b/macros/latex/contrib/koma-script/doc/letter-example-23-en.pdf
index 7f651e8e02..ef315480af 100644
--- a/macros/latex/contrib/koma-script/doc/letter-example-23-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/letter-example-23-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/scrbase-en.tex b/macros/latex/contrib/koma-script/doc/scrbase-en.tex
index bdba9ee1f5..11358b0efc 100644
--- a/macros/latex/contrib/koma-script/doc/scrbase-en.tex
+++ b/macros/latex/contrib/koma-script/doc/scrbase-en.tex
@@ -24,7 +24,7 @@
% ======================================================================
\KOMAProvidesFile{scrbase-en.tex}
- [$Date: 2022-06-05 12:40:11 +0200 (So, 05. Jun 2022) $
+ [$Date: 2022-07-17 11:19:00 +0200 (So, 17. Jul 2022) $
KOMA-Script package scrbase]
\translator{Markus Kohm\and Melvin Hendrix\and Karl Hagen}
@@ -1360,9 +1360,9 @@ redefinition in the preamble is overwritten with
To define or change language-dependent terms, you normally have to redefine
commands like \Macro{captionsenglish} so that the new or redefined terms are
defined in addition to the previous terms. This is made more difficult by the
-fact that some packages like \Package{german}\IndexPackage{german} or
-\Package{ngerman}\IndexPackage{ngerman} redefine those settings when they are
-loaded. These definitions, unfortunately, occur in a way that undoes all the
+fact that some packages like \Package{babel}\IndexPackage{babel} or
+\Package{polyglossia}\IndexPackage{polyglossia} also redefine those
+commands. These definitions, unfortunately, occur in a way that undoes all the
previous changes. For this reason, it makes sense to delay changes until
\Macro{begin}\PParameter{document} by using \Macro{AtBeginDocument}, that is,
after all packages have been loaded. A user can also use
diff --git a/macros/latex/contrib/koma-script/doc/scrbookreportarticle-de.tex b/macros/latex/contrib/koma-script/doc/scrbookreportarticle-de.tex
index 5e98e698c6..7054166a7e 100644
--- a/macros/latex/contrib/koma-script/doc/scrbookreportarticle-de.tex
+++ b/macros/latex/contrib/koma-script/doc/scrbookreportarticle-de.tex
@@ -24,7 +24,7 @@
% ============================================================================
\KOMAProvidesFile{scrbookreportarticle-de.tex}
- [$Date: 2022-06-05 12:40:11 +0200 (So, 05. Jun 2022) $
+ [$Date: 2022-07-17 12:37:12 +0200 (So, 17. Jul 2022) $
KOMA-Script guide (chapter: scrbook, scrreprt, scrartcl)]
\chapter{Die Hauptklassen \Class{scrbook}, \Class{scrreprt}, \Class{scrartcl}}
@@ -1803,6 +1803,15 @@ ausschaltet. Bevor also versucht wird, die korrekte Darstellung über
Verwendung einer der Optionen zu erzwingen, sollte grundsätzlich ein weiterer
\LaTeX-Lauf ohne Dokumentänderung durchgeführt werden.
+Bei Verwendung der Spracheinstellung \PValue{russian} des Pakets
+\Package{polyglossia}\IndexPackage{polyglossia}\important{\Package{polyglossia}}
+wird die Einstellung der Option durch Umdefinierung von
+\DescRef{\LabelBase.cmd.autodot} übrigens hart überschrieben. Auch ein
+nachträgliches Setzen der Option hat dann keine Wirkung mehr. Seit Version
+1.50a bietet das Paket jedoch eine Option, um dieses sehr restriktive
+Verhalten abzuschalten. Näheres ist der Anleitung \cite{package:polyglossia}
+zu entnehmen.
+
Eine Zusammenfassung der möglichen Werte für die \PName{Einstellung} von
\PName{numbers} bietet \autoref{tab:maincls.numbers}. Im Unterschied zu den
meisten anderen Einstellungen kann diese Option nur in der Dokumentpräambel,
@@ -2830,7 +2839,14 @@ sowie
\DescRef{maincls-experts.cmd.sectionlinesformat}\IndexCmd{sectionlinesformat}
und das zugehörige \DescRef{maincls-experts.cmd.sectioncatchphraseformat}%
\IndexCmd{sectioncatchphraseformat} in \autoref{sec:maincls-experts.sections},
-ab \DescPageRef{maincls-experts.cmd.partlineswithprefixformat} verwiesen.%
+ab \DescPageRef{maincls-experts.cmd.partlineswithprefixformat} verwiesen.
+
+Es wird ausdrücklich darauf hingewiesen, dass das Paket
+\Package{polyglossia}\IndexPackage{polyglossia}\important{\Package{polyglossia}}
+einige der hier dokumentierten Anweisungen abhängig von der Sprache hart
+umdefiniert. Dies betrifft beispielsweise die Spracheinstellungen
+\PValue{russian} und \PValue{hungarian}. Näheres dazu ist dessen Anleitung
+\cite{package:polyglossia} zu entnehmen.%
\EndIndexGroup
diff --git a/macros/latex/contrib/koma-script/doc/scrbookreportarticle-en.tex b/macros/latex/contrib/koma-script/doc/scrbookreportarticle-en.tex
index c1c8426c6a..3cf7fc28a0 100644
--- a/macros/latex/contrib/koma-script/doc/scrbookreportarticle-en.tex
+++ b/macros/latex/contrib/koma-script/doc/scrbookreportarticle-en.tex
@@ -24,7 +24,7 @@
% ============================================================================
\KOMAProvidesFile{scrbookreportarticle-en.tex}
- [$Date: 2022-06-05 12:40:11 +0200 (So, 05. Jun 2022) $
+ [$Date: 2022-07-17 12:37:12 +0200 (So, 17. Jul 2022) $
KOMA-Script guide (chapter: scrbook, scrreprt, scrartcl)]
\translator{Jens-Uwe Morawski\and Gernot Hassenpflug\and Markus Kohm\and
@@ -1663,6 +1663,14 @@ next {\LaTeX} run. Therefore, before you try to use these options to force
the correct numbering format, you should always perform another \LaTeX{} run
without modifying the document.
+When using the language setting \PValue{russian} of the package
+\Package{polyglossia}\IndexPackage{polyglossia}\important{\Package{polyglossia}},
+the setting of the option is overwritten by redefining
+\DescRef{\LabelBase.cmd.autodot}. Subsequent setting of the option then also
+has no effect. However, from version 1.50a the package offers an option to
+switch off this very restrictive behaviour. More details can be found in the
+manual \cite{package:polyglossia}.
+
You can find a summary of the available values for the \PName{setting} of
\PName{numbers} in \autoref{tab:\LabelBase.numbers}. Unlike most other
settings, this option can only be set in the document preamble, i.\,e. before
@@ -2569,7 +2577,14 @@ as well as
and its \DescRef{maincls-experts.cmd.sectioncatchphraseformat}%
\IndexCmd{sectioncatchphraseformat} format in
\autoref{sec:maincls-experts.sections}, starting from
-\DescPageRef{maincls-experts.cmd.partlineswithprefixformat}.%
+\DescPageRef{maincls-experts.cmd.partlineswithprefixformat}.
+
+It is expressly stated that the package
+\Package{polyglossia}\IndexPackage{polyglossia}\important{\Package{polyglossia}}
+redefines some of the instructions documented here depending on the
+language. This concerns, for example, the language settings \PValue{russian}
+and \PValue{hungarian}. For more details, see its manual
+\cite{package:polyglossia}.%
\EndIndexGroup
diff --git a/macros/latex/contrib/koma-script/doc/scrguide-de.pdf b/macros/latex/contrib/koma-script/doc/scrguide-de.pdf
index 56e870c53f..870ca4aff9 100644
--- a/macros/latex/contrib/koma-script/doc/scrguide-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/scrguide-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/scrguide-en.pdf b/macros/latex/contrib/koma-script/doc/scrguide-en.pdf
index 0fbb371e87..bcd01f37da 100644
--- a/macros/latex/contrib/koma-script/doc/scrguide-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/scrguide-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/scrguide.bib b/macros/latex/contrib/koma-script/doc/scrguide.bib
index b6690530bf..4c6b7e6da3 100644
--- a/macros/latex/contrib/koma-script/doc/scrguide.bib
+++ b/macros/latex/contrib/koma-script/doc/scrguide.bib
@@ -56,6 +56,16 @@
note = {{DANTE} e.\,V.}
}
+@Article{ zeitung,
+ language = {ngerman},
+ author = {Martin Z. Schröder},
+ title = {Die Anmut des Unscheinbaren},
+ journal = {Berliner Zeitung},
+ year = 1998,
+ month = {10. Oktober},
+ url = {https://www.druckerey.de/files/druckerey/pdf/AnmutBZ1998.pdf}
+}
+
@Book{ DUDEN,
language= {ngerman},
author = {DUDEN},
@@ -177,16 +187,6 @@
address = {Berlin}
}
-@InCollection{ zeitung,
- language = {ngerman},
- author = {Martin Z. Schröder},
- title = {Die Anmut des Unscheinbaren},
- booktitle = {Berliner Zeitung},
- year = 1998,
- month = {10. Oktober},
- url = {http://www.berliner-zeitung.de/archiv}
-}
-
@Manual{ btxdoc,
language= {english},
author = {Oren Patashnik},
@@ -667,6 +667,18 @@ Schlegl},
url = {CTAN://macros/latex/contrib/oberdiek/}
}
+@Misc{ package:polyglossia,
+ language = {english},
+ author = {François Charette and Arthur Reutenauer and
+ Jürgen Spitzmüller and Bastien Roucariès},
+ title = {Polyglossia: Modern multilingual typesetting with
+ {\XeLaTeX} and {\LuaLaTeX}},
+ year = 2022,
+ month = apr,
+ edition = {1.56},
+ url = {CTAN://macros/unicodetex/latex/polyglossia}
+}
+
@Misc{ package:ragged2e,
language = {english},
author = {Martin Schröder},
diff --git a/macros/latex/contrib/koma-script/doc/scrguide.cls b/macros/latex/contrib/koma-script/doc/scrguide.cls
index e27721dd0f..d622ace1e4 100644
--- a/macros/latex/contrib/koma-script/doc/scrguide.cls
+++ b/macros/latex/contrib/koma-script/doc/scrguide.cls
@@ -38,7 +38,7 @@
% \section{Identification}
%
% \begin{macrocode}
-\ProvidesClass{scrguide}[2022/05/17 v1.27 internal KOMA-Script guide class]
+\ProvidesClass{scrguide}[2022/07/17 v1.28 internal KOMA-Script guide class]
% \end{macrocode}
%
%
@@ -2345,13 +2345,20 @@ KOMAScript \endcsname
% \section{Logos}
%
% I don't want to use package \textsf{hologo} for only one logo:
+% \changes{v1.28}{2022/07/17}{\cs{LuaTeX} and \cs{LuaLaTeX} added}
% \begin{macrocode}
\DeclareRobustCommand{\XeTeX}{%
- X\kern-.125em\lower.5ex\hbox{\reflectbox{E}}\kern-.10em\TeX%
+ X\kern-.125em\lower.5ex\hbox{\reflectbox{E}}\kern-.10em\TeX
}%
\DeclareRobustCommand{\XeLaTeX}{%
- X\kern-.125em\lower.5ex\hbox{\reflectbox{E}}\kern-.10em\LaTeX%
+ X\kern-.125em\lower.5ex\hbox{\reflectbox{E}}\kern-.10em\LaTeX
}%
+\DeclareRobustCommand{\LuaTeX}{%
+ Lua\TeX
+}
+\DeclareRobustCommand{\LuaLaTeX}{%
+ Lua\LaTeX
+}
% \end{macrocode}
%
% \section{Appendix}
diff --git a/macros/latex/contrib/koma-script/doc/scrjura-de.tex b/macros/latex/contrib/koma-script/doc/scrjura-de.tex
index bc0ff85eab..3889dd96a3 100644
--- a/macros/latex/contrib/koma-script/doc/scrjura-de.tex
+++ b/macros/latex/contrib/koma-script/doc/scrjura-de.tex
@@ -24,7 +24,7 @@
% ======================================================================
\KOMAProvidesFile{scrjura-de.tex}%
- [$Date: 2022-06-05 12:40:11 +0200 (So, 05. Jun 2022) $
+ [$Date: 2022-07-17 12:36:46 +0200 (So, 17. Jul 2022) $
KOMA-Script guide (chapter: scrjura)]
\chapter{Unterstützung für die Anwaltspraxis durch \Package{scrjura}}
@@ -1068,7 +1068,7 @@ erhalten. Diese Funktionalität ist seit \LaTeX{} 2020/02/01 jedoch in den
\LaTeX-Kern integriert.
Wie Sie am Laden von \Package{fontenc} erkennen können, wird für das Beispiel
-PDF\LaTeX{} verwendet. Soll stattdessen Lua\LaTeX{} oder \XeLaTeX{} verwendet
+PDF\LaTeX{} verwendet. Soll stattdessen \LuaLaTeX{} oder \XeLaTeX{} verwendet
werden, entfallen alle drei Zeilen. Wahlweise kann dann \Package{fontspec}
geladen oder einfach mit den Voreinstellungen gearbeitet werden.
diff --git a/macros/latex/contrib/koma-script/doc/scrjura-example-de.pdf b/macros/latex/contrib/koma-script/doc/scrjura-example-de.pdf
index 7fe178b6f3..e7152f2979 100644
--- a/macros/latex/contrib/koma-script/doc/scrjura-example-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/scrjura-example-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/scrjura-example-en.pdf b/macros/latex/contrib/koma-script/doc/scrjura-example-en.pdf
index 69f373dbd1..f906b65de2 100644
--- a/macros/latex/contrib/koma-script/doc/scrjura-example-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/scrjura-example-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-de.tex b/macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-de.tex
index e1da0d969b..8d924561fd 100644
--- a/macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-de.tex
+++ b/macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-de.tex
@@ -29,7 +29,7 @@
% ============================================================================
\KOMAProvidesFile{scrlayer-notecolumn.tex}
- [$Date: 2022-06-05 12:40:11 +0200 (So, 05. Jun 2022) $
+ [$Date: 2022-07-17 12:36:46 +0200 (So, 17. Jul 2022) $
KOMA-Script guide (chapter:scrlayer-notecolumn)]
\chapter{Notizspalten mit \Package{scrlayer-notecolumn}}
@@ -444,7 +444,7 @@ aus der definierten Position der Notizspalte. Für die korrekte Funktion ist
das Paket dabei auf \Macro{pdfsavepos}\IndexCmd{pdfsavepos},
\Macro{pdflastypos}\IndexCmd{pdflastypos} und
\Macro{pdfpageheight}\IndexLength{pdfpageheight} beziehungsweise deren
-Entsprechungen bei neueren Lua\TeX-Versionen angewiesen. Ohne diese Befehle
+Entsprechungen bei neueren \LuaTeX-Versionen angewiesen. Ohne diese Befehle
funktioniert \Package{scrlayer-notecolumn} nicht. %
\iffalse % Umbruchkorrektur
Dabei wird außerdem davon ausgegangen, dass die genannten Primitiven exakt
diff --git a/macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-en.tex b/macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-en.tex
index 5e502c9823..709f68fb8f 100644
--- a/macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-en.tex
+++ b/macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-en.tex
@@ -395,7 +395,7 @@ note column. To work correctly, the package relies on
\Macro{pdfsavepos}\IndexCmd{pdfsavepos},
\Macro{pdflastypos}\IndexCmd{pdflastypos}, and
\Macro{pdfpageheight}\IndexLength{pdfpageheight} or their equivalent in newer
-Lua\TeX{} versions. Without these commands, \Package{scrlayer-notecolumn} will
+\LuaTeX{} versions. Without these commands, \Package{scrlayer-notecolumn} will
not work. The primitives should act exactly as they would using pdf\TeX.
However, if the package detects a collision\textnote{collision avoidance} with
diff --git a/macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-example-de.pdf b/macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-example-de.pdf
index 2734b618b5..a0a33872ec 100644
--- a/macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-example-de.pdf
+++ b/macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-example-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-example-en.pdf b/macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-example-en.pdf
index 1d254dbec2..0e93178c60 100644
--- a/macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-example-en.pdf
+++ b/macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-example-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/koma-script/doc/scrlfile-de.tex b/macros/latex/contrib/koma-script/doc/scrlfile-de.tex
index 6b161cdf07..719aebcded 100644
--- a/macros/latex/contrib/koma-script/doc/scrlfile-de.tex
+++ b/macros/latex/contrib/koma-script/doc/scrlfile-de.tex
@@ -24,7 +24,7 @@
% ============================================================================
\KOMAProvidesFile{scrlfile-de.tex}%
- [$Date: 2022-06-05 12:40:11 +0200 (So, 05. Jun 2022) $
+ [$Date: 2022-07-17 12:36:46 +0200 (So, 17. Jul 2022) $
KOMA-Script guide (chapter: scrlfile)]
\chapter{Paketabhängigkeiten mit \Package{scrlfile}
@@ -610,7 +610,7 @@ der \PName{Paketliste} zu finden ist.
\RequirePackage{lmodern}
\end{lstcode}
Nun wollen Sie zum ersten Mal ein Dokument mit
- X\kern-.125em\lower.5ex\hbox{\reflectbox{E}}\LaTeX{} oder Lua\LaTeX{}
+ X\kern-.125em\lower.5ex\hbox{\reflectbox{E}}\LaTeX{} oder \LuaLaTeX{}
setzen. Da beim hierbei empfohlenen Paket \Package{fontspec} ohnehin
Latin-Modern voreingestellt ist und das Laden von \Package{fontenc} eher
störend wäre, wollen Sie das Laden beider Pakete verhindern. Sie laden die
diff --git a/macros/latex/contrib/koma-script/doc/scrlfile-en.tex b/macros/latex/contrib/koma-script/doc/scrlfile-en.tex
index ece18e8881..4891101bc9 100644
--- a/macros/latex/contrib/koma-script/doc/scrlfile-en.tex
+++ b/macros/latex/contrib/koma-script/doc/scrlfile-en.tex
@@ -24,7 +24,7 @@
% ============================================================================
\KOMAProvidesFile{scrlfile-en.tex}
- [$Date: 2022-06-05 12:40:11 +0200 (So, 05. Jun 2022) $
+ [$Date: 2022-07-17 12:36:46 +0200 (So, 17. Jul 2022) $
KOMA-Script guide (chapter: scrlfile)]
\translator{Gernot Hassenpflug\and Markus Kohm\and Karl Hagen}
@@ -550,7 +550,7 @@ effectively prevents the package from being loaded if it is found in the the
\RequirePackage[T1]{fontenc}
\RequirePackage{lmodern}
\end{lstcode}
- But now, for the first time, you want to use \XeLaTeX{} or Lua\LaTeX{}.
+ But now, for the first time, you want to use \XeLaTeX{} or \LuaLaTeX{}.
Since the recommended \Package{fontspec} package uses Latin Modern as the
default font anyway, and loading \Package{fontenc} would not be a good idea,
you want to prevent both packages from being loaded. Therefore, you load the
diff --git a/macros/latex/contrib/koma-script/doc/scrlttr2-de.tex b/macros/latex/contrib/koma-script/doc/scrlttr2-de.tex
index d61ed4adc0..0f701ada8c 100644
--- a/macros/latex/contrib/koma-script/doc/scrlttr2-de.tex
+++ b/macros/latex/contrib/koma-script/doc/scrlttr2-de.tex
@@ -24,7 +24,7 @@
% ============================================================================
\KOMAProvidesFile{scrlttr2-de.tex}%
- [$Date: 2022-06-05 12:40:11 +0200 (So, 05. Jun 2022) $
+ [$Date: 2022-10-12 08:12:27 +0200 (Mi, 12. Okt 2022) $
KOMA-Script guide (chapter: scrlttr2)]
\chapter{Briefe mit Klasse \Class{scrlttr2} oder Paket \Package{scrletter}}
@@ -1383,14 +1383,13 @@ gesetzt werden. %
\iftrue% Umbruchkorrektur
Der \PName{Verteiler} wird der Anweisung dabei als Argument übergeben. %
\fi%
-Wenn der \PName{Inhalt} der Variablen
+Wenn die \PName{Bezeichnung} der Variablen
\Variable{ccseparator}\Index{Trennzeichen} nicht leer ist, wird dem
\PName{Verteiler} die \PName{Bezeichnung} und der \PName{Inhalt} dieser
Variablen vorangestellt. Der \PName{Verteiler} selbst wird dann um die
-entsprechende Breite eingerückt ausgegeben. Es empfiehlt\textnote{Tipp!}
-sich, den \PName{Verteiler} \Macro{raggedright}\IndexCmd{raggedright} zu
-setzen und die einzelnen Angaben durch doppelten Backslash voneinander zu
-trennen.
+entsprechende Breite eingerückt ausgegeben. Sollen die einzelnen Einträge
+untereinander gesetzt werden, können sie durch doppelten Backslash voneinander
+getrennt angegeben werden.
\begin{Example}
Der Beispielbrief soll dieses Mal nicht nur an die Vorsitzende, sondern mit
Verteiler auch an alle Mitglieder des Vereins gehen:
diff --git a/macros/latex/contrib/koma-script/doc/scrlttr2-en.tex b/macros/latex/contrib/koma-script/doc/scrlttr2-en.tex
index 075d9173d5..bff4cba354 100644
--- a/macros/latex/contrib/koma-script/doc/scrlttr2-en.tex
+++ b/macros/latex/contrib/koma-script/doc/scrlttr2-en.tex
@@ -24,7 +24,7 @@
% ============================================================================
\KOMAProvidesFile{scrlttr2-en.tex}%
- [$Date: 2022-06-05 12:40:11 +0200 (So, 05. Jun 2022) $
+ [$Date: 2022-10-12 08:12:27 +0200 (Mi, 12. Okt 2022) $
KOMA-Script guide (chapter: scrlttr2)]
\translator{Harald Bongartz\and Georg Grandke\and Raimund Kohl\and Jens-Uwe
@@ -1231,13 +1231,13 @@ abbreviation is printed neither automatically nor optionally by the
\end{Declaration}
You can print a \PName{distribution list}\Index{recipient>additional}%
\Index{distribution list}\Index{carbon copy} with the \Macro{cc} command. The
-command takes the \PName{distribution list} as its argument. If the content of
-the variable \Variable{ccseparator}\Index{separator}\Index{delimiter} is not
-empty, the name and content of this variable are inserted before the
+command takes the \PName{distribution list} as its argument. If the
+\PName{name} of the variable
+\Variable{ccseparator}\Index{separator}\Index{delimiter} is not empty, the
+\PName{name} and \PName{content} of this variable are inserted before the
\PName{distribution list}. In this case, the \PName{distribution list} will be
-indented appropriately. It's a good idea\textnote{Hint!} to set the
-\PName{distribution list} \Macro{raggedright}\IndexCmd{raggedright} and to
-separate the individual entries with a double backslash.
+indented appropriately. If the individual entries are to be printed one below
+the other, they can be separated by a double backslash.
\begin{Example}
This time, the sample letter should go not only to the chairman but also to
all club members:
diff --git a/macros/latex/contrib/koma-script/doc/scrwfile-de.tex b/macros/latex/contrib/koma-script/doc/scrwfile-de.tex
index 0b3fa39841..11f2107b84 100644
--- a/macros/latex/contrib/koma-script/doc/scrwfile-de.tex
+++ b/macros/latex/contrib/koma-script/doc/scrwfile-de.tex
@@ -24,7 +24,7 @@
% ============================================================================
\KOMAProvidesFile{scrwfile-de.tex}
- [$Date: 2022-06-05 12:40:11 +0200 (So, 05. Jun 2022) $
+ [$Date: 2022-07-17 12:36:46 +0200 (So, 17. Jul 2022) $
KOMA-Script guide (chapter: scrwfile)]
\chapter{Dateien mit \Package{scrwfile} sparen und ersetzen}
@@ -48,7 +48,7 @@ Im Endeffekt kann es daher geschehen, dass irgendwann die Meldung
\fi
\end{lstcode}
erscheint. Seit einiger Zeit ist die einfachste Lösung dieses Problems die
-Verwendung von Lua\LaTeX{} anstelle von PDF\LaTeX{} oder \XeLaTeX. Damit
+Verwendung von \LuaLaTeX{} anstelle von PDF\LaTeX{} oder \XeLaTeX. Damit
entfällt die Beschränkung und die maximale Anzahl der gleichzeitig zum
Schreiben geöffneten Dateien wird nur noch durch das Betriebssystem
bestimmt. In der Realität braucht man sich darüber dann normalerweise keine
@@ -62,8 +62,8 @@ auch kein weiteres Mal gesetzt werden, da die zugehörige Hilfsdatei nach dem
jeweiligen Befehl bis zum Ende des Dokuments leer ist.
Das Paket \Package{scrwfile} bietet hier eine grundsätzliche Änderung im
-\LaTeX-Kern, durch die beide Probleme nicht nur für Lua\LaTeX{} sondern auch bei
-Verwendung von PDF\LaTeX{} oder \XeLaTeX{} gelöst werden können.
+\LaTeX-Kern, durch die beide Probleme nicht nur für \LuaLaTeX{} sondern auch
+bei Verwendung von PDF\LaTeX{} oder \XeLaTeX{} gelöst werden können.
\section{Grundsätzliche Änderungen am \LaTeX-Kern}
diff --git a/macros/latex/contrib/koma-script/doc/scrwfile-en.tex b/macros/latex/contrib/koma-script/doc/scrwfile-en.tex
index 1782d26e65..5d87d4f994 100644
--- a/macros/latex/contrib/koma-script/doc/scrwfile-en.tex
+++ b/macros/latex/contrib/koma-script/doc/scrwfile-en.tex
@@ -24,7 +24,7 @@
% ============================================================================
\KOMAProvidesFile{scrwfile-en.tex}%
- [$Date: 2022-06-05 12:40:11 +0200 (So, 05. Jun 2022) $
+ [$Date: 2022-07-17 12:36:46 +0200 (So, 17. Jul 2022) $
KOMA-Script guide (chapter: scrwfile)]
\translator{Markus Kohm\and Jana Schubert\and Karl Hagen}
@@ -52,7 +52,7 @@ The bottom line is that eventually you may get the following error message:
\end{lstcode}
For some time, the simplest solution to this problem has been to use
-\mbox{Lua\LaTeX} instead of \mbox{pdf\LaTeX} or \XeLaTeX. This eliminates the
+\mbox{\LuaLaTeX} instead of \mbox{pdf\LaTeX} or \XeLaTeX. This eliminates the
restriction, and the maximum number of files you can have open for writing is
then limited only by the operating system. In reality, you usually so not need
to worry about it any more.
@@ -67,7 +67,7 @@ output a second time because the associated auxiliary file\footnote{The term
after the respective command until the end of the document.
The \Package{scrwfile} package makes a fundamental change to the \LaTeX{}
-kernel, which can solve both problems not only for \mbox{Lua\LaTeX} but also
+kernel, which can solve both problems not only for \mbox{\LuaLaTeX} but also
for \mbox{pdf\LaTeX} or \XeLaTeX.
\section{Fundamental Changes to the \LaTeX{} Kernel}
diff --git a/macros/latex/contrib/koma-script/doc/tocbasic-de.tex b/macros/latex/contrib/koma-script/doc/tocbasic-de.tex
index 06a53bad82..bc9995cb3e 100644
--- a/macros/latex/contrib/koma-script/doc/tocbasic-de.tex
+++ b/macros/latex/contrib/koma-script/doc/tocbasic-de.tex
@@ -24,7 +24,7 @@
% ======================================================================
\KOMAProvidesFile{tocbasic-de.tex}
- [$Date: 2022-06-05 12:40:11 +0200 (So, 05. Jun 2022) $
+ [$Date: 2022-07-17 12:36:46 +0200 (So, 17. Jul 2022) $
KOMA-Script guide (package tocbasic)]
\chapter{Verzeichnisse verwalten mit Hilfe von \Package{tocbasic}}
@@ -535,7 +535,7 @@ dieser Anweisungen zu einer Fehlermeldung der Art
führen, wenn keine Schreibdateien mehr zur Verfügung stehen. Abhilfe kann in
diesem Fall das Laden des in \autoref{cha:scrwfile} beschriebenen Pakets
\Package{scrwfile}\important{\Package{scrwfile}}\IndexPackage{scrwfile}
-oder die Verwendung von Lua\LaTeX{} bieten.
+oder die Verwendung von \LuaLaTeX{} bieten.
Das Paket \hyperref[cha:scrhack]{\Package{scrhack}}\IndexPackage{scrhack}%
\important{ \hyperref[cha:scrhack]{\Package{scrhack}}} enthält übrigens
@@ -2135,7 +2135,7 @@ Anweisung zu einer Fehlermeldung der Art
führen, wenn keine Schreibdateien mehr zur Verfügung stehen. Abhilfe kann in
diesem Fall das Laden des in \autoref{cha:scrwfile} beschriebenen Pakets
\Package{scrwfile}\important{\Package{scrwfile}}\IndexPackage{scrwfile}
-oder die Verwendung von Lua\LaTeX{} bieten.%
+oder die Verwendung von \LuaLaTeX{} bieten.%
\EndIndexGroup
@@ -2836,13 +2836,14 @@ möglich. Siehe dazu \autoref{sec:tocbasic.tocstyle},
\end{center}%
\end{Example}%
-Benutzer von
+Benutzer von älteren Versionen von Paket
\Package{hyperref}\IndexPackage{hyperref}\important{\Package{hyperref}}
sollten Option \Option{listname} übrigens immer angeben. Anderenfalls kommt es
in der Regel zu einer Fehlermeldung, weil \Package{hyperref} nicht mit dem
\Macro{MakeUppercase}\IndexCmd{MakeUppercase} im Namen des Verzeichnisses
zurecht kommt, das benötigt wird, um den ersten Buchstaben des Wertes von
-\Option{types} in Großbuchstaben zu wandeln.%
+\Option{types} in Großbuchstaben zu wandeln. Besser ist natürlich die
+Verwendung eines aktuellen \Package{hyperref} mit einem aktuellen \LaTeX.%
\EndIndexGroup%
\section{Obsolete Befehle}
diff --git a/macros/latex/contrib/koma-script/doc/tocbasic-en.tex b/macros/latex/contrib/koma-script/doc/tocbasic-en.tex
index fe5be7f4a6..b4f0a1174e 100644
--- a/macros/latex/contrib/koma-script/doc/tocbasic-en.tex
+++ b/macros/latex/contrib/koma-script/doc/tocbasic-en.tex
@@ -24,7 +24,7 @@
% ======================================================================
\KOMAProvidesFile{tocbasic-en.tex}
- [$Date: 2022-06-05 12:40:11 +0200 (So, 05. Jun 2022) $
+ [$Date: 2022-07-17 12:36:46 +0200 (So, 17. Jul 2022) $
KOMA-Script guide (package tocbasic)]
\translator{Markus Kohm\and Arndt Schubert\and Karl Hagen}
@@ -1967,7 +1967,7 @@ message of the type
\end{lstoutput}
if no more write handles are available. You can solve this problem by loading
the \Package{scrwfile}\important{\Package{scrwfile}}\IndexPackage{scrwfile}
-package described in \autoref{cha:scrwfile}, or by using Lua\LaTeX{}.%
+package described in \autoref{cha:scrwfile}, or by using \LuaLaTeX{}.%
\EndIndexGroup
@@ -2579,10 +2579,12 @@ the styles.%
\end{center}%
\end{Example}
-Users of \Package{hyperref} should always use the \Option{listname} option.
-Otherwise they may get an error message because \Package{hyperref} usually has
-a problem with the \Macro{MakeUppercase}\IndexCmd{MakeUppercase} command that
-is needed to convert the first letter of \Option{types} to upper case.%
+Users of old versions of package \Package{hyperref} should always use the
+\Option{listname} option. Otherwise they may get an error message because
+\Package{hyperref} usually has a problem with the
+\Macro{MakeUppercase}\IndexCmd{MakeUppercase} command that is needed to
+convert the first letter of \Option{types} to upper case. Better is of course
+to use an up-to-date \Package{hyperref} with an up-to-date \LaTeX.%
\EndIndexGroup
diff --git a/macros/latex/contrib/koma-script/koma-script-source-doc.dtx b/macros/latex/contrib/koma-script/koma-script-source-doc.dtx
index d0ce38ca9a..2cad321e5d 100644
--- a/macros/latex/contrib/koma-script/koma-script-source-doc.dtx
+++ b/macros/latex/contrib/koma-script/koma-script-source-doc.dtx
@@ -41,7 +41,7 @@
\ProvidesFile{koma-script-source-doc.dtx}
%</dtx>
%<+ins>\ProvidesFile{koma-script-source-doc.ins}
-[2022-03-10 v0.91 KOMA-Script source documentation]
+[2022-07-08 v0.92 KOMA-Script source documentation]
%<*dtx>
\ifx\documentclass\undefined
%</dtx>
@@ -729,6 +729,7 @@
%
% \begin{docitem}{PageStyle}
% \changes{v0.8}{2022/02/08}{added}
+% \changes{v0.92}{2022/07/08}{index group fixed}
% \begin{command}{\DescribePageStyle}
% \changes{v0.8}{2022/02/08}{added}
% \begin{environment}{pgstyle}
@@ -739,7 +740,7 @@
macrolike = false,
toplevel = true,
idxtype = \textit{pgstyle},
- idxgroup = page styles,
+ idxgroup = Page styles,
printtype = \textit{style}
]{PageStyle}{pgstyle}
% \end{macrocode}
@@ -749,6 +750,7 @@
%
% \begin{docitem}{DoHook}
% \changes{v0.91}{2022/03/10}{added}
+% \changes{v0.92}{2022/07/08}{index group fixed}
% \begin{command}{\DescribeDoHook}
% \changes{v0.91}{2022/03/10}{added}
% \begin{environment}{dohook}
@@ -759,7 +761,7 @@
macrolike = false,
toplevel = true,
idxtype = \textit{do hook},
- idxgroup = do hooks,
+ idxgroup = Do hooks,
printtype = \textit{dohook}
]{DoHook}{dohook}
% \end{macrocode}
diff --git a/macros/latex/contrib/koma-script/scrkernel-compatibility.dtx b/macros/latex/contrib/koma-script/scrkernel-compatibility.dtx
index 104f9727f8..ced2a0a0b8 100644
--- a/macros/latex/contrib/koma-script/scrkernel-compatibility.dtx
+++ b/macros/latex/contrib/koma-script/scrkernel-compatibility.dtx
@@ -18,7 +18,7 @@
%
% This work consists of all files listed in MANIFEST.md.
% ======================================================================
-%%% From File: $Id: scrkernel-compatibility.dtx 3896 2022-06-21 09:06:07Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 3949 2022-08-09 10:05:50Z kohm $
%<identify>%%% (run: identify)
%<init>%%% (run: init)
%<option>%%% (run: option)
@@ -27,9 +27,9 @@
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\def\filedate{#2/#3/#4}}
- \filedate$Date: 2022-06-21 11:06:07 +0200 (Di, 21. Jun 2022) $
+ \filedate$Date: 2022-08-09 12:05:50 +0200 (Di, 09. Aug 2022) $
\def\filerevision$#1: #2 ${\def\filerevision{r#2}}
- \filerevision$Revision: 3896 $
+ \filerevision$Revision: 3949 $
\edef\reserved@a{%
\noexpand\endgroup
\noexpand\ProvidesFile{scrkernel-compatibility.dtx}%
@@ -428,8 +428,10 @@
% \changes{v3.35}{2021/10/12}{added}
% \begin{macro}{\scr@v@3.36}
% \changes{v3.36}{2021/11/17}{added}
-% \begin{macro}{\scr@v@3.37 BETA}
-% \changes{v3.37 BETA}{2022/05/04}{added}
+% \begin{macro}{\scr@v@3.37}
+% \changes{v3.37}{2022/05/04}{added}
+% \begin{macro}{\scr@v@3.38}
+% \changes{v3.38}{2022/07/06}{added}
% \begin{macro}{\scr@v@last}
% \changes{v2.9u}{2005/03/05}{added}
% Nun die unterschiedlichen möglichen Werte (|\scr@v@last| ist jeweils die
@@ -515,7 +517,8 @@
\@namedef{scr@v@3.34}{18}
\@namedef{scr@v@3.35}{19}
\@namedef{scr@v@3.36}{20}
-\@namedef{scr@v@3.37 BETA}{20}
+\@namedef{scr@v@3.37}{20}
+\@namedef{scr@v@3.38}{20}
\@namedef{scr@v@last}{20}
% \end{macrocode}
% \end{macro}
@@ -601,6 +604,7 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
% \end{option}
% \begin{macrocode}
%</init>
diff --git a/macros/latex/contrib/koma-script/scrkernel-floats.dtx b/macros/latex/contrib/koma-script/scrkernel-floats.dtx
index b0b1b3a1a4..a687254eb3 100644
--- a/macros/latex/contrib/koma-script/scrkernel-floats.dtx
+++ b/macros/latex/contrib/koma-script/scrkernel-floats.dtx
@@ -18,16 +18,16 @@
%
% This work consists of all files listed in MANIFEST.md.
% ======================================================================
-%%% From File: $Id: scrkernel-floats.dtx 3874 2022-06-05 10:38:02Z kohm $
+%%% From File: $Id: scrkernel-floats.dtx 3946 2022-07-20 10:37:02Z kohm $
%<option>%%% (run: option)
%<body>%%% (run: body)
%<*dtx>
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2022-06-05 12:38:02 +0200 (So, 05. Jun 2022) $
+ \filedate$Date: 2022-07-20 12:37:02 +0200 (Mi, 20. Jul 2022) $
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
- \filerevision$Revision: 3874 $
+ \filerevision$Revision: 3946 $
\edef\reserved@a{%
\noexpand\endgroup
\noexpand\ProvidesFile{scrkernel-floats.dtx}%
@@ -544,15 +544,20 @@
% \end{macro}^^A \ifscap@alt
% \begin{macro}{\scap@currentlabel}
% \changes{v2.8q}{2001/11/24}{added}
+% \begin{macro}{\scap@currentcounter,\scap@currentlabelname,\scap@currentHref}
+% \changes{v3.38}{2022/07/30}{added}
% Because of using \cs{caption} inside a box and inside an environment, a
% label after the \env{captionbeside} environment usually would not reference
% the caption number. To preserve this after the end of the
-% \env{captionbeside} the current label is locally stored into global
-% \cs{scap@currentlabel} and restored after the end of the environment using
-% \cs{aftergroup}. Note: You can have only one \cs{label} inside!.
+% \env{captionbeside} the current label and counter are locally stored into
+% global \cs{scap@currentlabel} and restored after the end of the environment
+% using \cs{aftergroup}. Note: You can have only one \cs{label} inside!
% \begin{macrocode}
\newcommand*{\scap@currentlabel}{}
+\newcommand*{\scap@currentlabelname}{}
+\newcommand*{\scap@currentHref}{}
% \end{macrocode}
+% \end{macro}^^A \scap@currentcounter … \scap@currentHref
% \end{macro}^^A \scap@currentlabel
% \begin{macro}{\@@@captionbeside,\@@captionbeside,\@captionbeside}
% \changes{v2.8q}{2001/11/22}{added}
@@ -676,11 +681,18 @@
% \end{macrocode}
% \changes{v2.9p}{2003/12/10}{\cs{@temdima} replaced by
% \cs{wd}\cs{c@pti@nb@sid@b@x}, because \cs{@temdima} would be changed}
+% \changes{v3.38}{2022/07/20}{using \cs{scap@currentcounter}}
+% \changes{v3.38}{2022/07/20}{using \cs{scap@currentlabelname}}
+% \changes{v3.38}{2022/07/20}{using \cs{scap@currentHref}}
% \begin{macrocode}
\if l\@tempa
\rlap{%
\parbox[\scap@valign]{\@tempdimb}{\scap@caption
- \global\let\scap@currentlabel\@currentlabel}%
+ \global\let\scap@currentlabel\@currentlabel
+ \global\let\scap@currentcounter\@currentcounter
+ \global\let\scap@currentlabelname\@currentlabelname
+ \global\let\scap@currentHref\@currentHref
+ }%
\nobreak\hskip\columnsep
\parbox[\scap@valign]{\wd\c@pti@nb@sid@b@x}{\usebox\c@pti@nb@sid@b@x}%
}%
@@ -689,12 +701,18 @@
\parbox[\scap@valign]{\wd\c@pti@nb@sid@b@x}{\usebox\c@pti@nb@sid@b@x}%
\nobreak\hskip\columnsep
\parbox[\scap@valign]{\@tempdimb}{\scap@caption
- \global\let\scap@currentlabel\@currentlabel}%
+ \global\let\scap@currentlabel\@currentlabel
+ \global\let\scap@currentcounter\@currentcounter
+ \global\let\scap@currentlabelname\@currentlabelname
+ \global\let\scap@currentHref\@currentHref
+ }%
}%
\fi
\par
- \aftergroup\let\aftergroup\@currentlabel
- \aftergroup\scap@currentlabel
+ \aftergroup\let\aftergroup\@currentlabel\aftergroup\scap@currentlabel
+ \aftergroup\let\aftergroup\@currentcounter\aftergroup\scap@currentcounter
+ \aftergroup\let\aftergroup\@currentlabelname\aftergroup\scap@currentlabelname
+ \aftergroup\let\aftergroup\@currentHref\aftergroup\scap@currentHref
}
% \end{macrocode}
% \end{environment}^^A captionbeside
diff --git a/macros/latex/contrib/koma-script/scrkernel-fonts.dtx b/macros/latex/contrib/koma-script/scrkernel-fonts.dtx
index 7c4c1af971..b5859b1331 100644
--- a/macros/latex/contrib/koma-script/scrkernel-fonts.dtx
+++ b/macros/latex/contrib/koma-script/scrkernel-fonts.dtx
@@ -18,7 +18,7 @@
%
% This work consists of all files listed in MANIFEST.md.
% ======================================================================
-%%% From File: $Id: scrkernel-fonts.dtx 3874 2022-06-05 10:38:02Z kohm $
+%%% From File: $Id: scrkernel-fonts.dtx 3958 2022-10-06 12:44:28Z kohm $
%<identify>%%% (run: identify)
%<option>%%% (run: option)
%<body>%%% (run: body)
@@ -29,9 +29,9 @@
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2022-06-05 12:38:02 +0200 (So, 05. Jun 2022) $
+ \filedate$Date: 2022-10-06 14:44:28 +0200 (Do, 06. Okt 2022) $
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
- \filerevision$Revision: 3874 $
+ \filerevision$Revision: 3958 $
\edef\reserved@a{%
\noexpand\endgroup
\noexpand\ProvidesFile{scrkernel-fonts.dtx}%
@@ -187,17 +187,14 @@
% \end{macrocode}
% \end{macro}
%
-% \changes{v3.17}{2015/03/10}{die Schriftgröße wird in der internen
-% Optionenliste gespeichert}
+% \changes{v3.17}{2015/03/10}{saving option values in internal list}
% \begin{option}{fontsize}
-% \changes{v2.96}{2006/08/11}{Funktion komplett geändert}
-% \changes{v2.98c}{2008/03/26}{lädt nach Möglichkeit die zugehörige
-% Schriftgrößendatei}
-% \changes{v3.12}{2013/03/05}{Status wird mit \cs{FamilyKeyStateProcessed}
-% gesetzt.}
-% Hier nun die Option, die tatsächlich verwendet wird. Es sei darauf
-% hingewiesen, dass damit auch Schriftgrößen wie \texttt{10.3pt} denkbar
-% wären.
+% \changes{v2.96}{2006/08/11}{function rewritten}
+% \changes{v2.98c}{2008/03/26}{loading font size file if available}
+% \changes{v3.12}{2013/03/05}{signaling using \cs{FamilyKeyStateProcessed}}
+% \changes{v3.38}{2022/10/06}{error message in horizontal mode added}
+% The option itself. Note, that it supports also font sizes like
+% \texttt{10.3pt}.
% \begin{macrocode}
\KOMA@key{fontsize}{%
%<*!extend>
@@ -206,6 +203,32 @@
\edef\@ptsize{#1}%
}{%
%</!extend>
+ \ifvmode\else
+ \par
+%<class> \ClassError{\KOMAClassName}{%
+%<extend> \PackageError{scrextend}{%
+ Option `fontsize' inside paragraph not allowed%
+ }{%
+ Option `fontsize' has been designed to change the base font size of
+ a\MessageBreak
+ document. It has not been made to change the current font
+ size. Moreover\MessageBreak
+ using it inside a paragraph mostly will not have the intended result,
+ because\MessageBreak
+ TeX always uses the setting of `\string\baselineskip' and other
+ parameters from the\MessageBreak
+ end of a paragraph for the whole paragraph. Therefore using option
+ `fontsize'\MessageBreak
+ in TeX's horizontal mode does not make sense and is not
+ permitted.\MessageBreak
+ You should use font size commands like `\string\Huge'…`\string\tiny'
+ or `\string\fontsize' here.\MessageBreak
+ See a LaTeX introduction for more information.\MessageBreak
+ But maybe you've just forgotten to make a paragraph. So if you'd
+ continue,\MessageBreak
+ I'll add `\expandafter\string\csname par\endcsname'.%
+ }%
+ \fi
\expandafter\@defaultunits\expandafter\@tempdima#1 pt\relax\@nnil
\edef\@tempa{#1}%
\setlength{\@tempdimb}{\@tempdima}%
@@ -285,8 +308,11 @@
% \begin{command}{\normalsize,\small,\footnotesize,\scriptsize,\tiny,\large,
% \Large,\LARGE,\huge,\Huge}
% \changes{v2.98c}{2008/03/26}{defined in the \file{scrsize\dots.clo} files}
+% \changes{v3.38}{2022/07/30}{define the macros robust as the \file{clo} files
+% from 2021/10/04}
% \begin{macrocode}
-\def\normalsize{%
+\let\normalsize\@undefined
+\DeclareRobustCommand\normalsize{%
%<*10pt>
\@setfontsize\normalsize\@xpt\@xiipt
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
@@ -308,7 +334,8 @@
\belowdisplayskip \abovedisplayskip
\let\@listi\@listI
}
-\def\small{%
+\let\small\@undefined
+\DeclareRobustCommand\small{%
%<*10pt>
\@setfontsize\small\@ixpt{11}%
\abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
@@ -341,7 +368,8 @@
%</12pt>
\belowdisplayskip \abovedisplayskip
}
-\def\footnotesize{%
+\let\footnotesize\@undefined
+\DeclareRobustCommand\footnotesize{%
%<*10pt>
\@setfontsize\footnotesize\@viiipt{9.5}%
\abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
@@ -375,31 +403,55 @@
\belowdisplayskip \abovedisplayskip
}
%<*10pt>
-\def\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
-\def\tiny{\@setfontsize\tiny\@vpt\@vipt}
-\def\large{\@setfontsize\large\@xiipt{14}}
-\def\Large{\@setfontsize\Large\@xivpt{18}}
-\def\LARGE{\@setfontsize\LARGE\@xviipt{22}}
-\def\huge{\@setfontsize\huge\@xxpt{25}}
-\def\Huge{\@setfontsize\Huge\@xxvpt{30}}
+\let\scriptsize\@undefined
+\DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
+\let\tiny\@undefined
+\DeclareRobustCommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
+\let\large\@undefined
+\DeclareRobustCommand\large{\@setfontsize\large\@xiipt{14}}
+\let\Large\@undefined
+\DeclareRobustCommand\Large{\@setfontsize\Large\@xivpt{18}}
+\let\LARGE\@undefined
+\DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
+\let\huge\@undefined
+\DeclareRobustCommand\huge{\@setfontsize\huge\@xxpt{25}}
+\let\Huge\@undefined
+\DeclareRobustCommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
%</10pt>
%<*11pt>
-\def\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
-\def\tiny{\@setfontsize\tiny\@vipt\@viipt}
-\def\large{\@setfontsize\large\@xiipt{14}}
-\def\Large{\@setfontsize\Large\@xivpt{18}}
-\def\LARGE{\@setfontsize\LARGE\@xviipt{22}}
-\def\huge{\@setfontsize\huge\@xxpt{25}}
-\def\Huge{\@setfontsize\Huge\@xxvpt{30}}
+\let\scriptsize\@undefined
+\DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
+\let\tiny\@undefined
+\DeclareRobustCommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
+\let\large\@undefined
+\DeclareRobustCommand\large{\@setfontsize\large\@xiipt{14}}
+\let\Large\@undefined
+\DeclareRobustCommand\Large{\@setfontsize\Large\@xivpt{18}}
+\let\LARGE\@undefined
+\DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
+\let\huge\@undefined
+\DeclareRobustCommand\huge{\@setfontsize\huge\@xxpt{25}}
+\let\Huge\@undefined
+\DeclareRobustCommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
%</11pt>
%<*12pt>
-\def\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
-\def\tiny{\@setfontsize\tiny\@vipt\@viipt}
-\def\large{\@setfontsize\large\@xivpt{18}}
-\def\Large{\@setfontsize\Large\@xviipt{22}}
-\def\LARGE{\@setfontsize\LARGE\@xxpt{25}}
-\def\huge{\@setfontsize\huge\@xxvpt{30}}
-\let\Huge=\huge
+\let\scriptsize\@undefined
+\DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
+\let\tiny\@undefined
+\DeclareRobustCommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
+\let\large\@undefined
+\DeclareRobustCommand\large{\@setfontsize\large\@xivpt{18}}
+\let\Large\@undefined
+\DeclareRobustCommand\Large{\@setfontsize\Large\@xviipt{22}}
+\let\LARGE\@undefined
+\DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xxpt{25}}
+\let\huge\@undefined
+\DeclareRobustCommand\huge{\@setfontsize\huge\@xxvpt{30}}
+\@ifundefined{DeclareCommandCopy}{%
+ \let\Huge\huge
+}{%
+ \DeclareCommandCopy\Huge\huge
+}
%</12pt>
\normalsize
% \end{macrocode}
@@ -587,6 +639,8 @@
% \end{macrocode}
% \end{macro}
% \changes{v3.17}{2015/03/10}{\eTeX{} warning removed}
+% \changes{v3.38}{2022/07/30}{define the macros robust as the \file{clo} files
+% from 2021/10/04}
% \begin{macrocode}
\providecommand*{\simple@changefontsizes}[2][1.2\@tempdima]{%
\KOMA@kav@removekey{.%
@@ -626,7 +680,7 @@
{.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}%
\fi
\setlength{\belowdisplayskip}{\abovedisplayskip}%
- \edef\normalsize{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\normalsize
{\the\@tempdima}{\the\@tempdimb}%
\abovedisplayskip \the\abovedisplayskip
@@ -635,6 +689,8 @@
\belowdisplayshortskip \the\belowdisplayshortskip
\let\noexpand\@listi\noexpand\@listI
}%
+ \let\normalsize\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\normalsize\expandafter{\reserved@a}%
% \end{macrocode}
% Calculation and definition of \cs{small}:
% \begin{macrocode}
@@ -654,7 +710,7 @@
{.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}%
\fi
\setlength{\belowdisplayskip}{\abovedisplayskip}%
- \edef\small{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\small
{\the\@tempdima}{\the\@tempdimb}%
\abovedisplayskip \the\abovedisplayskip
@@ -663,6 +719,8 @@
\belowdisplayshortskip \the\belowdisplayshortskip
\let\noexpand\@listi\noexpand\@listi@small
}%
+ \let\small\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\small\expandafter{\reserved@a}%
% \end{macrocode}
% Calculation and definition of \cs{footnotesize}:
% \begin{macrocode}
@@ -682,7 +740,7 @@
{.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}%
\fi
\setlength{\belowdisplayskip}{\abovedisplayskip}%
- \edef\footnotesize{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\footnotesize
{\the\@tempdima}{\the\@tempdimb}%
\abovedisplayskip \the\abovedisplayskip
@@ -691,69 +749,85 @@
\belowdisplayshortskip \the\belowdisplayshortskip
\let\noexpand\@listi\noexpand\@listi@footnotesize
}%
+ \let\footnotesize\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\footnotesize\expandafter{\reserved@a}%
% \end{macrocode}
% Calculation and definition of \cs{scriptsize}:
% \begin{macrocode}
\setlength{\@tempdima}{.66667\@tempdimc}%
\setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\scriptsize{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\scriptsize
{\the\@tempdima}{\the\@tempdimb}%
}%
+ \let\scriptsize\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\scriptsize\expandafter{\reserved@a}%
% \end{macrocode}
% Calculation and definition of \cs{tiny}:
% \begin{macrocode}
\setlength{\@tempdima}{.5\@tempdimc}%
\setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\tiny{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\tiny
{\the\@tempdima}{\the\@tempdimb}%
}%
+ \let\tiny\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\tiny\expandafter{\reserved@a}%
% \end{macrocode}
% Calculation and definition of \cs{large}:
% \begin{macrocode}
\setlength{\@tempdima}{1.2\@tempdimc}%
\setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\large{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\large
{\the\@tempdima}{\the\@tempdimb}%
}%
+ \let\large\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\large\expandafter{\reserved@a}%
% \end{macrocode}
% Calculation and definition of \cs{Large}:
% \begin{macrocode}
\setlength{\@tempdima}{1.44\@tempdimc}%
\setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\Large{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\Large
{\the\@tempdima}{\the\@tempdimb}%
}%
+ \let\Large\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\Large\expandafter{\reserved@a}%
% \end{macrocode}
% Calculation and definition of \cs{LARGE}:
% \begin{macrocode}
\setlength{\@tempdima}{1.728\@tempdimc}%
\setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\LARGE{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\LARGE
{\the\@tempdima}{\the\@tempdimb}%
}%
+ \let\LARGE\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\LARGE\expandafter{\reserved@a}%
% \end{macrocode}
% Calculation and definition of \cs{huge}:
% \begin{macrocode}
\setlength{\@tempdima}{2.074\@tempdimc}%
\setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\huge{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\huge
{\the\@tempdima}{\the\@tempdimb}%
}%
+ \let\huge\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\huge\expandafter{\reserved@a}%
% \end{macrocode}
% Calculation and definition of \cs{Huge}:
% \begin{macrocode}
\setlength{\@tempdima}{2.488\@tempdimc}%
\setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\Huge{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\Huge
{\the\@tempdima}{\the\@tempdimb}%
}%
+ \let\Huge\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\Huge\expandafter{\reserved@a}%
% \end{macrocode}
% Activation of \cs{normalsize} and calculation of additional font size
% depending sized.
@@ -1076,6 +1150,8 @@
% \begin{macro}{\generate@fontfile}
% \changes{v3.09}{2011/02/23}{added}
% \changes{v3.16a}{2015/02/11}{\cs{footnotesize} fixed}
+% \changes{v3.38}{2022/07/30}{define the macros robust as the \file{clo} files
+% from 2021/10/04}
% Output of the font size file using the current font setting. It has to be
% used inside a local group!
% \begin{macrocode}
@@ -1092,7 +1168,8 @@
\the\year/\ifnum\month<10 0\fi\the\month/\ifnum\day<10 0\fi\the\day%
\space generated font size class option (#2)]}%
\immediate\write\@fontfile{%
- \string\def\string\normalsize{\@percentchar^^J%
+ \string\let\string\normalsize\string\@undefined
+ \string\DeclareRobustCommand\string\normalsize{\@percentchar^^J%
\@ind\string\@setfontsize\string\normalsize{\f@size}{\f@baselineskip}%
\@percentchar^^J%
\@ind\string\abovedisplayskip\space \the\abovedisplayskip^^J%
@@ -1104,7 +1181,8 @@
}%
\begingroup\small\@listi
\immediate\write\@fontfile{%
- \string\def\string\small{\@percentchar^^J%
+ \string\let\string\small\string\@undefined
+ \string\DeclareRobustCommand\string\small{\@percentchar^^J%
\@ind\string\@setfontsize\string\small{\f@size}{\f@baselineskip}%
\@percentchar^^J%
\@ind\string\abovedisplayskip\space \the\abovedisplayskip^^J%
@@ -1122,7 +1200,8 @@
\endgroup
\begingroup\footnotesize\@listi
\immediate\write\@fontfile{%
- \string\def\string\footnotesize{\@percentchar^^J%
+ \string\let\string\footnotesize\string\@undefined
+ \string\DeclareRobustCommand\string\footnotesize{\@percentchar^^J%
\@ind\string\@setfontsize\string\footnotesize{\f@size}{\f@baselineskip}%
\@percentchar^^J%
\@ind\string\abovedisplayskip\space \the\abovedisplayskip^^J%
@@ -1140,49 +1219,56 @@
\endgroup
\begingroup\scriptsize
\immediate\write\@fontfile{%
- \string\def\string\scriptsize{%
+ \string\let\string\scriptsize\string\@undefined
+ \string\DeclareRobustCommand\string\scriptsize{%
\string\@setfontsize\string\scriptsize{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\tiny
\immediate\write\@fontfile{%
- \string\def\string\tiny{%
+ \string\let\string\tiny\string\@undefined
+ \string\DeclareRobustCommand\string\tiny{%
\string\@setfontsize\string\tiny{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\large
\immediate\write\@fontfile{%
- \string\def\string\large{%
+ \string\let\string\large\string\@undefined
+ \string\DeclareRobustCommand\string\large{%
\string\@setfontsize\string\large{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\Large
\immediate\write\@fontfile{%
- \string\def\string\Large{%
+ \string\let\string\Large\@undefined
+ \string\DeclareRobustCommand\string\Large{%
\string\@setfontsize\string\Large{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\LARGE
\immediate\write\@fontfile{%
- \string\def\string\LARGE{%
+ \string\let\string\LARGE\@undefined
+ \string\DeclareRobustCommand\string\LARGE{%
\string\@setfontsize\string\LARGE{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\huge
\immediate\write\@fontfile{%
- \string\def\string\huge{%
+ \string\let\string\huge\@undefined
+ \string\DeclareRobustCommand\string\huge{%
\string\@setfontsize\string\huge{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\Huge
\immediate\write\@fontfile{%
- \string\def\string\Huge{%
+ \string\let\string\Huge\@undefined
+ \string\DeclareRobustCommand\string\Huge{%
\string\@setfontsize\string\Huge{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
@@ -1445,13 +1531,17 @@
%</class&option>
% \end{macrocode}
% \end{macro}^^A \scr@degineobsoletefonts
-% \end{option}^^A enabledeprecatedfontscommands
+% \end{option}^^A enabledeprecatedfontcommands
%
% \begin{macro}{\scr@DeclareOldFontCommand}
% \changes{v3.12}{2013/10/31}{added}
% \changes{v3.20}{2015/10/14}{deprecated escalation}
+% \changes{v3.38}{2022/08/28}{deprecated definition delayed}
% The command is similar to \cs{DeclareOldFontCommand} but adds a warning,
-% info, error to the commands.
+% info, error to the commands and delays the definition until
+% |\begin{document}|. The delay is done to allow users or package authors to
+% define the commands in the document preamble if they are not yet defined. So
+% (package) authors do not need to detect \KOMAScript{} but only existence.
% \begin{macrocode}
%<*class&body>
\newcommand*{\scr@DeclareOldFontCommand}[3]{%
@@ -1459,10 +1549,14 @@
\ifnum\scr@defineobsoletefonts>\tw@
\DeclareOldFontCommand{#1}{#2}{#3}%
\else
- \DeclareOldFontCommand{#1}{%
- \scr@ErrorWarningInfo{#1}{#2}#2%
- }{%
- \scr@ErrorWarningInfo{#1}{#3}#3%
+ \AtBeginDocument{%
+ \ifdefined#1\else
+ \DeclareOldFontCommand{#1}{%
+ \scr@ErrorWarningInfo{#1}{#2}#2%
+ }{%
+ \scr@ErrorWarningInfo{#1}{#3}#3%
+ }%
+ \fi
}%
\fi
\fi
diff --git a/macros/latex/contrib/koma-script/scrkernel-sections.dtx b/macros/latex/contrib/koma-script/scrkernel-sections.dtx
index 5ed80eebaa..0a9a21dd26 100644
--- a/macros/latex/contrib/koma-script/scrkernel-sections.dtx
+++ b/macros/latex/contrib/koma-script/scrkernel-sections.dtx
@@ -18,7 +18,7 @@
%
% This work consists of all files listed in MANIFEST.md.
% ======================================================================
-%%% From File: $Id: scrkernel-sections.dtx 3874 2022-06-05 10:38:02Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 3954 2022-10-04 09:20:19Z kohm $
% The runs of run-time file generation:
%<preidentify>%%% (run: preidentify)
% - everything that is needed before selfidentification of resulting files
@@ -40,9 +40,9 @@
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2022-06-05 12:38:02 +0200 (So, 05. Jun 2022) $
+ \filedate$Date: 2022-10-04 11:20:19 +0200 (Di, 04. Okt 2022) $
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
- \filerevision$Revision: 3874 $
+ \filerevision$Revision: 3954 $
\edef\reserved@a{%
\noexpand\endgroup
\noexpand\ProvidesFile{scrkernel-sections.dtx}%
@@ -1587,6 +1587,7 @@
% \DeclareSectionCommandStyleFontOption}
% \changes{v3.17}{2015/03/23}{added}
% \changes{v3.20}{2016/04/25}{argument expansion}
+% \changes{v3.38}{2022/09/16}{copy option added}
% All these commands have the four arguments:
% \begin{quote}
% \marg{style}\marg{option}\marg{prefix}\marg{postfix}
@@ -1628,6 +1629,17 @@
\fi
\fi
}%
+ \DeclareSectionCommandStyleOption{#1}{#2:}{%
+ \scr@ifundefinedorrelax{#3##1#4}{\FamilyKeyStateUnknownValue}{%
+ \ifscr@dsc@expandtopt
+ \setlength{\@tempskipa}{\@nameuse{#3##1#4}}%
+ \expandafter\edef\csname #3\scr@dsc@current#4\endcsname{\the\@tempskipa}%
+ \else
+ \@namedef{#3\scr@dsc@current#4}{\@nameuse{#3##1#4}}%
+ \fi
+ \FamilyKeyStateProcessed
+ }%
+ }%
}
\newcommand*{\DeclareSectionCommandStyleNumberOption}[4]{%
\DeclareSectionCommandStyleOption{#1}{#2}{%
@@ -1638,6 +1650,17 @@
\expandafter\let\csname #3\scr@dsc@current#4\endcsname\reserved@a
\fi
}%
+ \DeclareSectionCommandStyleOption{#1}{#2:}{%
+ \scr@ifundefinedorrelax{#3##1#4}{\FamilyKeyStateUnknownValue}{%
+ \ifscr@dsc@expandtopt
+ \@tempcnta=\@nameuse{#3##1#4}%
+ \expandafter\edef\csname #3\scr@dsc@current#4\endcsname{\the\@tempcnta}%
+ \else
+ \@namedef{#3\scr@dsc@current#4}{\@nameuse{#3##1#4}}%
+ \fi
+ \FamilyKeyStateProcessed
+ }%
+ }%
}
\newcommand*{\DeclareSectionCommandStyleFontOption}[4]{%
\DeclareSectionCommandStyleOption{#1}{#2}{%
@@ -1648,12 +1671,23 @@
}{#3\scr@dsc@current#4}{##1}%
\FamilyKeyStateProcessed
}%
+ \DeclareSectionCommandStyleOption{#1}{#2:}{%
+ \IfExistskomafont{#3##1#4}{%
+ \IfExistskomafont{#3\scr@dsc@current#4}{%
+ \setkomafont
+ }{%
+ \newkomafont
+ }{#3\scr@dsc@current#4}{\usekomafont{#3##1#4}}%
+ \FamilyKeyStateProcessed
+ }{\FamilyKeyStateUnknownValue}%
+ }%
}
% \end{macrocode}
% \end{command}^^A \DeclareSectionCommandStyleLengthOption …
% \begin{command}{\DeclareSectionCommandStyleFuzzyOption}
% \changes{v3.26}{2018/09/18}{added}
% \changes{v3.28}{2019/11/18}{\cs{ifstr} renamed to \cs{Ifstr}}
+% \changes{v3.38}{2022/09/16}{copy option added}
% We also have a kind of fuzzy option. A fuzzy option defined by
% \begin{quote}
% \cs{DeclareSectionCommandStyleFuzzyOption}\meta{style}\meta{option}%
@@ -1686,6 +1720,19 @@
}{}%
\fi
}%
+ \DeclareSectionCommandStyleOption{#1}{#2:}{%
+ \scr@ifundefinedorrelax{#3##1#4}{\FamilyKeyStateUnknownValue}{%
+ \ifscr@dsc@expandtopt
+ \expandafter\let\csname #3\scr@dsc@current#4\expandafter\endcsname
+ \csname #3##1#4\endcsname
+ \else
+ \expandafter\def\csname #3\scr@dsc@current#4\endcsname{%
+ \@nameuse{#3##1#4}%
+ }%
+ \fi
+ \FamilyKeyStateProcessed
+ }%
+ }%
}
% \end{macrocode}
% \end{command}^^A \DeclareSectionCommandStyleFuzzyOptions
@@ -3297,30 +3344,33 @@
}%
% \end{macrocode}
% \changes{v3.26b}{2019/01/17}{workaround for \cs{@beginmainauxhook} added}
+% \changes{v3.38}{2022/10/04}{\pkg{auxhook} not needed with newer \pkg{hyperref}}
% Sometimes \pkg{auxhook} is not able to recognize that it cannot use a
% patch of \cs{document} to execute \cs{@beginmainauxhook} if it is loaded via
% \cs{AtBeginDocument}. In this case we do it here.
% \begin{macrocode}
- \ifx\@beginmainauxhook\relax
- \else
- \if@filesw
- \ClassWarning{\KOMAClassName}{%
- seems someone has broken package `auxhook'.\MessageBreak
- Usually this happens, if `auxhook' is loaded or used\MessageBreak
- implicitly or explicitly by patching
- \string\document%
- \scr@ifundefinedorrelax{AtEndPreamble}{}{%
- \MessageBreak
- or via etoolbox command \string\AtEndPreamble%
- }.\MessageBreak
- Trying an emergency workaround.\MessageBreak
- You can avoid this warning adding:\MessageBreak
- \space\space\string\usepackage{auxhook}\MessageBreak
- before \string\begin{document}%
- }%
- \@beginmainauxhook
+ \@ifpackagelater{hyperref}{2022/09/22}{}{%
+ \ifx\@beginmainauxhook\relax
+ \else
+ \if@filesw
+ \ClassWarning{\KOMAClassName}{%
+ seems someone has broken package `auxhook'.\MessageBreak
+ Usually this happens, if `auxhook' is loaded or used\MessageBreak
+ implicitly or explicitly by patching
+ \string\document%
+ \scr@ifundefinedorrelax{AtEndPreamble}{}{%
+ \MessageBreak
+ or via etoolbox command \string\AtEndPreamble%
+ }.\MessageBreak
+ Trying an emergency workaround.\MessageBreak
+ You can avoid this warning adding:\MessageBreak
+ \space\space\string\usepackage{auxhook}\MessageBreak
+ before \string\begin{document}%
+ }%
+ \@beginmainauxhook
+ \fi
\fi
- \fi
+ }%
\fi
}%
}%
diff --git a/macros/latex/contrib/koma-script/scrkernel-version.dtx b/macros/latex/contrib/koma-script/scrkernel-version.dtx
index 68e66a542b..96f1ac8db5 100644
--- a/macros/latex/contrib/koma-script/scrkernel-version.dtx
+++ b/macros/latex/contrib/koma-script/scrkernel-version.dtx
@@ -18,7 +18,7 @@
%
% This work consists of all files listed in MANIFEST.md.
% ======================================================================
-%%% From File: $Id: scrkernel-version.dtx 3920 2022-07-04 08:01:38Z kohm $
+%%% From File: $Id: scrkernel-version.dtx 3962 2022-10-12 06:33:06Z kohm $
%
% ATTENTION: In this file parts of the code and documentation are before the
% driver. This must be, because this part of the code is needed by the driver
@@ -138,7 +138,7 @@
% Note: Following line will be patched by \file{makebetaorrelase.sh} and
% therefore the syntax or general structure of the line must not be changed!
% \begin{macrocode}
- \@CheckKOMAScriptVersion{2022/07/04 v3.37 KOMA-Script}%
+ \@CheckKOMAScriptVersion{2022/10/12 v3.38 KOMA-Script}%
\endgroup
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/koma-script/scrlayer.dtx b/macros/latex/contrib/koma-script/scrlayer.dtx
index 6fe55f5868..104cb7257e 100644
--- a/macros/latex/contrib/koma-script/scrlayer.dtx
+++ b/macros/latex/contrib/koma-script/scrlayer.dtx
@@ -18,7 +18,7 @@
%
% This work consists of all files listed in MANIFEST.md.
% ======================================================================
-%%% From File: $Id: scrlayer.dtx 3894 2022-06-19 10:25:46Z kohm $
+%%% From File: $Id: scrlayer.dtx 3945 2022-07-19 09:16:17Z kohm $
%<identify>%%% (run: identify)
%<init>%%% (run: init)
%<options>%%% (run: options)
@@ -28,9 +28,9 @@
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2022-06-19 12:25:46 +0200 (So, 19. Jun 2022) $
+ \filedate$Date: 2022-07-19 11:16:17 +0200 (Di, 19. Jul 2022) $
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
- \filerevision$Revision: 3894 $
+ \filerevision$Revision: 3945 $
\edef\reserved@a{%
\noexpand\endgroup
\noexpand\ProvidesFile{scrlayer.dtx}%
@@ -984,15 +984,10 @@
% defines additional levels later we'll do an additional test at
% \cs{begin}\texttt\{\env{document}\texttt\}. But we do not redo the part and
% the chapter test.
+% \changes{v3.38}{2022/07/19}{improved level initialization}
% \begin{macrocode}
-\scr@ifundefinedorrelax{part}{}{%
- \DeclareSectionNumberDepth{part}{-1}%
-}
-\if@chapter
- \DeclareSectionNumberDepth{chapter}{0}%
-\fi
\newcommand*{\scrlayer@level@init}{%
- \@tempcnta=1
+ \@tempcnta=\if@chapter \m@ne\else \z@\fi
\def\reserved@b##1{%
\@tempswatrue
\def\reserved@a{##1}%
@@ -1012,11 +1007,38 @@
}%
}%
}%
+ \reserved@b{part}%
+ \reserved@b{chapter}%
\reserved@b{section}%
\reserved@b{paragraph}%
\reserved@b{minisec}%
}
\scrlayer@level@init
+\renewcommand*{\scrlayer@level@init}{%
+ \@tempcnta=1
+ \def\reserved@b##1{%
+ \@tempswatrue
+ \def\reserved@a{##1}%
+ \@whilesw \if@tempswa \fi {%
+ \scr@ifundefinedorrelax{\reserved@a}{%
+ \@tempswafalse
+ }{%
+ \@ifundefined{\reserved@a numdepth}{%
+ \expandafter\DeclareSectionNumberDepth
+ \expandafter{\reserved@a}{\@tempcnta}%
+ }{%
+ \expandafter\DeclareSectionNumberDepth
+ \expandafter{\reserved@a}{\csname \reserved@a numdepth\endcsname}%
+ }%
+ \advance \@tempcnta by \@ne
+ \edef\reserved@a{sub\reserved@a}%
+ }%
+ }%
+ }%
+ \reserved@b{section}%
+ \reserved@b{paragraph}%
+ \reserved@b{minisec}%
+}
\AtBeginDocument{%
\scrlayer@level@init
}
diff --git a/macros/latex/contrib/koma-script/scrmain.ins b/macros/latex/contrib/koma-script/scrmain.ins
index 5974260a79..bd42e6186b 100644
--- a/macros/latex/contrib/koma-script/scrmain.ins
+++ b/macros/latex/contrib/koma-script/scrmain.ins
@@ -18,7 +18,7 @@
% This work consists of all files listed in MANIFEST.md.
% ======================================================================
-% $Id: scrmain.ins 3889 2022-06-09 12:11:14Z kohm $
+% $Id: scrmain.ins 3959 2022-10-10 06:24:48Z kohm $
% ---------- KOMA-Script default docstrip declarations -----------------
@@ -320,7 +320,7 @@
\from{scrkernel-fonts.dtx}{package,letter,option}%
\from{scrkernel-variables.dtx}{package,letter,option}%
\from{scrkernel-pseudolengths.dtx}{package,letter,option}%
-% \from{scrkernel-typearea.dtx}{package,letter,option}%
+ \from{scrkernel-typearea.dtx}{package,letter,options}%
% \from{scrkernel-paragraphs.dtx}{package,letter,option}%
\from{scrkernel-pagestyles.dtx}{package,letter,option}%
% \from{scrkernel-floats.dtx}{package,letter,option}%
diff --git a/macros/latex/contrib/koma-script/scrstrip.inc b/macros/latex/contrib/koma-script/scrstrip.inc
index ba8bd193ee..094bc995ea 100644
--- a/macros/latex/contrib/koma-script/scrstrip.inc
+++ b/macros/latex/contrib/koma-script/scrstrip.inc
@@ -24,14 +24,14 @@
% This file will be included at startup of every KOMA-Script
% docstrip batch file.
% ======================================================================
-% $Id: scrstrip.inc 3915 2022-06-29 07:09:48Z kohm $
+% $Id: scrstrip.inc 3965 2022-10-12 08:28:57Z kohm $
% ---------- start of docstrip -----------------------------------------
\KOMAdefVariable{AUTHOR}{Markus Kohm}
\KOMAdefVariable{EMAIL}{[komascript at gmx info]}
\KOMAdefVariable{COPYRIGHTFROM}{1994}
-\KOMAdefVariable{COPYRIGHTTILL}{2021}
+\KOMAdefVariable{COPYRIGHTTILL}{2022}
\ifToplevel{%
\Msg{+======================================================================}
diff --git a/macros/latex/contrib/koma-script/scrwfile.dtx b/macros/latex/contrib/koma-script/scrwfile.dtx
index 3973363618..fb36f373e2 100644
--- a/macros/latex/contrib/koma-script/scrwfile.dtx
+++ b/macros/latex/contrib/koma-script/scrwfile.dtx
@@ -18,7 +18,7 @@
%
% This work consists of all files listed in MANIFEST.md.
% ======================================================================
-%%% From File: $Id: scrwfile.dtx 3889 2022-06-09 12:11:14Z kohm $
+%%% From File: $Id: scrwfile.dtx 3955 2022-10-06 08:13:32Z kohm $
%<*dtx>
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\ProvidesFile{scrwfile.dtx}
@@ -27,7 +27,7 @@
%<package&identify>\ProvidesPackage{scrwfile}
%<driver>\ProvidesFile{scrwfile.drv}
%<*dtx|(package&identify)|driver>
- [2021/05/30 v0.1.10 KOMA-Script package (write and clone files)]
+ [2022/10/06 v0.1.11 KOMA-Script package (write and clone files)]
%</dtx|(package&identify)|driver>
%<*dtx>
\ifx\documentclass\undefined
@@ -332,11 +332,13 @@
% \begin{macro}{\@starttoc,\scrwfile@saved@starttoc}
% We have to add the single handle feature to \cs{@starttoc} and therefore
% save the original definition.
-% \changes{v0.1.5}{2013/07/24}{take care for unfriendly \textsl{hyperref}}
+% \changes{v0.1.5}{2013/07/24}{take care for outdated \pkg{hyperref}}
+% \changes{v0.1.11}{2022/10/06}{ready for \pkg{hyperref} without
+% \cs{Hy@AtBeginDocumentHook}}
% \cs{scrwfile@saved@starttoc} is be used, whenever the file is not under
-% \pkg*{scrwfile}'s control. Because of package \textsl{hyperref}, that does
-% a hard redefinition without any care for changed definitions, we have to
-% take care for that unfriendly package and cannot do a simple
+% \pkg*{scrwfile}'s control. Because of old versions of package
+% \pkg{hyperref}, that do a hard redefinition without any care for changed
+% definitions, we have to take care for that and cannot do a simple
% \begin{verbatim}
% \let\scrwfile@saved@starttoc\@starttoc
% \let\@starttoc\scrwfile@starttoc
@@ -347,29 +349,41 @@
\begingroup
\@ifpackageloaded{hyperref}{%
\scr@ifundefinedorrelax{Hy@AtBeginDocument}{%
- \PackageWarning{scrwfile}{%
- Incompatible `hyperref` package detected!\MessageBreak
- You are using a `hyperref` version, that\MessageBreak
- doesn't provide `\string\Hy@AtBeginDocument`.\MessageBreak
- This may or may not work.\MessageBreak
- Using immediate redefinition%
+ \PackageInfo{scrwfile}{%
+ Using immediate redefinition of `\string\@starttoc'%
}%
\aftergroup\@firstofone
}{%
- \def\reserved@a{\AtBeginDocument}%
\ifx\Hy@AtBeginDocumentHook\@undefined
\PackageInfo{scrwfile}{%
- Using immediate redefinition%
+ Using immediate redefinition of `\string\@starttoc'%
}%
\aftergroup\@firstofone
\else
- \PackageInfo{scrwfile}{%
- Using `\string\Hy@AtBeginDocument`%
+% \end{macrocode}
+% From v7.00o \pkg{hyperref} does not redefine \cs{@starttoc} any more. So we
+% do need the usage of \cs{Hy@AtBeginDocument} only for versions before.
+% \begin{macrocode}
+ \@ifpackagelater{hyperref}{2022/02/22}{% newer than v7.00n
+ \PackageInfo{scrwfile}{%
+ Using immediate redefinition of `\string\@starttoc'%
+ }%
+ \aftergroup\@firstofone
+ }{%
+ \PackageWarning{scrwfile}{%
+ Outdated package `hyperref' detected.\MessageBreak
+ Using `\string\Hy@AtBeginDocument' for redefinition of
+ `\string\@starttoc'.\MessageBreak
+ We recommend to update `hyperref'
+ }%
+ \aftergroup\Hy@AtBeginDocument
}%
- \aftergroup\Hy@AtBeginDocument
\fi
}%
}{%
+ \PackageInfo{scrwfile}{%
+ Using immediate redefinition of `\string\@starttoc'%
+ }%
\aftergroup\@firstofone
}%
\endgroup
diff --git a/macros/latex/contrib/koma-script/tocbasic.dtx b/macros/latex/contrib/koma-script/tocbasic.dtx
index 1f93df3d81..98a021a2d2 100644
--- a/macros/latex/contrib/koma-script/tocbasic.dtx
+++ b/macros/latex/contrib/koma-script/tocbasic.dtx
@@ -18,7 +18,7 @@
%
% This work consists of all files listed in MANIFEST.md.
% ======================================================================
-%%% From File: $Id: tocbasic.dtx 3874 2022-06-05 10:38:02Z kohm $
+%%% From File: $Id: tocbasic.dtx 3947 2022-07-22 05:59:41Z kohm $
%<identify>%%% (run: identify)
%<prepare>%%% (run: prepare)
%<option>%%% (run: option)
@@ -29,9 +29,9 @@
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2022-06-05 12:38:02 +0200 (So, 05. Jun 2022) $
+ \filedate$Date: 2022-07-22 07:59:41 +0200 (Fr, 22. Jul 2022) $
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
- \filerevision$Revision: 3874 $
+ \filerevision$Revision: 3947 $
\endgroup
\ProvidesFile{tocbasic.dtx}[\filedate\space\filerevision\space
%</dtx>
@@ -407,18 +407,19 @@
% \begin{macro}{\tocbasic@extend@babel}
% \changes{v3.28}{2019/11/19}{\cs{iftocfeature} replaced by
% \cs{Iftocfeature}}
+% \changes{v3.38}{2022/07/22}{first test feature than availability}
% NOTE: To extend the original \cs{bbl@set@language} the argument of
% \cs{tocbasic@extend@babel} must not be a local macro (like \cs{@currext})
% \begin{macrocode}
\newcommand*{\tocbasic@extend@babel}[1]{%
- \scr@ifundefinedorrelax{bbl@set@language}{%
- \PackageInfo{tocbasic}{babel extension for `#1' omitted\MessageBreak
- because of missing \string\bbl@set@language}%
+ \Iftocfeature{#1}{nobabel}{%
+ \PackageInfo{tocbasic}{omitting babel extension for `#1'\MessageBreak
+ because of feature `nobabel' available\MessageBreak
+ for `#1'}%
}{%
- \Iftocfeature{#1}{nobabel}{%
+ \scr@ifundefinedorrelax{bbl@set@language}{%
\PackageInfo{tocbasic}{omitting babel extension for `#1'\MessageBreak
- because of feature `nobabel' available\MessageBreak
- for `#1'}%
+ because of missing \string\bbl@set@language}%
}{%
% \end{macrocode}
% \changes{v3.23}{2017/02/23}{using \cs{BabelContentsFiles} if available}
@@ -1279,6 +1280,15 @@
\edef\tb@nt@type{#2}%
\let\tb@nt@types\relax
\def\tb@nt@owner{float}%
+% \end{macrocode}
+% \begin{description}
+% \item[ToDo:] We still do not use \cs{MakeTitlecase} of \LaTeX{} from
+% 2022/06/01~PL\,5 here (and later), because \pkg{hyperref} 2022-06-20
+% v7.00s is still not able to process it. So we would get a warning message
+% instead of switching to uppercase. But maybe in some future, this could be
+% changed.
+% \end{description}
+% \begin{macrocode}
\def\tb@nt@name{\expandafter\protect\expandafter\MakeUppercase\tb@nt@type}%
\let\tb@nt@listname\relax
\let\tb@nt@counterwithin\@empty
diff --git a/macros/latex/contrib/media4svg/ChangeLog b/macros/latex/contrib/media4svg/ChangeLog
index 835d1ad370..8249060d53 100644
--- a/macros/latex/contrib/media4svg/ChangeLog
+++ b/macros/latex/contrib/media4svg/ChangeLog
@@ -1,3 +1,7 @@
+2022-10-12
+ * v0.13
+ * new: Vimeo support
+
2022-09-27
* v0.12
* fix: displaced video in Chromium, foreignObject width & height now with
diff --git a/macros/latex/contrib/media4svg/README.md b/macros/latex/contrib/media4svg/README.md
index 6da868858f..e2fb2d199b 100644
--- a/macros/latex/contrib/media4svg/README.md
+++ b/macros/latex/contrib/media4svg/README.md
@@ -1,6 +1,6 @@
# The `media4svg` LaTeX Package
-Version 0.12, 2022/09/27
+Version 0.13, 2022/10/12
© 2020--today, Alexander Grahn
@@ -87,8 +87,8 @@ The package itself is loaded with
Package options are: `draft`, `final`, `autoplay`, `loop`, `controls`,
`mimetype`, `width`, `height`, `totalheight`, `keepaspectratio`, `scale`,
-`url`, `youtube`, `embed`. They have the same meaning as the command options
-explained below, but are applied globally.
+`url`, `youtube`, `vimeo`, `embed`. They have the same meaning as the command
+options explained below, but are applied globally.
Note that `media4svg` is incompatible with package `media9`.
@@ -99,6 +99,7 @@ The command for media inclusion is
or
````latex
\includemedia[<options>, youtube]{<poster text>}{<YT video ID>[,<YT video ID 2>[, ...]]}
+\includemedia[<options>, vimeo]{<poster text>}{<Vime video ID>}
````
Command options:
````latex
@@ -148,13 +149,13 @@ be embedded in the SVG file.
````latex
youtube
````
-The last argument of `\includemedia' is taken as a comma-separated list of
-YouTube video IDs.
+Embeds a YouTube player. The last argument of `\includemedia` is a single
+or a comma-separated list of YouTube video IDs.
````latex
-youtube
+vimeo
````
-This embeds a YouTube player. The last argument of `\includemedia` is a single
-or a comma-separated list of YouTube video IDs.
+Embeds a Vimeo player. The last argument of `\includemedia` is a Vimeo video
+ID. Only a single ID is allowed.
````latex
embed=false
````
diff --git a/macros/latex/contrib/media4svg/example/beamer-example-1.svg b/macros/latex/contrib/media4svg/example/beamer-example-1.svg
index 56233e3950..de18fe48d1 100644
--- a/macros/latex/contrib/media4svg/example/beamer-example-1.svg
+++ b/macros/latex/contrib/media4svg/example/beamer-example-1.svg
@@ -7,13 +7,13 @@
</script>
</defs>
<style type='text/css'>
-<![CDATA[@font-face{font-family:nf7;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
-@font-face{font-family:nf5;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
-@font-face{font-family:nf2;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
-@font-face{font-family:nf4;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAXIAA0AAAAACpAAAAVyAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgnoIBBEICos0iTYLGgABNgIkAyAEIAWCDgc6G48IUZQPTg/iqwRuDlwd0RAosUWI1uKJtlbrhruzTB0YamwMnsA38fDPfrj73veJeRJNQxJVPKSFhIYolneIhLJMiVRLHJJ2g3h+bjcsExex+mUPPJsmbSJWsyYgQODweO3fytuJYRe04GV45V3gXfwA2QEAyvX7H+AZ8/D3y8MKisS2Bqw2fvf+VeSqcUJFHlU2sJEVoA6AZiJeFQbmmuzFZyHgw//z4MvAhoud7I83KvJpvsdzVYsveVQamelMpuFLr52WZuDQI39hG+W0r7BwMYbndmLuByO8P+AejAjzS4fG5pbW9q4e/1WvNvtNbrGFFphvltREYapGjUaO3EDS1oOjCv8dSqpao0UHeug1rV3OJyH+OwOo+iim0CvS8SvyOEwZ3gaGy5mwVsrdynJLERv6YzHefF4Tx/piMCa0cZUnTG/VX744xqvCmYREAsOyxG7kOCduHJhAELDpDGA9KYYQfkhPiYETZUoJWk0PIq4ZENArT1qtSkj5UkR8FVy5AtquWn/o/thyKZrfNr5CZwf63OB6LMhcBGYaMo2Bc6sufCOybWKpEFDrV2DyWoK8nAYein/DzpoWVSydEIGBK01y1/evhycoi5G86FxiX9JpF7eByQoA4wpAd4GIQw6nYJjkkTzJNMQj+DuR/TcwXW47tRQRr4ai2i7A5CWIuBwHF0G8K5JzjsuXx42OXt17qEGZtRtSxdAtYhW5om2l2KqUkCyDIWJ60T4bc9u0iDlJJoiHp6QqQy45ywAOOTm5taC07v29TCIm5ppHn49pTkzIeTeACJgUnLCTd6yZBNbuPLkVX7p050rgTGjESCSwIHJiorOLhdd3r5+BconDmJhAkLiEi8wtJhB/wmvS5fzE8rGQ5rTS9DONY3HHTN8do707SAlJE/4XqrGvDj7O7ucJ/gv+FLlQDr6joQZbDFBIzqUoZP2zrEXv3U1KBgooaqDve8M5IzlzxJ8nZdO3KClEPrjAc/K0tOqFFgX52CSEBsRNlEazoLf0FTl0Mx7fHDeZRnUbLQpkosB/DstM/goeCP0xUT19nrFHZH1rSlJlW5hfLM8M4VD+kKlF5l4JuE1Qsod3VKKtmbunkS84X6SmTbsePBPimOK/1xBecCyVmphVlxzf3L6jqz3N1F81zxLxGYCXhfpZm3nby3uDPx1cc13HR3tx79QUd5sfTvpYib9xqFtPxKGeSFcNVCsp0Ydbzt3rHa4gT02Js/ZOTfY0nh6QsWhF6J2czSWGpL5Bo8HKlMIcrWzr0XRzLeM+1c/2pixfGhcFx9RFWL6/4IFwEEPtOeV4PSZCMX0MHfhueKbc/CCQVaf/1eR9YjhfKxO5eGbiZpnUuwcpGjBIWYPzNP/SUSxux86bXc39NNls05fUh/9oRafAm4NTTfkLBJ5IGsWQf9E9JRY2+kVjUNWp3tScIGpLizf4MvPLC6gqvYqXuvHFzx40sNHvbplqca5nWEB0+hnCrXiIiTdT3DnEAJ+HLt5Q9aWcUytyn4XUNkPVl/+uaEVkTQOX+tA1pCKqv5FGwHnYOXk3pe9yXlcfE6VIQMEW2ArQc3X8qbj4iQ6Cld/Pl6XSnd4ixbcHrhv7QzWbPEMrQZBnXc0oqQBybCBMy8vstwxW4Th9nkjIan+7EbPKFfW5JQRZY2OVyzQQGD7V49QY2pQUFg0klV5vLq8V3ilE2UkDbEoKF7mSyoTX42q1t26YW7rbGbvgjwZXwxVHB7dV/wW0fC5CaFb7C1ZysJCaLrKU/IIubEHwHWnU7pflPCLaRgqRwyIVB5JVefU0ej+4Y+7iai2qGOGxD/NmRtvTFjF+mm8H8uEV0+cP4NmTiiqq6pq6eoYAAA==) format('woff2');}
-@font-face{font-family:nf3;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
-@font-face{font-family:nf6;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAKgAA0AAAAABbwAAAJLAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoIsggALDAABNgIkAxIEIAWCDgdDG5wEUZQLxiSIrw5sY9pDXwRCoay1ZRmjE6Ekb8sfGNxp7TdyAOcOGK9EUL8funfvvx9AFRUeTx5VNGCRXYWKLo+va11VfY2rBWAXMGCd90hDX3wIQ1pocwMYFytbhGcN0uDNhr3PqQUe2Hm6ae/oVpQG0gccB1YN/hdY2MS5xhtFCoznmonRFjYr4hnshv0N+i/wIm+ov7sIpaXrMbONz5WSlxDw9P+ihpe93ausE+VarJI38glumX/HiVfcIEm1C4BBALBysTkBfvm1dMjRgmCXABQUDCPAHEpgGG0cNBrBr4f55fDAAwFESwAikQCAUN47kU8QhyWooBstlsEGgAZTSJCyaUbDl8WalelO+ERhXI1WR0YLAK+Zk7rVZNVLaEzy1JwWyG54+WC2JYgZpISXW3lv1jjVvMqsmeSlVadl24/Z3d36K23pl5ezxmzUkeZSfFP70XPl9QMqUey9SoqdPzlY3/BN57iCiCEJcxrnFj/gcZiee3c0vntrW59RcEmOAxawcny/jb0IxS8TCD483jgl+7+TL5+m8lkcPqUC6JQgKJPJM3AFUGETgN5kmwURfQUC1RgSJEJgiQWg00UESB0GEaAY00OAqsc9AVrFQ0U0XVI/JFMsqDDVkMdjrdZ9a6bmrjaGTvDZ2BBYtrdzqT5+MjfF8FgcjAxjZyayTU/MlCLa44QevJMEpk/zKeNZDpMxu1kEtRebqXmUzgFbpk7OlkNFDLd7GxcazVW0MYwO9TFALs3lipCRUbrPXD/t70eTVaTEPQoA) format('woff2');}
-@font-face{font-family:nf0;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAATMAA0AAAAACNAAAAR4AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgwoIBBEICodQhhkLHAABNgIkAzIEIAWCDgc8GxYHIxE2g1EaCvGPhUzuD9Y7RNPGYll+0RPJSO4H8fy36c+5u0sSNlSV1ISIO8SMpCICFeOZaE3s/Yko+S8NEAB/f2rw37NQLvYpNpZFLCEr0NqDlnFJWlrU7T1vQSrSK1CvTDWsebFc3j7xpm23/j2kqC4CBODS1rtPAHxW4znZdosqkwcwQG1WuwDfsks+I1wUKAwNUEq4GMo6szuAcOZovfwTqVNbOQNpPm31DQmidV8FAgxBZwrQjx5oWAgnixzKqKYVN13MYo5fUO/G9ttnq4+87hUve9YzCaoQCwiGiAIUOoK2BqNjQFqgAlATCARh5ZeYBKP3C1FLAfFLAWADYBAwCmQYSBcAoAMOFAAKfUvrWEwjUt0lqKS6iYl1vWSAWKWPBMh4CZZuMtldbGIaNt3ZsNUm1uvfuHw4imuFyoptvveqNVi3+a6J03PZajVM3xUWSzBlarYOuqbvVdPMSpmaKWAFrTRbsyo/veWq2O4rfMimJeMtVdXXihfgsrqhhl2YTk/cdkyfFa+Ldm/Ge3k21u3sQ+C0VQS/fK14JWS+s0b67ExoJ7+DZzKavmvitUbb4u2/w3STjn5esxhd5TkfxhfFe+l2F6j1XN5yVbyPP/34NtP0YdO81i1VYlWmeK+Zvh3vPoky271XC9L9F+YytmXCTpFD8/nzKg15KvCpz+1Ha446jqau7+x3q3yo05PqlKh/16d2cLDq4T1nNg7ZOmTjnqP3tbL+4UenPZ/2/PSHnttAxIycix+749My0n7xWeZY9jLt64r7l0zvttU99IO2B5dU16e2lTkftj9c1VGaxqKvTrvONE3pyM1p72g86z494/mHZs186qEZfGIvdDcXukonGHnFkZWjc6LHlanl/WoSJjmSy5NmpYWOqXLe6xjVK2xC25CUK0HhbLs5bd/akpDx9Ss2t7Su39xWVxJq5ORH1aTXNEpW3in9j4L48RPyIs6ivGams2Roj7sxeW0tGXETDoZN9KSPTovfVHJ4U0n8vTcbE6N6rL4dye8Kez1WTx8buaMpumXMhMhwY6hpyvDG8WvqIw/Xg9b9ENy/5d40Lox77qHGlML8skOuX+IjXdGjLhsxPUNc+O82NmzO6yqID6ta5frpy/Ky+RvaXHn1Tcljtg4cfviTjKSK5gwCAHwohCZ9FKDzXcSHFuO2R2rKyIAGhpFPWuTfHeSlEUDgvcSP1zR3T/ot0NS+uFZ+iGH+SHVIbQUCUQAIqK3+SOqUP0AdQtCrgmU6IQBSDKo3Dcpfm2qhVb2OiW5Myf+xcp2R9PMMU6OppBoBbORgAUABggBpOACAQDoRABQB9EAA0BhODQKAgckDCAAWNF5BQ/QgFN3AZTVSGMAa9GPJaRYsc56pcHctnNE6j7/dzUPO7FkLYIys63LbIxxh9gQwszpHI2Inxx/oiLB0BC/qEkvndbntEY4we4J9Vqe0I2Inx0++l1sFTve8+VOHytjDu/fxRF0Ld4QxjIvTFwClftvnr/v0GTs+Mi4rr6C8Eg==) format('woff2');}
+<![CDATA[@font-face{font-family:nf2;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
+@font-face{font-family:nf5;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
+@font-face{font-family:nf7;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
+@font-face{font-family:nf0;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAS4AA0AAAAACNQAAARjAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgwoIBBEICodQhhkLHAABNgIkAzIEIAWCEQc8GxkHIB6D424JUVobYjL8Nx4bSgTxa6+z++5f4HIpMGhUcQXUhK7CEHwZV5StZWGiW1Ysy7Iuaf//77T7Uk9qJBUCFuJMpWkKKCujAvZzz/6R/Q8g3fXvT9X8Z6Hop9hYFrGELEDpmpOWcUlaWtTtPW9BKtIrUK9MNexDvBFnnbwIAe9a3pwDfM1P9Em7Ue5Cx6BD3qB0Al2yK75iB4XUKSiocDG7jvtkAtiguKj+txGfLfACAM1XuG92S3TZHepLIOkkMJUyCbUNvPkKFyMNSaRQ8X8BvRvXp1eLF+665abLLhUKWdQEPZFIGkG9oCsdZI3qodSLPv1+SWNAcb8FWQMg/itBC2YCi0HMBXECAFRYiwJSZdOVutZgqXHRJ1OD0bB1E0M7sJgcMrEi5GNQTypFG02nrQ4k3N9G//UPl4Z4sBpEwbTnxCuYfNV2VxHevIRhnaa7DFXRMtWUtgfdpnubSsVKNaXRgEEpFRUsm9MHVlC9exkeUijI+EB0zGpxHuB94QbQMAHUA832bWx6BokJyLjg+QTPBnXj/eDhCpHyN1eLy/Qy3ETUOxDamx/B+TWseXAVibG2bSTWaqc2Jhma4toiP7p5rjVeQOLF281D3PmlAytIfPbi2VYqtQttuYAdiEZYNnFhlXqw/fF5yOaIeEUSlf/NtIwdsO5AaGR6/jz6LdkLb2kjsSOMEbfdWZqbEQZ4sxuOeKO7t2bCQPTJ7um9+i36e7tHjqTB7uHTuVfdr+aduLIHNp71XXhJOrh7un8+WBdL98Dpn5FHq/MUW0iDZ+nHq2MS3NLD8ZO0k9GZYe5Q+WOKmE7OzvTzzchMmiGn8q+eKCy4cCIfXs0PIlOCiDBrKf8QbpSZL98ynFKnGetoy3CJcC50Z5pH44cZpqos63R912U5ttYPub07Q+lWCfX7U9N270+PD2VK+QbwYj1ik5C3/6Tk90AHK2t/zgxQLlC98FAD5TcC//RUT3vrAZZNs4eZu8O+0KF9oQ6HN5KceMpNW1z4LtZdoaSHBbc9mZ9qbs1l1wwlZxslWe0wj2wkKXf5vbzWwcPuMG955USSa1BA+CDx2YFL8E2XpAQT6AT8f7PE/f6iQAdWdCPx8V1EeNmedMI/IdnFvEXHaOiVp3NkiicAHgWs2/RCRtIfznNpqU9NpATFgEABKQOelI5RD+ilASH49LOzm6Lk/Fe2Kd/2lR/C8D83B7MF6JUgyOf/ueLzf8gRSHHVQJwBOiC2A+Qkifm/w5kKaXkXaon1qfgHwlhjAn4ewzQTJQZCa4g0SITANgwAeh2HQOoxHgLFfPEQ6GgMC1ArHiii6pMGaWSKbbSZjqnqTqvV7tuDJFIhX5pS8Le7eYAhRQqVs/WlREg0HAwsNI6ULpSlxcZhFxALcRDHDa/qGmppqYikcRgsmiOtMIuOsTl2bJbd6dwqgANIpcrkDC1Dwx6CDy6qa2wGC4bkgu4XAEiFv/0Cdp/JLFjhsufNX6AIUQA=) format('woff2');}
+@font-face{font-family:nf6;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAKUAA0AAAAABcAAAAI+AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoIsggALDAABNgIkAxIEIAWCEQdDG58EIC4KY2NlvHeub+wv1e4QNImH5+2qP/dVVS+gmokW6l4jFp3aISN8KBfTVfaJSAkWNtr/A/CDYRtMb92gNEFxmf+b8S+agnGuc+LYVhot4gx64ZqgncCJnKHe7kRJMo6Zbe2BlDxCwNdvvLgGLzctmtLGI9sY5xSkE+k9nHL/jhOvVCORFI0AaAmAaWumrOJXr43/z4Ks3uBjBCBDhq4CjJYJdJUrkcsFvwa/osUCiAoBiIQEAAjt3bq0H/E/CRSgMSqYilmAHP0lkKQ87x4xa1I0y+fkTzReefWOc1qcfNQ4/nCaz71617FXTtyqS8dYffnkj9t46Tazm5+4H8cebItZl24xhpOvvXrcNZJbR9fdaHTjm/L9ee//d/G88vz7l9W2D9uORXKVYobKj573/PTAweeeY/vTILDzGzmkzTvEO21oLiuiEqY11j0Cj8OA0U8a5H6qPa4UzygkSzQHyqCC5juV+KfA8cuBoN/Qr04tbTH6r4ZNsm+n8lr/f5JtzOrRUAJBVg+2BSGFDjUAJa9GXeLQVyBQ6CGBhBAYrz+goTUCJA20FCBTWiBAoYmLAlRk7slE3kjSHJLMjNeRLLR38FpFxV0zrLbWbpsst4PPxppMtdUWu7rXd1hrtVJNfwOVRiptscZQn1fV9AMwENRATfVSkkbdO9auLmv9B5Yjyy1rhvpCtdavOrDfadrHHKvtsNN6a36pasFwp5GrmgZLCv02pNU5XCCkSJE1Xr5jx9a9p5PehOK2KQAA) format('woff2');}
+@font-face{font-family:nf4;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
+@font-face{font-family:nf3;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
text.f3 {font-family:nf2;font-size:8.966376px}
text.f4 {font-family:nf0;font-size:7.471995px}
text.f5 {font-family:nf3;font-size:8.966376px}
@@ -24,20 +24,14 @@ text.f9 {font-family:nf7;font-size:10.909088px}
]]>
</style>
<g id='page1'>
-<style>svg{cursor: none}</style>
-<defs>
-<script type='text/javascript'>
-<![CDATA[var cursorTimer;var downOnLink=false;var downOnRoot=false;function islink(tg){return (tg.tagName=='a') ? true : tg.parentNode ? islink(tg.parentNode) : false;};document.addEventListener('mousemove', function(e){if(islink(e.target)||e.target.getAttribute('class')=='annot'||e.target.tagName=='video'){e.target.style.cursor='pointer';}else{e.target.style.cursor='default';}try{clearTimeout(cursorTimer);}catch(err){};cursorTimer=setTimeout(function(){e.target.style.cursor='none';},3000);});window.addEventListener('contextmenu', function(e){if(!(islink(e.target)||e.target.tagName=='video'||e.target.tagName=='audio')) e.preventDefault();});document.addEventListener('mousedown', function(e){if(islink(e.target)) downOnLink=true;else downOnRoot=true;});document.addEventListener('mouseup', function(e){if(downOnLink||!downOnRoot){downOnLink=false;return;}downOnRoot=false;if(!e.shiftKey&&e.button==0) document.location.replace('beamer-example-2.svg');});document.addEventListener('wheel', function(e){if(e.deltaY>0){document.location.replace('beamer-example-2.svg');}});document.addEventListener('keydown',function(e){if(e.key=='PageDown'||e.key=='ArrowDown'||e.key=='ArrowRight')document.location.replace('beamer-example-2.svg');if(e.key=='Home') document.location.replace('beamer-example-1.svg');if(e.key=='End') document.location.replace('beamer-example-4.svg');});]]>
-</script>
-</defs>
<rect x='-71.999989' y='-71.999989' height='255.118106' width='453.543292' fill='#fff'/>
<text class='f7' x='20.993373' y='-39.528161'><tspan fill='#3333b3'>Presen</tspan><tspan fill='#3333b3' x='61.44965'>tation</tspan><tspan fill='#3333b3' x='102.824078'>example</tspan><tspan fill='#3333b3' x='157.841737'>with</tspan><tspan fill='#3333b3' x='189.833752'>em</tspan><tspan fill='#3333b3' x='207.393502'>b</tspan><tspan fill='#3333b3' x='215.585173'>edded</tspan><tspan fill='#3333b3' x='256.156214'>video</tspan></text>
<text class='f9' x='86.278932' y='-22.392423'><tspan fill='#3333b3'>—The</tspan></text>
<text class='f6' x='119.606194' y='-22.392423'><tspan fill='#3333b3'>media4svg</tspan></text>
-<text class='f9' x='174.784361' y='-22.392423'><tspan fill='#3333b3'>pac</tspan><tspan fill='#3333b3' x='190.842544'>kage—</tspan><tspan x='139.580744' y='15.762242'>AlexG</tspan><tspan x='104.453469' y='57.566125'>27th</tspan><tspan x='129.304369'>Septem</tspan><tspan x='164.148'>b</tspan><tspan x='170.518903'>er</tspan><tspan x='183.271625'>2022</tspan></text>
-<rect x='-63.505917' y='83.667539' height='.3985' width='130.96787'/>
-<text class='f5' x='-63.505917' y='98.889449'>Put<tspan x='-45.456596'>the</tspan><tspan x='-29.577139'>W</tspan><tspan x='-20.879756'>eb</tspan><tspan x='-8.586849'>bro</tspan><tspan x='4.486126'>wser</tspan><tspan x='25.548149'>to</tspan><tspan x='36.818889'>fullscreen</tspan><tspan x='77.60694'>with</tspan></text>
-<g stroke-miterlimit='10' transform='translate(107.037091,95.942781)scale(0.996264,-0.996264)'>
+<text class='f9' x='174.784361' y='-22.392423'><tspan fill='#3333b3'>pac</tspan><tspan fill='#3333b3' x='190.842544'>kage—</tspan><tspan x='139.580744' y='15.762242'>AlexG</tspan><tspan x='110.360729' y='57.566125'>12th</tspan><tspan x='135.211629'>Octob</tspan><tspan x='164.611616'>er</tspan><tspan x='177.364338'>2022</tspan></text>
+<rect x='-63.505917' y='81.791183' height='.3985' width='130.96787'/>
+<text class='f5' x='-63.505917' y='97.013093'>Put<tspan x='-45.456596'>the</tspan><tspan x='-29.577139'>W</tspan><tspan x='-20.879756'>eb</tspan><tspan x='-8.586849'>bro</tspan><tspan x='4.486126'>wser</tspan><tspan x='25.548149'>to</tspan><tspan x='36.818889'>fullscreen</tspan><tspan x='77.60694'>with</tspan></text>
+<g stroke-miterlimit='10' transform='translate(107.037091,94.066425)scale(0.996264,-0.996264)'>
<g fill='#000' stroke='#000'>
<g stroke-width='0.4'>
<g stroke='#4c4c4c'>
@@ -48,11 +42,11 @@ text.f9 {font-family:nf7;font-size:10.909088px}
</g>
</g>
<g transform='translate(-6.26251,-2.18193)'>
-<g stroke='none' transform='scale(-1.00375,1.00375)translate(107.037091,95.942781)scale(-1,-1)'>
+<g stroke='none' transform='scale(-1.00375,1.00375)translate(107.037091,94.066425)scale(-1,-1)'>
<g fill='#000'>
<g stroke='none'>
<g fill='black'>
-<text class='f4' x='107.037091' y='95.942781'>F11</text>
+<text class='f4' x='107.037091' y='94.066425'>F11</text>
</g>
</g>
</g>
@@ -63,8 +57,8 @@ text.f9 {font-family:nf7;font-size:10.909088px}
</g>
</g>
</g>
-<text class='f5' x='115.467985' y='98.889449'>,<tspan x='121.107841'>na</tspan><tspan x='130.576332'>vigate</tspan><tspan x='157.977583'>with</tspan></text>
-<g stroke-miterlimit='10' transform='translate(194.162419,95.942781)scale(0.996264,-0.996264)'>
+<text class='f5' x='115.467985' y='97.013093'>,<tspan x='121.107841'>na</tspan><tspan x='130.576332'>vigate</tspan><tspan x='157.977583'>with</tspan></text>
+<g stroke-miterlimit='10' transform='translate(194.162419,94.066425)scale(0.996264,-0.996264)'>
<g fill='#000' stroke='#000'>
<g stroke-width='0.4'>
<g stroke='#4c4c4c'>
@@ -75,11 +69,11 @@ text.f9 {font-family:nf7;font-size:10.909088px}
</g>
</g>
<g transform='translate(-13.04253,-2.18193)'>
-<g stroke='none' transform='scale(-1.00375,1.00375)translate(194.162419,95.942781)scale(-1,-1)'>
+<g stroke='none' transform='scale(-1.00375,1.00375)translate(194.162419,94.066425)scale(-1,-1)'>
<g fill='#000'>
<g stroke='none'>
<g fill='black'>
-<text class='f4' x='194.162419' y='95.942781'>P<tspan x='199.011738'>ageDn</tspan></text>
+<text class='f4' x='194.162419' y='94.066425'>P<tspan x='199.011738'>ageDn</tspan></text>
</g>
</g>
</g>
@@ -90,8 +84,8 @@ text.f9 {font-family:nf7;font-size:10.909088px}
</g>
</g>
</g>
-<text class='f5' x='212.423469' y='98.889449'>&amp;</text>
-<g stroke-miterlimit='10' transform='translate(237.706684,95.942781)scale(0.996264,-0.996264)'>
+<text class='f5' x='212.423469' y='97.013093'>&amp;</text>
+<g stroke-miterlimit='10' transform='translate(237.706684,94.066425)scale(0.996264,-0.996264)'>
<g fill='#000' stroke='#000'>
<g stroke-width='0.4'>
<g stroke='#4c4c4c'>
@@ -102,11 +96,11 @@ text.f9 {font-family:nf7;font-size:10.909088px}
</g>
</g>
<g transform='translate(-12.90002,-2.18193)'>
-<g stroke='none' transform='scale(-1.00375,1.00375)translate(237.706684,95.942781)scale(-1,-1)'>
+<g stroke='none' transform='scale(-1.00375,1.00375)translate(237.706684,94.066425)scale(-1,-1)'>
<g fill='#000'>
<g stroke='none'>
<g fill='black'>
-<text class='f4' x='237.706684' y='95.942781'>P<tspan x='242.556003'>ageUp</tspan></text>
+<text class='f4' x='237.706684' y='94.066425'>P<tspan x='242.556003'>ageUp</tspan></text>
</g>
</g>
</g>
@@ -117,11 +111,17 @@ text.f9 {font-family:nf7;font-size:10.909088px}
</g>
</g>
</g>
-<text class='f5' x='252.750292' y='98.889449'>,<tspan x='258.390148'>left</tspan><tspan x='274.52963'>&amp;</tspan><tspan x='284.769237'>righ</tspan><tspan x='300.406596'>t</tspan><tspan x='307.068619'>mouse</tspan><tspan x='335.276844'>clic</tspan><tspan x='348.340852'>k</tspan><tspan x='356.2761'>or</tspan><tspan x='-63.505917' y='109.848353'>mouse</tspan><tspan x='-35.297692'>wheel.</tspan><tspan x='-63.505917' y='128.536269'>T</tspan><tspan x='-57.623976'>o</tspan><tspan x='-49.939787'>build</tspan><tspan x='-26.376145'>this</tspan><tspan x='-8.398555'>presen</tspan><tspan x='17.012153'>tation</tspan><tspan x='44.162346'>from</tspan><tspan x='65.941679'>the</tspan><tspan x='81.821136'>source,</tspan><tspan x='112.620644'>run:</tspan></text>
-<text class='f3' x='-63.505917' y='141.880485'>dvilualatex<tspan x='-7.017742'>beamer-example</tspan><tspan x='-63.505917' y='152.839389'>dvilualatex</tspan><tspan x='-7.017742'>beamer-example</tspan><tspan x='-63.505917' y='163.798293'>dvisvgm</tspan><tspan x='-25.847131'>--bbox=papersize</tspan><tspan x='54.177781'>--font-format=woff2</tspan><tspan x='148.324736'>--zoom=-1</tspan><tspan x='195.398217'>--page=-</tspan><tspan x='237.76435'>--linkmark=none</tspan><tspan x='313.081915'>\</tspan><tspan x='261.301476' y='174.757197'>beamer-example</tspan></text>
+<text class='f5' x='252.750292' y='97.013093'>,<tspan x='258.390148'>left</tspan><tspan x='274.52963'>&amp;</tspan><tspan x='284.769237'>righ</tspan><tspan x='300.406596'>t</tspan><tspan x='307.068619'>mouse</tspan><tspan x='335.276844'>clic</tspan><tspan x='348.340852'>k</tspan><tspan x='356.2761'>or</tspan><tspan x='-63.505917' y='107.971997'>mouse</tspan><tspan x='-35.297692'>wheel.</tspan><tspan x='-63.505917' y='126.659913'>T</tspan><tspan x='-57.623976'>o</tspan><tspan x='-49.939787'>build</tspan><tspan x='-26.376145'>this</tspan><tspan x='-8.398555'>presen</tspan><tspan x='17.012153'>tation</tspan><tspan x='44.162346'>from</tspan><tspan x='65.941679'>the</tspan><tspan x='81.821136'>source,</tspan><tspan x='112.620644'>run:</tspan></text>
+<text class='f3' x='-63.505917' y='140.942307'>dvilualatex<tspan x='-7.017742'>beamer-example</tspan><tspan x='-63.505917' y='151.901211'>dvilualatex</tspan><tspan x='-7.017742'>beamer-example</tspan><tspan x='-63.505917' y='162.860115'>dvisvgm</tspan><tspan x='-25.847131'>--bbox=papersize</tspan><tspan x='54.177781'>--font-format=woff2</tspan><tspan x='148.324736'>--zoom=-1</tspan><tspan x='195.398217'>--page=-</tspan><tspan x='237.76435'>--linkmark=none</tspan><tspan x='313.081915'>\</tspan><tspan x='261.301476' y='173.819019'>beamer-example</tspan></text>
<text class='f8' x='357.750568' y='-60.856353'><tspan fill='#bfbfbf'></tspan></text>
<a xlink:href='beamer-example-2.svg' xlink:title='beamer-example-2.svg'>
<text class='f8' x='369.64693' y='-60.856353'><tspan fill='#adade0'></tspan></text>
</a>
+<style>svg{cursor: none}</style>
+<defs>
+<script type='text/javascript'>
+<![CDATA[var cursorTimer;var downOnLink=false;var downOnRoot=false;function islink(tg){return (tg.tagName=='a') ? true : tg.parentNode ? islink(tg.parentNode) : false;};function ismmedia(tg){return (tg.tagName=='video'||tg.tagName=='audio') ? true : tg.parentNode ? ismmedia(tg.parentNode) : false;};document.addEventListener('mousemove', function(e){if(islink(e.target)||ismmedia(e.target)||e.target.getAttribute('class')=='annot'){e.target.style.cursor='pointer';}else{e.target.style.cursor='default';}try{clearTimeout(cursorTimer);}catch(err){};cursorTimer=setTimeout(function(){e.target.style.cursor='none';},3000);});window.addEventListener('contextmenu', function(e){if(!islink(e.target)&&!ismmedia(e.target)) e.preventDefault();});document.addEventListener('mousedown', function(e){if(islink(e.target)||ismmedia(e.target)) downOnLink=true;else downOnRoot=true;});document.addEventListener('mouseup', function(e){if(downOnLink||!downOnRoot){downOnLink=false;return;}downOnRoot=false;if(!e.shiftKey&&e.button==0) document.location.replace('beamer-example-2.svg');});document.addEventListener('wheel', function(e){if(e.deltaY>0){document.location.replace('beamer-example-2.svg');}});document.addEventListener('keydown',function(e){if(e.key=='PageDown'||e.key=='ArrowDown'||e.key=='ArrowRight')document.location.replace('beamer-example-2.svg');if(e.key=='Home') document.location.replace('beamer-example-1.svg');if(e.key=='End') document.location.replace('beamer-example-4.svg');});]]>
+</script>
+</defs>
</g>
</svg> \ No newline at end of file
diff --git a/macros/latex/contrib/media4svg/example/beamer-example-2.svg b/macros/latex/contrib/media4svg/example/beamer-example-2.svg
index 7b1687dd44..bd66ce1a98 100644
--- a/macros/latex/contrib/media4svg/example/beamer-example-2.svg
+++ b/macros/latex/contrib/media4svg/example/beamer-example-2.svg
@@ -7,10 +7,10 @@
</script>
</defs>
<style type='text/css'>
-<![CDATA[@font-face{font-family:nf6;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAKkAA0AAAAABbwAAAJNAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoIsggALDAABNgIkAxIEIAWCDgdDG5wEUZQLxiSILw5sIlMfrCIQCuWsKwalg1ASGwLrX9o3eYB3B8ZP4uH7/Wjn3vffX9G0aX26dU2bTZooNEIi49Np0EjbKY2qSa2tGLDOe6SxLj7AMS20uQGMi5UtwrMGaeCmhfdwatnhwM7T0vf0gQXSB6ydB7Ya/J8413ijSIHxXDMx2sJmRTyD3bC/Qf8FXuQN9XcXobR0PWa28blS8hICXv3fpvCu525lnSi3Y5W8ly/xwPw7TrznBkmqXQAMAoCVk+YE+KX8Uks37BUEdwlAQcEwAsyhBIbRxkGjEfxSb/JLuTnwTADREoBIJAAglPdO5BPETQkq6EaLZbABoMEUEqRsmtHwZbZmeboTPpEZJzXfIYIBBF89jHeThq/HPjsJXW4aBUJDCyuujfstALdDiFZYcjVONU88fiZ5aVXMofzHTNJk/evZnl/ezbI9W0eaS/FN7RdvlEM3TunE3qGk2PknBzMjPjIcVxAxJGFO49zgB1yE6bl3R+O7d9HW1xRckuOABawc32/jMkLxywSCD4+nIRf934mUT1P5LG72UgF0ShCUyeQZuAKosAlAb7LNgoi+AoFqDAkSIbDEAtDpBAFSh0EEKMb0EKDq8USAVvFcEU2X1A/JFAtKTDXk8Vir9dSaqbmrjaETfDY2BJbt7Vyqj5/MTTE8FgejjLEzE9mmJ2ZKEe1xQg/eSQLTp/mU8SyHKTO7WQS1F5upeZTOAVumTs6WQ0UMt3sbFxrNVbQxjA71MUAuzeWKkJFRuvfvnPb3o8nKUuIeBQAAAA==) format('woff2');}
-@font-face{font-family:nf4;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
-@font-face{font-family:nf7;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
-@font-face{font-family:nf5;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAARUAA0AAAAACEQAAAQAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgmoIBBEICoZ0hVgLFgABNgIkAygEIAWCDgc6G6kGIB6FcbNzEXFwFfGAzBSibmURPL8/6OfchwWIuHmTohUhfTvCyfChd853VUjA007DroiJpBNR/fhbFfwPXfM5Vvjgf6ORrMUH9EFJi9SIABnJCKLKZhVAw+EEbYt6Sa3pAldCwPvH368EPskcvBP6k3geC1GQtokegh2QE59wChEYvMiAPEYCFpu5PqwUMP/vyOj/XhanixRW5kZGuaadGGu5EJvlJoLqKkpK85WpUqvh7/g/AJcivvX/5Ruvu+YqFRGSQpQQDIkEEn0Epcz/kxegpAIVgXaVnK5V6gLE/yVQGdRFQ6IOMQYAObpLIMk5m2TjXGIaylCEUbDEEDbVJgHBSrUl6ayU6SCpgjlu77KFy8xXDlWJrQx9ux3bzjfKW7Zsx5EGBWvWPKxSgwi7o0iFehfPMcJTDD5TZyBj/uD0i4yw/cGVj8hQyJ4HrPrejFV8McRs5w5+wAjH33pOiLZ6RWx9PlslVv3igks6s+XFmROTFz9bN4MlwvbIFt0+bdla2Vl2h1v+0O7K23duOW+Ne2ISpBDlRrOSBdKsL0kftH0qpO8f6nFFHbQPNTBH4JZWrkyGXgiXnWBR9FyZT4HKqiSkpy9lV35sM9Xqise/0+uZ1+1vz+NzSNwQT/8ZaOSd/ntVHs/H8E1VhU286eaVJb8qfMq5tLz3kUUv/pgia9ZnuF2RwNTu8d2HhMyB4YL8ruHtvUPD5mrubFU8uxChNbr8m2mJHvkGmktMLDOuHuTuY3ktx2p4NYxzsuA2FC3m+Rkq9Et1kjMb09NaR/OLBkbSrEJUftRv5DtzM8YFtrpZI8PQTBl+5B3jjBonGNx3qJ0enduHPzQtTN8jR3nbUHG245m6yr118AfvMrdl7QZxWlO1n5F4CK89K+ybyMzqmzy/aTCjNt1QfoxG0Xrz4MVmgeev/80WKv+VQjzv4Ro75TpONfXamsJywt29PttZc8tq1DxUzzLEw9MpZ05ItEtLPB8fSXtdl0zNlBG5TmVGDTrHAlwnegw9XCHHt86HyuJtS5YlYgQWwwUxbivJf4vELweC3i9vO7xC1/fXilXEP3Zl4xr8/yfdSRdBRQkE6Rn3GdnpPZBeR6TdKkcNVBDTgPQxg0S1iSNoHnpa6dl+M0pUY4HKRpLAKuAoMpI9rFhYj+GkgppNkGlhIV6oYu8CSplTyESuiaQ6ADLDNQSF+jYuViqdxGxlKrSpVaQZfkFXDIzXoF5rtXKzCmWo3rrrCcxgBBuUc4vvbYBuBhVYbz0dvXl7FqrcXFFGne0dqTetL3eTAWcPOy+7EywOu+lgsxZVq3JSvRYvuMx1O9k7YjWM2cuAJPkrIybsPsgEkWIlSA6RuLygCg==) format('woff2');}
+<![CDATA[@font-face{font-family:nf6;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAKUAA0AAAAABcAAAAI+AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoIsggALDAABNgIkAxIEIAWCEQdDG58EIC4KY2NlvHeub+wv1e4QNImH5+2qP/dVVS+gmokW6l4jFp3aISN8KBfTVfaJSAkWNtr/A/CDYRtMb92gNEFxmf+b8S+agnGuc+LYVhot4gx64ZqgncCJnKHe7kRJMo6Zbe2BlDxCwNdvvLgGLzctmtLGI9sY5xSkE+k9nHL/jhOvVCORFI0AaAmAaWumrOJXr43/z4Ks3uBjBCBDhq4CjJYJdJUrkcsFvwa/osUCiAoBiIQEAAjt3bq0H/E/CRSgMSqYilmAHP0lkKQ87x4xa1I0y+fkTzReefWOc1qcfNQ4/nCaz71617FXTtyqS8dYffnkj9t46Tazm5+4H8cebItZl24xhpOvvXrcNZJbR9fdaHTjm/L9ee//d/G88vz7l9W2D9uORXKVYobKj573/PTAweeeY/vTILDzGzmkzTvEO21oLiuiEqY11j0Cj8OA0U8a5H6qPa4UzygkSzQHyqCC5juV+KfA8cuBoN/Qr04tbTH6r4ZNsm+n8lr/f5JtzOrRUAJBVg+2BSGFDjUAJa9GXeLQVyBQ6CGBhBAYrz+goTUCJA20FCBTWiBAoYmLAlRk7slE3kjSHJLMjNeRLLR38FpFxV0zrLbWbpsst4PPxppMtdUWu7rXd1hrtVJNfwOVRiptscZQn1fV9AMwENRATfVSkkbdO9auLmv9B5Yjyy1rhvpCtdavOrDfadrHHKvtsNN6a36pasFwp5GrmgZLCv02pNU5XCCkSJE1Xr5jx9a9p5PehOK2KQAA) format('woff2');}
+@font-face{font-family:nf4;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
+@font-face{font-family:nf7;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
+@font-face{font-family:nf5;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAARgAA0AAAAACEgAAAQKAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgmoIBBEICoZ0hVgLFgABNgIkAygEIAWCEQc6G6wGIB6F6RbPbTaTbzJ0tWoFEeBmzSZAadI67Sm9VAWqoidm4cVcqKDb3Cq/cICRBUoP5X9HwdDl+O7+G+JddCRt8YB+0KTG1LaNDRJJBGMNzNYACsMELd/t1xurRSohXDv6koJoLUAAXr7tvTMA3l8YqLwGi7y2E7CCclS5G/AgT97nmgJJZ1UBvZQAS7e8lRNA151q/J9LXw8IAaKhqKwsHwQTksh2FmqAH3YUbHSZNGvB6rv/AXAC+db/17rAuc52ZnaESogNBHtEARRsIRio/D8WK2ADL7ADy7w5XXhbAfkfAaAB4ACLIcEg5QCABUihAKBg2UXlaG6xREmohEiY6BKMbX2lWHSrr6VLt2qbpcOM4dYr2ePoGQrdq8slGr+d59Irlwyeeqrn9EXDZ599t+4v5lVi7cBzJTykma+w51VPN93PnsUPaOZld133muwtv/p53fPskjPh472a6bjhFc287bnXRHw9p8ve18yq6Z7X70/v0i5+/e7b1UtfPXeJLuZlorrurOy5RONy3ZM5tPcqzbxiz5XZcbWoICttcUSPO+S3gdK1J+kVs+u6vakPe0qvxZ/yTMcpmiZ7X5dgsokr3ir7FdDQFeL1y/Xgx44OP8t+1mfGYz2PpTx1rLNfGvc6jW+D7IN3ffOIV5Oz3rl2dmStM+qikfEvp/OnHJ2D79WMvv51FKozfV/0qKm17vHd95t7du8bHtq67zJ3ReUx3sdsCHn1/mqfA6d9vqgleyjI++TIuO5HbnA8x2kLDt2eu7jRFes437qiszA4JHDCr61nTVfnhgNDo7v3d8aXhxcahfu/i0kT3K/7RS8Jruix8eNpjWFrDmvUaW90gHFMuvPGxsrA7P7QpzwMuCfubkfoNcH8cfoxxsINST5anZtbbuSpV0d2Hu7p3Xnkvl17unm2vUP19tHzYspOii6577Fv+syZbydQbQ+3ZouXnysgYOPayv6qrNyPkhMcp/oHnBoSV56d4+pfUV6Xvr7J2VRj7MjwzBll1ZwbHm0EDU4EwI1C6rnJy8K37htt1nd6WlVhZqAKrcy81yb/ZCS/LIDAxu/Mh4f9C3616+rnS9mkQf/XPd0DwI4CgIDyQPmMvt4DKE8T6n6azBMOkEZQ3hOUQeRuJmwBhJ/zfSUsg6UE0ChhAQgBZRAlUgCAnSlIKHgR0CVBxdBHYEXn5CWwoXI5KmLxRsEPgFVKLMZWQm1fzoaN82kzadpGC0atwy/oSqHKaqtsaFZfZ9okg1uKNAh5hFeZkhlzcUsuIA24gVvk+1lGqq+bnjTcKWlGnrFqKpOSXO5kV1ryM5bESp1YZ73ZaAGDK4LCm27IlZJGJAH7CkChxjRAFHvnqlajQbO2KerU8CwAAA==) format('woff2');}
text.f6 {font-family:nf4;font-size:10.909088px}
text.f7 {font-family:nf5;font-size:14.346196px}
text.f8 {font-family:nf6;font-size:10.909088px}
@@ -18,12 +18,6 @@ text.f9 {font-family:nf7;font-size:10.909088px}
]]>
</style>
<g id='page2'>
-<style>svg{cursor: none}</style>
-<defs>
-<script type='text/javascript'>
-<![CDATA[var cursorTimer;var downOnLink=false;var downOnRoot=false;function islink(tg){return (tg.tagName=='a') ? true : tg.parentNode ? islink(tg.parentNode) : false;};document.addEventListener('mousemove', function(e){if(islink(e.target)||e.target.getAttribute('class')=='annot'||e.target.tagName=='video'){e.target.style.cursor='pointer';}else{e.target.style.cursor='default';}try{clearTimeout(cursorTimer);}catch(err){};cursorTimer=setTimeout(function(){e.target.style.cursor='none';},3000);});window.addEventListener('contextmenu', function(e){if(!(islink(e.target)||e.target.tagName=='video'||e.target.tagName=='audio')) e.preventDefault();});document.addEventListener('mousedown', function(e){if(islink(e.target)) downOnLink=true;else downOnRoot=true;});document.addEventListener('mouseup', function(e){if(downOnLink||!downOnRoot){downOnLink=false;return;}downOnRoot=false;if(!e.shiftKey&&e.button==0) document.location.replace('beamer-example-3.svg');if(e.shiftKey||e.button>1) document.location.replace('beamer-example-1.svg');});document.addEventListener('wheel', function(e){if(e.deltaY>0){document.location.replace('beamer-example-3.svg');}if(e.deltaY<0){document.location.replace('beamer-example-1.svg');}});document.addEventListener('keydown',function(e){if(e.key=='PageDown'||e.key=='ArrowDown'||e.key=='ArrowRight')document.location.replace('beamer-example-3.svg');if(e.key=='PageUp'||e.key=='ArrowUp'||e.key=='ArrowLeft')document.location.replace('beamer-example-1.svg');if(e.key=='Home') document.location.replace('beamer-example-1.svg');if(e.key=='End') document.location.replace('beamer-example-4.svg');});]]>
-</script>
-</defs>
<rect x='-71.999989' y='-71.999989' height='255.118106' width='453.543292' fill='#fff'/>
<text class='f7' x='-63.505917' y='-56.953706'><tspan fill='#3333b3'>Video</tspan><tspan fill='#3333b3' x='-23.322224'>file</tspan></text>
<text class='f9' x='-63.505917' y='-32.57292'>Examples<tspan x='-13.902297'>of</tspan><tspan x='-1.476847'>em</tspan><tspan x='12.148608'>b</tspan><tspan x='18.519511'>edded</tspan><tspan x='50.035864'>lo</tspan><tspan x='58.828583'>cal</tspan><tspan x='75.792213'>video</tspan><tspan x='104.581294'>files.</tspan><tspan x='130.697653'>Recommended</tspan><tspan x='203.559449'>file</tspan><tspan x='221.133987'>formats</tspan><tspan x='260.919429'>are</tspan></text>
@@ -3050,5 +3044,11 @@ AAAAAC1pbHN0AAAAJal0b28AAAAdZGF0YQAAAAEAAAAATGF2ZjUzLjMyLjEwMA==
<a xlink:href='beamer-example-3.svg' xlink:title='beamer-example-3.svg'>
<text class='f8' x='369.64693' y='-60.856353'><tspan fill='#adade0'></tspan></text>
</a>
+<style>svg{cursor: none}</style>
+<defs>
+<script type='text/javascript'>
+<![CDATA[var cursorTimer;var downOnLink=false;var downOnRoot=false;function islink(tg){return (tg.tagName=='a') ? true : tg.parentNode ? islink(tg.parentNode) : false;};function ismmedia(tg){return (tg.tagName=='video'||tg.tagName=='audio') ? true : tg.parentNode ? ismmedia(tg.parentNode) : false;};document.addEventListener('mousemove', function(e){if(islink(e.target)||ismmedia(e.target)||e.target.getAttribute('class')=='annot'){e.target.style.cursor='pointer';}else{e.target.style.cursor='default';}try{clearTimeout(cursorTimer);}catch(err){};cursorTimer=setTimeout(function(){e.target.style.cursor='none';},3000);});window.addEventListener('contextmenu', function(e){if(!islink(e.target)&&!ismmedia(e.target)) e.preventDefault();});document.addEventListener('mousedown', function(e){if(islink(e.target)||ismmedia(e.target)) downOnLink=true;else downOnRoot=true;});document.addEventListener('mouseup', function(e){if(downOnLink||!downOnRoot){downOnLink=false;return;}downOnRoot=false;if(!e.shiftKey&&e.button==0) document.location.replace('beamer-example-3.svg');if(e.shiftKey||e.button>1) document.location.replace('beamer-example-1.svg');});document.addEventListener('wheel', function(e){if(e.deltaY>0){document.location.replace('beamer-example-3.svg');}if(e.deltaY<0){document.location.replace('beamer-example-1.svg');}});document.addEventListener('keydown',function(e){if(e.key=='PageDown'||e.key=='ArrowDown'||e.key=='ArrowRight')document.location.replace('beamer-example-3.svg');if(e.key=='PageUp'||e.key=='ArrowUp'||e.key=='ArrowLeft')document.location.replace('beamer-example-1.svg');if(e.key=='Home') document.location.replace('beamer-example-1.svg');if(e.key=='End') document.location.replace('beamer-example-4.svg');});]]>
+</script>
+</defs>
</g>
</svg> \ No newline at end of file
diff --git a/macros/latex/contrib/media4svg/example/beamer-example-3.svg b/macros/latex/contrib/media4svg/example/beamer-example-3.svg
index 0ec4d14e99..801af25651 100644
--- a/macros/latex/contrib/media4svg/example/beamer-example-3.svg
+++ b/macros/latex/contrib/media4svg/example/beamer-example-3.svg
@@ -7,10 +7,10 @@
</script>
</defs>
<style type='text/css'>
-<![CDATA[@font-face{font-family:nf6;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAKkAA0AAAAABbwAAAJNAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoIsggALDAABNgIkAxIEIAWCDgdDG5wEUZQLxiSILw5sIlMfrCIQCuWsKwalg1ASGwLrX9o3eYB3B8ZP4uH7/Wjn3vffX9G0aX26dU2bTZooNEIi49Np0EjbKY2qSa2tGLDOe6SxLj7AMS20uQGMi5UtwrMGaeCmhfdwatnhwM7T0vf0gQXSB6ydB7Ya/J8413ijSIHxXDMx2sJmRTyD3bC/Qf8FXuQN9XcXobR0PWa28blS8hICXv3fpvCu525lnSi3Y5W8ly/xwPw7TrznBkmqXQAMAoCVk+YE+KX8Uks37BUEdwlAQcEwAsyhBIbRxkGjEfxSb/JLuTnwTADREoBIJAAglPdO5BPETQkq6EaLZbABoMEUEqRsmtHwZbZmeboTPpEZJzXfIYIBBF89jHeThq/HPjsJXW4aBUJDCyuujfstALdDiFZYcjVONU88fiZ5aVXMofzHTNJk/evZnl/ezbI9W0eaS/FN7RdvlEM3TunE3qGk2PknBzMjPjIcVxAxJGFO49zgB1yE6bl3R+O7d9HW1xRckuOABawc32/jMkLxywSCD4+nIRf934mUT1P5LG72UgF0ShCUyeQZuAKosAlAb7LNgoi+AoFqDAkSIbDEAtDpBAFSh0EEKMb0EKDq8USAVvFcEU2X1A/JFAtKTDXk8Vir9dSaqbmrjaETfDY2BJbt7Vyqj5/MTTE8FgejjLEzE9mmJ2ZKEe1xQg/eSQLTp/mU8SyHKTO7WQS1F5upeZTOAVumTs6WQ0UMt3sbFxrNVbQxjA71MUAuzeWKkJFRuvfvnPb3o8nKUuIeBQAAAA==) format('woff2');}
-@font-face{font-family:nf4;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
-@font-face{font-family:nf7;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
-@font-face{font-family:nf5;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAUcAA0AAAAACWAAAATFAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgnIIBBEICokIhzYLGAABNgIkAywEIAWCDgc4G5EHUZQvThDix0F1s9zshjiKkOnishF+7/kfwfe2Wr8/s3eIyByqvnuYWOWEZEQmSUSRWoiHZDaEx7or35VXXgSWoO3ftwC8zfyPBZj/c033R7NN4NtEZmuCAUVeaQVH4b0veqBHUEnpBdR8OLoCpDsAu2F6Ad4FboSA9y8+jcLnVexFNztSvbivRLqR3uIWyMdng1spUjQTuOGhiyrTt2GJo5nWf2dr0h4tu0UyH+lQie8OBaNzi1JNNMHTlijbYY99Djv6H2Jt899mTRk3ZshgITCiiqAmEhKlg2DmryEvoQrV6kBd9YTD16QTiP9KoD5ohQ7ECeI5IMcAqWjpUOJjU55PiCbRKlpGp6gfzQE+96s1jA7RPeqXGuY/ZLAwquAQGaQmDyGyQ4cZH9+ieCTg7l3I3UESAPPrgRC7DiGwFvP6EJENUBDz7uunADtnPHQe80dnYDKLkCA3MqI0gvndt/dvB9KQbIDCcYBfD8AJRG4B9jafABIYVvkYImsObLkDOd+NVzF/WWUMgJccItS2W4jsuXIHQkl+ZG1zmOYb7x61ZdDC3YN7u6O3p1QwJGug4NQpAXbVVuXt07kNnFrHrk9shLJdNPpEyM2rHkHklvodRM4dGqUQHJTUh8R7d1WzANSGcjbEJFuDDGt2izBbOMuTvPdmkAMRYI8hAgUxRBDduuUHsAC7ff/u3gsUwFWIAavXDwFWOTF5HHK47lj41SpJQ0OYV0sZGdm4F2uPi42/0TqTeMbiEiONRQ3EXFxVNfszxUM8U4SfxKeHyuYkOgUPFZeY0pRtpYa8RqUtRWdVVGax7YJab6Z5wtnn5OfHZw10r26QvTkzsr1SREqN9LE2OlU+0qmPTIEgbbtIP4ug3G97/DQysWNRRnrTojU2fv6d4p21CrePBkosGX6rFOWYLic+oGuUcGobdQUMl1JYzFk53NqQmhHWjHeXV5DNlYpJrGTia5ekZ3Usjjf21XbXcl/8xYAOPYql9FXk/RJFwHfaKlyjcjmirTh9Ga1OW3p7uL+sY4riBXmFQ0YHKcVN8kCF1uTcpfaF5/2WCHf0d/stm12lUyj6PzQKlm/kZ5bWarWj+2Ji+2jbTq0DIZGMbVjlx+oR4MLtzLbliUltK460swnoVrn0ULGsaQOffn2vI2c+JZPCz7nAv8VZ0dE+VcOvXLmL7tqnCCI8Kr5T8YqGDS1E0dwmzBl876OPm0dDWitL5sI64pvKUdF2UVId1fHCwo1B93l09W55bKWOxMELAfPuOnVoBR6HgeOeVOd+DXlcVfpQIrOktYAMlLT2eFX80UQkg+Tua4b/araxsdvvOjj7ssOe1ez/x0wlvUAdiUH+pBf/P1qTWUHWVgjbrh+71EDMJ73TJxW6xlOdoomabJAivusUZzRLJc0ERCySwzIgEJMMgMUjFVhOqjUpwkxnq2BJfffnV8k8lIm8rqQRAGYmaANLWjm+WpUqDyxRVuuI3TY7yM/2UGbYZ6/DWc2vWqusMMQAgxTGKOxVMRzVDzFSf6MTeohBySG8J4y1P1hbLoYMGFSMKfZWhvPCkJH9R/c/lezGCmUHHbJjqVRh8PQRF/Te4IERywQMb4Ek1NdHSEM6zzTLPIsssdJqAAAA) format('woff2');}
+<![CDATA[@font-face{font-family:nf6;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAKUAA0AAAAABcAAAAI+AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoIsggALDAABNgIkAxIEIAWCEQdDG58EIC4KY2NlvHeub+wv1e4QNImH5+2qP/dVVS+gmokW6l4jFp3aISN8KBfTVfaJSAkWNtr/A/CDYRtMb92gNEFxmf+b8S+agnGuc+LYVhot4gx64ZqgncCJnKHe7kRJMo6Zbe2BlDxCwNdvvLgGLzctmtLGI9sY5xSkE+k9nHL/jhOvVCORFI0AaAmAaWumrOJXr43/z4Ks3uBjBCBDhq4CjJYJdJUrkcsFvwa/osUCiAoBiIQEAAjt3bq0H/E/CRSgMSqYilmAHP0lkKQ87x4xa1I0y+fkTzReefWOc1qcfNQ4/nCaz71617FXTtyqS8dYffnkj9t46Tazm5+4H8cebItZl24xhpOvvXrcNZJbR9fdaHTjm/L9ee//d/G88vz7l9W2D9uORXKVYobKj573/PTAweeeY/vTILDzGzmkzTvEO21oLiuiEqY11j0Cj8OA0U8a5H6qPa4UzygkSzQHyqCC5juV+KfA8cuBoN/Qr04tbTH6r4ZNsm+n8lr/f5JtzOrRUAJBVg+2BSGFDjUAJa9GXeLQVyBQ6CGBhBAYrz+goTUCJA20FCBTWiBAoYmLAlRk7slE3kjSHJLMjNeRLLR38FpFxV0zrLbWbpsst4PPxppMtdUWu7rXd1hrtVJNfwOVRiptscZQn1fV9AMwENRATfVSkkbdO9auLmv9B5Yjyy1rhvpCtdavOrDfadrHHKvtsNN6a36pasFwp5GrmgZLCv02pNU5XCCkSJE1Xr5jx9a9p5PehOK2KQAA) format('woff2');}
+@font-face{font-family:nf4;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
+@font-face{font-family:nf7;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
+@font-face{font-family:nf5;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAUkAA0AAAAACWQAAATQAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgnIIBBEICokIhzYLGAABNgIkAywEIAWCEQc4G5QHUZQwTiDEFwemwHW0HJkU5Y2xnxj5qkU4zx5Tj349/D6C+rHf3vuKiIUCoTEk1RDFM41qUi2SvXSGapFEaOa/rO1hnV0isX+7pgrVvYlJbXrIpl1aTzanTOnMnXXq7wL/Hl7MFEM6c63qG0/Axu1/gNiv/3cq/4RiF4GziMSSLoICZU3t2FpsrS+iBS3BGMMX0OZiaQJSC2AdphfgXeBaCHj9P5kHwOe6OuUGB1JpnIKStCc7COAA5OKT1opIkYzADQ+d/lJjwKzr0kXpzx903dyMd9srYcMORodNJ6tFcb9ZEwsbO2fXg1jj+7tlFltgvtlmhQRG5AnhREIS6uAz468hm0MeBUUoUSr075nBAPGvAWUYGpdrh9gBxBMAyKKXu9nITrxrymb7M4tNlz4SdQDGvlpFtOcWyVVkF0mkdFvEdBaz6BCmO5z5BQu2sEfS795NvIONlB2sB8XuOozdEskN4f0NSF52ELd+MTxOWO41+zyRji5FlQLGcnHuXKu5RNp9e/92MEV0A1KWgrQe4ASmt0C4LZVDOS9YH8N0zYEtd5CYsvEqkS7bzAd4KWLKbLuF6Z4rdxAyluauLQ8TfOndoyE8Xnn34N7u3tuLbQiia5B86qRMWLVVubBacQNH64T18Y3IvItAn4jEFbZHML1lfwfTc4fmMRgNSrgh6o27qlyAWrtpQ2SyMcQLvrcov0UMOCklbYYmhEE4himSE4QRvnUrFYhM2L5/d+852tAqzMPq9bNBsDZULkAiqTsUabVNxezZRLKrmjt3417itECz4I3jGcMZ/0u8KVG7a6JjbB1m1GuzE6qUT8pqc8ybDJFZszu7fDgmpJfeUt8rhOEaevZqYJuFfkn8kIVRySc/Pz7r7nJ1g/nNpXO391KZ2NHpQrBz72TT6kc+IOdCRrk1UJz7bY+fFhhGjqqrHTxqTXBq2iTtpH6620czjMbMeWtVGFFroZ3p4ll+ahtzBeZ0Y4gmyjovyINZqnQoi7PUmTebFBt68WX9xtQ2jBxd5pXiFOcYN/qLO5dzlJi42VimGlTwnQvM0/caj7lA0c3McVIItz0vzTyiir1gqTvkeZBhN1mCDecgxpnsy2v5bZQXkRb727yxt3O7+n9ObeM38jObOg4L5aYXl0znQiY5Hsgu4ENye32s7gAXbtcPH2+oGD7hyAihHF2rWJujaVjinjzDLfHImU+VtP1zM6QNjWIjwqr1qT2sJ3OT97GQH9/zO1PGegwcSlm/4Nwo+D6dO+5XhDjHhgKNtr4F9bQplNlGcmJBHeK8N46b0hLTqjHqI6bnTom0Z2UBuEPQ995qhW/9KuVbiZLLhBZCTiiF9pgqfjSJXjmA4PLnc26myV9DMl877EmZ+7g2swdAUQJBeja30V8VyLQICBsui3VggZgApBf8OOLaCfrMsBuI+iDecGBGqRbaR5lpYZAQAgNkAEVLAh1QQbVcxBnd+jinzMXwvIxbkItsiaQSgDMGxHBOo9dyeXk3UGxi5mJt4Ag/2/MCg3a2zlnBLzszQXQyFfGRrSkL5TU6KQMq6KBbeFNYYNWPswnpsko+bVstWKTpkqZKZ5P1gEUTRyeL1ZJEW8HFNb2hjXSxkonxFQBJKCxDSENqZ2QVVdV19AA=) format('woff2');}
text.f6 {font-family:nf4;font-size:10.909088px}
text.f7 {font-family:nf5;font-size:14.346196px}
text.f8 {font-family:nf6;font-size:10.909088px}
@@ -18,16 +18,10 @@ text.f9 {font-family:nf7;font-size:10.909088px}
]]>
</style>
<g id='page3'>
-<style>svg{cursor: none}</style>
-<defs>
-<script type='text/javascript'>
-<![CDATA[var cursorTimer;var downOnLink=false;var downOnRoot=false;function islink(tg){return (tg.tagName=='a') ? true : tg.parentNode ? islink(tg.parentNode) : false;};document.addEventListener('mousemove', function(e){if(islink(e.target)||e.target.getAttribute('class')=='annot'||e.target.tagName=='video'){e.target.style.cursor='pointer';}else{e.target.style.cursor='default';}try{clearTimeout(cursorTimer);}catch(err){};cursorTimer=setTimeout(function(){e.target.style.cursor='none';},3000);});window.addEventListener('contextmenu', function(e){if(!(islink(e.target)||e.target.tagName=='video'||e.target.tagName=='audio')) e.preventDefault();});document.addEventListener('mousedown', function(e){if(islink(e.target)) downOnLink=true;else downOnRoot=true;});document.addEventListener('mouseup', function(e){if(downOnLink||!downOnRoot){downOnLink=false;return;}downOnRoot=false;if(!e.shiftKey&&e.button==0) document.location.replace('beamer-example-4.svg');if(e.shiftKey||e.button>1) document.location.replace('beamer-example-2.svg');});document.addEventListener('wheel', function(e){if(e.deltaY>0){document.location.replace('beamer-example-4.svg');}if(e.deltaY<0){document.location.replace('beamer-example-2.svg');}});document.addEventListener('keydown',function(e){if(e.key=='PageDown'||e.key=='ArrowDown'||e.key=='ArrowRight')document.location.replace('beamer-example-4.svg');if(e.key=='PageUp'||e.key=='ArrowUp'||e.key=='ArrowLeft')document.location.replace('beamer-example-2.svg');if(e.key=='Home') document.location.replace('beamer-example-1.svg');if(e.key=='End') document.location.replace('beamer-example-4.svg');});]]>
-</script>
-</defs>
<rect x='-71.999989' y='-71.999989' height='255.118106' width='453.543292' fill='#fff'/>
<text class='f7' x='-63.505917' y='-57.097165'><tspan fill='#3333b3'>Remote</tspan><tspan fill='#3333b3' x='-11.802229'>video</tspan></text>
<text class='f9' x='-63.505917' y='-29.403759'>Video<tspan x='-32.295019'>streamed</tspan><tspan x='14.450421'>from</tspan><tspan x='40.239503'>URL</tspan><tspan x='66.901312'>and</tspan><tspan x='88.119485'>Y</tspan><tspan x='95.395853'>ouT</tspan><tspan x='113.886763'>ub</tspan><tspan x='126.323118'>e</tspan><tspan x='134.799477'>pla</tspan><tspan x='149.046751'>y</tspan><tspan x='154.5013'>er</tspan><tspan x='167.254022'>with</tspan><tspan x='192.104922'>t</tspan><tspan x='196.043108'>w</tspan><tspan x='203.61402'>o</tspan><tspan x='212.701288'>videos</tspan><tspan x='245.788549'>pla</tspan><tspan x='260.035823'>y</tspan><tspan x='265.490372'>ed</tspan><tspan x='280.032184'>in</tspan><tspan x='292.763088'>a</tspan><tspan x='301.850356'>lo</tspan><tspan x='310.643076'>op.</tspan></text>
-<text class='f6' x='-63.505917' y='-6.450922'>\includemedia[width=20em,height=11.25em,url,controls]{}{%<tspan x='-52.051374' y='7.098275'>https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.webm}</tspan><tspan x='-63.505917' y='23.636263'>\includemedia[width=20em,height=11.25em,youtube,controls,loop,</tspan><tspan x='131.221314' y='37.18546'>autoplay,muted]{}{OSPyXTjIrnk,9HQfauGJaTs}</tspan></text>
+<text class='f6' x='-63.505917' y='-6.450922'>\includemedia[width=20em,height=11.25em,url,controls]{}{%<tspan x='-52.051374' y='7.098275'>https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.webm}</tspan><tspan x='-63.505917' y='23.636263'>\includemedia[width=20em,height=11.25em,youtube,loop,</tspan><tspan x='131.221314' y='37.18546'>autoplay,muted]{}{OSPyXTjIrnk,9HQfauGJaTs}</tspan></text>
<g transform='translate(-63.505917,154.112295) scale(-1,-1) translate(-63.505917,154.112295) scale(-1)'>
</g>
<g transform='translate(-63.505917,43.657785)'>
@@ -56,5 +50,11 @@ text.f9 {font-family:nf7;font-size:10.909088px}
<a xlink:href='beamer-example-4.svg' xlink:title='beamer-example-4.svg'>
<text class='f8' x='369.64693' y='-60.856353'><tspan fill='#adade0'></tspan></text>
</a>
+<style>svg{cursor: none}</style>
+<defs>
+<script type='text/javascript'>
+<![CDATA[var cursorTimer;var downOnLink=false;var downOnRoot=false;function islink(tg){return (tg.tagName=='a') ? true : tg.parentNode ? islink(tg.parentNode) : false;};function ismmedia(tg){return (tg.tagName=='video'||tg.tagName=='audio') ? true : tg.parentNode ? ismmedia(tg.parentNode) : false;};document.addEventListener('mousemove', function(e){if(islink(e.target)||ismmedia(e.target)||e.target.getAttribute('class')=='annot'){e.target.style.cursor='pointer';}else{e.target.style.cursor='default';}try{clearTimeout(cursorTimer);}catch(err){};cursorTimer=setTimeout(function(){e.target.style.cursor='none';},3000);});window.addEventListener('contextmenu', function(e){if(!islink(e.target)&&!ismmedia(e.target)) e.preventDefault();});document.addEventListener('mousedown', function(e){if(islink(e.target)||ismmedia(e.target)) downOnLink=true;else downOnRoot=true;});document.addEventListener('mouseup', function(e){if(downOnLink||!downOnRoot){downOnLink=false;return;}downOnRoot=false;if(!e.shiftKey&&e.button==0) document.location.replace('beamer-example-4.svg');if(e.shiftKey||e.button>1) document.location.replace('beamer-example-2.svg');});document.addEventListener('wheel', function(e){if(e.deltaY>0){document.location.replace('beamer-example-4.svg');}if(e.deltaY<0){document.location.replace('beamer-example-2.svg');}});document.addEventListener('keydown',function(e){if(e.key=='PageDown'||e.key=='ArrowDown'||e.key=='ArrowRight')document.location.replace('beamer-example-4.svg');if(e.key=='PageUp'||e.key=='ArrowUp'||e.key=='ArrowLeft')document.location.replace('beamer-example-2.svg');if(e.key=='Home') document.location.replace('beamer-example-1.svg');if(e.key=='End') document.location.replace('beamer-example-4.svg');});]]>
+</script>
+</defs>
</g>
</svg> \ No newline at end of file
diff --git a/macros/latex/contrib/media4svg/example/beamer-example-4.svg b/macros/latex/contrib/media4svg/example/beamer-example-4.svg
index 7d3f2633cf..00bd71d42e 100644
--- a/macros/latex/contrib/media4svg/example/beamer-example-4.svg
+++ b/macros/latex/contrib/media4svg/example/beamer-example-4.svg
@@ -7,13 +7,13 @@
</script>
</defs>
<style type='text/css'>
-<![CDATA[@font-face{font-family:nf6;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAKkAA0AAAAABbwAAAJNAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoIsggALDAABNgIkAxIEIAWCDgdDG5wEUZQLxiSILw5sIlMfrCIQCuWsKwalg1ASGwLrX9o3eYB3B8ZP4uH7/Wjn3vffX9G0aX26dU2bTZooNEIi49Np0EjbKY2qSa2tGLDOe6SxLj7AMS20uQGMi5UtwrMGaeCmhfdwatnhwM7T0vf0gQXSB6ydB7Ya/J8413ijSIHxXDMx2sJmRTyD3bC/Qf8FXuQN9XcXobR0PWa28blS8hICXv3fpvCu525lnSi3Y5W8ly/xwPw7TrznBkmqXQAMAoCVk+YE+KX8Uks37BUEdwlAQcEwAsyhBIbRxkGjEfxSb/JLuTnwTADREoBIJAAglPdO5BPETQkq6EaLZbABoMEUEqRsmtHwZbZmeboTPpEZJzXfIYIBBF89jHeThq/HPjsJXW4aBUJDCyuujfstALdDiFZYcjVONU88fiZ5aVXMofzHTNJk/evZnl/ezbI9W0eaS/FN7RdvlEM3TunE3qGk2PknBzMjPjIcVxAxJGFO49zgB1yE6bl3R+O7d9HW1xRckuOABawc32/jMkLxywSCD4+nIRf934mUT1P5LG72UgF0ShCUyeQZuAKosAlAb7LNgoi+AoFqDAkSIbDEAtDpBAFSh0EEKMb0EKDq8USAVvFcEU2X1A/JFAtKTDXk8Vir9dSaqbmrjaETfDY2BJbt7Vyqj5/MTTE8FgejjLEzE9mmJ2ZKEe1xQg/eSQLTp/mU8SyHKTO7WQS1F5upeZTOAVumTs6WQ0UMt3sbFxrNVbQxjA71MUAuzeWKkJFRuvfvnPb3o8nKUuIeBQAAAA==) format('woff2');}
-@font-face{font-family:nf0;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAIoAA0AAAAABRAAAAHTAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoEcgSALCgABNgIkAxAEIAWCDgcqGyEEAC4KbHBHAelBT6KF5oNQpvuzy2AE9Xtxe3cvtaquq09X0VGxuFg0LpHQZZUIg8bI0qrCMfkQxdr2LXSi+b0ZlVBIPzQRC4VSKFGbJNa4XwIaLycmiOe680dhAt8CwGtggSRZWqQZxYfku8mFAk0k855nPXW0WmoYNmYeKgQ8/L8B3mY2XqnNuMEgL+YDuAym4i07ktQzACAA4PC4NwErWjXZrRjkywICUCjMUcA2TWCObgmaJrDSdXTh7hkFiF4CEIkE5vIdFPeU5bwA0XUSNNCPhnlYBmhYp4JsbTqGekba0ZAx+Pd0cLhOL1GHL50MjeTJ5aiRreVX/+0vlSV/EKq1spRrwWY1ANwPG9vvvua3Y2/Pq9RXUhUU9FCD3Bv/xcXJCoJvz1efG+v+6x+qr3vNbKG7mWd5G/olCPJ2x6ASkGcCANBqUwHUJmpTSkEzQwWJENgnAP2OKSD1GZdjWZRhjyE3SNlyjybagDQKxLIrhz1mPWS9et3VNzV3tTF0wl9gIxzY27nE2pO5qTyHsOQl8nZm2DpCHXEZHFbs4OD87rI8zad5R6x8kt/NuDphJ+7cdHI4MnVytrS3k2cTFt4bxRaLcRL9ZyFPTg8NsXYA) format('woff2');}
-@font-face{font-family:nf1;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAW0AA0AAAAACsAAAAVeAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgwoIBBEICosEiFoLKgABNgIkA1AEIAWCDgdKG4MIIB6FTdlbODhnspzfZFQ7PPIf3k3/3EglIU1nXlOsCt2oU3GC1aH1ucLE2J6J8Kamf/J4eP7enXd/a1vgAUbZHGDRAlsYeMIZFuHPf2mA4e9nw2iMxEyxIhtQxVt0WuHENm4a4Jr+6KKAziwB4ZgPAG9RL4UHBt0FPgkAAXDUf+EDAC46PXtnoSlkegNFYN7MWoAPrtOfLjEAg8/QqZMPrT4VtgHQmZz1/D9RXeyzhczDTjyDVyIWAvJETtdb+wrFCqCTz6yYwq3deBNNzgWFKaS0Gv3T2GabbPSvH3zvS1/4vGSQohJA9KEAwNBBtLIUOXwJgTSCSAQT6ir8UUgtObQHeuoFGOExA2KUK4DeCiIOoAb6ANODAtzq3QwAYArgJoDT9oXRAidROMmkMvF46qeMk9MhJFEvCiSOoqkPcr9MAonUm0Re4uyFIUgkCB2rwVfGvIt0s+9L/UdYbj9BXsdJ0Zf2r8GxJ90vLD8Gj+246Mv4r0omwUUSqUi0iaTipGkQEdl14jIvMCpWuAsjjvOeMNv9R8h7UvTZHGv8JyTty/1x/7/Rtn+Pw3Msx+3W4+jGSZJYrwtYbbSFw8CxaMQMOyAePB/8EPUD8sAB8h48uVNE64ENnJDJ2m1wrNljJi5KvMBUYOeM9t5E2sxF6ysPDeDMMhp2ySJ8rfcct4m8wIky613vsm5DiQRGZNzy74+ffojFeRLrJYq1esXXTpLds4WB40CaWeCc63APtxaX59FWn+1Mx2T9M+Fo1a8SlhOJJJAAgRge0ecI/yjooxthO5w71P+aPB198nIWmKo6XnlMNtQN+JJFZb4cd6G1wDp9RoFSaHWnzRp5UXbkf/d9xvLNh99529Xt6lqe81PxVoyYtQ2gl0qucjPmKdnNh/6+gLCzecvfLkNGbsbziHukYNrXlexMdvldxc5iF7ChsnPcq7Z+H66JT64uzHWX58h2jBvLiR3eaVXGtrLrpTeV3vWGnMTUmrKcaW01sn1swZy2+XPt+C681O0uVSoSeXNhijVepUtYwHyQNzzJaMnqytXGVFt8IaHBwU/UcZYh/d+0iaycip+ieHOJ3pFd0Vicb+4oVf/drSrcdSS1Y/brG+YuczmrNNjor47JTbeXdS7Z0r6kxJZvSlUsK/r82mrMqFEUR12NIUvZjp/OdM/RlTY5pi9zt3qWNTnKtXxBSapisjVTgWnNi80F+erYIr0qD1/5q/3VuBD/2coGU83gmvYGQ1lRxRblmVHnSB38euQXJEUsB7CZfCrhL4ErZ1sXrGxuXLiirWXRwoamhYvclmCLUpc1wlJfY7EphiyrtQb3LzTVLjO7So3a6rnKo1VVFeMWtVlQdHRNrzg1Nd9Q3WRG1b14POU21pduqT5e3t5gBmz9kM/1qY4Hb5jemFc6z2myYZm9siQKAPAnQTP8K5DDff2fAfy5JQLLGDBIFskb8PEAelFQ9JUJQLBioy+mWR7+PEhkbx5soHrlprgQ+wBBGGAyrDIgmOoy7Wwwv53yS3qnUQgHgOYAE6iLNzGKbjRHxQRxcn8W1OmB9LRbVPQC4+xopOcsmRY1qwxalcHQ6AUlNTcnoRcS/EQJOADAAAgBcqh38eQO1GEECl3ksYZx8niiN24HYH2DDBWCwQgB4LFM+vN4fU1/WIAAn2CjXacpRnObCD8TnATMxhlr8uzhiTq1C6OnpgWnUfHG6qAb1MuQzDAh6mmTengPGnZ4Ymd7mF6tDTOGje3QhaY+I9mQfKp8CrBrN9Ek3VWlwujEe3DDoqJTa1GNE+wLAIxhsDeAMLOvjREnXqJ0BcyKFKtSrYaFwsYBAAA=) format('woff2');}
-@font-face{font-family:nf4;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAARQAA0AAAAACDgAAAP7AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgloIBBEICocIhX8LFgABNgIkAxwEIAWCDgc2G7AGUZQwSgjAj8TYVsNWQpS4lMuhFrGVYzvVavE+Hp4/xnvuffEz6PeqNNuiMApw4FFcAfJ5gtPC0XBWx7+XzWsdLJh1IfJo5etA57/+8sA5jwt6FFj7yW66zGdRNB/oAhc5RlMH4G1+kQPgH+KNet26CwFf9nyfBz+SukqbUY7Fc418kJ/xiGyIH6xDidSGCF4BbXL+nn8egNvq8heulFygIwAFBQsQuExZYIGKvcCwQSndVqZS3X/AbRVq+vj/zjxzzR5qPTpBe0ikwu/BXMSrxv7FwOAQ+qnVbAbiPwmGwSwwDWIniGsAVOymBFIKFV5W66agwjI0Yzh2hK8u4m2snpaQfLDcbmxkFm/blDuoe+VJGh+F5ULdiJowt9Ib0HUbH6WPLkW53XPmYJhy9wIMG4EuHFcCVXK0YQDDOmCjWuqc0wKA44KhkcxmgNqFx913RnpdHk1M6Lo13CI9ehsKvbJhjwzHoWGEZ8/WKCKTvQrMXz9y+dzuhIROmau4qj27lcLo2rloHBTqQPWxW/s2zYOuzfvP77ZfvXr/eui6hI0kzJmDjayaBRBio4rLtEAf3Lpwipg1TYBZsa5Dq+DyngULEBpjbCIwCO2GGmlsbDVGI+0FGgueaZ1JOmNxvUyqy6DDDwZ6paX5Ca6p++laummCKXceP3i2e7qpbQAVpJfa0ZNuFSwz+aAJN2SMd8eJnr/UA9ESY4XcqOdlN3hSsJEc/ssUxmYvpnoi/JhE+xdmcLOEub0ZZZa2gpoZ2/0i/C0Mzlk+NhSq8fzOmm60HGjqWVfJpWc0dYLNd/3U/CNzqqjD3zcqqeIUX3jWoJnDG5PlBkTpUA9EFUbyEUhF20cjWlI1liuMK9vDM6riUTOHPciFC23FyyhfPIswEV73zkjETH8xWKSM9DeWU3G7PK0C2cXVJaR4SP3GgP3KZw9auPLvXrnSJM9LnDaB7AdFu+0jzP3Zo32TLDjWTkhJFvOPOS5V+sGSyC/pMGHVwJVVMZ2of7U6C8QkTuFjSV98I71a0v09NAFgPew5uGOg+mWz3ttXVF8SaQQVqCEtxHr88XD8MkJwfzNz3nWm2+/BkfJzF3co8f+ULzAoQZAvwiBSkoTcdbhqjllFYaz6bee4IOyjJYgIwrCTVEAiBI6yAGDQPQikAZMQKJYlQaAZ8VyArvikiDokjYN7i8MobzOv6bque+WifIXqlclWA35H1w5wWqUKdWx5jUL5tNiwYEWLC/VWKGDXasOROWdut2GVsAFv0upm1xTma9lYWGm5aFXcs9NlG0dzZ/OTrUUAV+WrUat4WAkt1v0Pg0texrpLEYbDQvfdAOROWhr+PnX+aZGixYiXIBEA) format('woff2');}
-@font-face{font-family:cmr10;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAALAAA0AAAAABdAAAAJrAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoJQgkMLCgABNgIkAxAEIAWCGgcqG9AEUZQMxhCAj4Tq9k5MHGdRMSybiJge/B4P36/xO/e+t/tVkkn8PxSTjHjCG9MZQsMT05lunSFbpGoUSzRm9nj/9AJg/KFeKipSiRWTMELcMizF2q1r1w7cNDwfEwjA0+vnalFxJGGgpefau8PxBjyh6WjEY97eosyKKefWbK8k0k0I+HD7eQ2+NEy/r8O4shePNeTdfIX74aXiK1skqekDEABw4mZuD4BVqvzTtS7lHwlAAAoKZuDAJoLADKIFoKoCq12Xvrb7DAdESwAikQDg50fpHrqYt4HoOgkq6EU/LgN3AKhYhwe9ta7FWPQOxkCTZRHrqII+tIqbWaHPCj+QrHv0fsD0J2PuW86hZpeL3EsycLla4uuZ3T08/Zr5Pjvaw8SfMP1Bd1CofubLyDNkG7SNXyzaEDUfR8fI1Ccq7SW3bdhbUZKuTK7vrWuojyTHF/XXpGYX6korEbxvzVMUP/r0/++njkrctrNy21h59iUiTZfmLClLc+geF5Zipi9ri/vjzC5yCoCXYWPzsqf6jV62zUeWKskCXOCGVZDb+J+ReGccgvr672g7Z/MfdaB82w5LZd2bQs0/QK8EQf4pf0ZT2QOUXgEAqGWPDFD2QNmTAIfqAipIhMAuMwC9bsKB1GMUDhSLWuBAY8ATAVqNZ4qofdIwPFPskzKNaZPnWv2eOsXBZYBfp17wXVkQ4FhIUP/8nl4uDhjEzAqTBNMtoJdN5kfimSSONGJVEXhtCXT0uhwYMluxJKw70GsDF8WbEk1HchvAOQ69+ng8ahibFwkuRlGb2Qre0sO1W702K0BudIJTEZp8LwA=) format('woff2');}
-@font-face{font-family:nf7;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
-@font-face{font-family:nf5;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAWcAA0AAAAACggAAAVHAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgwIIBBEICooQiCwLHAABNgIkAzQEIAWCDgc8GyMIUZQPUgHkZ0FOxptKXCIiDuUSxUz/ePgoW1Eiji9rUSsPi8tzPDzsj/fc+/DhgUxyk6IYhSYlMC2t/bzQ4Kq4tCZN5RztgifgqcCQEtRaTMRfdibS/wCzQa3vxu9UyV5HAYXeO9BEd3QGrFQP7AP+6e/dby7rAUXPuggmQUBjLRuT+tY2i2CMwZOiwLrAxgLDPLaGscvaXAsBbzc/dMNH7+I7NzjieVxXkRfyMS6BIfHR9GAiVQWBFwiv3mURrs6WUxD/dfjmpmdtWQpnGVSPctIUDLDY8tle+DArrRYiTIR4SVKly/kv9ZmJ9+3GjBrRp1e3Lm2FwBc1QZZIJOkGIQXtV1W4f0CDxiaatUArUG945gDivxLS2uoPAAwB4hHxhQPK6BRMqkKlTLV8qizLQcEfKsET44I2PFCcwQCGXp0tElqB7n0b6oTyzxfkCNQzYKtpJGMKtRRENAvR7PVS3L08/YTkyi60+XlmBQ+DSBTXQnBwUf4x9QSKZ+rmIJHvro0AALPWJp5Rv4oOHKCemluCo54QPUKu7e1dTVFAGBG1Y8N1yS+B16O9zjxCtX0JvyB66hx1d7TUB3+tOrBlYt985FF0d7Wh7n/WEcMTGXvd26qo+/A8IIRCTcL9jokwjxMDb105rQ+OCh8iut7vxhDYCnNRdiUIvqIGYQsbhyu9wlGKT/JcLFE5s8kCeHiIyL0n2vmk1knSOKgZ5pqD82emY0RwbUjknObQpVZ2Nvpqf9Bp3REboDB33xLhErRGdt2EkE93f3d3ezga9pSaJJPdNQc5WzsN6gG1l98ret3heD8zB+LS+1I5dLKzPCHMBccYyTRBWjIDw1OSklPgj/bTjE/lmr+grDDT/xNSruMTfpcIVDYR+p5piDe9tcnaJvbmS+Jihia4rYGbhRopQzJSQI7x77uXrLGJoWwdPL/FRCOIrqNipvapxCKBRHVTREYZprbGclJOkqIpB+0+ox+EgY7DnEi9tP9PlmoKWp7h0XrCHrujJDFT4b/U5AQiJTNIat4mhl65lYe5pZ5S2wJR2SzgxgEM5ZjVz0FNBhtiHbrBQJDEH87jujnZ0yO9PDCkqMxDzkzMgDAo+04atztC20f3FzT3ZgM/cEY9EV+LDJ5ZKsVFXGbgK07OK6Bp8NASA57tFRG/cjmMiGb/0w5GnWspn5c4qY63uLq1dFi2a+vkybBP/rpuB/DkObigytunoPqwsNir8KmSQDuOkAfSpq1SxoeX3/jWRn8bDoJPU0NEPcQTYdKZXmaueISG4Ji6+xoDjgYJWojqCSGsjKfzoCCwOKFD1tLwp5knUhvwhm0ycJyf9CPmQZbJyqslK9HtdcCPLfiJsjPEX8txBu78O5EXrB+ghbc4BEN8Yl9Xe0L5xxnJslJMcMwSOk/1ejOWtRF8/G60UIymKOOglDQ/I2xmCgC6w9S5q+ylz/QVtupdBYc55Q2oBZVV3thfxx9Ng7cMEYwb7UML4tX/yoEWn44ag3r8V8+w3ESjpBt5HXn9y/DNXsjtoLCZtthPDCBWAHnHhPjKiFgzMtYMCT5iSSBMakgUEPFcgWQ9GIg2C7CARAgspAyARrvA5tEGnapgYShvWGlxfXit8FAhyiapHQAL81FhpY/s5Wq1e9aKECVDvBCpwJ//CgFYLkmi9FL1VFEiEOiUqQKDLoSJImmg6bQo0UkBnWqQDry0jFRPjYog6MqqhC6RGKnB03QtJR2l89p6AGwUIVWamCGFCGp9t4C7C3q17ixgKAbQdQUApGBt+xR4lpnMWbLmxIUrD178AQA=) format('woff2');}
+<![CDATA[@font-face{font-family:cmr10;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAK8AA0AAAAABdQAAAJoAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoJQgkMLCgABNgIkAxAEIAWCHQcqG9MEUZTtxTzEzwSbTlzhYTS2RQwWm10xCOtxWA7+om8iqPb77Jndd8DqFLC9E4ZAA4BL+VSEC9uUT/nvY1wsyrCLQojv17YPb1TiafyabuiUImIn04lVMwPr8gFUuApIn6BEViSOkYjKF8qjri1udYX8P/8308a0gBeA//QDhWmW9xIPAy0d09bGuIA36OnREd/eTK0xTUbb0q4k0iIEvP19OIaP5/Ggl0tZjpca8nG+wdN0qPjERZKaTgABAJv3gzWYlubP/22O86cMAlBQMETAnLrAkIYxqKrA9P/4s/8/ECDaCEAkEgDC/Cmy6Xg+hPhfggo60IVLeARQMaMGEigYTAAmVz0OjIXjYQmKwbSOwJMNZkrbApN4T9iCxjvs7ACeSEgN0gsrE7KOZ5Yz06u7p/3k8Hx/Da53oPEWkyVLcrJfYw/2Kfr0hwWkAP0A9BCoDxT6y55ul0I+I0+brCZSyYpW6anH9Fa32B+WgP7nc+S8r376//tOoGAXUrw9jXdIVzC02JDzBQxZ8fvC4zB+i3vrilVb+QK0wuzcq7364VttzTuNLQkyVrAG+JW2+NPw+GRBsPIb9XvRnfuFwpbPu6Ft+F9B5U/okCDIn/zesCyD0iFIplqWhaAs0yEygupQByRCYIkG6HBPQGo3QEAxYUpAo9srAdo0WoqonVIfVKlY05Mag57T2nR5bdvGTuVsIcdvZUbYcHNVDtfkdjYCnmYF+gIrFzln4h1PyYx61EOeWwLMyXebwGsb9IPVJXeFc15BdShnwb6NXOEQ0xxwNIurkd1pSzzv3DzInYXc6jStIibCDg==) format('woff2');}
+@font-face{font-family:nf1;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAWwAA0AAAAACsQAAAVZAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgwoIBBEICosEiFoLKgABNgIkA1AEIAWCEQdKG4YIIB6FcbMTh4gqivjOlG19OCIIxmqz+2LexLuYhfbJQjMBQqUUj1ACZL4k8v38u+mfm4RKAk1nXlOs4rjFWoeKKcxc2J6a/e0t/6UBhr+f6SJ5jRmiRTag91dZVNjAG+9KaE3/qJLPLAHhmA8A7zEdqMsir0XdCQH4E/58P+C9s9q4CI+SRtuhBOQH7BHgExyPd4rAAJKoCHrF8KH758ZGAFMGi2YXMlXmq55mcxRFR/dG5JMN5f2EVqBVLF49goKeiQUjoEmvfoMFIWGN5AadP4095UlPuOO8c0447lhhlIhSgKBJJICkJqgsIl9MVAqRlMqJVSCrxPBHUVNLxzbAbHPAroEcAxAFJaKbYQaBcRCfQTbCRjEwzjifjY2Y2YhVU95fTEhQfNBIHCPpsQBBtzsGSdCciEQESo55xPU0IhGF5gYlkhB8QycliBR4txI22bF3kVzzr+beJjfy76OQ8AG1Ke9OkfByfpjc+C4EufeoTQV33TQi/UiCxIjiKCQmJCMQoPBtorSIxMQ4eRWM6gm9b+LDb6PQB9QmTng4/L6mddoLr91J5u68B8F36zDPvkeufIAkeCjzsBxv5i2AvyVE6RWAOg3uP590nrjhdRR644MXKGg4FbO9r5P5UpHw8Ms65qxERGIGTJLBuU+yVrXQcK8j2yDT6ajwEh95Kmx/j6NEJEHReIjcyPqQQyRGCV5w58KRA7C6TIKHmEINIfWlDxAf9NDzHhB1IgjC+taAYLMbdeiZPNkS7+r6Z0JoUN4jNyJEIRKRQKIySG0S4g9GHfw+7vny56V3VMHmeTrNKpW7+UFQxUHlqMi6xr5JEzCyBnZ0zMAY2UDeRPsXtKA/e65g41Nv7d7lb/O3btRctDwDZduNi9D/jJb5IeUfxJvevPU5xF2Ynr7lLyrQFvyX8CtiYOSnP7s82x/2W8otfoBfrpaeB40LDjycnu0xagMODc1DzwadeR4acRc32r+z/cDMrSrSZOZ67ZqRRi/NdxumGldO83A23hYI2BhnpshkzGHTxYrhVdh+XWlWsa+kVStP8fg2xcRWRP8tTfMtW7iDo3A618UkkcmqFNTOGove1GyT3moTG198O7d5ctvj0xv85W4ZPBH2pGjzeXvLuqeb1lk5vSqX8W2ed6WhuMDLMEKlt6iEeQ4uftw2pbDVCqMbAg3BDbWCQy4yWHMZFVeHDKqH7z9l0EtTzUqxDk6GPWEPfJ5+dEu1yrvU21RdZDc7n2b+LVYIuUu3JR5HkoR1DzzFPpLxl4CvP2lYtaWuZvXmxvo1q6trV68J+KJ9TGVJma/K6+OYohKW9cJvn9dWbDD5bcVyzzTz5z23s2dNow/MZ/5R54fD+iJPrQncN5ZepK2psj3tec/RVG0COOmIOabMFX7frto+Y5spV3GwgXdZkwDwBYFs+mYkAb8pb0SIPl0j4higoHCUCNDDEeh+g0ZfGQEBfk9tK6ijS/9HUfgPBxu4OQVVfp6vAuUwIAQ2AQJDZZF8sfy3U35Ic3RAPCB2ADKhMnfAYrZBXTpnyA/Wl5DG7/LjJUk5B6DF/kT/8RXJeTeBEMFg+WKEiTp86wDMgYBmGQiABAIC5kl38aRmqJEixa5yi8Sp5Jag7Lq8FO4cFEHF0YCJAcDFaSzkisw3cbMIEY7BoSYthnQK6Ac/ExwGWNWj2+Di5n4tmsRRkpKDpRi53ZopAEaUsnOkHKlEKq3wJjTIN/e3NMUppfK44rjuZgV2KZTZCnn22fIugFNN+g1oswZp0llwwD2LgkIqB0sWkF8BII2dzUDAFh+bIk26TPkMTMws3Dy8fBgcAQAAAA==) format('woff2');}
+@font-face{font-family:nf6;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAKUAA0AAAAABcAAAAI+AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoIsggALDAABNgIkAxIEIAWCEQdDG58EIC4KY2NlvHeub+wv1e4QNImH5+2qP/dVVS+gmokW6l4jFp3aISN8KBfTVfaJSAkWNtr/A/CDYRtMb92gNEFxmf+b8S+agnGuc+LYVhot4gx64ZqgncCJnKHe7kRJMo6Zbe2BlDxCwNdvvLgGLzctmtLGI9sY5xSkE+k9nHL/jhOvVCORFI0AaAmAaWumrOJXr43/z4Ks3uBjBCBDhq4CjJYJdJUrkcsFvwa/osUCiAoBiIQEAAjt3bq0H/E/CRSgMSqYilmAHP0lkKQ87x4xa1I0y+fkTzReefWOc1qcfNQ4/nCaz71617FXTtyqS8dYffnkj9t46Tazm5+4H8cebItZl24xhpOvvXrcNZJbR9fdaHTjm/L9ee//d/G88vz7l9W2D9uORXKVYobKj573/PTAweeeY/vTILDzGzmkzTvEO21oLiuiEqY11j0Cj8OA0U8a5H6qPa4UzygkSzQHyqCC5juV+KfA8cuBoN/Qr04tbTH6r4ZNsm+n8lr/f5JtzOrRUAJBVg+2BSGFDjUAJa9GXeLQVyBQ6CGBhBAYrz+goTUCJA20FCBTWiBAoYmLAlRk7slE3kjSHJLMjNeRLLR38FpFxV0zrLbWbpsst4PPxppMtdUWu7rXd1hrtVJNfwOVRiptscZQn1fV9AMwENRATfVSkkbdO9auLmv9B5Yjyy1rhvpCtdavOrDfadrHHKvtsNN6a36pasFwp5GrmgZLCv02pNU5XCCkSJE1Xr5jx9a9p5PehOK2KQAA) format('woff2');}
+@font-face{font-family:nf4;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAARMAA0AAAAACDwAAAP4AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgloIBBEICocIhX8LFgABNgIkAxwEIAWCEQc2G7MGUZQuSh7gR4Jty2GF0wlnMniI0GndeYrQfB8PD/vjPfc+6MPpD2qqdIMilDqgtqy2EleltLim49/L5rUOFsyChaAznK8D3f9c+qmHrqkftEig9hae6d2t7hdRVKEDmsBEhtHUIfY+kQHgHsN5XDW0vuohBLzd8+EefKwsaN2OcjSuqcjz+QYXT1viI7vQIFUds1qAnew/F1QI4LTG/IUrPReoEYACBeYhcJimwDwta4FeK6XTKtVo/A+0uFr9AP+fmWeu2VHrURPQRyLtTB4EhXipSv+iaTuwbEm2AfGfBLonZ4ynQKwEcYwspatpBOXkKvFVZbkiDqSQDdJHGLJAAV0R1ya1klcNrKAPG5/F2zbjDupbeZLGJ2B57d+IJPjW+gH03sYn6KNLUUHfnDkYptm3AMPGoRfHNVA/OSEELTJgYpW65ygQuLnGNJHZDMAuPO67M+66PJGS3HsrbpGeuA0lk2/DniaciGKEZ8/uIOElXQXmr89cvqAvOdkUX6X9qtkqhYm1c1EenqEOYOO39m2aB72b95/f7bR69f710HsJG0+eM2eOr5oFc2xCcflYoA9uXVgivEZCzIr1HlqFl/csWIBQjlEhEAZtbJlGuWUZjVQL9BY8U55JPWN9vVJqwKCjDob4ZmYGCq7pBhrYeOqDBXceP2y2V5aFQzAVapjR3Z9lGyYz/6APN2SMd8eJ/r/UA9ESM4XctP9lH3pWmKkc/ssUZpYvpvVHBzKJri/MMFnCyskS8FIV2M/ZHhgdZG18zuaxSe03m2/WdKP9QGv/ukMuK7u1B22+G6gTFJNfC7KggNjU6nMC4Fmzfj5vkqwgOFZNPRBVm8ozkIpziiPYpG0mV5jVdEVl1yahNg57hAsXOsuWUQF4LmEuvO6XnYJZ/GKwSBkZZCanEnf52Iawy+rKSfGo7o1hp5XPHrRz5d99C6SpPpc4mkTek6LdTtFWQeyJwaksONZFSEkW848VLtX4wZLIL6mTa1Vw36p4E/9fpVkgPqWEz6V+CYjxbc8K8lYDgBdhzcYdTemX/Yu6ekdyigQiqqAqoBCr489Exy8jBK+/NTvO9PzdDsXPu7hjif9P+QCtBEE+mIeRniTkXYeizFFLII6O37aPO8I6SqFEEHo7aYFECGxlDUDrHARSYwIChcXSIVAZ3BSgVniuEGUnjUGrC1tR6sqcjttqtacOKlKiSaU89eDv6DoBdqtRrTGtrleiiJI9a7aU3EFdrZhjyY49q5m0Je1Jewd8lxa08+tLipT21rZKd2V1sSO02dlb2dlaPd9aBnBUkXoNysIhVyiEG171YjtTN4RiwEEvAHk/TfZMaC7eLUaceEmSpQA=) format('woff2');}
+@font-face{font-family:nf0;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAIsAA0AAAAABRQAAAHVAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgkIIBBEICoEcgSALCgABNgIkAxAEIAWCEQcqGyQEIC4KbGPq0MWgYVHGlitiaNAf7sVFBPVjr3v3XoBIoyfUUbF1X/i6RBbYsayurpGMqlNVF/Dj5/ZuHuLiMLsviNaFQvwNt0RqKwW8SWKN+yUWl3GDrGD+W3f8RxEcwK8FFEiQhrXIMjoHScskoUATyTzi3mk9PSVpybSxmTGbQsCL/+eAL9tibVNZidtc8ko+B9dgqfhCRZKa2gAEABw24ilgXqX0X8hkYgkCUFAwicAaW2CSYxZUVWD+YjrwxVsERDMBiEQCQ3kOCrvKXF4GcbEEFbSiYgrMAahYYoGsdTA6mrrqUYfb/u+kvbOcXGV1Xj3u6Mrja1G6VueS4P5vMv+dyReynC34znwLwLOwvPb2q79ar+ljpO3kDBZ0Oe+a45QV7UwIRnZ/Pi71DP63dpQ/S603dVGe533QKkGQ9+UzTOkBeY4AALWsSAFlBcqKPkI1xAKJENjCAFo1EEgtehEoZhkEmnS4h0Cz4ilb1Dapm5CKLSE1GXYfa9bsiaGZhZutkTN8BZYDBw72rs3Zs4WZiMakSE9kb45B0WoCEjRoi3eMTOJ5MYs0y6gX7RsYKV1TsnbWicCRmbOLlWplRGESbhxesUQlg/61QO6dFCpi9gAAAA==) format('woff2');}
+@font-face{font-family:nf7;src:url(data:application/x-font-woff2;base64,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) format('woff2');}
+@font-face{font-family:nf5;src:url(data:application/x-font-woff2;base64,d09GMgABAAAAAAWcAA0AAAAACgwAAAVHAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cBlYAgwIIBBEICooQiCwLHAABNgIkAzQEIAWCEQc8GyYIo6J+MEoEkL844MnwRoZAGC1TNZuqRuJvtUTemPE7+g1VBBABrMahInHnNl7ABTDuEf+xH78998k3Q1SqJpp4NgtVK0OkebRGJlRIVLNEg2b+wzrfqU4J+rd+3JzZRNTCGjaKa7XgHfhOw3AboirvJn7v7f625NYooNB7A030Tv8HK9WBBVj+zwJMf+/+bmwroOhZF8EkCGisZWPZoLZZBGMM/hwF1gU0JhjmsbUMr12MOrgXAm9+7/vgw6IRXyYzeZ02HXW7XuIOmpIPtLCUrgELg9jhC/HBcLJrI/4/olbbvNJlbxb7IjnaNWsaAe9UeBYTXLp1WFff0MLazsH1v8izV/dtkyaMGzSgT6/OAoukJ5RJoSg2JDQMX1Wh/4ABg0MMG4FRqN3yugLyXwWMsQkLwBLIc/ILrmyxBYso2qrV0C5Vbbso5igxZF3cxCGGA5LIPMTFIlAXYttoczgi//Ma2g3TPGgxh9xmMclAxAWILt9rZX1rc1eQ1+zFuq7OrxOREFlZA0SOrCiec14Bt+YbF2Gi97SOMLCkyLiK6brY8F5Ms4urcMYVxHMwN3fvPj5LA/1yxC58TJZ6LXx9/25jfkaDLbFriFeM553evzoIP61ufK1ybTvXJjDUq0Nnf9F+0gdNXt+9XdD27NVhBgY5A7fLAmGbqsz8sqq6PXKCuQ/xxJ4+HEEt7KIxJY68jgmYM9IPV7oOZyhfoc9KudphmS+Du3wfopclhnjSjRnKFIj5xrsI42elA4iwdjh8LStYifWdW2113TDadtpWELhXQDmzHJMobpxm+PcN9fV14YPhV5wzVKp6F2EuNMyBOIvJN/A6dg5wPc+cFT/md0yOmOmpSo50J3AyTVRYNI3EifTUtHT40T7N+9dsBgnLM1n+mzNUGwWYd8VDVM0Z71nc4KafHlXP3MlqVVLCxJxwMPa01qBkS8cIKZB/74ryZuYm8o2wLsxcO1RTX81S46nUijiKXaeJTJAWDmYKMq7SYul7u/wnHkSC7hM34rBifLLRUNL1iYozZHrvmqBIWDB/aSgIxUhnUzT8zE18C2r2FVT4yOwQis1jAz0LHOPSpztryOGj7GLexsIUwSg+D780H++sqpDw0kpvBUsJY3HjyneyhON+jE+GIWzlxwF+EGSTeFIDIsgKGR7xJpJYd3VbB9yEWLkx3w7n6K88zpJxnD8dYWytpnJ+8SItot3Ds91g3S4HVx/SKe217ABw6mqnuNbPv7huX0mZL+dT5SGOXOEjshYdMmb7jr2pNcS9HYCwEnq4mLdkCkyttjJ33TsinMC1lq8x7GKcrIvUCxl4JZ9AljCwLtSn6moHiVql0JuJ5h1U4GKS+hH3psrlFjZQVTSd9MHHduKgqhskLipwh0T/TuEHXkxdot05DBJKg71dyVWPs9PkZVigrKUmX52XJdumpICgp2gELqos56ySujTPtLQYAuBFbN31Gmj91Nf77q2A15RKgd7QO5VyqM+fkZFbZhCufHFW2kaj34O9+XHUmGT5768+uw2DCjMqGZX8edRqAOosGJicsVyFCOQAUPdsyJ83byvztiQmYhGasu484Vz5lhLWwmDMXjwoBBL7yHB40AXQqScGTBKBxjI10Blxd3qv8UQj7ZAyDgKNfaygM8d9u17vsaOGxo4Wunbw579KYL+1lQNPtW47NkR0MhWJIisjAVFWo5NYmkrTaboFry2rmua78ZB0WaUorUYBKNB0SVOlU9t2wElDO3tTx6JEc8COGwxJTVbhkBnGGwAKdox9DbzKTjEJKWlZOUVlDQA=) format('woff2');}
text.f0 {font-family:nf0;font-size:7.970112px}
text.f1 {font-family:nf1;font-size:8.966376px}
text.f2 {font-family:cmr10;font-size:10.909088px}
@@ -24,17 +24,11 @@ text.f9 {font-family:nf7;font-size:10.909088px}
]]>
</style>
<g id='page4'>
-<style>svg{cursor: none}</style>
-<defs>
-<script type='text/javascript'>
-<![CDATA[var cursorTimer;var downOnLink=false;var downOnRoot=false;function islink(tg){return (tg.tagName=='a') ? true : tg.parentNode ? islink(tg.parentNode) : false;};document.addEventListener('mousemove', function(e){if(islink(e.target)||e.target.getAttribute('class')=='annot'||e.target.tagName=='video'){e.target.style.cursor='pointer';}else{e.target.style.cursor='default';}try{clearTimeout(cursorTimer);}catch(err){};cursorTimer=setTimeout(function(){e.target.style.cursor='none';},3000);});window.addEventListener('contextmenu', function(e){if(!(islink(e.target)||e.target.tagName=='video'||e.target.tagName=='audio')) e.preventDefault();});document.addEventListener('mousedown', function(e){if(islink(e.target)) downOnLink=true;else downOnRoot=true;});document.addEventListener('mouseup', function(e){if(downOnLink||!downOnRoot){downOnLink=false;return;}downOnRoot=false;if(e.shiftKey||e.button>1) document.location.replace('beamer-example-3.svg');});document.addEventListener('wheel', function(e){if(e.deltaY<0){document.location.replace('beamer-example-3.svg');}});document.addEventListener('keydown',function(e){if(e.key=='PageUp'||e.key=='ArrowUp'||e.key=='ArrowLeft')document.location.replace('beamer-example-3.svg');if(e.key=='Home') document.location.replace('beamer-example-1.svg');if(e.key=='End') document.location.replace('beamer-example-4.svg');});]]>
-</script>
-</defs>
<rect x='-71.999989' y='-71.999989' height='255.118106' width='453.543292' fill='#fff'/>
<text class='f7' x='-63.505917' y='-57.097165'><tspan fill='#3333b3'>Pla</tspan><tspan fill='#3333b3' x='-43.406891'>y</tspan><tspan fill='#3333b3' x='-36.377249'>er</tspan><tspan fill='#3333b3' x='-19.993895'>con</tspan><tspan fill='#3333b3' x='.693325'>trol</tspan></text>
<text class='f9' x='-63.505917' y='-39.967477'>The<tspan x='-41.087744'>standard</tspan><tspan x='4.468606'>pla</tspan><tspan x='18.715879'>y</tspan><tspan x='24.170428'>er</tspan><tspan x='36.92315'>con</tspan><tspan x='52.981332'>trols</tspan><tspan x='77.919505'>(option</tspan><tspan x='116.11222'>‘</tspan></text>
<text class='f6' x='119.144947' y='-39.967477'>controls</text>
-<text class='f9' x='164.963119' y='-39.967477'>’)<tspan x='175.872205'>o</tspan><tspan x='181.632198'>ccup</tspan><tspan x='203.144924'>y</tspan><tspan x='212.537647'>some</tspan><tspan x='239.854001'>space</tspan><tspan x='268.992173'>of</tspan><tspan x='281.417622'>the</tspan><tspan x='300.203069'>media</tspan><tspan x='332.319422'>displa</tspan><tspan x='359.963056'>y</tspan><tspan x='-63.505917' y='-26.418281'>and</tspan><tspan x='-42.287743'>should</tspan><tspan x='-7.673209'>not</tspan><tspan x='11.723147'>b</tspan><tspan x='18.094049'>e</tspan><tspan x='26.570409'>enabled</tspan><tspan x='66.574032'>for</tspan><tspan x='83.275844'>that</tspan><tspan x='106.915835'>reason.</tspan><tspan x='145.184918'>Nev</tspan><tspan x='163.664918'>ertheless,</tspan><tspan x='211.075812'>in</tspan><tspan x='219.868541'>teractivit</tspan><tspan x='263.537625'>y</tspan><tspan x='272.930348'>is</tspan><tspan x='283.893979'>still</tspan><tspan x='305.166699'>pro</tspan><tspan x='320.657609'>vided</tspan><tspan x='-63.505917' y='-12.869084'>through</tspan><tspan x='-22.247749'>touc</tspan><tspan x='-1.945931'>h</tspan><tspan x='7.752246'>or</tspan><tspan x='21.115877'>left</tspan><tspan x='40.206779'>mouse</tspan><tspan x='73.588585'>button</tspan><tspan x='109.359483'>clic</tspan><tspan x='124.806756'>k,</tspan><tspan x='137.232205'>and</tspan><tspan x='158.450379'>through</tspan><tspan x='199.708548'>the</tspan><tspan x='218.493995'>k</tspan><tspan x='223.948544'>eyb</tspan><tspan x='240.92308'>oard</tspan><tspan x='265.806707'>as</tspan><tspan x='279.192156'>summarized</tspan><tspan x='339.87941'>in</tspan><tspan x='352.610314'>the</tspan><tspan x='-63.505917' y='.680113'>table.</tspan><tspan x='-63.505917' y='16.580219'>Clic</tspan><tspan x='-45.025917'>k</tspan><tspan x='-35.633195'>on</tspan><tspan x='-20.480473'>the</tspan><tspan x='-1.695026'>media</tspan><tspan x='30.421327'>to</tspan><tspan x='43.75223'>start</tspan><tspan x='69.901312'>pla</tspan><tspan x='84.148586'>ybac</tspan><tspan x='105.966766'>k.</tspan><tspan x='119.603129'>T</tspan><tspan x='126.574042'>o</tspan><tspan x='135.66131'>pause</tspan><tspan x='166.0213'>pla</tspan><tspan x='180.268573'>ybac</tspan><tspan x='202.086754'>k,</tspan><tspan x='214.512203'>press</tspan><tspan x='241.926739'>the</tspan><tspan x='260.712187'>left</tspan><tspan x='279.803088'>mouse</tspan><tspan x='313.184895'>button</tspan><tspan x='348.955793'>on</tspan><tspan x='-63.505917' y='30.129416'>the</tspan><tspan x='-44.72047'>media.</tspan><tspan x='-8.360477'>Release</tspan><tspan x='30.617692'>it</tspan><tspan x='41.526778'>to</tspan><tspan x='54.857681'>resume</tspan><tspan x='91.904941'>pla</tspan><tspan x='106.152215'>ybac</tspan><tspan x='127.970396'>k.</tspan><tspan x='141.606758'>T</tspan><tspan x='148.577671'>o</tspan><tspan x='157.66494'>pause</tspan><tspan x='188.024929'>pla</tspan><tspan x='202.272203'>ybac</tspan><tspan x='224.090384'>k</tspan><tspan x='233.483106'>p</tspan><tspan x='239.854009'>ermanen</tspan><tspan x='280.184912'>tly</tspan><tspan x='292.315823'>,</tspan><tspan x='298.981274'>press</tspan><tspan x='326.39581'>the</tspan><tspan x='345.181257'>left</tspan><tspan x='-63.505917' y='43.678612'>mouse</tspan><tspan x='-30.12411'>button</tspan><tspan x='5.646787'>on</tspan><tspan x='20.799508'>the</tspan><tspan x='39.584955'>media</tspan><tspan x='71.701308'>and</tspan><tspan x='92.919482'>mo</tspan><tspan x='107.155847'>v</tspan><tspan x='112.610396'>e</tspan><tspan x='121.086755'>the</tspan><tspan x='139.872203'>mouse</tspan><tspan x='173.25401'>out</tspan><tspan x='192.650366'>while</tspan><tspan x='221.133992'>k</tspan><tspan x='226.588541'>eeping</tspan><tspan x='260.526712'>the</tspan><tspan x='279.312159'>button</tspan><tspan x='315.083056'>pressed.</tspan><tspan x='357.65032'>On</tspan><tspan x='-63.505917' y='57.227809'>mobile</tspan><tspan x='-28.356838'>devices,</tspan><tspan x='11.995876'>tap</tspan><tspan x='31.392232'>on</tspan><tspan x='46.544954'>the</tspan><tspan x='65.330401'>media</tspan><tspan x='97.446754'>to</tspan><tspan x='110.777657'>toggle</tspan><tspan x='142.89401'>b</tspan><tspan x='149.264912'>et</tspan><tspan x='158.046733'>w</tspan><tspan x='165.617645'>een</tspan><tspan x='185.003092'>Pla</tspan><tspan x='200.614002'>y</tspan><tspan x='210.006725'>and</tspan><tspan x='231.224899'>P</tspan><tspan x='238.348538'>ause.</tspan></text>
+<text class='f9' x='164.963119' y='-39.967477'>’)<tspan x='175.872205'>o</tspan><tspan x='181.632198'>ccup</tspan><tspan x='203.144924'>y</tspan><tspan x='212.537647'>some</tspan><tspan x='239.854001'>space</tspan><tspan x='268.992173'>of</tspan><tspan x='281.417622'>the</tspan><tspan x='300.203069'>media</tspan><tspan x='332.319422'>displa</tspan><tspan x='359.963056'>y</tspan><tspan x='-63.505917' y='-26.418281'>and</tspan><tspan x='-42.287743'>it</tspan><tspan x='-31.378657'>migh</tspan><tspan x='-8.044113'>t</tspan><tspan x='-.167754'>not</tspan><tspan x='19.228603'>b</tspan><tspan x='25.599505'>e</tspan><tspan x='34.075864'>advisable</tspan><tspan x='81.715849'>to</tspan><tspan x='95.046752'>enable</tspan><tspan x='128.984923'>them</tspan><tspan x='156.85764'>for</tspan><tspan x='173.559452'>that</tspan><tspan x='197.199444'>reason.</tspan><tspan x='235.468526'>Nev</tspan><tspan x='253.948526'>ertheless,</tspan><tspan x='301.35942'>in</tspan><tspan x='310.15215'>teractivit</tspan><tspan x='353.821234'>y</tspan><tspan x='363.213956'>is</tspan><tspan x='-63.505917' y='-12.869084'>still</tspan><tspan x='-42.233198'>pro</tspan><tspan x='-26.742288'>vided</tspan><tspan x='2.657702'>through</tspan><tspan x='43.91587'>touc</tspan><tspan x='64.217688'>h</tspan><tspan x='73.915865'>or</tspan><tspan x='87.279496'>left</tspan><tspan x='106.370398'>mouse</tspan><tspan x='139.752205'>button</tspan><tspan x='175.523102'>clic</tspan><tspan x='190.970375'>k,</tspan><tspan x='203.395824'>and</tspan><tspan x='224.613998'>through</tspan><tspan x='265.872167'>the</tspan><tspan x='284.657614'>k</tspan><tspan x='290.112163'>eyb</tspan><tspan x='307.086699'>oard</tspan><tspan x='331.970326'>as</tspan><tspan x='-63.505917' y='.680113'>summarized</tspan><tspan x='-2.818663'>in</tspan><tspan x='9.91224'>the</tspan><tspan x='28.697688'>table.</tspan><tspan x='-63.505917' y='16.580219'>Clic</tspan><tspan x='-45.025917'>k</tspan><tspan x='-35.633195'>on</tspan><tspan x='-20.480473'>the</tspan><tspan x='-1.695026'>media</tspan><tspan x='30.421327'>to</tspan><tspan x='43.75223'>start</tspan><tspan x='69.901312'>pla</tspan><tspan x='84.148586'>ybac</tspan><tspan x='105.966766'>k.</tspan><tspan x='119.603129'>T</tspan><tspan x='126.574042'>o</tspan><tspan x='135.66131'>pause</tspan><tspan x='166.0213'>pla</tspan><tspan x='180.268573'>ybac</tspan><tspan x='202.086754'>k,</tspan><tspan x='214.512203'>press</tspan><tspan x='241.926739'>the</tspan><tspan x='260.712187'>left</tspan><tspan x='279.803088'>mouse</tspan><tspan x='313.184895'>button</tspan><tspan x='348.955793'>on</tspan><tspan x='-63.505917' y='30.129416'>the</tspan><tspan x='-44.72047'>media.</tspan><tspan x='-8.360477'>Release</tspan><tspan x='30.617692'>it</tspan><tspan x='41.526778'>to</tspan><tspan x='54.857681'>resume</tspan><tspan x='91.904941'>pla</tspan><tspan x='106.152215'>ybac</tspan><tspan x='127.970396'>k.</tspan><tspan x='141.606758'>T</tspan><tspan x='148.577671'>o</tspan><tspan x='157.66494'>pause</tspan><tspan x='188.024929'>pla</tspan><tspan x='202.272203'>ybac</tspan><tspan x='224.090384'>k</tspan><tspan x='233.483106'>p</tspan><tspan x='239.854009'>ermanen</tspan><tspan x='280.184912'>tly</tspan><tspan x='292.315823'>,</tspan><tspan x='298.981274'>press</tspan><tspan x='326.39581'>the</tspan><tspan x='345.181257'>left</tspan><tspan x='-63.505917' y='43.678612'>mouse</tspan><tspan x='-30.12411'>button</tspan><tspan x='5.646787'>on</tspan><tspan x='20.799508'>the</tspan><tspan x='39.584955'>media</tspan><tspan x='71.701308'>and</tspan><tspan x='92.919482'>mo</tspan><tspan x='107.155847'>v</tspan><tspan x='112.610396'>e</tspan><tspan x='121.086755'>the</tspan><tspan x='139.872203'>mouse</tspan><tspan x='173.25401'>out</tspan><tspan x='192.650366'>while</tspan><tspan x='221.133992'>k</tspan><tspan x='226.588541'>eeping</tspan><tspan x='260.526712'>the</tspan><tspan x='279.312159'>button</tspan><tspan x='315.083056'>pressed.</tspan><tspan x='357.65032'>On</tspan><tspan x='-63.505917' y='57.227809'>mobile</tspan><tspan x='-28.356838'>devices,</tspan><tspan x='11.995876'>tap</tspan><tspan x='31.392232'>on</tspan><tspan x='46.544954'>the</tspan><tspan x='65.330401'>media</tspan><tspan x='97.446754'>to</tspan><tspan x='110.777657'>toggle</tspan><tspan x='142.89401'>b</tspan><tspan x='149.264912'>et</tspan><tspan x='158.046733'>w</tspan><tspan x='165.617645'>een</tspan><tspan x='185.003092'>Pla</tspan><tspan x='200.614002'>y</tspan><tspan x='210.006725'>and</tspan><tspan x='231.224899'>P</tspan><tspan x='238.348538'>ause.</tspan></text>
<g visibility='hidden'>
</g>
<g visibility='hidden'>
@@ -675,5 +669,11 @@ text.f9 {font-family:nf7;font-size:10.909088px}
<text class='f8' x='357.750568' y='-60.856353'><tspan fill='#adade0'></tspan></text>
</a>
<text class='f8' x='369.64693' y='-60.856353'><tspan fill='#bfbfbf'></tspan></text>
+<style>svg{cursor: none}</style>
+<defs>
+<script type='text/javascript'>
+<![CDATA[var cursorTimer;var downOnLink=false;var downOnRoot=false;function islink(tg){return (tg.tagName=='a') ? true : tg.parentNode ? islink(tg.parentNode) : false;};function ismmedia(tg){return (tg.tagName=='video'||tg.tagName=='audio') ? true : tg.parentNode ? ismmedia(tg.parentNode) : false;};document.addEventListener('mousemove', function(e){if(islink(e.target)||ismmedia(e.target)||e.target.getAttribute('class')=='annot'){e.target.style.cursor='pointer';}else{e.target.style.cursor='default';}try{clearTimeout(cursorTimer);}catch(err){};cursorTimer=setTimeout(function(){e.target.style.cursor='none';},3000);});window.addEventListener('contextmenu', function(e){if(!islink(e.target)&&!ismmedia(e.target)) e.preventDefault();});document.addEventListener('mousedown', function(e){if(islink(e.target)||ismmedia(e.target)) downOnLink=true;else downOnRoot=true;});document.addEventListener('mouseup', function(e){if(downOnLink||!downOnRoot){downOnLink=false;return;}downOnRoot=false;if(e.shiftKey||e.button>1) document.location.replace('beamer-example-3.svg');});document.addEventListener('wheel', function(e){if(e.deltaY<0){document.location.replace('beamer-example-3.svg');}});document.addEventListener('keydown',function(e){if(e.key=='PageUp'||e.key=='ArrowUp'||e.key=='ArrowLeft')document.location.replace('beamer-example-3.svg');if(e.key=='Home') document.location.replace('beamer-example-1.svg');if(e.key=='End') document.location.replace('beamer-example-4.svg');});]]>
+</script>
+</defs>
</g>
</svg> \ No newline at end of file
diff --git a/macros/latex/contrib/media4svg/example/beamer-example.tex b/macros/latex/contrib/media4svg/example/beamer-example.tex
index 98bb70f320..b4cdee92a2 100644
--- a/macros/latex/contrib/media4svg/example/beamer-example.tex
+++ b/macros/latex/contrib/media4svg/example/beamer-example.tex
@@ -22,90 +22,89 @@
% slide navigation via keyboard and mouse click/mouse wheel, mouse cursor
% autohide on idle; navigation symbols <--, -->
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\usepackage[totpages]{zref}
\usepackage{fontawesome5}
\setbeamertemplate{navigation symbols}{}
-\AtBeginShipout{%
- \AtBeginShipoutAddToBox{%
- \special{dvisvgm:raw
- <style>svg{cursor: none}</style>%
- <defs>%
- <script type="text/javascript">%
- <![CDATA[%
- var cursorTimer;%
- var downOnLink=false;%
- var downOnRoot=false;%
- function islink(tg){return (tg.tagName=='a') ? true : tg.parentNode ? islink(tg.parentNode) : false;};%
- document.addEventListener('mousemove', function(e){%
- if(islink(e.target)||e.target.getAttribute('class')=='annot'||e.target.tagName=='video'){%
- e.target.style.cursor='pointer';}else{e.target.style.cursor='default';}%
- try{clearTimeout(cursorTimer);}catch(err){};%
- cursorTimer=setTimeout(function(){e.target.style.cursor='none';},3000);%
- });%
- window.addEventListener('contextmenu', function(e){% capture right click
- if(!(islink(e.target)||e.target.tagName=='video'||e.target.tagName=='audio')) e.preventDefault();%
- });%
- document.addEventListener('mousedown', function(e){%
- if(islink(e.target)) downOnLink=true;%
- else downOnRoot=true;%
- });%
- document.addEventListener('mouseup', function(e){%
- if(downOnLink||!downOnRoot){downOnLink=false;return;}%
- downOnRoot=false;%
- \ifnum\thepage<\ztotpages
- if(!e.shiftKey&&e.button==0) document.location.replace('\jobname-\zeroPad{\ztotpages}{\the\numexpr\thepage+1\relax}.svg');%
- \fi%
- \ifnum\thepage>1
- if(e.shiftKey||e.button>1) document.location.replace('\jobname-\zeroPad{\ztotpages}{\the\numexpr\thepage-1\relax}.svg');%
- \fi%
- });%
- document.addEventListener('wheel', function(e){%
- \ifnum\thepage<\ztotpages
- if(e.deltaY>0){%
- document.location.replace('\jobname-\zeroPad{\ztotpages}{\the\numexpr\thepage+1\relax}.svg');%
- }%
- \fi%
- \ifnum\thepage>1
- if(e.deltaY<0){%
- document.location.replace('\jobname-\zeroPad{\ztotpages}{\the\numexpr\thepage-1\relax}.svg');%
- }%
- \fi%
- });%
- document.addEventListener('keydown',function(e){%
- \ifnum\thepage<\ztotpages
- if(e.key=='PageDown'||e.key=='ArrowDown'||e.key=='ArrowRight')%
- document.location.replace('\jobname-\zeroPad{\ztotpages}{\the\numexpr\thepage+1\relax}.svg');%
- \fi%
- \ifnum\thepage>1
- if(e.key=='PageUp'||e.key=='ArrowUp'||e.key=='ArrowLeft')%
- document.location.replace('\jobname-\zeroPad{\ztotpages}{\the\numexpr\thepage-1\relax}.svg');%
- \fi%
- if(e.key=='Home')
- document.location.replace('\jobname-\zeroPad{\ztotpages}{1}.svg');%
- if(e.key=='End')
- document.location.replace('\jobname-\ztotpages.svg');%
- });%
- ]]>%
- </script>%
- </defs>%
- }%
- }%
- \AtBeginShipoutUpperLeftForeground{%
+\AddToHook{shipout/before}{\xdef\currentPageNumber{\inteval{\ReadonlyShipoutCounter+1}}}
+\AddToHook{shipout/foreground}{%
+ \put(0,0){%
\raisebox{-\dimexpr\height+0.5ex\relax}[0pt][0pt]{\makebox[\paperwidth][r]{%
\normalsize\color{structure!40!}%
- \ifnum\thepage>1%
- \href{\jobname-\zeroPad{\ztotpages}{\the\numexpr\thepage-1\relax}.svg}{\faArrowLeft}%
+ \ifnum\currentPageNumber>1%
+ \href{\jobname-\zeroPad{\PreviousTotalPages}{\the\numexpr\currentPageNumber-1\relax}.svg}{\faArrowLeft}%
\else%
\textcolor{lightgray}{\faArrowLeft}%
\fi\hspace{0.5ex}%
- \ifnum\thepage<\ztotpages%
- \href{\jobname-\zeroPad{\ztotpages}{\the\numexpr\thepage+1\relax}.svg}{\faArrowRight}%
+ \ifnum\currentPageNumber<\PreviousTotalPages%
+ \href{\jobname-\zeroPad{\PreviousTotalPages}{\the\numexpr\currentPageNumber+1\relax}.svg}{\faArrowRight}%
\else%
\textcolor{lightgray}{\faArrowRight}%
\fi%
\hspace{0.5ex}%
}}%
}%
+ \special{dvisvgm:raw
+ <style>svg{cursor: none}</style>%
+ <defs>%
+ <script type="text/javascript">%
+ <![CDATA[%
+ var cursorTimer;%
+ var downOnLink=false;%
+ var downOnRoot=false;%
+ function islink(tg){return (tg.tagName=='a') ? true : tg.parentNode ? islink(tg.parentNode) : false;};%
+ function ismmedia(tg){return (tg.tagName=='video'||tg.tagName=='audio') ? true : tg.parentNode ? ismmedia(tg.parentNode) : false;};%
+ document.addEventListener('mousemove', function(e){%
+ if(islink(e.target)||ismmedia(e.target)||e.target.getAttribute('class')=='annot'){%
+ e.target.style.cursor='pointer';}else{e.target.style.cursor='default';}%
+ try{clearTimeout(cursorTimer);}catch(err){};%
+ cursorTimer=setTimeout(function(){e.target.style.cursor='none';},3000);%
+ });%
+ window.addEventListener('contextmenu', function(e){% capture right click
+ if(!islink(e.target)&&!ismmedia(e.target)) e.preventDefault();%
+ });%
+ document.addEventListener('mousedown', function(e){%
+ if(islink(e.target)||ismmedia(e.target)) downOnLink=true;%
+ else downOnRoot=true;%
+ });%
+ document.addEventListener('mouseup', function(e){%
+ if(downOnLink||!downOnRoot){downOnLink=false;return;}%
+ downOnRoot=false;%
+ \ifnum\currentPageNumber<\PreviousTotalPages
+ if(!e.shiftKey&&e.button==0) document.location.replace('\jobname-\zeroPad{\PreviousTotalPages}{\the\numexpr\currentPageNumber+1\relax}.svg');%
+ \fi%
+ \ifnum\currentPageNumber>1
+ if(e.shiftKey||e.button>1) document.location.replace('\jobname-\zeroPad{\PreviousTotalPages}{\the\numexpr\currentPageNumber-1\relax}.svg');%
+ \fi%
+ });%
+ document.addEventListener('wheel', function(e){%
+ \ifnum\currentPageNumber<\PreviousTotalPages
+ if(e.deltaY>0){%
+ document.location.replace('\jobname-\zeroPad{\PreviousTotalPages}{\the\numexpr\currentPageNumber+1\relax}.svg');%
+ }%
+ \fi%
+ \ifnum\currentPageNumber>1
+ if(e.deltaY<0){%
+ document.location.replace('\jobname-\zeroPad{\PreviousTotalPages}{\the\numexpr\currentPageNumber-1\relax}.svg');%
+ }%
+ \fi%
+ });%
+ document.addEventListener('keydown',function(e){%
+ \ifnum\currentPageNumber<\PreviousTotalPages
+ if(e.key=='PageDown'||e.key=='ArrowDown'||e.key=='ArrowRight')%
+ document.location.replace('\jobname-\zeroPad{\PreviousTotalPages}{\the\numexpr\currentPageNumber+1\relax}.svg');%
+ \fi%
+ \ifnum\currentPageNumber>1
+ if(e.key=='PageUp'||e.key=='ArrowUp'||e.key=='ArrowLeft')%
+ document.location.replace('\jobname-\zeroPad{\PreviousTotalPages}{\the\numexpr\currentPageNumber-1\relax}.svg');%
+ \fi%
+ if(e.key=='Home')
+ document.location.replace('\jobname-\zeroPad{\PreviousTotalPages}{1}.svg');%
+ if(e.key=='End')
+ document.location.replace('\jobname-\PreviousTotalPages.svg');%
+ });%
+ ]]>%
+ </script>%
+ </defs>%
+ }%
}%
% helper macro \zeroPad : zero-pads integer according to template,
% e. g. 123 --> 00123 if template is `99999`
@@ -172,15 +171,15 @@ Video streamed from URL and YouTube player with two videos played in a loop.\\[2
https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.webm}
\end{Verbatim}
\begin{Verbatim}
-\includemedia[width=20em,height=11.25em,youtube,controls,loop,
+\includemedia[width=20em,height=11.25em,youtube,loop,
autoplay,muted]{}{OSPyXTjIrnk,9HQfauGJaTs}
\end{Verbatim}
\includemedia[width=18em,height=10.125em,url,controls]{}{https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.webm}
-\includemedia[width=18em,height=10.125em,youtube,controls,loop,autoplay,muted]{}{OSPyXTjIrnk,9HQfauGJaTs}
+\includemedia[width=18em,height=10.125em,youtube,loop,autoplay,muted]{}{OSPyXTjIrnk,9HQfauGJaTs}
\end{frame}
\begin{frame}[fragile]{Player control}
-The standard player controls (option `\Verb+controls+') occupy some space of the media display and should not be enabled for that reason. Nevertheless, interactivity is still provided through touch or left mouse button click, and through the keyboard as summarized in the table.\\[0.5ex]
+The standard player controls (option `\Verb+controls+') occupy some space of the media display and it might not be advisable to enable them for that reason. Nevertheless, interactivity is still provided through touch or left mouse button click, and through the keyboard as summarized in the table.\\[0.5ex]
Click on the media to start playback. To pause playback, press the left mouse button on the media. Release it to resume playback. To pause playback permanently, press the left mouse button on the media and move the mouse out while keeping the button pressed. On mobile devices, tap on the media to toggle between Play and Pause.\\[1ex]
@@ -199,10 +198,10 @@ Click on the media to start playback. To pause playback, press the left mouse bu
\begin{column}{0.5\linewidth}
\begin{tabular}{ll}\toprule
Command & Shortcut\\\midrule
- Seek back \SI{1}{\percent} & \makebox[\widthof{\keys{\SPACE}}][l]{\keys{\arrowkeyleft}}\\
- Seek forward \SI{1}{\percent} & \keys{\arrowkeyright}\\
- Seek back \SI{10}{\percent} & \keys{Ctrl+\arrowkeyleft}\\
- Seek forward \SI{10}{\percent} & \keys{Ctrl+\arrowkeyright}\\
+ Seek back \qty{1}{\percent} & \makebox[\widthof{\keys{\SPACE}}][l]{\keys{\arrowkeyleft}}\\
+ Seek forward \qty{1}{\percent} & \keys{\arrowkeyright}\\
+ Seek back \qty{10}{\percent} & \keys{Ctrl+\arrowkeyleft}\\
+ Seek forward \qty{10}{\percent} & \keys{Ctrl+\arrowkeyright}\\
Seek to beginning & \keys{Home}\\
Seek to end & \keys{End}\\\bottomrule
\end{tabular}
diff --git a/macros/latex/contrib/media4svg/media4svg.sty b/macros/latex/contrib/media4svg/media4svg.sty
index 0045fd684e..8f49799251 100644
--- a/macros/latex/contrib/media4svg/media4svg.sty
+++ b/macros/latex/contrib/media4svg/media4svg.sty
@@ -23,8 +23,8 @@
%
% The Current Maintainer of this work is A. Grahn.
-\def\g@msvg@date@tl{2022/09/27}
-\def\g@msvg@version@tl{0.12}
+\def\g@msvg@date@tl{2022/10/12}
+\def\g@msvg@version@tl{0.13}
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage{media4svg}{\g@msvg@date@tl}{\g@msvg@version@tl}
@@ -44,12 +44,15 @@
\cs_new_nopar:Nn\msvg_percent:{%}
\char_set_catcode_other:N\&
\cs_new_nopar:Nn\msvg_amp:{&amp;}
+\char_set_catcode_other:N\#
+\cs_new_nopar:Nn\msvg_hashtag:{#}
\group_end:
\bool_new:N\g_msvg_pkgdraft_bool
\bool_new:N\g_msvg_pkgembed_bool
\bool_gset_true:N\g_msvg_pkgembed_bool
\bool_new:N\g_msvg_pkgyt_bool
+\bool_new:N\g_msvg_pkgvmo_bool
\int_new:N\g_msvg_pkgresizeflag_int% resizing flag according to options given
\tl_gset:Nn\g_msvg_pkgwdarg_tl{\width}
\tl_gset:Nn\g_msvg_pkghtarg_tl{\height}
@@ -57,15 +60,17 @@
\bool_new:N\g_msvg_pkgiso_bool
\tl_gset:Nn\g_msvg_pkgscalearg_tl{1.0}
\tl_new:N\g_msvg_pkgcontrols_tl
-\tl_gset:Nx\g_msvg_pkgcontrolsyt_tl{\msvg_amp: controls=0}
+\tl_gset:Nx\g_msvg_pkgcontrolsyt_tl{\msvg_amp: controls=1}
\tl_new:N\g_msvg_pkgautoplay_tl
\tl_new:N\g_msvg_pkgautoplayyt_tl
\tl_new:N\g_msvg_pkgloop_tl
\tl_new:N\g_msvg_pkgloopyt_tl
\tl_new:N\g_msvg_pkgtime_tl
\tl_new:N\g_msvg_pkgtimeyt_tl
+\tl_new:N\g_msvg_pkgtimevmo_tl
\tl_new:N\g_msvg_pkgmuted_tl
\tl_new:N\g_msvg_pkgmutedyt_tl
+\tl_new:N\g_msvg_pkgmutedvmo_tl
\tl_gset:Nn\g_msvg_pkgmtype_tl{audio/mpeg}
\keys_define:nn{media4svg}{
@@ -115,16 +120,19 @@
muted / true .code:n = {
\tl_gset:Nn\g_msvg_pkgmuted_tl{muted=''~}
\tl_gset:Nn\g_msvg_pkgmutedyt_tl{\msvg_amp: mute=1}
+ \tl_gset:Nn\g_msvg_pkgmutedvmo_tl{\msvg_amp: muted=1}
},
muted / false .code:n = {
\tl_gclear:N\g_msvg_pkgmuted_tl
\tl_gclear:N\g_msvg_pkgmutedyt_tl
+ \tl_gclear:N\g_msvg_pkgmutedvmo_tl
},
muted .default:n = {true},
time .code:n = {
\tl_gset:Nn\g_msvg_pkgtime_tl{currentTime='#1'~}
\tl_gset:Nn\g_msvg_pkgtimeyt_tl{\msvg_amp: start=#1}
+ \tl_gset:Nn\g_msvg_pkgtimevmo_tl{\msvg_hashtag: t=#1}
},
time .value_required:n = {true},
@@ -136,6 +144,8 @@
youtube .bool_gset:N = \g_msvg_pkgyt_bool,
+ vimeo .bool_gset:N = \g_msvg_pkgvmo_bool,
+
width .code:n = {
\tl_gset:Nn\g_msvg_pkgwdarg_tl{#1}
\tl_if_exist:NF\l_msvg_pkgwd_tl{
@@ -215,6 +225,10 @@
\bool_gset_false:N\g_msvg_embed_bool
\seq_set_split:NnV\l_msvg_ytids_seq{,}\l_msvg_media_arg_tl
}
+ \bool_if:NT\g_msvg_vmo_bool{
+ \bool_gset_false:N\g_msvg_embed_bool
+ \seq_set_split:NnV\l_msvg_ytids_seq{,}\l_msvg_media_arg_tl
+ }
\sbox\l_msvg_poster_box{#2}
\msvg_scale:n{\l_msvg_poster_box}
\special{dvisvgm:bbox~\g_msvg_wd_tl~\g_msvg_ht_tl~\g_msvg_dp_tl~transform}
@@ -249,7 +263,7 @@
\special{dvisvgm:raw
\bool_if:nT{
\tl_if_blank_p:V\g_msvg_controls_tl&&
- !\bool_if_p:N\g_msvg_yt_bool
+ !\bool_if_p:N\g_msvg_yt_bool&&!\bool_if_p:N\g_msvg_vmo_bool
}{
% In Chrome, with controls disabled, <video> cannot get the focus, which is
% necessary for keyboard interaction. As a fix, we insert a zero-size <svg>
@@ -321,7 +335,7 @@
style='cursor:~pointer;'~
\bool_if:nT{
\tl_if_blank_p:V\g_msvg_controls_tl&&
- !\bool_if_p:N\g_msvg_yt_bool
+ !\bool_if_p:N\g_msvg_yt_bool&&!\bool_if_p:N\g_msvg_vmo_bool
}{
ontouchstart='
event.preventDefault();event.stopPropagation();
@@ -334,21 +348,29 @@
'
}
>
- \bool_if:NTF\g_msvg_yt_bool{
+ \bool_if:nTF{\bool_if_p:N\g_msvg_yt_bool||\bool_if_p:N\g_msvg_vmo_bool}{
<g~xmlns='http://www.w3.org/1999/xhtml'>
<iframe~
+ width='100\msvg_percent:'~height='100\msvg_percent:'~
+ frameborder='0'~
+ allow='fullscreen;autoplay;clipboard-write;encrypted-media;gyroscope;accelerometer'~
+ \bool_if:NTF\g_msvg_yt_bool{
title='YouTube~video~player'~
- width='100\msvg_percent:'~height='100\msvg_percent:'~
- allow='fullscreen;autoplay;clipboard-write;encrypted-media;gyroscope;accelerometer'~
- frameborder='0'~
src='https://www.youtube-nocookie.com/embed/\seq_item:Nn\l_msvg_ytids_seq{1}?
modestbranding=1\msvg_amp: rel=0
\int_compare:nNnT{\seq_count:N\l_msvg_ytids_seq}>{1}{
\msvg_amp: playlist=\seq_use:Nn\l_msvg_ytids_seq{,}
}
\g_msvg_controlsyt_tl\g_msvg_autoplayyt_tl\g_msvg_loopyt_tl
- \g_msvg_mutedyt_tl\g_msvg_timeyt_tl
- '/>
+ \g_msvg_mutedyt_tl\g_msvg_timeyt_tl'
+ }{
+ title='Vimeo~video~player'~
+ src='https://player.vimeo.com/video/\seq_item:Nn\l_msvg_ytids_seq{1}?
+ autopause=0\msvg_amp: dnt=1 //do not track
+ \g_msvg_controlsyt_tl\g_msvg_autoplayyt_tl\g_msvg_loopyt_tl
+ \g_msvg_mutedvmo_tl\g_msvg_timevmo_tl'
+ }
+ />
</g>
}{
<video~
@@ -689,8 +711,10 @@
\bool_gset_eq:NN\g_msvg_embed_bool\g_msvg_pkgembed_bool
\tl_gset_eq:NN\g_msvg_time_tl\g_msvg_pkgtime_tl
\tl_gset_eq:NN\g_msvg_timeyt_tl\g_msvg_pkgtimeyt_tl
+ \tl_gset_eq:NN\g_msvg_timevmo_tl\g_msvg_pkgtimevmo_tl
\tl_gset_eq:NN\g_msvg_muted_tl\g_msvg_pkgmuted_tl
\tl_gset_eq:NN\g_msvg_mutedyt_tl\g_msvg_pkgmutedyt_tl
+ \tl_gset_eq:NN\g_msvg_mutedvmo_tl\g_msvg_pkgmutedvmo_tl
\tl_set_eq:NN\l_msvg_wd_tl\l_msvg_pkgwd_tl
\tl_set_eq:NN\l_msvg_ht_tl\l_msvg_pkght_tl
\tl_set_eq:NN\l_msvg_tt_tl\l_msvg_pkgtt_tl
@@ -701,6 +725,8 @@
\tl_gset_eq:NN\g_msvg_scalearg_tl\g_msvg_pkgscalearg_tl
\int_gset_eq:NN\g_msvg_resizeflag_int\g_msvg_pkgresizeflag_int
\box_clear:N\l_msvg_poster_box
+ \bool_gset_eq:NN\g_msvg_yt_bool\g_msvg_pkgyt_bool
+ \bool_gset_eq:NN\g_msvg_vmo_bool\g_msvg_pkgvmo_bool
}
%document command options
@@ -716,6 +742,7 @@
\bool_new:N\g_msvg_iso_bool
\bool_new:N\g_msvg_embed_bool
\bool_new:N\g_msvg_yt_bool
+\bool_new:N\g_msvg_vmo_bool
\keys_define:nn{media4svg/user}{
%user override automatic id
@@ -775,16 +802,19 @@
muted / true .code:n = {
\tl_gset:Nn\g_msvg_muted_tl{muted=''~}
\tl_gset:Nn\g_msvg_mutedyt_tl{\msvg_amp: mute=1}
+ \tl_gset:Nn\g_msvg_mutedvmo_tl{\msvg_amp: muted=1}
},
muted / false .code:n = {
\tl_gclear:N\g_msvg_muted_tl
\tl_gclear:N\g_msvg_mutedyt_tl
+ \tl_gclear:N\g_msvg_mutedvmo_tl
},
muted .default:n = {true},
time .code:n = {
\tl_gset:Nn\g_msvg_time_tl{currentTime='#1'~}
\tl_gset:Nn\g_msvg_timeyt_tl{\msvg_amp: start=#1}
+ \tl_gset:Nn\g_msvg_timevmo_tl{\msvg_hashtag: t=#1}
},
time .value_required:n = {true},
@@ -796,6 +826,8 @@
youtube .bool_gset:N = \g_msvg_yt_bool,
+ vimeo .bool_gset:N = \g_msvg_vmo_bool,
+
width .code:n = {
\tl_gset:Nn\g_msvg_wdarg_tl{#1}
\tl_if_exist:NF\l_msvg_wd_tl{
diff --git a/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf b/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf
index c617f4e66e..0790608386 100644
--- a/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf
+++ b/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/profcollege/latex/ProfCollege.sty b/macros/latex/contrib/profcollege/latex/ProfCollege.sty
index 8f8525a804..d45f25b5ce 100644
--- a/macros/latex/contrib/profcollege/latex/ProfCollege.sty
+++ b/macros/latex/contrib/profcollege/latex/ProfCollege.sty
@@ -2,9 +2,9 @@
% licence : Released under the LaTeX Project Public License v1.3c
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}%
-\def\filedate{2022/09/10}%
+\def\filedate{2022/10/12}%
\let\PfCfiledate\filedate%
-\def\fileversion{0.99-z}%
+\def\fileversion{0.99-z-a}%
\let\PfCfileversion\fileversion%
\ProvidesPackage{ProfCollege}[\filedate\space v\fileversion\space Aide pour utiliser LaTeX au college]
@@ -347,10 +347,971 @@
}
%%%
+% Codage RLE
+%%%
+\setKVdefault[RLE]{Largeur=10pt,Taille=5,Unite=1cm,Solution=false,Enonce=true}
+
+\newtoks\toklisterle
+\def\UpdatetoksRLE#1\nil{\addtotok\toklisterle{#1,}}%
+
+%\newlength\PfCRLEHeight%
+\NewDocumentCommand\CodageRLE{o m}{%
+ \useKVdefault[RLE]%
+ \setKV[RLE]{#1}%
+ %\setlength{\PfCRLEHeight}{\useKV[RLE]{Largeur}}%
+ \setsepchar{,}%
+ \readlist*\PfCListeRLE{#2}%
+ \toklisterle{}%
+ \foreachitem\compteur\in\PfCListeRLE{\expandafter\UpdatetoksRLE\compteur\nil}%
+ \BuildRLE{\the\toklisterle}%
+}
+
+\NewDocumentCommand\BuildRLE{m}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ Taille:=\useKV[RLE]{Taille};
+ u:=\useKV[RLE]{Unite};
+ boolean Solution,Enonce;
+ Solution:=\useKV[RLE]{Solution};
+ Enonce:=\useKV[RLE]{Enonce};
+
+ color RLEFill;
+ RLEFill=white;
+
+ numeric nbretenir[][];
+
+ vardef NombreLigne(text t)=
+ retiens:=0;
+ nblignes:=0;
+ for p_=t:
+ retiens:=retiens+p_;
+ if retiens=Taille:
+ nblignes:=nblignes+1;
+ retiens:=0;
+ fi;
+ endfor;
+ enddef;
+
+ path Square;
+ Square=unitsquare scaled u;
+
+ vardef RLE(text t)=
+ nbcoups:=0;
+ nbcases:=0;
+ nbcaseslignes:=0;
+ cptretiensnb:=0;
+ cptretiensnblignes:=1;
+ for p_=t:
+ if p_=0:
+ cptretiensnb:=cptretiensnb+1;
+ nbretenir[cptretiensnblignes][cptretiensnb]=p_;
+ RLEFill:=black;
+ else:
+ nbcoups:=nbcoups+1;
+ for l=0 upto p_-1:
+ if Solution: fill ((Square scaled 0.95) shifted(u*((nbcases mod Taille)+l,-(nbcases div Taille))+u*(0.025,0.025))) withcolor RLEFill; fi;
+ trace (Square shifted(u*((nbcases mod Taille)+l,-(nbcases div Taille))));
+ endfor;
+ nbcaseslignes:=nbcaseslignes+p_;
+ nbcases:=nbcases+p_;
+ if (nbcaseslignes mod Taille)=0:
+ RLEFill:=white;
+ cptretiensnb:=cptretiensnb+1;
+ nbretenir[cptretiensnblignes][cptretiensnb]=p_;
+ cptretiensnblignes:=cptretiensnblignes+1;
+ cptretiensnb:=0;
+ else:
+ if RLEFill=white: RLEFill:=black else: RLEFill:=white fi;
+ cptretiensnb:=cptretiensnb+1;
+ nbretenir[cptretiensnblignes][cptretiensnb]=p_;
+ fi;
+ fi;
+ endfor;
+ enddef;
+
+ string Sequence[];
+
+ boolean STOP;
+ STOP:=false;
+
+ vardef Affichage=
+ for k=1 upto nblignes:
+ Sequence[k]=decimal(nbretenir[k][1]);
+ n:=1;
+ forever:
+ n:=n+1;
+ if unknown nbretenir[k][n]:
+ STOP:=true;
+ else:
+ Sequence[k]:=Sequence[k]&","&decimal(nbretenir[k][n]);
+ fi;
+ exitif STOP;
+ endfor;
+ label.rt(TEX(Sequence[k]),u*(Taille+1,-k+1+0.5));
+ STOP:=false;
+ endfor;
+ enddef;
+
+ NombreLigne(#1);
+ RLE(#1);
+ if Enonce:
+ Affichage;
+ fi;
+ \end{mplibcode}
+ \else
+ \begin{mpost}[mpsettings={%
+ Taille:=\useKV[RLE]{Taille};
+ u:=\useKV[RLE]{Unite};
+ boolean Solution,Enonce;
+ Solution:=\useKV[RLE]{Solution};
+ Enonce:=\useKV[RLE]{Enonce};
+ }]
+ color RLEFill;
+ RLEFill=white;
+
+ numeric nbretenir[][];
+
+ vardef NombreLigne(text t)=
+ retiens:=0;
+ nblignes:=0;
+ for p_=t:
+ retiens:=retiens+p_;
+ if retiens=Taille:
+ nblignes:=nblignes+1;
+ retiens:=0;
+ fi;
+ endfor;
+ enddef;
+
+ path Square;
+ Square=unitsquare scaled u;
+
+ vardef RLE(text t)=
+ nbcoups:=0;
+ nbcases:=0;
+ nbcaseslignes:=0;
+ cptretiensnb:=0;
+ cptretiensnblignes:=1;
+ for p_=t:
+ if p_=0:
+ cptretiensnb:=cptretiensnb+1;
+ nbretenir[cptretiensnblignes][cptretiensnb]=p_;
+ RLEFill:=black;
+ else:
+ nbcoups:=nbcoups+1;
+ for l=0 upto p_-1:
+ if Solution: fill ((Square scaled 0.95) shifted(u*((nbcases mod Taille)+l,-(nbcases div Taille))+u*(0.025,0.025))) withcolor RLEFill; fi;
+ trace (Square shifted(u*((nbcases mod Taille)+l,-(nbcases div Taille))));
+ endfor;
+ nbcaseslignes:=nbcaseslignes+p_;
+ nbcases:=nbcases+p_;
+ if (nbcaseslignes mod Taille)=0:
+ RLEFill:=white;
+ cptretiensnb:=cptretiensnb+1;
+ nbretenir[cptretiensnblignes][cptretiensnb]=p_;
+ cptretiensnblignes:=cptretiensnblignes+1;
+ cptretiensnb:=0;
+ else:
+ if RLEFill=white: RLEFill:=black else: RLEFill:=white fi;
+ cptretiensnb:=cptretiensnb+1;
+ nbretenir[cptretiensnblignes][cptretiensnb]=p_;
+ fi;
+ fi;
+ endfor;
+ enddef;
+
+ string Sequence[];
+
+ boolean STOP;
+ STOP:=false;
+
+ vardef Affichage=
+ for k=1 upto nblignes:
+ Sequence[k]=decimal(nbretenir[k][1]);
+ n:=1;
+ forever:
+ n:=n+1;
+ if unknown nbretenir[k][n]:
+ STOP:=true;
+ else:
+ Sequence[k]:=Sequence[k]&","&decimal(nbretenir[k][n]);
+ fi;
+ exitif STOP;
+ endfor;
+ label.rt(LATEX(Sequence[k]),u*(Taille+1,-k+1+0.5));
+ STOP:=false;
+ endfor;
+ enddef;
+
+ NombreLigne(#1);
+ RLE(#1);
+ if Enonce:
+ Affichage;
+ fi;
+ \end{mpost}
+ \fi
+}
+
+%%%
+% Engrenages
+%%%
+\newtoks\tokPfCEngrenages%
+\def\UpdatetoksEngrenages#1/#2\nil{\addtotok\tokPfCEngrenages{#1,#2,}}%
+
+\setKVdefault[Engrenages]{Couleur=LightSteelBlue,Unite=3mm}
+
+\NewDocumentCommand\Engrenages{o m}{%
+ \tokPfCEngrenages{}
+ \useKVdefault[Engrenages]%
+ \setKV[Engrenages]{#1}%
+ \setsepchar[*]{,*/}%
+ \ignoreemptyitems
+ \readlist*\ListePfCEngrenages{#2}%
+ \foreachitem\compteur\in\ListePfCEngrenages{\expandafter\UpdatetoksEngrenages\compteur\nil}%
+ \BuildEngrenages{\the\tokPfCEngrenages}%
+}%
+
+\NewDocumentCommand\BuildEngrenages{m}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ input PfCEngrenages;
+
+ u:=\useKV[Engrenages]{Unite};
+ CouleurEngrenage=\useKV[Engrenages]{Couleur};
+
+ vardef LectureDonnees(text t)=
+ n:=0;k=0;l=0;
+ for p_=t:
+ n:=n+1;
+ if (n mod 2)=0:
+ l:=l+1;
+ Zz[l]=p_;
+ else:
+ k:=k+1;
+ Mm[k]=p_;
+ fi;
+ endfor;
+ enddef;
+
+ LectureDonnees(#1);
+
+ pair K;
+ K=(0,0);
+
+ trace Engrenage(Mm[1],Zz[1],(0,0));
+ for w=2 upto (n div 2):
+ K:=K+pointarc(cercles((0,0),u*Mm[w]*(Zz[w-1]+Zz[w])*0.5+0.04*u),0);
+ AngleRot:=360/(2*Zz[w]);
+ trace rotation(Engrenage(Mm[w],Zz[w],K),K,180-AngleRot);
+ endfor;
+ \end{mplibcode}
+ \else
+ \begin{mpost}[mpsettings={input PfCEngrenages;u:=\useKV[Engrenages]{Unite};CouleurEngrenage=\useKV[Engrenages]{Couleur};}]
+ vardef LectureDonnees(text t)=
+ n:=0;k=0;l=0;
+ for p_=t:
+ n:=n+1;
+ if (n mod 2)=0:
+ l:=l+1;
+ Zz[l]=p_;
+ else:
+ k:=k+1;
+ Mm[k]=p_;
+ fi;
+ endfor;
+ enddef;
+
+ LectureDonnees(#1);
+
+ pair K;
+ K=(0,0);
+
+ trace Engrenage(Mm[1],Zz[1],(0,0));
+ for w=2 upto (n div 2):
+ K:=K+pointarc(cercles((0,0),u*Mm[w]*(Zz[w-1]+Zz[w])*0.5+0.04*u),0);
+ AngleRot:=360/(2*Zz[w]);
+ trace rotation(Engrenage(Mm[w],Zz[w],K),K,180-AngleRot);
+ endfor;
+ \end{mpost}
+ \fi
+}%
+
+%%%
+% Tortue
+%%%
+\setKVdefault[Tortue]{Pas=0.2mm,Etapes=false,Nom=\jobname,Grille=false,LargeurG=10,HauteurG=10,TortueD=false,TortueF=false,Epaisseur=1,Angle=0,Debut=false,Depart={(0,0)},Axes=false}
+\defKV[Tortue]{Etape=\setKV[Tortue]{Etapes}}%
+
+\newcounter{PfCTortue}
+\setcounter{PfCTortue}{0}
+
+\makeatletter
+\NewDocumentCommand\TortueCreationFichier{o m}{%
+ \stepcounter{PfCTortue}%
+ \useKVdefault[Tortue]%
+ \setKV[Tortue]{#1}%
+ \setKV[Tortue]{Nom=\jobname+t\thePfCTortue}%
+ \setsepchar[*]{,* }%
+ \readlist*\PfCListeCmdTortue{#2}%
+ \setsepchar{,}%
+ \xdef\PfCNbRep{0}%
+ \savecomparemode%
+ \newwrite\turtle@out%
+ \immediate\openout\turtle@out \jobname+t\thePfCTortue.turtle%
+ \immediate\write\turtle@out{numeric ut;}%
+ \immediate\write\turtle@out{ut=\useKV[Tortue]{Pas};}%
+ \immediate\write\turtle@out{Etapes=\useKV[Tortue]{Etapes};}%
+ \immediate\write\turtle@out{if Etapes:Total=\useKV[Tortue]{Etape};fi;}%
+% \immediate\write\turtle@out{vardef Dessin=}%
+% \immediate\write\turtle@out{save Tortue; picture Tortue;}%
+ \ifboolKV[Tortue]{Grille}{%
+ \immediate\write\turtle@out{%
+ larg=\useKV[Tortue]{LargeurG}; haut=\useKV[Tortue]{HauteurG};
+ for k=-larg upto larg:
+ draw 3*ut*(10k,-10haut)--3*ut*(10k,10haut) withcolor 0.75white;
+ endfor;
+ for k=-haut upto haut:
+ draw 3*ut*(-10larg,10k)--3*ut*(10larg,10k) withcolor 0.75white;
+ endfor;
+ if \useKV[Tortue]{Axes}:
+ drawarrow 3*ut*(-10larg,0)--3*ut*(10larg,0);
+ drawarrow 3*ut*(0,-10haut)--3*ut*(0,10haut);
+ label.llft(btex O etex,(0,0));
+ dotlabel.lrt(btex 30 etex,(30*ut,0));
+ dotlabel.ulft(btex 30 etex,(0,30*ut));
+ fi;
+ }%
+ }{}%
+ \ifboolKV[Tortue]{Debut}{}{%
+ \foreachitem\compteur\in\PfCListeCmdTortue{%
+ \comparestrict%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{[}[\PfCTestCrochetO]%
+ \xintifboolexpr{\PfCTestCrochetO==0}{}{%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{]}[\PfCTestCrochetF]%
+ \xintifboolexpr{\PfCTestCrochetF==0}{%
+ \immediate\write\turtle@out{TotalRemplis:=tt-1; remplis for l=1 upto TotalRemplis:B[l]--endfor cycle withcolor CouleurRemplis;}%
+ }{%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Remplis}[\PfCTestRemplis]%
+ \xintifboolexpr{\PfCTestRemplis==0}{%
+ \immediate\write\turtle@out{tt:=0;
+ TotalRemplis:=0; CouleurRemplis:=\PfCListeCmdTortue[\compteurcnt,2];}%
+ }{%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Fin}[\PfCTestFinPour]%
+ \xintifboolexpr{\PfCTestFinPour==0}{%
+ \immediate\write\turtle@out{enddef;k:=0;}%
+ \xdef\PfCNbRep{\fpeval{\PfCNbRep+1}}%
+ }{%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Pour}[\PfCTestPour]%
+ \xintifboolexpr{\PfCTestPour==0}{%
+ \immediate\write\turtle@out{vardef \PfCListeCmdTortue[\compteurcnt,2](expr \PfCListeCmdTortue[\compteurcnt,3])=}%
+ }{%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Rep}[\PfCTestRep]%
+ \xintifboolexpr{\PfCTestRep==0}{%
+ \xdef\PfCNbRep{\fpeval{\PfCNbRep+1}}%
+ \immediate\write\turtle@out{nb[\PfCNbRep]:=0;}%
+ \immediate\write\turtle@out{forever:}%
+ \immediate\write\turtle@out{nb[\PfCNbRep]:=nb[\PfCNbRep]+1;}%
+ % \immediate\write\turtle@out{nbcomp:=nbcomp+1;}
+ }{%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{)}[\PfCTestParaF]%
+ \xintifboolexpr{\PfCTestParaF==0}{%
+ \immediate\write\turtle@out{exitif nb[\PfCNbRep]=\PfCListeCmdTortue[\compteurcnt,2];}%
+ \immediate\write\turtle@out{endfor;}%
+ \xdef\PfCNbRep{\fpeval{\PfCNbRep-1}}%
+ }{%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{(}[\PfCTestParaO]%
+ \xintifboolexpr{\PfCTestParaO==0}{%
+ }{%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Bc}[\PfCTestBc]%
+ \xintifboolexpr{\PfCTestBc==0}{%
+ \immediate\write\turtle@out{Bc;}%
+ }{%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Lc}[\PfCTestLc]%
+ \xintifboolexpr{\PfCTestLc==0}{%
+ \immediate\write\turtle@out{Lc;}%
+ }{%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Tlp}[\PfCTestTlp]%
+ \xintifboolexpr{\PfCTestTlp==0}{%
+ \immediate\write\turtle@out{Teleporter(\PfCListeCmdTortue[\compteurcnt,2],\PfCListeCmdTortue[\compteurcnt,3]);}%
+ }{%
+ \immediate\write\turtle@out{\PfCListeCmdTortue[\compteurcnt,1](\PfCListeCmdTortue[\compteurcnt,2]);}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ % \immediate\write\turtle@out{Tortue:=currentpicture;Tortue enddef;}%
+ % \immediate\write\turtle@out{draw Dessin;}%
+ \ifboolKV[Tortue]{TortueD}{%
+ \immediate\write\turtle@out{drawoptions(withcolor DarkGreen);label(btex \noexpand\Large\noexpand\ding{40} etex rotated RetiensAngle[0] scaled 1.5,A[0]);}%
+ }{}%
+ \ifboolKV[Tortue]{Etapes}{%
+ \immediate\write\turtle@out{drawoptions(withcolor DarkGreen);label(btex \noexpand\Large\noexpand\ding{40} etex rotated RetiensAngle[Total] scaled 1.5,A[Total]);}%
+ }{\ifboolKV[Tortue]{TortueF}{\immediate\write\turtle@out{drawoptions(withcolor DarkGreen);label(btex \noexpand\Large\noexpand\ding{40} etex rotated RetiensAngle[k] scaled 1.5,A[k]);}}{}}%
+ %\immediate\write\turtle@out{}
+ \immediate\closeout\turtle@out%
+ \restorecomparemode%
+}%
+\makeatother
+
+\NewDocumentCommand\Tortue{o m}{%
+ \useKVdefault[Tortue]%
+ \setKV[Tortue]{#1}%
+ \TortueCreationFichier[#1]{#2}%
+ \TortueDessinFinal%
+}
+
+\NewDocumentCommand\TortueDessinFinal{}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ input PfCTurtleTestRemplis.mp;
+
+ pair Depart;
+ Depart=\useKV[Tortue]{Depart};
+ pair A[],B[];
+ A[0]=\useKV[Tortue]{Pas}*(xpart(Depart),ypart(Depart));
+ B[0]=A[0];
+ Epaisseur:=0.25;%\useKV[Tortue]{Epaisseur};
+ Angle:=0;
+ numeric RetiensAngle[];
+ RetiensAngle[0]=\useKV[Tortue]{Angle};
+
+ pair VecteurDpt;
+ VecteurDpt=(1,0) rotated RetiensAngle[0];
+ input \useKV[Tortue]{Nom}.turtle;
+ \end{mplibcode}
+ \else
+ \fi
+}%
+
+%%%
+% Le compte est bon
+%%%
+\setKVdefault[CompteBon]{NombreCalculs=5,NombrePlaques=4,Solution=false,Relatifs=false,Original=false,Graines=false,Plaques=6}
+\defKV[CompteBon]{Graine=\setKV[CompteBon]{Graines}}%
+
+\makeatletter
+
+\newcommand\PfC@CreerListeCalculs[4]{%
+ \xdef\PfC@ListeCalculs{%
+ #1+#2+#3+#4,%
+ #1+#2+#3*#4/#1+#3*#4+#2/#3*#4+#1+#2,%
+ #1+#3+#2*#4/#1+#2*#4+#3/#2*#4+#1+#3,%
+ #1+#4+#2*#3/#1+#2*#3+#4/#2*#3+#1+#4,%
+ #2+#3+#1*#4/#2+#1*#4+#3/#1*#4+#2+#3,%
+ #2+#4+#1*#3/#2+#1*#3+#4/#2+#4+#1*#3,%
+ #3+#4+#1*#2/#3+#1*#2+#4/#3+#4+#1*#2,%
+ #1*#2+#3*#4/#3*#4+#1*#2,%
+ #1*#3+#2*#4/#2*#4+#1*#3,%
+ #1*#4+#2*#3/#2*#3+#1*#4,%
+ #1*#2*#3+#4/#4+#1*#2*#3,
+ #1*#2*#4+#3/#3+#1*#2*#4,%
+ #1*#3*#4+#2/#2+#1*#3*#4,%
+ #2*#3*#4+#1/#1+#2*#3*#4,%
+ #1*#2*#3*#4,%
+ #1+(#2+#3)*#4/(#2+#3)*#4+#1/#1+#4*(#2+#3)/#4*(#2+#3)+#1,%
+ #1+(#2+#4)*#3/(#2+#4)*#3+#1/#1+#3*(#2+#4)/#3*(#2+#4)+#1,%
+ #1+(#3+#4)*#2/(#3+#4)*#2+#1/#1+#2*(#3+#4)/#2*(#3+#4)+#1,%
+ #2+(#1+#3)*#4,%
+ #2+(#1+#4)*#3,%
+ #2+(#3+#4)*#1,%
+ #3+(#1+#2)*#4,%
+ #3+(#1+#4)*#2,%
+ #3+(#2+#4)*#1,%
+ #4+(#1+#2)*#3,%
+ #4+(#1+#3)*#2,%
+ #4+(#2+#3)*#1,%
+ (#1+#2+#3)*#4,%
+ (#1+#2+#4)*#3,%
+ (#1+#3+#4)*#2,%
+ (#2+#3+#4)*#1,%
+ (#1+#2)*(#3+#4),%
+ (#1+#3)*(#2+#4),%
+ (#1+#4)*(#2+#3)%
+ }%
+ \ifboolKV[CompteBon]{Relatifs}{%
+ \xdef\PfC@ListeCalculs{%
+ \PfC@ListeCalculs,%
+ #1-#2-#3-#4,%
+ #1-#2-#3*#4/#1-#3*#4-#2/#3*#4-#1-#2,%
+ #1-#3-#2*#4/#1-#2*#4-#3/#2*#4-#1-#3,%
+ #1-#4-#2*#3/#1-#2*#3-#4/#2*#3-#1-#4,%
+ #2-#3-#1*#4/#2-#1*#4-#3/#1*#4-#2-#3,%
+ #2-#4-#1*#3/#2-#1*#3-#4/#2-#4-#1*#3,%
+ #3-#4-#1*#2/#3-#1*#2-#4/#3-#4-#1*#2,%
+ #1*#2-#3*#4/#3*#4-#1*#2,%
+ #1*#3-#2*#4/#2*#4-#1*#3,%
+ #1*#4-#2*#3/#2*#3-#1*#4,%
+ #1*#2*#3-#4/#4-#1*#2*#3,
+ #1*#2*#4-#3/#3-#1*#2*#4,%
+ #1*#3*#4-#2/#2-#1*#3*#4,%
+ #2*#3*#4-#1/#1-#2*#3*#4,%
+ #1*#2*#3*#4,%
+ #1-(#2-#3)*#4/(#2-#3)*#4-#1/#1-#4*(#2-#3)/#4*(#2-#3)-#1,%
+ #1-(#2-#4)*#3/(#2-#4)*#3-#1/#1-#3*(#2-#4)/#3*(#2-#4)-#1,%
+ #1-(#3-#4)*#2/(#3-#4)*#2-#1/#1-#2*(#3-#4)/#2*(#3-#4)-#1,%
+ #2-(#1-#3)*#4,%
+ #2-(#1-#4)*#3,%
+ #2-(#3-#4)*#1,%
+ #3-(#1-#2)*#4,%
+ #3-(#1-#4)*#2,%
+ #3-(#2-#4)*#1,%
+ #4-(#1-#2)*#3,%
+ #4-(#1-#3)*#2,%
+ #4-(#2-#3)*#1,%
+ (#1-#2-#3)*#4,%
+ (#1-#2-#4)*#3,%
+ (#1-#3-#4)*#2,%
+ (#2-#3-#4)*#1,%
+ (#1-#2)*(#3-#4),%
+ (#1-#3)*(#2-#4),%
+ (#1-#4)*(#2-#3)%
+ }%
+ }{}%
+}%
+
+\newtoks\tokPfCCBRappels
+\def\UpdatetoksCB#1\nil{\addtotok\tokPfCCBRappels{#1,}}%
+
+\NewDocumentCommand\PfCCompteBonOriginal{o}{%
+ \useKVdefault[CompteBon]
+ \setKV[CompteBon]{#1}%
+ %On définit la liste des cartes
+ \xdef\PfCCBListeCartes{1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,25,50,75,100}%
+ \MelangeListe{\PfCCBListeCartes}{\useKV[CompteBon]{Plaques}}
+ \readlist*\PfCCBListeTirage{\faa}
+ \MelangeListe{\faa}{\useKV[CompteBon]{Plaques}}
+ \readlist*\PfCCBListeTirageAffiche{\faa}
+ %%Tirage ok
+ \xdef\PfCCBResultatFinal{1001}%
+ \whiledo{\PfCCBResultatFinal>1000}{%
+ \xdef\PfCListeATrier{\PfCCBListeTirage[1]}%
+ \xintFor* ##1 in{\xintSeq{2}{\useKV[CompteBon]{Plaques}}}\do{%
+ \xdef\PfCListeATrier{\PfCListeATrier,\PfCCBListeTirage[##1]}%
+ }%
+ %
+ \tokPfCCBRappels{}%
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{\useKV[CompteBon]{Plaques}-1}}}\do{%
+ \MelangeListe{\PfCListeATrier}{2}
+ \readlist*\PfCCBListeTirageIntermediaire{\faa}
+ \xintifboolexpr{\PfCCBListeTirageIntermediaire[1]==1 || \PfCCBListeTirageIntermediaire[2]==1}{%
+ % On ne fait pas de multiplication par 1
+ \xdef\PfCCBAlea{\fpeval{randint(1,2)}}%
+ \xintifboolexpr{\PfCCBAlea==1}{%
+ \xdef\PfCCBTest{\PfCCBListeTirageIntermediaire[1]+\PfCCBListeTirageIntermediaire[2]=\fpeval{\PfCCBListeTirageIntermediaire[1]+\PfCCBListeTirageIntermediaire[2]}}%
+ \expandafter\UpdatetoksCB\PfCCBTest\nil%
+ \xdef\PfCCBResultat{\fpeval{\PfCCBListeTirageIntermediaire[1]+\PfCCBListeTirageIntermediaire[2]}}
+ \xintifboolexpr{\PfCCBResultat>10000}{\xintBreakFor\xdef\PfCCBResultat{10000}}{}%
+ }{%
+ \xintifboolexpr{\PfCCBListeTirageIntermediaire[1]==\PfCCBListeTirageIntermediaire[2]}{%
+ \xdef\PfCCBTest{\PfCCBListeTirageIntermediaire[1]+\PfCCBListeTirageIntermediaire[2]=\fpeval{\PfCCBListeTirageIntermediaire[1]+\PfCCBListeTirageIntermediaire[2]}}%
+ \expandafter\UpdatetoksCB\PfCCBTest\nil%
+ \xdef\PfCCBResultat{\fpeval{\PfCCBListeTirageIntermediaire[1]+\PfCCBListeTirageIntermediaire[2]}}
+ }{%
+ \xdef\PfCCBTest{\fpeval{max(\PfCCBListeTirageIntermediaire[1],\PfCCBListeTirageIntermediaire[2])}-\fpeval{min(\PfCCBListeTirageIntermediaire[1],\PfCCBListeTirageIntermediaire[2])}=\fpeval{max(\PfCCBListeTirageIntermediaire[1],\PfCCBListeTirageIntermediaire[2])-min(\PfCCBListeTirageIntermediaire[1],\PfCCBListeTirageIntermediaire[2])}}
+ \expandafter\UpdatetoksCB\PfCCBTest\nil%
+ \xdef\PfCCBResultat{\fpeval{abs(\PfCCBListeTirageIntermediaire[1]-\PfCCBListeTirageIntermediaire[2])}}
+ }%
+ \xintifboolexpr{\PfCCBResultat>10000}{\xintBreakFor\xdef\PfCCBResultat{10000}}{}%
+ }%
+ \xdef\PfCListeATrier{\fii,\PfCCBResultat}%
+ }{%
+ \xdef\PfCCBAlea{\fpeval{randint(1,3)}}%
+ \xintifboolexpr{\PfCCBAlea==1}{%
+ \xdef\PfCCBTest{\PfCCBListeTirageIntermediaire[1]+\PfCCBListeTirageIntermediaire[2]=\fpeval{\PfCCBListeTirageIntermediaire[1]+\PfCCBListeTirageIntermediaire[2]}}%
+ \expandafter\UpdatetoksCB\PfCCBTest\nil%
+ \xdef\PfCCBResultat{\fpeval{\PfCCBListeTirageIntermediaire[1]+\PfCCBListeTirageIntermediaire[2]}}
+ \xintifboolexpr{\PfCCBResultat>10000}{\xintBreakFor\xdef\PfCCBResultat{10000}}{}%
+ }{%
+ \xintifboolexpr{\PfCCBAlea==2}{%
+ \xintifboolexpr{\PfCCBListeTirageIntermediaire[1]==\PfCCBListeTirageIntermediaire[2]}{%
+ \xdef\PfCCBTest{\PfCCBListeTirageIntermediaire[1]+\PfCCBListeTirageIntermediaire[2]=\fpeval{\PfCCBListeTirageIntermediaire[1]+\PfCCBListeTirageIntermediaire[2]}}%
+ \expandafter\UpdatetoksCB\PfCCBTest\nil%
+ \xdef\PfCCBResultat{\fpeval{\PfCCBListeTirageIntermediaire[1]+\PfCCBListeTirageIntermediaire[2]}}
+ }{%
+ \xdef\PfCCBTest{\fpeval{max(\PfCCBListeTirageIntermediaire[1],\PfCCBListeTirageIntermediaire[2])}-\fpeval{min(\PfCCBListeTirageIntermediaire[1],\PfCCBListeTirageIntermediaire[2])}=\fpeval{max(\PfCCBListeTirageIntermediaire[1],\PfCCBListeTirageIntermediaire[2])-min(\PfCCBListeTirageIntermediaire[1],\PfCCBListeTirageIntermediaire[2])}}
+ \expandafter\UpdatetoksCB\PfCCBTest\nil%
+ \xdef\PfCCBResultat{\fpeval{abs(\PfCCBListeTirageIntermediaire[1]-\PfCCBListeTirageIntermediaire[2])}}
+ }%
+ \xintifboolexpr{\PfCCBResultat>10000}{\xintBreakFor\xdef\PfCCBResultat{10000}}{}%
+ }{%
+ \xdef\PfCCBTest{\PfCCBListeTirageIntermediaire[1]*\PfCCBListeTirageIntermediaire[2]=\fpeval{\PfCCBListeTirageIntermediaire[1]*\PfCCBListeTirageIntermediaire[2]}}
+ \expandafter\UpdatetoksCB\PfCCBTest\nil%
+ \xdef\PfCCBResultat{\fpeval{\PfCCBListeTirageIntermediaire[1]*\PfCCBListeTirageIntermediaire[2]}}
+ \xintifboolexpr{\PfCCBResultat>10000}{\xintBreakFor\xdef\PfCCBResultat{10000}}{}%
+ }
+ }%
+ \xdef\PfCListeATrier{\fii,\PfCCBResultat}%
+ }%
+ }%
+ \xintifboolexpr{\useKV[CompteBon]{Plaques}>5}{\xintifboolexpr{\PfCCBResultat<100}{\xdef\PfCCBResultat{1001}}{}}{}%
+ \xdef\PfCCBResultatFinal{\PfCCBResultat}%
+ }%
+ \begin{center}
+ \textbf{\PfCCBResultatFinal}
+
+ \fbox{\PfCCBListeTirage[1]} \xintFor* ##1 in{\xintSeq{2}{\useKV[CompteBon]{Plaques}}}\do{\qquad \fbox{\PfCCBListeTirage[##1]}}%
+ \end{center}
+ \xdef\PfCCBListeRappels{\the\tokPfCCBRappels}
+ \setsepchar[*]{,*=}\ignoreemptyitems
+ \readlist*\PfCCBDecompositionEtapes{\PfCCBListeRappels}
+ \reademptyitems
+ \ifboolKV[CompteBon]{Solution}{%
+ \begin{align*}
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{\useKV[CompteBon]{Plaques}-1}}}\do{
+ \StrSubstitute{\PfCCBDecompositionEtapes[##1,1]}{*}{\times}[\PfCCBAffiche]\PfCCBAffiche&=\PfCCBDecompositionEtapes[##1,2]\xintifForLast{\\}{}
+ }
+ \end{align*}
+ }{}%
+}%
+
+\NewDocumentCommand\CompteBon{o}{%
+ \useKVdefault[CompteBon]%
+ \setKV[CompteBon]{#1}%
+ \ifboolKV[CompteBon]{Graines}{\PfCGraineAlea{\useKV[CompteBon]{Graine}}}{}%
+ \ifboolKV[CompteBon]{Original}{%
+ \PfCCompteBonOriginal[#1]%
+ }{%
+ % on choisit NombrePlaques parmi la liste des nombres 1 à 9, 10/25/50/75/100, La moitié +1 devant appartenir à 1..9
+ \xdef\PfCCBListeEntiers{2,3,4,5,6,7,8,9}%
+ \xdef\PfCCBListeMultiples{10,25,50,75,100}%
+ \xdef\PfCCBNbPlaqueEntiers{\fpeval{floor(\useKV[CompteBon]{NombrePlaques}/2)+1}}%
+ \xdef\PfCCBNbPlaqueMultiples{\useKV[CompteBon]{NombrePlaques}-\PfCCBNbPlaqueEntiers}%
+ \MelangeListe{\PfCCBListeEntiers}{\PfCCBNbPlaqueEntiers}%
+ \setsepchar{,}%
+ \ignoreemptyitems%
+ \readlist*\PfCCBListeEntiersChoisis{\faa}%
+ \MelangeListe{\PfCCBListeMultiples}{\PfCCBNbPlaqueMultiples}%
+ \ignoreemptyitems%
+ \readlist*\PfCCBListeMultiplesChoisis{\faa}%
+ \reademptyitems%
+ \xdef\PfCCBListeToutesCartes{}%
+ \foreachitem\compteur\in\PfCCBListeEntiersChoisis{%
+ \xdef\PfCCBListeToutesCartes{\PfCCBListeToutesCartes{},\PfCCBListeEntiersChoisis[\compteurcnt]}%
+ }%
+ \foreachitem\compteur\in\PfCCBListeMultiplesChoisis{%
+ \xdef\PfCCBListeToutesCartes{\PfCCBListeToutesCartes{},\PfCCBListeMultiplesChoisis[\compteurcnt]}%
+ }%
+ \MelangeListe{\PfCCBListeToutesCartes}{4}%
+ \readlist*\PfCCBListeFinaleCartes{\faa}%
+ % Choix des calculs
+ \xdef\PfC@CalculUn{\PfCCBListeFinaleCartes[1]}%
+ \xdef\PfC@CalculDeux{\PfCCBListeFinaleCartes[2]}%
+ \xdef\PfC@CalculTrois{\PfCCBListeFinaleCartes[3]}%
+ \xdef\PfC@CalculQuatre{\PfCCBListeFinaleCartes[4]}%
+ \PfC@CreerListeCalculs{\PfC@CalculUn}{\PfC@CalculDeux}{\PfC@CalculTrois}{\PfC@CalculQuatre}
+ \MelangeListe{\PfC@ListeCalculs}{\useKV[CompteBon]{NombreCalculs}}%
+ \setsepchar[*]{,*/}%
+ \readlist*\PfC@ListeCalculsChoisis{\faa}%
+ \begin{center}
+ \setlength{\tabcolsep}{0.5\tabcolsep}
+ % Le tableau des nombres
+ \begin{NiceTabular}{m{20pt}m{10pt}m{20pt}m{10pt}m{20pt}m{10pt}m{20pt}}
+ \Block[draw]{}{\PfCCBListeFinaleCartes[1]}&&\Block[draw]{}{\PfCCBListeFinaleCartes[2]}&&\Block[draw]{}{\PfCCBListeFinaleCartes[3]}&&\Block[draw]{}{\PfCCBListeFinaleCartes[4]}
+ \end{NiceTabular}
+
+ \bigskip
+
+ % Le tableau des calculs%
+ \begin{NiceTabular}{m{30pt}cccm{20pt}m{10pt}m{20pt}m{10pt}m{20pt}m{10pt}m{20pt}}
+ \xintFor* ##1 in{\xintSeq{1}{\useKV[CompteBon]{NombreCalculs}}}\do{%
+ \Block[draw]{}{\num{\fpeval{\PfC@ListeCalculsChoisis[##1,1]}}}&&$=$&&\Block[draw]{}{~}&\Block{}{~}&\Block[draw]{}{~}&\Block{}{~}&\Block[draw]{}{~}&\Block{}{~}&\Block[draw]{}{~}\\
+ \ifboolKV[CompteBon]{Solution}{\Block{1-11}{\footnotesize Une solution : \StrSubstitute[0]{\PfC@ListeCalculsChoisis[##1,1]}{*}{\times}[\PfCEcritureCalcul]$\PfCEcritureCalcul$}}{}\\
+ }%
+ \end{NiceTabular}
+ \end{center}
+ }%
+}%
+
+%%%
+% Nombre Astral
+%%%
+\setKVdefault[NombreAstral]{Solution=false,Graines=false,Echelle=1}
+\defKV[NombreAstral]{Graine=\setKV[NombreAstral]{Graines}}%
+
+\newtoks\toklisteNANombres%
+\newtoks\toklisteNAMelange%
+\def\UpdatetoksNANombres#1\nil{\addtotok\toklisteNANombres{"#1",}}%
+\def\UpdatetoksNAMelange#1\nil{\addtotok\toklisteNAMelange{#1,}}%
+
+\NewDocumentCommand\NombreAstral{o}{%
+ \toklisteNANombres{}%
+ \toklisteNAMelange{}%
+ \useKVdefault[NombreAstral]%
+ \setKV[NombreAstral]{#1}%
+ \ifboolKV[NombreAstral]{Graines}{\PfCGraineAlea{\useKV[NombreAstral]{Graine}}}{}%
+ \xdef\PfCNACible{\fpeval{2*randint(25,45)}}%
+ \xdef\PfCNAListeNombres{}%
+ \xintFor* ##1 in{\xintSeq{11}{\fpeval{floor(\PfCNACible/3)}}}\do{%
+ \xdef\PfCNAListeNombres{\PfCNAListeNombres ##1,}%
+ }%
+ \MelangeListe{\PfCNAListeNombres}{5}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\PfCNAListeNombresBase{\faa}%
+ \reademptyitems
+ \readlist*\PfCNAListeNombres{%
+ \PfCNAListeNombresBase[1],%
+ \PfCNAListeNombresBase[2],%
+ \fpeval{0.5*\PfCNACible+\PfCNAListeNombresBase[5]-\PfCNAListeNombresBase[4]-\PfCNAListeNombresBase[3]},%
+ \fpeval{0.5*\PfCNACible+\PfCNAListeNombresBase[4]-\PfCNAListeNombresBase[2]-\PfCNAListeNombresBase[5]},%
+ \PfCNAListeNombresBase[3],%
+ \fpeval{0.5*\PfCNACible+\PfCNAListeNombresBase[3]-\PfCNAListeNombresBase[5]-\PfCNAListeNombresBase[1]},%
+ \fpeval{0.5*\PfCNACible+\PfCNAListeNombresBase[2]-\PfCNAListeNombresBase[4]-\PfCNAListeNombresBase[1]},%
+ \fpeval{0.5*\PfCNACible+\PfCNAListeNombresBase[1]-\PfCNAListeNombresBase[2]-\PfCNAListeNombresBase[3]},%
+ \PfCNAListeNombresBase[4],%
+ \PfCNAListeNombresBase[5]%
+ }%
+ \foreachitem\compteur\in\PfCNAListeNombres{\expandafter\UpdatetoksNANombres\compteur\nil}%
+ \xdef\PfCNAListeAEffacer{1,2,3,4,5,6,7,8,9,10}%
+ \MelangeListe{\PfCNAListeAEffacer}{6}%
+ \ignoreemptyitems%
+ \readlist*\PfCNAListeMelange{\faa}%
+ \reademptyitems%
+ \foreachitem\compteur\in\PfCNAListeMelange{\expandafter\UpdatetoksNAMelange\compteur\nil}%
+ \BuildNombreAstral{\the\toklisteNANombres}{\the\toklisteNAMelange}%
+}%
+
+\NewDocumentCommand\BuildNombreAstral{m m}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ Cible=\PfCNACible;
+
+ boolean Solution;
+ Solution:=\useKV[NombreAstral]{Solution};
+
+ Echelle:=\useKV[NombreAstral]{Echelle};
+
+ string Rappel[];
+ Rayon:=4cm;
+
+ path cc,ca[];
+ cc=cercles((0,0),Rayon);
+
+ pair A[],C[],D[];
+ for k=1 upto 5:
+ C[k]=pointarc(cc,90+(k-1)*72);
+ endfor;
+
+ D1=C2+30*unitvector(C2-C4);
+ D2=C2+30*unitvector(C2-C5);
+ D3=C3+30*unitvector(C3-C1);
+ D4=C4+30*unitvector(C4-C1);
+ D5=C5+30*unitvector(C5-C3);
+
+ drawarrow C2--D1;
+ drawarrow C2--D2;
+ drawarrow C3--D3;
+ drawarrow C4--D4;
+ drawarrow C5--D5;
+
+ label.ulft(TEX("\bfseries\Large"&decimal(Cible)),D1);
+ label.lft(TEX("\bfseries\Large"&decimal(Cible)),D2);
+ label.llft(TEX("\bfseries\Large"&decimal(Cible)),D3);
+ label.lrt(TEX("\bfseries\Large"&decimal(Cible)),D4);
+ label.urt(TEX("\bfseries\Large"&decimal(Cible)),D5);
+
+ trace polygone(C1,C3,C5,C2,C4) withpen (pencircle scaled 8);
+ A1=C1;
+ A2=C2;
+ A9=C3;
+ A10=C4;
+ A5=C5;
+ A3=segment(C1,C3) intersectionpoint segment(C2,C5);
+ A4=segment(C1,C4) intersectionpoint segment(C2,C5);
+ A6=segment(C1,C3) intersectionpoint segment(C2,C4);
+ A7=segment(C1,C4) intersectionpoint segment(C3,C5);
+ A8=segment(C2,C4) intersectionpoint segment(C3,C5);
+ for k=1 upto 10:
+ ca[k]=cercles(A[k],0.6u);
+ fill ca[k] withcolor white;
+ trace ca[k];
+ endfor;
+ vardef Affichage(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Rappel[n]=p_;
+ label(TEX("\Large"&p_),A[n]);
+ endfor;
+ enddef;
+
+ vardef Suppression(text t)=
+ k:=0;
+ for p_=t:
+ k:=k+1;
+ fill ca[p_] withcolor white;
+ trace ca[p_];
+ label(TEX("\Large"&Rappel[p_]),u*(-7,5.6-1.5k));
+ trace cercles(u*(-7,5.6-1.5k),0.6u);
+ endfor;
+ enddef;
+
+ Affichage(#1);
+ if Solution=false:
+ Suppression(#2);
+ fi;
+ picture recap;%
+ recap:=currentpicture scaled Echelle;%
+ currentpicture:=nullpicture;%
+ draw recap;%
+ \end{mplibcode}
+ \else
+ \begin{mpost}[mpsettings={%
+ Echelle:=\useKV[NombreAstral]{Echelle};
+ Cible=\PfCNACible;boolean Solution;Solution:=\useKV[NombreAstral]{Solution};
+ string Rappel[];
+ n:=0;
+ for p_=#1:
+ n:=n+1;
+ Rappel[n]=p_;
+ endfor;
+ }]
+
+ Rayon:=4cm;
+
+ path cc,ca[];
+ cc=cercles((0,0),Rayon);
+
+ pair A[],C[],D[];
+ for k=1 upto 5:
+ C[k]=pointarc(cc,90+(k-1)*72);
+ endfor;
+
+ D1=C2+30*unitvector(C2-C4);
+ D2=C2+30*unitvector(C2-C5);
+ D3=C3+30*unitvector(C3-C1);
+ D4=C4+30*unitvector(C4-C1);
+ D5=C5+30*unitvector(C5-C3);
+
+ drawarrow C2--D1;
+ drawarrow C2--D2;
+ drawarrow C3--D3;
+ drawarrow C4--D4;
+ drawarrow C5--D5;
+
+ label.ulft(LATEX("\noexpand\bfseries\noexpand\Large"&decimal(Cible)&""),D1);
+ label.lft(LATEX("\noexpand\bfseries\noexpand\Large"&decimal(Cible)),D2);
+ label.llft(LATEX("\noexpand\bfseries\noexpand\Large"&decimal(Cible)),D3);
+ label.lrt(LATEX("\noexpand\bfseries\noexpand\Large"&decimal(Cible)),D4);
+ label.urt(LATEX("\noexpand\bfseries\noexpand\Large"&decimal(Cible)),D5);
+
+ trace polygone(C1,C3,C5,C2,C4) withpen (pencircle scaled 8);
+ A1=C1;
+ A2=C2;
+ A9=C3;
+ A10=C4;
+ A5=C5;
+ A3=segment(C1,C3) intersectionpoint segment(C2,C5);
+ A4=segment(C1,C4) intersectionpoint segment(C2,C5);
+ A6=segment(C1,C3) intersectionpoint segment(C2,C4);
+ A7=segment(C1,C4) intersectionpoint segment(C3,C5);
+ A8=segment(C2,C4) intersectionpoint segment(C3,C5);
+ for k=1 upto 10:
+ ca[k]=cercles(A[k],0.6u);
+ fill ca[k] withcolor white;
+ trace ca[k];
+ endfor;
+ vardef Affichage(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ label(LATEX("\noexpand\Large"&Rappel[n]),A[n]);
+ endfor;
+ enddef;
+
+ vardef Suppression(text t)=
+ k:=0;
+ for p_=t:
+ k:=k+1;
+ fill ca[p_] withcolor white;
+ trace ca[p_];
+ label(LATEX("\noexpand\Large"&Rappel[p_]),u*(-7,5.6-1.5k));
+ trace cercles(u*(-7,5.6-1.5k),0.6u);
+ endfor;
+ enddef;
+
+ Affichage(#1);
+ if Solution=false:
+ Suppression(#2);
+ fi;
+
+ picture recap;%
+ recap:=currentpicture scaled Echelle;%
+ currentpicture:=nullpicture;%
+ draw recap;%
+ \end{mpost}
+ \fi
+}%
+
+%%%
+% Mentalo
+%%%
+\NewDocumentCommand\PfCNum{m}{%
+ \xintifboolexpr{#1<0}{(\num{#1})}{\num{#1}}%
+}%
+
+\setKVdefault[Mentalo]{Questions=10,ValeurMin=1,ValeurMax=15}
+
+\NewDocumentCommand\Mentalo{o m}{%
+ \useKVdefault[Mentalo]%
+ \setKV[Mentalo]{#1}%
+ \xdef\PfCMentaloEtages{\fpeval{\useKV[Mentalo]{Questions}+1}}
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\PfCMentaloListeOperations{#2}%
+ \reademptyitems%
+ \setlength{\tabcolsep}{0.25\tabcolsep}
+ \renewcommand{\arraystretch}{1.5}
+ \begin{NiceTabular}{*{\fpeval{\PfCMentaloEtages}}{m{5pt}}m{20pt}cm{20pt}cl*{\fpeval{\PfCMentaloEtages}}{m{5pt}}*{5}{m{15pt}}*{2}{m{10pt}}}
+ \Block{1-\fpeval{\PfCMentaloEtages}}{~}\xintFor* ##2 in{\xintSeq{1}{\fpeval{\PfCMentaloEtages}}}\do{&}%
+ \Block[draw,fill=gray!15]{1-5}{Arrivée}&&&&&\Block{1-\fpeval{\PfCMentaloEtages}}{~}\xintFor* ##2 in{\xintSeq{1}{\fpeval{\PfCMentaloEtages}}}\do{&}\\
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{\PfCMentaloEtages-1}}}\do{%
+ \Block{1-\fpeval{\PfCMentaloEtages-##1}}{~}\xintFor* ##2 in{\xintSeq{1}{\fpeval{\PfCMentaloEtages-##1}}}\do{&}%
+ \Block[borders={top,left,bottom}]{1-\fpeval{##1}}{~}\xintFor* ##2 in{\xintSeq{1}{\fpeval{##1}}}\do{&}%
+ \Block[borders={top,bottom}]{1-1}{%
+ \xdef\PfCMentaloPremierTerme{\fpeval{randint(\useKV[Mentalo]{ValeurMin},\useKV[Mentalo]{ValeurMax})}}%
+ \num{\PfCMentaloPremierTerme}}&\Block[borders={top,bottom}]{1-1}{%
+ \xintifboolexpr{\PfCMentaloListeOperationslen==1}{%
+ \StrSubstitute{\PfCMentaloListeOperations[1]}{*}{\times}[\PfCCBAffiche]$\PfCCBAffiche$%
+ }{%
+ \StrSubstitute{\PfCMentaloListeOperations[##1]}{*}{\times}[\PfCCBAffiche]$\PfCCBAffiche$%
+ }%
+ }&%
+ \Block[borders={top,bottom}]{1-1}{\xdef\PfCMentaloDeuxiemeTerme{\fpeval{randint(\useKV[Mentalo]{ValeurMin},\useKV[Mentalo]{ValeurMax})}}%
+ \PfCNum{\PfCMentaloDeuxiemeTerme}}&\Block[borders={top,bottom}]{1-1}{$=$}&\Block[borders={top,bottom}]{1-1}{\pointilles[20pt]}&%
+ \Block[borders={top,right,bottom}]{1-\fpeval{##1}}{~}\xintFor* ##2 in{\xintSeq{1}{\fpeval{##1}}}\do{&}%
+ \Block{1-\fpeval{\PfCMentaloEtages-##1}}{~}\xintFor* ##2 in{\xintSeq{1}{\fpeval{\PfCMentaloEtages-##1}}}\do{&}%
+ &&&&\Block{1-2}{%
+ \xintifboolexpr{\PfCMentaloListeOperationslen==1}{%
+ \num{\fpeval{\PfCMentaloPremierTerme\PfCMentaloListeOperations[1]\PfCMentaloDeuxiemeTerme}}
+ }{%
+ \num{\fpeval{\PfCMentaloPremierTerme\PfCMentaloListeOperations[##1]\PfCMentaloDeuxiemeTerme}}
+ }%
+ }&\\
+ }%
+ \Block[draw,fill=gray!15]{1-\fpeval{2*\PfCMentaloEtages+5}}{Départ}\xintFor* ##2 in{\xintSeq{1}{\fpeval{2*\PfCMentaloEtages+5}}}\do{&}\\%
+ \CodeAfter
+ \tikz\draw[dashed] (1-|\fpeval{5+5+2+2*\PfCMentaloEtages-2})--(last-|\fpeval{5+5+2+2*\PfCMentaloEtages-2});
+ \end{NiceTabular}
+}%
+
+%%%
% Calculs Croises
%%%
-\setKVdefault[CalculsCroises]{Largeur=20pt,Solution=false,Inverse=false,Creation=false,Graines=false,Vide=false,Couleur=LightGray,Negatifs=false}
+\setKVdefault[CalculsCroises]{Largeur=20pt,Solution=false,Inverse=false,Creation=false,Graines=false,Vide=false,Couleur=LightGray,Negatifs=false,Aide=false}
\defKV[CalculsCroises]{Graine=\setKV[CalculsCroises]{Graines}}%
+\defKV[CalculsCroises]{ListeNombres=\setKV[CalculsCroises]{Aide}}%
\newlength\PfCCalculsCroises%
\NewDocumentCommand\CalculsCroises{o m}{%
@@ -372,12 +1333,68 @@
\setsepchar{,}%
\readlist*\PfCListeCCNb{\faa}%
\readlist*\PfCListeCCOp{#2}%
+ \xdef\PfCCCfoo{\useKV[CalculsCroises]{ListeNombres}}%
+ \readlist*\PfCListeCCAide{\PfCCCfoo}%
\begin{NiceTabular}{*{6}{m{\useKV[CalculsCroises]{Largeur}}}}
- \rule{0pt}{\PfCCalculsCroises}\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCNb[1]}}{~}}&\StrCompare{\PfCListeCCOp[1]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[1]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCNb[2]}}{~}}&\StrCompare{\PfCListeCCOp[2]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[2]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCNb[3]}}{~}}&\Block[borders={bottom,right,top},fill=PfCCouleurCC]{}{\ifboolKV[CalculsCroises]{Inverse}{}{\num{\fpeval{\PfCListeCCNb[1]\PfCListeCCOp[1]\PfCListeCCNb[2]\PfCListeCCOp[2]\PfCListeCCNb[3]}}}}\\
+ \rule{0pt}{\PfCCalculsCroises}\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCNb[1]}}{%
+ \ifboolKV[CalculsCroises]{Aide}{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCListeCCAidelen}}\do{%
+ \xintifboolexpr{\PfCListeCCNb[1]==\PfCListeCCAide[##1]}{\num{\PfCListeCCNb[1]}}{}%
+ }%
+ }{}%
+ }}&\StrCompare{\PfCListeCCOp[1]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[1]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCNb[2]}}{%
+ \ifboolKV[CalculsCroises]{Aide}{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCListeCCAidelen}}\do{%
+ \xintifboolexpr{\PfCListeCCNb[2]==\PfCListeCCAide[##1]}{\num{\PfCListeCCNb[2]}}{}%
+ }%
+ }{}%
+ }}&\StrCompare{\PfCListeCCOp[2]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[2]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCNb[3]}}{%
+ \ifboolKV[CalculsCroises]{Aide}{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCListeCCAidelen}}\do{%
+ \xintifboolexpr{\PfCListeCCNb[3]==\PfCListeCCAide[##1]}{\num{\PfCListeCCNb[3]}}{}%
+ }%
+ }{}%
+ }}&\Block[borders={bottom,right,top},fill=PfCCouleurCC]{}{\ifboolKV[CalculsCroises]{Inverse}{}{\num{\fpeval{\PfCListeCCNb[1]\PfCListeCCOp[1]\PfCListeCCNb[2]\PfCListeCCOp[2]\PfCListeCCNb[3]}}}}\\
\rule{0pt}{\PfCCalculsCroises}\StrCompare{\PfCListeCCOp[3]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[3]$}}&\Block[fill=black]{}{~}&\StrCompare{\PfCListeCCOp[4]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[4]$}}&\Block[fill=black]{}{~}&\StrCompare{\PfCListeCCOp[5]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[5]$}}\\
- \rule{0pt}{\PfCCalculsCroises}\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCNb[4]}}{~}}&\StrCompare{\PfCListeCCOp[6]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[6]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCNb[5]}}{~}}&\StrCompare{\PfCListeCCOp[7]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[7]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCNb[6]}}{~}}&\Block[borders={bottom,right,top},fill=PfCCouleurCC]{}{\ifboolKV[CalculsCroises]{Inverse}{}{\num{\fpeval{\PfCListeCCNb[4]\PfCListeCCOp[6]\PfCListeCCNb[5]\PfCListeCCOp[7]\PfCListeCCNb[6]}}}}\\
+ \rule{0pt}{\PfCCalculsCroises}\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCNb[4]}}{%
+ \ifboolKV[CalculsCroises]{Aide}{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCListeCCAidelen}}\do{%
+ \xintifboolexpr{\PfCListeCCNb[4]==\PfCListeCCAide[##1]}{\num{\PfCListeCCNb[4]}}{}%
+ }%
+ }{}%
+ }}&\StrCompare{\PfCListeCCOp[6]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[6]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCNb[5]}}{%
+ \ifboolKV[CalculsCroises]{Aide}{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCListeCCAidelen}}\do{%
+ \xintifboolexpr{\PfCListeCCNb[5]==\PfCListeCCAide[##1]}{\num{\PfCListeCCNb[5]}}{}%
+ }%
+ }{}%
+ }}&\StrCompare{\PfCListeCCOp[7]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[7]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCNb[6]}}{%
+ \ifboolKV[CalculsCroises]{Aide}{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCListeCCAidelen}}\do{%
+ \xintifboolexpr{\PfCListeCCNb[6]==\PfCListeCCAide[##1]}{\num{\PfCListeCCNb[6]}}{}%
+ }%
+ }{}%
+ }}&\Block[borders={bottom,right,top},fill=PfCCouleurCC]{}{\ifboolKV[CalculsCroises]{Inverse}{}{\num{\fpeval{\PfCListeCCNb[4]\PfCListeCCOp[6]\PfCListeCCNb[5]\PfCListeCCOp[7]\PfCListeCCNb[6]}}}}\\
\rule{0pt}{\PfCCalculsCroises}\StrCompare{\PfCListeCCOp[8]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[8]$}}&\Block[fill=black]{}{~}&\StrCompare{\PfCListeCCOp[9]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[9]$}}&\Block[fill=black]{}{~}&\StrCompare{\PfCListeCCOp[10]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[10]$}}\\
- \rule{0pt}{\PfCCalculsCroises}\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCNb[7]}}{~}}&\StrCompare{\PfCListeCCOp[11]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[11]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCNb[8]}}{~}}&\StrCompare{\PfCListeCCOp[12]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[12]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCNb[9]}}{~}}&\Block[borders={bottom,right,top},fill=PfCCouleurCC]{}{\ifboolKV[CalculsCroises]{Inverse}{}{\num{\fpeval{\PfCListeCCNb[7]\PfCListeCCOp[11]\PfCListeCCNb[8]\PfCListeCCOp[12]\PfCListeCCNb[9]}}}}\\
+ \rule{0pt}{\PfCCalculsCroises}\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCNb[7]}}{%
+ \ifboolKV[CalculsCroises]{Aide}{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCListeCCAidelen}}\do{%
+ \xintifboolexpr{\PfCListeCCNb[7]==\PfCListeCCAide[##1]}{\num{\PfCListeCCNb[7]}}{}%
+ }%
+ }{}%
+ }}&\StrCompare{\PfCListeCCOp[11]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[11]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCNb[8]}}{%
+ \ifboolKV[CalculsCroises]{Aide}{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCListeCCAidelen}}\do{%
+ \xintifboolexpr{\PfCListeCCNb[8]==\PfCListeCCAide[##1]}{\num{\PfCListeCCNb[8]}}{}%
+ }%
+ }{}%
+ }}&\StrCompare{\PfCListeCCOp[12]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[12]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCNb[9]}}{%
+ \ifboolKV[CalculsCroises]{Aide}{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCListeCCAidelen}}\do{%
+ \xintifboolexpr{\PfCListeCCNb[9]==\PfCListeCCAide[##1]}{\num{\PfCListeCCNb[9]}}{}%
+ }%
+ }{}%
+ }}&\Block[borders={bottom,right,top},fill=PfCCouleurCC]{}{\ifboolKV[CalculsCroises]{Inverse}{}{\num{\fpeval{\PfCListeCCNb[7]\PfCListeCCOp[11]\PfCListeCCNb[8]\PfCListeCCOp[12]\PfCListeCCNb[9]}}}}\\
\rule{0pt}{\PfCCalculsCroises}\Block[borders={left,bottom,right},fill=PfCCouleurCC]{}{\ifboolKV[CalculsCroises]{Inverse}{}{\num{\fpeval{\PfCListeCCNb[1]\PfCListeCCOp[3]\PfCListeCCNb[4]\PfCListeCCOp[8]\PfCListeCCNb[7]}}}}&&\Block[borders={left,bottom,right},fill=PfCCouleurCC]{}{\ifboolKV[CalculsCroises]{Inverse}{}{\num{\fpeval{\PfCListeCCNb[2]\PfCListeCCOp[4]\PfCListeCCNb[5]\PfCListeCCOp[9]\PfCListeCCNb[8]}}}}&&\Block[borders={left,bottom,right},fill=PfCCouleurCC]{}{\ifboolKV[CalculsCroises]{Inverse}{}{\num{\fpeval{\PfCListeCCNb[3]\PfCListeCCOp[5]\PfCListeCCNb[6]\PfCListeCCOp[10]\PfCListeCCNb[9]}}}}\\
\CodeAfter
\tikz\draw (1-|1) rectangle (6-|6);
@@ -408,12 +1425,59 @@
\end{NiceTabular}
}{%
\readlist*\PfCListeCCOp{#2}%
+ \xdef\PfCCCfoo{\useKV[CalculsCroises]{ListeNombres}}%
+ \readlist*\PfCListeCCAide{\PfCCCfoo}%
\begin{NiceTabular}{*{6}{m{\useKV[CalculsCroises]{Largeur}}}}
- \rule{0pt}{\PfCCalculsCroises}\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCOp[1]}}{~}}&\StrCompare{\PfCListeCCOp[2]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[2]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCOp[3]}}{~}}&\StrCompare{\PfCListeCCOp[4]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[4]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCOp[5]}}{~}}&\Block[borders={bottom,right,top},fill=PfCCouleurCC]{}{\ifboolKV[CalculsCroises]{Inverse}{}{\num{\fpeval{\PfCListeCCOp[1]\PfCListeCCOp[2]\PfCListeCCOp[3]\PfCListeCCOp[4]\PfCListeCCOp[5]}}}}\\
+ \rule{0pt}{\PfCCalculsCroises}\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCOp[1]}}{\ifboolKV[CalculsCroises]{Aide}{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCListeCCAidelen}}\do{%
+ \xintifboolexpr{\PfCListeCCOp[1]==\PfCListeCCAide[##1]}{\num{\PfCListeCCOp[1]}}{}%
+ }%
+ }{}%
+}}&\StrCompare{\PfCListeCCOp[2]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[2]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCOp[3]}}{\ifboolKV[CalculsCroises]{Aide}{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCListeCCAidelen}}\do{%
+ \xintifboolexpr{\PfCListeCCOp[3]==\PfCListeCCAide[##1]}{\num{\PfCListeCCOp[3]}}{}%
+ }%
+ }{}%
+}}&\StrCompare{\PfCListeCCOp[4]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[4]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCOp[5]}}{\ifboolKV[CalculsCroises]{Aide}{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCListeCCAidelen}}\do{%
+ \xintifboolexpr{\PfCListeCCOp[5]==\PfCListeCCAide[##1]}{\num{\PfCListeCCOp[5]}}{}%
+ }%
+ }{}%
+}}&\Block[borders={bottom,right,top},fill=PfCCouleurCC]{}{\ifboolKV[CalculsCroises]{Inverse}{}{\num{\fpeval{\PfCListeCCOp[1]\PfCListeCCOp[2]\PfCListeCCOp[3]\PfCListeCCOp[4]\PfCListeCCOp[5]}}}}\\
\rule{0pt}{\PfCCalculsCroises}\StrCompare{\PfCListeCCOp[6]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[6]$}}&\Block[fill=black]{}{~}&\StrCompare{\PfCListeCCOp[7]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[7]$}}&\Block[fill=black]{}{~}&\StrCompare{\PfCListeCCOp[8]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[8]$}}\\
- \rule{0pt}{\PfCCalculsCroises}\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCOp[9]}}{~}}&\StrCompare{\PfCListeCCOp[10]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[10]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCOp[11]}}{~}}&\StrCompare{\PfCListeCCOp[12]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[12]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCOp[13]}}{~}}&\Block[borders={bottom,right,top},fill=PfCCouleurCC]{}{\ifboolKV[CalculsCroises]{Inverse}{}{\num{\fpeval{\PfCListeCCOp[9]\PfCListeCCOp[10]\PfCListeCCOp[11]\PfCListeCCOp[12]\PfCListeCCOp[13]}}}}\\
+ \rule{0pt}{\PfCCalculsCroises}\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCOp[9]}}{\ifboolKV[CalculsCroises]{Aide}{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCListeCCAidelen}}\do{%
+ \xintifboolexpr{\PfCListeCCOp[9]==\PfCListeCCAide[##1]}{\num{\PfCListeCCOp[9]}}{}%
+ }%
+ }{}%
+}}&\StrCompare{\PfCListeCCOp[10]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[10]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCOp[11]}}{\ifboolKV[CalculsCroises]{Aide}{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCListeCCAidelen}}\do{%
+ \xintifboolexpr{\PfCListeCCOp[11]==\PfCListeCCAide[##1]}{\num{\PfCListeCCOp[11]}}{}%
+ }%
+ }{}%
+}}&\StrCompare{\PfCListeCCOp[12]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[12]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCOp[13]}}{\ifboolKV[CalculsCroises]{Aide}{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCListeCCAidelen}}\do{%
+ \xintifboolexpr{\PfCListeCCOp[13]==\PfCListeCCAide[##1]}{\num{\PfCListeCCOp[13]}}{}%
+ }%
+ }{}%
+}}&\Block[borders={bottom,right,top},fill=PfCCouleurCC]{}{\ifboolKV[CalculsCroises]{Inverse}{}{\num{\fpeval{\PfCListeCCOp[9]\PfCListeCCOp[10]\PfCListeCCOp[11]\PfCListeCCOp[12]\PfCListeCCOp[13]}}}}\\
\rule{0pt}{\PfCCalculsCroises}\StrCompare{\PfCListeCCOp[14]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[14]$}}&\Block[fill=black]{}{~}&\StrCompare{\PfCListeCCOp[15]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[15]$}}&\Block[fill=black]{}{~}&\StrCompare{\PfCListeCCOp[16]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[16]$}}\\
- \rule{0pt}{\PfCCalculsCroises}\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCOp[17]}}{~}}&\StrCompare{\PfCListeCCOp[18]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[18]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCOp[19]}}{~}}&\StrCompare{\PfCListeCCOp[20]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[20]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCOp[21]}}{~}}&\Block[borders={bottom,right,top},fill=PfCCouleurCC]{}{\ifboolKV[CalculsCroises]{Inverse}{}{\num{\fpeval{\PfCListeCCOp[17]\PfCListeCCOp[18]\PfCListeCCOp[19]\PfCListeCCOp[20]\PfCListeCCOp[21]}}}}\\
+ \rule{0pt}{\PfCCalculsCroises}\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCOp[17]}}{\ifboolKV[CalculsCroises]{Aide}{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCListeCCAidelen}}\do{%
+ \xintifboolexpr{\PfCListeCCOp[17]==\PfCListeCCAide[##1]}{\num{\PfCListeCCOp[17]}}{}%
+ }%
+ }{}%
+}}&\StrCompare{\PfCListeCCOp[18]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[18]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCOp[19]}}{\ifboolKV[CalculsCroises]{Aide}{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCListeCCAidelen}}\do{%
+ \xintifboolexpr{\PfCListeCCOp[19]==\PfCListeCCAide[##1]}{\num{\PfCListeCCOp[19]}}{}%
+ }%
+ }{}%
+}}&\StrCompare{\PfCListeCCOp[20]}{*}[\PfCTestEtoile]\Block{}{\xintifboolexpr{\PfCTestEtoile==0}{$\times$}{$\PfCListeCCOp[20]$}}&\Block{}{\ifboolKV[CalculsCroises]{Solution}{\num{\PfCListeCCOp[21]}}{\ifboolKV[CalculsCroises]{Aide}{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCListeCCAidelen}}\do{%
+ \xintifboolexpr{\PfCListeCCOp[21]==\PfCListeCCAide[##1]}{\num{\PfCListeCCOp[21]}}{}%
+ }%
+ }{}%
+}}&\Block[borders={bottom,right,top},fill=PfCCouleurCC]{}{\ifboolKV[CalculsCroises]{Inverse}{}{\num{\fpeval{\PfCListeCCOp[17]\PfCListeCCOp[18]\PfCListeCCOp[19]\PfCListeCCOp[20]\PfCListeCCOp[21]}}}}\\
\rule{0pt}{\PfCCalculsCroises}\Block[borders={left,bottom,right},fill=PfCCouleurCC]{}{\ifboolKV[CalculsCroises]{Inverse}{}{\num{\fpeval{\PfCListeCCOp[1]\PfCListeCCOp[6]\PfCListeCCOp[9]\PfCListeCCOp[14]\PfCListeCCOp[17]}}}}&&\Block[borders={left,bottom,right},fill=PfCCouleurCC]{}{\ifboolKV[CalculsCroises]{Inverse}{}{\num{\fpeval{\PfCListeCCOp[3]\PfCListeCCOp[7]\PfCListeCCOp[11]\PfCListeCCOp[15]\PfCListeCCOp[19]}}}}&&\Block[borders={left,bottom,right},fill=PfCCouleurCC]{}{\ifboolKV[CalculsCroises]{Inverse}{}{\num{\fpeval{\PfCListeCCOp[5]\PfCListeCCOp[8]\PfCListeCCOp[13]\PfCListeCCOp[16]\PfCListeCCOp[21]}}}}\\
\CodeAfter
\tikz\draw (1-|1) rectangle (6-|6);
@@ -732,14 +1796,19 @@
%%%
% Kakuro
%%%
-\setKVdefault[Kakuro]{CouleurCase=LightGray,Taille=5,Solution=false,Largeur=2em,Aide=false,CouleurSolution=Black}
+\setKVdefault[Kakuro]{CouleurCase=LightGray,TLargeur=5,THauteur=5,Solution=false,Largeur=2em,Aide=false,CouleurSolution=Black,Tailles=false}%,Taille=5
\defKV[Kakuro]{ListeNombres=\setKV[Kakuro]{Aide}}%
+\defKV[Kakuro]{Taille=\setKV[Kakuro]{Tailles}}%
\newlength\PfCKakuro%
\NewDocumentCommand\Kakuro{o m}{%
\useKVdefault[Kakuro]%
\setKV[Kakuro]{#1}%
+ \ifboolKV[Kakuro]{Tailles}{%
+ \setKV[Kakuro]{THauteur=\useKV[Kakuro]{Taille}}%
+ \setKV[Kakuro]{TLargeur=\useKV[Kakuro]{Taille}}%
+ }{}%
\setlength{\PfCKakuro}{\useKV[Kakuro]{Largeur}+\tabcolsep}%
\setsepchar[*]{,*/}%
\readlist*\ListeCasesKK{#2}%
@@ -748,21 +1817,21 @@
\readlist*\ListeKakuroNombres{\ListeAvantNombres}%
\savecomparemode%
\comparestrict%
- \begin{NiceTabular}{*{\useKV[Kakuro]{Taille}}{m{\useKV[Kakuro]{Largeur}}}}[hvlines]
- \xintFor* ##1 in {\xintSeq{0}{\fpeval{\useKV[Kakuro]{Taille}-1}}}\do{%
- \xintFor* ##2 in {\xintSeq{1}{\useKV[Kakuro]{Taille}}}\do{%
+ \begin{NiceTabular}{*{\useKV[Kakuro]{TLargeur}}{m{\useKV[Kakuro]{Largeur}}}}[hvlines]
+ \xintFor* ##1 in {\xintSeq{0}{\fpeval{\useKV[Kakuro]{THauteur}-1}}}\do{%
+ \xintFor* ##2 in {\xintSeq{1}{\useKV[Kakuro]{TLargeur}}}\do{%
\rule{0pt}{\PfCKakuro}%
- \StrCompare{\ListeCasesKK[\fpeval{\useKV[Kakuro]{Taille}*##1+##2},1]}{*}[\PfCTestBlack]
+ \StrCompare{\ListeCasesKK[\fpeval{\useKV[Kakuro]{TLargeur}*##1+##2},1]}{*}[\PfCTestBlack]
\xintifboolexpr{\PfCTestBlack==0}{%
\Block[fill=black]{1-1}{}%
}{%
- \xintifboolexpr{\listlen\ListeCasesKK[\fpeval{\useKV[Kakuro]{Taille}*##1+##2}]==2}{
- \Block[fill=\useKV[Kakuro]{CouleurCase}]{1-1}{\diagbox{\ListeCasesKK[\fpeval{\useKV[Kakuro]{Taille}*##1+##2},1]}{\ListeCasesKK[\fpeval{\useKV[Kakuro]{Taille}*##1+##2},2]}}%
+ \xintifboolexpr{\listlen\ListeCasesKK[\fpeval{\useKV[Kakuro]{TLargeur}*##1+##2}]==2}{
+ \Block[fill=\useKV[Kakuro]{CouleurCase}]{1-1}{\diagbox{\ListeCasesKK[\fpeval{\useKV[Kakuro]{TLargeur}*##1+##2},1]}{\ListeCasesKK[\fpeval{\useKV[Kakuro]{TLargeur}*##1+##2},2]}}%
}{%
- \Block{1-1}{\ifboolKV[Kakuro]{Solution}{\Large\color{\useKV[Kakuro]{CouleurSolution}}\num{\ListeCasesKK[\fpeval{\useKV[Kakuro]{Taille}*##1+##2},1]}}{%
+ \Block{1-1}{\ifboolKV[Kakuro]{Solution}{\Large\color{\useKV[Kakuro]{CouleurSolution}}\num{\ListeCasesKK[\fpeval{\useKV[Kakuro]{TLargeur}*##1+##2},1]}}{%
\ifboolKV[Kakuro]{Aide}{%
\xintFor* ##3 in{\xintSeq{1}{\ListeKakuroNombreslen}}\do{%
- \Block{1-1}{\xintifboolexpr{\ListeCasesKK[\fpeval{\useKV[Kakuro]{Taille}*##1+##2},1]==\ListeKakuroNombres[##3]}{\Large\color{\useKV[Kakuro]{CouleurSolution}}\num{\ListeCasesKK[\fpeval{\useKV[Kakuro]{Taille}*##1+##2},1]}}{}}%
+ \Block{1-1}{\xintifboolexpr{\ListeCasesKK[\fpeval{\useKV[Kakuro]{TLargeur}*##1+##2},1]==\ListeKakuroNombres[##3]}{\Large\color{\useKV[Kakuro]{CouleurSolution}}\num{\ListeCasesKK[\fpeval{\useKV[Kakuro]{TLargeur}*##1+##2},1]}}{}}%
}%
}{}%
}%
@@ -5381,18 +6450,458 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,
%%%
% Labyrinthe Nombre
%%%
-\setKVdefault[ClesLabyNb]{Multiple=5,XDepart=0,YDepart=0,Longueur=7,Largeur=4,XArrivee=6,YArrivee=3,Solution=false,Echelle=1,Angle=0,Couleur=red,Murs=false,Nom=Ex1,CouleurChemin=LightSteelBlue}
+\setKVdefault[ClesLabyNb]{Multiple=5,XDepart=0,YDepart=0,Longueur=7,Largeur=4,XArrivee=6,YArrivee=3,Solution=false,Echelle=1,Angle=0,Couleur=red,Murs=false,Nom=Ex1,CouleurChemin=Brown,DoubleOperation=false,Chemin=false,EntreeSortie=false,Entree="Nord",Sortie="Sud",SortieUnique=true}
\newcommand\LabyNombre[1][]{%
\useKVdefault[ClesLabyNb]%
\setKV[ClesLabyNb]{#1}%
- \ifboolKV[ClesLabyNb]{Solution}{%
- \TraceSolution{\useKV[ClesLabyNb]{Multiple}}{\useKV[ClesLabyNb]{Longueur}}{\useKV[ClesLabyNb]{Largeur}}{(\useKV[ClesLabyNb]{YDepart},\useKV[ClesLabyNb]{XDepart})}{(\useKV[ClesLabyNb]{YArrivee},\useKV[ClesLabyNb]{XArrivee})}{\useKV[ClesLabyNb]{Solution}}
+ \ifboolKV[ClesLabyNb]{EntreeSortie}{%
+ \ifboolKV[ClesLabyNb]{Solution}{%
+ \TraceLabyMathAleaSolution{\useKV[ClesLabyNb]{Multiple}}{\useKV[ClesLabyNb]{Longueur}}{\useKV[ClesLabyNb]{Largeur}}{(\useKV[ClesLabyNb]{YDepart},\useKV[ClesLabyNb]{XDepart})}{(\useKV[ClesLabyNb]{YArrivee},\useKV[ClesLabyNb]{XArrivee})}{\useKV[ClesLabyNb]{Solution}}%
+ }{%
+ \TraceLabyMathAlea{\useKV[ClesLabyNb]{Multiple}}{\useKV[ClesLabyNb]{Longueur}}{\useKV[ClesLabyNb]{Largeur}}{(\useKV[ClesLabyNb]{YDepart},\useKV[ClesLabyNb]{XDepart})}{(\useKV[ClesLabyNb]{YArrivee},\useKV[ClesLabyNb]{XArrivee})}{\useKV[ClesLabyNb]{Solution}}%
+ }%
}{%
- \TraceLabyNombre{\useKV[ClesLabyNb]{Multiple}}{\useKV[ClesLabyNb]{Longueur}}{\useKV[ClesLabyNb]{Largeur}}{(\useKV[ClesLabyNb]{YDepart},\useKV[ClesLabyNb]{XDepart})}{(\useKV[ClesLabyNb]{YArrivee},\useKV[ClesLabyNb]{XArrivee})}{\useKV[ClesLabyNb]{Solution}}
+ \ifboolKV[ClesLabyNb]{DoubleOperation}{%
+ \ifboolKV[ClesLabyNb]{Solution}{%
+ \TraceDoubleSolution{\useKV[ClesLabyNb]{Multiple}}{\useKV[ClesLabyNb]{Longueur}}{\useKV[ClesLabyNb]{Largeur}}{(\useKV[ClesLabyNb]{YDepart},\useKV[ClesLabyNb]{XDepart})}{(\useKV[ClesLabyNb]{YArrivee},\useKV[ClesLabyNb]{XArrivee})}{\useKV[ClesLabyNb]{Solution}}%
+ }{%
+ \TraceLabyNombreDouble{\useKV[ClesLabyNb]{Multiple}}{\useKV[ClesLabyNb]{Longueur}}{\useKV[ClesLabyNb]{Largeur}}{(\useKV[ClesLabyNb]{YDepart},\useKV[ClesLabyNb]{XDepart})}{(\useKV[ClesLabyNb]{YArrivee},\useKV[ClesLabyNb]{XArrivee})}{\useKV[ClesLabyNb]{Solution}}%
+ }%
+ }{%
+ \ifboolKV[ClesLabyNb]{Solution}{%
+ \TraceSolution{\useKV[ClesLabyNb]{Multiple}}{\useKV[ClesLabyNb]{Longueur}}{\useKV[ClesLabyNb]{Largeur}}{(\useKV[ClesLabyNb]{YDepart},\useKV[ClesLabyNb]{XDepart})}{(\useKV[ClesLabyNb]{YArrivee},\useKV[ClesLabyNb]{XArrivee})}{\useKV[ClesLabyNb]{Solution}}%
+ }{%
+ \TraceLabyNombre{\useKV[ClesLabyNb]{Multiple}}{\useKV[ClesLabyNb]{Longueur}}{\useKV[ClesLabyNb]{Largeur}}{(\useKV[ClesLabyNb]{YDepart},\useKV[ClesLabyNb]{XDepart})}{(\useKV[ClesLabyNb]{YArrivee},\useKV[ClesLabyNb]{XArrivee})}{\useKV[ClesLabyNb]{Solution}}%
+ }%
+ }%
}%
+}%
+
+\newcommand\TraceLabyMathAlea[6]{%
+ \mplibforcehmode%
+ \xdef\PfCNomLabyrinthe{\useKV[ClesLabyNb]{Nom}}%
+ \begin{mplibcode}[\PfCNomLabyrinthe]
+ input PfCLabyNombre;
+
+ boolean Murs;
+ Murs=\useKV[ClesLabyNb]{Murs};
+
+ string Entree,Sortie;
+ Entree=\useKV[ClesLabyNb]{Entree};
+ Sortie=\useKV[ClesLabyNb]{Sortie};
+ boolean SortieUnique;
+ SortieUnique:=\useKV[ClesLabyNb]{SortieUnique};
+ picture Square;
+ Square=image(
+ path Test;
+ Test=unitsquare scaled 10mm;
+ trace subpath(0.85,1.15) of Test;
+ trace subpath(1.85,2.15) of Test;
+ trace subpath(2.85,3.15) of Test;
+ trace subpath(3.85,4.15) of Test;
+ );
+
+ numeric Multiple;
+ Multiple=#1;
+ % Initialisation du labyrinthe
+ InitialisationLabyrinthe(#2,#3);
+ % On initialise les paramètres du parcours
+ numeric choixligneD,choixligneA,choixcolonneD,choixcolonneA;
+ choixligneD=xpart(#4);
+ choixcolonneD=ypart(#4);
+ choixligneA=xpart(#5);
+ choixcolonneA=ypart(#5);%
+ pair Depart;
+ Depart=N[choixligneD][choixcolonneD];
+ pair Arrivee;
+ Arrivee=N[choixligneA][choixcolonneA];
+ pair Mobile;
+ Mobile=Depart;
+ %
+ RAZPileChemin;
+
+ if \useKV[ClesLabyNb]{SortieUnique}:
+ if (Sortie="Est") or (Sortie="Ouest"):
+ for k=0 upto LargeurLaby-1:
+ if k<>choixligneA:
+ CaseExploree[k][choixcolonneA]:=true;
+ fi;
+ endfor;
+ elseif (Sortie="Nord") or (Sortie="Sud"):
+ for k=0 upto LongueurLaby-1:
+ if k<>choixcolonneA:
+ CaseExploree[choixligneA][k]:=true;
+ fi;
+ endfor;
+ fi;
+ fi;
+ % Exploration du labyrinthe
+ if Entree="Nord":
+ CaseExploree[choixligneD-1][choixcolonneD]:=true;
+ elseif Entree="Sud":
+ CaseExploree[choixligneD+1][choixcolonneD]:=true;
+ elseif Entree="Est":
+ CaseExploree[choixligneD][choixcolonneD+1]:=true;
+ elseif Entree="Ouest":
+ CaseExploree[choixligneD][choixcolonneD-1]:=true;
+ fi;
+ %
+ PushChemin((choixligneD,choixcolonneD));
+ CaseExploree[choixligneD][choixcolonneD]:=true;
+ VoisinDispo(choixligneD,choixcolonneD);
+ forever: exitif Mobile=Arrivee;%nb=0;
+ nb:=ceiling(uniformdeviate(nbvoisin));
+ if nb>0:
+ for k=1 upto nbvoisin:
+ CaseExploree[xpart(PileVoisin[k])][ypart(PileVoisin[k])]:=true;
+ endfor;
+ PushChemin((xpart(PileVoisin[nb]),ypart(PileVoisin[nb])));
+ Mobile:=N[xpart(PileChemin[indiceChemin])][ypart(PileChemin[indiceChemin])];
+ VoisinDispo(xpart(PileChemin[indiceChemin]),ypart(PileChemin[indiceChemin]));
+ else:
+ PopCheminMathAlea;
+ fi;
+ endfor;
+ % Affichagefinal
+ % on sauvegarde les nombres aléatoires
+ numeric NbAffiche[];
+ numeric NbSol[];
+ % on écrit des nombres au hasard, mais sans être multiple du nombre choisi
+ numeric nbaffiche;
+ nbaffiche=0;
+ for k=0 upto LargeurLaby-1:
+ for l=0 upto LongueurLaby-1:
+ nbaffiche:=nbaffiche+1;
+ NbAffiche[nbaffiche]:=(50+ceiling(uniformdeviate(100)))*Multiple+ceiling(uniformdeviate(Multiple-1));
+ endfor;
+ endfor;
+ % On crée des multiples du nombre choisi
+ for k=1 upto indiceChemin:
+ NbSol[k]=(50+ceiling(uniformdeviate(100)))*Multiple;
+ endfor;
+ % On affiche
+ picture Corps;
+ Corps=image(
+ nbaffiche:=0;
+ for k=0 upto LargeurLaby-1:
+ for l=0 upto LongueurLaby-1:
+ nbaffiche:=nbaffiche+1;
+ label(TEX("\num{"&decimal(NbAffiche[nbaffiche])&"}"),M[k][l]);
+ endfor;
+ endfor;
+ for k=1 upto indiceChemin:
+ remplis ((unitsquare scaled 10mm) shifted N[xpart(PileChemin[k])][ypart(PileChemin[k])]) withcolor white;
+ label(TEX("\num{"&decimal(NbSol[k])&"}"),M[xpart(PileChemin[k])][ypart(PileChemin[k])]);
+ endfor;
+ % trace TraceLabyrinthe;
+ for k=0 upto LargeurLaby-1:
+ for l=0 upto LongueurLaby-1:
+ trace Square shifted N[k][l];
+ endfor;
+ endfor;
+ trace u*(0,0)--u*(LongueurLaby,0)--u*(LongueurLaby,-LargeurLaby)--u*(0,-LargeurLaby)--cycle;
+ % On dessine l'entrée.
+ if Entree="Nord":
+ N[-1][-1]:=Depart+(0,10mm);
+ fill ((unitsquare scaled 10mm) shifted N[-1][-1]) withcolor white;
+ draw (subpath(1,4) of unitsquare scaled 10mm) shifted N[-1][-1];
+ undraw (subpath(0.18,0.82) of unitsquare scaled 10mm) shifted N[-1][-1] withpen pencircle scaled 1.25;
+ label(btex \footnotesize Départ etex,(center Square) shifted N[-1][-1]);
+ elseif Entree="Ouest":
+ N[-1][-1]:=Depart+(-10mm,0);
+ fill ((unitsquare scaled 10mm) shifted N[-1][-1]) withcolor white;
+ draw (subpath(2,5) of unitsquare scaled 10mm) shifted N[-1][-1];
+ undraw (subpath(1.15,1.85) of unitsquare scaled 10mm) shifted N[-1][-1] withpen pencircle scaled 1.25;
+ label(btex \footnotesize Départ etex,(center Square) shifted N[-1][-1]);
+ elseif Entree="Sud":
+ N[-1][-1]:=Depart+(0,-10mm);
+ fill ((unitsquare scaled 10mm) shifted N[-1][-1]) withcolor white;
+ draw (subpath(3,6) of unitsquare scaled 10mm) shifted N[-1][-1];
+ undraw (subpath(2.15,2.85) of unitsquare scaled 10mm) shifted N[-1][-1] withpen pencircle scaled 1.25;
+ label(btex \footnotesize Départ etex,(center Square) shifted N[-1][-1]);
+ elseif Entree="Est":
+ N[-1][-1]:=Depart+(10mm,0);
+ fill ((unitsquare scaled 10mm) shifted N[-1][-1]) withcolor white;
+ draw (subpath(0,3) of unitsquare scaled 10mm) shifted N[-1][-1];
+ undraw (subpath(3.18,3.82) of unitsquare scaled 10mm) shifted N[-1][-1] withpen pencircle scaled 1.25;
+ label(btex \footnotesize Départ etex,(center Square) shifted N[-1][-1]);
+ fi;
+ % On dessine les sorties
+ if Sortie="Nord":
+ N[-2][-2]=Arrivee+(5mm,20mm);
+ for k=0 upto LongueurLaby-1:
+ draw ((point(0.15) of unitsquare scaled 10mm)--0.5[(point(0.15) of unitsquare scaled 10mm),(point(2.85) of unitsquare scaled 10mm)]) shifted (N[0][k]+(0,10mm));
+ draw ((point(0.85) of unitsquare scaled 10mm)--0.5[(point(0.85) of unitsquare scaled 10mm),(point(2.15) of unitsquare scaled 10mm)]) shifted (N[0][k]+(0,10mm));
+ undraw (subpath(0.18,0.82) of unitsquare scaled 10mm) shifted (N[0][k]+(0,10mm)) withpen pencircle scaled 1.25;
+ label(TEX("\footnotesize S"&decimal(k)),center (Square) shifted (N[0][k]+(0,10mm)));
+ endfor;
+ elseif Sortie="Ouest":
+ N[-2][-2]=Arrivee+(-10mm,5mm);
+ for k=0 upto LargeurLaby-1:
+ draw ((point(1.15) of unitsquare scaled 10mm)--0.5[(point(1.15) of unitsquare scaled 10mm),(point(3.85) of unitsquare scaled 10mm)]) shifted (N[k][0]+(-10mm,0));
+ draw ((point(1.85) of unitsquare scaled 10mm)--0.5[(point(1.85) of unitsquare scaled 10mm),(point(3.15) of unitsquare scaled 10mm)]) shifted (N[k][0]+(-10mm,0));
+ undraw (subpath(1.18,1.82) of unitsquare scaled 10mm) shifted (N[k][0]+(-10mm,0)) withpen pencircle scaled 1.25;
+ label(TEX("\footnotesize S"&decimal(k)),center (Square) shifted (N[k][0]+(-10mm,0)));
+ endfor;
+ elseif Sortie="Sud":
+ N[-2][-2]=Arrivee+(5mm,-10mm);
+ for k=0 upto LongueurLaby-1:
+ draw ((point(2.85) of unitsquare scaled 10mm)--0.5[(point(0.15) of unitsquare scaled 10mm),(point(2.85) of unitsquare scaled 10mm)]) shifted (N[LargeurLaby-1][k]+(0,-10mm));
+ draw ((point(2.15) of unitsquare scaled 10mm)--0.5[(point(0.85) of unitsquare scaled 10mm),(point(2.15) of unitsquare scaled 10mm)]) shifted (N[LargeurLaby-1][k]+(0,-10mm));
+ undraw (subpath(2.18,2.82) of unitsquare scaled 10mm) shifted (N[LargeurLaby-1][k]+(0,-10mm)) withpen pencircle scaled 1.25;
+ label(TEX("\footnotesize S"&decimal(k)),center (Square) shifted (N[LargeurLaby-1][k]+(0,-10mm)));
+ endfor;
+ elseif Sortie="Est":
+ N[-2][-2]=Arrivee+(20mm,5mm);
+ for k=0 upto LargeurLaby-1:
+ draw ((point(3.15) of unitsquare scaled 10mm)--0.5[(point(3.15) of unitsquare scaled 10mm),(point(1.85) of unitsquare scaled 10mm)]) shifted (N[k][LongueurLaby-1]+(10mm,0));
+ draw ((point(3.85) of unitsquare scaled 10mm)--0.5[(point(3.85) of unitsquare scaled 10mm),(point(1.15) of unitsquare scaled 10mm)]) shifted (N[k][LongueurLaby-1]+(10mm,0));
+ undraw (subpath(3.18,3.8) of unitsquare scaled 10mm) shifted (N[k][LongueurLaby-1]+(10mm,0)) withpen pencircle scaled 1.25;
+ label(TEX("\footnotesize S"&decimal(k)),center (Square) shifted (N[k][LongueurLaby-1]+(10mm,0)));
+ endfor;
+ fi;
+ );
+ Corps:=(Corps scaled \useKV[ClesLabyNb]{Echelle}) rotated \useKV[ClesLabyNb]{Angle};
+ trace Corps;
+ \end{mplibcode}
}
+\newcommand\TraceLabyMathAleaSolution[6]{%
+ \mplibforcehmode%
+ \xdef\PfCNomLabyrinthe{\useKV[ClesLabyNb]{Nom}}%
+ \begin{mplibcode}[\PfCNomLabyrinthe]%
+ color CouleurChemin;
+ CouleurChemin:=\useKV[ClesLabyNb]{CouleurChemin};
+ picture CorpsSolution;
+ CorpsSolution=image(
+ nbaffiche:=0;
+ for k=0 upto LargeurLaby-1:
+ for l=0 upto LongueurLaby-1:
+ nbaffiche:=nbaffiche+1;
+ label(TEX("\num{"&decimal(NbAffiche[nbaffiche])&"}"),M[k][l]);
+ endfor;
+ endfor;
+ for k=1 upto indiceChemin:
+ remplis ((unitsquare scaled 10mm) shifted N[xpart(PileChemin[k])][ypart(PileChemin[k])]) withcolor white;
+ label(TEX("\num{"&decimal(NbSol[k])&"}"),M[xpart(PileChemin[k])][ypart(PileChemin[k])]);
+ endfor;
+ % trace TraceLabyrinthe;
+ for k=0 upto LargeurLaby-1:
+ for l=0 upto LongueurLaby-1:
+ trace Square shifted N[k][l];
+ endfor;
+ endfor;
+ trace u*(0,0)--u*(LongueurLaby,0)--u*(LongueurLaby,-LargeurLaby)--u*(0,-LargeurLaby)--cycle;
+ % On dessine l'entrée.
+ if Entree="Nord":
+ N[-1][-1]:=Depart+(0,10mm);
+ fill ((unitsquare scaled 10mm) shifted N[-1][-1]) withcolor white;
+ draw (subpath(1,4) of unitsquare scaled 10mm) shifted N[-1][-1];
+ undraw (subpath(0.18,0.82) of unitsquare scaled 10mm) shifted N[-1][-1] withpen pencircle scaled 1.25;
+ label(btex \footnotesize Départ etex,(center Square) shifted N[-1][-1]);
+ elseif Entree="Ouest":
+ N[-1][-1]:=Depart+(-10mm,0);
+ fill ((unitsquare scaled 10mm) shifted N[-1][-1]) withcolor white;
+ draw (subpath(2,5) of unitsquare scaled 10mm) shifted N[-1][-1];
+ undraw (subpath(1.15,1.85) of unitsquare scaled 10mm) shifted N[-1][-1] withpen pencircle scaled 1.25;
+ label(btex \footnotesize Départ etex,(center Square) shifted N[-1][-1]);
+ elseif Entree="Sud":
+ N[-1][-1]:=Depart+(0,-10mm);
+ fill ((unitsquare scaled 10mm) shifted N[-1][-1]) withcolor white;
+ draw (subpath(3,6) of unitsquare scaled 10mm) shifted N[-1][-1];
+ undraw (subpath(2.15,2.85) of unitsquare scaled 10mm) shifted N[-1][-1] withpen pencircle scaled 1.25;
+ label(btex \footnotesize Départ etex,(center Square) shifted N[-1][-1]);
+ elseif Entree="Est":
+ N[-1][-1]:=Depart+(10mm,0);
+ fill ((unitsquare scaled 10mm) shifted N[-1][-1]) withcolor white;
+ draw (subpath(0,3) of unitsquare scaled 10mm) shifted N[-1][-1];
+ undraw (subpath(3.18,3.82) of unitsquare scaled 10mm) shifted N[-1][-1] withpen pencircle scaled 1.25;
+ label(btex \footnotesize Départ etex,(center Square) shifted N[-1][-1]);
+ fi;
+ % On dessine les sorties
+ if Sortie="Nord":
+ N[-2][-2]=Arrivee+(5mm,20mm);
+ for k=0 upto LongueurLaby-1:
+ draw ((point(0.15) of unitsquare scaled 10mm)--0.5[(point(0.15) of unitsquare scaled 10mm),(point(2.85) of unitsquare scaled 10mm)]) shifted (N[0][k]+(0,10mm));
+ draw ((point(0.85) of unitsquare scaled 10mm)--0.5[(point(0.85) of unitsquare scaled 10mm),(point(2.15) of unitsquare scaled 10mm)]) shifted (N[0][k]+(0,10mm));
+ undraw (subpath(0.18,0.82) of unitsquare scaled 10mm) shifted (N[0][k]+(0,10mm)) withpen pencircle scaled 1.25;
+ label(TEX("\footnotesize S"&decimal(k)),center (Square) shifted (N[0][k]+(0,10mm)));
+ endfor;
+ elseif Sortie="Ouest":
+ N[-2][-2]=Arrivee+(-10mm,5mm);
+ for k=0 upto LargeurLaby-1:
+ draw ((point(1.15) of unitsquare scaled 10mm)--0.5[(point(1.15) of unitsquare scaled 10mm),(point(3.85) of unitsquare scaled 10mm)]) shifted (N[k][0]+(-10mm,0));
+ draw ((point(1.85) of unitsquare scaled 10mm)--0.5[(point(1.85) of unitsquare scaled 10mm),(point(3.15) of unitsquare scaled 10mm)]) shifted (N[k][0]+(-10mm,0));
+ undraw (subpath(1.18,1.82) of unitsquare scaled 10mm) shifted (N[k][0]+(-10mm,0)) withpen pencircle scaled 1.25;
+ label(TEX("\footnotesize S"&decimal(k)),center (Square) shifted (N[k][0]+(-10mm,0)));
+ endfor;
+ elseif Sortie="Sud":
+ N[-2][-2]=Arrivee+(5mm,-10mm);
+ for k=0 upto LongueurLaby-1:
+ % draw (Square) shifted (N[LargeurLaby-1][k]+(0,-10mm)) withcolor red;
+ draw ((point(2.85) of unitsquare scaled 10mm)--0.5[(point(0.15) of unitsquare scaled 10mm),(point(2.85) of unitsquare scaled 10mm)]) shifted (N[LargeurLaby-1][k]+(0,-10mm));
+ draw ((point(2.15) of unitsquare scaled 10mm)--0.5[(point(0.85) of unitsquare scaled 10mm),(point(2.15) of unitsquare scaled 10mm)]) shifted (N[LargeurLaby-1][k]+(0,-10mm));
+ undraw (subpath(2.18,2.82) of unitsquare scaled 10mm) shifted (N[LargeurLaby-1][k]+(0,-10mm)) withpen pencircle scaled 1.25;
+ label(TEX("\footnotesize S"&decimal(k)),center (Square) shifted (N[LargeurLaby-1][k]+(0,-10mm)));
+ endfor;
+ elseif Sortie="Est":
+ N[-2][-2]=Arrivee+(20mm,5mm);
+ for k=0 upto LargeurLaby-1:
+ draw ((point(3.15) of unitsquare scaled 10mm)--0.5[(point(3.15) of unitsquare scaled 10mm),(point(1.85) of unitsquare scaled 10mm)]) shifted (N[k][LongueurLaby-1]+(10mm,0));
+ draw ((point(3.85) of unitsquare scaled 10mm)--0.5[(point(3.85) of unitsquare scaled 10mm),(point(1.15) of unitsquare scaled 10mm)]) shifted (N[k][LongueurLaby-1]+(10mm,0));
+ undraw (subpath(3.18,3.8) of unitsquare scaled 10mm) shifted (N[k][LongueurLaby-1]+(10mm,0)) withpen pencircle scaled 1.25;
+ label(TEX("\footnotesize S"&decimal(k)),center (Square) shifted (N[k][LongueurLaby-1]+(10mm,0)));
+ endfor;
+ fi;
+ path CheminSolution;
+ CheminSolution=(N[-1][-1] shifted (5mm,5mm))--((center unitsquare scaled 10mm) shifted N[choixligneD][choixcolonneD])
+ for k=2 upto indiceChemin-1:
+ -- ((center unitsquare scaled 10mm) shifted N[xpart(PileChemin[k])][ypart(PileChemin[k])])
+ endfor
+ --((center unitsquare scaled 10mm) shifted Arrivee)--N[-2][-2];
+ trace CheminSolution dashed evenly withcolor CouleurChemin;
+ );
+ CorpsSolution:=(CorpsSolution scaled \useKV[ClesLabyNb]{Echelle}) rotated \useKV[ClesLabyNb]{Angle};
+ trace CorpsSolution;
+ \end{mplibcode}%
+}%
+
+\newcommand\TraceLabyNombreDouble[6]{%
+ \mplibforcehmode%
+ \xdef\PfCNomLabyrinthe{\useKV[ClesLabyNb]{Nom}}%
+ \begin{mplibcode}[\PfCNomLabyrinthe]
+ input PfCLabyNombre;
+
+ boolean Murs;
+ Murs=\useKV[ClesLabyNb]{Murs};
+
+ numeric Multiple;
+ Multiple=#1;
+ % Initialisation du labyrinthe
+ InitialisationLabyrinthe(#2,#3);
+ % On initialise les paramètres du parcours
+ numeric choixligneD,choixligneA,choixcolonneD,choixcolonneA;
+ choixligneD=xpart(#4);
+ choixcolonneD=ypart(#4);
+ choixligneA=xpart(#5);
+ choixcolonneA=ypart(#5);%
+ pair Depart;
+ Depart=N[choixligneD][choixcolonneD];
+ pair Arrivee;
+ Arrivee=N[choixligneA][choixcolonneA];
+ pair Mobile;
+ Mobile=Depart;
+ RAZPileChemin;
+ % Exploration du labyrinthe
+ PushChemin((choixligneD,choixcolonneD));
+ CaseExploree[choixligneD][choixcolonneD]:=true;
+ VoisinDispo(choixligneD,choixcolonneD);
+ forever: exitif Mobile=Arrivee;%nb=0;
+ nb:=ceiling(uniformdeviate(nbvoisin));
+ if nb>0:
+ for k=1 upto nbvoisin:
+ CaseExploree[xpart(PileVoisin[k])][ypart(PileVoisin[k])]:=true;
+ endfor;
+ PushChemin((xpart(PileVoisin[nb]),ypart(PileVoisin[nb])));
+ Mobile:=N[xpart(PileChemin[indiceChemin])][ypart(PileChemin[indiceChemin])];
+ VoisinDispo(xpart(PileChemin[indiceChemin]),ypart(PileChemin[indiceChemin]));
+ else:
+ PopChemin;
+ fi;
+ endfor;
+ % Affichagefinal
+ % on sauvegarde les nombres aléatoires
+ numeric NbAffiche[];
+ numeric NbSol[];
+ % on écrit des nombres au hasard, mais sans être multiple du nombre choisi
+ numeric nbaffiche;
+ nbaffiche=0;
+ NbAffiche[0]=5+ceiling(uniformdeviate(7));
+ for k=0 upto LargeurLaby-1:
+ for l=0 upto LongueurLaby-1:
+ nbaffiche:=nbaffiche+1;
+ mathalea:=uniformdeviate(1);
+ if mathalea<0.95:
+ NbAffiche[nbaffiche]=NbAffiche[nbaffiche-1]+Multiple+1;
+ else:
+ NbAffiche[nbaffiche]=NbAffiche[nbaffiche-1]*(Multiple-1);
+ fi;
+ endfor;
+ endfor;
+ % On crée des multiples du nombre choisi
+ NbSol[1]=5+ceiling(uniformdeviate(7));
+ for k=2 upto indiceChemin-1:
+ mathalea:=uniformdeviate(1);
+ if mathalea<0.9:
+ NbSol[k]=NbSol[k-1]+Multiple;
+ else:
+ NbSol[k]=NbSol[k-1]*Multiple;
+ fi;
+ endfor;
+ % On affiche
+ picture Corps;
+ Corps=image(
+ nbaffiche:=0;
+ for k=0 upto LargeurLaby-1:
+ for l=0 upto LongueurLaby-1:
+ nbaffiche:=nbaffiche+1;
+ label(TEX("\num{"&decimal(NbAffiche[nbaffiche])&"}"),M[k][l]);
+ endfor;
+ endfor;
+ remplis ((unitsquare scaled 10mm) shifted N[choixligneD][choixcolonneD]) withcolor \useKV[ClesLabyNb]{Couleur};
+ remplis ((unitsquare scaled 10mm) shifted Arrivee) withcolor \useKV[ClesLabyNb]{Couleur};
+ for k=2 upto indiceChemin-1:
+ remplis ((unitsquare scaled 10mm) shifted N[xpart(PileChemin[k])][ypart(PileChemin[k])]) withcolor white;
+ label(TEX("\num{"&decimal(NbSol[k])&"}"),M[xpart(PileChemin[k])][ypart(PileChemin[k])]);
+ endfor;
+ trace TraceLabyrinthe;
+ );
+ Corps:=(Corps scaled \useKV[ClesLabyNb]{Echelle}) rotated \useKV[ClesLabyNb]{Angle};
+ trace Corps;
+ \end{mplibcode}
+}
+
+\newcommand\TraceDoubleSolution[6]{%
+ \mplibforcehmode%
+ \xdef\PfCNomLabyrinthe{\useKV[ClesLabyNb]{Nom}}%
+ \begin{mplibcode}[\PfCNomLabyrinthe]
+ picture CorpsSolution;
+ CorpsSolution=image(
+ nbaffiche:=0;
+ for k=0 upto #3-1:
+ for l=0 upto #2-1:
+ nbaffiche:=nbaffiche+1;
+ label(TEX("\num{"&decimal(NbAffiche[nbaffiche])&"}"),M[k][l]);
+ endfor;
+ endfor;
+ remplis ((unitsquare scaled 10mm) shifted N[choixligneD][choixcolonneD]) withcolor \useKV[ClesLabyNb]{Couleur};
+ remplis ((unitsquare scaled 10mm) shifted Arrivee) withcolor \useKV[ClesLabyNb]{Couleur};
+ if \useKV[ClesLabyNb]{Chemin}:
+ for k=2 upto indiceChemin-1:
+ remplis ((unitsquare scaled 10mm) shifted N[xpart(PileChemin[k])][ypart(PileChemin[k])]) withcolor white;
+ endfor;
+ trace ((center unitsquare scaled 10mm) shifted N[choixligneD][choixcolonneD])
+ for k=2 upto indiceChemin-1:
+ -- ((center unitsquare scaled 10mm) shifted N[xpart(PileChemin[k])][ypart(PileChemin[k])])
+ endfor
+ --((center unitsquare scaled 10mm) shifted Arrivee) dashed evenly withcolor Brown;
+ for k=2 upto indiceChemin-1:
+ label(TEX("\num{"&decimal(NbSol[k])&"}"),M[xpart(PileChemin[k])][ypart(PileChemin[k])]);
+ endfor;
+ else:
+ for k=2 upto indiceChemin-1:
+ remplis ((unitsquare scaled 10mm) shifted N[xpart(PileChemin[k])][ypart(PileChemin[k])]) withcolor \useKV[ClesLabyNb]{CouleurChemin};
+ label(TEX("\num{"&decimal(NbSol[k])&"}"),M[xpart(PileChemin[k])][ypart(PileChemin[k])]);
+ endfor;
+ fi;
+ trace TraceLabyrinthe;
+ );
+ CorpsSolution:=(CorpsSolution scaled \useKV[ClesLabyNb]{Echelle}) rotated \useKV[ClesLabyNb]{Angle};
+ trace CorpsSolution;
+ \end{mplibcode}
+}%
+
\newcommand\TraceLabyNombre[6]{%
\mplibforcehmode%
\xdef\PfCNomLabyrinthe{\useKV[ClesLabyNb]{Nom}}%
@@ -6504,7 +8013,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
}%
%%% Autonomie %%%
-\setKVdefault[Autonomie]{AfficheMarge=false,TitreEnigme=Enigme,TitreAtoi=\`A toi,Enigme=false,TexteCorrection=\bfseries Correction,ARemplir=false,Deux=false}%
+\setKVdefault[Autonomie]{AfficheMarge=false,TitreEnigme=Enigme,TitreAtoi=\`A toi,Enigme=false,TexteCorrection=\bfseries Correction,ARemplir=false,Deux=false,Landscape=false}%
\newcommand\Autonomie[3][]{%
\useKVdefault[Autonomie]%
@@ -6541,6 +8050,10 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\draw (E\i) to (F\i);%
}%
}%
+ \coordinate (O1) at ($(D1)!0.5!(D2)$);
+ \coordinate (O2) at ($(D3)!0.5!(D4)$);
+ \coordinate (O3) at ($(E1)!0.5!(E2)$);
+ \coordinate (O4) at ($(E3)!0.5!(E4)$);
\coordinate (Q1) at ($(F1)!0.5!(A3)$);%
\coordinate (Q2) at ($(F2)!0.5!(E1)$);%
\coordinate (Q3) at ($(F3)!0.5!(E2)$);%
@@ -6549,20 +8062,44 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\coordinate (Q6) at ($(C2)!0.5!(D1)$);%
\coordinate (Q7) at ($(C3)!0.5!(D2)$);%
\coordinate (Q8) at ($(C4)!0.5!(D3)$);%
- \draw[dashed] (A1) to (B1);%
- \draw[dashed] (A3) to (B3);%
- \ifboolKV[Autonomie]{ARemplir}{%
+ \ifboolKV[Autonomie]{Landscape}{%
+ \draw[dashed] (C1) to (F1);
+ \draw[dashed] (C3) to (F3);
+ \draw (A2) to (B2);%
+ }{%
\ifboolKV[Autonomie]{Deux}{%
- \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] (Test1) at ($(Q1)!0.5!(Q2)$) {\ListeAutoQ[1,1]};%
- \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] (Test2) at ($(Q3)!0.5!(Q4)$) {\ListeAutoQ[2,1]};%
- \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] (Test3) at ($(Q5)!0.5!(Q6)$) {\ListeAutoQ[3,1]};%
- \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] (Test4) at ($(Q7)!0.5!(Q8)$) {\ListeAutoQ[4,1]};%
+ \draw (C2) to (D2);
+ \draw (E2) to (F2);
}{%
- \foreach \i in {1,...,4}{%
- \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] (Test\i) at (Q\i) {\ListeAutoQ[\i,1]};%
+ \foreach\i in{1,...,4}{%
+ \draw (C\i) to (D\i);
+ \draw (E\i) to (F\i);
}%
- \foreach \i in {5,...,8}{%
- \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] (Test\i) at (Q\i) {\ListeAutoQ[\i,1]};%
+ }%
+ \draw[dashed] (A1) to (B1);%
+ \draw[dashed] (A3) to (B3);%
+ }%
+ %\draw[dashed] (A1) to (B1);%
+ %\draw[dashed] (A3) to (B3);%
+ \ifboolKV[Autonomie]{ARemplir}{%
+ \ifboolKV[Autonomie]{Landscape}{%
+ \node[align=justify,anchor=center,text width=0.9*0.5\textwidth] at (O1) {\ListeAutoQ[1,1]};
+ \node[align=justify,anchor=center,text width=0.9*0.5\textwidth] at (O2) {\ListeAutoQ[2,1]};
+ \node[align=justify,anchor=center,text width=0.9*0.5\textwidth] at (O3) {\ListeAutoQ[3,1]};
+ \node[align=justify,anchor=center,text width=0.9*0.5\textwidth] at (O4) {\ListeAutoQ[4,1]};
+ }{%
+ \ifboolKV[Autonomie]{Deux}{%
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] (Test1) at ($(Q1)!0.5!(Q2)$) {\ListeAutoQ[1,1]};%
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] (Test2) at ($(Q3)!0.5!(Q4)$) {\ListeAutoQ[2,1]};%
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] (Test3) at ($(Q5)!0.5!(Q6)$) {\ListeAutoQ[3,1]};%
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] (Test4) at ($(Q7)!0.5!(Q8)$) {\ListeAutoQ[4,1]};%
+ }{%
+ \foreach \i in {1,...,4}{%
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] (Test\i) at (Q\i) {\ListeAutoQ[\i,1]};%
+ }%
+ \foreach \i in {5,...,8}{%
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] (Test\i) at (Q\i) {\ListeAutoQ[\i,1]};%
+ }%
}%
}%
}{%
@@ -6639,23 +8176,51 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\coordinate (V6) at ($(T6)!0.5!(U6)$);%
\coordinate (V7) at ($(T7)!0.5!(U7)$);%
\coordinate (V8) at ($(T8)!0.5!(U8)$);%
- \draw[dashed] (A1) to (B1);%
- \draw[dashed] (A2) to (B2);%
- \draw[dashed] (A3) to (B3);%
+ \coordinate (W1) at ($(A3)!0.5!(E1)$);
+ \coordinate (W2) at ($(E1)!0.5!(E2)$);
+ \coordinate (W3) at ($(E2)!0.5!(E3)$);
+ \coordinate (W4) at ($(E3)!0.5!(E4)$);
+ \coordinate (W5) at ($(A1)!0.5!(D1)$);
+ \coordinate (W6) at ($(D1)!0.5!(D2)$);
+ \coordinate (W7) at ($(D2)!0.5!(D3)$);
+ \coordinate (W8) at ($(D3)!0.5!(D4)$);
+ \ifboolKV[Autonomie]{Landscape}{%
+ \draw[dashed] (C1) to (F1);%
+ \draw[dashed] (C3) to (F3);
+ \draw (A2) to (B2);%
+ }{%
+ \draw[dashed] (A1) to (B1);%
+ \draw[dashed] (A2) to (B2);
+ \draw[dashed] (A3) to (B3);%
+ }%
+ %\draw[dashed] (A1) to (B1);%
+ %\draw[dashed] (A2) to (B2);%
+ %\draw[dashed] (A3) to (B3);%
\ifboolKV[Autonomie]{ARemplir}{%
- \ifboolKV[Autonomie]{Deux}{%
- \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(V1)!0.5!(V2)$) {\ListeAutoEn[1,1]};%
- \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(V3)!0.5!(V4)$) {\ListeAutoEn[2,1]};%
- \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(V5)!0.5!(V6)$) {\ListeAutoEn[3,1]};%
- \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(V7)!0.5!(V8)$) {\ListeAutoEn[4,1]};%
- \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(R1)!0.5!(R2)$) {\ListeAutoQ[1,2]};%%
- \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(R3)!0.5!(R4)$) {\ListeAutoQ[2,2]};%%
- \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(R5)!0.5!(R6)$) {\ListeAutoQ[3,2]};%%
- \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(R7)!0.5!(R8)$) {\ListeAutoQ[4,2]};%%
+ \ifboolKV[Autonomie]{Landscape}{%
+ \node[align=justify,anchor=center,text width=0.9*0.5\textwidth] at (W2) {\ListeAutoEn[4,1]};
+ \node[align=justify,anchor=center,text width=0.9*0.5\textwidth] at (W4) {\ListeAutoEn[3,1]};
+ \node[align=justify,anchor=center,text width=0.9*0.5\textwidth] at (W6) {\ListeAutoEn[2,1]};
+ \node[align=justify,anchor=center,text width=0.9*0.5\textwidth] at (W8) {\ListeAutoEn[1,1]};
+ \node[align=justify,anchor=center,text width=0.9*0.5\textwidth] at (W1) {\ListeAutoQ[4,2]};
+ \node[align=justify,anchor=center,text width=0.9*0.5\textwidth] at (W3) {\ListeAutoQ[3,2]};
+ \node[align=justify,anchor=center,text width=0.9*0.5\textwidth] at (W5) {\ListeAutoQ[2,2]};
+ \node[align=justify,anchor=center,text width=0.9*0.5\textwidth] at (W7) {\ListeAutoQ[1,2]};
}{%
- \foreach \i in {1,...,8}{%
- \node[text width=0.9*0.25\paperwidth] at (V\i) {\ListeAutoQ[\i,2]};%
- \node[text width=0.9*0.25\paperwidth] at (R\i) {\ListeAutoEn[\i,1]};%
+ \ifboolKV[Autonomie]{Deux}{%
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(V1)!0.5!(V2)$) {\ListeAutoEn[1,1]};%
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(V3)!0.5!(V4)$) {\ListeAutoEn[2,1]};%
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(V5)!0.5!(V6)$) {\ListeAutoEn[3,1]};%
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(V7)!0.5!(V8)$) {\ListeAutoEn[4,1]};%
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(R1)!0.5!(R2)$) {\ListeAutoQ[1,2]};%%
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(R3)!0.5!(R4)$) {\ListeAutoQ[2,2]};%%
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(R5)!0.5!(R6)$) {\ListeAutoQ[3,2]};%%
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(R7)!0.5!(R8)$) {\ListeAutoQ[4,2]};%%
+ }{%
+ \foreach \i in {1,...,8}{%
+ \node[text width=0.9*0.25\paperwidth] at (V\i) {\ListeAutoQ[\i,2]};%
+ \node[text width=0.9*0.25\paperwidth] at (R\i) {\ListeAutoEn[\i,1]};%
+ }%
}%
}%
}{%
@@ -9041,7 +10606,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
%%%
% Le th\'eor\`eme de Pythagore
%%%
-\setKVdefault[ClesPythagore]{Exact=false,AvantRacine=false,Racine=false,Entier=false,Egalite=false,Precision=2,Soustraction=false,Figure=false,FigureSeule=false,Angle=0,Echelle=1cm,Reciproque=false,ReciColonnes=false,Faible=false,Unite=cm,EnchaineA=false,EnchaineB=false,EnchaineC=false,ValeurA=0,ValeurB=0,ValeurC=0,Perso=false,AllPerso=false}
+\setKVdefault[ClesPythagore]{Exact=false,AvantRacine=false,Racine=false,Entier=false,Egalite=false,Precision=2,Soustraction=false,Figure=false,FigureSeule=false,Angle=0,Echelle=1cm,Reciproque=false,ReciColonnes=false,Faible=false,Unite=cm,EnchaineA=false,EnchaineB=false,EnchaineC=false,ValeurA=0,ValeurB=0,ValeurC=0,Perso=false,AllPerso=false,SansMots=false}
% On d\'efinit les figures \`a utiliser
\def\MPFigurePytha#1#2#3#4#5#6{%
@@ -9222,13 +10787,96 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\fi
}
+\def\MPFigurePythaSansMots#1#2#3#4#5#6{%
+ % #1 Premier sommet
+ % #2 Sommet de l'angle droit
+ % #3 troisi\`eme sommet
+ % #4 1ere longueur
+ % #5 2eme longueur
+ % #6 angle de rotation de la figure
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ u:=\useKV[ClesPythagore]{Echelle};
+ pair A,B,C,O,D,E,F,L[],M[],N[];%B est le sommet de l'angle droit
+ O=u*(2.5,2.5);
+ path cc;
+ cc=(fullcircle scaled 4u) shifted O;
+ % On place les points A,B,C sur le cercle de mani\`ere \`a faciliter la rotation de la figure
+ A=point(0.9*length cc) of cc;
+ B=A rotatedabout(O,-120);
+ C=2[A,O];
+ % On tourne pour \'eventuellement moins de lassitude :)
+ A:=A rotatedabout(O,#6);
+ B:=B rotatedabout(O,#6);
+ C:=C rotatedabout(O,#6);
+ % On d\'efinit l'angle droit
+ D-B=7*unitvector(C-B);
+ F-B=7*unitvector(A-B);
+ E-D=F-B;
+ trace polygone(A,B,C);
+ draw D--E--F;
+ L1=rotation(B,A,90);
+ L2-L1=B-A;
+ trace chemin(A,L1,L2,B);
+ M1=rotation(C,B,90);
+ M2-M1=C-B;
+ trace chemin(B,M1,M2,C);
+ N1=rotation(A,C,90);
+ N2-N1=A-C;
+ trace chemin(C,N1,N2,A);
+ numeric decalage;
+ decalage=3mm;
+ if (#4<#5) or (#4=#5) :
+ if ypart(B)>ypart(O) :
+ label(btex \num{#4} etex,1/2[C,B]+decalage*(unitvector(A-B)));
+ label(btex \num{#5} etex,1/2[A,B]+decalage*(unitvector(C-B)));
+ label(TEX("\begin{tabular}{c}Aire\\$\num{#5}\times\num{#5}$\\$\num{\fpeval{#5*#5}}$\\\end{tabular}"),iso(A,L2));
+ label(TEX("\begin{tabular}{c}Aire\\$\num{#4}\times\num{#4}$\\$\num{\fpeval{#4*#4}}$\\\end{tabular}"),iso(B,M2));
+ label(TEX("\begin{tabular}{c}Aire\\$\num{\fpeval{#4*#4}}+\num{\fpeval{#5*#5}}$\\$\num{\fpeval{#4*#4+#5*#5}}$\\\end{tabular}"),iso(C,N2));
+ else:
+ label(btex \num{#4} etex,1/2[C,B]+decalage*(unitvector(A-B)));
+ label(btex \num{#5} etex,1/2[A,B]+decalage*(unitvector(C-B)));
+ label(TEX("\begin{tabular}{c}Aire\\$\num{#5}\times\num{#5}$\\$\num{\fpeval{#5*#5}}$\\\end{tabular}"),iso(A,L2));
+ label(TEX("\begin{tabular}{c}Aire\\$\num{#4}\times\num{#4}$\\$\num{\fpeval{#4*#4}}$\\\end{tabular}"),iso(B,M2));
+ label(TEX("\begin{tabular}{c}Aire\\$\num{\fpeval{#4*#4}}+\num{\fpeval{#5*#5}}$\\$\num{\fpeval{#4*#4+#5*#5}}$\\\end{tabular}"),iso(C,N2));
+ drawarrow 2/10[iso(A,L2),iso(C,N2)]--8/10[iso(A,L2),iso(C,N2)];
+ drawarrow 2/10[iso(B,M2),iso(C,N2)]--8/10[iso(B,M2),iso(C,N2)];
+ fi
+ else:
+ if ypart(B)>ypart(O) :
+ label(btex \num{#4} etex,1/2[C,A]-decalage*(unitvector(C-A) rotated 90));
+ label(btex \num{#5} etex,1/2[A,B]-decalage*(unitvector(C-B)));
+ label(TEX("\begin{tabular}{c}Aire\\$\num{#5}\times\num{#5}$\\$\num{\fpeval{#5*#5}}$\\\end{tabular}"),iso(A,L2));
+ label(TEX("\begin{tabular}{c}Aire\\$\num{#4}\times\num{#4}$\\$\num{\fpeval{#4*#4}}$\\\end{tabular}"),iso(C,N2));
+ label(TEX("\begin{tabular}{c}Aire\\$\num{\fpeval{#4*#4}}-\num{\fpeval{#5*#5}}$\\$\num{\fpeval{#4*#4-#5*#5}}$\\\end{tabular}"),iso(B,M2));
+ drawarrow 2/10[iso(A,L2),iso(B,M2)]--8/10[iso(A,L2),iso(B,M2)];
+ drawarrow 2/10[iso(C,N2),iso(B,M2)]--8/10[iso(C,N2),iso(B,M2)];
+ else:
+ label(btex \num{#4} etex,1/2[A,C]+decalage*(unitvector(A-C) rotated 90));
+ label(btex \num{#5} etex,1/2[A,B]-decalage*(unitvector(C-B)));
+ label(TEX("\begin{tabular}{c}Aire\\$\num{#5}\times\num{#5}$\\$\num{\fpeval{#5*#5}}$\\\end{tabular}"),iso(A,L2));
+ label(TEX("\begin{tabular}{c}Aire\\$\num{#4}\times\num{#4}$\\$\num{\fpeval{#4*#4}}$\\\end{tabular}"),iso(C,N2));
+ label(TEX("\begin{tabular}{c}Aire\\$\num{\fpeval{#4*#4}}-\num{\fpeval{#5*#5}}$\\$\num{\fpeval{#4*#4-#5*#5}}$\\\end{tabular}"),iso(B,M2));
+ drawarrow 2/10[iso(A,L2),iso(B,M2)]--8/10[iso(A,L2),iso(B,M2)];
+ drawarrow 2/10[iso(C,N2),iso(B,M2)]--8/10[iso(C,N2),iso(B,M2)];
+ fi;
+ fi;
+ label(btex #3 etex,1.2[O,A]);
+ label(btex #2 etex,1.2[O,B]);
+ label(btex #1 etex,1.2[O,C]);
+ \end{mplibcode}
+ \fi
+}
+
\newcommand\RedactionPythagore{}%
\newcommand\RedactionReciPythagore{}%
\newcommand\RedactionCalculsPythagore{}%
\newcommand\RedactionCalculsReciPythagore{}%
\newcommand\RedactionConclusionReciPythagore{}%
-\newcommand\Pythagore[5][]{%
+% \newcommand\Pythagore[5][]{%
+\NewDocumentCommand\Pythagore{o m m m m}{%
% #1 Param\`etres sous forme de cl\'es
% #2 Nom "complet" du triangle : ABC par exemple
% #3 Premi\`ere longueur
@@ -9417,51 +11065,55 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\end{multicols}
}{%
% On d\'emarre la r\'esolution
- \ifboolKV[ClesPythagore]{AllPerso}{%
- \RedactionPythagore%
- \RedactionCalculsPythagore%
+ \ifboolKV[ClesPythagore]{SansMots}{%
+ \MPFigurePythaSansMots{\NomA}{\NomB}{\NomC}{#3}{#4}{\useKV[ClesPythagore]{Angle}}
}{%
- \ifboolKV[ClesPythagore]{Perso}{\RedactionPythagore}{\ifboolKV[ClesPythagore]{Egalite}{Comme le triangle $#2$ est rectangle en $\NomB$, alors l'\'egalit\'e de Pythagore est v\'erifi\'ee :}{Dans le triangle $#2$ rectangle en $\NomB$, le th\'eor\`eme de Pythagore permet d'\'ecrire :%
- }}%
- \xintifboolexpr{#3<#4 || #3==#4}{%\ifnum#3<#4%
- \xdef\ResultatPytha{\fpeval{round(sqrt(#3^2+#4^2),\useKV[ClesPythagore]{Precision})}}%
- \begin{align*}
- \NomA\NomC^2&=\NomA\NomB^2+\NomB\NomC^2\\
- \NomA\NomC^2&=\ifboolKV[ClesPythagore]{EnchaineA}{\opcopy{\useKV[ClesPythagore]{ValeurA}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opexport{A1}{\Aun}\num{\Aun}^2}+\ifboolKV[ClesPythagore]{EnchaineB}{\opcopy{\useKV[ClesPythagore]{ValeurB}}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}{\opexport{A2}{\Adeux}\num{\Adeux}^2}\\
- \NomA\NomC^2&=\ifboolKV[ClesPythagore]{EnchaineA}{\opexport{a1}{\Aun}\num{\Aun}}{\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}}+\ifboolKV[ClesPythagore]{EnchaineB}{\opexport{a2}{\Adeux}\num{\Adeux}}{\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}\\
- \NomA\NomC^2&=\opadd*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
- \ifboolKV[ClesPythagore]{AvantRacine}{}{%
- \ifboolKV[ClesPythagore]{Entier}{}{\\\NomA\NomC&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}}
- \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomC&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}{\NomA\NomC&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}}%\\
- }
- \end{align*}
- }{%\else
- \xdef\ResultatPytha{\fpeval{round(sqrt(#3^2-#4^2),\useKV[ClesPythagore]{Precision})}}%
- \ifboolKV[ClesPythagore]{Soustraction}{%
- \begin{align*}
- \NomA\NomB^2&=\NomA\NomC^2-\NomB\NomC^2\\
- \NomA\NomB^2&=\ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opexport{A1}{\Aun}\num{\Aun}^2}-\ifboolKV[ClesPythagore]{EnchaineB}{\opcopy{\useKV[ClesPythagore]{ValeurB}}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}{\opexport{A2}{\Adeux}\num{\Adeux}^2}\\
- \NomA\NomB^2&=\ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}}-\ifboolKV[ClesPythagore]{EnchaineB}{\opexport{a2}{\Adeux}\num{\Adeux}}{\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}\\
- \NomA\NomB^2&=\opsub*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
- \ifboolKV[ClesPythagore]{AvantRacine}{}{%
- \ifboolKV[ClesPythagore]{Entier}{}{\\\NomA\NomB&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}}
- \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomB&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}{\NomA\NomB&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}}%\\
- }
- \end{align*}
- }{%
+ \ifboolKV[ClesPythagore]{AllPerso}{%
+ \RedactionPythagore%
+ \RedactionCalculsPythagore%
+ }{%
+ \ifboolKV[ClesPythagore]{Perso}{\RedactionPythagore}{\ifboolKV[ClesPythagore]{Egalite}{Comme le triangle $#2$ est rectangle en $\NomB$, alors l'\'egalit\'e de Pythagore est v\'erifi\'ee :}{Dans le triangle $#2$ rectangle en $\NomB$, le th\'eor\`eme de Pythagore permet d'\'ecrire :%
+ }}%
+ \xintifboolexpr{#3<#4 || #3==#4}{%\ifnum#3<#4%
+ \xdef\ResultatPytha{\fpeval{round(sqrt(#3^2+#4^2),\useKV[ClesPythagore]{Precision})}}%
\begin{align*}
\NomA\NomC^2&=\NomA\NomB^2+\NomB\NomC^2\\
- \ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opexport{A1}{\Aun}\num{\Aun}^2}&=\NomA\NomB^2+\ifboolKV[ClesPythagore]{EnchaineB}{\opcopy{\useKV[ClesPythagore]{ValeurB}}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}{\opexport{A2}{\Adeux}\num{\Adeux}^2}\\
- \ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}}&=\NomA\NomB^2+\ifboolKV[ClesPythagore]{EnchaineB}{\opexport{a2}{\Adeux}\num{\Adeux}}{\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}\\
- \NomA\NomB^2&=\ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}}-\ifboolKV[ClesPythagore]{EnchaineB}{\opexport{a2}{\Adeux}\num{\Adeux}}{\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}\\
- \NomA\NomB^2&=\opsub*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
+ \NomA\NomC^2&=\ifboolKV[ClesPythagore]{EnchaineA}{\opcopy{\useKV[ClesPythagore]{ValeurA}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opexport{A1}{\Aun}\num{\Aun}^2}+\ifboolKV[ClesPythagore]{EnchaineB}{\opcopy{\useKV[ClesPythagore]{ValeurB}}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}{\opexport{A2}{\Adeux}\num{\Adeux}^2}\\
+ \NomA\NomC^2&=\ifboolKV[ClesPythagore]{EnchaineA}{\opexport{a1}{\Aun}\num{\Aun}}{\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}}+\ifboolKV[ClesPythagore]{EnchaineB}{\opexport{a2}{\Adeux}\num{\Adeux}}{\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}\\
+ \NomA\NomC^2&=\opadd*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
\ifboolKV[ClesPythagore]{AvantRacine}{}{%
- \ifboolKV[ClesPythagore]{Entier}{}{\\\NomA\NomB&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}}%
- \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomB&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}{\NomA\NomB&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}}%\\
+ \ifboolKV[ClesPythagore]{Entier}{}{\\\NomA\NomC&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}}
+ \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomC&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}{\NomA\NomC&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}}%\\
}
\end{align*}
- }%
- }%\fi%
+ }{%\else
+ \xdef\ResultatPytha{\fpeval{round(sqrt(#3^2-#4^2),\useKV[ClesPythagore]{Precision})}}%
+ \ifboolKV[ClesPythagore]{Soustraction}{%
+ \begin{align*}
+ \NomA\NomB^2&=\NomA\NomC^2-\NomB\NomC^2\\
+ \NomA\NomB^2&=\ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opexport{A1}{\Aun}\num{\Aun}^2}-\ifboolKV[ClesPythagore]{EnchaineB}{\opcopy{\useKV[ClesPythagore]{ValeurB}}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}{\opexport{A2}{\Adeux}\num{\Adeux}^2}\\
+ \NomA\NomB^2&=\ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}}-\ifboolKV[ClesPythagore]{EnchaineB}{\opexport{a2}{\Adeux}\num{\Adeux}}{\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}\\
+ \NomA\NomB^2&=\opsub*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
+ \ifboolKV[ClesPythagore]{AvantRacine}{}{%
+ \ifboolKV[ClesPythagore]{Entier}{}{\\\NomA\NomB&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}}
+ \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomB&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}{\NomA\NomB&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}}%\\
+ }
+ \end{align*}
+ }{%
+ \begin{align*}
+ \NomA\NomC^2&=\NomA\NomB^2+\NomB\NomC^2\\
+ \ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opexport{A1}{\Aun}\num{\Aun}^2}&=\NomA\NomB^2+\ifboolKV[ClesPythagore]{EnchaineB}{\opcopy{\useKV[ClesPythagore]{ValeurB}}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}{\opexport{A2}{\Adeux}\num{\Adeux}^2}\\
+ \ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}}&=\NomA\NomB^2+\ifboolKV[ClesPythagore]{EnchaineB}{\opexport{a2}{\Adeux}\num{\Adeux}}{\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}\\
+ \NomA\NomB^2&=\ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}}-\ifboolKV[ClesPythagore]{EnchaineB}{\opexport{a2}{\Adeux}\num{\Adeux}}{\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}\\
+ \NomA\NomB^2&=\opsub*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
+ \ifboolKV[ClesPythagore]{AvantRacine}{}{%
+ \ifboolKV[ClesPythagore]{Entier}{}{\\\NomA\NomB&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}}%
+ \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomB&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}{\NomA\NomB&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}}%\\
+ }
+ \end{align*}
+ }%
+ }%\fi%
+ }%
}%
}%
}%
@@ -11449,7 +13101,9 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\ppcm=\numexpr#1*#2/\pgcd\relax%
}%
-\setKVdefault[ClesThales]{Calcul=true,Droites=false,Propor=false,Segment=false,Figure=false,FigureSeule=false,Figurecroisee=false,FigurecroiseeSeule=false,Angle=0,Precision=2,Entier=false,Unite=cm,Reciproque=false,Produit=false,ChoixCalcul=0,Simplification,Redaction=false,Remediation=false,Echelle=1cm,Perso=false,CalculsPerso=false,IntroCalculs}
+\setKVdefault[ClesThales]{Calcul=true,Droites=false,Propor=false,Segment=false,Figure=false,FigureSeule=false,Figurecroisee=false,FigurecroiseeSeule=false,Angle=0,Precision=2,Entier=false,Unite=cm,Reciproque=false,Produit=false,ChoixCalcul=0,Simplification,Redaction=false,Remediation=false,Echelle=1cm,Perso=false,CalculsPerso=false,IntroCalculs,CouleursNum=false,CouleursDen=false}
+\defKV[ClesThales]{CouleurNum=\setKV[ClesThales]{CouleursNum}}
+\defKV[ClesThales]{CouleurDen=\setKV[ClesThales]{CouleursDen}}
\DeclareSIUnit{\PfCThalesUnit}{\useKV[ClesThales]{Unite}}%
@@ -11466,6 +13120,20 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\mplibforcehmode
\begin{mplibcode}
u:=\useKV[ClesThales]{Echelle};
+ boolean CouleursNum,CouleursDen;
+ CouleursNum=\useKV[ClesThales]{CouleursNum};
+ CouleursDen=\useKV[ClesThales]{CouleursDen};
+ color CouleurNum,CouleurDen;
+ if CouleursNum:
+ CouleurNum=\useKV[ClesThales]{CouleurNum}
+ else:
+ CouleurNum=black
+ fi;
+ if CouleursDen:
+ CouleurDen=\useKV[ClesThales]{CouleurDen}
+ else:
+ CouleurDen=black
+ fi;
pair A,B,C,M,N,O;%
%On place les points A,B,C sur le cercle de mani\`ere \`a faciliter la rotation de la figure
A=u*(1,1);
@@ -11490,6 +13158,14 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
triangle=cotes1--cotes2--cotes3--cycle;
draw triangle;
draw cotes4;
+ if CouleursDen:
+ draw triangle dashed evenly withpen pencircle scaled 1.5 withcolor CouleurDen;
+ fi;
+ if CouleursNum:
+ draw (cotes1 cutafter cotes4) dashed dashpattern(off 3 on 3) withpen pencircle scaled 1.5 withcolor CouleurNum;
+ draw (cotes4 cutbefore cotes1 cutafter cotes3) dashed dashpattern(off 3 on 3) withpen pencircle scaled 1.5 withcolor CouleurNum;
+ draw (cotes3 cutbefore cotes4) dashed dashpattern(off 3 on 3) withpen pencircle scaled 1.5 withcolor CouleurNum;
+ fi;
%on labelise
label(btex #1 etex,1.15[O,A]);
label(btex #2 etex,1.15[O,B]);
@@ -11513,7 +13189,20 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\end{mplibcode}
% \mplibcodeinherit{disable}
\else
- \begin{mpost}[mpsettings={u:=\useKV[ClesThales]{Echelle};}]
+ \begin{mpost}[mpsettings={u:=\useKV[ClesThales]{Echelle};boolean CouleursNum,CouleursDen;
+ CouleursNum=\useKV[ClesThales]{CouleursNum};
+ CouleursDen=\useKV[ClesThales]{CouleursDen};
+ color CouleurNum,CouleurDen;
+ if CouleursNum:
+ CouleurNum=\useKV[ClesThales]{CouleurNum}
+ else:
+ CouleurNum=black
+ fi;
+ if CouleursDen:
+ CouleurDen=\useKV[ClesThales]{CouleurDen}
+ else:
+ CouleurDen=black
+ fi;}]
pair A,B,C,M,N,O;%
%On place les points A,B,C sur le cercle de mani\`ere \`a faciliter la rotation de la figure
A=u*(1,1);
@@ -11538,6 +13227,14 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
triangle=cotes1--cotes2--cotes3--cycle;
draw triangle;
draw cotes4;
+ if CouleursDen:
+ draw triangle dashed evenly withpen pencircle scaled 1.5 withcolor CouleurDen;
+ fi;
+ if CouleursNum:
+ draw (cotes1 cutafter cotes4) dashed dashpattern(off 3 on 3) withpen pencircle scaled 1.5 withcolor CouleurNum;
+ draw (cotes4 cutbefore cotes1 cutafter cotes3) dashed dashpattern(off 3 on 3) withpen pencircle scaled 1.5 withcolor CouleurNum;
+ draw (cotes3 cutbefore cotes4) dashed dashpattern(off 3 on 3) withpen pencircle scaled 1.5 withcolor CouleurNum;
+ fi;
%on labelise
label(btex #1 etex,1.15[O,A]);
label(btex #2 etex,1.15[O,B]);
@@ -11658,6 +13355,20 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\mplibcodeinherit{enable}
\begin{mplibcode}
u:=\useKV[ClesThales]{Echelle};
+ boolean CouleursNum,CouleursDen;
+ CouleursNum=\useKV[ClesThales]{CouleursNum};
+ CouleursDen=\useKV[ClesThales]{CouleursDen};
+ color CouleurNum,CouleurDen;
+ if CouleursNum:
+ CouleurNum=\useKV[ClesThales]{CouleurNum}
+ else:
+ CouleurNum=black
+ fi;
+ if CouleursDen:
+ CouleurDen=\useKV[ClesThales]{CouleurDen}
+ else:
+ CouleurDen=black
+ fi;
pair A,B,C,M,N,O;%
O=(2.5u,2.5u);
path cc;
@@ -11683,6 +13394,20 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
for k=1 upto 6:
draw cotes[k];
endfor;
+ if CouleursDen:
+ drawoptions(dashed evenly withpen pencircle scaled 1.5 withcolor CouleurDen);
+ draw (cotes[1] cutafter cotes[2]);
+ draw (cotes[2] cutbefore cotes[1] cutafter cotes[3]);
+ draw (cotes[3] cutbefore cotes[2]);
+ drawoptions();
+ fi;
+ if CouleursNum:
+ drawoptions(dashed evenly withpen pencircle scaled 1.5 withcolor CouleurNum);
+ draw (cotes[5] cutafter cotes[4]);
+ draw (cotes[4] cutbefore cotes[5] cutafter cotes[6]);
+ draw (cotes[6] cutafter cotes[4]);
+ drawoptions();
+ fi;
pair I;
% On d\'efinit le centre du cercle inscrit \`a AMC
(I-C) rotated ((angle(A-C)-angle(M-C))/2) shifted C=whatever[A,C];
@@ -11710,7 +13435,20 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\end{mplibcode}
\mplibcodeinherit{disable}
\else
- \begin{mpost}[mpsettings={u:=\useKV[ClesThales]{Echelle};}]
+ \begin{mpost}[mpsettings={u:=\useKV[ClesThales]{Echelle};boolean CouleursNum,CouleursDen;
+ CouleursNum=\useKV[ClesThales]{CouleursNum};
+ CouleursDen=\useKV[ClesThales]{CouleursDen};
+ color CouleurNum,CouleurDen;
+ if CouleursNum:
+ CouleurNum=\useKV[ClesThales]{CouleurNum}
+ else:
+ CouleurNum=black
+ fi;
+ if CouleursDen:
+ CouleurDen=\useKV[ClesThales]{CouleurDen}
+ else:
+ CouleurDen=black
+ fi;}]
pair A,B,C,M,N,O;%
O=(2.5u,2.5u);
path cc;
@@ -11736,6 +13474,20 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
for k=1 upto 6:
draw cotes[k];
endfor;
+ if CouleursDen:
+ drawoptions(dashed evenly withpen pencircle scaled 1.5 withcolor CouleurDen);
+ draw (cotes[1] cutafter cotes[2]);
+ draw (cotes[2] cutbefore cotes[1] cutafter cotes[3]);
+ draw (cotes[3] cutbefore cotes[2]);
+ drawoptions();
+ fi;
+ if CouleursNum:
+ drawoptions(dashed evenly withpen pencircle scaled 1.5 withcolor CouleurNum);
+ draw (cotes[5] cutafter cotes[4]);
+ draw (cotes[4] cutbefore cotes[5] cutafter cotes[6]);
+ draw (cotes[6] cutafter cotes[4]);
+ drawoptions();
+ fi;
pair I;
% On d\'efinit le centre du cercle inscrit \`a AMC
(I-C) rotated ((angle(A-C)-angle(M-C))/2) shifted C=whatever[A,C];
@@ -11891,7 +13643,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
est un tableau de proportionnalit\'e\ifboolKV[ClesThales]{Segment}{.}{ d'apr\`es le th\'eor\`eme de Thal\`es.}%
}{%
\ifboolKV[ClesThales]{Segment}{on a :}{le th\'eor\`eme de Thal\`es permet d'\'ecrire :}%
- \[\frac{\ifboolKV[ClesThales]{Remediation}{\pointilles[1cm]}{#2#5}}{\ifboolKV[ClesThales]{Remediation}{\pointilles[1cm]}{#2#3}}=\frac{\ifboolKV[ClesThales]{Remediation}{\pointilles[1cm]}{#2#6}}{\ifboolKV[ClesThales]{Remediation}{\pointilles[1cm]}{#2#4}}=\frac{\ifboolKV[ClesThales]{Remediation}{\pointilles[1cm]}{#5#6}}{\ifboolKV[ClesThales]{Remediation}{\pointilles[1cm]}{#3#4}}\]%
+ \[\frac{\ifboolKV[ClesThales]{Remediation}{\pointilles[1cm]}{\ifboolKV[ClesThales]{CouleursNum}{\mathcolor{\useKV[ClesThales]{CouleurNum}}{#2#5}}{#2#5}}}{\ifboolKV[ClesThales]{Remediation}{\pointilles[1cm]}{\ifboolKV[ClesThales]{CouleursDen}{\mathcolor{\useKV[ClesThales]{CouleurDen}}{#2#3}}{#2#3}}}=\frac{\ifboolKV[ClesThales]{Remediation}{\pointilles[1cm]}{\ifboolKV[ClesThales]{CouleursNum}{\mathcolor{\useKV[ClesThales]{CouleurNum}}{#2#6}}{#2#6}}}{\ifboolKV[ClesThales]{Remediation}{\pointilles[1cm]}{\ifboolKV[ClesThales]{CouleursDen}{\mathcolor{\useKV[ClesThales]{CouleurDen}}{#2#4}}{#2#4}}}=\frac{\ifboolKV[ClesThales]{Remediation}{\pointilles[1cm]}{\ifboolKV[ClesThales]{CouleursNum}{\mathcolor{\useKV[ClesThales]{CouleurNum}}{#5#6}}{#5#6}}}{\ifboolKV[ClesThales]{Remediation}{\pointilles[1cm]}{\ifboolKV[ClesThales]{CouleursDen}{\mathcolor{\useKV[ClesThales]{CouleurDen}}{#3#4}}{#3#4}}}\]%
}%
}%
}%
@@ -13337,7 +15089,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
%%%
% Statistiques
%%%
-\newcommand\NbDonnees{}
+\newcommand\NbDonnees{}%
\newcommand\SommeDonnees{}%
\newcommand\EffectifTotal{}%
\newcommand\Moyenne{}%
@@ -13360,16 +15112,16 @@ Rayon=3cm,AffichageAngle=false,AffichageDonnee=false,ListeCouleurs={white},Hachu
Representation=false,%
%Pour les barres horizontales
Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dispo
-}
+}%
%compl\'ements
\defKV[ClesStat]{AngleRotationAbscisse=\setKV[ClesStat]{AbscisseRotation}}%
\defKV[ClesStat]{AffichageDonnees=\setKV[ClesStat]{AffichageAngle=false}\setKV[ClesStat]{AffichageDonnee}}%
\defKV[ClesStat]{CasesVides=\setKV[ClesStat]{CaseVide}}%
\defKV[ClesStat]{LegendesVides=\setKV[ClesStat]{LegendeVide}}%
% La construction du tableau
-\def\addtotok#1#2{#1\expandafter{\the#1#2}}
-\newtoks\tabtoksa\newtoks\tabtoksb\newtoks\tabtoksc
-\def\updatetoks#1/#2\nil{\addtotok\tabtoksa{\ifboolKV[ClesStat]{Qualitatif}{&#1}{&\num{#1}}}\addtotok\tabtoksb{&\num{#2}}}
+\def\addtotok#1#2{#1\expandafter{\the#1#2}}%
+\newtoks\tabtoksa\newtoks\tabtoksb\newtoks\tabtoksc%
+\def\updatetoks#1/#2\nil{\addtotok\tabtoksa{\ifboolKV[ClesStat]{Qualitatif}{&#1}{&\num{#1}}}\addtotok\tabtoksb{&\num{#2}}}%
%
\newcounter{PfCCompteLignes}%
%
@@ -15109,8 +16861,8 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
trace pointarc(cc,N[1]) for l=2 upto n: --pointarc(cc,N[l]) endfor
--cycle;
% etiquettage des pas
- dotlabel.urt(btex \tiny #4 etex,pointarc(cc,0));
- dotlabel.urt(btex \tiny #3 etex,(1/pas)[O,pointarc(cc,0)]);
+ dotlabel.urt(TEX("\tiny"&decimal(#4)),pointarc(cc,0));
+ dotlabel.urt(TEX("\tiny"&decimal(#3)),(1/pas)[O,pointarc(cc,0)]);
% trac\'e des r\'esultats \'el\`eves
pair El[];
el=0;
@@ -15225,8 +16977,8 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
\useKVdefault[ClesBarre]%
\setKV[ClesBarre]{#1}%
\xdef\NomComp{\useKV[ClesBarre]{Nom}}%
- \xdef\TexteOrigine{\useKV[ClesBarre]{Origine}}%
- \xdef\TexteReference{\useKV[ClesBarre]{Reference}}%
+ \def\TexteOrigine{\useKV[ClesBarre]{TexteOrigine}}%
+ \def\TexteReference{\useKV[ClesBarre]{TexteReference}}%
\xdef\CouleurFond{\useKV[ClesBarre]{CouleurFond}}%
\xdef\CouleurGrad{\useKV[ClesBarre]{CouleurGraduation}}%
\xdef\CouleurBarre{\useKV[ClesBarre]{CouleurBarre}}%
@@ -24317,7 +26069,7 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V
\else%
\NewDocumentEnvironment{Scratch}{o +b}{%
\setKV[Scratch]{#1}%
- \begin{mpost}[mpsettings={boolean Naturel;Naturel=\useKV[Scratch]{Naturel};if Naturel: input PfCPseudo; print:=true; else: input PfCScratch; print:=\useKV[Scratch]{Impression}; fi;NumeroteLignes:=\useKV[Scratch]{Numerotation};Echelle:=\useKV[Scratch]{Echelle};}]%
+ \begin{mpost}[mpsettings={boolean Naturel;Naturel=\useKV[Scratch]{Naturel};if Naturel: input PfCPseudo; print:=true; else: input PfCScratchpdf; print:=\useKV[Scratch]{Impression}; fi;NumeroteLignes:=\useKV[Scratch]{Numerotation};Echelle:=\useKV[Scratch]{Echelle};}]%
#2%
picture recap;%
recap:=currentpicture scaled Echelle;%
diff --git a/macros/latex/contrib/profcollege/metapost/PfCEngrenages.mp b/macros/latex/contrib/profcollege/metapost/PfCEngrenages.mp
new file mode 100644
index 0000000000..12d82c2850
--- /dev/null
+++ b/macros/latex/contrib/profcollege/metapost/PfCEngrenages.mp
@@ -0,0 +1,73 @@
+color CouleurEngrenage;
+
+vardef sin(expr t) = sind(c*t) enddef;
+
+vardef cos(expr t) = cosd(c*t) enddef;
+
+vardef tan(expr t) = sin(t)/cos(t) enddef;
+
+vardef Developpante(expr dp)=
+ save $;
+ path $;
+ $=(dp*u)*(1,0) for t=0 step 0.1 until pi:
+ --((dp*u)*(cos(t)+t*sin(t),sin(t)-t*cos(t)))
+ endfor;
+ $
+enddef;
+
+vardef Entraxe(expr na,nb)=
+ 0.5*(ModuleEng/u)*(na+nb)+0.04
+enddef;
+
+vardef Engrenage(expr M,Z,Cc)=%M : Module, Z : nb dents,Cc=Centre
+ % Pour des engrenages dont le profil est une développante de cercle
+ save $;
+ picture $;
+ ModuleEng:=M*u;
+ Dp:=ModuleEng*Z;%Module (mm)
+
+ De:=Dp+2*ModuleEng;%Diamètre extérieur
+ Dpied:=Dp-2.5*ModuleEng;%Diamètre de pied
+ Alpha:=20;%Angle de pression
+ Db:=Dp*cosd(Alpha);%Diamètre de base
+
+ pair OPfC,APfC,BPfC,CPfC,Obase[];
+ OPfC=(0,0);
+ path cerclep,cerclee,cercleb,cerclepied;
+ cerclep=cercles(OPfC,0.5*Dp);
+ cerclee=cercles(OPfC,0.5*De);
+ cercleb=cercles(OPfC,0.5*Db);
+ cerclepied=cercles(OPfC,0.5*Dpied);
+ path dd,daction,dsupport[],dperp[],dsymetrie,darret;
+ dd=demidroite(OPfC,OPfC+(0,1));
+ APfC=dd intersectionpoint cerclep;
+ BPfC=dd intersectionpoint cercleb;
+ path profil;
+ profil=(symetrie(rotation(Developpante(0.5*Db/(u)),OPfC,90),OPfC,(0,1)) cutafter cerclee);%0.5*Dp*cosd(Alpha));
+ %CPfC=dd intersectionpoint cerclepied;
+ ReleveAngle:=90-angle(profil intersectionpoint cerclep);
+ dsymetrie=rotation(dd,OPfC,-(360/(4*Z)+ReleveAngle));
+ darret=rotation(dd,OPfC,(360/(4*Z)-ReleveAngle));
+ pair D;
+ D=profil intersectionpoint cerclee;
+ path Profil;
+ Profil=(reverse(cerclepied) cutbefore darret cutafter dd)--profil--(reverse(cerclee) cutbefore demidroite(OPfC,D) cutafter dsymetrie);
+ Profil:=Profil--symetrie(reverse(Profil),OPfC,rotation((0,1),OPfC,-(360/(4*Z)+ReleveAngle)));
+ path ProfilGene;
+ ProfilGene=Profil
+ for k=1 upto Z-1:
+ --rotation(Profil,OPfC,-k*(360/Z))
+ endfor
+ --cycle;
+ $=image(
+ fill ProfilGene withcolor CouleurEngrenage;
+ trace ProfilGene;
+ fill cercles(OPfC,1u) withcolor blanc;
+ trace cercles(OPfC,1u);
+ fill cercles(OPfC,0.85u) withcolor 0.5white;
+ trace cercles(OPfC,0.85u);
+ fill rotation((cercles(OPfC,0.25u) shifted (dd intersectionpoint cerclepied)),OPfC,-(360/(4*Z)+ReleveAngle));
+ );
+ $:=rotation($,OPfC,-90+(360/(4*Z)+ReleveAngle)) shifted Cc;
+ $
+enddef;
diff --git a/macros/latex/contrib/profcollege/metapost/PfCLabyNombre.mp b/macros/latex/contrib/profcollege/metapost/PfCLabyNombre.mp
index e6877ef34e..1ef8c39607 100644
--- a/macros/latex/contrib/profcollege/metapost/PfCLabyNombre.mp
+++ b/macros/latex/contrib/profcollege/metapost/PfCLabyNombre.mp
@@ -42,6 +42,54 @@ def PopChemin=
fi;
enddef;
+def PopCheminMathAlea=
+ if indiceChemin<1:
+ RAZPileChemin;
+ for k=-1 upto LargeurLaby:
+ for l=-1 upto LongueurLaby:
+ if (k=-1) or (k=LargeurLaby) or (l=-1) or (l=LongueurLaby):
+ CaseExploree[k][l]:=true;
+ else:
+ CaseExploree[k][l]:=false;
+ fi;
+ endfor;
+ endfor;
+ Mobile:=Depart;
+ if Entree="Nord":
+ CaseExploree[choixligneD-1][choixcolonneD]:=true;
+ elseif Entree="Sud":
+ CaseExploree[choixligneD+1][choixcolonneD]:=true;
+ elseif Entree="Est":
+ CaseExploree[choixligneD][choixcolonneD+1]:=true;
+ elseif Entree="Ouest":
+ CaseExploree[choixligneD][choixcolonneD-1]:=true;
+ fi;
+ if SortieUnique:
+ if (Sortie="Est") or (Sortie="Ouest"):
+ for k=0 upto LargeurLaby-1:
+ if k<>choixligneA:
+ CaseExploree[k][choixcolonneA]:=true;
+ fi;
+ endfor;
+ elseif (Sortie="Nord") or (Sortie="Sud"):
+ for k=0 upto LongueurLaby-1:
+ if k<>choixcolonneA:
+ CaseExploree[choixligneA][k]:=true;
+ fi;
+ endfor;
+ fi;
+ fi;
+ PushChemin((choixligneD,choixcolonneD));
+ CaseExploree[choixligneD][choixcolonneD]:=true;
+ VoisinDispo(choixligneD,choixcolonneD);
+ else:
+ if indiceChemin>0:
+ CaseExploree[xpart(PileChemin[indiceChemin])][ypart(PileChemin[indiceChemin])]:=true;
+ fi;
+ indiceChemin:=indiceChemin-1;
+ fi;
+enddef;
+
%Pile des cases voisines de la case parcourue
pair PileVoisin[];
numeric indiceVoisin;
@@ -152,7 +200,6 @@ vardef murgauche=
picture $;
path pl[];
$=image(
- %pl1=(0,0)--u*(0.15,0)--u*(0.15,0.2){dir180}..u*(0.08+uniformdeviate(0.05),0.2+uniformdeviate(0.1))..u*(0.09+uniformdeviate(0.015),0.3+uniformdeviate(0.2))..u*(0.08+uniformdeviate(0.04),0.5+uniformdeviate(0.2))..{dir0}u*(0.15,0.8)--u*(0.15,1)--u*(0,1)--cycle;
pl1=(0,0)--u*(0.1,0)..u*(0.02+uniformdeviate(0.05),0.25)..u*(0.1-uniformdeviate(0.03),0.5)..u*(0.02+uniformdeviate(0.05),0.75)..u*(0.1,1)--u*(0,1)--cycle;
remplis pl[1];
trace pl[1];
diff --git a/macros/latex/contrib/was/gensymb.pdf b/macros/latex/contrib/was/gensymb.pdf
deleted file mode 100644
index f6357160eb..0000000000
--- a/macros/latex/contrib/was/gensymb.pdf
+++ /dev/null
Binary files differ