summaryrefslogtreecommitdiff
path: root/macros/latex/contrib
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-04-09 03:01:12 +0000
committerNorbert Preining <norbert@preining.info>2024-04-09 03:01:12 +0000
commiteb49829734b61c8d5a80ff94393e6c28739ee969 (patch)
tree87679f1aec0811b1c50b768171e55e75d5e15def /macros/latex/contrib
parent23803b0f35b5b0020c2c03924a79ed79654b130f (diff)
CTAN sync 202404090301
Diffstat (limited to 'macros/latex/contrib')
-rw-r--r--macros/latex/contrib/didactic/LICENSE416
-rw-r--r--macros/latex/contrib/didactic/Makefile34
-rw-r--r--macros/latex/contrib/didactic/ProvideSemanticEnv.tex7
-rw-r--r--macros/latex/contrib/didactic/README.md44
-rw-r--r--macros/latex/contrib/didactic/didactic.dtx1156
-rw-r--r--macros/latex/contrib/didactic/didactic.ins58
-rw-r--r--macros/latex/contrib/didactic/didactic.pdfbin0 -> 264041 bytes
-rw-r--r--macros/latex/contrib/didactic/hello.py7
-rw-r--r--macros/latex/contrib/didactic/idea.tex4
-rw-r--r--macros/latex/contrib/didactic/lightblock.tex3
-rw-r--r--macros/latex/contrib/prociagssymp/README.txt38
-rw-r--r--macros/latex/contrib/prociagssymp/TestprocIAGssymp.pdfbin80898 -> 0 bytes
-rw-r--r--macros/latex/contrib/prociagssymp/TestprocIAGssymp.tex145
-rw-r--r--macros/latex/contrib/prociagssymp/procIAGssymp.dtx290
-rw-r--r--macros/latex/contrib/prociagssymp/procIAGssymp.pdfbin0 -> 142766 bytes
-rw-r--r--macros/latex/contrib/prociagssymp/procIAGssymp.sty174
16 files changed, 2044 insertions, 332 deletions
diff --git a/macros/latex/contrib/didactic/LICENSE b/macros/latex/contrib/didactic/LICENSE
new file mode 100644
index 0000000000..1b57559a83
--- /dev/null
+++ b/macros/latex/contrib/didactic/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 2008 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
+ % https://www.latex-project.org/lppl.txt
+ % and version 1.3c or later is part of all distributions of LaTeX
+ % version 2008 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/didactic/Makefile b/macros/latex/contrib/didactic/Makefile
new file mode 100644
index 0000000000..a317f1b753
--- /dev/null
+++ b/macros/latex/contrib/didactic/Makefile
@@ -0,0 +1,34 @@
+LATEX?=latex
+PDFLATEX?=pdflatex
+LATEXFLAGS=-shell-escape
+PYTHONTEX=python3 $(shell which pythontex) --interpreter python:python3
+
+.PHONY: all
+all: didactic.sty didactic.pdf didactic.tar.gz
+
+SRC+= didactic.dtx hello.py idea.tex lightblock.tex ProvideSemanticEnv.tex
+
+didactic.pdf: ${SRC} didactic.sty
+ ${PDFLATEX} ${LATEXFLAGS} $<
+ ${PYTHONTEX} didactic
+ ${PDFLATEX} ${LATEXFLAGS} $<
+ ${PDFLATEX} ${LATEXFLAGS} $<
+
+didactic.sty: didactic.ins
+ ${LATEX} ${LATEXFLAGS} $<
+
+didactic.tar.gz: ${SRC} didactic.ins LICENSE Makefile README.md didactic.pdf
+ tar -czf $@ --transform "s|^|didactic/|" $^
+
+.PHONY: clean
+clean:
+ ${RM} didactic.sty didactic.pdf
+ ${RM} didactic.log
+ ${RM} didactic.aux didactic.glo didactic.idx didactic.log
+ ${RM} didactic.out didactic.pdf
+ ${RM} didactic.pytxcode didactic.pytxmcr didactic.pytxpyg
+ ${RM} didactic.tar.gz didactic.toc didactic.unq
+ ${RM} pythontex_data.pkl
+ ${RM} -R _minted-didactic
+ ${RM} $(wildcard py_default_default_*.stdout)
+ ${RM} -R pythontex-files-didactic
diff --git a/macros/latex/contrib/didactic/ProvideSemanticEnv.tex b/macros/latex/contrib/didactic/ProvideSemanticEnv.tex
new file mode 100644
index 0000000000..0b436a3508
--- /dev/null
+++ b/macros/latex/contrib/didactic/ProvideSemanticEnv.tex
@@ -0,0 +1,7 @@
+\ProvideSemanticEnv{idea}[purpleblock]{Idea}[%
+ numbered=no,style=definition
+ ]{idea}{ideas}{Idea}{Ideas}
+\ProvideTranslation{swedish}{idea}{idé}
+\ProvideTranslation{swedish}{ideas}{idéerna}
+\ProvideTranslation{swedish}{Idea}{Idé}
+\ProvideTranslation{swedish}{Ideas}{Idéerna}
diff --git a/macros/latex/contrib/didactic/README.md b/macros/latex/contrib/didactic/README.md
new file mode 100644
index 0000000000..f55168d205
--- /dev/null
+++ b/macros/latex/contrib/didactic/README.md
@@ -0,0 +1,44 @@
+# didactic
+
+This package provides macros and environments useful for writing teaching
+material. It provides more semantic environments on top of the standard
+`definition`, `theorem`, and friends: for instance, `exercise`, `activity` and
+`question`. These are suitably colour coded when used with Beamer. They occur
+as "normal" text in handouts produced by `beamerarticle` (same style as
+`definition` usually has).
+
+It also provides macros for typesetting code listings and output side by side.
+
+Finally, it modifies the appearance of `beamer` (Berlin based theme) and
+`memoir` (Tufte style layout), if loaded. It's designed to be used with
+`beamer` to produce slides and `beamerarticle` with `memoir` to produce notes,
+and handouts from the same source.
+
+## Installation
+
+To use the package, you only need to install `didactic.sty` in a place where
+your LaTeX distribution can find it. For a local installation, you can put it
+in the same directory as your document, or in `~/texmf/tex/latex/didactic/`.
+
+Actually, for the latter, you can simply do the following:
+
+```bash
+mkdir -p ~/texmf/tex/latex
+cd ~/texmf/tex/latex
+git clone https://github.com/dbosk/didactic.git
+cd didactic
+make all
+```
+
+That will build both `didactic.sty` and `didactic.pdf`. The documentation is
+located in `didactic.pdf`.
+
+
+## Maintainer
+
+The was authored by Daniel Bosk <daniel+ctan@bosk.se>, who is also the
+maintainer.
+
+## License
+
+This package is licensed under the LPPL 1.3c or later.
diff --git a/macros/latex/contrib/didactic/didactic.dtx b/macros/latex/contrib/didactic/didactic.dtx
new file mode 100644
index 0000000000..5429b8bf61
--- /dev/null
+++ b/macros/latex/contrib/didactic/didactic.dtx
@@ -0,0 +1,1156 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2019--2020, 2022, 2024 by Daniel Bosk <daniel@bosk.se>
+% -------------------------------------------------------
+%
+% This file may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% 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.
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{didactic.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{didactic}
+%<*package>
+ [2024/04/07 v1.6 didactic]
+%</package>
+%<package>\RequirePackage{xparse}
+%<package>\RequirePackage{xkeyval}
+%<package>\RequirePackage{xstring}
+%<package>\RequirePackage{pythontex}
+%<package>\RequirePackage{minted}
+%<package>\RequirePackage{babel}
+%<package>\RequirePackage{translations}
+%<package>\RequirePackage{amsthm}
+%<package>\RequirePackage{thmtools}
+%<package>\PassOptionsToPackage{unq}{unique}
+%<package>\RequirePackage{unique}
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[utf8]{inputenc}
+\usepackage[swedish,british]{babel}
+\usepackage{pythontex}
+\usepackage[notheorems]{beamerarticle}
+\usepackage[marginparmargin=left]{didactic}
+\usepackage{lipsum}
+\usepackage{hyperref}
+\usepackage{cleveref}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{didactic.dtx}
+ \PrintChanges
+ %\PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{0}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%
+% \changes{v1.0}{2019/01/29}{Initial version}
+% \changes{v1.1}{2019/03/26}{Adds summary environment}
+% \changes{v1.2}{2019/10/26}{Adds lightblock, darkblock and coloured blocks}
+% \changes{v1.3}{2019/01/29}{Renames to didactic; adds tools for code examples}
+% \changes{v1.4}{2023/03/20}{%
+% Adds settings for memoir and beamer, contrasting code examples,
+% translations.
+% }
+% \changes{v1.5}{2023/03/25}{Adds |\ProvideSemanticEnv|}
+% \changes{v1.6}{2024/04/07}{%
+% Sets beamer bibliography item correctly.
+% Adds |fullwidth| environment, handles margins better.
+% Adds |sidecaption| environment and |\flushscap| command.
+% }
+%
+% \GetFileInfo{didactic.dtx}
+%
+% \DoNotIndex{\newcommand,\newenvironment}
+%
+%
+% \title{The \textsf{didactic} package\thanks{This document
+% corresponds to \textsf{didactic}~\fileversion, dated \filedate.
+% Licensed under the terms of LPPL, version 1.3c or later.}}
+% \author{Daniel Bosk\\\texttt{daniel@bosk.se}}
+%
+% \maketitle
+%
+% \tableofcontents
+%
+% \section{Introduction}
+%
+% This package introduces some environments that are useful for writing
+% teaching material.
+% It also provides a few settings for |beamer| and |memoir| to make the
+% resulting document more readable.
+%
+% \section{Usage}
+%
+% The package automatically detects if |beamer| or |memoir| is loaded and
+% customizes the document accordingly.
+% \DescribeEnv{nobeamer}
+% \DescribeEnv{noarticle}
+% \DescribeEnv{nomemoir}
+% That can be prevented, however, by using the |nobeamer| or |nomemoir|
+% options.
+% The |noarticle| is to prevent the article versions of the (|beamer|)
+% environments to be defined.
+%
+% \DescribeEnv{notheorems}
+% The package also provides a few environments for |beamer| and |article| mode.
+% Particularly, it can define theorems and definitions, which might be defined
+% also by other packages.
+% To prevent this, use the |notheorems| option.
+%
+% \DescribeEnv{inner}
+% \DescribeEnv{outer}
+% \DescribeEnv{top}
+% \DescribeEnv{bottom}
+% When the package customizes |memoir| it sets the inner and outer margins to
+% fit margin notes better.
+% The |inner| and |outer| options can be used to set the inner and outer
+% margins to be used.
+% The |top| and |bottom| options can be used to set the top and bottom margins.
+%
+% \subsection{Beamer blocks and semantic environments for papers}
+%
+% \DescribeEnv{assumption}
+% \DescribeEnv{idea}
+% \DescribeEnv{question}
+% \DescribeEnv{exercise}
+% \DescribeEnv{activity}
+% \DescribeEnv{remark}
+% These environments provides wrappers around Beamer's |block| environment.
+% The idea is to complement the blocks provided by Beamer, such as |theorem|,
+% |definition| and |example|, with some more useful blocks.
+% Each of them provides a block with an appropriate title and optional subtitle
+% and is of a suitable colour.
+% For instance, consider the following.
+% \input{idea.tex}
+% That can be produced by the following code.
+% \inputminted[linenos]{latex}{idea.tex}
+%
+% \DescribeMacro{\ProvideSemanticEnv}
+% We can create new such block environments, that work both with |beamer| and
+% without, by using the |\ProvideSemanticEnv| command.
+% This command takes five arguments:
+% \begin{enumerate}
+% \item the name of the environment,
+% \item the name of the block environment to use (optional),
+% \item the title of the block,
+% \item options to pass to |thmtools| (optional),
+% \item the key of the translation of the refname of the block,
+% \item the key of the translation of the refnames of the block.
+% \item the key of the translation of the Refname of the block,
+% \item the key of the translation of the Refnames of the block.
+% \end{enumerate}
+% For example, the |idea| block above was created by the following code:
+% \inputminted{latex}{ProvideSemanticEnv.tex}
+%
+% \DescribeEnv{lightblock}
+% \DescribeEnv{darkblock}
+% We provide two shades of boxes, light coloured and dark coloured boxes.
+% These can be used to create boxes of various colours easily.
+% These two environments take two mandatory arguments: the first one is a
+% colour, the second is the title.
+%
+% In the text (not slides) the blocks are not coloured.
+% For instance, consider the following.
+% \input{lightblock.tex}
+% That can be produced by the following code.
+% \inputminted[linenos]{latex}{lightblock.tex}
+%
+% \DescribeEnv{blackblock}
+% \DescribeEnv{whiteblock}
+% \DescribeEnv{bwblock}
+% For instance, we provide a black block, white block and a black-white block.
+% These take only one mandatory argument: a title.
+%
+% \DescribeEnv{redblock}
+% \DescribeEnv{blueblock}
+% \DescribeEnv{purpleblock}
+% \DescribeEnv{greenblock}
+% \DescribeEnv{yellowblock}
+% \DescribeEnv{orangeblock}
+% We also provide a few predefined blocks in various common colours.
+% They all take a title as mandatory argument.
+%
+% \subsection{Tools for code examples}
+%
+% We also provide two commands for working with code examples: |lstexample| and
+% |runpython|.
+%
+% \DescribeMacro{\lstexample}
+% The |\lstexample| command allows us to typeset the source code of the
+% example.
+% For instance, |\lstexample{python}{hello.py}| produces the following:
+% \lstexample{python}{hello.py}
+%
+% We can also pass optional arguments directly to |minted| that is used to
+% typeset the code.
+% \begin{example}
+% |\lstexample[linenos,highlightlines=4]{python}{hello.py}| produces the
+% following.
+% \lstexample[linenos,highlightlines=4]{python}{hello.py}
+% \end{example}
+%
+% \DescribeMacro{\runpython}
+% We can also run the example code and include its output using the
+% |\runpython| macro.
+% \begin{example}
+% For instance, |\runpython{hello.py}| produces the following.
+% \runpython{hello.py}
+% \end{example}
+%
+% \DescribeMacro{\codebycode}
+% The |\codebycode| command is simply two |\lstexample| commands side by side:
+% |\codebycode[opt1]{lang1}{file1}[opt2]{lang2}{file2}|.
+% \codebycode
+% [breaklines,linenos]{python}{hello.py}
+% [breaklines,linenos,highlightlines=4]{python}{hello.py}
+%
+% \DescribeMacro{\runbyrun}
+% We can also put the output side by side using
+% |\runbyrun{hello.py}{hello.py}|.
+% \runbyrun{hello.py}{hello.py}
+%
+% \subsection{Adding margin notes of different kinds}
+%
+% \DescribeMacro{\indentedmarginpar}
+% We want to be able to put quite some content in the margins.
+% For this reason we want to have indented paragraphs in the margin notes.
+% We can use the |\indentedmarginpar{text}| command to do this.
+% For instance, consider the output in the margin.
+% \indentedmarginpar{%
+% This is an example of an indented margin paragraph.
+%
+% It can contain multiple paragraphs.
+% }
+%
+% \DescribeMacro{\newnotetype}
+% \DescribeMacro{\ltnote}
+% We also want to be able to use titled notes of different kinds.
+% We can use the |\newnotetype[fmtcmd]{type}{title}| command to define a new
+% type of note.
+% For instance |\ltnote| is defined as
+% \begin{center}
+% |\newnotetype{\ltnote}{\GetTranslationWarn{Learning theory}}|.
+% \end{center}
+% \ltnote{This is an example of a learning theory note.}
+%
+% We can also change the formatting of the title.
+% |\newnotetype[\textbf]{\bfnote}{Bold note}| and
+% |\bfnote{This is a bold note.}| gives us the note in the margin.
+% \newnotetype[\textbf]{\bfnote}{Bold note}
+% \bfnote{This is a bold note.}
+% \ltnote{Another example of a learning theory note.}
+%
+% \StopEventually{}
+%
+% \section{Implementation}
+%
+% Let's start with the options.
+%
+% \subsection{Options}
+%
+% We have a few negative options, that is, if specified we don't want to do
+% them.
+% This means that we'll need to use conditionals.
+% So each option definition consists first of a |\newif| then setting it to
+% true, and finnally, a |\DeclareOption|.
+% The body of the |\DeclareOption| then sets the |\if| to false.
+% After all the options are declared we'll use |\ProcessOptions|.
+% After that we can have all code actually doing the work, all wrapped in |\if|
+% statements.
+%
+% \begin{environment}{nobeamer}
+% \begin{environment}{nobeamertheme}
+% \begin{environment}{noarticle}
+% This option is used to disable the |beamer| specific parts of the package.
+% Meaning that we don't customize |beamer| even when we find that it is loaded.
+% \begin{macrocode}
+\newif\if@didactic@beamer
+\@ifclassloaded{beamer}{\@didactic@beamertrue}{\@didactic@beamerfalse}
+\DeclareOptionX{nobeamer}{\@didactic@beamerfalse}
+\newif\if@didactic@article
+\@ifclassloaded{beamer}{\@didactic@articlefalse}{\@didactic@articletrue}
+\newif\if@didactic@beamertheme
+\@didactic@beamerthemetrue
+\DeclareOptionX{nobeamertheme}{\@didactic@beamerthemefalse}
+\DeclareOptionX{noarticle}{\@didactic@articlefalse}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+%
+% \begin{environment}{nomemoir}
+% This option is used to disable the |memoir| specific parts of the package.
+% Meaning that we don't customize |memoir| even when we find that it is loaded.
+% \begin{macrocode}
+\newif\if@didactic@memoir
+\@ifclassloaded{memoir}{\@didactic@memoirtrue}{\@didactic@memoirfalse}
+\DeclareOptionX{nomemoir}{\@didactic@memoirfalse}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{notheorems}
+% This option is used to disable defining the usual environments provided by
+% |amsmath|: definition, theorem, etc.
+% \begin{macrocode}
+\newif\if@didactic@theorems
+\@didactic@theoremstrue
+\DeclareOptionX{notheorems}{\@didactic@theoremsfalse}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{inner}
+% \begin{environment}{outer}
+% \begin{environment}{top}
+% \begin{environment}{bottom}
+% We also have some key--value options to control the margins.
+% \begin{macrocode}
+\newcommand\@didactic@margin@inner{20mm}
+\newcommand\@didactic@margin@outer{70mm}
+\newcommand\@didactic@margin@top{25mm}
+\newcommand\@didactic@margin@bottom{40mm}
+\DeclareOptionX{inner}[25mm]{\renewcommand\@didactic@margin@inner{#1}}
+\DeclareOptionX{outer}[65mm]{\renewcommand\@didactic@margin@outer{#1}}
+\DeclareOptionX{top}[25mm]{\renewcommand\@didactic@margin@top{#1}}
+\DeclareOptionX{bottom}[40mm]{\renewcommand\@didactic@margin@bottom{#1}}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+%
+% \begin{environment}{marginparmargin}
+% We also have an option to set the marginpar margin.
+% We simply pass this on to |memoir| and keep a record ourselves too.
+% We know that the default in |memoir| is |outer|.
+% \begin{macrocode}
+\newcommand\@didactic@marginparmargin{outer}
+\DeclareOptionX{marginparmargin}{%
+ \renewcommand\@didactic@marginparmargin{#1}
+ \@ifclassloaded{memoir}{%
+ \marginparmargin{#1}
+ \strictpagechecktrue
+ \checkandfixthelayout
+ }{}
+}
+% \end{macrocode}
+% \end{environment}
+%
+% Now that we've declared the options we can process them.
+% \begin{macrocode}
+\ProcessOptionsX\relax
+% \end{macrocode}
+%
+% \subsection{Customizing \texttt{beamer}}
+%
+% If |beamer| is loaded we want to customize it.
+% However, only if the user hasn't disabled this with the |nobeamer| option.
+% \begin{macrocode}
+\if@didactic@beamer
+% \end{macrocode}
+
+% If we use |beamer| we want to use the Berlin theme.
+% This theme guides the viewer very nicely, how must is left and where we are
+% in the presentation.
+% (The same is true for the presenter.)
+% \begin{macrocode}
+\if@didactic@beamertheme
+ \usetheme{Berlin}
+% \end{macrocode}
+% However, we want to customize the footline.
+% We want to add two lines in the footline.
+% We want to add the author (left) and institute (right) to the first line.
+% Then we add the title (left) and page number (right) to the bottom line.
+% \begin{macrocode}
+ \setbeamertemplate{footline}%{miniframes theme}
+ {%
+ \begin{beamercolorbox}[colsep=1.5pt]{upper separation line foot}
+ \end{beamercolorbox}
+ \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,%
+ leftskip=.3cm,rightskip=.3cm plus1fil]{author in head/foot}%
+ \leavevmode{\usebeamerfont{author in head/foot}\insertshortauthor}%
+ \hfill%
+ {\usebeamerfont{institute in head/foot}%
+ \usebeamercolor[fg]{institute in head/foot}\insertshortinstitute}%
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,%
+ leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot}%
+ {\usebeamerfont{title in head/foot}\insertshorttitle}%
+ \hfill%
+ \insertframenumber%
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[colsep=1.5pt]{lower separation line foot}
+ \end{beamercolorbox}
+ }
+% \end{macrocode}
+%
+% We also want to set the transparency of the covered items.
+% We also want to set the bibliography item to text, we need this to get proper
+% references (not icons) in the bibliography.
+% (We need that for certain bibliography styles.)
+% \begin{macrocode}
+ \setbeamercovered{transparent}
+ \setbeamertemplate{bibliography item}{\relax}
+\fi
+% \end{macrocode}
+%
+% Finally, we want to add a table of contents at the beginning of each section
+% and subsection.
+% We want these to be shaded, so that the current section is highlighted.
+% We also want to hide the subsections of the other sections.
+% \begin{macrocode}
+\AtBeginSection[]{%
+ \begin{frame}<beamer>
+ \tableofcontents[currentsection,
+ subsectionstyle=show/show/hide]
+ \end{frame}
+}
+\AtBeginSubsection[]{%
+ \begin{frame}<beamer>
+ \tableofcontents[currentsection,
+ subsectionstyle=show/shaded/hide]
+ \end{frame}
+}
+\fi% end \if@didactic@beamer
+% \end{macrocode}
+%
+% \subsection{Customizing \texttt{memoir}}
+%
+% If |memoir| is loaded we want to customize it.
+% However, only if the user hasn't disabled this with the |nomemoir| option.
+% \begin{macrocode}
+\if@didactic@memoir
+% \end{macrocode}
+%
+% We want to set up |memoir| to use the Tufte style.
+% This means that we want to put a lot of text in the margin.
+% We'll use margin notes and put all the footnotes in the margin.
+% We also want to use footnotes for references so that they also appear in the
+% margin.
+%
+% We want to use the |marginfix| package to fix the margin notes.
+% \begin{macrocode}
+\RequirePackage{marginfix}
+\setlrmarginsandblock{\@didactic@margin@inner}
+ {\@didactic@margin@outer}
+ {*}
+\setulmarginsandblock{\@didactic@margin@top}
+ {\@didactic@margin@bottom}
+ {*}
+
+\footnotesinmargin
+
+\RequirePackage{ragged2e}
+\renewcommand{\sidefootform}{\RaggedRight}
+\renewcommand{\foottextfont}{\footnotesize\RaggedRight}
+
+\setmpjustification{\RaggedRight}{\RaggedRight}
+
+% margin figure and caption typeset ragged against text block
+\setfloatadjustment{marginfigure}{\mpjustification}
+\setmarginfloatcaptionadjustment{figure}{\captionstyle{\mpjustification}}
+
+% side captions
+% https://tex.stackexchange.com/a/275626/17418
+\sidecapmargin{outer}
+\setsidecappos{t}
+\checkandfixthelayout
+\setsidecaps{\marginparsep}{\marginparwidth}
+\renewcommand{\sidecapstyle}{%
+ \captionstyle{\RaggedRight}
+}
+
+% From https://tex.stackexchange.com/a/324757/17418
+% Palatino for main text and math
+\RequirePackage[osf,sc]{mathpazo}
+% Helvetica for sans serif
+% (scaled to match size of Palatino)
+\RequirePackage[scaled=0.90]{helvet}
+% Bera Mono for monospaced
+% (scaled to match size of Palatino)
+\RequirePackage[scaled=0.85]{beramono}
+\setlxvchars\setxlvchars
+\checkandfixthelayout
+\nouppercaseheads
+% \end{macrocode}
+%
+% We also want to adapt the citation commands of a few packages to use
+% footnotes.
+% For these, we check if the package is loaded, if it is, we do the changes.
+% We don't load the packages ourselves, we assume the user has done that.
+% This also means that the |didactic| package should be loaded last.
+% \begin{macrocode}
+\@ifpackageloaded{biblatex}{%
+ \ExecuteBibliographyOptions{%
+ autocite=footnote,
+ singletitle=false,
+ %style=verbose,
+ %citestyle=verbose,
+ maxbibnames=99,
+ isbn=false,doi=false,url=false
+ }
+ % from https://tex.stackexchange.com/a/374059/17418
+ \DeclareCiteCommand{\fullauthorcite}
+ {\usebibmacro{prenote}}
+ {\usedriver
+ {\setcounter{maxnames}{99}% use up to 99 authors
+ \DeclareNameAlias{sortname}{default}}
+ {\thefield{entrytype}}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+}{}
+\@ifpackageloaded{csquotes}{%
+ \SetCiteCommand{\footcite}
+}{}
+% \end{macrocode}
+%
+% And that concludes the |memoir| part.
+% \begin{macrocode}
+\fi% end \if@didactic@memoir
+% \end{macrocode}
+%
+% \subsection{A side-caption environment for \texttt{beamer}}
+%
+% \begin{environment}{sidecaption}
+% When using |memoir|, we can use the |sidecaption| environment to put the
+% caption in the margin.
+% However, when using |beamer| we don't have this environment, so we need to
+% provide it with a suitable behaviour.
+% It's suitable to just translate it to a normal caption, as usually used in
+% |beamer|.
+% \begin{macrocode}
+\ProvideDocumentEnvironment{sidecaption}{omo+b}{%
+ #4
+ \caption{#2\IfValueT{#3}{\label{#3}}}
+}{\relax}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\flushscap}
+% We also want to provide a command to flush a figure towards the caption.
+% \begin{macrocode}
+\NewDocumentCommand{\flushscap}{O{\centering}}{%
+ \@ifclassloaded{memoir}{%
+ \ifscapmargleft%
+ \flushleft%
+ \else%
+ \flushright%
+ \fi%
+ }{%
+ #1%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{More semantic environments}
+%
+% We want to provide a set of environments (blocks) for |beamer|.
+% We want the names of the blocks to be translated.
+% We'll use the |translations| package for this.
+% That way we get the language used through the normal use of |babel|.
+%
+% We also want to have the same environments for the article mode, but in a
+% nicer format that the default of |beamerarticle|.
+% For instance, instead of
+% \begin{block}{Example}
+% This is an example.
+% \end{block}
+% we want something like
+% \begin{example}
+% This is an example.
+% \end{example}
+%
+% This means that we'll need to do one thing if |beamer| is loaded and another
+% if |beamerarticle| is loaded---or rather, when |beamer| is not loaded, we
+% should be able to use this without |beamer| and |beamerarticle|.
+%
+% We want to provide environments like this one:
+% \begin{exercise}\label{exercise}
+% This is an exercise.
+% \end{exercise}
+% \begin{exercise}\label{anotherexercise}
+% This is another exercise.
+% \end{exercise}
+% We can use |\cref| to refer to them, getting something like \cref{exercise} or
+% \cref{exercise,anotherexercise}.
+%
+% We also want it to work with different languages, provided there is a
+% translation.
+% We do Swedish here.
+%
+% \selectlanguage{swedish}
+% Vi kan också skapa exempel på svenska.
+% \begin{exercise}\label{exempel}
+% Detta är ett exempel.
+% \end{exercise}
+% \begin{exercise}\label{ytterligareexempel}
+% Detta är ytterligare ett exempel.
+% \end{exercise}
+% Vi kan referera till dem med |\cref|, vilket ger något som \cref{exempel}
+% eller \cref{exempel,ytterligareexempel}.
+% \selectlanguage{british}
+%
+% Let's also add another idea, but in Swedish.
+%
+% \selectlanguage{swedish}
+% \begin{idea}\label{ide}
+% Detta är en idé.
+% \end{idea}
+% Då har vi \cref{ide}, men vi hade även tidigare \cref{theidea}.
+% Tillsammans är de \cref{ide,theidea}.
+% \selectlanguage{british}
+%
+% We can also refer to them in English, \cref{ide} and \cref{theidea}
+% separately and together as \cref{ide,theidea}.
+%
+% \begin{macro}{\ProvideSemanticEnv}
+% We provide a command to create such environments.
+% This way we just run this command in the preamble, if |beamer| is loaded it
+% creates the block environments for |beamer|, otherwise it creates the
+% environments for the article.
+%
+% It can be used like this:
+% \begin{center}
+% |\ProvideSemanticEnv{test}[alertblock]{Test}[style=definition]|\\
+% \qquad|{test}{tests}{Test}{Tests}|
+% \end{center}
+% \begin{macrocode}
+\ProvideDocumentCommand{\ProvideSemanticEnv}{m o m o mmmm}{%
+ \@ifundefined{#1}{%
+ \@ifclassloaded{beamer}{% beamer
+% \end{macrocode}
+% For |beamer| we want to use the |block| environment, or one of the coloured
+% blocks that we provide below.
+% We let the second argument (optional) be the name of the block environment to
+% use.
+% This will be the easiest way to set the colour of the block.
+%
+% Lastly, we let the third argument be the title of the block.
+% This is the English title and also the key used to translate the title of the
+% block.
+% \begin{macrocode}
+ \IfValueTF{#2}{%
+ \ProvideDocumentEnvironment{#1}{o}{%
+ \begin{#2}{\GetTranslationWarn{#3}\IfValueT{##1}{: ##1}}
+ }{%
+ \end{#2}
+ }
+ }{%
+ \ProvideDocumentEnvironment{#1}{o}{%
+ \begin{block}{\GetTranslationWarn{#3}\IfValueT{##1}{: ##1}}
+ }{%
+ \end{block}
+ }
+ }
+% \end{macrocode}
+%
+% If we don't use |beamer|, we want to use the |thmtools| package to define the
+% environments.
+% The fourth argument (optional), will be passed as options to
+% |\declaretheorem|.
+% The fifth to eighth arguments are the keys of (meaning English) translations
+% of the refnames of the block.
+% \begin{macrocode}
+ }{% not beamer
+ \IfValueTF{#4}{%
+ \declaretheorem[
+ name=\GetTranslationWarn{#3},
+ refname={{\GetTranslationWarn{#5}},{\GetTranslationWarn{#6}}},
+ Refname={{\GetTranslationWarn{#7}},{\GetTranslationWarn{#8}}},
+ #4
+ ]{#1}
+ }{%
+ \declaretheorem[
+ style=definition,
+ name=\GetTranslationWarn{#3},
+ refname={{\GetTranslationWarn{#5}},{\GetTranslationWarn{#6}}},
+ Refname={{\GetTranslationWarn{#7}},{\GetTranslationWarn{#8}}}
+ ]{#1}
+ }
+ }
+% \end{macrocode}
+%
+% Since the |refname| and |Refname| options of |thmtools| doesn't seem to work
+% we will add the necessary |\crefname| and |\Crefname| commands at the
+% beginning of the document, for both |beamer| and non-|beamer| case.
+% \begin{macrocode}
+ \AtBeginDocument{%
+ \@ifpackageloaded{cleveref}{%
+ \crefname{#1}
+ {\GetTranslationWarn{#5}}
+ {\GetTranslationWarn{#6}}
+ \Crefname{#1}
+ {\GetTranslationWarn{#7}}
+ {\GetTranslationWarn{#8}}
+ }{%
+ \relax
+ }
+ }
+ }{\relax} % \@ifundefined{#1}
+} % \ProvideSemanticEnv
+% \end{macrocode}
+% \end{macro}
+% \begin{environment}{assumption}
+% \begin{environment}{idea}
+% \begin{environment}{question}
+% \begin{environment}{exercise}
+% \begin{environment}{activity}
+% \begin{environment}{remark}
+% \begin{environment}{summary}
+% Then let's define some useful environments.
+% \begin{macrocode}
+\ProvideSemanticEnv{assumption}[alertblock]{Assumption}
+ {assumption}{assumptions}{Assumption}{Assumptions}
+\ProvideSemanticEnv{idea}[greenblock]{Idea}
+ {idea}{ideas}{Idea}{Ideas}
+\ProvideSemanticEnv{question}[orangeblock]{Question}
+ {question}{questions}{Question}{Questions}
+\ProvideSemanticEnv{exercise}[yellowblock]{Exercise}
+ {exercise}{exercises}{Exercise}{Exercises}
+\ProvideSemanticEnv{activity}[yellowblock]{Activity}
+ {activity}{activities}{Activity}{Activities}
+\ProvideSemanticEnv{remark}[alertblock]{Remark}[%
+ numbered=no,style=remark
+ ]{remark}{remarks}{Remark}{Remarks}
+\ProvideSemanticEnv{summary}[block]{Summary}[%
+ numbered=no,style=remark
+ ]{summary}{summaries}{Summary}{Summaries}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+%
+% We also want to provide the normal environments for theorems and definitions
+% and such.
+% \begin{macrocode}
+\if@didactic@theorems
+ \ProvideSemanticEnv{definition}[block]{Definition}
+ {definition}{definitions}{Definition}{Definitions}
+ \ProvideSemanticEnv{theorem}[block]{Theorem}[%
+ numbered=unless unique,style=theorem
+ ]{theorem}{theorems}{Theorem}{Theorems}
+ \ProvideSemanticEnv{corollary}[block]{Corollary}[%
+ numbered=unless unique,style=theorem
+ ]{corollary}{corollaries}{Corollary}{Corollaries}
+ \ProvideSemanticEnv{lemma}[block]{Lemma}[%
+ numbered=unless unique,style=theorem
+ ]{lemma}{lemmas}{Lemma}{Lemmas}
+ \ProvideSemanticEnv{proof}[block]{Proof}[%
+ numbered=no,style=proof
+ ]{proof}{proofs}{Proof}{Proofs}
+ \ProvideSemanticEnv{solution}[block]{Solution}[%
+ numbered=no,style=proof
+ ]{solution}{solutions}{Solution}{Solutions}
+ \ProvideSemanticEnv{example}[exampleblock]{Example}
+ {example}{examples}{Example}{Examples}
+\fi
+% \end{macrocode}
+%
+%
+% \subsection{Translations}
+%
+% We also want to provide translations for the environments.
+% We want to provide those even if none of the packages above are loaded.
+% \begin{macrocode}
+\ProvideTranslation{swedish}{Assumption}{Antagande}
+\ProvideTranslation{swedish}{Assumptions}{Antagandena}
+\ProvideTranslation{swedish}{assumption}{antagande}
+\ProvideTranslation{swedish}{assumptions}{antagandena}
+\ProvideTranslation{swedish}{Idea}{Idé}
+\ProvideTranslation{swedish}{Ideas}{Idéerna}
+\ProvideTranslation{swedish}{idea}{idé}
+\ProvideTranslation{swedish}{ideas}{idéerna}
+\ProvideTranslation{swedish}{Question}{Fråga}
+\ProvideTranslation{swedish}{Questions}{Frågor}
+\ProvideTranslation{swedish}{question}{fråga}
+\ProvideTranslation{swedish}{questions}{frågor}
+\ProvideTranslation{swedish}{Exercise}{Övningsuppgift}
+\ProvideTranslation{swedish}{Exercises}{Övningsuppgifterna}
+\ProvideTranslation{swedish}{exercise}{övningsuppgift}
+\ProvideTranslation{swedish}{exercises}{övningsuppgifterna}
+\ProvideTranslation{swedish}{Activity}{Aktivitet}
+\ProvideTranslation{swedish}{Activities}{Aktiviteter}
+\ProvideTranslation{swedish}{activity}{aktivitet}
+\ProvideTranslation{swedish}{activities}{aktiviteter}
+\ProvideTranslation{swedish}{Note}{Anmärkning}
+\ProvideTranslation{swedish}{Notes}{Anmärkningar}
+\ProvideTranslation{swedish}{note}{anmärkning}
+\ProvideTranslation{swedish}{notes}{anmärkningar}
+\ProvideTranslation{swedish}{Remark}{Anmärkning}
+\ProvideTranslation{swedish}{Remarks}{Anmärkningar}
+\ProvideTranslation{swedish}{remark}{anmärkning}
+\ProvideTranslation{swedish}{remarks}{anmärkningar}
+\ProvideTranslation{swedish}{Summary}{Sammanfattning}
+\ProvideTranslation{swedish}{Summaries}{Sammanfattningar}
+\ProvideTranslation{swedish}{summary}{sammanfattning}
+\ProvideTranslation{swedish}{summaries}{sammanfattningar}
+\ProvideTranslation{swedish}{definition}{definition}
+\ProvideTranslation{swedish}{definitions}{definitionerna}
+\ProvideTranslation{swedish}{Definition}{Definition}
+\ProvideTranslation{swedish}{Definitions}{Definitionerna}
+\ProvideTranslation{swedish}{theorem}{sats}
+\ProvideTranslation{swedish}{theorems}{satserna}
+\ProvideTranslation{swedish}{Theorem}{Sats}
+\ProvideTranslation{swedish}{Theorems}{Satserna}
+\ProvideTranslation{swedish}{corollary}{följdsats}
+\ProvideTranslation{swedish}{Corollary}{Följdsats}
+\ProvideTranslation{swedish}{corollaries}{följdsatser}
+\ProvideTranslation{swedish}{Corollaries}{Följdsatser}
+\ProvideTranslation{swedish}{lemma}{hjälpsats}
+\ProvideTranslation{swedish}{lemmas}{hjälpsatserna}
+\ProvideTranslation{swedish}{Lemma}{Hjälpsats}
+\ProvideTranslation{swedish}{Lemmas}{Hjälpsatserna}
+\ProvideTranslation{swedish}{proof}{bevis}
+\ProvideTranslation{swedish}{Proof}{Bevis}
+\ProvideTranslation{swedish}{proofs}{bevisen}
+\ProvideTranslation{swedish}{Proofs}{Bevisen}
+\ProvideTranslation{swedish}{Solution}{Lösningsförslag}
+\ProvideTranslation{swedish}{Solutions}{Lösningsförslagen}
+\ProvideTranslation{swedish}{solution}{lösningsförslag}
+\ProvideTranslation{swedish}{solutions}{lösningsförslagen}
+\ProvideTranslation{swedish}{Example}{Exempel}
+\ProvideTranslation{swedish}{Examples}{Exempelen}
+\ProvideTranslation{swedish}{example}{exempel}
+\ProvideTranslation{swedish}{examples}{exempelen}
+% \end{macrocode}
+%
+%
+% \subsection{Coloured blocks}
+%
+% \begin{environment}{lightblock}
+% \begin{environment}{darkblock}
+% \begin{environment}{blackblock}
+% \begin{environment}{whiteblock}
+% \begin{environment}{bwblock}
+% \begin{environment}{redblock}
+% \begin{environment}{blueblock}
+% \begin{environment}{purpleblock}
+% \begin{environment}{greenblock}
+% \begin{environment}{yellowblock}
+% \begin{environment}{orangeblock}
+% Now we have the coloured blocks.
+% These we want to define even if |beamer| is not loaded, but for this we need
+% |beamerarticle| instead.
+% \begin{macrocode}
+\ProvideDocumentEnvironment{lightblock}{mm}{%
+ \setbeamercolor{block body}{bg=#1!10,fg=black}
+ \setbeamercolor{block title}{bg=#1,fg=black}
+ \setbeamercolor{local structure}{fg=#1}
+ \begin{block}{#2}
+}{%
+ \end{block}
+}
+\ProvideDocumentEnvironment{darkblock}{mm}{%
+ \setbeamercolor{block body}{bg=#1!10,fg=black}
+ \setbeamercolor{block title}{bg=#1,fg=white}
+ \setbeamercolor{local structure}{fg=#1}
+ \begin{block}{#2}
+}{%
+ \end{block}
+}
+\ProvideDocumentEnvironment{blackblock}{m}
+{\begin{darkblock}{black}{#1}}
+{\end{darkblock}}
+\ProvideDocumentEnvironment{whiteblock}{m}{%
+ \setbeamercolor{block body}{bg=white!10,fg=black}
+ \setbeamercolor{block title}{bg=white,fg=black}
+ \setbeamercolor{local structure}{fg=black}
+ \begin{block}{#1}
+}{%
+ \end{block}
+}
+\ProvideDocumentEnvironment{bwblock}{m}{%
+ \setbeamercolor{block body}{bg=white!10,fg=black}
+ \setbeamercolor{block title}{bg=black,fg=white}
+ \setbeamercolor{local structure}{fg=black}
+ \begin{block}{#1}
+}{%
+ \end{block}
+}
+\ProvideDocumentEnvironment{redblock}{m}
+{\begin{darkblock}{red}{#1}}
+{\end{darkblock}}
+\ProvideDocumentEnvironment{blueblock}{m}
+{\begin{darkblock}{blue}{#1}}
+{\end{darkblock}}
+\ProvideDocumentEnvironment{purpleblock}{m}
+{\begin{darkblock}{purple}{#1}}
+{\end{darkblock}}
+\ProvideDocumentEnvironment{greenblock}{m}
+{\begin{lightblock}{green}{#1}}
+{\end{lightblock}}
+\ProvideDocumentEnvironment{yellowblock}{m}
+{\begin{lightblock}{yellow}{#1}}
+{\end{lightblock}}
+\ProvideDocumentEnvironment{orangeblock}{m}
+{\begin{lightblock}{orange}{#1}}
+{\end{lightblock}}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+%
+% \subsection{Adding margin notes of different kinds}
+%
+% We want to add titled margin notes.
+% These margin notes should use indentation since they might contains several
+% paragraphs.
+%
+% \begin{macro}{\indentedmarginpar}
+% We start with the indented margin notes.
+% They simply take a text as argument and typeset it in the margin:
+% |\indentedmarginpar{this is the text}|.
+% \indentedmarginpar{this is the text}
+% \begin{macrocode}
+% Gives us indentation in the margin notes.
+% Adapted from https://tex.stackexchange.com/a/257171
+\NewDocumentCommand{\indentedmarginpar}{+m}{%
+ \@ifclassloaded{memoir}{\strictpagecheck}{\relax}%
+ \marginpar{%
+ \setlength{\parindent}{1.0em}\footnotesize
+ \@afterindentfalse\@afterheading #1
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newnotetype}
+% Now, let's add a command to add margin notes with a title.
+% The |\newnotetype{\titlenote}{Title]| command creates a new command
+% |\titlenote| that takes a text as argument and typesets it in the margin with
+% the title |Title|: |\titlenote{this is the text}|.
+% \newnotetype{\titlenote}{Title}
+% \titlenote{this is the text}
+% \begin{macrocode}
+\NewDocumentCommand{\newnotetype}{omm}{%
+ \IfValueTF{#1}
+ {\NewDocumentCommand{#2}{+m}{%
+ \indentedmarginpar{#1{#3:} ##1}%
+ }}
+ {\NewDocumentCommand{#2}{+m}{%
+ \indentedmarginpar{\emph{#3:} ##1}%
+ }}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ltnote}
+% We provide a few different types of margin notes.
+% That way we can also include translations for them.
+% \begin{macrocode}
+\ProvideTranslation{swedish}{Learning theory}{Lärandeteori}
+\newnotetype{\ltnote}{\GetTranslationWarn{Learning theory}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \subsection{Listing and running code examples}
+%
+% Let's turn our focus to |\lstexample| and |\runpython|.
+% We want to make it easy to typeset and print the output of example Python
+% programs in slides and texts.
+% We want to use PythonTeX to automatically run the code and typeset the source
+% code using |minted|.
+%
+% These are the same for both |beamer| and article mode.
+%
+% \begin{macro}{\lstexample}
+% The first part is easy.
+% To typeset the source file we simply need to use the minted package.
+% We provide an optional argument to pass options to minted.
+% \begin{macrocode}
+\NewDocumentCommand{\lstexample}{omm}{%
+ \IfValueTF{#1}
+ {\inputminted[escapeinside=||,#1]{#2}{#3}}
+ {\inputminted[escapeinside=||]{#2}{#3}}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\runpython}
+% Now, for the second part, printing the output, we do this in two steps.
+% First, we create a function using PythonTeX that runs a Python program and
+% prints it output.
+% We can use it like |\runpython{hello.py}| to run the program in |hello.py|.
+% The output is printed in verbatim mode.
+% Alternatively we could use |\runpython[opt]{hello.py}| to pass |opt| to the
+% underlying |fancyvrb| environment.
+%
+% Let's create that function in PythonTeX to run the example program file.
+% We simply execute it with Python 3 and capture its output.
+% Then we print the output to stdout, which is then captured by PythonTeX.
+% We use |pytex.add_dependencies| to add the file as a dependency to rerun the
+% code when necessary.
+% \begin{macrocode}
+\begin{pycode}
+import subprocess
+
+def run_module(m):
+ result = subprocess.run(["python3", m], capture_output=True)
+ print(result.stdout.decode("utf8").strip())
+ pytex.add_dependencies(m)
+
+def mintedoutput(m, opt):
+ if opt:
+ print(r'\begin{minted}[{}]{{text}}'.format(opt))
+ else:
+ print(r'\begin{minted}{text}')
+ run_module(m)
+ print(r'\end{minted}')
+\end{pycode}
+% \end{macrocode}
+%
+% Then we simply create a command that run that function with the file as
+% argument.
+% Then print the output in verbatim mode.
+% \begin{macrocode}
+\NewDocumentCommand{\runpython}{om}{%
+ \setpythontexautoprint{false}%
+ \pyc{run_module("#2")}%
+ \printpythontex[verbatim]%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Contrasting code examples}
+%
+% Sometimes we want to contrast two code examples side by side.
+% \begin{macro}{\textbytext}
+% For example |\textbytext{\lipsum[1]}{\lipsum[1]}| should typeset the two
+% examples side by side.
+% \textbytext{\lipsum[1]}{\lipsum[1]}
+% If we use the |memoir| class and our settings (|\if@didactic@memoir|), we
+% want to use the |adjustwidth| environment to expand the text block to better
+% fit them.
+% Otherwise we use the standard text block.
+%
+% To do this we first add a |fullwidth| environment\footnote{%
+% Similarly to \url{https://tex.stackexchange.com/a/350944/17418}.
+% }.
+% We can get the |adjustwidth| environment from the |changepage| package
+% whenever |memoir| isn't used.
+% \begin{macrocode}
+\RequirePackage{changepage}
+\newlength{\@didactic@textbytext@oldcolumnwidth}
+\NewDocumentEnvironment{fullwidth}{+b}{%
+ \setlength{\@didactic@textbytext@oldcolumnwidth}{\columnwidth}
+ \setlength{\columnwidth}{\textwidth+2em+\marginparwidth+\marginparsep}
+ \IfStrEqCase{\@didactic@marginparmargin}{%
+ {inner}{\begin{adjustwidth*}{-\marginparwidth-\marginparsep}{-2em}}
+ {left}{\begin{adjustwidth}{-\marginparwidth-\marginparsep}{-2em}}
+ {outer}{\begin{adjustwidth*}{-2em}{-\marginparwidth-\marginparsep}}
+ {right}{\begin{adjustwidth}{-2em}{-\marginparwidth-\marginparsep}}
+ }[\relax]
+ #1
+ \IfStrEqCase{\@didactic@marginparmargin}{%
+ {inner}{\end{adjustwidth*}}
+ {left}{\end{adjustwidth}}
+ {outer}{\end{adjustwidth*}}
+ {right}{\end{adjustwidth}}
+ }[\relax]
+ \setlength{\columnwidth}{\@didactic@textbytext@oldcolumnwidth}
+}{\relax}
+% \end{macrocode}
+%
+% Now to the |\textbytext| command.
+% We simply set up a |tabularx| environment with two columns and use it inside
+% a |fullwidth| environment.
+% \begin{macrocode}
+\NewDocumentCommand{\textbytext}{+m+m}{%
+ \begin{fullwidth}
+ \begin{tabularx}{\columnwidth}{XX}
+ #1 & #2
+ \end{tabularx}
+ \end{fullwidth}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\codebycode}
+% When we deal with code, we deal with verbatim data.
+% The easiest way to deal with this is to simply keep the code in files and
+% supply the file names to |\inputminted|.
+% The |\codebycode| command is simply two |\inputminted| commands side by side:
+% |\codebycode[opt1]{lang1}{file1}[opt2]{lang2}{file2}|.
+% \codebycode
+% [breaklines,linenos]{python}{hello.py}
+% [breaklines,linenos]{python}{hello.py}
+%
+% This gives us the following implementation.
+% We can reuse |\textbytext| to typeset the two examples side by side.
+% \begin{macrocode}
+\RequirePackage{tabularx}
+\RequirePackage{minted}
+\NewDocumentCommand{\codebycode}{ommomm}{%
+ \textbytext{%
+ \IfValueTF{#1}
+ {\lstexample[#1]{#2}{#3}}
+ {\lstexample{#2}{#3}}%
+ }{%
+ \IfValueTF{#4}
+ {\lstexample[#4]{#5}{#6}}
+ {\lstexample{#5}{#6}}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\runbyrun}
+% We also want to typeset the runs (|\runpython|).
+% We can use |\textbytext| to typeset the two outputs side by side.
+% \begin{macrocode}
+\NewDocumentCommand{\runbyrun}{mm}{%
+ \textbytext{\runpython{#1}}{\runpython{#2}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+\endinput
diff --git a/macros/latex/contrib/didactic/didactic.ins b/macros/latex/contrib/didactic/didactic.ins
new file mode 100644
index 0000000000..089f31cd00
--- /dev/null
+++ b/macros/latex/contrib/didactic/didactic.ins
@@ -0,0 +1,58 @@
+%%
+%% Copyright (C) 2019 by Daniel Bosk <dbosk@kth.se>
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3c of this license
+%% or (at your option) any later version. 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.
+%%
+
+\input docstrip.tex
+\keepsilent
+
+\usedir{tex/latex/didactic}
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2019 by Daniel Bosk <dbosk@kth.se>
+
+This file may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, either version 1.3c of this license
+or (at your option) any later version. 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.
+
+\endpreamble
+
+\generate{\file{didactic.sty}{\from{didactic.dtx}{package}}}
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* didactic.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file *}
+\Msg{* *}
+\Msg{* didactic.dtx *}
+\Msg{* *}
+\Msg{* through LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{*************************************************************}
+
+\endbatchfile
diff --git a/macros/latex/contrib/didactic/didactic.pdf b/macros/latex/contrib/didactic/didactic.pdf
new file mode 100644
index 0000000000..3c219334ad
--- /dev/null
+++ b/macros/latex/contrib/didactic/didactic.pdf
Binary files differ
diff --git a/macros/latex/contrib/didactic/hello.py b/macros/latex/contrib/didactic/hello.py
new file mode 100644
index 0000000000..4034830401
--- /dev/null
+++ b/macros/latex/contrib/didactic/hello.py
@@ -0,0 +1,7 @@
+"""A Hello World example in Python 3"""
+
+def main():
+ print("Hello, world!")
+
+if __name__ == "__main__":
+ main()
diff --git a/macros/latex/contrib/didactic/idea.tex b/macros/latex/contrib/didactic/idea.tex
new file mode 100644
index 0000000000..e6ea88ae62
--- /dev/null
+++ b/macros/latex/contrib/didactic/idea.tex
@@ -0,0 +1,4 @@
+\begin{idea}[These blocks]\label{theidea}
+ The idea of these blocks is to be able to use them in both slides and text.
+ This way, we can focus on writing just one version of the content.
+\end{idea}
diff --git a/macros/latex/contrib/didactic/lightblock.tex b/macros/latex/contrib/didactic/lightblock.tex
new file mode 100644
index 0000000000..83f4577bf7
--- /dev/null
+++ b/macros/latex/contrib/didactic/lightblock.tex
@@ -0,0 +1,3 @@
+\begin{lightblock}{green}{Title}
+ This is the body.
+\end{lightblock}
diff --git a/macros/latex/contrib/prociagssymp/README.txt b/macros/latex/contrib/prociagssymp/README.txt
index 98ddf544e7..d71ae0813d 100644
--- a/macros/latex/contrib/prociagssymp/README.txt
+++ b/macros/latex/contrib/prociagssymp/README.txt
@@ -1,25 +1,37 @@
-% This file is README.txt for the "procIAGssymp" package.
-% Current version : [2022/05/05]
-% Author: Battista Benciolini
+This file is README for the procIAGssymp package.
+Current version : [2024/04/08]
+Author: Battista Benciolini < benciolinibattista at gmail dot com >
-The package "procIAGssymp" provides (re-)definitions of some LaTeX
-commands that can be useful for the preparation of a paper with
-the style of the proceedings of symposia sponsored by the
+The package provides (re-)definitions of some LaTeX commands
+that can be useful for the preparation of a paper with
+the style of the proceeding of symposia sponsored by the
International Association of Geodesy (IAG).
-I presume that "official" more refined and
-up-to-date "sty" and "cls" file are now available
+I assume that official, more refined and
+up-to-date style (or class) file are now available
from the publisher. This package is therefore not as useful
as it was at the time of it's first publication,
but it is pehaps still conveniet for some user.
-The distribution includes :
+The package is distributed as file procIAGssymp.dtx
+
+The file procIAGssymp.dtx
+can be treated with any LaTeX processor and it generates:
+
+ procIAGssymp.sty to be loaded with \usepachage{procIAGssymp}
+
+ procIAGssymp.pdf the complete documentation
+
+ TESTprocIAGssymp.tex a minimal example using the package
+
+I used pdflatex in the installation of TeXlive2024
+
+
+This program may be used, distributed and modified under
+the conditions of the LaTeX Project Public License.
+(see:http://www.latex-project.org/lppl.txt)
-README.txt this file
-procIAGssymp.sty the package
-TestprocIAGssymp.tex external documentation, example, suggestions
-TestprocIAGssymp.pdf external documentation, example, suggestions
===================== END of README file ======================
diff --git a/macros/latex/contrib/prociagssymp/TestprocIAGssymp.pdf b/macros/latex/contrib/prociagssymp/TestprocIAGssymp.pdf
deleted file mode 100644
index 3963711a2c..0000000000
--- a/macros/latex/contrib/prociagssymp/TestprocIAGssymp.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/prociagssymp/TestprocIAGssymp.tex b/macros/latex/contrib/prociagssymp/TestprocIAGssymp.tex
deleted file mode 100644
index d0343bda46..0000000000
--- a/macros/latex/contrib/prociagssymp/TestprocIAGssymp.tex
+++ /dev/null
@@ -1,145 +0,0 @@
-% THIS IS BOTH A MINIMAL USER-MANUAL
-% OF THE PACKAGE procIAGssymp.sty
-% AND AN EXAMPLE OF ITS USE
-%
-% File : TestprocIAGssymp.tex (current version 2022-05-05)
-% Author: Battista Benciolini
-% E-mail: <Battista.Benciolini@unitn.it>
-% See file procIAGssymp.sty for more information
-%
-%
-\documentclass[a4paper,twocolumn,10pt]{article} %
-\usepackage{procIAGssymp}
-\title{The package procIAGssymp.sty for the formatting
- of a paper with the style of the proceedings of
- symposia sponsored by IAG}
-\author{B.Benciolini\thanks{e-mail: battista.benciolini@unitn.it}
-\and No Second Author \and No Third Author\thanks{No-Where Institute}}
-\date{ }
-\hbadness=10000 \vbadness=10000
-\begin{document}
-\maketitle
-\paragraph{Abstract.} The package \texttt{procIAGssymp.sty} has
-been designed to help the formatting of a paper with the style
-of the proceedings of symposia sponsored by the
-"International Association of Geodesy (IAG)".
-This paper itself is an example of the use of the package. It
-contains instructions and suggestions for the use of the package,
-while most of the comment included in \texttt{procIAGssymp.sty}
-are of a more technical nature.
-\paragraph{WARNING:}
-I have not recently checked the instruction from
-the publisher of the proceedings of IAG-sponsored-symposia.
-I presume that "official" more refined and
-up-to-date "sty" and "cls" files
-are now available from the publisher.
-This package is therefore not as useful
-as it was at the time of it's first publication,
-but it is pehaps still conveniet for some user.
-\linea
-\section{Introduction}
-The package \texttt{procIAGssymp.sty} provides some (re-)definitions
-of \LaTeX commands. The use of the package is explained in this text.
-\par\noindent I have tried to provide a package that helps in
-the preparation of a paper that corresponds to the instructions
-distributed by the publisher of the proceedings of
-IAG-sponsored-symposia, but please read the subsection
-\textbf{Important notes} below.
-\par\noindent The curious readers are
-invited to look directly at the source of this file and, more
-important, to the code in the file \texttt{procIAGssymp.sty}.
-\section{Suggestions for the user}
-\subsection{General page lay-out}
-The general lay-out of the pages is controlled by some assignment
-made by \texttt{procIAGssymp.sty} AND by the use of the class
-\texttt{article} that must be loaded with the proper options, i.e.
-\verb+[a4paper,twocolumn,10pt]+ .
-\subsection{Top-matter}
-The title and the author(s) must be prepared with
-\verb+\title{ . . .}+ and \verb+\author{ . . .}+ and they will be
-printed by \verb+\maketitle+. The use of \verb+\thanks{. . .}+ inside
-the argument of \verb+\title{ . . .}+ is not appropriate because this
-command has been redefined.
-If there are several authors, their
-names must be separated by \verb+\and+. The authors that share the
-same address must be listed consecutively and must be followed by
-\verb+\thanks{. . .}+ (with the address as argument). To see an example
-you can see the code of this file.
-\subsection{Sectioning}
-The use of \verb+\section{. . . }+ and \verb+\subsection{. . . }+
-can be done as in any \LaTeX paper.
-These commands have been redefined so that they
-produce the first level and second level headers in the proper format.
-All the other sectioning commands have been redefined with a coherent
-style.
-The command \verb+\section*{References}+ can be used to start
-the reference list. One of the following sections is just a test of
-the various sectioning commands.
-\section{Test of sectioning (1st level)}
-\subsection{Test of sectioning (2nd level)}
-\subsubsection{Test of sectioning (3rd level)}
-This is just an example of the use and abuse
-of \verb+\section+, \verb+\subsection+ and
-\verb+\subsubsection+. We can also test \verb+\paragraph+ and
-\verb+\subparagraph+.
-\paragraph{Paragraph} This is a paragraph, headed by \verb+\paragraph+.
-\subparagraph{Subparagraph} This is a sub paragraph. And the section
-end HERE.
-\section{Technicalities}
-\subsection{About the format of the top-matter}
-The main structure of the topmatter is governed by \verb+\@maketitle+
-which is properly redefined. \par\noindent
-The command \verb+\thanks+ has been
-redefined to print the authors' address immediately after the
-authors' names. The new form of this command makes it unsuitable
-to put a note to the title.
-\subsection{Compatibility}
-The package has been used together with the \texttt{article} class
-and with several packages including:
-\texttt{makeidx}, \texttt{amsmath},
-\texttt{amssymb}, \texttt{apalike}, \texttt{array},
-\texttt{epsfig}, \texttt{graphicx} and \texttt{verbatim}.
-I have not found any compatibility problem.
-\section{Some info from the internal documentation}
-\subsection{Important Notes}
-\begin{enumerate}
-\item The files that are distributed are :
-\begin{itemize}
-\item \verb+README.txt+ ,
-\item \verb+procIAGssymp.sty+ ,
-\item \verb+TestprocIAGssymp.tex+ ,
-\item \verb+TestprocIAGssymp.pdf+ .
-\end{itemize}
-\item The copyright holder of this package is its author.
-This program may be used, distributed and/or modified under
-the conditions of the LaTeX Project Public License.
-The latest version of this license is in:
-\texttt{http://www.latex-project.org/lppl.txt}
-\item When this package is used the correspondence between the
-obtained result and any requirement and prescription
-must be judged by the user.
-\item The release of this package on CTAN is a personal initiative
-of its author. The mention of IAG and of the publisher
-of the proceedings of the symposia sponsored by IAG does
-not imply any involvement of these entities in this initiative.
-\end{enumerate}
-\subsection{History}
-\begin{description}
-\item[2000-2002:] development, test, in-house use,
-\item[2002:] released in CTAN,
-\item[2022:] general revision,
-changes in the comments and documentation, new release in CTAN.
-\end{description}
-%
-\subsection{Acknowledgment}
-People listed here after contributed with suggestions.
-Some of them also provided fragments of code. \\
-Claretta Carrara, Nico Snew, Claudio Beccari.
-%
-\section{Recommendation}
-I recommend all the users of the package \texttt{procIAGssymp.sty}
-to send me any comment about it.
-\end{document}
-\endinput
-%%
-%% End of file TestprocIAGssymp.tex
diff --git a/macros/latex/contrib/prociagssymp/procIAGssymp.dtx b/macros/latex/contrib/prociagssymp/procIAGssymp.dtx
new file mode 100644
index 0000000000..e5b82fc82d
--- /dev/null
+++ b/macros/latex/contrib/prociagssymp/procIAGssymp.dtx
@@ -0,0 +1,290 @@
+% \iffalse
+% file: procIAGssymp.dtx
+% author: Battista Benciolini
+% date: 2024-04-08
+%\fi
+% \iffalse
+%<*ins>
+\begingroup
+\input docstrip.tex
+\keepsilent
+\preamble
+-------------------------------------------------------------
+This file is part of the distribution of procIAGssymp.
+The author is Battista Benciolini
+benciolinibattista al gmail dot com
+-------------------------------------------------------------
+The package provides (re-)definitions of some LaTeX commands
+that can be useful for the preparation of a paper with
+the style of the proceeding of symposia sponsored by the
+International Association of Geodesy (IAG).
+-------------------------------------------------------------
+This program may be used, distributed and modified under
+the conditions of the LaTeX Project Public License.
+(see: http://www.latex-project.org/lppl.txt)
+-------------------------------------------------------------
+\endpreamble
+\askforoverwritefalse
+\generate{\file{procIAGssymp.sty}{\from{procIAGssymp.dtx}{package}}}
+\generate{\file{TESTprocIAGssymp.tex}{\from{procIAGssymp.dtx}{example}}}
+\endgroup
+%</ins>
+%\fi
+% \iffalse
+%<*driver>
+\documentclass[a4paper,10pt]{ltxdoc} %
+\title{The package \texttt{procIAGssymp}}
+\author{Battista Benciolini\thanks{contact: benciolinibattista al gmail dot com}}
+\parindent=0pt
+\begin{document}
+\maketitle
+\DocInput{procIAGssymp.dtx}
+\end{document}
+%</driver>
+% \fi
+% \section{Introduction and warnings} The package |procIAGssymp.sty| has
+% been designed to help the formatting of a paper with the style
+% of the proceedings of symposia sponsored by the
+% International Association of Geodesy (IAG).
+% \par
+% I have not recently checked the instruction from
+% the publisher of the proceedings of IAG-sponsored-symposia.
+% They probably changed since the time this code has been prepared.
+% I presume that official more refined and
+% up-to-date class or style files
+% are now available from the publisher.
+% This package is therefore not as useful
+% as it was at the time of it's first publication,
+% but it is pehaps still conveniet for some user.
+% \par
+% The release of this package on CTAN is a personal initiative
+% of its author. The mention of IAG and of the publisher
+% of the proceedings of the symposia sponsored by IAG does
+% not imply any involvement of these entities in this initiative.
+% \section{The use of \texttt{procIAGssymp.sty}}
+% \subsection{General informations}
+% Some of the informations of these section are repeated
+% in the test article that is distributed with the package.
+% \par
+% The reccommended class (with option) is:
+% |[a4paper,twocolumn,10pt]{article}|.
+% \subsection{Top-matter}
+% The title and the (list of) author(s) must be prepared with
+% \DescribeMacro{\title}
+% \DescribeMacro{\author}
+% |\title{ . . .}| and |\author{ . . .}| and they will be
+% printed by |\maketitle|.
+% If there are several authors, their
+% \DescribeMacro{\and}
+% names must be separated by |\and|.
+% \DescribeMacro{\thanks}
+% The authors that share the
+% same address must be listed consecutively and must be followed by
+% |\thanks{. . .}| (with the address as argument).
+% The use of |\thanks{. . .}| referred
+% to the title is not appropriate because this command has been redefined.
+% \subsection{Sectioning}
+% \DescribeMacro{\section} % \DescribeMacro{\subsection}
+% The use of |\section{. . . }| and |\subsection{. . . }|
+% can be done as in any \LaTeX\ paper.
+% These commands have been redefined so that they
+% produce the first level and second level headers in the proper format.
+% All the other sectioning commands have been redefined with a coherent style.
+% The command |\section*{References}| can be used to start the reference list.
+% \subsection{Technicalities about the format of the top-matter}
+% The main structure of the topmatter is governed by |\@maketitle|
+% which is properly redefined.
+% The command |\thanks| has been redefined to print the
+% authors' address immediately after the authors' names.
+% The new form of this command makes it unsuitable
+% to put a note to the title.
+% %
+% \section{Acknowledgment}
+% People listed here after contributed with suggestions.
+% Some of them also provided fragments of code.
+% {\large Claretta Carrara, Nico Snew, Claudio Beccari.}
+% %
+% \section{Code of \texttt{procIAGssymp.sty}}
+% \iffalse
+%<*package>
+% \fi
+% \begin{macrocode}
+\ProvidesPackage{procIAGssymp}[2024/04/08]
+% \end{macrocode}
+% \begin{macro}{\@maketitle}
+% The following redefinition of |\@maketitle| is quite simplified with
+% respect to the standard one. The data is not printed; the title is
+% not centered and it is in sans-serif style; the author is no longer
+% in tabular environment; the author and its address are left justified.
+% \begin{macrocode}
+\def\@maketitle{%
+ {\LARGE\sffamily\bfseries\@title}
+ \vskip 6mm%
+ {\lineskip .5em%
+ {\raggedright\@author}}
+ \vskip 6mm%
+ \par
+ \vskip 1.5em}
+% \end{macrocode}
+%\end{macro}
+%
+% The proper behaviour of the command |\and| in relation with |\thanks|
+% require the new conditional named |\ifafterthanks|.
+% It will be used in the redefinition of |\and|.
+% \begin{macrocode}
+\newif\ifafterthanks \afterthanksfalse
+% \end{macrocode}
+% \begin{macro}{\thanks}
+% The macro |\thanks| must be redefined to print the address immediately after
+% the author(s) it refers to.
+% \begin{macrocode}
+\renewcommand{\thanks}[1]{\\ #1 \vskip6mm \global\afterthankstrue}
+% \end{macrocode}
+%\end{macro}
+% \begin{macro}{\and}
+% The macro|\and| must be redefined.
+% \begin{macrocode}
+\renewcommand{\and}{\ifafterthanks\relax \else{\unskip,}\ \fi
+\global\afterthanksfalse}
+% \end{macrocode}
+%\end{macro}
+%
+% \begin{macro}{\section}
+% The command |\section| is redefined to use proper shape and proper spacing.
+% \begin{macrocode}
+\renewcommand\section{\@startsection%
+{section}{1}{0mm}{-3mm}{2mm}%
+{\fontsize{10.95}{13.6}\selectfont\sffamily\bfseries}}%
+% \end{macrocode}
+%\end{macro}
+% \begin{macro}{\subsection}
+% The command |\subsection| is redefined to use proper shape and proper spacing.
+% \begin{macrocode}
+\renewcommand\subsection{\@startsection%
+{subsection}{2}{0mm}{-3mm}{2mm}%
+{\normalfont\sffamily\bfseries}}%
+% \end{macrocode}
+%\end{macro}
+% The first and second order sectioning are generally used. The
+% lower lever sectioning commands are redefined for compatibiliy.
+% \begin{macrocode}
+\renewcommand\subsubsection{\@startsection%
+{subsubsection}{3}{0mm}{-2mm}{2mm}%
+{\normalfont\normalsize\sffamily\bfseries}}%
+\renewcommand\paragraph{\@startsection%
+{paragraph}{4}{0mm}{-2mm}{-1em}%
+{\normalfont\normalsize\sffamily\bfseries}} %
+\renewcommand\subparagraph{\@startsection%
+{subparagraph}{5}{\parindent}{-2mm}{-1em}%
+{\normalfont\normalsize\sffamily\bfseries}}%
+% \end{macrocode}
+% It is also necessary to set some dimensions.
+% \begin{macrocode}
+\textheight224mm
+\textwidth156mm
+\columnsep8mm
+\topmargin0mm
+% \end{macrocode}
+%\begin{macro}{\linea}
+% The new command |\linea|, with Italian name -:) ,
+% can be used to put some space and a rule after the abstract.
+% \begin{macrocode}
+\newcommand{\linea}{\vskip1mm\noindent\rule{74mm}{.5pt}}
+% \end{macrocode}
+%\end{macro}
+% \iffalse
+%</package>
+% \fi
+% \section{Code of \texttt{TESTprocIAGssymp.tex}}
+% The code of |TESTprocIAGssymp.tex| is presented here after.
+% \iffalse
+%<*example>
+% \fi
+% \begin{macrocode}
+\documentclass[a4paper,twocolumn,10pt]{article} %
+\usepackage{procIAGssymp}
+\title{The package procIAGssymp.sty for the formatting
+ of a paper with the style of the proceedings of
+ symposia sponsored by IAG}
+\author{B.Benciolini\thanks{contact: benciolinibattista al gmail dot com}
+\and No Second Author \and No Third Author\thanks{No-Where Institute}}
+\hbadness=10000 \vbadness=10000
+\begin{document}
+\maketitle
+\paragraph{Abstract} The use of the package \texttt{procIAGssymp.sty}
+is explained and tested in this short paper.
+\linea
+\section{Introduction}
+The package \texttt{procIAGssymp.sty} provides some (re-)definitions
+of \LaTeX\ commands. The main pourpose of the present text is to give
+an example of the use of the package \texttt{procIAGssymp.sty}.
+The content is just an essential explenation of the use of the same package.
+\par\noindent Please refer to the file \texttt{procIAGssymp.pdf} for
+a complete documentation and to \texttt{README.txt} for general
+introductory information.
+\section{Suggestions for the user}
+\subsection{General page lay-out}
+The general lay-out of the pages is controlled by some assignment
+made by \texttt{procIAGssymp.sty} and by the use of the class
+\texttt{article} that must be loaded with the proper options, i.e.
+\verb+[a4paper,twocolumn,10pt]+.
+\subsection{Top-matter}
+The title and the author(s) must be prepared with
+\verb+\title{ . . .}+ and \verb+\author{ . . .}+ and they will be
+printed by \verb+\maketitle+.
+If there are several authors, their names must be separated by \verb+\and+.
+The authors that share the same address must be listed consecutively and must
+be followed by \verb+\thanks{. . .}+ (with the address as argument).
+The use of \verb+\thanks{. . .}+ referred to the title is not appropriate
+because this command has been redefined.
+\subsection{More about the format of the top-matter}
+The main structure of the topmatter is governed by \verb+\@maketitle+
+which is properly redefined. \par\noindent
+The command \verb+\thanks+ has been redefined to print the
+authors' address immediately after the authors' names.
+The new form of this command makes it unsuitable
+to put a note to the title.
+\subsection{Sectioning}
+The use of \verb+\section{. . . }+ and \verb+\subsection{. . . }+
+can be done as in any \LaTeX\ paper.
+These commands have been redefined so that they
+produce the first level and second level headers in the proper format. All
+the other sectioning commands have been redefined with a coherent style. The
+command \verb+\section*{References}+ can be used to start the reference list.
+One of the following sections is just a test of the various sectioning commands.
+\section{Test of sectioning (1st level)}
+\subsection{Test of sectioning (2nd level)}
+\subsubsection{Test of sectioning (3rd level)}
+This is just an example of the use and abuse
+of \verb+\section+, \verb+\subsection+ and
+\verb+\subsubsection+. We can also test \verb+\paragraph+ and
+\verb+\subparagraph+.
+\paragraph{Paragraph} This is a paragraph, headed by \verb+\paragraph+.
+\subparagraph{Subparagraph} This is a sub paragraph. And the section
+ends here.
+\section{History}
+\begin{description}
+\item[2000 ... 2002:] development, test, in-house use,
+\item[2002] first released in CTAN,
+\item[2022-05-05] general revision,
+changes in the comments and documentation, new release in CTAN,
+\item[2024-04-08] general revision, changes in the documentation,
+all stuff collected in \texttt{procIAGssymp.dtx},
+new release in CTAN.
+\end{description}
+\section{Recommendation}
+I recommend all the users of the package \texttt{procIAGssymp.sty}
+to send me any comment about it.
+\end{document}
+\endinput
+% \end{macrocode}
+% \iffalse
+%</example >
+% \fi
+%
+% \iffalse
+% The END
+% -------
+% \fi
+% \vfill\centerline{\large ***}\vfill
+%
diff --git a/macros/latex/contrib/prociagssymp/procIAGssymp.pdf b/macros/latex/contrib/prociagssymp/procIAGssymp.pdf
new file mode 100644
index 0000000000..1b97771c8c
--- /dev/null
+++ b/macros/latex/contrib/prociagssymp/procIAGssymp.pdf
Binary files differ
diff --git a/macros/latex/contrib/prociagssymp/procIAGssymp.sty b/macros/latex/contrib/prociagssymp/procIAGssymp.sty
deleted file mode 100644
index 9db8245f92..0000000000
--- a/macros/latex/contrib/prociagssymp/procIAGssymp.sty
+++ /dev/null
@@ -1,174 +0,0 @@
-\ProvidesPackage{procIAGssymp}[2022/05/05]
-%*************************************************
-%* *
-%* This file is *
-%* *
-%* procIAGssymp.sty *
-%* ---------------- *
-%* *
-%* it contains (re-)definitions for the *
-%* proceedings of IAG sponsored symposia *
-%* *
-%* Author: Battista Benciolini *
-%* *
-%* Address: Dip. di Ingegneria Civile *
-%* Ambientale e Meccanica *
-%* Via Mesiano, 77 *
-%* I-38050 Trento *
-%* ITALY *
-%* *
-%* e-mail: Battista.Benciolini@unitn.it *
-%* *
-%*************************************************
-%
-%
-% PURPOSE
-% =======
-%
-% This package provides (re-)definitions of some LaTeX commands
-% that can be useful for the preparation of a paper with
-% the style of the proceeding of symposia sponsored by the
-% International Association of Geodesy (IAG).
-%
-%
-% IMPORTANT NOTES
-% ===============
-%
-% 0- WARNING
-% I have not recently checked the instruction from
-% the publisher of the proceedings of IAG-sponsored-symposia.
-% I presume that "official" more refined and
-% up-to-date "sty" and "cls" files
-% are now available from the publisher.
-% This package is therefore not as useful
-% as it was at the time of it's first publication,
-% but it is pehaps still convenient for some user.
-%
-% 1 - This file is part of a program (in the meaning specified
-% by the LPPL- see next point) that includes:
-% - README.txt
-% - procIAGssymp.sty (= this file)
-% - TestprocIAGssymp.tex (= sample and suggestions)
-% - TestprocIAGssymp.pdf (= sample and suggestions)
-% 2 - The copyright holder of this package is its author.
-% This program may be used, distributed and/or modified under
-% the conditions of the LaTeX Project Public License.
-% The latest version of this license is in:
-% http://www.latex-project.org/lppl.txt
-% 3 - When this package is used the correspondence between the
-% obtained result and any requirement and prescription
-% must be judged by the user.
-% 4 - The release of this package on CTAN is a personal initiative of
-% its author. The mention of IAG and of the publisher
-% of the procedings of the symposia sponsored by IAG does
-% not imply any involvement of these entities in this initiative.
-%
-%
-% HISTORY
-% =======
-% 2000-2002 : development, test, in-house use
-% 2002 : released in CTAN
-% 2022 : general revision,
-% small changes in the comments and documentation,
-% new release in CTAN
-%
-%
-% AKNOWLEDGMENT
-% =============
-%
-% People listed here after contributed with suggestions.
-% Some of them also provided fragments of code.
-% Claretta Carrara, Nico Snew, Claudio Beccari.
-%
-% --------------------------------------------------------------------
-%
-%
-% The following redefinition of \@maketitle is quite simplified with
-% respect to the standard one. The data is not printed; the title is
-% not centered and it is in sans-serif style; the author is no longer
-% in tabular environment; the author and its address are left justified.
-\def\@maketitle{%
- %% \newpage
- %% \null
- {\LARGE\sffamily\bfseries\@title}
- \vskip 6mm%
- {%\large
- \lineskip .5em%
- {\raggedright\@author}}
- \vskip 6mm%
- \par
- \vskip 1.5em}% end of\@maketitle
-%
-%
-% a new if, used to govern the behaviour
-% of \and in relation with \thanks
-\newif\ifafterthanks \afterthanksfalse
-%
-% redefinition of \thanks, to print the address immediately after
-% the author(s) it refers to
-\renewcommand{\thanks}[1]{\\ #1 \vskip6mm \global\afterthankstrue}
-%
-% redefinition of \and
-\renewcommand{\and}{\ifafterthanks\relax \else{\unskip,}\ \fi
-\global\afterthanksfalse}
-%
-%
-% redefinition of sectioning commands tu use proper font and spacing
-% 1st and 2nd order headings (section and subsrcion)
-%%% WARNING : is character size correct ??
-%
-\renewcommand\section{\@startsection%
-{section}%
-{1}% %level
-{0mm}% %indent
-{-3mm}% %beforeskip
-{2mm}% %afterskip
-{\fontsize{10.95}{13.6}\selectfont\sffamily\bfseries}} %style
-%
-\renewcommand\subsection{\@startsection%
-{subsection}%
-{2}% %level
-{0mm}% %indent
-{-3mm}% %beforeskip
-{2mm}% %afterskip
-{\normalfont\sffamily\bfseries}} %style
-%
-% higher order headings (subsubsection, paragraph and subparagraph)
-%
-\renewcommand\subsubsection{\@startsection%
-{subsubsection}%
-{3}% %level
-{0mm}% %indent
-{-2mm}% %beforeskip
-{2mm}% %afterskip
-{\normalfont\normalsize\sffamily\bfseries}} %style
-%
-\renewcommand\paragraph{\@startsection%
-{paragraph}%
-{4}% %level
-{0mm}% %indent
-{-2mm}% %beforeskip
-{-1em}% %afterskip
-{\normalfont\normalsize\sffamily\bfseries}} %style
-%
-\renewcommand\subparagraph{\@startsection%
-{subparagraph}%
-{5}% %level
-{\parindent}% %indent
-{-2mm}% %beforeskip
-{-1em}% %afterskip
-{\normalfont\normalsize\sffamily\bfseries}} %style
-%
-% margins and unitlength
-\textheight224mm
-\textwidth156mm
-\columnsep8mm
-\topmargin0mm
-\setlength{\unitlength}{1mm}
-%
-%
-% the new command \linea, with Italian name -:) ,
-% can be used to put some space and a rule after the abstract
-\newcommand{\linea}{\vskip1mm\noindent\rule{74mm}{.5pt}}
-%
-% end end end