summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-07-08 03:00:51 +0000
committerNorbert Preining <norbert@preining.info>2021-07-08 03:00:51 +0000
commitf008fc632f906448b4bdbc5cd96ab7d98e68b0b9 (patch)
tree1bd4642b99cce05d6ca1dde2577729d865f402c8 /macros/latex
parent4747884efc69f5b8ad51cc818467f7bbf428b815 (diff)
CTAN sync 202107080300
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/thubeamer/License415
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/thubeamer/Makefile18
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/thubeamer/README.md133
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/thubeamer/figures/thulogo.pdfbin0 -> 111420 bytes
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/thubeamer/macros.tex138
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/thubeamer/makebeamer.bat5
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/thubeamer/makeclean.bat20
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/thubeamer/makecleanall.bat22
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/thubeamer/makedoc.bat5
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/thubeamer/reference.bib140
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer-example.pdfbin0 -> 406590 bytes
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer-example.tex250
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer.bst1978
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer.dtx722
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer.pdfbin0 -> 199474 bytes
-rw-r--r--macros/latex/contrib/changes/changes.drv2
-rw-r--r--macros/latex/contrib/changes/changes.dtx140
-rw-r--r--macros/latex/contrib/changes/changes.english.pdfbin369142 -> 370498 bytes
-rw-r--r--macros/latex/contrib/changes/changes.english.withcode.pdfbin454516 -> 458130 bytes
-rw-r--r--macros/latex/contrib/changes/changes.ins16
-rw-r--r--macros/latex/contrib/changes/changes.ngerman.pdfbin376580 -> 378112 bytes
-rw-r--r--macros/latex/contrib/changes/examples.dtx154
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.addedmarkup.bf.pdfbin85486 -> 97326 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.addedmarkup.colored.pdfbin82295 -> 94008 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.addedmarkup.dashuline.pdfbin82935 -> 94795 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.addedmarkup.dotuline.pdfbin82553 -> 94649 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.addedmarkup.em.pdfbin83749 -> 95281 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.addedmarkup.it.pdfbin83749 -> 95656 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.addedmarkup.sl.pdfbin84735 -> 96366 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.addedmarkup.uline.pdfbin82746 -> 94615 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.addedmarkup.uuline.pdfbin85371 -> 97239 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.addedmarkup.uwave.pdfbin84759 -> 96596 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.addedmarkup.wrong.pdfbin82295 -> 94098 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.authormarkup.brackets.pdfbin74370 -> 86116 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.authormarkup.footnote.pdfbin99663 -> 111392 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.authormarkup.none.pdfbin73913 -> 85486 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.authormarkup.subscript.pdfbin82294 -> 94273 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.authormarkup.superscript.pdfbin82295 -> 94104 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.authormarkup.wrong.pdfbin82295 -> 94057 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.authormarkupposition.left.pdfbin82295 -> 94349 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.authormarkupposition.right.pdfbin82295 -> 94104 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.authormarkupposition.wrong.pdfbin82295 -> 94303 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.authormarkuptext.id.pdfbin82295 -> 94464 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.authormarkuptext.name.pdfbin83846 -> 97319 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.authormarkuptext.wrong.pdfbin82295 -> 94235 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.commandnameprefix.always.pdfbin82295 -> 94948 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.commandnameprefix.ifneeded.pdfbin82295 -> 94489 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.commandnameprefix.none.pdfbin82295 -> 94482 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.commandnameprefix.wrong.pdfbin82295 -> 94673 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.commentmarkup.footnote.pdfbin110514 -> 122220 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.commentmarkup.margin.pdfbin78953 -> 90782 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.commentmarkup.todo.pdfbin82295 -> 94049 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.commentmarkup.uwave.pdfbin81965 -> 94148 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.commentmarkup.wrong.pdfbin0 -> 94057 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.defaultcolor.pdfbin82299 -> 94285 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.deletedmarkup.bf.pdfbin84982 -> 97064 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.deletedmarkup.colored.pdfbin81125 -> 92984 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.deletedmarkup.dashuline.pdfbin82590 -> 94572 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.deletedmarkup.dotuline.pdfbin81687 -> 93750 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.deletedmarkup.em.pdfbin82891 -> 94641 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.deletedmarkup.it.pdfbin82891 -> 94875 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.deletedmarkup.sl.pdfbin85110 -> 96849 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.deletedmarkup.sout.pdfbin82295 -> 94147 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.deletedmarkup.uline.pdfbin82291 -> 94280 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.deletedmarkup.uuline.pdfbin88402 -> 100430 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.deletedmarkup.uwave.pdfbin83877 -> 95933 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.deletedmarkup.wrong.pdfbin82295 -> 94339 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.deletedmarkup.xout.pdfbin81521 -> 93544 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.draft.pdfbin82295 -> 93748 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.final.pdfbin68141 -> 79469 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.highlightmarkup.background.pdfbin82295 -> 94570 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.highlightmarkup.uuline.pdfbin82970 -> 94774 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.highlightmarkup.uwave.pdfbin84357 -> 96494 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.highlightmarkup.wrong.pdfbin0 -> 94396 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.language.british.pdfbin0 -> 101693 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.language.english.pdfbin0 -> 101521 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.language.french.pdfbin0 -> 102637 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.language.german.pdfbin0 -> 102351 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.language.italian.pdfbin0 -> 101650 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.language.ngerman.pdfbin0 -> 102351 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.listofchanges.all.pdfbin88827 -> 101072 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.listofchanges.compactsummary.pdfbin86747 -> 99018 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.listofchanges.list.pdfbin84996 -> 96227 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.listofchanges.show.pdfbin89128 -> 102974 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.listofchanges.summary.pdfbin97975 -> 98503 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.listofchanges.title.pdfbin88389 -> 101509 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.listofchanges.wrong.pdfbin84996 -> 96944 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.markup.bfit.pdfbin86058 -> 98081 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.markup.default.pdfbin82295 -> 94179 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.markup.nocolor.pdfbin84681 -> 96233 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.markup.underlined.pdfbin84812 -> 96684 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.markup.wrong.pdfbin82295 -> 93926 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.package.hyperref.pdfbin97399 -> 98269 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.packageoptions.todonotes.pdfbin104166 -> 116920 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.packageoptions.truncate.pdfbin83517 -> 95366 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.packageoptions.ulem.pdfbin75270 -> 87708 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.packageoptions.xcolor.pdfbin84182 -> 96528 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.screenshot.pdfbin143467 -> 143467 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.setaddedmarkup.pdfbin94860 -> 94860 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.setanonymousname.pdfbin0 -> 103987 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.setauthormarkup.pdfbin85414 -> 85414 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.setauthormarkupposition.pdfbin93585 -> 93585 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.setauthormarkuptext.pdfbin94839 -> 96561 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.setcommentmarkup.pdfbin94058 -> 94058 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.setdeletedmarkup.pdfbin94091 -> 94091 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.sethighlightmarkup.pdfbin93929 -> 93929 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.setlocextension.pdfbin99681 -> 101105 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.setsocextension.pdfbin99585 -> 101103 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.setsummarytowidth.pdfbin98926 -> 99253 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.setsummarywidth.pdfbin97786 -> 98920 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.settruncatewidth.pdfbin96380 -> 97128 bytes
-rw-r--r--macros/latex/contrib/changes/examples/changes.example.simple.pdfbin92919 -> 92919 bytes
-rw-r--r--macros/latex/contrib/changes/regression.dtx11
-rw-r--r--macros/latex/contrib/changes/userdoc/changes.de.tex13
-rw-r--r--macros/latex/contrib/changes/userdoc/changes.en.tex12
-rw-r--r--macros/latex/contrib/changes/userdoc/setanonymousname_ex.tex2
-rw-r--r--macros/latex/contrib/changes/userdoc/setanonymousname_in.tex1
-rw-r--r--macros/latex/contrib/huawei/DEPENDS.txt2
-rw-r--r--macros/latex/contrib/huawei/README.md2
-rw-r--r--macros/latex/contrib/huawei/huawei.cls37
-rw-r--r--macros/latex/contrib/huawei/huawei.pdfbin336511 -> 336670 bytes
-rw-r--r--macros/latex/contrib/huawei/huawei.tex4
-rw-r--r--macros/latex/contrib/huawei/samples/huawei-cfp.tex2
-rw-r--r--macros/latex/contrib/tudscr/README.md17
-rw-r--r--macros/latex/contrib/tudscr/doc/LICENSE.md8
-rw-r--r--macros/latex/contrib/tudscr/doc/tudscr.pdfbin1099181 -> 1149095 bytes
-rw-r--r--macros/latex/contrib/tudscr/doc/tudscr_print.pdfbin1083765 -> 1133762 bytes
-rw-r--r--macros/latex/contrib/tudscr/doc/tudscrsource.pdfbin1055711 -> 1074794 bytes
-rw-r--r--macros/latex/contrib/tudscr/doc/tutorials/mathswap.pdfbin121768 -> 128941 bytes
-rw-r--r--macros/latex/contrib/tudscr/doc/tutorials/mathtype.pdfbin138619 -> 148136 bytes
-rw-r--r--macros/latex/contrib/tudscr/doc/tutorials/treatise.pdfbin857680 -> 896761 bytes
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tudscr-installation.tex10
-rw-r--r--macros/latex/contrib/tudscr/source/doc/tudscr.tex2
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-comp.dtx8
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-fonts.dtx53
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-misc.dtx12
-rw-r--r--macros/latex/contrib/tudscr/source/tudscr-version.dtx2
-rw-r--r--macros/latex/contrib/upmethodology/doc/upmethodology-doc.pdfbin323938 -> 326776 bytes
-rw-r--r--macros/latex/contrib/upmethodology/doc/upmethodology-doc.tex48
-rw-r--r--macros/latex/contrib/upmethodology/src/UPMVERSION.def2
-rw-r--r--macros/latex/contrib/upmethodology/src/upmethodology-backpage.sty4
-rw-r--r--macros/latex/contrib/upmethodology/src/upmethodology-code.sty4
-rw-r--r--macros/latex/contrib/upmethodology/src/upmethodology-document.cls4
-rw-r--r--macros/latex/contrib/upmethodology/src/upmethodology-document.sty4
-rw-r--r--macros/latex/contrib/upmethodology/src/upmethodology-extension.sty4
-rw-r--r--macros/latex/contrib/upmethodology/src/upmethodology-fmt.sty45
-rw-r--r--macros/latex/contrib/upmethodology/src/upmethodology-frontpage.sty4
-rw-r--r--macros/latex/contrib/upmethodology/src/upmethodology-p-common.sty4
-rw-r--r--macros/latex/contrib/upmethodology/src/upmethodology-spec.sty4
-rw-r--r--macros/latex/contrib/upmethodology/src/upmethodology-task.sty4
-rw-r--r--macros/latex/contrib/upmethodology/src/upmethodology-version.sty4
151 files changed, 4352 insertions, 139 deletions
diff --git a/macros/latex/contrib/beamer-contrib/themes/thubeamer/License b/macros/latex/contrib/beamer-contrib/themes/thubeamer/License
new file mode 100644
index 0000000000..4db9b5af29
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/thubeamer/License
@@ -0,0 +1,415 @@
+The LaTeX Project Public License
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+LPPL Version 1.3c 2008-05-04
+
+Copyright 1999 2002-2008 LaTeX3 Project
+ Everyone is allowed to distribute verbatim copies of this
+ license document, but modification of it is not allowed.
+
+
+PREAMBLE
+========
+
+The LaTeX Project Public License (LPPL) is the primary license under
+which the LaTeX kernel and the base LaTeX packages are distributed.
+
+You may use this license for any work of which you hold the copyright
+and which you wish to distribute. This license may be particularly
+suitable if your work is TeX-related (such as a LaTeX package), but
+it is written in such a way that you can use it even if your work is
+unrelated to TeX.
+
+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
+below, gives instructions, examples, and recommendations for authors
+who are considering distributing their works under this license.
+
+This license gives conditions under which a work may be distributed
+and modified, as well as conditions under which modified versions of
+that work may be distributed.
+
+We, the LaTeX3 Project, believe that the conditions below give you
+the freedom to make and distribute modified versions of your work
+that conform with whatever technical specifications you wish while
+maintaining the availability, integrity, and reliability of
+that work. If you do not see how to achieve your goal while
+meeting these conditions, then read the document `cfgguide.tex'
+and `modguide.tex' in the base LaTeX distribution for suggestions.
+
+
+DEFINITIONS
+===========
+
+In this license document the following terms are used:
+
+ `Work'
+ Any work being distributed under this License.
+
+ `Derived Work'
+ Any work that under any applicable law is derived from the Work.
+
+ `Modification'
+ Any procedure that produces a Derived Work under any applicable
+ law -- for example, the production of a file containing an
+ original file associated with the Work or a significant portion of
+ such a file, either verbatim or with modifications and/or
+ translated into another language.
+
+ `Modify'
+ To apply any procedure that produces a Derived Work under any
+ applicable law.
+
+ `Distribution'
+ Making copies of the Work available from one person to another, in
+ whole or in part. Distribution includes (but is not limited to)
+ making any electronic components of the Work accessible by
+ file transfer protocols such as FTP or HTTP or by shared file
+ systems such as Sun's Network File System (NFS).
+
+ `Compiled Work'
+ A version of the Work that has been processed into a form where it
+ is directly usable on a computer system. This processing may
+ include using installation facilities provided by the Work,
+ transformations of the Work, copying of components of the Work, or
+ other activities. Note that modification of any installation
+ facilities provided by the Work constitutes modification of the Work.
+
+ `Current Maintainer'
+ A person or persons nominated as such within the Work. If there is
+ no such explicit nomination then it is the `Copyright Holder' under
+ any applicable law.
+
+ `Base Interpreter'
+ A program or process that is normally needed for running or
+ interpreting a part or the whole of the Work.
+
+ A Base Interpreter may depend on external components but these
+ are not considered part of the Base Interpreter provided that each
+ external component clearly identifies itself whenever it is used
+ interactively. Unless explicitly specified when applying the
+ license to the Work, the only applicable Base Interpreter is a
+ `LaTeX-Format' or in the case of files belonging to the
+ `LaTeX-format' a program implementing the `TeX language'.
+
+
+
+CONDITIONS ON DISTRIBUTION AND MODIFICATION
+===========================================
+
+1. Activities other than distribution and/or modification of the Work
+are not covered by this license; they are outside its scope. In
+particular, the act of running the Work is not restricted and no
+requirements are made concerning any offers of support for the Work.
+
+2. You may distribute a complete, unmodified copy of the Work as you
+received it. Distribution of only part of the Work is considered
+modification of the Work, and no right to distribute such a Derived
+Work may be assumed under the terms of this clause.
+
+3. You may distribute a Compiled Work that has been generated from a
+complete, unmodified copy of the Work as distributed under Clause 2
+above, as long as that Compiled Work is distributed in such a way that
+the recipients may install the Compiled Work on their system exactly
+as it would have been installed if they generated a Compiled Work
+directly from the Work.
+
+4. If you are the Current Maintainer of the Work, you may, without
+restriction, modify the Work, thus creating a Derived Work. You may
+also distribute the Derived Work without restriction, including
+Compiled Works generated from the Derived Work. Derived Works
+distributed in this manner by the Current Maintainer are considered to
+be updated versions of the Work.
+
+5. If you are not the Current Maintainer of the Work, you may modify
+your copy of the Work, thus creating a Derived Work based on the Work,
+and compile this Derived Work, thus creating a Compiled Work based on
+the Derived Work.
+
+6. If you are not the Current Maintainer of the Work, you may
+distribute a Derived Work provided the following conditions are met
+for every component of the Work unless that component clearly states
+in the copyright notice that it is exempt from that condition. Only
+the Current Maintainer is allowed to add such statements of exemption
+to a component of the Work.
+
+ a. If a component of this Derived Work can be a direct replacement
+ for a component of the Work when that component is used with the
+ Base Interpreter, then, wherever this component of the Work
+ identifies itself to the user when used interactively with that
+ Base Interpreter, the replacement component of this Derived Work
+ clearly and unambiguously identifies itself as a modified version
+ of this component to the user when used interactively with that
+ Base Interpreter.
+
+ b. Every component of the Derived Work contains prominent notices
+ detailing the nature of the changes to that component, or a
+ prominent reference to another file that is distributed as part
+ of the Derived Work and that contains a complete and accurate log
+ of the changes.
+
+ c. No information in the Derived Work implies that any persons,
+ including (but not limited to) the authors of the original version
+ of the Work, provide any support, including (but not limited to)
+ the reporting and handling of errors, to recipients of the
+ Derived Work unless those persons have stated explicitly that
+ they do provide such support for the Derived Work.
+
+ d. You distribute at least one of the following with the Derived Work:
+
+ 1. A complete, unmodified copy of the Work;
+ if your distribution of a modified component is made by
+ offering access to copy the modified component from a
+ designated place, then offering equivalent access to copy
+ the Work from the same or some similar place meets this
+ condition, even though third parties are not compelled to
+ copy the Work along with the modified component;
+
+ 2. Information that is sufficient to obtain a complete,
+ unmodified copy of the Work.
+
+7. If you are not the Current Maintainer of the Work, you may
+distribute a Compiled Work generated from a Derived Work, as long as
+the Derived Work is distributed to all recipients of the Compiled
+Work, and as long as the conditions of Clause 6, above, are met with
+regard to the Derived Work.
+
+8. The conditions above are not intended to prohibit, and hence do not
+apply to, the modification, by any method, of any component so that it
+becomes identical to an updated version of that component of the Work as
+it is distributed by the Current Maintainer under Clause 4, above.
+
+9. Distribution of the Work or any Derived Work in an alternative
+format, where the Work or that Derived Work (in whole or in part) is
+then produced by applying some process to that format, does not relax or
+nullify any sections of this license as they pertain to the results of
+applying that process.
+
+10. a. A Derived Work may be distributed under a different license
+ provided that license itself honors the conditions listed in
+ Clause 6 above, in regard to the Work, though it does not have
+ to honor the rest of the conditions in this license.
+
+ b. If a Derived Work is distributed under a different license, that
+ Derived Work must provide sufficient documentation as part of
+ itself to allow each recipient of that Derived Work to honor the
+ restrictions in Clause 6 above, concerning changes from the Work.
+
+11. This license places no restrictions on works that are unrelated to
+the Work, nor does this license place any restrictions on aggregating
+such works with the Work by any means.
+
+12. Nothing in this license is intended to, or may be used to, prevent
+complete compliance by all parties with all applicable laws.
+
+
+NO WARRANTY
+===========
+
+There is no warranty for the Work. Except when otherwise stated in
+writing, the Copyright Holder provides the Work `as is', without
+warranty of any kind, either expressed or implied, including, but not
+limited to, the implied warranties of merchantability and fitness for a
+particular purpose. The entire risk as to the quality and performance
+of the Work is with you. Should the Work prove defective, you assume
+the cost of all necessary servicing, repair, or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will The Copyright Holder, or any author named in the components of the
+Work, or any other party who may distribute and/or modify the Work as
+permitted above, be liable to you for damages, including any general,
+special, incidental or consequential damages arising out of any use of
+the Work or out of inability to use the Work (including, but not limited
+to, loss of data, data being rendered inaccurate, or losses sustained by
+anyone as a result of any failure of the Work to operate with any other
+programs), even if the Copyright Holder or said author or said other
+party has been advised of the possibility of such damages.
+
+
+MAINTENANCE OF THE WORK
+=======================
+
+The Work has the status `author-maintained' if the Copyright Holder
+explicitly and prominently states near the primary copyright notice in
+the Work that the Work can only be maintained by the Copyright Holder
+or simply that it is `author-maintained'.
+
+The Work has the status `maintained' if there is a Current Maintainer
+who has indicated in the Work that they are willing to receive error
+reports for the Work (for example, by supplying a valid e-mail
+address). It is not required for the Current Maintainer to acknowledge
+or act upon these error reports.
+
+The Work changes from status `maintained' to `unmaintained' if there
+is no Current Maintainer, or the person stated to be Current
+Maintainer of the work cannot be reached through the indicated means
+of communication for a period of six months, and there are no other
+significant signs of active maintenance.
+
+You can become the Current Maintainer of the Work by agreement with
+any existing Current Maintainer to take over this role.
+
+If the Work is unmaintained, you can become the Current Maintainer of
+the Work through the following steps:
+
+ 1. Make a reasonable attempt to trace the Current Maintainer (and
+ the Copyright Holder, if the two differ) through the means of
+ an Internet or similar search.
+
+ 2. If this search is successful, then enquire whether the Work
+ is still maintained.
+
+ a. If it is being maintained, then ask the Current Maintainer
+ to update their communication data within one month.
+
+ b. If the search is unsuccessful or no action to resume active
+ maintenance is taken by the Current Maintainer, then announce
+ within the pertinent community your intention to take over
+ maintenance. (If the Work is a LaTeX work, this could be
+ done, for example, by posting to comp.text.tex.)
+
+ 3a. If the Current Maintainer is reachable and agrees to pass
+ maintenance of the Work to you, then this takes effect
+ immediately upon announcement.
+
+ b. If the Current Maintainer is not reachable and the Copyright
+ Holder agrees that maintenance of the Work be passed to you,
+ then this takes effect immediately upon announcement.
+
+ 4. If you make an `intention announcement' as described in 2b. above
+ and after three months your intention is challenged neither by
+ the Current Maintainer nor by the Copyright Holder nor by other
+ people, then you may arrange for the Work to be changed so as
+ to name you as the (new) Current Maintainer.
+
+ 5. If the previously unreachable Current Maintainer becomes
+ reachable once more within three months of a change completed
+ under the terms of 3b) or 4), then that Current Maintainer must
+ become or remain the Current Maintainer upon request provided
+ they then update their communication data within one month.
+
+A change in the Current Maintainer does not, of itself, alter the fact
+that the Work is distributed under the LPPL license.
+
+If you become the Current Maintainer of the Work, you should
+immediately provide, within the Work, a prominent and unambiguous
+statement of your status as Current Maintainer. You should also
+announce your new status to the same pertinent community as
+in 2b) above.
+
+
+WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
+======================================================
+
+This section contains important instructions, examples, and
+recommendations for authors who are considering distributing their
+works under this license. These authors are addressed as `you' in
+this section.
+
+Choosing This License or Another License
+----------------------------------------
+
+If for any part of your work you want or need to use *distribution*
+conditions that differ significantly from those in this license, then
+do not refer to this license anywhere in your work but, instead,
+distribute your work under a different license. You may use the text
+of this license as a model for your own license, but your license
+should not refer to the LPPL or otherwise give the impression that
+your work is distributed under the LPPL.
+
+The document `modguide.tex' in the base LaTeX distribution explains
+the motivation behind the conditions of this license. It explains,
+for example, why distributing LaTeX under the GNU General Public
+License (GPL) was considered inappropriate. Even if your work is
+unrelated to LaTeX, the discussion in `modguide.tex' may still be
+relevant, and authors intending to distribute their works under any
+license are encouraged to read it.
+
+A Recommendation on Modification Without Distribution
+-----------------------------------------------------
+
+It is wise never to modify a component of the Work, even for your own
+personal use, without also meeting the above conditions for
+distributing the modified component. While you might intend that such
+modifications will never be distributed, often this will happen by
+accident -- you may forget that you have modified that component; or
+it may not occur to you when allowing others to access the modified
+version that you are thus distributing it and violating the conditions
+of this license in ways that could have legal implications and, worse,
+cause problems for the community. It is therefore usually in your
+best interest to keep your copy of the Work identical with the public
+one. Many works provide ways to control the behavior of that work
+without altering any of its licensed components.
+
+How to Use This License
+-----------------------
+
+To use this license, place in each of the components of your work both
+an explicit copyright notice including your name and the year the work
+was authored and/or last substantially modified. Include also a
+statement that the distribution and/or modification of that
+component is constrained by the conditions in this license.
+
+Here is an example of such a notice and statement:
+
+ %% pig.dtx
+ %% Copyright 2005 M. Y. Name
+ %
+ % This work may be distributed and/or modified under the
+ % conditions of the LaTeX Project Public License, either version 1.3
+ % of this license or (at your option) any later version.
+ % The latest version of this license is in
+ % http://www.latex-project.org/lppl.txt
+ % and version 1.3 or later is part of all distributions of LaTeX
+ % version 2005/12/01 or later.
+ %
+ % This work has the LPPL maintenance status `maintained'.
+ %
+ % The Current Maintainer of this work is M. Y. Name.
+ %
+ % This work consists of the files pig.dtx and pig.ins
+ % and the derived file pig.sty.
+
+Given such a notice and statement in a file, the conditions
+given in this license document would apply, with the `Work' referring
+to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
+generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
+referring to any `LaTeX-Format', and both `Copyright Holder' and
+`Current Maintainer' referring to the person `M. Y. Name'.
+
+If you do not want the Maintenance section of LPPL to apply to your
+Work, change `maintained' above into `author-maintained'.
+However, we recommend that you use `maintained', as the Maintenance
+section was added in order to ensure that your Work remains useful to
+the community even when you can no longer maintain and support it
+yourself.
+
+Derived Works That Are Not Replacements
+---------------------------------------
+
+Several clauses of the LPPL specify means to provide reliability and
+stability for the user community. They therefore concern themselves
+with the case that a Derived Work is intended to be used as a
+(compatible or incompatible) replacement of the original Work. If
+this is not the case (e.g., if a few lines of code are reused for a
+completely different task), then clauses 6b and 6d shall not apply.
+
+
+Important Recommendations
+-------------------------
+
+ Defining What Constitutes the Work
+
+ The LPPL requires that distributions of the Work contain all the
+ files of the Work. It is therefore important that you provide a
+ way for the licensee to determine which files constitute the Work.
+ This could, for example, be achieved by explicitly listing all the
+ files of the Work near the copyright notice of each file or by
+ using a line such as:
+
+ % This work consists of all files listed in manifest.txt.
+
+ in that place. In the absence of an unequivocal list it might be
+ impossible for the licensee to determine what is considered by you
+ to comprise the Work and, in such a case, the licensee would be
+ entitled to make reasonable conjectures as to which files comprise
+ the Work.
diff --git a/macros/latex/contrib/beamer-contrib/themes/thubeamer/Makefile b/macros/latex/contrib/beamer-contrib/themes/thubeamer/Makefile
new file mode 100644
index 0000000000..28ec55e5e5
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/thubeamer/Makefile
@@ -0,0 +1,18 @@
+beamer:
+ pdflatex -synctex=1 -interaction=nonstopmode main
+ bibtex main
+ pdflatex -synctex=1 -interaction=nonstopmode main
+ pdflatex -synctex=1 -interaction=nonstopmode main
+
+doc:
+ xelatex hitszbeamer.dtx
+ makeindex -s gind.ist -o hitszbeamer.ind hitszbeamer.idx
+ makeindex -s gglo.ist -o hitszbeamer.gls hitszbeamer.glo
+ xelatex hitszbeamer.dtx
+ xelatex hitszbeamer.dtx
+
+clean:
+ rm -f *.toc *.bbl *.blg *.out *.aux *.log *.bak *.thm *.synctex.gz *.fdb_latexmk *.fls *.glo *.gls *.idx *.ilg *.ind *.nav *.snm *.hd
+
+cleanall:
+ rm -f *.toc *.bbl *.blg *.out *.aux *.log *.bak *.thm *.synctex.gz *.fdb_latexmk *.fls *.glo *.gls *.idx *.ilg *.ind *.nav *.snm *.hd *.sty *.ins \ No newline at end of file
diff --git a/macros/latex/contrib/beamer-contrib/themes/thubeamer/README.md b/macros/latex/contrib/beamer-contrib/themes/thubeamer/README.md
new file mode 100644
index 0000000000..99ac44a9bd
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/thubeamer/README.md
@@ -0,0 +1,133 @@
+<!-- Author : Jingxuan Yang-->
+<!-- Program Email: yanglatex2e@gmail.com -->
+
+# thubeamer: A Beamer Theme for Tsinghua University (THU)
+
+# thubeamer:清华大学 Beamer 模板
+
+[GitHub](https://github.com/YangLaTeX/thubeamer) | [Download](https://github.com/YangLaTeX/thubeamer/releases) | [Wiki](https://github.com/YangLaTeX/thubeamer/wiki) | [CTAN](https://www.ctan.org/pkg/thubeamer)
+
+# Introduction to thubeamer
+
+**thubeamer** is a **beamer theme** designed for Tsinghua University (THU). Current version is 1.0.0, updated on 2021/07/07.
+
+```latex
+ |- figures
+ |- thulogo.pdf
+ |- macros.tex
+ |- main.tex
+ |- main.pdf
+ |- makebeamer.bat
+ |- makeclean.bat
+ |- makecleanall.bat
+ |- makedoc.bat
+ |- Makefile
+ |- README.md
+ |- reference.bib
+ |- thubeamer.bst
+ |- thubeamer.dtx
+ |- thubeamer.pdf
+```
+
+# thubeamer 简介
+
+thubeamer 是清华大学风格 Beamer 模板,当前版本1.0.0,更新于2021年07月07日。
+
+# Documentation
+
+Download and unzip the template. Specific usage documentation and examples can be found in the files below:
+
+* Template usage (thubeamer.pdf, in Chinese)
+* Template example (main.pdf, in Chinese)
+* Brief Introduction (README.md, both in Chinese and English)
+
+# 说明文档
+
+下载并解压本模板,文件夹中包含以下说明文档:
+
+* 模板开发文档(thubeamer.pdf,中文版)
+* 模板撰写示例(main.pdf,中文版)
+* 模板简介(README.md,中英双语)
+
+# Downloads
+
+* Published version: [CTAN](https://www.ctan.org/pkg/thubeamer)
+* Developer version: [GitHub](https://github.com/YangLaTeX/thubeamer)
+
+# 下载
+
+* 发布版本:[CTAN](https://www.ctan.org/pkg/thubeamer)
+* 开发版本:[GitHub](https://github.com/YangLaTeX/thubeamer)
+
+# Reporting Issues
+
+Please follow the procedure below:
+
+* [GitHub Issues](https://github.com/YangLaTeX/thubeamer/issues)
+* [Educational Email](mailto:yangjx20@mails.tsinghua.edu.cn)
+* [Gmail](mailto:yanglatex2e@gmail.com)
+
+# 模板问题反馈
+
+请按照以下顺序反馈问题:
+
+* [GitHub 问题反馈](https://github.com/YangLaTeX/thubeamer/issues)
+* [教育邮箱](mailto:yangjx20@mails.tsinghua.edu.cn)
+* [Gmail 邮箱](mailto:yanglatex2e@gmail.com)
+
+# Makefile Usage
+
+To use Makefile, you should have GNU `make` tool installed.
+
+```bash
+make doc # compile documentation (required before compiling the beamer)
+make beamer # compile beamer
+make clean # clean auxiliary files
+make cleanall # clean auxiliary files and style files
+```
+
+# 使用 Makefile
+
+使用Makefile之前请确保已安装GNU `make`工具。
+
+```bash
+make doc # 编译说明文档(在编译 beamer之前必须编译说明文档)
+make beamer # 编译 beamer
+make clean # 清除辅助文件
+make cleanall # 清除辅助文件与样式文件
+```
+
+# batch Usage
+
+`makedoc.bat`, `makebeamer.bat`, `makeclean.bat` and `makecleanall` are designed for windows platform. Double click these files, then they will echo corresponding functions automatically.
+
+```bash
+makedoc # compile documentation (required before compiling the beamer)
+makebeamer # compile beamer
+makeclean # clean auxiliary files
+makecleanall # clean auxiliary files and style files
+```
+
+# 使用编译脚本
+
+`makedoc.bat`、`makebeamer.bat`、`makeclean.bat`与`makecleanall`为windows编译脚本,双击即可执行相应的功能。
+
+```bash
+makedoc # 编译说明文档(在编译 beamer之前必须编译说明文档)
+makebeamer # 编译 beamer
+makeclean # 清除辅助文件
+makecleanall # 清除辅助文件与样式文件
+```
+
+# License
+
+This material is subject to the [LATEX Project Public License 1.3c](https://ctan.org/license/lppl1.3) or any later version.
+
+# 协议
+
+本模板的发布遵照 [LATEX Project Public License 1.3c](https://ctan.org/license/lppl1.3) 协议或其后版本。
+
+# Acknowledgements(致谢)
+
+* [XDUstyle](https://github.com/StickCui/XDUstyle-Beamer-Theme)
+* [THUBeamer](https://github.com/tl3shi/THUBeamer)
diff --git a/macros/latex/contrib/beamer-contrib/themes/thubeamer/figures/thulogo.pdf b/macros/latex/contrib/beamer-contrib/themes/thubeamer/figures/thulogo.pdf
new file mode 100644
index 0000000000..594a342957
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/thubeamer/figures/thulogo.pdf
Binary files differ
diff --git a/macros/latex/contrib/beamer-contrib/themes/thubeamer/macros.tex b/macros/latex/contrib/beamer-contrib/themes/thubeamer/macros.tex
new file mode 100644
index 0000000000..428b73ddca
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/thubeamer/macros.tex
@@ -0,0 +1,138 @@
+% About: Macros for Vector, Matrix, Tensor, Math Operator and Misc
+% Author: Jingxuan Yang
+
+% vectors
+\newcommand{\va}{\bm{a}} \newcommand{\vah}{\hat{\bm{a}}} \newcommand{\ah}{\hat{a}} \newcommand{\vat}{\tilde{\bm{a}}} \newcommand{\at}{\tilde{a}}
+\newcommand{\vb}{\bm{b}} \newcommand{\vbh}{\hat{\bm{b}}} \newcommand{\bh}{\hat{b}} \newcommand{\vbt}{\tilde{\bm{b}}} \newcommand{\bt}{\tilde{b}}
+\newcommand{\vc}{\bm{c}} \newcommand{\vch}{\hat{\bm{c}}} \newcommand{\ch}{\hat{c}} \newcommand{\vct}{\tilde{\bm{c}}} \newcommand{\ct}{\tilde{c}}
+\newcommand{\vd}{\bm{d}} \newcommand{\vdh}{\hat{\bm{d}}} \newcommand{\dhat}{\hat{d}} \newcommand{\vdt}{\tilde{\bm{d}}} \newcommand{\dt}{\tilde{d}}
+\newcommand{\ve}{\bm{e}} \newcommand{\veh}{\hat{\bm{e}}} \newcommand{\eh}{\hat{e}} \newcommand{\vet}{\tilde{\bm{e}}} \newcommand{\et}{\tilde{e}}
+\newcommand{\vf}{\bm{f}} \newcommand{\vfh}{\hat{\bm{f}}} \newcommand{\fh}{\hat{f}} \newcommand{\vft}{\tilde{\bm{f}}} \newcommand{\ft}{\tilde{f}}
+\newcommand{\vg}{\bm{g}} \newcommand{\vgh}{\hat{\bm{g}}} \newcommand{\gh}{\hat{g}} \newcommand{\vgt}{\tilde{\bm{g}}} \newcommand{\gt}{\tilde{g}}
+\newcommand{\vh}{\bm{h}} \newcommand{\vhh}{\hat{\bm{h}}} \newcommand{\hh}{\hat{h}} \newcommand{\vht}{\tilde{\bm{h}}} \newcommand{\htild}{\tilde{h}}
+\newcommand{\vi}{\bm{i}} \newcommand{\vih}{\hat{\bm{i}}} \newcommand{\ih}{\hat{i}} \newcommand{\vit}{\tilde{\bm{i}}} \newcommand{\itild}{\tilde{i}}
+\newcommand{\vj}{\bm{j}} \newcommand{\vjh}{\hat{\bm{j}}} \newcommand{\jh}{\hat{j}} \newcommand{\vjt}{\tilde{\bm{j}}} \newcommand{\jt}{\tilde{j}}
+\newcommand{\vk}{\bm{k}} \newcommand{\vkh}{\hat{\bm{k}}} \newcommand{\kh}{\hat{k}} \newcommand{\vkt}{\tilde{\bm{k}}} \newcommand{\kt}{\tilde{k}}
+\newcommand{\vl}{\bm{l}} \newcommand{\vlh}{\hat{\bm{l}}} \newcommand{\lh}{\hat{l}} \newcommand{\vlt}{\tilde{\bm{l}}} \newcommand{\lt}{\tilde{l}}
+\newcommand{\vm}{\bm{m}} \newcommand{\vmh}{\hat{\bm{m}}} \newcommand{\mh}{\hat{m}} \newcommand{\vmt}{\tilde{\bm{m}}} \newcommand{\mt}{\tilde{m}}
+\newcommand{\vn}{\bm{n}} \newcommand{\vnh}{\hat{\bm{n}}} \newcommand{\nh}{\hat{n}} \newcommand{\vnt}{\tilde{\bm{n}}} \newcommand{\nt}{\tilde{n}}
+\newcommand{\vo}{\bm{o}} \newcommand{\voh}{\hat{\bm{o}}} \newcommand{\oh}{\hat{o}} \newcommand{\vot}{\tilde{\bm{o}}} \newcommand{\ot}{\tilde{o}}
+\newcommand{\vp}{\bm{p}} \newcommand{\vph}{\hat{\bm{p}}} \newcommand{\ph}{\hat{p}} \newcommand{\vpt}{\tilde{\bm{p}}} \newcommand{\pt}{\tilde{p}}
+\newcommand{\vq}{\bm{q}} \newcommand{\vqh}{\hat{\bm{q}}} \newcommand{\qh}{\hat{q}} \newcommand{\vqt}{\tilde{\bm{q}}} \newcommand{\qt}{\tilde{q}}
+\newcommand{\vr}{\bm{r}} \newcommand{\vrh}{\hat{\bm{r}}} \newcommand{\rh}{\hat{r}} \newcommand{\vrt}{\tilde{\bm{r}}} \newcommand{\rt}{\tilde{r}}
+\newcommand{\vs}{\bm{s}} \newcommand{\vsh}{\hat{\bm{s}}} \newcommand{\sh}{\hat{s}} \newcommand{\vst}{\tilde{\bm{s}}} \newcommand{\st}{\tilde{s}}
+\newcommand{\vt}{\bm{t}} \newcommand{\vth}{\hat{\bm{t}}} \newcommand{\that}{\hat{t}} \newcommand{\vtt}{\tilde{\bm{t}}} \newcommand{\ttil}{\tilde{t}}
+\newcommand{\vu}{\bm{u}} \newcommand{\vuh}{\hat{\bm{u}}} \newcommand{\uh}{\hat{u}} \newcommand{\vut}{\tilde{\bm{u}}} \newcommand{\ut}{\tilde{u}}
+\newcommand{\vv}{\bm{v}} \newcommand{\vvh}{\hat{\bm{v}}} \newcommand{\vhat}{\hat{v}} \newcommand{\vvt}{\tilde{\bm{v}}} \newcommand{\vtild}{\tilde{v}}
+\newcommand{\vw}{\bm{w}} \newcommand{\vwh}{\hat{\bm{w}}} \newcommand{\wh}{\hat{w}} \newcommand{\vwt}{\tilde{\bm{w}}} \newcommand{\wt}{\tilde{w}}
+\newcommand{\vx}{\bm{x}} \newcommand{\vxh}{\hat{\bm{x}}} \newcommand{\xh}{\hat{x}} \newcommand{\vxt}{\tilde{\bm{x}}} \newcommand{\xt}{\tilde{x}}
+\newcommand{\vy}{\bm{y}} \newcommand{\vyh}{\hat{\bm{y}}} \newcommand{\yh}{\hat{y}} \newcommand{\vyt}{\tilde{\bm{y}}} \newcommand{\yt}{\tilde{y}}
+\newcommand{\vz}{\bm{z}} \newcommand{\vzh}{\hat{\bm{z}}} \newcommand{\zh}{\hat{z}} \newcommand{\vzt}{\tilde{\bm{z}}} \newcommand{\zt}{\tilde{z}}
+
+\newcommand{\valpha}{\bm{\alpha}}
+\newcommand{\vbeta}{\bm{\beta}}
+\newcommand{\vgamma}{\bm{\gamma}}
+\newcommand{\vtheta}{\bm{\theta}}
+\newcommand{\vlambda}{\bm{\lambda}}
+\newcommand{\vmu}{\bm{\mu}}
+\newcommand{\vomega}{\bm{\omega}}
+
+\newcommand{\mSigma}{\bm{\Sigma}}
+
+\newcommand{\Fc}{\mathcal{F}}
+\newcommand{\Xc}{\mathcal{X}}
+\newcommand{\Yc}{\mathcal{Y}}
+\newcommand{\Zc}{\mathcal{Z}}
+\newcommand{\Gc}{\mathcal{G}}
+\newcommand{\Hc}{\mathcal{H}}
+\newcommand{\Dc}{\mathcal{D}}
+\newcommand{\Cc}{\mathcal{C}}
+\newcommand{\Rc}{\mathcal{R}}
+\newcommand{\Lc}{\mathcal{L}}
+\newcommand{\Nc}{\mathcal{N}}
+\newcommand{\Tc}{\mathcal{T}}
+
+% matrices
+\newcommand{\ma}{\bm{A}}
+\newcommand{\mb}{\bm{B}}
+\newcommand{\md}{\bm{D}}
+\newcommand{\mH}{\bm{H}}
+\newcommand{\mE}{\bm{E}}
+\newcommand{\mi}{\bm{I}}
+\newcommand{\mk}{\bm{K}}
+\newcommand{\ml}{\bm{L}}
+\newcommand{\mn}{\bm{N}}
+\newcommand{\mP}{\bm{P}}
+\newcommand{\mq}{\bm{Q}}
+\newcommand{\mr}{\bm{R}}
+\newcommand{\mU}{\bm{U}}
+\newcommand{\mv}{\bm{V}}
+\newcommand{\mw}{\bm{W}}
+\newcommand{\mx}{\bm{X}}
+\newcommand{\my}{\bm{Y}}
+\newcommand{\mz}{\bm{Z}}
+
+% tensors
+\newcommand{\tp}{\mathsf{P}}
+\newcommand{\tu}{\mathsf{U}}
+\newcommand{\tx}{\mathsf{X}}
+\newcommand{\ty}{\mathsf{Y}}
+\newcommand{\tz}{\mathsf{Z}}
+\newcommand{\tw}{\mathsf{W}}
+\newcommand{\tf}{\mathsf{F}}
+\newcommand{\ta}{\mathsf{A}}
+\renewcommand{\th}{\mathsf{H}}
+
+% norms
+\newcommand{\mynorm}[2]{\| {#1} \|_{#2}}
+\newcommand{\norm}[2]{\mynorm{#1}{#2}}
+\newcommand{\bignorm}[2]{\left\| {#1} \right\|_{#2}}
+\newcommand{\norml}[1]{\mynorm{#1}{1}}
+\newcommand{\bignorml}[1]{\bignorm{#1}{1}}
+\newcommand{\infnorm}[1]{\mynorm{#1}{\infty}}
+\newcommand{\biginfnorm}[1]{\bignorm{#1}{\infty}}
+\newcommand{\oneinf}{\ell_{1,\infty}}
+\newcommand{\onetwo}{\ell_{1,2}}
+\newcommand{\oneinfnorm}[1]{\mynorm{#1}{1,\infty}}
+\newcommand{\bigoneinf}[1]{\bignorm{#1}{1,\infty}}
+\newcommand{\onetwonorm}[1]{\mynorm{#1}{1,2}}
+\newcommand{\bigonetwo}[1]{\bignorm{#1}{1,2}}
+\newcommand{\enorm}[1]{\mynorm{#1}{2}}
+\newcommand{\bigenorm}[1]{\bignorm{#1}{2}}
+\newcommand{\znorm}[1]{\mynorm{#1}{0}}
+\newcommand{\bigznorm}[1]{\bignorm{#1}{0}}
+\newcommand{\frob}[1]{\|{#1}\|_{\text{F}}}
+\newcommand{\bigfrob}[1]{\bignorm{#1}{\text{F}}}
+\newcommand{\grpnorm}[2]{\norm{#1}{\text{Gr}(#2)}}
+
+% math operators
+\DeclareMathOperator*{\argmin}{argmin}
+\DeclareMathOperator*{\argmax}{argmax}
+\DeclareMathOperator{\divg}{div}
+\DeclareMathOperator{\dom}{dom}
+\DeclareMathOperator{\interior}{int}
+\DeclareMathOperator{\ri}{ri}
+\DeclareMathOperator{\sgn}{sgn}
+\DeclareMathOperator{\trace}{Tr}
+\DeclareMathOperator{\diag}{diag}
+\DeclareMathOperator{\rank}{rank}
+\DeclareMathOperator{\range}{range}
+\DeclareMathOperator{\vect}{vec}
+\DeclareMathOperator{\prox}{prox}
+\DeclareMathOperator{\intr}{int}
+\DeclareMathOperator{\relint}{ri}
+\DeclareMathOperator{\hard}{hard}
+\DeclareMathOperator{\id}{id}
+% \DeclareMathOperator{\tf}{tf}
+% \DeclareMathOperator{\idf}{idf}
+
+% misc
+\newcommand{\gs}{\geqslant}
+\newcommand{\ls}{\leqslant}
+\newcommand{\set}[1]{\left\{ {#1}\right\}}
+
+\newcommand{\defeq}{\ \stackrel{\text{def}}{=}\ }
+\newcommand{\ip}[2]{\left\langle#1, #2\right\rangle}
+\newcommand{\reals}{\mathbb{R}}
+\newcommand{\complex}{\mathbb{C}}
+\newcommand{\half}{\frac{1}{2}}
diff --git a/macros/latex/contrib/beamer-contrib/themes/thubeamer/makebeamer.bat b/macros/latex/contrib/beamer-contrib/themes/thubeamer/makebeamer.bat
new file mode 100644
index 0000000000..30e3d263e7
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/thubeamer/makebeamer.bat
@@ -0,0 +1,5 @@
+latexmk -c main
+pdflatex -synctex=1 -interaction=nonstopmode main
+bibtex main
+pdflatex -synctex=1 -interaction=nonstopmode main
+pdflatex -synctex=1 -interaction=nonstopmode main \ No newline at end of file
diff --git a/macros/latex/contrib/beamer-contrib/themes/thubeamer/makeclean.bat b/macros/latex/contrib/beamer-contrib/themes/thubeamer/makeclean.bat
new file mode 100644
index 0000000000..70546e3141
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/thubeamer/makeclean.bat
@@ -0,0 +1,20 @@
+@echo off
+del *.toc /s
+del *.bbl /s
+del *.blg /s
+del *.out /s
+del *.aux /s
+del *.log /s
+del *.bak /s
+del *.thm /s
+del *.synctex.gz /s
+del *.fdb_latexmk /s
+del *.fls /s
+del *.glo /s
+del *.gls /s
+del *.idx /s
+del *.ilg /s
+del *.ind /s
+del *.nav /s
+del *.snm /s
+del *.hd /s \ No newline at end of file
diff --git a/macros/latex/contrib/beamer-contrib/themes/thubeamer/makecleanall.bat b/macros/latex/contrib/beamer-contrib/themes/thubeamer/makecleanall.bat
new file mode 100644
index 0000000000..4e1a6bd2b8
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/thubeamer/makecleanall.bat
@@ -0,0 +1,22 @@
+@echo off
+del *.toc /s
+del *.bbl /s
+del *.blg /s
+del *.out /s
+del *.aux /s
+del *.log /s
+del *.bak /s
+del *.thm /s
+del *.synctex.gz /s
+del *.fdb_latexmk /s
+del *.fls /s
+del *.glo /s
+del *.gls /s
+del *.idx /s
+del *.ilg /s
+del *.ind /s
+del *.nav /s
+del *.snm /s
+del *.hd /s
+del *.ins /s
+del *.sty /s \ No newline at end of file
diff --git a/macros/latex/contrib/beamer-contrib/themes/thubeamer/makedoc.bat b/macros/latex/contrib/beamer-contrib/themes/thubeamer/makedoc.bat
new file mode 100644
index 0000000000..77e999cae0
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/thubeamer/makedoc.bat
@@ -0,0 +1,5 @@
+xelatex thubeamer.dtx
+makeindex -s gind.ist -o thubeamer.ind thubeamer.idx
+makeindex -s gglo.ist -o thubeamer.gls thubeamer.glo
+xelatex thubeamer.dtx
+xelatex thubeamer.dtx \ No newline at end of file
diff --git a/macros/latex/contrib/beamer-contrib/themes/thubeamer/reference.bib b/macros/latex/contrib/beamer-contrib/themes/thubeamer/reference.bib
new file mode 100644
index 0000000000..6b6f382e5f
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/thubeamer/reference.bib
@@ -0,0 +1,140 @@
+% !Mode:: "TeX:UTF-8"
+
+@ARTICLE{ren2010,
+ AUTHOR = "任春珍 and 杨再华 and 孙刚 and 贾探春",
+ TITLE = "空环境飞行器交会对接设备精测工艺方法研究",
+ JOURNAL = "航天器环境工程",
+ PAGES = "768--771",
+ VOLUME = "27",
+ number = "6",
+ YEAR = "2010",
+ language ="zh",
+}
+
+@ARTICLE{Gravagne2003,
+ author={I A {Gravagne} and C D {Rahn} and I D {Walker}},
+ journal={IEEE/ASME Transactions on Mechatronics},
+ title={Large Deflection Dynamics and Control for Planar Continuum Robots},
+ year={2003},
+ volume={8},
+ number={2},
+ pages={299--307},
+}
+
+@article{webster2010,
+ title={Design and Kinematic Modeling of Constant Curvature Continuum Robots: A Review},
+ author={Webster III, Robert J and Jones, Bryan A},
+ journal={The International Journal of Robotics Research},
+ volume={29},
+ number={13},
+ pages={1661--1683},
+ year={2010},
+}
+
+@phdthesis{liu2016,
+ title={面向狭小空间作业的绳索驱动超冗余机械臂的研究},
+ author={刘天亮},
+ school={哈尔滨工业大学},
+ year={2016},
+ pages={61--63},
+ ADDRESS="深圳",
+}
+
+@phdthesis{fu2018,
+ title={狭小空间作业绳驱分段联动机器人设计及控制研究},
+ author={付亚南},
+ school={哈尔滨工业大学},
+ year={2018},
+ pages={12--13},
+ ADDRESS="深圳",
+}
+
+@ARTICLE{zhai2015,
+ AUTHOR = "翟士民 and 刘荣 and 薛彤",
+ TITLE = "绳驱动连续型机械臂设计",
+ JOURNAL = "机械工程与自动化",
+ PAGES = "119--121",
+ YEAR="2015",
+ VOLUME = "2",
+ language ="zh",
+}
+
+@article{yao2015,
+ title={蛇形臂机器人装配系统研究},
+ author={姚艳彬 and 杜兆才 and 魏志强},
+ journal={航空制造技术},
+ volume={491},
+ number={21},
+ YEAR="2015",
+ pages={26--30},
+ language="zh",
+}
+
+@article{jones2006,
+ title={Kinematics for Multisection Continuum Robots},
+ author={Jones, Bryan A and Walker, Ian D},
+ journal={IEEE Transactions on Robotics},
+ volume={22},
+ number={1},
+ pages={43--55},
+ year={2006},
+}
+
+@INPROCEEDINGS{mcmahan2005,
+ title={Design and Implementation of a Multi-section Continuum Robot: Air-Octor},
+ author={McMahan, William and Jones, Bryan A and Walker, Ian D},
+ booktitle={IEEE/RSJ International Conference on Intelligent Robots and Systems},
+ address={Shanghai, China},
+ pages={2578--2585},
+ year={2005},
+}
+
+@inproceedings{jones2004,
+ title={Design and Analysis of a Novel Pneumatic Manipulator},
+ author={Jones, Bryan A and McMahan, William and Walker, Ian},
+ booktitle={IFAC Symposium on Mechatronic Systems},
+ address={Hanburg, German},
+ pages={745--750},
+ year={2004},
+}
+
+@inbook{Lin1992,
+ language ="zh",
+ AUTHOR = "林来兴",
+ TITLE = "空间控制技术",
+ PUBLISHER = "宇航出版社",
+ YEAR = "1992",
+ Pages = "25-42",
+ ADDRESS = "北京",
+}
+
+@book{xin1994,
+ language ="zh",
+ title={信息技术与信息服务国际研讨会论文集},
+ author={辛希孟 and 中国科学院文献信息中心 and 孟广均 and 信息学},
+ year={1994},
+ publisher={中国社会科学出版社},
+ pages={45-49},
+ address={北京},
+ typeoflit={C},
+}
+
+@phdthesis{Chen1992,
+ language ="zh",
+ Author = {谌颖},
+ Title = {空间最优交会控制理论与方法研究},
+ ADDRESS = "哈尔滨",
+ School = {哈尔滨工业大学},
+ Year = {1992},
+ pages= {8-13},
+}
+
+@article{hitszthesis2020,
+ title={Dissertation Template for Harbin Institute of Technology, ShenZhen (HITSZ)},
+ author={Jingxuan Yang},
+ journal={Github},
+ volume={001},
+ number={0001},
+ pages={000-999},
+ year={2020},
+}
diff --git a/macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer-example.pdf b/macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer-example.pdf
new file mode 100644
index 0000000000..ff2c2d75a6
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer-example.tex b/macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer-example.tex
new file mode 100644
index 0000000000..2d856187b9
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer-example.tex
@@ -0,0 +1,250 @@
+%%=======================================================================
+% !Mode:: "TeX:UTF-8"
+% !TEX program = PdfLaTeX
+%%=======================================================================
+% 模板名称:thubeamer
+% 模板版本:V1.0.0
+% 模板作者:杨敬轩(Jingxuan Yang)
+% 联系作者:yangjx20@mails.tsinghua.edu.cn & yanglatex2e@gmail.com
+% 模板适用:清华大学风格 Beamer 模板
+% 模板编译:手动编译方法参看 README.md 或 thubeamer.pdf
+% 编译 beamer 之前必须编译说明文档:make doc 或双击 makedoc.bat
+% 编译说明文档同时分离出四个样式文件 *thubeamer.sty
+% GNU make 工具:make beamer
+% Windows 批处理脚本:双击 makebeamer.bat 自动编译 beamer
+% 更多编译细节详见说明文档:thubeamer.pdf
+% 更新时间:2021/07/07
+% 模板帮助:请**务必务必务必**阅读 thubeamer.pdf 说明文档,文档查看方法:
+% 下载模板文件夹里就有,如果是从 CTAN 上安装更新本模板,则通过
+% cmd 命令行:texdoc thubeamer 查看文档
+% 推荐前往模板的 GitHub 仓库获取最新文件,地址:
+% https://github.com/YangLaTeX/thubeamer
+%%=======================================================================
+
+% 设置文档类别为 <beamer>
+% \documentclass[aspectratio=169]{beamer} % 设置长宽比为 16:9
+\documentclass{beamer}
+
+% 使用 <thubeamer> 主题
+% 模板选项如下
+% (a.1) smoothbars: 页面顶端单行显示目录,默认选项
+\usetheme{thubeamer}
+
+% (a.2) sidebar: 页面左侧分栏显示目录
+% \usetheme[sidebar]{thubeamer}
+
+% (b) sectiontoc: 在每节(section)前显示目录,并高亮显示当前节,默认不显示
+
+% (c) subsectiontoc: 在每小节(subsection)前显示目录,并高亮显示当前节和当前小节,默认不显示
+
+% 图片存放路径
+\graphicspath{{figures/}}
+
+\include{macros}
+
+% 封面信息,方括号内容是显示在左侧边栏的内容(当选择 sidebar 主题时有效)
+\title[报告标题]{报告标题\\[2mm] 课程答辩}
+\author[杨敬轩]{学生:杨敬轩\\[5mm] 导师:XX 教授}
+\institute[清华大学]{\small 清华大学}
+\date{\small \vskip -10pt \today}
+
+% 开始写文章
+\begin{document}
+
+% 标题页
+\begin{frame}
+ \maketitle
+\end{frame}
+
+% 目录页
+\section*{目录}
+\frame{
+ \frametitle{\secname}
+ \tableofcontents[hideallsubsections]
+}
+
+\section{研究内容及进度}
+
+\subsection{课题主要研究内容}
+
+\begin{frame}{课题主要研究内容}
+ \begin{figure}
+ \includegraphics[width=0.4\linewidth]{thulogo}
+ \caption{课题主要研究内容}
+ \end{figure}
+\end{frame}
+
+\subsection{进度介绍}
+
+\begin{frame}{进度介绍}
+ \begin{figure}
+ \includegraphics[width=0.4\linewidth]{thulogo}
+ \caption{进度介绍}
+ \end{figure}
+\end{frame}
+
+\section{研究工作及成果}
+
+\begin{frame}{已完成的研究工作及成果}
+ \begin{block}{已完成的研究工作简介}
+ \begin{itemize}
+ \setlength{\itemsep}{6pt}
+ \item XXXX
+ \item XXXX
+ \item XXXX
+ \item XXXX
+ \item XXXX
+ \item XXXX
+ \end{itemize}
+ \end{block}
+\end{frame}
+
+\subsection{研究工作一}
+
+\begin{frame}{研究工作一}
+ \begin{block}{无编号公式}
+ 无编号公式示例:
+ $$
+ k:[-\pi,\pi] \rightarrow [0,1]
+ $$
+ \end{block}
+\end{frame}
+
+\subsection{研究工作二}
+
+\begin{frame}{研究工作二}
+ \begin{block}{有编号公式}
+ \begin{itemize}
+ \item 有编号公式示例:输入为图像
+ \begin{equation}
+ \vx\in\reals^{C_{\text{in}}\times H\times W}
+ \end{equation}
+ 其中 $C_{\text{in}}$ 表示通道, $H$ 表示图像高度, $W$ 表示图像深度.
+ \end{itemize}
+ \end{block}
+\end{frame}
+
+\subsection{研究工作三}
+
+\begin{frame}{研究工作三}
+ \begin{block}{表格}
+ 表格示例, 如表 \ref{tab:unique_values} 所示.
+
+ \begin{table}[htbp]
+ \small
+ \centering
+ \caption{train.csv 每列非重复元素个数}
+ \label{tab:unique_values}
+ \begin{tabular}{lc}
+ \toprule
+ column & \# unique values \\
+ \midrule
+ posting\_id & 34250 \\
+ image & 32412 \\
+ image\_phash & 28735 \\
+ title & 33117 \\
+ label\_group & 11014 \\
+ \bottomrule
+ \end{tabular}
+ \end{table}
+ \end{block}
+\end{frame}
+
+\subsection{研究工作四}
+
+\begin{frame}{研究工作四}
+ \begin{block}{并排图片}
+ 并排图片示例.
+ \end{block}
+ \begin{figure}[htbp]
+ \centering
+ \begin{minipage}[t]{0.48\textwidth}
+ \centering
+ \includegraphics[width=3cm]{thulogo.pdf}
+ \caption{并排图片1}
+ \label{fig:left_side}
+ \end{minipage}
+ \begin{minipage}[t]{0.48\textwidth}
+ \centering
+ \includegraphics[width=3cm]{thulogo.pdf}
+ \caption{并排图片2}
+ \label{fig:right_side}
+ \end{minipage}
+ \end{figure}
+\end{frame}
+
+\section{后期工作与安排}
+
+\subsection{后期研究工作}
+
+\begin{frame}{后期研究工作}
+ \begin{block}{后期研究工作}
+ \begin{itemize}
+ \setlength{\itemsep}{6pt}
+ \item XXXX
+ \item XXXX
+ \item XXXX
+ \item XXXX
+ \end{itemize}
+ \end{block}
+\end{frame}
+
+\subsection{进度安排}
+
+\begin{frame}{进度安排}
+ \begin{block}{进度安排}
+ \begin{itemize}
+ \setlength{\itemsep}{6pt}
+ \item XXXX\cite{liu2016}
+ \item XXXX\cite{ren2010}
+ \item XXXX\cite{Chen1992}
+ \item XXXX\cite{Gravagne2003}
+ \end{itemize}
+ \end{block}
+\end{frame}
+
+\section{问题与解决方案}
+
+\begin{frame}{问题与解决方案}
+ \begin{block}{问题}
+ \begin{itemize}
+ \item XXXX
+ \end{itemize}
+ \end{block}
+ \begin{block}{对应解决方案}
+ \begin{itemize}
+ \item XXXX
+ \end{itemize}
+ \end{block}
+\end{frame}
+
+\section{按时完成可能性}
+
+\begin{frame}{按时完成可能性}
+ \begin{block}{按时完成可能性}
+ \begin{itemize}
+ \setlength{\itemsep}{6pt}
+ \item XXXX\cite{xin1994}
+ \item XXXX\cite{zhai2015}
+ \item XXXX\cite{jones2004}
+ \item XXXX\cite{mcmahan2005}
+ \end{itemize}
+ \end{block}
+\end{frame}
+
+\begin{frame}[allowframebreaks]{参考文献}
+ \bibliographystyle{thubeamer}
+ \bibliography{reference}
+\end{frame}
+
+\begin{frame}
+ \begin{center}
+ {\Huge\calligra Thanks for your attention!}
+ \vspace{1cm}
+
+ {\Huge Q \& A}
+ \end{center}
+\end{frame}
+
+% 结束文档撰写
+\end{document}
diff --git a/macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer.bst b/macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer.bst
new file mode 100644
index 0000000000..b4e1d9ac61
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer.bst
@@ -0,0 +1,1978 @@
+%=============================================================================
+% FileName: thubeamer.bst
+% Author: 杨敬轩(Jingxuan Yang)
+% Email: yanglatex2e@gmail.com
+% Version: 1.0.0
+% Modified: 杨敬轩(Jingxuan Yang)
+% History: Yanshuo Chu,胡海星
+% LastChange: 2021-07-07 16:59
+%=============================================================================
+ %
+ENTRY % class Entry {
+{ % public:
+ author % String author;
+ editor % String editor;
+ translator % String translator;
+ title % String title;
+ edition % String edition;
+ address % String address;
+ publisher % String publisher;
+ pages % String pages;
+ year % String year;
+ date % String date;
+ modifydate % String modifydate;
+ citedate % String citedate;
+ url % String url;
+ doi % String doi;
+ language % String language;
+ booktitle % String booktitle;
+ journal % String journal;
+ chapter % String chapter;
+ series % String series;
+ volume % String volume;
+ number % String number;
+ version % String version;
+ month % String month;
+ school % String school;
+ institution % String institution;
+ organization % String organization;
+ type % String type;
+ howpublished % String howpublished;
+ eid % String eid;
+ key % String key;
+ country % String country;
+ patentid % String patentid;
+ media % String media;
+} { % // declare integer variables
+ required % int required; // withther the bibfield is required
+} { % // declare String variables
+ label % String label; // label for the entry
+ mark % String mark; // mark for the entry
+ % // there is ahidden entry variable sort.key$
+ % String sort_key;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+INTEGERS { % // declare global int variables
+ entry.count % static int entry_count; // number of entries
+ longest.label.width % static int longest_label_width; // width of the longest label
+ i % static int i;
+ j % static int j;
+ k % static int k;
+} %
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+STRINGS { % // declare global String variables
+ longest.label % static String longest_label; // the longest label
+ s % static String s;
+ t % static String t;
+} %
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% define global static constants
+FUNCTION {true} {#1}
+FUNCTION {false} {#0}
+FUNCTION {debug.enabled} {true}
+FUNCTION {cap.volume.en} {"Vol~"}
+FUNCTION {cap.volume.zh} {"卷"}
+FUNCTION {cap.edition.en} {"~ed"}
+FUNCTION {cap.edition.zh} {"版"}
+FUNCTION {cap.anonymous.en} {"Anon"}
+FUNCTION {cap.anonymous.zh} {"佚名"}
+FUNCTION {cap.no.address.en} {"[S.l.]"}
+FUNCTION {cap.no.address.zh} {"[出版地不详]"}
+FUNCTION {cap.no.publisher.en} {"[s.n.]"}
+FUNCTION {cap.no.publisher.zh} {"[出版者不详]"}
+FUNCTION {cap.et.al.en} {", et~al"}
+FUNCTION {cap.et.al.zh} {", 等"}
+FUNCTION {cap.translate.en} {"~trans"}
+FUNCTION {cap.translate.zh} {"译"}
+FUNCTION {cap.doi.url} {"http://dx.doi.org/"}
+FUNCTION {cap.st.en} {"st"}
+FUNCTION {cap.nd.en} {"nd"}
+FUNCTION {cap.rd.en} {"rd"}
+FUNCTION {cap.th.en} {"th"}
+
+FUNCTION {cap.space} {" "}
+FUNCTION {cap.period} {"\@. "}
+FUNCTION {cap.comma} {"\@, "}
+FUNCTION {cap.colon} {"\thinspace{}\textnormal{: }"}
+FUNCTION {cap.double.slash} {" //\thinspace{}"}
+FUNCTION {cap.dash} {"\textnormal{-}"}
+
+% Predefined latex command used to format the style of bibitems
+FUNCTION {env.bibbegin} { "\begin{thebibliography}" }
+FUNCTION {env.bibend} { "\end{thebibliography}" }
+FUNCTION {cmd.bibauthor} { "\providecommand{\bibauthor}[1]{#1}" }
+FUNCTION {cmd.bibeditor} { "\providecommand{\bibeditor}[1]{#1}" }
+FUNCTION {cmd.bibtranslator} { "\providecommand{\bibtranslator}[1]{#1}" }
+FUNCTION {cmd.bibtitle} { "\providecommand{\bibtitle}[1]{#1}" }
+FUNCTION {cmd.bibbooktitle} { "\providecommand{\bibbooktitle}[1]{#1}" }
+FUNCTION {cmd.bibjournal} { "\providecommand{\bibjournal}[1]{#1}" }
+FUNCTION {cmd.bibmark} { "\providecommand{\bibmark}[1]{\mbox{#1}}" }
+FUNCTION {cmd.bibcountry} { "\providecommand{\bibcountry}[1]{#1}" }
+FUNCTION {cmd.bibpatentid} { "\providecommand{\bibpatentid}[1]{#1}" }
+FUNCTION {cmd.bibedition} { "\providecommand{\bibedition}[1]{#1}" }
+FUNCTION {cmd.biborganization} { "\providecommand{\biborganization}[1]{#1}" }
+FUNCTION {cmd.bibaddress} { "\providecommand{\bibaddress}[1]{#1}" }
+FUNCTION {cmd.bibpublisher} { "\providecommand{\bibpublisher}[1]{#1}" }
+FUNCTION {cmd.bibinstitution} { "\providecommand{\bibinstitution}[1]{#1}" }
+FUNCTION {cmd.bibschool} { "\providecommand{\bibschool}[1]{#1}" }
+FUNCTION {cmd.bibvolume} { "\providecommand{\bibvolume}[1]{#1}" }
+FUNCTION {cmd.bibnumber} { "\providecommand{\bibnumber}[1]{#1}" }
+FUNCTION {cmd.bibversion} { "\providecommand{\bibversion}[1]{#1}" }
+FUNCTION {cmd.bibpages} { "\providecommand{\bibpages}[1]{#1}" }
+FUNCTION {cmd.bibmodifydate} { "\providecommand{\bibmodifydate}[1]{#1}" }
+FUNCTION {cmd.bibcitedate} { "\providecommand{\bibcitedate}[1]{#1}" }
+FUNCTION {cmd.bibyear} { "\providecommand{\bibyear}[1]{#1}" }
+FUNCTION {cmd.bibdate} { "\providecommand{\bibdate}[1]{#1}" }
+FUNCTION {cmd.biburl} { "\providecommand{\biburl}[1]{\newline\url{#1}}" }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {log.str} { % void Entry::log_str(String value, String message)
+ debug.enabled { % if (debug_enabled == 1) {
+ "DEBUG: " swap$ * " - '" * % message = "DEBUG: " + message + " - '";
+ swap$ * % message = message + value;
+ "'" * % message = message + "'";
+ top$ % log(message);
+ } { % } else {
+ pop$ pop$ % return;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {log.int} { % int Entry::log_int(int value, String message)
+ debug.enabled { % if (debug_enabled == 1) {
+ "DEBUG: " swap$ * " - " * % message = "DEBUG: " + message + " - ";
+ swap$ int.to.str$ * % message = message + int_to_str(value);
+ top$ % log(message);
+ } { % } else {
+ pop$ pop$ % return;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {not} { % int Entry::not(int x) {
+ { % if (x == 1) {
+ false % return false;
+ } { % } else {
+ true % return true;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {and} { % int Entry::and(int x, int y) {
+ { % if (y == 1) {
+ skip$ % return x;
+ } { % } else {
+ pop$ false % return false;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {or} { % int Entry::or(int x, int y) {
+ { % if (y == 1) {
+ pop$ true % return true;
+ } { % } else {
+ skip$ % return x;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // calculate the length in characters of a string
+ % // We need this function since text.length$ is NOT
+ % // the length in characters.
+INTEGERS {length.i} % static int length_i;
+FUNCTION {length} { % int Entry::length(String str) {
+ duplicate$ empty$ { % if (empty(str)) {
+ pop$ #0 % return 0;
+ } { % } else {
+ #1 'length.i := % length_i = 1;
+ false % int stop = false;
+ {not} { % while (! stop) {
+ duplicate$ length.i #1 substring$ % String tmp = substring(str, length_i, 1);
+ "" = { % if (tmp == "") {
+ true % stop = true;
+ } { % } else {
+ length.i #1 + 'length.i := % length_i = length_i + 1;
+ false % stop = false;
+ } if$ % }
+ } while$ % }
+ pop$ length.i #1 - % return length_i - 1;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {is.digit} { % int Entry::is_digit(String ch) {
+ chr.to.int$ % int ascii = chr_to_int(ch);
+ duplicate$ "0" chr.to.int$ < { % if (ascii < chr_to_int("0")) {
+ pop$ false % return false;
+ } { % } else {
+ "9" chr.to.int$ > { % if (ascii > chr_to_int("9")) {
+ false % return false;
+ } { % } else {
+ true % return true;
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // test if str is a number
+FUNCTION {is.number} { % int Entry::is_number(String str) {
+ duplicate$ empty$ not swap$ % int result = (! empty(str));
+ { duplicate$ empty$ not} { % while (! empty(str)) {
+ duplicate$ #1 #1 substring$ is.digit { % if (is_digit(substring(str, 1, 1))) {
+ #2 global.max$ substring$ % str = substring(str, 2, global_max);
+ } { % } else {
+ pop$ pop$ false % result = false;
+ "" % str = "";
+ } if$ % }
+ } while$ % }
+ pop$ % return result;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // extract the number prefix of str
+FUNCTION {extract.number} { % String Entry::extract_number(String str) {
+ duplicate$ % String suffix = str;
+ duplicate$ length swap$ % int n = length(str);
+ duplicate$ empty$ % int stop = empty(suffix);
+ { not } { % while (! stop) {
+ duplicate$ #1 #1 substring$ is.digit { % if (is_digit(substring(suffix, 1, 1))) {
+ #2 global.max$ substring$ % suffix = substring(suffix, 2, global_max);
+ duplicate$ empty$ % stop = empty(suffix);
+ } { % } else {
+ true % stop = true;
+ } if$ % }
+ } while$ % }
+ length - % int n = n - length(suffix);
+ #1 swap$ substring$ % return substring(str, 1, n);
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {get.last.chr} { % String Entry::get_last_chr(String str) {
+ duplicate$ length % int n = length(str);
+ duplicate$ #0 = { % if (n == 0) {
+ pop$ % return str;
+ } { % } else {
+ #1 substring$ % return substring(str, n, 1);
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {get.ordinal.suffix.en} { % String Entry::get_ordinal_suffix_en(String ch) {
+ duplicate$ "1" = { % if (num == "1") {
+ pop$ cap.st.en % return cap_st_en;
+ } { % } else {
+ duplicate$ "2" = { % if (num == "2") {
+ pop$ cap.nd.en % return cap_nd_en;
+ } { % } else {
+ duplicate$ "3" = { % if (num == "3") {
+ pop$ cap.rd.en % return cap_rd_en;
+ } { % } else {
+ pop$ cap.th.en % return cap_th_en;
+ } if$ % }
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {num.to.ordinal.en} { % String Entry::num_to_ordinal_en(String num) {
+ duplicate$ empty$ { % if (empty(num)) {
+ skip$ % return num;
+ } { % } else {
+ duplicate$ get.last.chr % String ch = get_last_chr(num);
+ get.ordinal.suffix.en % String str = get_ordinal_suffix_en(ch);
+ * % reutrn num + str;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+STRINGS {remove.dots.result} % static String remove_dots_result;
+ %
+FUNCTION {remove.dots} { % String Entry::remove_dots(String str) {
+ "" 'remove.dots.result := % remove_dots_result = "";
+ { duplicate$ empty$ not } { % while (! empty(str)) {
+ duplicate$ #1 #2 substring$ % String tmp = substring(str, 1, 2);
+ "\." = { % if (tmp == "\.") {
+ #3 global.max$ substring$ % str = substring(str, 3, global_max);
+ } { % } else {
+ duplicate$ #1 #1 substring$ % tmp = substring(str, 1, 1);
+ duplicate$ "." = { % if (tmp == ".") {
+ pop$ #2 global.max$ substring$ % str = substring(str, 2, global_max);
+ } { % } else {
+ remove.dots.result swap$ * % tmp = remove_dots_result + tmp;
+ 'remove.dots.result := % remove_dots_result = tmp;
+ #2 global.max$ substring$ % str = substring(str, 2, global_max);
+ } if$ % }
+ } if$ % }
+ } while$ % }
+ pop$ remove.dots.result % return remove_dots_result;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {add.brace} { % String Entry::add_brace(String str) {
+ "{" swap$ * "}" * % return "{" + str + "}";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {add.bracket} { % String Entry::bracket(String str) {
+ "(" swap$ * ")" * % return "(" + str + ")";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {add.squarebracket} { % String Entry::add_squarebracket(String str) {
+ "[" swap$ * "]" * % return "[" + str + "]";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {add.textit} { % String Entry::add_textit(String str) {
+ "\textit{" swap$ * "}" * % return "\textit{" + str + "}";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {add.textbf} { % String Entry::add_textbf(String str) {
+ "\textbf{" swap$ * "}" * % return "\textbf{" + str + "}";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // test if str contains a dash '-'
+FUNCTION {contain.dash} { % int Entry::contain_dash(String str) {
+ false swap$ % int result = false;
+ { duplicate$ empty$ not} { % while (! empty(str)) {
+ duplicate$ #1 #1 substring$ "-" = { % if (substring(str, 1, 1) == "-") {
+ pop$ pop$ true % result = true;
+ "" % str = "";
+ } { % } else {
+ #2 global.max$ substring$ % str = substring(str, 2, global_max);
+ } if$ % }
+ } while$ % }
+ pop$ % return result;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // extract the substring before the first '-'
+ % // returns the string itself if no '-'
+FUNCTION {extract.before.first.dash} { % String Entry::extract_before_first_dash(String str) {
+ duplicate$ % String suffix = str;
+ duplicate$ length swap$ % int n = length(str);
+ duplicate$ empty$ % int stop = empty(suffix);
+ { not } { % while (! stop) {
+ duplicate$ #1 #1 substring$ "-" = { % if (substring(suffix, 1, 1) == "-") {
+ true % stop = true;
+ } { % } else {4r
+ #2 global.max$ substring$ % suffix = substring(suffix, 2, global_max);
+ duplicate$ empty$ % stop = empty(suffix);
+ } if$ % }
+ } while$ % }
+ length - % int n = n - length(suffix);
+ #1 swap$ substring$ % return substring(str, 1, n);
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // extract the substring after the first '-'
+ % // returns the string itself if no '-'
+FUNCTION {extract.after.first.dash} { % String Entry::extract_after_first_dash(String str) {
+ duplicate$ % String suffix = str;
+ duplicate$ empty$ % int stop = empty(suffix);
+ { not } { % while (! stop) {
+ duplicate$ #1 #1 substring$ "-" = { % if (substring(suffix, 1, 1) == "-") {
+ true % stop = true;
+ } { % } else {4r
+ #2 global.max$ substring$ % suffix = substring(suffix, 2, global_max);
+ duplicate$ empty$ % stop = empty(suffix);
+ } if$ % }
+ } while$ % }
+ duplicate$ empty$ { % if (empty(suffix)) {
+ pop$ % return str;
+ } { % } else {
+ swap$ pop$ #2 global.max$ substring$ % return substring(suffix, 2, global_max);
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // extract the substring after the last '-'
+ % // returns the empty string if no '-'
+FUNCTION {extract.after.last.dash} { % String Entry::extract_after_last_dash(String str) {
+ duplicate$ contain.dash not { % if (! contain_dash(str)) {
+ pop$ "" % return "";
+ } { % } else {
+ {duplicate$ contain.dash} { % while (contain_dash(str)) {
+ extract.after.first.dash % str = extract_after_first_dash(str);
+ } while$ % }
+ % return str;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {trim.start} { % String Entry::trim_start(String str) {
+ {duplicate$ #1 #1 substring$ " " =} { % while (substring(str, 1, 1) == " ") {
+ #2 global.max$ substring$ % str = substring(str, 2, global_max);
+ } while$ % }
+ % return str;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {trim.end} { % String Entry::trim_end(String str) {
+ {duplicate$ get.last.chr " " =} { % while (get_last_chr(str) == " ") {
+ duplicate$ length #1 - % int n = length(str) - 1;
+ #1 swap$ substring$ % str = substring(str, 1, n);
+ } while$ % }
+ % return str;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {trim} { % String Entry::trim(String str) {
+ trim.start % str = trim_start(str);
+ trim.end % return trim_end(str);
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {start.bibitem} { % void Entry::start_bibitem() {
+ newline$ % writeln();
+ "\bibitem{" cite$ * "}" * write$ % write("\bibitem{" + this.cite + "}");
+ newline$ % writeln();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {end.bibitem} { % void Entry::end_bibitem() {
+ cap.period write$ % write(cap_period);
+ newline$ % writeln();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {is.in.chinese} { % int Entry::is_in_chinese() {
+ language empty$ { % if (empty(this.language)) {
+ false % return false;
+ } { % } else {
+ language "zh" = { % if (this.language == "zh") {
+ true % return true;
+ } { % } else {
+ false % return false;
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {is.online} { % int Entry::is_online() {
+ url empty$ not { % if (! empty(this.url)) {
+ true % return true;
+ } { % } else {
+ doi empty$ not { % if (! empty(this.doi)) {
+ true % return true;
+ } { % } else {
+ false % return false;
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {set.mark} { % void Entry::set_mark(String mark) {
+ 'mark := % this.mark = mark;
+ is.online { % if (is_online()) {
+ mark "/OL" * 'mark := % this.mark = this.mark + "/OL";
+ } { % } else {
+ media empty$ not { % if (! empty(this.media)) {
+ mark "/" * media * 'mark := % this.mark = this.mark + "/" + this.media;
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.volume} { % String Entry::cap_volume() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.volume.zh % return cap_volume_zh;
+ } { % } else {
+ cap.volume.en % return cap_volume_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.edition} { % String Entry::cap_edition() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.edition.zh % return cap_edition_zh;
+ } { % } else {
+ cap.edition.en % return cap_edition_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.anonymous} { % String Entry::cap_anonymous() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.anonymous.zh % return cap_anonymous_zh;
+ } { % } else {
+ cap.anonymous.en % return cap_anonymous_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.no.address} { % String Entry::cap_no_address() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.no.address.zh % return cap_no_address_zh;
+ } { % } else {
+ cap.no.address.en % return cap_no_address_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.no.publisher} { % String Entry::cap_no_publisher() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.no.publisher.zh % return cap_no_publisher_zh;
+ } { % } else {
+ cap.no.publisher.en % return cap_no_publisher_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.et.al} { % String Entry::cap_et_al() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.et.al.zh % return cap_et_al_zh;
+ } { % } else {
+ cap.et.al.en % return cap_et_al_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.translate} { % String Entry::cap_translate() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.translate.zh % return cap_translate_zh;
+ } { % } else {
+ cap.translate.en % return cap_translate_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.bibinfo} { % String Entry::format_bibinfo(String info, String type) {
+ swap$ add.brace swap$ % info = add_brace(info);
+ "\bib" swap$ * swap$ * % return "\bib" + type + info;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+INTEGERS { nameindex namecount } % static int nameindex, namecount;
+STRINGS { namelist nameformat } % static String namelist, nameformat;
+STRINGS { firstname lastname jrname vonname} % static String firstname, lastname, jrname, vonname;
+ %
+FUNCTION {format.names} { % String Entry::format_names(String names) {
+ 'namelist := % namelist = names;
+ namelist num.names$ 'namecount := % namecount = num_names(namelist);
+ "" % String result = "";
+ #0 'nameindex := % nameindex = 0;
+ {nameindex namecount < nameindex #3 < and} { % while ((nameindex < namecount) && (nameindex < 3)) {
+ nameindex #1 + 'nameindex := % nameindex = nameindex + 1;
+ nameindex #1 > { % if (nameindex > 1) {
+ cap.comma * % result = result + cap_comma;
+ } 'skip$ if$ % }
+ namelist nameindex "{vv}" format.name$ % String tmp = format_name(namelist, nameindex, "{vv}");
+ 'vonname := % vonname = tmp;
+ namelist nameindex "{jj}" format.name$ % tmp = format_name(namelist, nameindex, "{jj}");
+ remove.dots 'jrname := % jrname = remove_dots(tmp);
+ namelist nameindex "{f}" format.name$ % tmp = format_name(namelist, nameindex, "{f}");
+ remove.dots % tmp = remove_dots(tmp);
+ 'firstname := % firstname = change_case(tmp, "u");
+ namelist nameindex "{ll}" format.name$ % tmp = format_name(namelist, nameindex, "{ll}");
+ 'lastname := % lastname = change_case(tmp, "u");
+ jrname empty$ not { % if (! empty(jrname)) {
+ jrname * " " * % result = result + jrname + " "
+ } 'skip$ if$ % }
+ vonname empty$ not { % if (! empty(vonname)) {
+ vonname * " " * % result = result + vonname + " "
+ } 'skip$ if$ % }
+ lastname empty$ not { % if (! empty(lastname)) {
+ lastname * " " * % result = result + lastname + " "
+ } 'skip$ if$ % }
+ firstname empty$ not { % if (! empty(firstname)) {
+ firstname * " " * % result = result + firstname + " "
+ } 'skip$ if$ % }
+ trim.end % result = trim_end(result);
+ } while$ % }
+ nameindex namecount < { % if (nameindex < namecount) {
+ cap.et.al * % result = result + cap_et_al();
+ } 'skip$ if$ % }
+} % }
+ %
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // format English names
+FUNCTION {format.names.en} { % String Entry::format_names_en(String names) {
+ format.names % format_names(names);
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // format Chinese names
+FUNCTION {format.names.zh} { % String Entry::format_names_zh(String names) {
+ format.names % format_names(names);
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.author} { % String Emtry::format_author(String authors) {
+ is.in.chinese { % if (is_in_chinese) {
+ format.names.zh % authors = format_names_zh(authors);
+ } { % } else {
+ format.names.en % authors = format_names_en(authors);
+ } if$ % }
+ "author" format.bibinfo % return format_bibinfo(authors, "author");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.editor} { % String Emtry::format_author(String editors) {
+ is.in.chinese { % if (is_in_chinese) {
+ format.names.zh % editors = format_names_zh(editors);
+ } { % } else {
+ format.names.en % editors = format_names_en(editors);
+ } if$ % }
+ "editor" format.bibinfo % return format_bibinfo(editors, "editor");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.translator} { % String Emtry::format_translator(String translators) {
+ is.in.chinese { % if (is_in_chinese) {
+ duplicate$ % String names = translators;
+ format.names.zh % translators = format_names_zh(translators);
+ swap$ num.names$ #3 > { % if (num_names(names) > 3) {
+ cap.translate.zh * % translators = translators + cap_translate_zh;
+ } { % } else {
+ cap.comma * cap.translate.zh * % translators = translators + cap_comma + cap_translate_zh;
+ } if$ % }
+ } { % } else {
+ duplicate$ % String names = translators;
+ format.names.en % translators = format_names_en(translators);
+ swap$ num.names$ #3 > { % if (num_names(names) > 3) {
+ cap.translate.en * % translators = translators + cap_translate_en;
+ } { % } else {
+ cap.comma * cap.translate.en * % translators = translators + cap_comma + cap_translate_en;
+ } if$ % }
+ } if$ % }
+ "translator" format.bibinfo % return format_bibinfo(translator, "translator");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.title} { % String Emtry::format_title(String title) {
+ "title" format.bibinfo % return format_bibinfo(title, "title");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.booktitle} { % String Emtry::format_booktitle(String booktitle) {
+ "booktitle" format.bibinfo % return format_bibinfo(booktitle, "booktitle");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.mark} { % String Emtry::format_mark(String mark) {
+ "[" swap$ * "]" * % mark = "[" + mark + "]";
+ "mark" format.bibinfo % return format_bibinfo(mark, "mark");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.country} { % String Emtry::format_country(String country) {
+ "country" format.bibinfo % return format_bibinfo(country, "country");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.patentid} { % String Emtry::format_patentid(String patentid) {
+ "patentid" format.bibinfo % return format_bibinfo(patentid, "patentid");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.edition} { % String Emtry::format_edition(String edition) {
+ duplicate$ is.number { % if (is_number(edition)) {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.edition.zh * % edition = edition + cap_edition_zh;
+ } { % } else {
+ num.to.ordinal.en cap.edition.en * % edition = num_to_ordinal_en(edition) + cap_edition_en;
+ } if$ % }
+ } 'skip$ if$ % }
+ % // use a \mbox{} to prevent line break within edition
+ "\mbox{" swap$ * "}" * % edition = "\mbox{" + edition + "}";
+ "edition" format.bibinfo % return format_bibinfo(edition, "edition");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.organization} { % String Emtry::format_organization(String organization) {
+ "organization" format.bibinfo % return format_bibinfo(organization, "organization");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.address} { % String Emtry::format_address(String address) {
+ "address" format.bibinfo % return format_bibinfo(address, "address");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.publisher} { % String Emtry::format_publisher(String publisher) {
+ "publisher" format.bibinfo % return format_bibinfo(publisher, "publisher");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.institution} { % String Emtry::format_institution(String institution) {
+ "institution" format.bibinfo % return format_bibinfo(institution, "institution");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.school} { % String Emtry::format_school(String school) {
+ "school" format.bibinfo % return format_bibinfo(school, "school");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.year} { % String Emtry::format_year(String year) {
+ "year" format.bibinfo % return format_bibinfo(year, "year");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.date} { % String Emtry::format_date(String date) {
+ "date" format.bibinfo % return format_bibinfo(date, "date");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.journal} { % String Emtry::format_journal(String journal) {
+ "journal" format.bibinfo % return format_bibinfo(journal, "journal");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.volume} { % String Emtry::format_volume(String volume) {
+ "volume" format.bibinfo % return format_bibinfo(volume, "volume");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.number} { % String Emtry::format_number(String number) {
+ add.bracket % number = add_bracket(number);
+ "number" format.bibinfo % return format_bibinfo(number, "number");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.report.number} { % String Emtry::format_report_number(String number) {
+ "number" format.bibinfo % return format_bibinfo(number, "number");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.version} { % String Emtry::format_version(String version) {
+ "version" format.bibinfo % return format_bibinfo(version, "version");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.pages} { % String Emtry::format_pages(String pages) {
+ "pages" format.bibinfo % return format_bibinfo(pages, "pages");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.modifydate} { % String Emtry::format_modifydate(String modifydate) {
+ add.bracket % modifydate = add_bracket(modifydate);
+ "modifydate" format.bibinfo % return format_bibinfo(modifydate, "modifydate");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.citedate} { % String Emtry::format_citedate(String citedate) {
+ add.squarebracket % citedate = add_squarebracket(citedate);
+ "citedate" format.bibinfo % return format_bibinfo(citedate, "citedate");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % // NOTE: do not use the format_bibinfo() for URL,
+ % // since if the URL contains special symbols such
+ % // as '%', the \biburl{} will be broken.
+FUNCTION {format.url} { % String Emtry::format_url(String url) {
+ "\url{" swap$ * "}" * % return "\url{" + url + "}";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {get.full.title} { % String Entry::get_full_title() {
+ series empty$ { % if (empty(this.series)) {
+ volume empty$ { % if (empty(this.volume)) {
+ title % return this.title;
+ } { % } else {
+ title cap.colon * cap.volume * volume * % return this.title + cap_colon + cap_volume() + this.volume;
+ } if$ % }
+ } { % } else {
+ volume empty$ { % if (empty(this.volume)) {
+ series cap.colon * title * % return this.series + cap_colon + this.title;
+ } { % } else {
+ series cap.comma * cap.volume * volume * % String str = this.series + cap_comma + cal_volume() + this.volume;
+ cap.colon * title * % return str + cap_colon + this.title;
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {get.full.booktitle} { % String Entry::get_full_booktitle() {
+ series empty$ { % if (empty(this.series)) {
+ volume empty$ { % if (empty(this.volume)) {
+ booktitle % return this.booktitle;
+ } { % } else {
+ booktitle cap.colon * cap.volume * volume * % return this.booktitle + cap_colon + cap_volume() + this.volume;
+ } if$ % }
+ } { % } else {
+ volume empty$ { % if (empty(this.volume)) {
+ series cap.colon * booktitle * % return this.series + cap_colon + this.booktitle;
+ } { % } else {
+ series cap.comma * cap.volume * volume * % String str = this.series + cap_comma + cal_volume() + this.volume;
+ cap.colon * booktitle * % return str + cap_colon + this.booktitle;
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {get.pages} { % String Entry::get_pages() {
+ pages contain.dash { % if (contain_dash(this.pages)) {
+ pages extract.before.first.dash % String p1 = extract_before_first_dash(this.pages);
+ pages extract.after.last.dash % String p2 = extract_after_last_dash(this.pages);
+ cap.dash swap$ * * % return p1 + cap_dash + p2;
+ } { % } else {
+ pages % return this.pages;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.author.or.editor} { % void Entry::output_author_or_editor(int required) {
+ 'required := % this.required = required;
+ author empty$ not { % if (! empty(this.author)) {
+ author format.author write$ % write(format_author(this.author));
+ cap.period write$ % write(cap_period);
+ } { % } else {
+ editor empty$ not { % if (! empty(this.editor)) {
+ editor format.editor write$ % write(format_editor(this.editor));
+ cap.period write$ % write(cap_period);
+ } { % } else {
+ required { % if (required == 1) {
+ "Require author/editor: " cite$ * warning$% warning("Require author/editor: " + this.cite);
+ cap.anonymous format.author write$ % write(format_author(cap_anonymous()));
+ cap.period write$ % write(cap_period);
+ } 'skip$ if$ % }
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.author} { % void Entry::output_author(int required) {
+ 'required := % this.required = required;
+ author empty$ not { % if (! empty(this.author)) {
+ author format.author write$ % write(format_author(this.author));
+ cap.period write$ % write(cap_period);
+ } { % } else {
+ required { % if (required == 1) {
+ "Require author: " cite$ * warning$ % warning("Require author: " + this.cite);
+ cap.anonymous format.author write$ % write(format_author(cap_anonymous()));
+ cap.period write$ % write(cap_period);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.editor} { % void Entry::output_editor(int required) {
+ 'required := % this.required = required;
+ editor empty$ not { % if (! empty(this.editor)) {
+ editor format.editor write$ % write(format_editor(this.editor));
+ cap.period write$ % write(cap_period);
+ } { % } else {
+ required { % if (required == 1) {
+ "Require editor: " cite$ * warning$ % warning("Require editor: " + this.cite);
+ cap.anonymous format.editor write$ % write(format_editor(cap_anonymous()));
+ cap.period write$ % write(cap_period);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.title} { % void Entry::output_title(int required) {
+ 'required := % this.required = required;
+ title empty$ not { % if (! empty(this.title)) {
+ title format.title write$ % write(format_title(this.title));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require title: " cite$ * warning$ % warning("Require title: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.series.volume.title} { % void Entry::output_series_volume_title(int required) {
+ 'required := % this.required = required;
+ title empty$ not { % if (! empty(this.title)) {
+ get.full.title format.booktitle write$ % write(format_booktitle(get_full_title()));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require title: " cite$ * warning$ % warning("Require title: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.series.volume.booktitle} { % void Entry::output_series_volume_booktitle(int required) {
+ 'required := % this.required = required;
+ booktitle empty$ not { % if (! empty(this.booktitle)) {
+ get.full.booktitle format.booktitle write$ % write(format_booktitle(get_full_booktitle());
+ } { % } else {
+ required { % if (required == 1) {
+ "Require booktitle: " cite$ * warning$ % warning("Require booktitle: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.journal} { % void Entry::output_journal(int required) {
+ 'required := % this.required = required;
+ journal empty$ not { % if (! empty(this.journal)) {
+ cap.period write$ % write(cap_period);
+ journal format.journal write$ % write(format_journal(this.journal));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require journal: " cite$ * warning$ % warning("Require journal: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.mark} { % void Entry::output_mark(int required) {
+ 'required := % this.required = required;
+ mark empty$ not { % if (! empty(this.mark)) {
+ mark format.mark write$ % write(format_mark(this.mark));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require mark: " cite$ * warning$ % warning("Require mark: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.translator} { % void Entry::output_translator(int required) {
+ 'required := % this.required = required;
+ translator empty$ not { % if (! empty(this.translator)) {
+ cap.period write$ % write(cap_period);
+ translator format.translator write$ % write(format_translator(this.translator));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require translator: " cite$ * warning$ % warning("Require translator: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.edition} { % void Entry::output_edition(int required) {
+ 'required := % this.required = required;
+ edition empty$ not { % if (! empty(this.edition)) {
+ cap.period write$ % write(cap_period);
+ edition format.edition write$ % write(format_edition(this.edition));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require edition: " cite$ * warning$ % warning("Require edition: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.address} { % void Entry::output_address(int required) {
+ 'required := % this.required = required;
+ address empty$ not { % if (! empty(this.address)) {
+ cap.period write$ % write(cap_period);
+ address format.address write$ % write(format_address(this.address));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require address: " cite$ * warning$ % warning("Require address: " + this.cite);
+ cap.period write$ % write(cap_period);
+ cap.no.address format.address write$ % write(format_address(cap_no_address()));
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.inproaddress} { % void Entry::output_inproaddress(int required) {
+ 'required := % this.required = required;
+ address empty$ not { % if (! empty(this.address)) {
+ cap.comma write$ % write(cap_comma);
+ address format.address write$ % write(format_address(this.address));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require address: " cite$ * warning$ % warning("Require address: " + this.cite);
+ cap.comma write$ % write(cap_comma);
+ cap.no.address format.address write$ % write(format_address(cap_no_address()));
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.publisher} { % void Entry::output_publisher(int required) {
+ 'required := % this.required = required;
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ cap.colon write$ % write(cap_colon);
+ publisher format.publisher write$ % write(format_publisher(this.publisher));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require publisher: " cite$ * warning$ % warning("Require publisher: " + this.cite);
+ cap.colon write$ % write(cap_colon);
+ cap.no.publisher format.publisher write$ % write(format_publisher(cap_no_publisher()));
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.publisher.no.address} { % void Entry::output_publisher_no_address(int required) {
+ 'required := % this.required = required;
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ cap.period write$ % write(cap_period);
+ publisher format.publisher write$ % write(format_publisher(this.publisher));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require publisher: " cite$ * warning$ % warning("Require publisher: " + this.cite);
+ cap.period write$ % write(cap_period);
+ cap.no.publisher format.publisher write$ % write(format_publisher(cap_no_publisher()));
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.school} { % void Entry::output_school(int required) {
+ 'required := % this.required = required;
+ school empty$ not { % if (! empty(this.school)) {
+ cap.colon write$ % write(cap_colon);
+ school format.school write$ % write(format_school(this.school));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require school: " cite$ * warning$ % warning("Require publisher: " + this.cite);
+ cap.colon write$ % write(cap_colon);
+ cap.no.publisher format.school write$ % write(format_school(cap_no_publisher()));
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.institution} { % void Entry::output_institution(int required) {
+ 'required := % this.required = required;
+ institution empty$ not { % if (! empty(this.institution)) {
+ cap.colon write$ % write(cap_colon);
+ institution format.institution write$ % write(format_publisher(this.institution));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require institution: " cite$ * warning$ % warning("Require institution: " + this.cite);
+ cap.colon write$ % write(cap_colon);
+ cap.no.publisher format.institution write$ % write(format_institution(cap_no_publisher()));
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.year} { % void Entry::output_year(int required) {
+ 'required := % this.required = required;
+ year empty$ not { % if (! empty(this.year)) {
+ year format.year write$ % write(format_year(this.year));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require year: " cite$ * warning$ % warning("Require year: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.pages} { % void Entry::output_pages(int required) {
+ 'required := % this.required = required;
+ pages empty$ not { % if (! empty(this.pages)) {
+ cap.colon write$ % write(cap_colon);
+ get.pages format.pages write$ % write(format_pages(get_pages()));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require pages: " cite$ * warning$ % warning("Require pages: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.modifydate} { % void Entry::output_modifydate(int required) {
+ 'required := % this.required = required;
+ modifydate empty$ not { % if (! empty(this.modifydate)) {
+ cap.space write$ % write(cap_space);
+ modifydate format.modifydate write$ % write(format_modifydate(this.modifydate));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require modifydate: " cite$ * warning$ % warning("Require modifydate: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.citedate} { % void Entry::output_citedate(int required) {
+ 'required := % this.required = required;
+ citedate empty$ not { % if (! empty(this.citedate)) {
+ cap.space write$ % write(cap_space);
+ citedate format.citedate write$ % write(format_citedate(this.citedate));
+ } { % } else {
+ required is.online or { % if ((required == 1) || (is_online())) {
+ "Require citedate: " cite$ * warning$ % warning("Require citedate: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.date} { % void Entry::output_date(int required) {
+ 'required := % this.required = required;
+ date empty$ not { % if (! empty(this.date)) {
+ date format.date write$ % write(format_date(this.date));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require date: " cite$ * warning$ % warning("Require date: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.volume} { % void Entry::output_volume(int required) {
+ 'required := % this.required = required;
+ volume empty$ not { % if (! empty(this.volume)) {
+ cap.comma write$ % write(cap_comma);
+ volume format.volume write$ % write(format_volume(this.volume));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require volume: " cite$ * warning$ % warning("Require volume: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.number} { % void Entry::output_number(int required) {
+ 'required := % this.required = required;
+ number empty$ not { % if (! empty(this.number)) {
+ number format.number write$ % write(format_number(this.number));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require number: " cite$ * warning$ % warning("Require number: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.report.number} { % void Entry::output_report_number(int required) {
+ 'required := % this.required = required;
+ number empty$ not { % if (! empty(this.number)) {
+ cap.colon write$ % write(cap_colon);
+ number format.report.number write$ % write(format_report_number(this.number));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require number: " cite$ * warning$ % warning("Require number: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.country} { % void Entry::output_country(int required) {
+ 'required := % this.required = required;
+ country empty$ not { % if (! empty(this.country)) {
+ cap.colon write$ % write(cap_colon);
+ country format.country write$ % write(format_country(this.country));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require country: " cite$ * warning$ % warning("Require country: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.patentid} { % void Entry::output_patentid(int required) {
+ 'required := % this.required = required;
+ patentid empty$ not { % if (! empty(this.patentid)) {
+ cap.comma write$ % write(cap_comma);
+ patentid format.patentid write$ % write(format_patentid(this.patentid));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require patentid: " cite$ * warning$ % warning("Require patentid: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.start.year} { % void Entry::output_start_year(int required) {
+ 'required := % this.required = required;
+ year empty$ not { % if (! empty(this.year)) {
+ year extract.before.first.dash % String str = extract_before_first_dash(this.year);
+ format.year write$ % write(format_year(str));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require year: " cite$ * warning$ % warning("Require year: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.start.volume} { % void Entry::output_start_volume(int required) {
+ 'required := % this.required = required;
+ volume empty$ not { % if (! empty(this.volume)) {
+ cap.comma write$ % write(cap_comma);
+ volume extract.before.first.dash % String str = extract_before_first_dash(this.volume);
+ format.volume write$ % write(format_volume(str));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require volume: " cite$ * warning$ % warning("Require volume: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.start.number} { % void Entry::output_start_number(int required) {
+ 'required := % this.required = required;
+ number empty$ not { % if (! empty(this.number)) {
+ number extract.before.first.dash % String str = extract_before_first_dash(this.number);
+ format.number write$ % write(format_number(str));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require number: " cite$ * warning$ % warning("Require number: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.end.year} { % void Entry::output_end_year(int required) {
+ 'required := % this.required = required;
+ year empty$ not { % if (! empty(this.year)) {
+ year extract.after.last.dash % String str = extract_after_last_dash(this.year);
+ format.year write$ % write(format_year(str));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require year: " cite$ * warning$ % warning("Require year: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.end.volume} { % void Entry::output_end_volume(int required) {
+ 'required := % this.required = required;
+ volume empty$ not { % if (! empty(this.volume)) {
+ cap.comma write$ % write(cap_comma);
+ volume extract.after.last.dash % String str = extract_after_last_dash(this.volume);
+ format.volume write$ % write(format_volume(str));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require volume: " cite$ * warning$ % warning("Require volume: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.end.number} { % void Entry::output_end_number(int required) {
+ 'required := % this.required = required;
+ number empty$ not { % if (! empty(this.number)) {
+ number extract.after.last.dash % String str = extract_after_last_dash(this.number);
+ format.number write$ % write(format_number(str));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require number: " cite$ * warning$ % warning("Require number: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.url.or.doi} { % void Entry::output_url_or_doi(int required) {
+ 'required := % this.required = required;
+ url empty$ not { % if (! empty(this.url)) {
+ cap.period write$ % write(cap_period);
+ url format.url write$ % write(format_url(this.url));
+ } { % } else {
+ doi empty$ not { % if (! empty(this.doi)) {
+ cap.period write$ % write(cap_period);
+ cap.doi.url doi * format.url write$ % write(format_url(cap_doi_url + this.doi));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require URL or DOI: " cite$ * warning$ % warning("Require URL or DOI: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.url} { % void Entry::output_url(int required) {
+ 'required := % this.required = required;
+ url empty$ not { % if (! empty(this.url)) {
+ cap.period write$ % write(cap_period);
+ url format.url write$ % write(format_url(this.url));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require URL: " cite$ * warning$ % warning("Require URL: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.version} { % void Entry::output_version(int required) {
+ 'required := % this.required = required;
+ version empty$ not { % if (! empty(this.version)) {
+ cap.period write$ % write(cap_period);
+ version format.version write$ % write(format_version(this.version));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require version: " cite$ * warning$ % warning("Require version: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {book.impl} { % void Entry::book_impl() {
+ start.bibitem % start_bibitem();
+ true output.author.or.editor % output_author_or_editor(true);
+ true output.series.volume.title % output_series_volume_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ false output.edition % output_edition(false);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {book} { % void Entry::book() {
+ "M" set.mark % set_mark("M");
+ book.impl % book_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {collection} { % void Entry::collection() {
+ "G" set.mark % set_mark("G");
+ book.impl % book_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {proceedings} { % void Entry::proceedings() {
+ "C" set.mark % set_mark("C");
+ start.bibitem % start_bibitem();
+ true output.editor % output_editor(true);
+ true output.series.volume.title % output_series_volume_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ false output.edition % output_edition(false);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {conference} { % void Entry::conference() {
+ proceedings % proceedings();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {thesis.impl} { % void Entry::thesis_impl() {
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ true output.address % output_address(true);
+ true output.school % output_school(true);
+ cap.comma write$ % write(cap_comma);
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {phdthesis} { % void Entry::phdthesis() {
+ "D" set.mark % set_mark("D");
+ thesis.impl % thesis_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {masterthesis} { % void Entry::masterthesis() {
+ "D" set.mark % set_mark("D");
+ thesis.impl % thesis_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {bachelorthesis} { % void Entry::bachelorthesis() {
+ "D" set.mark % set_mark("D");
+ thesis.impl % thesis_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {techreport} { % void Entry::techreport() {
+ "R" set.mark % set_mark("R");
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ false output.report.number % output_report_number(false);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ false output.edition % output_edition(false);
+ false output.version % output_version(false);
+ institution empty$ not { % if (! empty(this.institution)) {
+ true output.address % output_address(true);
+ true output.institution % output_institution(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {standard} { % void Entry::standard() {
+ "S" set.mark % set_mark("S");
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ false output.edition % output_edition(false);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {reference} { % void Entry::reference() {
+ "K" set.mark % set_mark("K");
+ start.bibitem % start_bibitem();
+ false output.author.or.editor % output_author_or_editor(false);
+ true output.series.volume.title % output_series_volume_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ false output.edition % output_edition(false);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {manual} { % void Entry::manual() {
+ reference % reference();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {periodical.impl} { % void Entry::periodical_impl() {
+ start.bibitem % start_bibitem();
+ false output.editor % output_editor(false);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ cap.period write$ % write(cap_period);
+ true output.start.year % output_start_year(true);
+ false output.start.volume % output_start_volume(false);
+ false output.start.number % output_start_number(false);
+ cap.dash write$ % write(cap_dash);
+ year contain.dash { % if (contain_dash(this.year)) {
+ true output.end.year % output_end_year(true);
+ false output.end.volume % output_end_volume(false);
+ false output.end.number % output_end_number(false);
+ } 'skip$ if$ % }
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.start.year % output_start_year(true);
+ cap.dash write$ % write(cap_dash);
+ year contain.dash { % if (contain_dash(this.year)) {
+ true output.end.year % output_end_year(true);
+ } 'skip$ if$ % }
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {periodical} { % void Entry::periodical() {
+ "J" set.mark % set_mark("J");
+ periodical.impl % periodical_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {newspaper} { % void Entry::newspaper() {
+ "N" set.mark % set_mark("N");
+ periodical.impl % periodical_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {patent} { % void Entry::patent() {
+ "P" set.mark % set_mark("P");
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.country % output_country(true);
+ true output.patentid % output_patentid(true);
+ true output.mark % output_mark(true);
+ cap.period write$ % write(cap_period);
+ true output.date % output_date(true);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {online} { % void Entry::online() {
+ "EB" set.mark % set_mark("EB");
+ start.bibitem % start_bibitem();
+ false output.author % output_author(false);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ address empty$ not { % if (! empty(this.address)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ true output.publisher.no.address % output_publisher_no_address(true);
+ cap.comma write$ % write(cap_comma);
+ } if$ % }
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.modifydate % output_modifydate(false);
+ true output.citedate % output_citedate(true);
+ true output.url % output_url(true);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {webpage} { % void Entry::online() {
+ online % online();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {program.impl} { % void Entry::program_impl() {
+ start.bibitem % start_bibitem();
+ false output.author % output_author(false);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {program} { % void Entry::program() {
+ "CP" set.mark % set_mark("CP");
+ program.impl % program_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {database} { % void Entry::database() {
+ "DB" set.mark % set_mark("DB");
+ program.impl % program_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {unpublished} { % void Entry::unpublished() {
+ "H" set.mark % set_mark("H");
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ cap.period write$ % write(cap_period);
+ true output.year % output_year(true);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {manuscript} { % void Entry::manuscript() {
+ unpublished % unpublished();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {inbook.impl} { % void Entry::inbook_impl() {
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ cap.double.slash write$ % write(cap_double_slash);
+ false output.editor % output_editor(false);
+ true output.series.volume.booktitle % output_series_volume_booktitle(true);
+ false output.edition % output_edition(false);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {inproceedings.impl} { % void Entry::inproceedings_impl() {
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ cap.double.slash write$ % write(cap_double_slash);
+ false output.editor % output_editor(false);
+ true output.series.volume.booktitle % output_series_volume_booktitle(true);
+ false output.edition % output_edition(false);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.inproaddress % output_inproaddress(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ true output.inproaddress % output_inproaddress(true);
+ cap.comma write$ % write(cap_comma);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {inbook} { % void Entry::inbook() {
+ "M" set.mark % set_mark("M");
+ inbook.impl % inbook_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {incollection} { % void Entry::incollection() {
+ "G" set.mark % set_mark("G");
+ inbook.impl % inbook_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {inproceedings} { % void Entry::inproceedings() {
+ "C" set.mark % set_mark("C");
+ inproceedings.impl % inproceedings_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {article} { % void Entry::article() {
+ "J" set.mark % set_mark("J");
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ true output.journal % output_journal(true);
+ cap.comma write$ % write(cap_comma);
+ true output.year % output_year(true);
+ false output.volume % output_volume(false);
+ false output.number % output_number(false);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {news} { % void Entry::news() {
+ "N" set.mark % set_mark("N");
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ true output.journal % output_journal(true);
+ cap.comma write$ % write(cap_comma);
+ true output.date % output_date(true);
+ false output.number % output_number(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {default.type} { % void Entry::default_type() {
+ "Unsupported entry type for " cite$ * warning$ % warning("Unsupported entry type for " + this.cite);
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {longest.label.pass} { % void longest_label_pass(Entry entry) {
+ entry.count #1 + 'entry.count := % entry_count = entry_count + 1;
+ entry.count int.to.str$ 'label := % this.label = int_to_str(entry_count);
+ label width$ longest.label.width > { % if (width(this.label) > longest_label_width) {
+ label 'longest.label := % longest_label = this.label;
+ label width$ 'longest.label.width := % longest_label_width = width(this.label);
+ } 'skip$ if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {write.style.commands} { % void write_style_commands() {
+ cmd.bibauthor write$ % write(cmd_bibauthor);
+ newline$ % writeln();
+ cmd.bibeditor write$ % write(cmd_bibeditor);
+ newline$ % writeln();
+ cmd.bibtranslator write$ % write(cmd_bibtranslator);
+ newline$ % writeln();
+ cmd.bibtitle write$ % write(cmd_bibtitle);
+ newline$ % writeln();
+ cmd.bibbooktitle write$ % write(cmd_bibbooktitle);
+ newline$ % writeln();
+ cmd.bibjournal write$ % write(cmd_bibjournal);
+ newline$ % writeln();
+ cmd.bibmark write$ % write(cmd_bibmark);
+ newline$ % writeln();
+ cmd.bibcountry write$ % write(cmd_bibcountry);
+ newline$ % writeln();
+ cmd.bibpatentid write$ % write(cmd_bibpatentid);
+ newline$ % writeln();
+ cmd.bibedition write$ % write(cmd_bibedition);
+ newline$ % writeln();
+ cmd.biborganization write$ % write(cmd_biborganization);
+ newline$ % writeln();
+ cmd.bibaddress write$ % write(cmd_bibaddress);
+ newline$ % writeln();
+ cmd.bibpublisher write$ % write(cmd_bibpublisher);
+ newline$ % writeln();
+ cmd.bibinstitution write$ % write(cmd_bibinstitution);
+ newline$ % writeln();
+ cmd.bibschool write$ % write(cmd_bibschool);
+ newline$ % writeln();
+ cmd.bibvolume write$ % write(cmd_bibvolume);
+ newline$ % writeln();
+ cmd.bibnumber write$ % write(cmd_bibnumber);
+ newline$ % writeln();
+ cmd.bibversion write$ % write(cmd_bibversion);
+ newline$ % writeln();
+ cmd.bibpages write$ % write(cmd_bibpages);
+ newline$ % writeln();
+ cmd.bibmodifydate write$ % write(cmd_bibmodifydate);
+ newline$ % writeln();
+ cmd.bibcitedate write$ % write(cmd_bibcitedate);
+ newline$ % writeln();
+ cmd.bibyear write$ % write(cmd_bibyear);
+ newline$ % writeln();
+ cmd.bibdate write$ % write(cmd_bibdate);
+ newline$ % writeln();
+ cmd.biburl write$ % write(cmd_biburl);
+ newline$ % writeln();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {begin.bib} { % void begin_bib() {
+ preamble$ empty$ not { % if (! empty(premble)) {
+ preamble$ write$ % write(premeable);
+ newline$ % writeln();
+ } 'skip$ if$ % }
+ env.bibbegin write$ % write(env_bibbegin);
+ "{" longest.label * "}" * write$ % write("{" + longest.label + "}");
+ newline$ % writeln();
+ write.style.commands % write_style_commands();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {end.bib} { % void end_bib() {
+ newline$ % writeln();
+ env.bibend write$ % write(env_bibend);
+ newline$ % writeln();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {initialize} { % void initialize() {
+ #0 'entry.count := % entry_count = 0;
+ #0 'longest.label.width := % longest_label_width = 0;
+ "" 'longest.label := % longest_label = "";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % void main() {
+READ % List<Entry> entryList = read("<file>.bib");
+EXECUTE {initialize} % initialize();
+ITERATE {longest.label.pass} % for (Entry entry : entryList) {
+ % longest_label_pass(entry);
+ % }
+EXECUTE {begin.bib} % begin_bib();
+ITERATE {call.type$} % for (Entry entry : entryList) {
+ % switch (typeof(entry)) {
+ % case "book":
+ % entry.book();
+ % break;
+ % case "article":
+ % entry.article();
+ % break;
+ % .
+ % .
+ % .
+ % case "incollection":
+ % entry.incollection();
+ % break;
+ % case "misc":
+ % entry.misc();
+ % break;
+ % default:
+ % entry.default_type();
+ % }
+ % }
+EXECUTE {end.bib} % end_bib();
+ % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% End of file `GBT7714-2005.bst'
diff --git a/macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer.dtx b/macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer.dtx
new file mode 100644
index 0000000000..8cbdd0c505
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer.dtx
@@ -0,0 +1,722 @@
+% \iffalse meta-comment
+% !TeX program = XeLaTeX
+% !TeX encoding = UTF-8
+%
+% Copyright (C) 2019--2021 by Jingxuan Yang <yanglatex2e@gmail.com>
+%
+% 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.3c or later is part of all distributions of LaTeX
+% version 2008/05/04 or later.
+
+%<*internal>
+\def\nameofplainTeX{plain}
+\ifx\fmtname\nameofplainTeX\else
+ \expandafter\begingroup
+\fi
+%</internal>
+%<*install>
+
+\input docstrip
+\keepsilent
+\askforoverwritefalse
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2019--\the\year by Jingxuan Yang <yanglatex2e@gmail.com>
+
+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.3c or later is part of all distributions of LaTeX
+version 2008/05/04 or later.
+
+To produce the documentation run the original source files ending with `.dtx'
+through LaTeX.
+
+\endpreamble
+\postamble
+
+This package consists of the file thubeamer.dtx,
+ and the derived files thubeamer.pdf,
+ beamerthemethubeamer.sty,
+ beamercolorthemethubeamer.sty,
+ beamerinnerthemethubeamer.sty,
+ beamerouterthemethubeamer.sty.
+
+\endpostamble
+
+\usedir{tex/latex/thubeamer}
+\generate
+ {
+ \file{dtx-style.sty}{\from{\jobname.dtx}{dtx-style}}
+ \file{beamerthemethubeamer.sty}{\from{\jobname.dtx}{thubeamer}}
+ \file{beamercolorthemethubeamer.sty}{\from{\jobname.dtx}{thucolorstyle}}
+ \file{beamerinnerthemethubeamer.sty}{\from{\jobname.dtx}{thuinnerstyle}}
+ \file{beamerouterthemethubeamer.sty}{\from{\jobname.dtx}{thuouterstyle}}
+ }
+
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* files into a directory searched by TeX:}
+\Msg{*}
+\Msg{* The recommended directory is TEXMF/tex/latex/thubeamer}
+\Msg{*}
+\Msg{* \space\space dtx-style.sty}
+\Msg{* \space\space beamerthemethubeamer.sty}
+\Msg{* \space\space beamercolorthemethubeamer.sty}
+\Msg{* \space\space beamerinnerthemethubeamer.sty}
+\Msg{* \space\space beamerouterthemethubeamer.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the files ending with}
+\Msg{* `.dtx' through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{***********************************************************}
+
+%</install>
+%<install>\endbatchfile
+%<*internal>
+
+\usedir{tex/latex/thubeamer}
+\generate
+ {
+ \file{\jobname.ins}{\from{\jobname.dtx}{install}}
+ }
+\nopreamble\nopostamble
+
+\ifx\fmtname\nameofplainTeX
+ \expandafter\endbatchfile
+\else
+ \expandafter\endgroup
+\fi
+%</internal>
+%
+%<thubeamer|thucolorstyle|thuinnerstyle|thuouterstyle>\NeedsTeXFormat{LaTeX2e}
+%<thubeamer>\ProvidesPackage{beamerthemethubeamer}
+%<thucolorstyle>\ProvidesPackage{beamercolorthemethubeamer}
+%<thuinnerstyle>\ProvidesPackage{beamerinnerthemethubeamer}
+%<thuouterstyle>\ProvidesPackage{beamerouterthemethubeamer}
+%<thubeamer|thucolorstyle|thuinnerstyle|thuouterstyle>[2021/07/07 v1.0.0 A Beamer Theme for Tsinghua University (THU)]
+%
+%<*driver>
+\ProvidesFile{thubeamer.dtx}[2021/07/07 v1.0.0 A Beamer Theme for Tsinghua University (THU)]
+\documentclass{ltxdoc}
+\usepackage{dtx-style}
+
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+
+\begin{document}
+ \DocInput{\jobname.dtx}
+\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 \~}
+%
+% \GetFileInfo{\jobname.dtx}
+%
+% \changes{v1.0.0}{2021/07/07}{Initially design thubeamer}
+%
+% \DoNotIndex{\begin,\end,\begingroup,\endgroup}
+% \DoNotIndex{\ifx,\ifdim,\ifnum,\ifcase,\else,\or,\fi,\-}
+% \DoNotIndex{\let,\def,\xdef,\newcommand,\renewcommand}
+% \DoNotIndex{\expandafter,\csname,\endcsname,\relax,\protect}
+% \DoNotIndex{\Huge,\huge,\LARGE,\Large,\large,\normalsize}
+% \DoNotIndex{\small,\footnotesize,\scriptsize,\tiny}
+% \DoNotIndex{\normalfont,\bfseries,\slshape,\interlinepenalty}
+% \DoNotIndex{\hfil,\par,\hskip,\vskip,\vspace,\quad}
+% \DoNotIndex{\centering,\raggedright}
+% \DoNotIndex{\c@secnumdepth,\@startsection,\@setfontsize}
+% \DoNotIndex{\ ,\@plus,\@minus,\p@,\z@,\@m,\@M,\@ne,\m@ne}
+% \DoNotIndex{\@@par,\DeclareOperation,\RequirePackage,\LoadClass}
+% \DoNotIndex{\AtBeginDocument,\AtEndDocument}
+%
+% \IndexPrologue{\section*{索~~~~引}}
+% \GlossaryPrologue{\section*{修改记录}}
+%
+% \definecolor{beamer@headercolor}{RGB}{129,48,140}
+% \title{\bfseries\color{beamer@headercolor}\thubeamer:清华大学风格\\ Beamer主题}
+% \author{{\Large\fangsong 杨敬轩}\\[5pt]\texttt{yanglatex2e@gmail.com}\\[5pt]\texttt{yangjx20@mails.tsinghua.edu.cn}}
+% \date{\fileversion\ (\filedate)}
+%
+% \maketitle\thispagestyle{empty}
+%
+% \vskip 0.5cm
+%
+% \def\abstractname{\Large 摘\quad 要}
+% \begin{abstract}\normalsize\vskip0.5cm
+% \thubeamer~主题为作者在准备课程展示时设计制作,
+% 旨在帮助清华大学师生进行学术交流或其他需要演示文稿活动时,方便的使用 \LaTeX{} 制作含有学校特色的演示文稿。
+% \end{abstract}
+%
+% \vspace*{2em}
+% \def\abstractname{\Large 免责声明}
+% \begin{abstract}
+% \noindent\normalsize
+% \begin{enumerate}
+% \item 本模板的发布遵守 \href{http://www.latex-project.org/lppl.txt}{\LaTeX\ Project Public License 1.3c} 以及其后的最新版本,使用前请认真阅读协议内
+% 容。
+% \item 本主题为作者个人制作,使用仅供参考,任何由于使用本主题而引起的任何问题均与本主题作者无关。
+% \item 任何个人或组织以本模板为基础进行修改、扩展而生成的新的专用模板,请严格遵
+% 守 \href{http://www.latex-project.org/lppl.txt}{\LaTeX\ Project Public License 1.3c} 协议以及其后的最新版本。由于违犯协议而引起的任何纠纷争端均与
+% 本模板作者无关。
+% \end{enumerate}
+% \end{abstract}
+%
+%
+% \clearpage
+% \pagestyle{fancy}
+% \begin{multicols}{2}[
+% \setlength{\columnseprule}{.4pt}
+% \setlength{\columnsep}{18pt}]
+% \tableofcontents
+% \end{multicols}
+% \clearpage
+%
+% \section{模板介绍}
+% \thubeamer\ (\textbf{T}sing\textbf{H}ua \textbf{U}niversity \LaTeX{}
+% \textbf{Beamer} Template) 是为了帮助清华大学师生撰写演示文稿而编写的 \LaTeX{} Beamer 模板。
+%
+% 本文档将尽量完整的介绍模板的使用方法,如有不清楚之处可以参考示例文档或者根据
+% 第~\ref{sec:howtoask} 节说明提问,有兴趣者可以联系作者参与完善此手册,非常欢迎你清学子对本代码作出贡献。
+%
+% \section{安装}
+% \label{sec:installation}
+%
+% \thubeamer\ 已经上传 CTAN,已包含在 TeXLive 与 MiKTeX 发行版中。
+% 安装方法:打开命令行,输入以下命令即可
+% \begin{shell}
+% $ tlmgr install thubeamer
+% \end{shell}
+% 阅读本说明文档可以使用以下命令:
+% \begin{shell}
+% $ texdoc thubeamer
+% \end{shell}
+%
+% 如果要使用开发版,需自己下载,\thubeamer\ 相关链接:
+% \begin{itemize}
+% \item 主页:\href{https://github.com/YangLaTeX/thubeamer}{GitHub}
+% \item 下载:\href{http://www.ctan.org/pkg/thubeamer}{CTAN}
+% \end{itemize}
+%
+% \subsection{模板的组成}
+% 下表列出了 \thubeamer{} 的主要文件及其功能介绍:
+%
+% \begin{longtable}{l|p{8cm}}
+% \toprule
+% {\heiti 文件(夹)} & {\heiti 功能描述}\\\midrule
+% \endfirsthead
+% \midrule
+% {\heiti 文件(夹)} & {\heiti 功能描述}\\\midrule
+% \endhead
+% \endfoot
+% \endlastfoot
+% thubeamer.dtx & 主题宏包、说明文档以及主题驱动文件的混排文件\\
+% main.tex & 主题测试文档\\
+% figures/ & 主题相关矢量图存储文件夹\\
+% makedoc.bat & 生成主题与用户手册脚本\\
+% makebeamer.bat & 编译测试样例脚本\\
+% makeclean.bat & 清理编译过程中间文件脚本\\
+% makecleanall.bat & 清理编译过程中间文件与样式文件脚本\\
+% Makefile & Linux \& Mac OS脚本\\
+% \textbf{thubeamer.pdf} & 用户手册(本文档)\\
+% \bottomrule
+% \end{longtable}
+% \textbf{注:}使用前,请仔细阅读\textbf{thubeamer.pdf},即本文档。
+%
+% \section{使用说明}
+% \label{sec:usage}
+% 本手册假定用户已经能处理一般的 \LaTeX\ 文档,并对 \BibTeX\ 有一定了解。如果
+% 从来没有接触过 \TeX\ 和 \LaTeX,建议先学习相关的基础知识。
+%
+% \subsection{关于提问}
+% \label{sec:howtoask}
+% 按照优先级推荐提问的位置如下:
+%
+% \begin{itemize}
+% \item Github Issues: \href{http://github.com/YangLaTeX/thubeamer/issues}{http://github.com/YangLaTeX/thubeamer/issues}
+% \item Email: \href{mailto:yanglatex2e@gmail.com}{yanglatex2e@gmail.com}, \href{mailto:yangjx20@mails.tsinghua.edu.cn}{yangjx20@mails.tsinghua.edu.cn}
+% \end{itemize}
+%
+% \subsection{示例文件}
+% \label{sec:userguide}
+% 模板核心文件有四个\file{*.sty},但是如果
+% 没有示例文档用户会发现很难下手。所以推荐新用户从模板自带的示例文档入手,里面包
+% 括了Beamer写作用到的所有命令及其使用方法,只需要用自己的内容进行相应替换就可以。
+% 对于不清楚的命令可以查阅本手册。下面的例子描述了模板中章节的组织形式,来自于示
+% 例文档,具体内容可以参考模板附带的 \file{main.tex}。
+%
+% \lstinputlisting[style=lstStyleLaTeX]{main.tex}
+%
+% \subsection{论文选项}
+% \label{sec:option}
+%
+% 论文选项在\file{main.tex} 文件的开头描述,此处不赘述。
+%
+% \section{使用模板}
+% \subsection{如何编译}\label{SubSec:HowToMake}
+% \subsubsection{Windows用户}
+% 主题项目里已经列出了脚本:
+% 首先双击\file{makedoc.bat} 脚本,生成主题和用户手册;
+% 然后双击\file{makebeamer.bat} 脚本生成测试 Beamer 文件预览;
+% 最后双击\file{makeclean.bat} 清理编译过程的中间文件;
+% 双击\file{makecleanall.bat}可以清除辅助文件以及样式文件。
+%
+% \subsubsection{Linux \& Mac OS用户}
+% 首先运行下面命令生成主题和用户手册;
+% \begin{shell}
+% $ make doc
+% \end{shell}
+%
+% 然后运行下面命令生成测试 Beamer 文件预览;
+% \begin{shell}
+% $ make beamer
+% \end{shell}
+%
+% 最后运行下面命令清理编译过程的中间文件。
+% \begin{shell}
+% $ make clean
+% \end{shell}
+%
+% 若运行下面命令则清理编译过程的中间文件以及所有样式文件。
+% \begin{shell}
+% $ make cleanall
+% \end{shell}
+%
+% \section{致谢}
+% \label{sec:thanks}
+% 感谢 \href{https://github.com/StickCui/XDUstyle-Beamer-Theme}{XDUstyle}、\href{https://github.com/tl3shi/THUBeamer}{thubeamer} 模板的作者,本模板基于他们改编而来!
+%
+% 欢迎各位到 \href{http://github.com/YangLaTeX/thubeamer/}{\thubeamer\ Github 主页}贡献!
+%
+% \StopEventually{\PrintChanges\PrintIndex}
+% \clearpage
+%
+% \section{实现细节}
+%
+% \subsection{主题主文件部分}
+% 导入必要宏包
+% \begin{macrocode}
+%<*thubeamer>
+\def\thubeamer{\textsc{thu}\-\textsc{Beamer}}
+\RequirePackage{tikz}
+\usetikzlibrary{external}
+\RequirePackage{pgf}
+\RequirePackage{multicol}
+\RequirePackage{multimedia}
+\RequirePackage{calc}
+\RequirePackage{ctex}
+\RequirePackage{amsmath}
+\RequirePackage{amsthm}
+\RequirePackage{amssymb}
+\RequirePackage{bm}
+\RequirePackage{graphicx}
+\RequirePackage{tabularx}
+\RequirePackage{booktabs}
+\RequirePackage{multirow}
+\RequirePackage{enumerate}
+\RequirePackage{hyperref}
+\RequirePackage{algorithm}
+\RequirePackage{algorithmic}
+\RequirePackage[T1]{fontenc}
+\RequirePackage{latexsym,xcolor,multicol,calligra}
+\RequirePackage{pstricks,listings,stackengine}
+\RequirePackage[sort&compress,numbers]{natbib}
+% \end{macrocode}
+%
+% 主题选项
+% \begin{macrocode}
+\DeclareOptionBeamer{thupurple}{
+ \PassOptionsToPackage{thupurple}{beamercolorthemethubeamer}
+ \PassOptionsToPackage{thupurple}{beamerinnerthemethubeamer}
+ \PassOptionsToPackage{thupurple}{beamerouterthemethubeamer}
+}
+\DeclareOptionBeamer{thupurple2}{
+ \PassOptionsToPackage{thupurple2}{beamercolorthemethubeamer}
+ \PassOptionsToPackage{thupurple2}{beamerinnerthemethubeamer}
+ \PassOptionsToPackage{thupurple2}{beamerouterthemethubeamer}
+}
+\DeclareOptionBeamer{smoothbars}{
+ \PassOptionsToPackage{smoothbars}{beamercolorthemethubeamer}
+ \PassOptionsToPackage{smoothbars}{beamerouterthemethubeamer}
+}
+\DeclareOptionBeamer{sidebar}{
+ \PassOptionsToPackage{sidebar}{beamercolorthemethubeamer}
+ \PassOptionsToPackage{sidebar}{beamerouterthemethubeamer}
+}
+\DeclareOptionBeamer{sectiontoc}{
+ \PassOptionsToPackage{sectiontoc}{beamerinnerthemethubeamer}
+}
+\DeclareOptionBeamer{subsectiontoc}{
+ \PassOptionsToPackage{subsectiontoc}{beamerinnerthemethubeamer}
+}
+\ProcessOptionsBeamer
+% \end{macrocode}
+%
+% 特殊设置
+% \begin{macrocode}
+\mode<presentation>
+{
+ \useinnertheme{thubeamer}
+ \useoutertheme{thubeamer}
+ \usecolortheme{thubeamer}
+}
+
+\mode<all>
+%</thubeamer>
+% \end{macrocode}
+% \subsection{主题配色文件部分}
+%
+% 参数设置
+% \begin{macrocode}
+%<*thucolorstyle>
+\DeclareOptionBeamer{thupurple}{\def\beamer@thucolor{thupurple}}
+\DeclareOptionBeamer{thupurple2}{\def\beamer@thucolor{thupurple2}}
+\DeclareOptionBeamer{smoothbars}{\def\beamer@thubar{smoothbars}}
+\DeclareOptionBeamer{sidebar}{\def\beamer@thubar{sidebar}}
+\ProcessOptionsBeamer
+
+\def\beamer@thucolorpurple{thupurple}
+\def\beamer@thusidebar{sidebar}
+% \end{macrocode}
+%
+% 颜色设置。
+% \begin{macrocode}
+\mode<presentation>
+
+\ifx\beamer@thucolor\beamer@thucolorpurple
+ \definecolor{beamer@textcolor}{RGB}{119,33,151}
+ \definecolor{beamer@headercolor}{RGB}{129,48,140} % purple
+ \ifx\beamer@thubar\beamer@thusidebar
+ \definecolor{beamer@sidebarcolor}{RGB}{129,48,140}
+ \else
+ \definecolor{beamer@sidebarcolor}{RGB}{129,48,140}
+ \fi
+\else
+ \definecolor{beamer@textcolor}{RGB}{119,33,151}
+ \definecolor{beamer@headercolor}{RGB}{129,48,140}
+ \ifx\beamer@thubar\beamer@thusidebar
+ \definecolor{beamer@sidebarcolor}{RGB}{129,48,140}
+ \else
+ \definecolor{beamer@sidebarcolor}{RGB}{129,48,140}
+ \fi
+\fi
+
+% \setbeamercolor{footline}{bg=beamer@headercolor}
+\setbeamercolor{title}{fg=white,bg=beamer@headercolor}
+\ifx\beamer@thubar\beamer@thusidebar
+ \setbeamercolor{frametitle}{fg=beamer@headercolor,bg=beamer@headercolor!10}
+\else
+ \setbeamercolor{frametitle}{fg=white,bg=beamer@headercolor}
+\fi
+\setbeamerfont{frametitle}{size=\large}
+
+\setbeamercolor{secondbottomline}{fg=white,bg=beamer@headercolor!50!black}
+\setbeamercolor{firstbottomline}{fg=white,bg=beamer@headercolor}
+
+\setbeamercolor{palette primary}{use=structure,fg=white,bg=structure.fg}
+\setbeamercolor{palette secondary}{use=structure,fg=white,bg=structure.fg!75!black}
+\setbeamercolor{palette tertiary}{use=structure,fg=white,bg=structure.fg!50!black}
+\setbeamercolor{palette quaternary}{fg=white,bg=structure.fg!50!black}
+
+\setbeamercolor{block title}{fg=white,bg=beamer@headercolor}
+\setbeamercolor{block body}{bg=beamer@headercolor!10}
+\setbeamercolor{block title example}{%
+ use={normal text,example text},fg=white,bg=example text.fg!75!green
+}
+\setbeamercolor{fine separation line}{}
+\setbeamercolor{item projected}{fg=white}
+
+\setbeamercolor{palette sidebar primary}{use=normal text,fg=normal text.fg}
+\setbeamercolor{palette sidebar secondary}{use=structure,fg=structure.fg}
+\setbeamercolor{palette sidebar tertiary}{use=normal text,fg=normal text.fg}
+\setbeamercolor{palette sidebar quaternary}{use=structure,fg=structure.fg}
+
+\setbeamercolor{section in sidebar}{fg=beamer@textcolor}
+\setbeamercolor{section in sidebar shaded}{fg=gray}
+\setbeamercolor{separation line}{}
+\ifx\beamer@thubar\beamer@thusidebar
+ \setbeamercolor{sidebar}{bg=beamer@sidebarcolor!10}
+\else
+ \setbeamercolor{sidebar}{bg=beamer@sidebarcolor}
+\fi
+\setbeamercolor{sidebar}{parent=palette primary}
+\setbeamercolor{structure}{fg=beamer@headercolor}
+\setbeamercolor{subsection in sidebar}{fg=beamer@textcolor}
+\setbeamercolor{subsection in sidebar shaded}{fg=gray}
+\setbeamercolor{logo}{bg=beamer@headercolor!20}
+
+\mode<all>
+%</thucolorstyle>
+% \end{macrocode}
+%
+% \subsection{内部主题文件部分}
+%
+% 必要宏包
+% \begin{macrocode}
+%<*thuinnerstyle>
+\RequirePackage{tikz}
+\usetikzlibrary{external}
+% \end{macrocode}
+%
+% 参数设置
+% \begin{macrocode}
+\DeclareOptionBeamer{sectiontoc}{\def\beamer@thusectoc{sectiontoc}}
+\DeclareOptionBeamer{subsectiontoc}{\def\beamer@thusubsectoc{subsectiontoc}}
+\ProcessOptionsBeamer
+
+\def\beamer@thusectiontoc{sectiontoc}
+\def\beamer@thusubsectiontoc{subsectiontoc}
+% \end{macrocode}
+%
+% 特殊设置
+% \begin{macrocode}
+\mode<presentation>
+
+\useinnertheme{circles}
+% \usefonttheme{structurebold}
+\setbeamertemplate{caption}[numbered]{}
+\useinnertheme[shadow]{rounded}
+
+\newcommand\varparallel{%
+ \mathrel{%
+ \text{%
+ \tikz[baseline] \draw (0em,-0.3ex) -- (.4em,1.7ex) (.2em,-0.3ex) -- (.6em,1.7ex);
+ }%
+ }%
+}
+
+\ifx\beamer@thusectoc\beamer@thusectiontoc
+ \AtBeginSection[]{
+ \begin{frame}
+ \begin{multicols}{2}
+ \tableofcontents[sectionstyle=show/shaded,subsectionstyle=show/shaded/hide,subsubsectionstyle=show/shaded/hide]
+ \end{multicols}
+ \end{frame}
+ }
+\fi
+
+\ifx\beamer@thusubsectoc\beamer@thusubsectiontoc
+ \AtBeginSubsection[]{
+ \begin{frame}
+ \begin{multicols}{2}
+ \tableofcontents[sectionstyle=show/shaded,subsectionstyle=show/shaded/hide,subsubsectionstyle=show/shaded/hide]
+ \end{multicols}
+ \end{frame}
+ }
+\fi
+
+\mode<all>
+%</thuinnerstyle>
+% \end{macrocode}
+% \subsection{外部主题文件部分}
+%
+% \begin{macrocode}
+%<*thuouterstyle>
+% \end{macrocode}
+%
+% 参数设置
+% \begin{macrocode}
+\DeclareOptionBeamer{smoothbars}{\def\beamer@thubar{smoothbars}}
+\DeclareOptionBeamer{sidebar}{\def\beamer@thubar{sidebar}}
+\ProcessOptionsBeamer
+\def\beamer@thusidebar{sidebar}
+
+\mode<presentation>
+
+% 取消导航符号
+\setbeamertemplate{navigation symbols}{}
+
+\ifx\beamer@thubar\beamer@thusidebar
+ \useoutertheme[width=0.17\linewidth]{sidebar}
+ \logo{\includegraphics[width=0.08\linewidth]{thulogo.pdf}}
+\else
+ \useoutertheme[footline=authorinstitutetitle,subsection=false]{smoothbars}
+\fi
+
+% set footline
+\makeatletter
+\newcommand{\frameofframes}{/}
+\newcommand{\setframeofframes}[1]{
+ \renewcommand{\frameofframes}{#1}
+}
+\setbeamertemplate{footline}{%
+ \begin{beamercolorbox}[colsep=1.5pt]{upper separation line foot}
+ \end{beamercolorbox}
+ \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,%
+ leftskip=.3cm,rightskip=.3cm plus1fil]{firstbottomline}%
+ \leavevmode{\usebeamerfont{author in head/foot}\insertshortauthor}%
+ \hfill%
+ {\usebeamerfont{institute in head/foot}%
+ \usebeamercolor[fg]{frame number}%
+ \insertshortinstitute
+ }%
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,%
+ leftskip=.3cm,rightskip=.3cm plus1fil]{secondbottomline}%
+ {\usebeamerfont{title in head/foot}\insertshorttitle}%
+ \hfill%
+ {\usebeamerfont{frame number}\usebeamercolor[fg]{frame number}\insertframenumber~\frameofframes~\inserttotalframenumber}
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[colsep=1.5pt]{lower separation line foot}
+ \end{beamercolorbox}
+}
+\makeatother
+
+\mode<all>
+%</thuouterstyle>
+% \end{macrocode}
+%
+% \iffalse
+% \begin{macrocode}
+%<*dtx-style>
+\ProvidesPackage{dtx-style}
+\RequirePackage{hypdoc}
+\RequirePackage[UTF8,scheme=chinese,fontset=windowsnew]{ctex}
+\RequirePackage{newpxtext}
+\RequirePackage{newpxmath}
+\RequirePackage[top=2.5cm, bottom=2.5cm, left=3cm, right=2cm, headsep=8mm]{geometry}
+\RequirePackage{array,longtable,booktabs}
+\RequirePackage{listings}
+\RequirePackage{fancyhdr}
+\RequirePackage{xcolor}
+\RequirePackage{enumitem}
+\RequirePackage{etoolbox}
+\RequirePackage{metalogo}
+\RequirePackage{hyperref}
+
+\colorlet{thu@macro}{purple!60!black}
+\colorlet{thu@env}{purple!70!black}
+\colorlet{thu@option}{purple}
+\patchcmd{\PrintMacroName}{\MacroFont}{\MacroFont\bfseries\color{thu@macro}}{}{}
+\patchcmd{\PrintDescribeMacro}{\MacroFont}{\MacroFont\bfseries\color{thu@macro}}{}{}
+\patchcmd{\PrintDescribeEnv}{\MacroFont}{\MacroFont\bfseries\color{thu@env}}{}{}
+\patchcmd{\PrintEnvName}{\MacroFont}{\MacroFont\bfseries\color{thu@env}}{}{}
+
+\def\DescribeOption{%
+ \leavevmode\@bsphack\begingroup\MakePrivateLetters%
+ \Describe@Option}
+\def\Describe@Option#1{\endgroup
+ \marginpar{\raggedleft\PrintDescribeOption{#1}}%
+ \thu@special@index{option}{#1}\@esphack\ignorespaces}
+\def\PrintDescribeOption#1{\strut \MacroFont\bfseries\sffamily\color{thu@option} #1\ }
+\def\thu@special@index#1#2{\@bsphack
+ \begingroup
+ \HD@target
+ \let\HDorg@encapchar\encapchar
+ \edef\encapchar usage{%
+ \HDorg@encapchar hdclindex{\the\c@HD@hypercount}{usage}%
+ }%
+ \index{#2\actualchar{\string\ttfamily\space#2}
+ (#1)\encapchar usage}%
+ \index{#1:\levelchar#2\actualchar
+ {\string\ttfamily\space#2}\encapchar usage}%
+ \endgroup
+ \@esphack}
+
+\lstdefinestyle{lstStyleBase}{%
+ basicstyle=\small\ttfamily,
+ aboveskip=\medskipamount,
+ belowskip=\medskipamount,
+ lineskip=0pt,
+ boxpos=c,
+ showlines=false,
+ extendedchars=true,
+ upquote=true,
+ tabsize=2,
+ showtabs=false,
+ showspaces=false,
+ showstringspaces=false,
+ numbers=none,
+ linewidth=\linewidth,
+ xleftmargin=4pt,
+ xrightmargin=0pt,
+ resetmargins=false,
+ breaklines=true,
+ breakatwhitespace=false,
+ breakindent=0pt,
+ breakautoindent=true,
+ columns=flexible,
+ keepspaces=true,
+ gobble=2,
+ framesep=3pt,
+ rulesep=1pt,
+ framerule=1pt,
+ backgroundcolor=\color{gray!5},
+ stringstyle=\color{purple!40!black!100},
+ keywordstyle=\bfseries\color{purple!50!black},
+ commentstyle=\slshape\color{black!60}}
+
+\lstdefinestyle{lstStyleShell}{%
+ style=lstStyleBase,
+ frame=l,
+ rulecolor=\color{purple},
+ language=bash}
+
+\definecolor{beamer@headercolor}{RGB}{21,95,130}
+\lstdefinestyle{lstStyleLaTeX}{%
+ style=lstStyleBase,
+ frame=l,
+ rulecolor=\color{beamer@headercolor},
+ language=[LaTeX]TeX}
+
+\lstnewenvironment{latex}{\lstset{style=lstStyleLaTeX}}{}
+\lstnewenvironment{shell}{\lstset{style=lstStyleShell}}{}
+
+\setlist{nosep}
+
+\DeclareDocumentCommand{\option}{m}{\textsf{#1}}
+\DeclareDocumentCommand{\env}{m}{\texttt{#1}}
+\DeclareDocumentCommand{\pkg}{s m}{%
+ \texttt{#2}\IfBooleanF#1{\thu@special@index{package}{#2}}}
+\DeclareDocumentCommand{\file}{s m}{%
+ \texttt{#2}\IfBooleanF#1{\thu@special@index{file}{#2}}}
+\newcommand{\myentry}[1]{%
+ \marginpar{\small\raggedleft\color{purple}\bfseries\strut #1}}
+\newcommand{\note}[2][Note]{{%
+ \color{magenta}{\bfseries #1}\emph{#2}}}
+\def\thubeamer{\textsc{Thu}\-\textsc{Beamer}}
+\def\thu{清华大学}
+%</dtx-style>
+% \end{macrocode}
+% \fi
+%
+% \Finale
+%
+\endinput
+% \iffalse
+% Local Variables:
+% mode: doctex
+% TeX-master: t
+% End:
+% \fi
diff --git a/macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer.pdf b/macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer.pdf
new file mode 100644
index 0000000000..0cda53aa81
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/thubeamer/thubeamer.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/changes.drv b/macros/latex/contrib/changes/changes.drv
index 4f8e28e5ad..1f7edaa71e 100644
--- a/macros/latex/contrib/changes/changes.drv
+++ b/macros/latex/contrib/changes/changes.drv
@@ -1,6 +1,6 @@
%%%
% driver file of changes package
-\newcommand{\docversion}{4.1.0}
+\newcommand{\docversion}{4.2.0}
\documentclass[titlepage, parskip=half, toc=flat, cleardoublepage=empty, captions=nooneline, origlongtable, english]{scrartcl}
diff --git a/macros/latex/contrib/changes/changes.dtx b/macros/latex/contrib/changes/changes.dtx
index fa99005bae..f2388c9b4a 100644
--- a/macros/latex/contrib/changes/changes.dtx
+++ b/macros/latex/contrib/changes/changes.dtx
@@ -1,4 +1,4 @@
-% \CheckSum{1275}
+% \CheckSum{1357}
%
% \iffalse meta-comment
%
@@ -68,6 +68,7 @@
% \changes{v4.0.3}{2021/05/09}{bugfix: compile error with cite command in change markup with final option}
% \changes{v4.0.4}{2021/05/13}{bugfix: added missing regression.dtx to ctan archive; no code change}
% \changes{v4.1.0}{2021/05/30}{clickable list of changes}
+% \changes{v4.2.0}{2021/07/07}{new macro for setting anonymous name; french translations}
% \GetFileInfo{changes.dtx}
% \RecordChanges
%
@@ -107,8 +108,8 @@
% Type some information to the console.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{changes}[2021/05/30 v4.1.0 changes package]
-\typeout{*** changes package 2021/05/30 v4.1.0 ***}
+\ProvidesPackage{changes}[2021/07/07 v4.2.0 changes package]
+\typeout{*** changes package 2021/07/07 v4.2.0 ***}
% \end{macrocode}
%
% Package \docpackage{xkeyval} provides options with key-value-pairs.
@@ -365,7 +366,8 @@
}
% \end{macrocode}
%
-% Store default author color..
+%
+% Store default author color.
% \begin{macrocode}
\newcommand{\Changes@optiondefaultcolor}{blue}
\DeclareOptionX{defaultcolor}{
@@ -616,7 +618,7 @@
% \begin{macrocode}
\newrobustcmd{\IfIsAuthorEmptyAtPosition}[4]{%
\ifboolexpr{%
- test {\IfIsAnonymous{#1}} or%
+ test {\IfIsAuthorOutputEmpty{#1}} or%
not test {\IfStrEq{\Changes@optionauthormarkupposition}{#2}}%
}%
{#3}%
@@ -625,6 +627,26 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\IfIsAuthorOutputEmpty}
+%
+% Check if author output is empty.
+%
+% This test could be removed if the test for empty \doccommand{Changes@output@author} would work. % todo
+%
+% Corresponds to the if macros of \docpackage{etoolbox}, so it can be used in it's boolean tests.
+% Mainly the last two parameters are the results of \emph{true} and \emph{false} computation.
+% \begin{macrocode}
+\newrobustcmd{\IfIsAuthorOutputEmpty}[3]{%
+ \ifboolexpr{%
+ test {\IfIsAnonymous{#1}} and%
+ not test {\IfStrEq{\Changes@optionauthormarkuptext}{name}}%
+ }%
+ {#2}%
+ {#3}%
+}
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Packages}
%
% Package \docpackage{xcolor} provides colored text.
@@ -749,6 +771,20 @@
\addto\captionsitalian{\def\changesnochanges{Nessuna modifica.}} % translation by me (EK), please provide correct translation
\addto\captionsitalian{\def\changesnoloc{La lista delle modifiche sar\`a disponibile alla prossima esecuzione di \LaTeX.}}
\addto\captionsitalian{\def\changesnosoc{Le modifiche sar\`a disponibile alla prossima esecuzione di \LaTeX.}}
+
+ \addto\captionsfrench{\def\listofchangesname{Liste des modifications}}
+ \addto\captionsfrench{\def\summaryofchangesname{Modifications}}
+ \addto\captionsfrench{\def\compactsummaryofchangesname{Modifications (compact)}}
+ \addto\captionsfrench{\def\changesaddedname{Ajout\'e}}
+ \addto\captionsfrench{\def\changesdeletedname{Supprim\'e}}
+ \addto\captionsfrench{\def\changesreplacedname{Remplac\'e}}
+ \addto\captionsfrench{\def\changeshighlightname{Mis en \'evidence}}
+ \addto\captionsfrench{\def\changescommentname{Comment\'e}}
+ \addto\captionsfrench{\def\changesauthorname{Auteur}}
+ \addto\captionsfrench{\def\changesanonymousname{Anonyme}}
+ \addto\captionsfrench{\def\changesnochanges{Pas de modification}}
+ \addto\captionsfrench{\def\changesnoloc{Liste des modifications disponible apr\`es la prochaine ex\'ecution de \LaTeX.}}
+ \addto\captionsfrench{\def\changesnosoc{Résumé des modifications disponible apr\`es la prochaine ex\'ecution de \LaTeX.}}
}
{}
% \end{macrocode}
@@ -845,6 +881,18 @@
% \end{macrocode}
%
%
+% \begin{macro}{\setanonymousname}
+% Sets the anonymous author name.
+% \begin{macrocode}
+\newrobustcmd{\setanonymousname}[1]{
+ \AtBeginDocument{
+ \def\changesanonymousname{#1}
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
% \subsubsection{Author markup}
%
% \begin{macro}{\Changes@Markup@author}
@@ -1026,7 +1074,9 @@
\IfIsColored%
{\colorlet{Changes@todocolor}{authorcolor}}%
{\colorlet{Changes@todocolor}{black}}%
- \todo[color=Changes@todocolor!10, bordercolor=Changes@todocolor, linecolor=Changes@todocolor!70, nolist]{\textbf{[\IfIsAnonymous{#2}{}{#3~}\arabic{authorcommentcount}]} #1}%
+ \todo[color=Changes@todocolor!10, bordercolor=Changes@todocolor, linecolor=Changes@todocolor!70, nolist]{%
+ \textbf{[\IfIsAuthorOutputEmpty{#2}{}{#3~}\arabic{authorcommentcount}]} #1%
+ }%
}{}%
\IfStrEq{\Changes@optioncommentmarkup}{margin}%
{%
@@ -1034,13 +1084,13 @@
\IfIsColored%
{\leavevmode\color{authorcolor}}%
{}%
- \textbf{[\IfIsAnonymous{#2}{}{#3~}\arabic{Changes@commentCount#2}]:} #1%
+ \textbf{[\IfIsAuthorOutputEmpty{#2}{}{#3~}\arabic{authorcommentcount}]:} #1%
}%
}{}%
\IfStrEq{\Changes@optioncommentmarkup}{footnote}%
{%
\footnote{%
- \textbf{[\IfIsAnonymous{#2}{}{#3~}\arabic{Changes@commentCount#2}]:} #1%
+ \textbf{[\IfIsAuthorOutputEmpty{#2}{}{#3~}\arabic{authorcommentcount}]:} #1%
}%
}{}%
\IfStrEq{\Changes@optioncommentmarkup}{uwave}%
@@ -1051,7 +1101,7 @@
{}%
\allowbreak%
\uwave{%
- \textbf{[\IfIsAnonymous{#2}{}{#3~}\arabic{Changes@commentCount#2}]:} #1%
+ \textbf{[\IfIsAuthorOutputEmpty{#2}{}{#3~}\arabic{authorcommentcount}]:} #1%
}%
}%
}{}%
@@ -1114,39 +1164,55 @@
%
% \begin{macro}{\Changes@output@author}
%
-% Output command for the author.
+% Output command for the author: id or name.
%
% This command has the following arguments:
% \begin{enumerate}
% \item author's id
-% \item position to output the author to (left or right)
% \end{enumerate}
-%
-% \doccommand{DeclareRobustCommand} is used for not breaking the todo note definition.
-% \begin{macrocode}
-\newrobustcmd{\Changes@output@author}[2]{%
-% \end{macrocode}
-%
-% Output author text only if author's id is given and the position matches, otherwise output empty text.
% \begin{macrocode}
- \IfIsAuthorEmptyAtPosition{#1}{#2}%
+\newrobustcmd{\Changes@output@author}[1]{%
+ \IfStrEq{\Changes@optionauthormarkuptext}{id}%
+ {#1}%
{}%
+ \IfStrEq{\Changes@optionauthormarkuptext}{name}%
{%
- \IfStrEq{\Changes@optionauthormarkuptext}{id}%
- {#1}%
- {}%
- \IfStrEq{\Changes@optionauthormarkuptext}{name}%
+ \IfIsAnonymous{#1}%
+ {\changesanonymousname}%
{%
- % \end{macrocode}
- %
- % I cannot use \doccommand{IfIsEmpty} here, because it does not work in this case.
- % I cannot add the test with \doccommand{IfStrEq} to \doccommand{IfIsEmpty} because it breaks e.g. with a \doccommand{cite} command in the final option.
- % \begin{macrocode}
+ % \end{macrocode}
+ %
+ % I cannot use \doccommand{IfIsEmpty} here, because it does not work in this case.
+ % I cannot add the test with \doccommand{IfStrEq} to \doccommand{IfIsEmpty} because
+ % it breaks e.g. with a \doccommand{cite} command in the final option.
+ % \begin{macrocode}
\IfStrEq{\csuse{Changes@AuthorName#1}}{}%
{#1}%
{\csuse{Changes@AuthorName#1}}%
- }%
- {}%
+ }%
+ }%
+ {}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Changes@output@author@position}
+%
+% Output command for the author at the given position.
+%
+% This command has the following arguments:
+% \begin{enumerate}
+% \item author's id
+% \item position to output the author to (left or right)
+% \end{enumerate}
+%
+% \doccommand{DeclareRobustCommand} is used for not breaking the todo note definition.
+% \begin{macrocode}
+\newrobustcmd{\Changes@output@author@position}[2]{%
+ \IfIsAuthorEmptyAtPosition{#1}{#2}%
+ {}%
+ {%
+ \Changes@output@author{#1}%
}%
}
% \end{macrocode}
@@ -1272,7 +1338,7 @@
\IfIsColored%
{\color{authorcolor}}%
{}%
- \Changes@Markup@author{\Changes@output@author{#2}{left}}%
+ \Changes@Markup@author{\Changes@output@author@position{#2}{left}}%
}}%
}{}%
% \end{macrocode}
@@ -1303,7 +1369,7 @@
\IfIsColored%
{\color{authorcolor}}%
{}%
- \Changes@Markup@author{\Changes@output@author{#2}{right}}%
+ \Changes@Markup@author{\Changes@output@author@position{#2}{right}}%
}}%
}{}%
% \end{macrocode}
@@ -1324,7 +1390,7 @@
\Changes@Markup@comment%
{#5}%
{#2}%
- {\Changes@output@author{#2}{left}\Changes@output@author{#2}{right}}%
+ {\Changes@output@author{#2}}%
}%
}%
% \end{macrocode}
@@ -1717,6 +1783,10 @@
{%
\IfFileExists{\jobname.\Changes@socextension}%
{%
+% \end{macrocode}
+% Deactivate semicolon as shorthand in order to avoid problems reading the semicolon separated lines.
+% \begin{macrocode}
+ \ifbabelshorthand{;}{\shorthandoff{;}}{}
\newread\Changes@InFile%
\openin\Changes@InFile = \jobname.\Changes@socextension%
% \end{macrocode}
@@ -1781,6 +1851,10 @@
% \begin{macrocode}
\repeat
\closein\Changes@InFile%
+% \end{macrocode}
+% Reactivate semicolon as shorthand.
+% \begin{macrocode}
+ \ifbabelshorthand{;}{\shorthandon{;}}{}
}{%
\emph{\changesnosoc}%
\PackageWarning{changes}{LaTeX rerun needed for summary of changes}%
diff --git a/macros/latex/contrib/changes/changes.english.pdf b/macros/latex/contrib/changes/changes.english.pdf
index d6ba8fee86..41fc213efc 100644
--- a/macros/latex/contrib/changes/changes.english.pdf
+++ b/macros/latex/contrib/changes/changes.english.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/changes.english.withcode.pdf b/macros/latex/contrib/changes/changes.english.withcode.pdf
index 1ee8066abe..bb7d43763a 100644
--- a/macros/latex/contrib/changes/changes.english.withcode.pdf
+++ b/macros/latex/contrib/changes/changes.english.withcode.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/changes.ins b/macros/latex/contrib/changes/changes.ins
index 72e217bcfc..02fb69a16a 100644
--- a/macros/latex/contrib/changes/changes.ins
+++ b/macros/latex/contrib/changes/changes.ins
@@ -1,6 +1,6 @@
%% This file creates the needed files from changes.dtx
%%
-\def\filedate{2021/05/20}
+\def\filedate{2021/07/07}
\def\batchfile{changes.ins}
\input docstrip
@@ -100,10 +100,12 @@ Copyright 2007-2021 Ekkart Kleinod
\file{examples/changes.example.commentmarkup.footnote.tex}{\from{examples.dtx}{example:commentmarkup:footnote}}
\file{examples/changes.example.commentmarkup.uwave.tex}{\from{examples.dtx}{example:commentmarkup:uwave}}
\file{examples/changes.example.commentmarkup.todo.tex}{\from{examples.dtx}{example:commentmarkup:todo}}
+ \file{examples/changes.example.commentmarkup.wrong.tex}{\from{examples.dtx}{example:commentmarkup:wrong}}
%
\file{examples/changes.example.highlightmarkup.background.tex}{\from{examples.dtx}{example:highlightmarkup:background}}
\file{examples/changes.example.highlightmarkup.uuline.tex}{\from{examples.dtx}{example:highlightmarkup:uuline}}
\file{examples/changes.example.highlightmarkup.uwave.tex}{\from{examples.dtx}{example:highlightmarkup:uwave}}
+ \file{examples/changes.example.highlightmarkup.wrong.tex}{\from{examples.dtx}{example:highlightmarkup:wrong}}
%
\file{examples/changes.example.setaddedmarkup.tex}{\from{examples.dtx}{example:setaddedmarkup}}
\file{examples/changes.example.setdeletedmarkup.tex}{\from{examples.dtx}{example:setdeletedmarkup}}
@@ -127,6 +129,8 @@ Copyright 2007-2021 Ekkart Kleinod
%
\file{examples/changes.example.defaultcolor.tex}{\from{examples.dtx}{example:defaultcolor}}
%
+ \file{examples/changes.example.setanonymousname.tex}{\from{examples.dtx}{example:setanonymousname}}
+%
\file{examples/changes.example.setauthormarkup.tex}{\from{examples.dtx}{example:setauthormarkup}}
\file{examples/changes.example.setauthormarkupposition.tex}{\from{examples.dtx}{example:setauthormarkupposition}}
\file{examples/changes.example.setauthormarkuptext.tex}{\from{examples.dtx}{example:setauthormarkuptext}}
@@ -156,7 +160,15 @@ Copyright 2007-2021 Ekkart Kleinod
%
\file{examples/changes.example.package.hyperref.tex}{\from{examples.dtx}{example:package.hyperref}}
%
- \file{regression/changes.regression.draft.tex}{\from{regression.dtx}{regression:draft}}
+ \file{examples/changes.example.language.british.tex}{\from{examples.dtx}{example:language:british}}
+ \file{examples/changes.example.language.english.tex}{\from{examples.dtx}{example:language:english}}
+ \file{examples/changes.example.language.french.tex}{\from{examples.dtx}{example:language:french}}
+ \file{examples/changes.example.language.german.tex}{\from{examples.dtx}{example:language:german}}
+ \file{examples/changes.example.language.italian.tex}{\from{examples.dtx}{example:language:italian}}
+ \file{examples/changes.example.language.ngerman.tex}{\from{examples.dtx}{example:language:ngerman}}
+%
+ \file{regression/changes.regression.draft.id.tex}{\from{regression.dtx}{regression:draft:id}}
+ \file{regression/changes.regression.draft.name.tex}{\from{regression.dtx}{regression:draft:name}}
\file{regression/changes.regression.final.tex}{\from{regression.dtx}{regression:final}}
}
diff --git a/macros/latex/contrib/changes/changes.ngerman.pdf b/macros/latex/contrib/changes/changes.ngerman.pdf
index 68bf529573..9fce930e6f 100644
--- a/macros/latex/contrib/changes/changes.ngerman.pdf
+++ b/macros/latex/contrib/changes/changes.ngerman.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples.dtx b/macros/latex/contrib/changes/examples.dtx
index 0f6f1cdea3..22a58a492c 100644
--- a/macros/latex/contrib/changes/examples.dtx
+++ b/macros/latex/contrib/changes/examples.dtx
@@ -39,7 +39,15 @@
% Start the \LaTeX document the standard way.
%
% \begin{macrocode}
+%<example:language:british>\documentclass[11pt, a4paper, notitlepage, british]{article}
+%<example:language:english>\documentclass[11pt, a4paper, notitlepage, english]{article}
+%<example:language:french>\documentclass[11pt, a4paper, notitlepage, french]{article}
+%<example:language:german>\documentclass[11pt, a4paper, notitlepage, german]{article}
+%<example:language:italian>\documentclass[11pt, a4paper, notitlepage, italian]{article}
+%<example:language:ngerman>\documentclass[11pt, a4paper, notitlepage, ngerman]{article}
+%<*!example:language:british&!example:language:english&!example:language:french&!example:language:german&!example:language:italian&!example:language:ngerman>
\documentclass[11pt, a4paper, notitlepage, english]{article}
+%</!example:language:british&!example:language:english&!example:language:french&!example:language:german&!example:language:italian&!example:language:ngerman>
\usepackage{babel}
% \end{macrocode}
%
@@ -50,9 +58,9 @@
% Different package options.
%
% \begin{macrocode}
-%<*example:simple|example:setsocextension|example:setlocextension|example:setaddedmarkup|example:setdeletedmarkup|example:setcommentmarkup|example:sethighlightmarkup|example:setauthormarkup|example:setauthormarkupposition|example:setauthormarkuptext|example:listofchanges:list|example:listofchanges:show|example:listofchanges:summary|example:listofchanges:compactsummary|example:listofchanges:all|example:listofchanges:title|example:listofchanges:wrong|example:settruncatewidth|example:setsummarywidth|example:setsummarytowidth|example:package.hyperref>
+%<*example:simple|example:setsocextension|example:setlocextension|example:setaddedmarkup|example:setdeletedmarkup|example:setcommentmarkup|example:sethighlightmarkup|example:setauthormarkup|example:setauthormarkupposition|example:setauthormarkuptext|example:listofchanges:list|example:listofchanges:show|example:listofchanges:summary|example:listofchanges:compactsummary|example:listofchanges:all|example:listofchanges:title|example:listofchanges:wrong|example:settruncatewidth|example:setsummarywidth|example:setsummarytowidth|example:package.hyperref|example:language:british|example:language:english|example:language:french|example:language:german|example:language:italian|example:language:ngerman>
\usepackage{changes}
-%</example:simple|example:setsocextension|example:setlocextension|example:setaddedmarkup|example:setdeletedmarkup|example:setcommentmarkup|example:sethighlightmarkup|example:setauthormarkup|example:setauthormarkupposition|example:setauthormarkuptext|example:listofchanges:list|example:listofchanges:show|example:listofchanges:summary|example:listofchanges:compactsummary|example:listofchanges:all|example:listofchanges:title|example:listofchanges:wrong|example:settruncatewidth|example:setsummarywidth|example:setsummarytowidth|example:package.hyperref>
+%</example:simple|example:setsocextension|example:setlocextension|example:setaddedmarkup|example:setdeletedmarkup|example:setcommentmarkup|example:sethighlightmarkup|example:setauthormarkup|example:setauthormarkupposition|example:setauthormarkuptext|example:listofchanges:list|example:listofchanges:show|example:listofchanges:summary|example:listofchanges:compactsummary|example:listofchanges:all|example:listofchanges:title|example:listofchanges:wrong|example:settruncatewidth|example:setsummarywidth|example:setsummarytowidth|example:package.hyperref|example:language:british|example:language:english|example:language:french|example:language:german|example:language:italian|example:language:ngerman>
%
%<*example:draft>
\usepackage[draft]{changes}
@@ -177,6 +185,9 @@
%<*example:commentmarkup:todo>
\usepackage[commentmarkup=todo]{changes}
%</example:commentmarkup:todo>
+%<*example:commentmarkup:wrong>
+\usepackage[commentmarkup=wrong]{changes}
+%</example:commentmarkup:wrong>
%
%<*example:highlightmarkup:background>
\usepackage[highlightmarkup=background]{changes}
@@ -187,6 +198,9 @@
%<*example:highlightmarkup:uwave>
\usepackage[highlightmarkup=uwave]{changes}
%</example:highlightmarkup:uwave>
+%<*example:highlightmarkup:wrong>
+\usepackage[highlightmarkup=wrong]{changes}
+%</example:highlightmarkup:wrong>
%
%<*example:authormarkup:superscript>
\usepackage[authormarkup=superscript]{changes}
@@ -220,9 +234,9 @@
%<*example:authormarkuptext:id>
\usepackage[authormarkuptext=id]{changes}
%</example:authormarkuptext:id>
-%<*example:authormarkuptext:name>
+%<*example:authormarkuptext:name|example:setanonymousname>
\usepackage[authormarkuptext=name]{changes}
-%</example:authormarkuptext:name>
+%</example:authormarkuptext:name|example:setanonymousname>
%<*example:authormarkuptext:wrong>
\usepackage[authormarkuptext=wrong]{changes}
%</example:authormarkuptext:wrong>
@@ -257,6 +271,10 @@
\sethighlightmarkup{\emph{#1}}
%</example:sethighlightmarkup>
%
+%<*example:setanonymousname>
+\setanonymousname{Not so anonymous}
+%</example:setanonymousname>
+%
%<*example:setauthormarkup>
\setauthormarkup{\xout{#1}}
%</example:setauthormarkup>
@@ -301,51 +319,167 @@
% \begin{macrocode}
\begin{document}
-
%<example:simple>\verb|\usepackage{changes}|
-%<example:listofchanges:summary>\verb|\listofchanges[style=summary]|
+%<example:draft>\verb|\usepackage[draft]{changes}|
+%<example:final>\verb|\usepackage[final]{changes}|
+
+%<example:markup:default>\verb|\usepackage[markup=default]{changes}|
+%<example:markup:underlined>\verb|\usepackage[markup=underlined]{changes}|
+%<example:markup:bfit>\verb|\usepackage[markup=bfit]{changes}|
+%<example:markup:nocolor>\verb|\usepackage[markup=nocolor]{changes}|
+%<example:markup:wrong>\verb|\usepackage[markup=wrong]{changes}|
+
+%<example:commandnameprefix:none>\verb|\usepackage[commandnameprefix=none]{changes}|
+%<example:commandnameprefix:always>\verb|\usepackage[commandnameprefix=always]{changes}|
+%<example:commandnameprefix:ifneeded>\verb|\usepackage[commandnameprefix=ifneeded]{changes}|
+%<example:commandnameprefix:wrong>\verb|\usepackage[commandnameprefix=wrong]{changes}|
+
+%<example:addedmarkup:colored>\verb|\usepackage[addedmarkup=colored]{changes}|
+%<example:addedmarkup:uline>\verb|\usepackage[addedmarkup=uline]{changes}|
+%<example:addedmarkup:uuline>\verb|\usepackage[addedmarkup=uuline]{changes}|
+%<example:addedmarkup:uwave>\verb|\usepackage[addedmarkup=uwave]{changes}|
+%<example:addedmarkup:dashuline>\verb|\usepackage[addedmarkup=dashuline]{changes}|
+%<example:addedmarkup:dotuline>\verb|\usepackage[addedmarkup=dotuline]{changes}|
+%<example:addedmarkup:bf>\verb|\usepackage[addedmarkup=bf]{changes}|
+%<example:addedmarkup:it>\verb|\usepackage[addedmarkup=it]{changes}|
+%<example:addedmarkup:sl>\verb|\usepackage[addedmarkup=sl]{changes}|
+%<example:addedmarkup:em>\verb|\usepackage[addedmarkup=em]{changes}|
+%<example:addedmarkup:wrong>\verb|\usepackage[addedmarkup=wrong]{changes}|
+
+%<example:deletedmarkup:colored>\verb|\usepackage[deletedmarkup=colored]{changes}|
+%<example:deletedmarkup:uline>\verb|\usepackage[deletedmarkup=uline]{changes}|
+%<example:deletedmarkup:uuline>\verb|\usepackage[deletedmarkup=uuline]{changes}|
+%<example:deletedmarkup:uwave>\verb|\usepackage[deletedmarkup=uwave]{changes}|
+%<example:deletedmarkup:dashuline>\verb|\usepackage[deletedmarkup=dashuline]{changes}|
+%<example:deletedmarkup:dotuline>\verb|\usepackage[deletedmarkup=dotuline]{changes}|
+%<example:deletedmarkup:sout>\verb|\usepackage[deletedmarkup=sout]{changes}|
+%<example:deletedmarkup:xout>\verb|\usepackage[deletedmarkup=xout]{changes}|
+%<example:deletedmarkup:bf>\verb|\usepackage[deletedmarkup=bf]{changes}|
+%<example:deletedmarkup:it>\verb|\usepackage[deletedmarkup=it]{changes}|
+%<example:deletedmarkup:sl>\verb|\usepackage[deletedmarkup=sl]{changes}|
+%<example:deletedmarkup:em>\verb|\usepackage[deletedmarkup=em]{changes}|
+%<example:deletedmarkup:wrong>\verb|\usepackage[deletedmarkup=wrong]{changes}|
+
+%<example:commentmarkup:margin>\verb|\usepackage[commentmarkup=margin]{changes}|
+%<example:commentmarkup:footnote>\verb|\usepackage[commentmarkup=footnote]{changes}|
+%<example:commentmarkup:uwave>\verb|\usepackage[commentmarkup=uwave]{changes}|
+%<example:commentmarkup:todo>\verb|\usepackage[commentmarkup=todo]{changes}|
+%<example:commentmarkup:wrong>\verb|\usepackage[commentmarkup=wrong]{changes}|
+
+%<example:highlightmarkup:background>\verb|\usepackage[highlightmarkup=background]{changes}|
+%<example:highlightmarkup:uuline>\verb|\usepackage[highlightmarkup=uuline]{changes}|
+%<example:highlightmarkup:uwave>\verb|\usepackage[highlightmarkup=uwave]{changes}|
+%<example:highlightmarkup:wrong>\verb|\usepackage[highlightmarkup=wrong]{changes}|
+
%<example:setaddedmarkup>\verb|\setaddedmarkup{\emph{#1}}|
%<example:setdeletedmarkup>\verb|\setdeletedmarkup{\emph{#1}}|
%<example:setcommentmarkup>\verb|\setcommentmarkup{\IfIsColored{\color{authorcolor}}{}---~\IfIsAnonymous{#2}{}{\textbf{#3} }#1~---}|
%<example:sethighlightmarkup>\verb|\sethighlightmarkup{\emph{#1}}|
+
+%<example:authormarkup:superscript>\verb|\usepackage[authormarkup=superscript]{changes}|
+%<example:authormarkup:subscript>\verb|\usepackage[authormarkup=subscript]{changes}|
+%<example:authormarkup:brackets>\verb|\usepackage[authormarkup=brackets]{changes}|
+%<example:authormarkup:footnote>\verb|\usepackage[authormarkup=footnote]{changes}|
+%<example:authormarkup:none>\verb|\usepackage[authormarkup=none]{changes}|
+%<example:authormarkup:wrong>\verb|\usepackage[authormarkup=wrong]{changes}|
+
+%<example:authormarkupposition:left>\verb|\usepackage[authormarkupposition=left]{changes}|
+%<example:authormarkupposition:right>\verb|\usepackage[authormarkupposition=right]{changes}|
+%<example:authormarkupposition:wrong>\verb|\usepackage[authormarkupposition=wrong]{changes}|
+
+%<example:authormarkuptext:id>\verb|\usepackage[authormarkuptext=id]{changes}|
+%<example:authormarkuptext:name>\verb|\usepackage[authormarkuptext=name]{changes}|
+%<example:authormarkuptext:wrong>\verb|\usepackage[authormarkuptext=wrong]{changes}|
+
+%<example:defaultcolor>\verb|\usepackage[defaultcolor=magenta]{changes}|
+
+%<example:setanonymousname>\verb|\usepackage[authormarkuptext=name]{changes} \setanonymousname{Not so anonymous}|
+
%<example:setauthormarkup>\verb|\setauthormarkup{\xout{#1}}|
%<example:setauthormarkupposition>\verb|\setauthormarkupposition{left}|
%<example:setauthormarkuptext>\verb|\setauthormarkuptext{name}|
+
%<example:settruncatewidth>\verb|\settruncatewidth{.3\textwidth}|
-%<example:setlocextension>\verb|\setlocextension{changes}|
-%<example:setsocextension>\verb|\setsocextension{changes}|
+
%<example:setsummarywidth>\verb|\setsummarywidth{3cm}|
%<example:setsummarytowidth>\verb|\setsummarytowidth{The longest text you can imagine for the summary.}|
+
+%<example:setlocextension>\verb|\setlocextension{changes}|
+%<example:setsocextension>\verb|\setsocextension{changes}|
+
+%<example:listofchanges:list>\verb|See before list!|
+%<example:listofchanges:summary>\verb|See before list!|
+%<example:listofchanges:compactsummary>\verb|See before list!|
+%<example:listofchanges:all>\verb|See before list!|
+%<example:listofchanges:title>\verb|See before list!|
+%<example:listofchanges:show>\verb|See before list!|
+%<example:listofchanges:wrong>\verb|See before list!|
+
+%<example:packageoptions.todonotes>\verb|\usepackage[todonotes={textsize=tiny}]{changes}|
+%<example:packageoptions.truncate>\verb|\usepackage[truncate=hyphenate]{changes}|
+%<example:packageoptions.ulem>\verb|\usepackage[ulem=UWforbf]{changes}|
+%<example:packageoptions.xcolor>\verb|\usepackage[xcolor=hideerrors]{changes}|
+
%<example:package.hyperref>\verb|\usepackage{hyperref}| for linked list of changes
+%<example:language:british>\verb|\documentclass[11pt, a4paper, notitlepage, british]{article}|
+%<example:language:english>\verb|\documentclass[11pt, a4paper, notitlepage, english]{article}|
+%<example:language:french>\verb|\documentclass[11pt, a4paper, notitlepage, french]{article}|
+%<example:language:german>\verb|\documentclass[11pt, a4paper, notitlepage, german]{article}|
+%<example:language:italian>\verb|\documentclass[11pt, a4paper, notitlepage, italian]{article}|
+%<example:language:ngerman>\verb|\documentclass[11pt, a4paper, notitlepage, ngerman]{article}|
+
%<*example:listofchanges:list|example:settruncatewidth|example:package.hyperref>
+\verb|\listofchanges|
\listofchanges
%</example:listofchanges:list|example:settruncatewidth|example:package.hyperref>
%<*example:listofchanges:summary|example:setsummarywidth|example:setsummarytowidth>
+\verb|\listofchanges[style=summary]|
\listofchanges[style=summary]
%</example:listofchanges:summary|example:setsummarywidth|example:setsummarytowidth>
%<*example:listofchanges:compactsummary>
+\verb|\listofchanges[style=compactsummary]|
\listofchanges[style=compactsummary]
%</example:listofchanges:compactsummary>
-%<*example:listofchanges:all|example:setlocextension|example:setsocextension>
+%<*example:listofchanges:all|example:setanonymousname|example:setlocextension|example:setsocextension|example:language:british|example:language:english|example:language:french|example:language:german|example:language:italian|example:language:ngerman>
+\verb|\listofchanges|
\listofchanges
+
+\verb|\listofchanges[style=summary]|
\listofchanges[style=summary]
+
+\verb|\listofchanges[style=compactsummary]|
\listofchanges[style=compactsummary]
-%</example:listofchanges:all|example:setlocextension|example:setsocextension>
+%</example:listofchanges:all|example:setanonymousname|example:setlocextension|example:setsocextension|example:language:british|example:language:english|example:language:french|example:language:german|example:language:italian|example:language:ngerman>
%<*example:listofchanges:title>
+\verb|\listofchanges[title={New title for loc}]|
\listofchanges[title={New title for loc}]
+
+\verb|\listofchanges[style=summary, title={New title for summary}]|
\listofchanges[style=summary, title={New title for summary}]
+
+\verb|\listofchanges[style=compactsummary, title={New title for compact summary}]|
\listofchanges[style=compactsummary, title={New title for compact summary}]
%</example:listofchanges:title>
%<*example:listofchanges:show>
+\verb|\listofchanges[title={Additions and deletions}, show=added|deleted]|
\listofchanges[title={Additions and deletions}, show=added|deleted]
+
+\verb|\listofchanges[title={Comments}, show=comment]|
\listofchanges[title={Comments}, show=comment]
+
+\verb|\listofchanges[style=summary, title={Summary of comments and replacements}, show=comment|replaced]|
\listofchanges[style=summary, title={Summary of comments and replacements}, show=comment|replaced]
+
+\verb|\listofchanges[style=compactsummary, title={Compact summary of replacements}, show=replaced]|
\listofchanges[style=compactsummary, title={Compact summary of replacements}, show=replaced]
+
+\verb|\listofchanges[style=compactsummary, title={Compact summary of all changes (show=wrong)}, show=wrong]|
\listofchanges[style=compactsummary, title={Compact summary of all changes (show=wrong)}, show=wrong]
%</example:listofchanges:show>
%<*example:listofchanges:wrong>
+\verb|\listofchanges[style=wrong]|
\listofchanges[style=wrong]
%</example:listofchanges:wrong>
diff --git a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.bf.pdf b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.bf.pdf
index df9f9e04b7..e0c6d10c09 100644
--- a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.bf.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.bf.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.colored.pdf b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.colored.pdf
index d7dd7f81e2..7bbda99bf5 100644
--- a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.colored.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.colored.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.dashuline.pdf b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.dashuline.pdf
index c964e3b05b..edd71fa785 100644
--- a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.dashuline.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.dashuline.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.dotuline.pdf b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.dotuline.pdf
index 2cf129d8d1..f38cdec1bb 100644
--- a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.dotuline.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.dotuline.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.em.pdf b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.em.pdf
index 01cf200576..4c0ffa99f3 100644
--- a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.em.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.em.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.it.pdf b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.it.pdf
index 9b4a49988e..1f5c5effeb 100644
--- a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.it.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.it.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.sl.pdf b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.sl.pdf
index 627b20f2c2..964e5f8d21 100644
--- a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.sl.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.sl.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.uline.pdf b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.uline.pdf
index 1e8f4d499e..4fdbf3e207 100644
--- a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.uline.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.uline.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.uuline.pdf b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.uuline.pdf
index 31a624cf5d..ea44909e53 100644
--- a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.uuline.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.uuline.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.uwave.pdf b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.uwave.pdf
index 53e5087ac8..94d47e27b3 100644
--- a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.uwave.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.uwave.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.wrong.pdf b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.wrong.pdf
index 4668d0f373..cf90151fa8 100644
--- a/macros/latex/contrib/changes/examples/changes.example.addedmarkup.wrong.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.addedmarkup.wrong.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.authormarkup.brackets.pdf b/macros/latex/contrib/changes/examples/changes.example.authormarkup.brackets.pdf
index f63bf8eceb..1a1e00cce8 100644
--- a/macros/latex/contrib/changes/examples/changes.example.authormarkup.brackets.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.authormarkup.brackets.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.authormarkup.footnote.pdf b/macros/latex/contrib/changes/examples/changes.example.authormarkup.footnote.pdf
index 7c51870ed6..bcf0e897e0 100644
--- a/macros/latex/contrib/changes/examples/changes.example.authormarkup.footnote.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.authormarkup.footnote.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.authormarkup.none.pdf b/macros/latex/contrib/changes/examples/changes.example.authormarkup.none.pdf
index 2b76eb3e0f..9fa744ba69 100644
--- a/macros/latex/contrib/changes/examples/changes.example.authormarkup.none.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.authormarkup.none.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.authormarkup.subscript.pdf b/macros/latex/contrib/changes/examples/changes.example.authormarkup.subscript.pdf
index eb6264508c..3b582b0314 100644
--- a/macros/latex/contrib/changes/examples/changes.example.authormarkup.subscript.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.authormarkup.subscript.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.authormarkup.superscript.pdf b/macros/latex/contrib/changes/examples/changes.example.authormarkup.superscript.pdf
index 4d9021e12c..53e02198e2 100644
--- a/macros/latex/contrib/changes/examples/changes.example.authormarkup.superscript.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.authormarkup.superscript.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.authormarkup.wrong.pdf b/macros/latex/contrib/changes/examples/changes.example.authormarkup.wrong.pdf
index b84a53b145..53d32b3cd1 100644
--- a/macros/latex/contrib/changes/examples/changes.example.authormarkup.wrong.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.authormarkup.wrong.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.authormarkupposition.left.pdf b/macros/latex/contrib/changes/examples/changes.example.authormarkupposition.left.pdf
index 7b3879afde..d395848a66 100644
--- a/macros/latex/contrib/changes/examples/changes.example.authormarkupposition.left.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.authormarkupposition.left.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.authormarkupposition.right.pdf b/macros/latex/contrib/changes/examples/changes.example.authormarkupposition.right.pdf
index 7173c42d99..9bdbfae650 100644
--- a/macros/latex/contrib/changes/examples/changes.example.authormarkupposition.right.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.authormarkupposition.right.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.authormarkupposition.wrong.pdf b/macros/latex/contrib/changes/examples/changes.example.authormarkupposition.wrong.pdf
index 9c27447292..2a9a6d32b2 100644
--- a/macros/latex/contrib/changes/examples/changes.example.authormarkupposition.wrong.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.authormarkupposition.wrong.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.authormarkuptext.id.pdf b/macros/latex/contrib/changes/examples/changes.example.authormarkuptext.id.pdf
index 9fe437fe29..91693ae5f1 100644
--- a/macros/latex/contrib/changes/examples/changes.example.authormarkuptext.id.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.authormarkuptext.id.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.authormarkuptext.name.pdf b/macros/latex/contrib/changes/examples/changes.example.authormarkuptext.name.pdf
index a6b4cd9299..068bc51dc7 100644
--- a/macros/latex/contrib/changes/examples/changes.example.authormarkuptext.name.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.authormarkuptext.name.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.authormarkuptext.wrong.pdf b/macros/latex/contrib/changes/examples/changes.example.authormarkuptext.wrong.pdf
index 774e45b009..fb11dfe0e4 100644
--- a/macros/latex/contrib/changes/examples/changes.example.authormarkuptext.wrong.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.authormarkuptext.wrong.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.commandnameprefix.always.pdf b/macros/latex/contrib/changes/examples/changes.example.commandnameprefix.always.pdf
index a9d1b7c5bd..67f443b3cc 100644
--- a/macros/latex/contrib/changes/examples/changes.example.commandnameprefix.always.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.commandnameprefix.always.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.commandnameprefix.ifneeded.pdf b/macros/latex/contrib/changes/examples/changes.example.commandnameprefix.ifneeded.pdf
index 5d3cfe194f..f84a04b533 100644
--- a/macros/latex/contrib/changes/examples/changes.example.commandnameprefix.ifneeded.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.commandnameprefix.ifneeded.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.commandnameprefix.none.pdf b/macros/latex/contrib/changes/examples/changes.example.commandnameprefix.none.pdf
index c601a4aea9..0827a3fdec 100644
--- a/macros/latex/contrib/changes/examples/changes.example.commandnameprefix.none.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.commandnameprefix.none.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.commandnameprefix.wrong.pdf b/macros/latex/contrib/changes/examples/changes.example.commandnameprefix.wrong.pdf
index c2804ee36a..5bad61f4fa 100644
--- a/macros/latex/contrib/changes/examples/changes.example.commandnameprefix.wrong.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.commandnameprefix.wrong.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.commentmarkup.footnote.pdf b/macros/latex/contrib/changes/examples/changes.example.commentmarkup.footnote.pdf
index b5791d9e27..0a4892da73 100644
--- a/macros/latex/contrib/changes/examples/changes.example.commentmarkup.footnote.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.commentmarkup.footnote.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.commentmarkup.margin.pdf b/macros/latex/contrib/changes/examples/changes.example.commentmarkup.margin.pdf
index a46720e9d2..ce0b7f363c 100644
--- a/macros/latex/contrib/changes/examples/changes.example.commentmarkup.margin.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.commentmarkup.margin.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.commentmarkup.todo.pdf b/macros/latex/contrib/changes/examples/changes.example.commentmarkup.todo.pdf
index b1b086b532..d381ef6673 100644
--- a/macros/latex/contrib/changes/examples/changes.example.commentmarkup.todo.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.commentmarkup.todo.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.commentmarkup.uwave.pdf b/macros/latex/contrib/changes/examples/changes.example.commentmarkup.uwave.pdf
index 634495f0cc..7e0ed13aed 100644
--- a/macros/latex/contrib/changes/examples/changes.example.commentmarkup.uwave.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.commentmarkup.uwave.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.commentmarkup.wrong.pdf b/macros/latex/contrib/changes/examples/changes.example.commentmarkup.wrong.pdf
new file mode 100644
index 0000000000..9d4b7b82a7
--- /dev/null
+++ b/macros/latex/contrib/changes/examples/changes.example.commentmarkup.wrong.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.defaultcolor.pdf b/macros/latex/contrib/changes/examples/changes.example.defaultcolor.pdf
index 2ef1544682..d5544acad1 100644
--- a/macros/latex/contrib/changes/examples/changes.example.defaultcolor.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.defaultcolor.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.bf.pdf b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.bf.pdf
index 84159d21ad..ce49d867fd 100644
--- a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.bf.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.bf.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.colored.pdf b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.colored.pdf
index 60c656e3e2..7fc1f98632 100644
--- a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.colored.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.colored.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.dashuline.pdf b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.dashuline.pdf
index 7484d2369e..0bb484a72d 100644
--- a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.dashuline.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.dashuline.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.dotuline.pdf b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.dotuline.pdf
index 3eb4edf507..9023118c91 100644
--- a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.dotuline.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.dotuline.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.em.pdf b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.em.pdf
index 25f5db7c1e..0c681ba3cc 100644
--- a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.em.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.em.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.it.pdf b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.it.pdf
index f48ae8cf3d..43de825753 100644
--- a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.it.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.it.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.sl.pdf b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.sl.pdf
index b56242fd5d..b29b4ab93e 100644
--- a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.sl.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.sl.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.sout.pdf b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.sout.pdf
index 2662f57833..cdd9fe5074 100644
--- a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.sout.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.sout.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.uline.pdf b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.uline.pdf
index cb7cf60521..6bff407c02 100644
--- a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.uline.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.uline.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.uuline.pdf b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.uuline.pdf
index 4229f381ef..317e85615f 100644
--- a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.uuline.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.uuline.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.uwave.pdf b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.uwave.pdf
index ffd3db58bf..455ac2e596 100644
--- a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.uwave.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.uwave.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.wrong.pdf b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.wrong.pdf
index 788aa63201..8e37435fb0 100644
--- a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.wrong.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.wrong.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.xout.pdf b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.xout.pdf
index fabb36e19c..9e3403f0a4 100644
--- a/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.xout.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.deletedmarkup.xout.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.draft.pdf b/macros/latex/contrib/changes/examples/changes.example.draft.pdf
index eb1ed5b9b5..f5367acf62 100644
--- a/macros/latex/contrib/changes/examples/changes.example.draft.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.draft.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.final.pdf b/macros/latex/contrib/changes/examples/changes.example.final.pdf
index 9dc5b90c7d..9367a3ab84 100644
--- a/macros/latex/contrib/changes/examples/changes.example.final.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.final.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.highlightmarkup.background.pdf b/macros/latex/contrib/changes/examples/changes.example.highlightmarkup.background.pdf
index c8b51542d1..6b3d3e4c7d 100644
--- a/macros/latex/contrib/changes/examples/changes.example.highlightmarkup.background.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.highlightmarkup.background.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.highlightmarkup.uuline.pdf b/macros/latex/contrib/changes/examples/changes.example.highlightmarkup.uuline.pdf
index bc6f9f0d5a..ca3d3f6de7 100644
--- a/macros/latex/contrib/changes/examples/changes.example.highlightmarkup.uuline.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.highlightmarkup.uuline.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.highlightmarkup.uwave.pdf b/macros/latex/contrib/changes/examples/changes.example.highlightmarkup.uwave.pdf
index 08e7613f0a..5b97d2b2f1 100644
--- a/macros/latex/contrib/changes/examples/changes.example.highlightmarkup.uwave.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.highlightmarkup.uwave.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.highlightmarkup.wrong.pdf b/macros/latex/contrib/changes/examples/changes.example.highlightmarkup.wrong.pdf
new file mode 100644
index 0000000000..a5ff1da6f0
--- /dev/null
+++ b/macros/latex/contrib/changes/examples/changes.example.highlightmarkup.wrong.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.language.british.pdf b/macros/latex/contrib/changes/examples/changes.example.language.british.pdf
new file mode 100644
index 0000000000..eb83c213b0
--- /dev/null
+++ b/macros/latex/contrib/changes/examples/changes.example.language.british.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.language.english.pdf b/macros/latex/contrib/changes/examples/changes.example.language.english.pdf
new file mode 100644
index 0000000000..f7646a44d1
--- /dev/null
+++ b/macros/latex/contrib/changes/examples/changes.example.language.english.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.language.french.pdf b/macros/latex/contrib/changes/examples/changes.example.language.french.pdf
new file mode 100644
index 0000000000..aead17f817
--- /dev/null
+++ b/macros/latex/contrib/changes/examples/changes.example.language.french.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.language.german.pdf b/macros/latex/contrib/changes/examples/changes.example.language.german.pdf
new file mode 100644
index 0000000000..a6dafea904
--- /dev/null
+++ b/macros/latex/contrib/changes/examples/changes.example.language.german.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.language.italian.pdf b/macros/latex/contrib/changes/examples/changes.example.language.italian.pdf
new file mode 100644
index 0000000000..d3307197de
--- /dev/null
+++ b/macros/latex/contrib/changes/examples/changes.example.language.italian.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.language.ngerman.pdf b/macros/latex/contrib/changes/examples/changes.example.language.ngerman.pdf
new file mode 100644
index 0000000000..cc8e0df3f1
--- /dev/null
+++ b/macros/latex/contrib/changes/examples/changes.example.language.ngerman.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.listofchanges.all.pdf b/macros/latex/contrib/changes/examples/changes.example.listofchanges.all.pdf
index 8006af28ef..31711d28ff 100644
--- a/macros/latex/contrib/changes/examples/changes.example.listofchanges.all.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.listofchanges.all.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.listofchanges.compactsummary.pdf b/macros/latex/contrib/changes/examples/changes.example.listofchanges.compactsummary.pdf
index d1b193ef31..63ee73bd04 100644
--- a/macros/latex/contrib/changes/examples/changes.example.listofchanges.compactsummary.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.listofchanges.compactsummary.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.listofchanges.list.pdf b/macros/latex/contrib/changes/examples/changes.example.listofchanges.list.pdf
index d6d66a399f..58af7d6120 100644
--- a/macros/latex/contrib/changes/examples/changes.example.listofchanges.list.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.listofchanges.list.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.listofchanges.show.pdf b/macros/latex/contrib/changes/examples/changes.example.listofchanges.show.pdf
index f4a59d64fd..9bf7089513 100644
--- a/macros/latex/contrib/changes/examples/changes.example.listofchanges.show.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.listofchanges.show.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.listofchanges.summary.pdf b/macros/latex/contrib/changes/examples/changes.example.listofchanges.summary.pdf
index 368186ea21..97bc88e8e2 100644
--- a/macros/latex/contrib/changes/examples/changes.example.listofchanges.summary.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.listofchanges.summary.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.listofchanges.title.pdf b/macros/latex/contrib/changes/examples/changes.example.listofchanges.title.pdf
index c603acac49..3b80440f49 100644
--- a/macros/latex/contrib/changes/examples/changes.example.listofchanges.title.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.listofchanges.title.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.listofchanges.wrong.pdf b/macros/latex/contrib/changes/examples/changes.example.listofchanges.wrong.pdf
index 3b6047a8ce..0d1d3d89ba 100644
--- a/macros/latex/contrib/changes/examples/changes.example.listofchanges.wrong.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.listofchanges.wrong.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.markup.bfit.pdf b/macros/latex/contrib/changes/examples/changes.example.markup.bfit.pdf
index 1ba2c88dab..f5cf815a2e 100644
--- a/macros/latex/contrib/changes/examples/changes.example.markup.bfit.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.markup.bfit.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.markup.default.pdf b/macros/latex/contrib/changes/examples/changes.example.markup.default.pdf
index df7f3a3191..84fb0874d0 100644
--- a/macros/latex/contrib/changes/examples/changes.example.markup.default.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.markup.default.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.markup.nocolor.pdf b/macros/latex/contrib/changes/examples/changes.example.markup.nocolor.pdf
index 2938d22d1c..1033e78620 100644
--- a/macros/latex/contrib/changes/examples/changes.example.markup.nocolor.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.markup.nocolor.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.markup.underlined.pdf b/macros/latex/contrib/changes/examples/changes.example.markup.underlined.pdf
index b8401131e6..d5d95e6730 100644
--- a/macros/latex/contrib/changes/examples/changes.example.markup.underlined.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.markup.underlined.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.markup.wrong.pdf b/macros/latex/contrib/changes/examples/changes.example.markup.wrong.pdf
index dcee199e7e..72fedbbb78 100644
--- a/macros/latex/contrib/changes/examples/changes.example.markup.wrong.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.markup.wrong.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.package.hyperref.pdf b/macros/latex/contrib/changes/examples/changes.example.package.hyperref.pdf
index 24b246e270..b04759d782 100644
--- a/macros/latex/contrib/changes/examples/changes.example.package.hyperref.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.package.hyperref.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.packageoptions.todonotes.pdf b/macros/latex/contrib/changes/examples/changes.example.packageoptions.todonotes.pdf
index 00dede22da..b1f73c57a5 100644
--- a/macros/latex/contrib/changes/examples/changes.example.packageoptions.todonotes.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.packageoptions.todonotes.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.packageoptions.truncate.pdf b/macros/latex/contrib/changes/examples/changes.example.packageoptions.truncate.pdf
index 544952b9ce..b38b4d563f 100644
--- a/macros/latex/contrib/changes/examples/changes.example.packageoptions.truncate.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.packageoptions.truncate.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.packageoptions.ulem.pdf b/macros/latex/contrib/changes/examples/changes.example.packageoptions.ulem.pdf
index eea20bfa20..bc5cff239e 100644
--- a/macros/latex/contrib/changes/examples/changes.example.packageoptions.ulem.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.packageoptions.ulem.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.packageoptions.xcolor.pdf b/macros/latex/contrib/changes/examples/changes.example.packageoptions.xcolor.pdf
index e7d2afb04e..531b08ec38 100644
--- a/macros/latex/contrib/changes/examples/changes.example.packageoptions.xcolor.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.packageoptions.xcolor.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.screenshot.pdf b/macros/latex/contrib/changes/examples/changes.example.screenshot.pdf
index 4db48cba0c..3b79f9db64 100644
--- a/macros/latex/contrib/changes/examples/changes.example.screenshot.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.screenshot.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.setaddedmarkup.pdf b/macros/latex/contrib/changes/examples/changes.example.setaddedmarkup.pdf
index 09333a4a5a..74b11dfb78 100644
--- a/macros/latex/contrib/changes/examples/changes.example.setaddedmarkup.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.setaddedmarkup.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.setanonymousname.pdf b/macros/latex/contrib/changes/examples/changes.example.setanonymousname.pdf
new file mode 100644
index 0000000000..50f7cbf56f
--- /dev/null
+++ b/macros/latex/contrib/changes/examples/changes.example.setanonymousname.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.setauthormarkup.pdf b/macros/latex/contrib/changes/examples/changes.example.setauthormarkup.pdf
index 346314b016..6c791b0ab4 100644
--- a/macros/latex/contrib/changes/examples/changes.example.setauthormarkup.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.setauthormarkup.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.setauthormarkupposition.pdf b/macros/latex/contrib/changes/examples/changes.example.setauthormarkupposition.pdf
index 7c550e13b8..0f21515414 100644
--- a/macros/latex/contrib/changes/examples/changes.example.setauthormarkupposition.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.setauthormarkupposition.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.setauthormarkuptext.pdf b/macros/latex/contrib/changes/examples/changes.example.setauthormarkuptext.pdf
index 8d2c09d293..a065d52b42 100644
--- a/macros/latex/contrib/changes/examples/changes.example.setauthormarkuptext.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.setauthormarkuptext.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.setcommentmarkup.pdf b/macros/latex/contrib/changes/examples/changes.example.setcommentmarkup.pdf
index 9c80d8ee29..e2d6ca9bf0 100644
--- a/macros/latex/contrib/changes/examples/changes.example.setcommentmarkup.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.setcommentmarkup.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.setdeletedmarkup.pdf b/macros/latex/contrib/changes/examples/changes.example.setdeletedmarkup.pdf
index 86daf81a81..7ec7d0be72 100644
--- a/macros/latex/contrib/changes/examples/changes.example.setdeletedmarkup.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.setdeletedmarkup.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.sethighlightmarkup.pdf b/macros/latex/contrib/changes/examples/changes.example.sethighlightmarkup.pdf
index d035b74730..c3675f55c3 100644
--- a/macros/latex/contrib/changes/examples/changes.example.sethighlightmarkup.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.sethighlightmarkup.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.setlocextension.pdf b/macros/latex/contrib/changes/examples/changes.example.setlocextension.pdf
index 7528a69a2c..22e59da403 100644
--- a/macros/latex/contrib/changes/examples/changes.example.setlocextension.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.setlocextension.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.setsocextension.pdf b/macros/latex/contrib/changes/examples/changes.example.setsocextension.pdf
index d3f15eba92..c0174f69c0 100644
--- a/macros/latex/contrib/changes/examples/changes.example.setsocextension.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.setsocextension.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.setsummarytowidth.pdf b/macros/latex/contrib/changes/examples/changes.example.setsummarytowidth.pdf
index 3404949795..f9d759a6a4 100644
--- a/macros/latex/contrib/changes/examples/changes.example.setsummarytowidth.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.setsummarytowidth.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.setsummarywidth.pdf b/macros/latex/contrib/changes/examples/changes.example.setsummarywidth.pdf
index 0fe0ffb611..0ee1e39089 100644
--- a/macros/latex/contrib/changes/examples/changes.example.setsummarywidth.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.setsummarywidth.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.settruncatewidth.pdf b/macros/latex/contrib/changes/examples/changes.example.settruncatewidth.pdf
index 7a9e0928a6..c045054469 100644
--- a/macros/latex/contrib/changes/examples/changes.example.settruncatewidth.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.settruncatewidth.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/examples/changes.example.simple.pdf b/macros/latex/contrib/changes/examples/changes.example.simple.pdf
index be1660fa7d..81e1bc5876 100644
--- a/macros/latex/contrib/changes/examples/changes.example.simple.pdf
+++ b/macros/latex/contrib/changes/examples/changes.example.simple.pdf
Binary files differ
diff --git a/macros/latex/contrib/changes/regression.dtx b/macros/latex/contrib/changes/regression.dtx
index a3fe6c903a..eae6249a42 100644
--- a/macros/latex/contrib/changes/regression.dtx
+++ b/macros/latex/contrib/changes/regression.dtx
@@ -44,9 +44,12 @@
% \end{macrocode}
%
% \begin{macrocode}
-%<*regression:draft>
+%<*regression:draft:id>
+\usepackage[authormarkuptext=id]{changes}
+%</regression:draft:id>
+%<*regression:draft:name>
\usepackage[authormarkuptext=name]{changes}
-%</regression:draft>
+%</regression:draft:name>
%<*regression:final>
\usepackage[final]{changes}
%</regression:final>
@@ -62,7 +65,7 @@
% \begin{macrocode}
\begin{document}
-%<*regression:draft>
+%<*regression:draft:id|regression:draft:name>
\section{Test empty string}
Anonymous author should have no space before the \added[comment=no space]{number} in the comment.
@@ -72,7 +75,7 @@
\listofchanges[title={List of changes should not contain empty author brackets}]
\listofchanges[style=compactsummary, title={Summary should not contain empty author brackets either}]
-%</regression:draft>
+%</regression:draft:id|regression:draft:name>
%<*regression:final>
\section{Compile errors to avoid}
diff --git a/macros/latex/contrib/changes/userdoc/changes.de.tex b/macros/latex/contrib/changes/userdoc/changes.de.tex
index 924e951fd9..8eb92131cb 100644
--- a/macros/latex/contrib/changes/userdoc/changes.de.tex
+++ b/macros/latex/contrib/changes/userdoc/changes.de.tex
@@ -840,6 +840,18 @@ Die folgenden Werte für \emph{authormarkuptext} sind definiert:
\chexample{setauthormarkuptext}
+\chnewcmd{setanonymousname}
+
+\chinline{setanonymousname}
+
+Der Befehl \doccommand{setanonymousname} legt den Namen des anonymen Autors fest.
+Der Standardname ist das sprachabhängige Äquivalent zu "`Anonym"'.
+
+Diese Option ist \zB hilfreich, wenn man die/der einzige Autor:in ist und den Namen bei den Änderungen angezeigt haben will.
+
+\chexample{setanonymousname}
+
+
\chnewcmd{settruncatewidth}
@@ -1041,6 +1053,7 @@ Die Autorinnen und Autoren sind in alphabetischer Reihenfolge:
\item Fischer, Ulrike
\item Giovannini, Daniele
\item Kleinod, Ekkart
+ \item Le Garrec, Vincent
\item Mittelbach, Frank
\item Richardson, Alexander
\item Voss, Herbert
diff --git a/macros/latex/contrib/changes/userdoc/changes.en.tex b/macros/latex/contrib/changes/userdoc/changes.en.tex
index 9b621a39e3..d919249d34 100644
--- a/macros/latex/contrib/changes/userdoc/changes.en.tex
+++ b/macros/latex/contrib/changes/userdoc/changes.en.tex
@@ -840,6 +840,17 @@ The following values for \emph{authormarkuptext} are defined:
\chexample{setauthormarkuptext}
+\chnewcmd{setanonymousname}
+
+\chinline{setanonymousname}
+
+The command \doccommand{setanonymousname} sets the anonymous author's name.
+The default name is the language dependent equivalent of ``anonymous''.
+
+This option is helpful if you are the only author and you want your name to be displayed at the changes.
+
+\chexample{setanonymousname}
+
\chnewcmd{settruncatewidth}
@@ -1042,6 +1053,7 @@ The authors are (in alphabetical order):
\item Fischer, Ulrike
\item Giovannini, Daniele
\item Kleinod, Ekkart
+ \item Le Garrec, Vincent
\item Mittelbach, Frank
\item Richardson, Alexander
\item Voss, Herbert
diff --git a/macros/latex/contrib/changes/userdoc/setanonymousname_ex.tex b/macros/latex/contrib/changes/userdoc/setanonymousname_ex.tex
new file mode 100644
index 0000000000..1bed829efc
--- /dev/null
+++ b/macros/latex/contrib/changes/userdoc/setanonymousname_ex.tex
@@ -0,0 +1,2 @@
+\setanonymousname{Anonymous author}
+\setanonymousname{My name}
diff --git a/macros/latex/contrib/changes/userdoc/setanonymousname_in.tex b/macros/latex/contrib/changes/userdoc/setanonymousname_in.tex
new file mode 100644
index 0000000000..a56bc682c8
--- /dev/null
+++ b/macros/latex/contrib/changes/userdoc/setanonymousname_in.tex
@@ -0,0 +1 @@
+\setanonymousname{<name>}
diff --git a/macros/latex/contrib/huawei/DEPENDS.txt b/macros/latex/contrib/huawei/DEPENDS.txt
index a4e9941327..bcf146a97f 100644
--- a/macros/latex/contrib/huawei/DEPENDS.txt
+++ b/macros/latex/contrib/huawei/DEPENDS.txt
@@ -13,12 +13,12 @@ hard makecell
hard footmisc
hard graphicx
hard array
+hard hyperref
hard currfile
hard enumitem
hard microtype
hard wrapfig
hard lastpage
-hard xfp
hard setspace
hard biblatex
hard xcolor
diff --git a/macros/latex/contrib/huawei/README.md b/macros/latex/contrib/huawei/README.md
index ad89256331..8e3278065e 100644
--- a/macros/latex/contrib/huawei/README.md
+++ b/macros/latex/contrib/huawei/README.md
@@ -1,4 +1,4 @@
-[![make](https://github.com/yegor256/huawei.cls/actions/workflows/make.yml/badge.svg)](https://github.com/yegor256/huawei.cls/actions/workflows/make.yml)
+[![make](https://github.com/yegor256/huawei.cls/actions/workflows/latexmk.yml/badge.svg)](https://github.com/yegor256/huawei.cls/actions/workflows/latexmk.yml)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/huawei.cls/blob/master/LICENSE.txt)
Disclaimer: This is **NOT** a product of Huawei Technologies Co., Ltd.
diff --git a/macros/latex/contrib/huawei/huawei.cls b/macros/latex/contrib/huawei/huawei.cls
index fa0ce1537c..87c562736c 100644
--- a/macros/latex/contrib/huawei/huawei.cls
+++ b/macros/latex/contrib/huawei/huawei.cls
@@ -21,7 +21,7 @@
% SOFTWARE.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{huawei}[2021/07/05 0.7.2 Template for Huawei Documents]
+\ProvidesClass{huawei}[2021/07/07 0.7.3 Template for Huawei Documents]
\newif\ifnosecurity
\DeclareOption{nosecurity}{\nosecuritytrue}
@@ -66,20 +66,15 @@
\setlength{\footnotesep}{2pt}
\RequirePackage{graphicx}
\RequirePackage{array}
+\RequirePackage[hidelinks]{hyperref} % to enable \pageref* command
\RequirePackage[abspath]{currfile}
\RequirePackage{enumitem}
\setlist{nosep}
\RequirePackage{microtype}
\RequirePackage{wrapfig}
\RequirePackage{lastpage}
-\RequirePackage{xfp} % for \setrelativestretch
\RequirePackage{setspace}
\setstretch{1.08}
- \newcommand{\setrelativestretch}[1]{%
- \begingroup\edef\x{\endgroup%
- \noexpand\setstretch{\fpeval{(#1)*(\baselinestretch)}}%
- }\x%
- }
\RequirePackage[maxnames=1,minnames=1,natbib=true,citestyle=numeric,bibstyle=numeric,doi=false,url=false,isbn=false,isbn=false]{biblatex}
\RequirePackage[table]{xcolor}
\definecolor{huawei-red}{HTML}{CF0A2C}
@@ -103,7 +98,7 @@
% Custom commands
\newcommand\nospell[1]{#1}
-\newcommand\headers[1]{\setrelativestretch{0.8}{\small\sffamily\color{gray}#1}}
+\newcommand\headers[1]{\setstretch{0.8}{\small\sffamily\color{gray}#1\par}}
\newcommand\tbd[1]{{\color{red}#1}}
\newcommand\crumb[2]{\begin{minipage}{\columnwidth}\raggedright\textsc{#1}:\\#2\end{minipage}\vspace{4pt}}
@@ -252,7 +247,10 @@
}
\newcommand\PrintDisclaimer{%
- \justify\vspace*{\fill}\setrelativestretch{0.55}{{\sffamily\scriptsize\color{gray!50!black}%
+ \justify\vspace*{\fill}%
+ \begingroup%
+ \setstretch{0.55}%
+ \sffamily\scriptsize\color{gray!50!black}%
\textbf{Disclaimer}: The opinions expressed in this document are in good faith and
while every care has been taken in preparing it,
\ifnobrand%
@@ -270,9 +268,15 @@
\fi,
its subsidiaries, the directors, employees and agents
cannot be held liable for the use of and reliance of the opinions, estimates, forecasts and
- findings in these documents.}}}
+ findings in these documents.
+ \par
+ \endgroup%
+}
\newcommand\PrintFirstPage[1]{
+ \iflandscape\else
+ \PackageError{huawei}{It's allowed to use PrintFirstPage only in landscape mode}{Read huawei.pdf for more information}
+ \fi
\LeftHuaweiBar{}
\def\param{#1}%
\ifx\param\empty\else
@@ -281,14 +285,17 @@
\fi
\vspace*{0.5in}
\maketitle
- \iflandscape\ifnocover\else
+ \ifnocover\else
\begin{textblock}{14}[1,1](14,14)
\raggedleft\includegraphics[height=3.6in]{huawei-cover-picture.pdf}
\end{textblock}
- \fi\fi
+ \fi
}
\newcommand\PrintLastPage{
+ \iflandscape\else
+ \PackageError{huawei}{It's allowed to use PrintLastPage only in landscape mode}{Read huawei.pdf for more information}
+ \fi
\newpage
\vspace*{1in}
\begin{center}
@@ -331,14 +338,14 @@
}
\newcommand\PrintBibliography{
- \setlength\bibitemsep{0pt}
+ \setlength\bibitemsep{3pt}
\AtNextBibliography{\small}
\newpage
\raggedright
\iflandscape
- \begin{multicols}{3}\setrelativestretch{1.0}{\printbibliography}\end{multicols}
+ \begin{multicols}{3}\setstretch{0.95}\printbibliography\end{multicols}
\else
- \begin{multicols}{2}\setrelativestretch{1.0}{\printbibliography}\end{multicols}
+ \begin{multicols}{2}\setstretch{0.95}\printbibliography\end{multicols}
\fi
}
diff --git a/macros/latex/contrib/huawei/huawei.pdf b/macros/latex/contrib/huawei/huawei.pdf
index 63a83ce57d..0cd923a93e 100644
--- a/macros/latex/contrib/huawei/huawei.pdf
+++ b/macros/latex/contrib/huawei/huawei.pdf
Binary files differ
diff --git a/macros/latex/contrib/huawei/huawei.tex b/macros/latex/contrib/huawei/huawei.tex
index 8bf1d94619..f0607bf4ae 100644
--- a/macros/latex/contrib/huawei/huawei.tex
+++ b/macros/latex/contrib/huawei/huawei.tex
@@ -29,9 +29,9 @@
\begin{document}
\maketitle
-\ff{Version: 0.7.2}
+\ff{Version: 0.7.3}
\newline
-\ff{Date: 2021/07/05}
+\ff{Date: 2021/07/07}
\section{Overview}
diff --git a/macros/latex/contrib/huawei/samples/huawei-cfp.tex b/macros/latex/contrib/huawei/samples/huawei-cfp.tex
index 5811852155..733cec3751 100644
--- a/macros/latex/contrib/huawei/samples/huawei-cfp.tex
+++ b/macros/latex/contrib/huawei/samples/huawei-cfp.tex
@@ -20,7 +20,7 @@
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
-\documentclass[nobrand,nosecurity,anonymous,nopaging,authordraft]{../huawei}
+\documentclass[nobrand,nosecurity,nopaging,authordraft]{../huawei}
\usepackage{ffcode}
\renewcommand*\thetitle{Test Call for Proposal}
\renewcommand*\theauthor{Yegor Bugayenko}
diff --git a/macros/latex/contrib/tudscr/README.md b/macros/latex/contrib/tudscr/README.md
index 247b4ed81c..165e4116c2 100644
--- a/macros/latex/contrib/tudscr/README.md
+++ b/macros/latex/contrib/tudscr/README.md
@@ -4,15 +4,16 @@
Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2012-2021
- tudscr 2021/03/30 v2.06l
+ tudscr 2021/07/06 v2.06m
- The current release is shiped via CTAN: https://www.ctan.org/pkg/tudscr
+ This material is subject to the LaTeX Project Public License version 1.3c
+ or later. See http://www.latex-project.org/lppl.txt for details.
----------------------------------------------------------------------------
- This material is subject to the LaTeX Project Public License version 1.3c
- or later. See http://www.latex-project.org/lppl.txt for details.
- English text below.
+The current release is shiped via CTAN: https://www.ctan.org/pkg/tudscr
+
+**English text below**
----------------------------------------------------------------------------
@@ -57,6 +58,9 @@ Das Bundle beinhaltet:
Versionen
---------
+**v2.06m** (2021/07/06)
++ Fix eines internen Fehlers mit LuaLaTeX
+
**v2.06l** (2021/03/30)
+ Fix für Festlegung des Seitenstils in der Präambel
+ Fix für das Durchreichen von Optionen mit LaTeX 2021/05/01
@@ -276,6 +280,9 @@ The bundle offers:
Versions
--------
+**v2.06m** (2021/07/06)
++ bug fix for an internal error with LuaLaTeX
+
**v2.06l** (2021/03/30)
+ bug fix for defining the page style in the preamble
+ bug fix for passing options with LaTeX 2021/05/01
diff --git a/macros/latex/contrib/tudscr/doc/LICENSE.md b/macros/latex/contrib/tudscr/doc/LICENSE.md
index a0a5ecaef3..33bfa98d87 100644
--- a/macros/latex/contrib/tudscr/doc/LICENSE.md
+++ b/macros/latex/contrib/tudscr/doc/LICENSE.md
@@ -13,6 +13,10 @@
or later and of this work. This work has the LPPL maintenance status
"author-maintained". The current maintainer and author of this work
is Falk Hanisch.
+
+ However, only members of the Technische Universität Dresden are permitted
+ to publish documents in the corporate design, in particular with the use
+ of an official logo.
----------------------------------------------------------------------------
@@ -23,5 +27,9 @@
oder später und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status
"author-maintained", wird somit allein durch den Autor verwaltet. Der
aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch.
+
+ Jedoch ist es lediglich Angehörigen der Technischen Universität Dresden
+ gestattet, Dokumente im Corporate Design insbesondere mit der Verwendung
+ eines offiziellen Logos zu veröffentlichen.
----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tudscr/doc/tudscr.pdf b/macros/latex/contrib/tudscr/doc/tudscr.pdf
index 3dedc273b2..b3350d86d7 100644
--- a/macros/latex/contrib/tudscr/doc/tudscr.pdf
+++ b/macros/latex/contrib/tudscr/doc/tudscr.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/doc/tudscr_print.pdf b/macros/latex/contrib/tudscr/doc/tudscr_print.pdf
index c9cf629f61..47312ee22f 100644
--- a/macros/latex/contrib/tudscr/doc/tudscr_print.pdf
+++ b/macros/latex/contrib/tudscr/doc/tudscr_print.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/doc/tudscrsource.pdf b/macros/latex/contrib/tudscr/doc/tudscrsource.pdf
index 7b884e78d7..044f9c05f6 100644
--- a/macros/latex/contrib/tudscr/doc/tudscrsource.pdf
+++ b/macros/latex/contrib/tudscr/doc/tudscrsource.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/doc/tutorials/mathswap.pdf b/macros/latex/contrib/tudscr/doc/tutorials/mathswap.pdf
index 602678764c..3ed0f3478c 100644
--- a/macros/latex/contrib/tudscr/doc/tutorials/mathswap.pdf
+++ b/macros/latex/contrib/tudscr/doc/tutorials/mathswap.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/doc/tutorials/mathtype.pdf b/macros/latex/contrib/tudscr/doc/tutorials/mathtype.pdf
index ddcc145e9d..a4d5a5d894 100644
--- a/macros/latex/contrib/tudscr/doc/tutorials/mathtype.pdf
+++ b/macros/latex/contrib/tudscr/doc/tutorials/mathtype.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/doc/tutorials/treatise.pdf b/macros/latex/contrib/tudscr/doc/tutorials/treatise.pdf
index 825173e084..b0a3e429c6 100644
--- a/macros/latex/contrib/tudscr/doc/tutorials/treatise.pdf
+++ b/macros/latex/contrib/tudscr/doc/tutorials/treatise.pdf
Binary files differ
diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-installation.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-installation.tex
index 2dd8d79199..d139461ac2 100644
--- a/macros/latex/contrib/tudscr/source/doc/tudscr-installation.tex
+++ b/macros/latex/contrib/tudscr/source/doc/tudscr-installation.tex
@@ -160,11 +160,11 @@ benötigt. Für unixoide Betriebssysteme sind es die Dateien aus
\hrfn{\Download{\vTUDScript/TUD-Script\_\vTUDScript\_Unix.zip}}%
{\File*{TUD-Script\_\vTUDScript\_Unix.zip}}.
-Beim Ausführen des spezifischen Installationsskripts~-- für Windows
-\File{tudscr\_\vTUDScript\_install.bat} respektive für unixoide Betriebssysteme
-\File{tudscr\_\vTUDScript\_install.sh}~-- werden alle Dateien in das lokale
-Nutzerverzeichnis der jeweiligen Distribution installiert, falls kein anderes
-Verzeichnis explizit angegeben wird.
+Beim Ausführen des spezifischen Installationsskripts~--
+\File{tudscr\_\vTUDScript\_install.bat} für Windows respektive
+\File{tudscr\_\vTUDScript\_install.sh} für unixoide Betriebssysteme~-- werden
+alle Dateien in das lokale Nutzerverzeichnis der jeweiligen Distribution
+installiert, falls kein anderes Verzeichnis explizit angegeben wird.
\Attention{%
In jedem Fall sollte vor der Ausführung des Installationsskripts ein Update
der \hologo{LaTeX}"=Distribution durchgeführt werden. Dies gilt insbesondere
diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr.tex b/macros/latex/contrib/tudscr/source/doc/tudscr.tex
index 6e9278693b..58cb34423f 100644
--- a/macros/latex/contrib/tudscr/source/doc/tudscr.tex
+++ b/macros/latex/contrib/tudscr/source/doc/tudscr.tex
@@ -29,7 +29,7 @@
\endgroup%
}
\faculty{\cdurl}
-\date{2021-03-30}
+\date{2021-07-06}
\author{%
Falk Hanisch%
\expandafter\emailaddress\expandafter{\tudscrmail}%
diff --git a/macros/latex/contrib/tudscr/source/tudscr-comp.dtx b/macros/latex/contrib/tudscr/source/tudscr-comp.dtx
index bb7341041b..64c5341700 100644
--- a/macros/latex/contrib/tudscr/source/tudscr-comp.dtx
+++ b/macros/latex/contrib/tudscr/source/tudscr-comp.dtx
@@ -1,4 +1,4 @@
-% \CheckSum{1459}
+% \CheckSum{1460}
% \iffalse meta-comment
%
% TUD-Script -- Corporate Design of Technische Universität Dresden
@@ -52,7 +52,7 @@
% \fi
%
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-comp.dtx}[2020/11/10 v2.06k TUD-Script\space%
+\ProvidesFile{tudscr-comp.dtx}[2021/07/06 v2.06m TUD-Script\space%
%
% \iffalse
%</dtx>
@@ -395,6 +395,8 @@
% \changes{v2.06k}{2020/11/10}{neu}^^A
% \begin{macro}{\tud@v@2.06l}
% \changes{v2.06l}{2021/03/30}{neu}^^A
+% \begin{macro}{\tud@v@2.06m}
+% \changes{v2.06m}{2021/07/06}{neu}^^A
% \begin{macro}{\tud@v@last}
% \changes{v2.02}{2014/08/22}{neu}^^A
% \changes{v2.03}{2015/01/13}{angepasst}^^A
@@ -443,9 +445,11 @@
\csdef{tud@v@2.06j}{4}
\csdef{tud@v@2.06k}{4}
\csdef{tud@v@2.06l}{4}
+\csdef{tud@v@2.06m}{4}
\csdef{tud@v@last}{4}
% \end{macrocode}
% \end{macro}^^A \tud@v@last
+% \end{macro}^^A \tud@v@2.06m
% \end{macro}^^A \tud@v@2.06l
% \end{macro}^^A \tud@v@2.06k
% \end{macro}^^A \tud@v@2.06j
diff --git a/macros/latex/contrib/tudscr/source/tudscr-fonts.dtx b/macros/latex/contrib/tudscr/source/tudscr-fonts.dtx
index 69ada7f5c2..507b9d0fd4 100644
--- a/macros/latex/contrib/tudscr/source/tudscr-fonts.dtx
+++ b/macros/latex/contrib/tudscr/source/tudscr-fonts.dtx
@@ -1,4 +1,4 @@
-% \CheckSum{3183}
+% \CheckSum{3161}
% \iffalse meta-comment
%
% TUD-Script -- Corporate Design of Technische Universität Dresden
@@ -52,7 +52,7 @@
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
% \fi
%
-\ProvidesFile{tudscr-fonts.dtx}[2020/09/29 v2.06j TUD-Script\space%
+\ProvidesFile{tudscr-fonts.dtx}[2021/07/06 v2.06m TUD-Script\space%
%
% \iffalse
%</dtx>
@@ -483,7 +483,7 @@
\@tud@res@swatrue%
\def\tud@res@a##1##2{%
\@tud@res@swafalse%
- \tud@cdfont@missing[##1]{##2}{\tud@cdmath@wrn}%
+ \tud@cdfont@missing[{##1}]{##2}{\tud@cdmath@wrn}%
}%
\def\tud@res@b##1##2{%
\tud@if@fdfileexists{##1}{##2}{}{%
@@ -1153,7 +1153,7 @@
% \begin{macrocode}
\begingroup%
\edef\tud@res@a{%
- \noexpand\defaultfontfeatures[#1]{%
+ \noexpand\defaultfontfeatures[{#1}]{%
NFSSFamily=#1,%
Ligatures=TeX,%
BoldFont={},%
@@ -2635,16 +2635,16 @@
\tud@math@loop@greeks@lc{#1}%
}
\newcommand*\tud@math@loop@greeks@uc[1]{%
- \@for\@tempa:={%
+ \forcsvlist#1{%
Gamma,Delta,Theta,Lambda,Xi,Pi,Sigma,Upsilon,Phi,Psi,Omega%
- }\do{\expandafter#1\expandafter{\@tempa}}%
+ }%
}
\newcommand*\tud@math@loop@greeks@lc[1]{%
- \@for\@tempa:={%
+ \forcsvlist#1{%
alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,%
mu,nu,xi,pi,rho,sigma,tau,upsilon,phi,chi,psi,omega,%
varepsilon,vartheta,varpi,varrho,varsigma,varphi%
- }\do{\expandafter#1\expandafter{\@tempa}}%
+ }%
}
% \end{macrocode}
% \end{macro}^^A \tud@math@loop@greeks@lc
@@ -2823,15 +2823,11 @@
\newcommand*\tud@math@map@@greeks[1]{%
\ifcsundef{it#1}{%
\@for\tud@res@a:={#1sl,sl#1,#1it}\do{%
- \ifcsundef{\tud@res@a}{}{\csedef{it#1}{\csname\tud@res@a\endcsname}}%
+ \ifcsundef{\tud@res@a}{}{\csletcs{it#1}{\tud@res@a}}%
}%
}{}%
- \ifcsundef{up#1}{%
- \ifcsundef{#1up}{}{\csedef{up#1}{\csname#1up\endcsname}}%
- }{}%
- \ifcsundef{other#1}{%
- \ifcsundef{#1other}{}{\csedef{other#1}{\csname#1other\endcsname}}%
- }{}%
+ \ifcsundef{up#1}{\ifcsundef{#1up}{}{\csletcs{up#1}{#1up}}}{}%
+ \ifcsundef{other#1}{\ifcsundef{#1other}{}{\csletcs{other#1}{#1other}}}{}%
}
% \end{macrocode}
% Einige Pakete stellen für griechische Majuskeln die Befehle \cs{var\dots}
@@ -2840,13 +2836,11 @@
% ebenfalls ausgewertet und ggf. auf die \TUDScript-Nomenklatur abgebildet.
% \begin{macrocode}
\newcommand*\tud@math@map@@@greeks[1]{%
- \ifcsundef{it#1}{%
- \ifcsundef{var#1}{}{\csedef{it#1}{\csname var#1\endcsname}}%
- }{}%
+ \ifcsundef{it#1}{\ifcsundef{var#1}{}{\csletcs{it#1}{var#1}}}{}%
\ifcsundef{up#1}{%
\tud@lowerstring\tud@res@a{#1}%
\edef\tud@res@a{Up\tud@res@a}%
- \ifcsundef{\tud@res@a}{}{\csedef{up#1}{\csname\tud@res@a\endcsname}}%
+ \ifcsundef{\tud@res@a}{}{\csletcs{up#1}{\tud@res@a}}%
}{}%
}
% \end{macrocode}
@@ -3589,6 +3583,7 @@
% \changes{v2.06}{2019/06/19}{neu}^^A
% \begin{macro}{\tud@cdmath@declare@alias}
% \changes{v2.06}{2019/06/19}{neu}^^A
+% \changes{v2.06m}{2021/07/06}{\cs{csedef} durch \cs{csletcs} ersetzt}^^A
% \begin{macro}{\tud@cdmath@symb@list}
% \changes{v2.06}{2019/06/19}{neu}^^A
% \begin{macro}{\tud@cdmath@declare@char}
@@ -3614,9 +3609,9 @@
% \begin{macrocode}
\newcommand*\tud@cdmath@declare@alias[2]{%
\listeadd\tud@cdmath@symb@list{#1}%
- \ifcsdef{tud@cdmath@symbol@#2}{%
- \csedef{tud@cdmath@symbol@#1}{\csname tud@cdmath@symbol@#2\endcsname}%
- }{}%
+ \ifcsundef{tud@cdmath@symbol@#2}{}{%
+ \csletcs{tud@cdmath@symbol@#1}{tud@cdmath@symbol@#2}%
+ }%
}
\newcommand*\tud@cdmath@char@list{}
\newcommand*\tud@cdmath@declare@char[4]{%
@@ -3635,7 +3630,7 @@
\endgroup%
\noexpand\DeclareMathSymbol%
{\csname tud@cdmath@symbol@#1\endcsname}%
- {\etex@unexpanded{#2}}{#3}{#4}%
+ {\unexpanded{#2}}{#3}{#4}%
}%
\tud@res@a%
}
@@ -3689,20 +3684,20 @@
% gesichert und später wiederhergestellt. Andernfalls wird er wieder undefinert
% gesetzt.
% \begin{macrocode}
- \ifcsdef{#1}{%
+ \ifcsundef{#1}{%
+ \addto@hook\tud@cdmath@symbols@toks{\csundef{#1}}%
+ }{%
\tud@cs@store{#1}%
\addto@hook\tud@cdmath@symbols@toks{\tud@cs@restore{#1}}%
- }{%
- \addto@hook\tud@cdmath@symbols@toks{\csundef{#1}}%
}%
% \end{macrocode}
% Nur wenn ein gewünschtes Symbol auch existiert, wird es gesetzt. Damit können
% Symbole für \opt{cdmath=true} auch gezielt undefiniert gesetzt werden.
% \begin{macrocode}
- \ifcsdef{tud@cdmath@symbol@#1}{%
- \tud@cs@letltx{#1}{tud@cdmath@symbol@#1}%
- }{%
+ \ifcsundef{tud@cdmath@symbol@#1}{%
\csundef{#1}%
+ }{%
+ \tud@cs@letltx{#1}{tud@cdmath@symbol@#1}%
}%
}
% \end{macrocode}
diff --git a/macros/latex/contrib/tudscr/source/tudscr-misc.dtx b/macros/latex/contrib/tudscr/source/tudscr-misc.dtx
index 81ead2899d..46d3ba4f20 100644
--- a/macros/latex/contrib/tudscr/source/tudscr-misc.dtx
+++ b/macros/latex/contrib/tudscr/source/tudscr-misc.dtx
@@ -52,7 +52,7 @@
% \fi
%
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{tudscr-misc.dtx}[2021/03/30 v2.06l TUD-Script\space%
+\ProvidesFile{tudscr-misc.dtx}[2021/07/06 v2.06m TUD-Script\space%
(miscellaneous)%
]
%
@@ -560,7 +560,10 @@
\DeclareOption*{\expandafter\KOMAoptions\expandafter{\CurrentOption}}
%</fonts>
%<*fixfonts>
-\DeclareOption*{\expandafter\PassOptionsToPackage\expandafter{\CurrentOption}{tudscrfonts}}
+\DeclareOption*{%
+ \expandafter\PassOptionsToPackage\expandafter{\CurrentOption}%
+ {tudscrfonts}%
+}
%</fixfonts>
%<*comp>
\DeclareOption*{\expandafter\TUDoptions\expandafter{\CurrentOption}}
@@ -571,7 +574,10 @@
\DeclareOption*{\tud@x@scr@checkoptions}
%</!inherit>
%<*inherit>
-\DeclareOption*{\expandafter\PassOptionsToClass\expandafter{\CurrentOption}{\TUD@Class@Parent}}
+\DeclareOption*{%
+ \expandafter\PassOptionsToClass\expandafter{\CurrentOption}%
+ {\TUD@Class@Parent}%
+}
%</inherit>
%</class>
% \end{macrocode}
diff --git a/macros/latex/contrib/tudscr/source/tudscr-version.dtx b/macros/latex/contrib/tudscr/source/tudscr-version.dtx
index bbc0e49aa0..0be14bde10 100644
--- a/macros/latex/contrib/tudscr/source/tudscr-version.dtx
+++ b/macros/latex/contrib/tudscr/source/tudscr-version.dtx
@@ -128,7 +128,7 @@
%<*!(package|class)>
\fi
%</!(package|class)>
- \TUD@Version@Check{2021/03/30 v2.06l TUD-Script}
+ \TUD@Version@Check{2021/07/06 v2.06m TUD-Script}
\endgroup
% \end{macrocode}
% \end{macro}^^A \TUDScriptVersionNumber
diff --git a/macros/latex/contrib/upmethodology/doc/upmethodology-doc.pdf b/macros/latex/contrib/upmethodology/doc/upmethodology-doc.pdf
index e76b760ca8..59f9590653 100644
--- a/macros/latex/contrib/upmethodology/doc/upmethodology-doc.pdf
+++ b/macros/latex/contrib/upmethodology/doc/upmethodology-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/upmethodology/doc/upmethodology-doc.tex b/macros/latex/contrib/upmethodology/doc/upmethodology-doc.tex
index 9f2f0fcf6e..abd67b3bd8 100644
--- a/macros/latex/contrib/upmethodology/doc/upmethodology-doc.tex
+++ b/macros/latex/contrib/upmethodology/doc/upmethodology-doc.tex
@@ -11,6 +11,7 @@
\incsubversion{\makedate{04}{08}{2019}}{Add 'graphicspathcontext' option.}{\upmpublic}
\incversion{\makedate{17}{09}{2019}}{Add class options to include optional packages.}{\upmpublic}
\incversion{\makedate{06}{04}{2020}}{Add explainations for \texttt{{\textbackslash}Append} and \texttt{{\textbackslash}setdocumentpurpose}.}{\upmpublic}
+\incversion{\makedate{03}{06}{2021}}{Add emphazing box with titles.}{\upmpublic}
%\incversion{\makedate{17}{09}{2019}}{Add the documentation for the \texttt{upmethodology-spec} package.}{\upmpublic}
\addauthorvalidator*[galland@arakhne.org]{St{\'e}phane}{Galland}{Original Author}
@@ -1402,11 +1403,58 @@ produces:
This is an emphazed text.
\end{emphbox}
+\paragraph{Emphazing Box with a Title:} Three additional boxes are provided. All of them are output a title, and has a different background color: \\
+\texttt{{\textbackslash}begin\{titleemphbox\}[width]\{title\} text {\textbackslash}end\{titleemphbox\}} \\
+\texttt{{\textbackslash}begin\{titleemphbox2\}[width]\{title\} text {\textbackslash}end\{titleemphbox2\}} \\
+\texttt{{\textbackslash}begin\{titleemphbox3\}[width]\{title\} text {\textbackslash}end\{titleemphbox3\}}
+
+The following \LaTeX\ code:
+\begin{verbatim}
+\begin{titleemphbox}[.7\linewidth]{The title}
+This is an emphazed text.
+\end{titleemphbox}
+\end{verbatim}
+produces:
+
+\begin{titleemphbox}[.7\linewidth]{The title}
+This is an emphazed text.
+\end{titleemphbox}
+
+
+The following \LaTeX\ code:
+\begin{verbatim}
+\begin{titleemphbox2}[.7\linewidth]{The title}
+This is an emphazed text.
+\end{titleemphbox2}
+\end{verbatim}
+produces:
+
+\begin{titleemphbox2}[.7\linewidth]{The title}
+This is an emphazed text.
+\end{titleemphbox2}
+
+
+The following \LaTeX\ code:
+\begin{verbatim}
+\begin{titleemphbox3}[.7\linewidth]{The title}
+This is an emphazed text.
+\end{titleemphbox3}
+\end{verbatim}
+produces:
+
+\begin{titleemphbox3}[.7\linewidth]{The title}
+This is an emphazed text.
+\end{titleemphbox3}
+
+
+
\paragraph{Change the colors of the emphazing box:} You could change the colors of the \texttt{emphbox} environment by redefining the colors below with one of the macros \texttt{{\textbackslash}definecolor} or \texttt{{\textbackslash}colorlet}:
\begin{itemize}
\item \texttt{emphboxbackground} is the color of the background of the environment;
\item \texttt{emphboxborder} is the color of the frame;
\item \texttt{emphboxtext} is the color of the text in the body of the environment.
+\item \texttt{emphboxbackgroundb} is the color of the background of the second environment with title;
+\item \texttt{emphboxbackgroundc} is the color of the background of the third environment with title;
\end{itemize}
\paragraph{Example of color redefinition:} The following \LaTeX\ code:
diff --git a/macros/latex/contrib/upmethodology/src/UPMVERSION.def b/macros/latex/contrib/upmethodology/src/UPMVERSION.def
index 571ec47939..acfca6c74f 100644
--- a/macros/latex/contrib/upmethodology/src/UPMVERSION.def
+++ b/macros/latex/contrib/upmethodology/src/UPMVERSION.def
@@ -1 +1 @@
-\def\UPMVERSION{20200406}
+\def\UPMVERSION{20210708}
diff --git a/macros/latex/contrib/upmethodology/src/upmethodology-backpage.sty b/macros/latex/contrib/upmethodology/src/upmethodology-backpage.sty
index 32df29b7fc..daa22683fd 100644
--- a/macros/latex/contrib/upmethodology/src/upmethodology-backpage.sty
+++ b/macros/latex/contrib/upmethodology/src/upmethodology-backpage.sty
@@ -1,6 +1,6 @@
% Back page for Unified Process Methodology
%
-% Copyright (c) 2009-2013 Stephane GALLAND <galland@arakhne.org>
+% Copyright (c) 2009-2021 Stephane GALLAND <galland@arakhne.org>
%
% This program is free library; you can redistribute it and/or modify
% it under the terms of the GNU Lesser General Public License as
@@ -17,7 +17,7 @@
% write to the Free Software Foundation, Inc., 59 Temple Place - Suite
% 330, Boston, MA 02111-1307, USA.
-\global\edef\upm@package@bp@ver{2013/12/14}
+\global\edef\upm@package@bp@ver{2021/07/08}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{upmethodology-backpage}[\upm@package@bp@ver]
diff --git a/macros/latex/contrib/upmethodology/src/upmethodology-code.sty b/macros/latex/contrib/upmethodology/src/upmethodology-code.sty
index 470a1d3d59..9dfe0c8e68 100644
--- a/macros/latex/contrib/upmethodology/src/upmethodology-code.sty
+++ b/macros/latex/contrib/upmethodology/src/upmethodology-code.sty
@@ -1,6 +1,6 @@
% Source Code Description for Unified Process Methodology
%
-% Copyright (c) 2006-2007 Stephane GALLAND <galland@arakhne.org>
+% Copyright (c) 2006-2021 Stephane GALLAND <galland@arakhne.org>
%
% This program is free library; you can redistribute it and/or modify
% it under the terms of the GNU Lesser General Public License as
@@ -22,7 +22,7 @@
% 2009-10-30 Clean code.
%
-\global\edef\upm@package@code@ver{2009/10/30}
+\global\edef\upm@package@code@ver{2021/07/08}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{upmethodology-code}[\upm@package@code@ver]
diff --git a/macros/latex/contrib/upmethodology/src/upmethodology-document.cls b/macros/latex/contrib/upmethodology/src/upmethodology-document.cls
index 735ffbae2a..4572a98341 100644
--- a/macros/latex/contrib/upmethodology/src/upmethodology-document.cls
+++ b/macros/latex/contrib/upmethodology/src/upmethodology-document.cls
@@ -1,6 +1,6 @@
% Document class for Unified Process Methodology
%
-% Copyright (c) 2014 Stephane GALLAND <galland@arakhne.org>
+% Copyright (c) 2014-21 Stephane GALLAND <galland@arakhne.org>
%
% This program is free library; you can redistribute it and/or modify
% it under the terms of the GNU Lesser General Public License as
@@ -17,7 +17,7 @@
% write to the Free Software Foundation, Inc., 59 Temple Place - Suite
% 330, Boston, MA 02111-1307, USA.
-\global\edef\upm@package@docclazz@ver{2019/09/17}
+\global\edef\upm@package@docclazz@ver{2021/07/08}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{upmethodology-document}[\upm@package@docclazz@ver]
diff --git a/macros/latex/contrib/upmethodology/src/upmethodology-document.sty b/macros/latex/contrib/upmethodology/src/upmethodology-document.sty
index f3deda16b8..fcffc37a41 100644
--- a/macros/latex/contrib/upmethodology/src/upmethodology-document.sty
+++ b/macros/latex/contrib/upmethodology/src/upmethodology-document.sty
@@ -1,6 +1,6 @@
% Package for Unified Process Methodology's documents
%
-% Copyright (c) 2006-2020 Stephane GALLAND <galland@arakhne.org>
+% Copyright (c) 2006-2021 Stephane GALLAND <galland@arakhne.org>
%
% This program is free library; you can redistribute it and/or modify
% it under the terms of the GNU Lesser General Public License as
@@ -17,7 +17,7 @@
% write to the Free Software Foundation, Inc., 59 Temple Place - Suite
% 330, Boston, MA 02111-1307, USA.
-\global\edef\upm@package@doc@ver{2020/04/06}
+\global\edef\upm@package@doc@ver{2021/07/08}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{upmethodology-document}[\upm@package@doc@ver]
diff --git a/macros/latex/contrib/upmethodology/src/upmethodology-extension.sty b/macros/latex/contrib/upmethodology/src/upmethodology-extension.sty
index f70441df7b..2aa559ab7e 100644
--- a/macros/latex/contrib/upmethodology/src/upmethodology-extension.sty
+++ b/macros/latex/contrib/upmethodology/src/upmethodology-extension.sty
@@ -1,6 +1,6 @@
% Package for Unified Process Methodology's extensions
%
-% Copyright (c) 2006-2020 Stephane GALLAND <galland@arakhne.org>
+% Copyright (c) 2006-2021 Stephane GALLAND <galland@arakhne.org>
%
% This program is free library; you can redistribute it and/or modify
% it under the terms of the GNU Lesser General Public License as
@@ -18,7 +18,7 @@
% 330, Boston, MA 02111-1307, USA.
%
-\global\edef\upm@package@ext@ver{2020/04/06}
+\global\edef\upm@package@ext@ver{2021/07/08}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{upmethodology-extension}[\upm@package@ext@ver]
diff --git a/macros/latex/contrib/upmethodology/src/upmethodology-fmt.sty b/macros/latex/contrib/upmethodology/src/upmethodology-fmt.sty
index 776022789d..bb28d2ce6c 100644
--- a/macros/latex/contrib/upmethodology/src/upmethodology-fmt.sty
+++ b/macros/latex/contrib/upmethodology/src/upmethodology-fmt.sty
@@ -1,6 +1,6 @@
% Layout and Pagraph Format for Unified Process Methodology
%
-% Copyright (c) 2006-2009, 2012-2019 Stephane GALLAND <galland@arakhne.org>
+% Copyright (c) 2006-2009, 2012-2021 Stephane GALLAND <galland@arakhne.org>
%
% This program is free library; you can redistribute it and/or modify
% it under the terms of the GNU Lesser General Public License as
@@ -17,7 +17,7 @@
% write to the Free Software Foundation, Inc., 59 Temple Place - Suite
% 330, Boston, MA 02111-1307, USA.
-\global\edef\upm@package@fmt@ver{2019/09/28}
+\global\edef\upm@package@fmt@ver{2021/07/08}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{upmethodology-fmt}[\upm@package@fmt@ver]
@@ -1536,12 +1536,53 @@
\colorlet{emphboxbackground}{backtableheader}
\colorlet{emphboxborder}{fronttableheader}
\colorlet{emphboxtext}{fronttableheader}
+\colorlet{emphboxbackgroundb}{yellow!7}
+\colorlet{emphboxbackgroundc}{green!10}
+%-----
+% Draw an emph box without title
+% [#1]: width of the box (linewidth by default)
\NewEnviron{emphbox}[1][\linewidth]{%
\begin{framedcolorminipage}{#1}{emphboxborder}{emphboxbackground}%
\centering\color{emphboxtext}\BODY%
\end{framedcolorminipage}%
}
+%-----
+% Draw an emph box with title
+% [#1]: width of the box (linewidth by default)
+% #2: text of the title
+\NewEnviron{titleemphbox}[2][\linewidth]{%
+ \begin{framedcolorminipage}{#1}{emphboxborder}{emphboxbackground}%
+ \centering\color{emphboxtext}%
+ \vspace{.25cm}\uline{\textbf{#2}}\\[.25cm]%
+ \raggedright\BODY\vspace{.25cm}%
+ \end{framedcolorminipage}\\[.4cm]%
+}
+
+%-----
+% Draw an emph box without title with the second background color
+% [#1]: width of the box (linewidth by default)
+% #2: text of the title
+\NewEnviron{titleemphbox2}[2][\linewidth]{%
+ \begin{framedcolorminipage}{#1}{emphboxborder}{emphboxbackgroundb}%
+ \centering\color{emphboxtext}%
+ \vspace{.25cm}\uline{\textbf{#2}}\\[.25cm]%
+ \raggedright\BODY\vspace{.25cm}%
+ \end{framedcolorminipage}\\[.4cm]%
+}
+
+%-----
+% Draw an emph box without title with the third background color
+% [#1]: width of the box (linewidth by default)
+% #2: text of the title
+\NewEnviron{titleemphbox3}[2][\linewidth]{%
+ \begin{framedcolorminipage}{#1}{emphboxborder}{emphboxbackgroundc}%
+ \centering\color{emphboxtext}%
+ \vspace{.25cm}\uline{\textbf{#2}}\\[.25cm]%
+ \raggedright\BODY\vspace{.25cm}%
+ \end{framedcolorminipage}\\[.4cm]%
+}
+
\endinput
diff --git a/macros/latex/contrib/upmethodology/src/upmethodology-frontpage.sty b/macros/latex/contrib/upmethodology/src/upmethodology-frontpage.sty
index 3033ce02fe..d5175e1bc8 100644
--- a/macros/latex/contrib/upmethodology/src/upmethodology-frontpage.sty
+++ b/macros/latex/contrib/upmethodology/src/upmethodology-frontpage.sty
@@ -1,6 +1,6 @@
% Front page for Unified Process Methodology
%
-% Copyright (c) 2006-2015 Stephane GALLAND <galland@arakhne.org>
+% Copyright (c) 2006-2021 Stephane GALLAND <galland@arakhne.org>
%
% This program is free library; you can redistribute it and/or modify
% it under the terms of the GNU Lesser General Public License as
@@ -18,7 +18,7 @@
% 330, Boston, MA 02111-1307, USA.
%
-\global\edef\upm@package@fp@ver{2017/08/08}
+\global\edef\upm@package@fp@ver{2021/07/08}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{upmethodology-frontpage}[\upm@package@fp@ver]
diff --git a/macros/latex/contrib/upmethodology/src/upmethodology-p-common.sty b/macros/latex/contrib/upmethodology/src/upmethodology-p-common.sty
index 166c2e0f09..32d870d3c4 100644
--- a/macros/latex/contrib/upmethodology/src/upmethodology-p-common.sty
+++ b/macros/latex/contrib/upmethodology/src/upmethodology-p-common.sty
@@ -1,4 +1,4 @@
-% Copyright (c) 2009-13 Stephane GALLAND <galland@arakhne.org>
+% Copyright (c) 2009-21 Stephane GALLAND <galland@arakhne.org>
%
% This program is free library; you can redistribute it and/or modify
% it under the terms of the GNU Lesser General Public License as
@@ -16,7 +16,7 @@
% 330, Boston, MA 02111-1307, USA.
%
-\global\edef\upm@package@private@doctype@ver{2015/04/24}
+\global\edef\upm@package@private@doctype@ver{2021/07/08}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{upmethodology-p-common}[\upm@package@private@doctype@ver]
diff --git a/macros/latex/contrib/upmethodology/src/upmethodology-spec.sty b/macros/latex/contrib/upmethodology/src/upmethodology-spec.sty
index bc96076ab4..a0297667a5 100644
--- a/macros/latex/contrib/upmethodology/src/upmethodology-spec.sty
+++ b/macros/latex/contrib/upmethodology/src/upmethodology-spec.sty
@@ -1,6 +1,6 @@
% Specification Description for Unified Process Methodology
%
-% Copyright (c) 2006-2007 Stephane GALLAND <galland@arakhne.org>
+% Copyright (c) 2006-2021 Stephane GALLAND <galland@arakhne.org>
%
% This program is free library; you can redistribute it and/or modify
% it under the terms of the GNU Lesser General Public License as
@@ -23,7 +23,7 @@
% 2007-03-19 Add localization.
%
-\global\edef\upm@package@spec@ver{2019/09/17}
+\global\edef\upm@package@spec@ver{2021/07/08}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{upmethodology-spec}[\upm@package@spec@ver]
diff --git a/macros/latex/contrib/upmethodology/src/upmethodology-task.sty b/macros/latex/contrib/upmethodology/src/upmethodology-task.sty
index fdc90a712a..a7499fe8dc 100644
--- a/macros/latex/contrib/upmethodology/src/upmethodology-task.sty
+++ b/macros/latex/contrib/upmethodology/src/upmethodology-task.sty
@@ -1,6 +1,6 @@
% Task management for Unified Process Methodology
%
-% Copyright (c) 2006-2007 Stephane GALLAND <galland@arakhne.org>
+% Copyright (c) 2006-2021 Stephane GALLAND <galland@arakhne.org>
%
% This program is free library; you can redistribute it and/or modify
% it under the terms of the GNU Lesser General Public License as
@@ -23,7 +23,7 @@
% 2007-03-19 Add localization.
%
-\global\edef\upm@package@task@ver{2009/10/30}
+\global\edef\upm@package@task@ver{2021/07/08}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{upmethodology-task}[\upm@package@task@ver]
diff --git a/macros/latex/contrib/upmethodology/src/upmethodology-version.sty b/macros/latex/contrib/upmethodology/src/upmethodology-version.sty
index 6d3538abab..0b2c0b90c1 100644
--- a/macros/latex/contrib/upmethodology/src/upmethodology-version.sty
+++ b/macros/latex/contrib/upmethodology/src/upmethodology-version.sty
@@ -1,7 +1,7 @@
% Version management for Unified Process Methodology
%
% Copyright (c) 2006-2007 Stephane GALLAND <galland@arakhne.org>
-% Copyright (c) 2013 Stephane GALLAND <galland@arakhne.org>
+% Copyright (c) 2013-2021 Stephane GALLAND <galland@arakhne.org>
%
% This program is free library; you can redistribute it and/or modify
% it under the terms of the GNU Lesser General Public License as
@@ -19,7 +19,7 @@
% 330, Boston, MA 02111-1307, USA.
%
-\global\edef\upm@package@version@ver{2013/08/26}
+\global\edef\upm@package@version@ver{2021/07/08}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{upmethodology-version}[\upm@package@version@ver]