summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-02-21 03:01:57 +0000
committerNorbert Preining <norbert@preining.info>2023-02-21 03:01:57 +0000
commitb05164a5b679570a7040f2b28bbf156a0479c429 (patch)
treeda7f6b6f1c9dc1b41ffd5cd0998efb319d85a88d /macros
parent5eb36ac321647ea1d7118566b9520a0e8a622203 (diff)
CTAN sync 202302210301
Diffstat (limited to 'macros')
-rw-r--r--macros/generic/crossrefenum/CHANGELOG.md9
-rw-r--r--macros/generic/crossrefenum/README.md8
-rw-r--r--macros/generic/crossrefenum/doc/Makefile9
-rw-r--r--macros/generic/crossrefenum/doc/TEMPLATE_crossrefenum.context6
-rw-r--r--macros/generic/crossrefenum/doc/crossrefenum.md12
-rw-r--r--macros/generic/crossrefenum/doc/crossrefenum.pdfbin188047 -> 214504 bytes
-rw-r--r--macros/generic/crossrefenum/tex/crossrefenum.sty3
-rw-r--r--macros/generic/crossrefenum/tex/crossrefenum.tex17
-rw-r--r--macros/generic/crossrefenum/tex/t-crossrefenum.tex6
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/README.md50
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/demo/frames.tex2
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/demo/trigon_demo.pdfbin416470 -> 417846 bytes
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/docs/trigontheme.pdfbin364437 -> 366231 bytes
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamercolorthemetrigon.dtx2
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerfontthemetrigon.dtx36
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerinnerthemetrigon.dtx12
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerouterthemetrigon.dtx2
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerthemetrigon.dtx2
-rw-r--r--macros/latex/contrib/beamer/CHANGELOG.md18
-rw-r--r--macros/latex/contrib/beamer/base/beamer.cls2
-rw-r--r--macros/latex/contrib/beamer/base/beamerarticle.sty2
-rw-r--r--macros/latex/contrib/beamer/base/beamerbaseauxtemplates.sty21
-rw-r--r--macros/latex/contrib/beamer/base/beamerbasecompatibility.sty36
-rw-r--r--macros/latex/contrib/beamer/base/beamerbaselocalstructure.sty23
-rw-r--r--macros/latex/contrib/beamer/base/beamerbasenavigation.sty237
-rw-r--r--macros/latex/contrib/beamer/base/beamerbasenavigationsymbols.tex246
-rw-r--r--macros/latex/contrib/beamer/doc/beamerexample-conference-talk.pdfbin343911 -> 253191 bytes
-rw-r--r--macros/latex/contrib/beamer/doc/beamerexample-lecture-beamer-version.pdfbin547609 -> 430812 bytes
-rw-r--r--macros/latex/contrib/beamer/doc/beamerexample-lecture-print-version.pdfbin441714 -> 368027 bytes
-rw-r--r--macros/latex/contrib/beamer/doc/beamerug-fonts.tex2
-rw-r--r--macros/latex/contrib/beamer/doc/beamerug-frames.tex64
-rw-r--r--macros/latex/contrib/beamer/doc/beamerug-globalstructure.tex3
-rw-r--r--macros/latex/contrib/beamer/doc/beamerug-introduction.tex17
-rw-r--r--macros/latex/contrib/beamer/doc/beamerug-overlays.tex8
-rw-r--r--macros/latex/contrib/beamer/doc/beameruserguide.pdfbin2219543 -> 2155731 bytes
-rw-r--r--macros/latex/contrib/beamer/doc/beameruserguide.tex4
-rw-r--r--macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic1.jpgbin861 -> 36833 bytes
-rw-r--r--macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic2.jpgbin1634 -> 4290 bytes
-rw-r--r--macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic3.jpgbin471 -> 40020 bytes
-rw-r--r--macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic4.jpgbin613 -> 27790 bytes
-rw-r--r--macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic5.jpgbin435 -> 49011 bytes
-rw-r--r--macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic6.jpgbin1244 -> 27779 bytes
-rw-r--r--macros/latex/contrib/hyperxmp/README2
-rw-r--r--macros/latex/contrib/hyperxmp/einstein-xmp.tex1
-rwxr-xr-xmacros/latex/contrib/hyperxmp/hyperxmp-add-bytecount.pl2
-rw-r--r--macros/latex/contrib/hyperxmp/hyperxmp.dtx294
-rw-r--r--macros/latex/contrib/hyperxmp/hyperxmp.ins4
-rw-r--r--macros/latex/contrib/hyperxmp/hyperxmp.pdfbin1555235 -> 1272020 bytes
-rw-r--r--macros/latex/contrib/l3build/CHANGELOG.md12
-rw-r--r--macros/latex/contrib/l3build/README.md2
-rw-r--r--macros/latex/contrib/l3build/l3build-check.lua7
-rw-r--r--macros/latex/contrib/l3build/l3build.12
-rw-r--r--macros/latex/contrib/l3build/l3build.dtx2
-rwxr-xr-xmacros/latex/contrib/l3build/l3build.lua35
-rw-r--r--macros/latex/contrib/l3build/l3build.pdfbin742232 -> 741730 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdfbin812183 -> 812020 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex37
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty428
-rw-r--r--macros/latex/contrib/recorder-fingering/README.md4
-rw-r--r--macros/latex/contrib/recorder-fingering/RecorderInCchart.pngbin65144 -> 0 bytes
-rw-r--r--macros/latex/contrib/recorder-fingering/recorder-fingering.pdfbin68489 -> 89439 bytes
-rw-r--r--macros/latex/contrib/recorder-fingering/recorder-fingering.sty380
-rw-r--r--macros/latex/contrib/recorder-fingering/recorder-fingering.tex72
-rw-r--r--macros/unicodetex/latex/bithesis/bithesis.dtx70
-rw-r--r--macros/unicodetex/latex/bithesis/bithesis.pdfbin1067361 -> 1077517 bytes
65 files changed, 1326 insertions, 887 deletions
diff --git a/macros/generic/crossrefenum/CHANGELOG.md b/macros/generic/crossrefenum/CHANGELOG.md
index 05df28e8bb..70ca26494a 100644
--- a/macros/generic/crossrefenum/CHANGELOG.md
+++ b/macros/generic/crossrefenum/CHANGELOG.md
@@ -1,3 +1,12 @@
## Changes
### 2022/11/11: Version 1.0
+
+### 2023/02/20: Version 1.0.1
+
+`\crossrefenum` is now protected against early expansion.
+
+### 2023/02/20: Version 1.0.2
+
+Fixed some minor issues in version numbers and in the manual.
+
diff --git a/macros/generic/crossrefenum/README.md b/macros/generic/crossrefenum/README.md
index ea649b5384..fc699bfe96 100644
--- a/macros/generic/crossrefenum/README.md
+++ b/macros/generic/crossrefenum/README.md
@@ -1,8 +1,8 @@
-# crossrefenum 2022/11/11 v1.0
+# crossrefenum 2023/02/20 v1.0.2
Smart typesetting of enumerated cross-references for various TeX formats.
-Copyright (C) 2022
+Copyright (C) 2022-2023
by Bastien Dumont <bastien.dumont@posteo.net>
CTAN: `macros/generic/crossrefenum`
@@ -38,7 +38,7 @@ For the moment, it works out of the box with ConTeXt and LaTeX.
* `crossrefenum.md`: _Markdown source of the user guide to be typeset with Pandoc._
* `crossrefenum.pdf`: _User guide typeset with ConTeXt._
* `fixes.lua`: _Lua filter to be used with Pandoc for some typographic improvements._
- * `LICENSE_FLD_1-3.md`: _GNU Free Documentation License_
+ * `LICENSE_FDL_1-3.md`: _GNU Free Documentation License_
* `Makefile`: _Provides the target `crossrefenum.pdf` with the required instructions for Pandoc_
* `TEMPLATE_crossrefenum.context`: _Template to be used with Pandoc._
* `test/`:
@@ -66,7 +66,7 @@ and put in it `crossrefenum.tex` and, if required,
## License
-Copyright 2022 by Bastien Dumont (bastien.dumont@posteo.net)
+Copyright 2022-2023 by Bastien Dumont (bastien.dumont@posteo.net)
crossrefenum.tex is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/macros/generic/crossrefenum/doc/Makefile b/macros/generic/crossrefenum/doc/Makefile
index 9d124db536..31e2bc686f 100644
--- a/macros/generic/crossrefenum/doc/Makefile
+++ b/macros/generic/crossrefenum/doc/Makefile
@@ -1,6 +1,9 @@
-crossrefenum.pdf: crossrefenum.md ../CHANGELOG.md \
- TEMPLATE_crossrefenum.context fixes.lua
- pandoc -o crossrefenum.pdf --pdf-engine=context \
+crossrefenum.pdf: crossrefenum-doc.tex
+ context $< && mv crossrefenum-doc.pdf $@
+
+crossrefenum-doc.tex: crossrefenum.md ../CHANGELOG.md \
+ TEMPLATE_crossrefenum.context fixes.lua
+ pandoc -s -o $@ -t context \
--template=TEMPLATE_crossrefenum.context \
-L fixes.lua \
crossrefenum.md ../CHANGELOG.md
diff --git a/macros/generic/crossrefenum/doc/TEMPLATE_crossrefenum.context b/macros/generic/crossrefenum/doc/TEMPLATE_crossrefenum.context
index c999539089..27b15a0d85 100644
--- a/macros/generic/crossrefenum/doc/TEMPLATE_crossrefenum.context
+++ b/macros/generic/crossrefenum/doc/TEMPLATE_crossrefenum.context
@@ -88,6 +88,10 @@ intent=ISO coated v2 300\letterpercent\space (ECI)]
\setuplist[subsection][margin=3em, width=3em]
\setuplist[subsubsection][margin=6em, width=4em]
+$if(highlighting-commands)$
+$highlighting-commands$
+$endif$
+
\starttext
\starttitlepagemakeup
@@ -112,7 +116,7 @@ $endif$
$if(license)$
\startlicensepagemakeup
\inframed[frame=off, width=0.66\textwidth, align=normal]{%
- Copyright (C) 2022 Bastien Dumont.
+ Copyright (C) 2022-2023 Bastien Dumont.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
diff --git a/macros/generic/crossrefenum/doc/crossrefenum.md b/macros/generic/crossrefenum/doc/crossrefenum.md
index a08821de29..13e5494695 100644
--- a/macros/generic/crossrefenum/doc/crossrefenum.md
+++ b/macros/generic/crossrefenum/doc/crossrefenum.md
@@ -2,7 +2,7 @@
title: "crossrefenum"
subtitle: "Smart typesetting of enumerated cross-references for various TeX formats"
author: Bastien Dumont
-date: 2022/11/11
+date: 2023/02/20
lang: en-US
toc: true
license: true
@@ -230,7 +230,9 @@ if this feature were not already included in _crossrefenum_.
\crfnm@newListFrom[\crfnm@doubleRefTypes][\crfnm@pageline] -> \crfnm@doubleRefTypes
\crfnm@newListFrom[\crfnm@supportedTypes][\crfnm@line] -> \crfnm@supportedTypes
\crfnm@newListFrom[\crfnm@supportedTypes][\crfnm@pageline] -> \crfnm@supportedTypes
+```
+```{.tex}
%% For the double types, set the primary and the secondary type.
%% The primary type corresponds to the widest typographic unit
%% (“page” for “pagenote”, “section” for “sectionpage”...).
@@ -251,9 +253,11 @@ if this feature were not already included in _crossrefenum_.
% Define all specific configuration options in the regular way.
%% Required
-\def\crfnmLine{l. }
-\def\crfnmLines{ll.}
+\def\crfnmLine{l.~}
+\def\crfnmLines{ll.~}
+```
+```{.tex}
%% If it differs from the defaults.
\def\crfnmCollapsable{yes}
\def\crfnmLineBeforeLastInSecond{, }
@@ -263,7 +267,7 @@ if this feature were not already included in _crossrefenum_.
\def\crfnmLinePrintPrefixInSecond{no}
```
-Adding support to yet unsupported formats is far less trivial,
+Adding support for additional formats is far less trivial,
not least because most of them do not provide a straightforward way
to get reference numbers via purely expandable macros,
which is required for _crossrefenum_ to perform its calculations.
diff --git a/macros/generic/crossrefenum/doc/crossrefenum.pdf b/macros/generic/crossrefenum/doc/crossrefenum.pdf
index f2f7a9a7cd..94387d3b92 100644
--- a/macros/generic/crossrefenum/doc/crossrefenum.pdf
+++ b/macros/generic/crossrefenum/doc/crossrefenum.pdf
Binary files differ
diff --git a/macros/generic/crossrefenum/tex/crossrefenum.sty b/macros/generic/crossrefenum/tex/crossrefenum.sty
index 3d6ca15ae0..808f04ffa8 100644
--- a/macros/generic/crossrefenum/tex/crossrefenum.sty
+++ b/macros/generic/crossrefenum/tex/crossrefenum.sty
@@ -1,3 +1,6 @@
+% This file cannot be loaded in main-test.tex for it would load the version of crossrefenum.tex
+% installed in the texmf tree.
+% As a consequence, it should not be changed to correct bugs or implement new features.
\input crossrefenum.tex
\ProvidesPackage{crossrefenum}[\crfnmDate{} v\crfnmVersion{} Enumeration of cross-references]
\endinput \ No newline at end of file
diff --git a/macros/generic/crossrefenum/tex/crossrefenum.tex b/macros/generic/crossrefenum/tex/crossrefenum.tex
index 2b8d424a67..46196edece 100644
--- a/macros/generic/crossrefenum/tex/crossrefenum.tex
+++ b/macros/generic/crossrefenum/tex/crossrefenum.tex
@@ -2,10 +2,10 @@
\def\crfnmName{crossrefenum}
\def\crfnmShortDesc{Smart typesetting of enumerated cross-references for various TeX formats}
\def\crfnmAuthor{Bastien Dumont}
-\def\crfnmDate{2022/11/11}
-\def\crfnmVersion{0.1}
+\def\crfnmDate{2023/02/20}
+\def\crfnmVersion{1.0.2}
%
-% Copyright 2022 by Bastien Dumont (bastien.dumont@posteo.net)
+% Copyright 2022-2023 by Bastien Dumont (bastien.dumont@posteo.net)
%
% crossrefenum.tex is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
@@ -524,13 +524,22 @@
%%% \crossrefenum: Public macro with optional arguments %%%
+\crfnm@case[\fmtname]
+ \crfnm@context: {
+ \unexpanded\def\crossrefenum{\crfnm@crossrefenum}
+ }
+ \crfnm@latex: {
+ \protected\def\crossrefenum{\crfnm@crossrefenum}
+ }
+\crfnm@endCases
+
% \crossrefenum has two optional arguments.
% See the definition of \crfnm@enum below for the recognized values.
\def\crfnm@firstArg@default{page}
\def\crfnm@secondArg@default{withprefix}
-\def\crossrefenum{%
+\def\crfnm@crossrefenum{%
\futurelet\crfnm@nextToken\crfnm@setEnumMacro
}
diff --git a/macros/generic/crossrefenum/tex/t-crossrefenum.tex b/macros/generic/crossrefenum/tex/t-crossrefenum.tex
index 3f44e64f88..9629faf04c 100644
--- a/macros/generic/crossrefenum/tex/t-crossrefenum.tex
+++ b/macros/generic/crossrefenum/tex/t-crossrefenum.tex
@@ -9,10 +9,14 @@
%D copyright=Bastien Dumont,
%D license=GNU Public License v. 3.0 or higher]
+% This file cannot be loaded in main-test.tex for it would load the version of crossrefenum.tex
+% installed in the texmf tree.
+% As a consequence, it should not be changed to correct bugs or implement new features.
+
\startmodule[crossrefenum]
\unprotect
-\input ../crossrefenum.tex
+\input crossrefenum.tex
\protect
\stopmodule \ No newline at end of file
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/README.md b/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/README.md
index 2643816c1f..ebb5cdd058 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/README.md
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/README.md
@@ -19,8 +19,8 @@ high degree of customization.
The main design focuses on triangular shapes for major layout elements and noise
minimization for the main body of the work.
-The theme is now available on [CTAN](https://ctan.org/pkg/beamertheme-trigon)
-and a template is publicly available on the [Overleaf
+The theme is available on [CTAN](https://ctan.org/pkg/beamertheme-trigon)
+and a demo template is publicly available on the [Overleaf
Gallery][overleaf-gallery].
Feature requests, issues and pull requests are welcome.
@@ -69,7 +69,7 @@ install it manually by following these steps:
archive](https://gitlab.com/thlamb/beamertheme-trigon/-/archive/master/beamertheme-trigon-master.zip)
2. **Compile the style files** by running `make sty` inside the downloaded
directory. (Or run LaTeX directly on `source/trigontheme.ins`.)
-3. **Move the resulting `*.sty` files** to the folder containing your
+3. **Move the resulting `.sty` files** to the folder containing your
presentation. To use Trigon with many presentations, run `make install` or
move the `*.sty` files to a folder in your TeX path instead.
4. **Use the theme** by declaring `\usetheme{trigon}` in the preamble of your
@@ -77,16 +77,29 @@ install it manually by following these steps:
### Overleaf
-Since October 2021, [TexLive 2021 is available on
-Overleaf](https://www.overleaf.com/blog/tex-live-2021-now-available). Trigon is
-therefore automatically supported for new documents. If you want to switch older
-documents to use the Trigon theme, you need to [select TexLive 2021 or higher as
-your TeX Live
-version](https://www.overleaf.com/blog/new-feature-select-your-tex-live-compiler-version)
-(this may cause issues with other packages used in your presentation).
+The version of **Trigon** available on Overleaf may not be the latest one.
+Overleaf relies on Texlive for its backend latex installation, which they update
+once a year (typically around end of Q3). Depending on the time of the year, it
+is therefore possible that some of the latest features and developments are not
+available on Overleaf.
-In addition to that, a template project was created and is publicly available in
-the [Overleaf Gallery][overleaf-gallery] to bootstrap your presentation.
+_Note that you can see the current version of all packages by using `\listfiles`
+in the preamble of the document and looking at the logs of the compilation._
+
+Moreover, to avoid breaking changes, documents created with one version of
+TexLive keep this same version when they are edited. To use a more recent
+version of Trigon in your older documents, you need to [instruct Overleaf to use
+the most recent
+TexLive](https://www.overleaf.com/blog/new-feature-select-your-tex-live-compiler-version)
+Keep in mind that this may cause issues with other packages used in your
+presentation that would be updated as well.
+
+If you still want to use the very latest development, it is best to download the
+source code of the package here or over CTAN, compile the `.sty` files locally
+and place them at the root of you project on CTAN.
+
+A template project was created and is publicly available in the [Overleaf
+Gallery][overleaf-gallery] to bootstrap your presentation.
## Usage
@@ -105,19 +118,18 @@ following criteria:
- Maximum three main triangles on the layout
- Blending type "multiply" for overlapping triangles
- Triangles must all be equilateral (60° angles), some useful macros are
- defined in _beamerinnerthemettrigon.dtx_ for that
+ defined in _beamerinnerthemettrigon.dtx_ for that
## References & Acknowledgment
- The theme structure and options are heavily based on the [Metropolis
theme](https://github.com/matze/mtheme)
-- Illustration picture for the demo titlepage from Taryn Elliott @
- [pexels](https://pexels.com) (published under Pexel License, free to use
- without attribution).
+- The picture used on the title page of the demo is "_Man in Red Jacket Standing
+ on the Stairs_": Photo by [Taryn Elliott from Pexels][man-red-jacket].
## License
-Copyright 2021 by Thomas Lambert <trigon@thl.ovh>.
+Copyright 2021-2023 by Thomas Lambert <trigon@thl.ovh>.
**Author and maintainer**: Thomas Lambert.
@@ -126,8 +138,12 @@ International License](https://creativecommons.org/licenses/by-sa/4.0/), which
is essentially a _free software_ license. Do not hesitate to copy and modify
the code to fit your needs.
+Some parts of this repository may be released under a different license than the
+main theme. See the [NOTICE.md](NOTICE.md) file for more details.
+
[demo-shield]: https://img.shields.io/badge/Demo-PDF-blue.svg
[docs-shield]: https://img.shields.io/badge/Documentation-PDF-blue.svg
[demo-url]: https://gitlab.com/thlamb/beamertheme-trigon/-/jobs/artifacts/master/raw/demo/trigon_demo.pdf?job=tex-compile
[docs-url]: https://gitlab.com/thlamb/beamertheme-trigon/-/jobs/artifacts/master/raw/docs/trigontheme.pdf?job=tex-compile
[overleaf-gallery]: https://www.overleaf.com/latex/templates/trigon-beamer-theme/wjyyzvdzqkgf
+[man-red-jacket]: https://www.pexels.com/photo/man-in-red-jacket-standing-on-the-stairs-4390730/
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/demo/frames.tex b/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/demo/frames.tex
index c0bb1aa40a..4e215f091f 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/demo/frames.tex
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/demo/frames.tex
@@ -70,7 +70,7 @@
Emphasis can be added by using \textbf{bold} typeface, \textit{italic},
\alert{alert} or {\color{tPrim}{simple colors}}.
\vfill
- Equations are typsetted with this font as well
+ Equations are typeset with this font as well
\begin{equation*}
F(x|\mu,s) = \int_{-\infty}^x s^{-1}\left(1+e^{-\frac{v-\mu}{s}}\right)^{-2} e^{-\frac{v-\mu}{s}}\;\mathsf{d}v = \frac{1}{1+e^{-\frac{x-\mu}{s}}}
\end{equation*}
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/demo/trigon_demo.pdf b/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/demo/trigon_demo.pdf
index 4877533c2e..a0f438e65b 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/demo/trigon_demo.pdf
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/demo/trigon_demo.pdf
Binary files differ
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/docs/trigontheme.pdf b/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/docs/trigontheme.pdf
index 7928b7be64..5f8925ec69 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/docs/trigontheme.pdf
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/docs/trigontheme.pdf
Binary files differ
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamercolorthemetrigon.dtx b/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamercolorthemetrigon.dtx
index 2b3c3b7fc9..6c83aedd67 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamercolorthemetrigon.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamercolorthemetrigon.dtx
@@ -13,7 +13,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamercolorthemetrigon}[2022/05/08 v0.6.6 Trigon color theme]
+\ProvidesPackage{beamercolorthemetrigon}[2023/02/20 v0.7.0 Trigon color theme]
%</package>
% \fi
% \CheckSum{0}
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerfontthemetrigon.dtx b/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerfontthemetrigon.dtx
index e126efc261..800a786145 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerfontthemetrigon.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerfontthemetrigon.dtx
@@ -13,7 +13,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerfontthemetrigon}[2022/05/08 v0.6.6 Trigon font theme]
+\ProvidesPackage{beamerfontthemetrigon}[2023/02/20 v0.7.0 Trigon font theme]
%</package>
% \fi
% \CheckSum{0}
@@ -268,22 +268,28 @@
% the frame title we have to patch |\beamer@@frametitle|.
%
% \begin{macrocode}
+\providecommand{\beamer@insertframetitlecontinuation}{
+ \usebeamertemplate*{frametitle continuation}
+}
\patchcmd{\beamer@@frametitle}
-{{%
- \gdef\insertframetitle{{#2\ifnum\beamer@autobreakcount>0\relax{}\space%
- \usebeamertemplate*{frametitle continuation}\fi}}%
- \gdef\beamer@frametitle{#2}%
- \gdef\beamer@shortframetitle{#1}%
-}}
-{{%
- \gdef\insertframetitle{{\trigon@frametitleformat{#2}\ifnum%
- \beamer@autobreakcount>0\relax{}\space%
- \usebeamertemplate*{frametitle continuation}\fi}}%
- \gdef\beamer@frametitle{#2}%
- \gdef\beamer@shortframetitle{#1}%
-}}
+ {\gdef\insertframetitle{{%
+ #2%
+ \ifnum\beamer@autobreakcount>0
+ \relax{}\space%
+ \beamer@insertframetitlecontinuation%
+ \fi%
+ }}%
+ }
+ {\gdef\insertframetitle{{%
+ \trigon@frametitleformat{#2}%
+ \ifnum\beamer@autobreakcount>0
+ \relax{}\space%
+ \beamer@insertframetitlecontinuation%
+ \fi%
+ }}%
+ }
{}
-{\PackageError{beamerfontthemetrigon}{Patching frame title failed}\@ehc}
+{\PackageWarning{beamerfontthemetrigon}{Patching frame title failed}\@ehc}
% \end{macrocode}
%
% \subsubsection{General font definitions}
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerinnerthemetrigon.dtx b/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerinnerthemetrigon.dtx
index 3d67da4098..9f0eb4cb8a 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerinnerthemetrigon.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerinnerthemetrigon.dtx
@@ -13,7 +13,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerinnerthemetrigon}[2022/05/08 v0.6.6 Trigon inner theme]
+\ProvidesPackage{beamerinnerthemetrigon}[2023/02/20 v0.7.0 Trigon inner theme]
%</package>
% \fi
% \CheckSum{0}
@@ -285,17 +285,17 @@
\useasboundingbox (0,0) rectangle(\the\paperwidth,\the\paperheight);
\begin{scope}[blend group=multiply]
\clip(0,0) rectangle(\the\paperwidth,\the\paperheight);
- \path[fill=tTheme]\leftTriangle{0.5\paperwidth}{0};
- \topColorTriangle{0.73\paperwidth}{0.70\paperheight}{tGrey!30!tBg};
+ \path[fill=tTheme]\leftTriangle{0.5\paperwidth}{0}
+ \topColorTriangle{0.73\paperwidth}{0.70\paperheight}{tGrey!30!tBg}
\ifx\inserttitlegraphic\@empty
\leftColorTriangle{0.73\paperwidth}{0.70\paperheight}{tTheme}
\else
- \path[clip]\leftTriangle{0.73\paperwidth}{0.70\paperheight};
+ \path[clip]\leftTriangle{0.73\paperwidth}{0.70\paperheight}
\node[anchor=north west, inner sep=0pt, outer sep=0pt] at (0,\the\paperheight) {\inserttitlegraphic};
\fi
\end{scope}
\clip(0,0) rectangle(\the\paperwidth,\the\paperheight);
- \path[fill=tBg]\rightTriangle{0.45\paperwidth}{\the\paperheight};
+ \path[fill=tBg]\rightTriangle{0.45\paperwidth}{\the\paperheight}
\ifx\logbig\@empty \else
\node[anchor=north east,inner sep=0mm] at
(.96*\the\paperwidth,.96*\the\paperheight) {\logbig};
@@ -319,7 +319,7 @@
\ifx\inserttitlegraphic\@empty
\leftColorTriangle{0.58\paperwidth}{\the\paperheight}{tTheme}
\else
- \path[clip]\leftTriangle{0.58\paperwidth}{\the\paperheight};
+ \path[clip]\leftTriangle{0.58\paperwidth}{\the\paperheight}
\node[anchor=north west, inner sep=0pt, outer sep=0pt] at (0,\the\paperheight) {\inserttitlegraphic};
\fi
\end{tikzpicture}
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerouterthemetrigon.dtx b/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerouterthemetrigon.dtx
index 3ec2bcf617..fd5b410997 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerouterthemetrigon.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerouterthemetrigon.dtx
@@ -13,7 +13,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerouterthemetrigon}[2022/05/08 v0.6.6 Trigon outer theme]
+\ProvidesPackage{beamerouterthemetrigon}[2023/02/20 v0.7.0 Trigon outer theme]
%</package>
% \fi
% \CheckSum{0}
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerthemetrigon.dtx b/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerthemetrigon.dtx
index b378824d71..3f18e776aa 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerthemetrigon.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-trigon/source/beamerthemetrigon.dtx
@@ -13,7 +13,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerthemetrigon}[2022/05/08 v0.6.6 Trigon Beamer theme]
+\ProvidesPackage{beamerthemetrigon}[2023/02/20 v0.7.0 Trigon Beamer theme]
%</package>
% \fi
% \CheckSum{0}
diff --git a/macros/latex/contrib/beamer/CHANGELOG.md b/macros/latex/contrib/beamer/CHANGELOG.md
index ff3c75b7a7..5048678abf 100644
--- a/macros/latex/contrib/beamer/CHANGELOG.md
+++ b/macros/latex/contrib/beamer/CHANGELOG.md
@@ -8,11 +8,22 @@ a major and minor version only.
## [Unreleased]
+## [v3.69]
+
+### Fixed
+
+- protect the frametitle continuation so it can be used with \MakeUppercase (see #802)
+- first aid for metropolis theme (see #802)
+- fixed indentation of multiline section titles in `square` and `ball unnumbered` toc templates (see #817)
+- using `bibliography entry ...` font in biblatex generated bibliographies
+
## [v3.68]
### Changed
- simplified non-text links for navigation symbols and framezoom
+- doc: re-organised section about navigation symbols
+- moved parts of `beamerbasenavigation.sty` to `beamerbasenavigationsymbols.tex`
### Fixed
- fixed height of non-text links to prevent overlaps in vertically stacked miniframes (see #780)
@@ -49,7 +60,7 @@ a major and minor version only.
- fixed bullet colour of alerted items for custom item colour (see #735)
- workaround to make miniframes clickable in xelatex (see #332)
- added missing encoding value to multimedia sound macro (see #607)
-- imporoved problem with shadow of blocks without title (see #647)
+- improved problem with shadow of blocks without title (see #647)
- reduced artefacts in poppler based viewers for shadow blocks (see #647)
- workaround to make `\framezoom` clickable in xelatex (see #619)
- exclude invisible frames from being counted (see #592)
@@ -60,7 +71,7 @@ a major and minor version only.
### Added
- new continuation count template "singleframecheck" which will only show the continuation count if a break actually occurs (see #423)
-- new templated for lined note pages (#704)
+- new template for lined note pages (#704)
### Changed
@@ -212,7 +223,8 @@ a major and minor version only.
- Support for `noxcolor` with `beamerarticle` (see #483)
- Treatment of mixed overlay/alert specifications
-[Unreleased]: https://github.com/josephwright/beamer/compare/v3.68...HEAD
+[Unreleased]: https://github.com/josephwright/beamer/compare/v3.69...HEAD
+[v3.69]: https://github.com/josephwright/beamer/compare/v3.68...v3.69
[v3.68]: https://github.com/josephwright/beamer/compare/v3.67...v3.68
[v3.67]: https://github.com/josephwright/beamer/compare/v3.66...v3.67
[v3.66]: https://github.com/josephwright/beamer/compare/v3.65...v3.66
diff --git a/macros/latex/contrib/beamer/base/beamer.cls b/macros/latex/contrib/beamer/base/beamer.cls
index 475d5d0ab6..fc81e2b3ef 100644
--- a/macros/latex/contrib/beamer/base/beamer.cls
+++ b/macros/latex/contrib/beamer/base/beamer.cls
@@ -12,7 +12,7 @@
% See the file doc/licenses/LICENSE for more details.
\ProvidesClass{beamer}
- [2022/09/13 v3.68 A class for typesetting presentations]
+ [2023/02/20 v3.69 A class for typesetting presentations]
% Setup modes and check for article option
% Also loads packages required by both beamer and beamerarticle
diff --git a/macros/latex/contrib/beamer/base/beamerarticle.sty b/macros/latex/contrib/beamer/base/beamerarticle.sty
index 1de9be15f6..b43f0c808d 100644
--- a/macros/latex/contrib/beamer/base/beamerarticle.sty
+++ b/macros/latex/contrib/beamer/base/beamerarticle.sty
@@ -12,7 +12,7 @@
% See the file doc/licenses/LICENSE for more details.
\ProvidesPackage{beamerarticle}
- [2022/09/13 v3.68 beamer input in article mode]
+ [2023/02/20 v3.69 beamer input in article mode]
% Setup modes and check for article option
% Also loads packages required by both beamer and beamerarticle
diff --git a/macros/latex/contrib/beamer/base/beamerbaseauxtemplates.sty b/macros/latex/contrib/beamer/base/beamerbaseauxtemplates.sty
index b3638febe5..42b47c5037 100644
--- a/macros/latex/contrib/beamer/base/beamerbaseauxtemplates.sty
+++ b/macros/latex/contrib/beamer/base/beamerbaseauxtemplates.sty
@@ -254,14 +254,14 @@
% (sub-)section in toc: square
\defbeamertemplate{section in toc}{square}
-{\leavevmode\leftskip=1.75ex%
+{\leavevmode\leftskip=3ex%
\llap{%
\usebeamerfont*{section number projected}%
\usebeamercolor[bg]{section number projected}%
\vrule width2.25ex height1.85ex depth.4ex%
\hskip-2.25ex%
- \hbox to2.25ex{\hfil\color{fg}\inserttocsectionnumber\hfil}}%
- \kern1.25ex\inserttocsection\par}
+ \hbox to2.25ex{\hfil\color{fg}\inserttocsectionnumber\hfil}\kern1.25ex}%
+ \inserttocsection\par}
\defbeamertemplate{subsection in toc}{square}
{\leavevmode\leftskip=5ex\llap{%
@@ -281,17 +281,20 @@
% (sub-)section in toc: ball
\defbeamertemplate{section in toc}{ball unnumbered}
-{\leavevmode\raise0.1ex\beamer@usesphere{section number projected}{bigsphere}\kern1.25ex\inserttocsection\par}
+{\leavevmode\leftskip=2.25ex%
+ \llap{%
+ \raise0.1ex\beamer@usesphere{section number projected}{bigsphere}\kern1.25ex}%
+ \inserttocsection\par}
\defbeamertemplate{subsection in toc}{ball unnumbered}
-{\leavevmode\leftskip=1.5em\raise0.2ex\beamer@usesphere{subsection number projected}{smallsphere}%
- \kern1ex\inserttocsubsection\par}
+{\leavevmode\leftskip=5.1ex\llap{%
+ \raise0.2ex\beamer@usesphere{subsection number projected}{smallsphere}\kern1ex}\inserttocsubsection\par}
\defbeamertemplate{subsubsection in toc}{ball unnumbered}
{\leavevmode\normalsize\usebeamerfont{subsection in
- toc}\leftskip=3em\usebeamerfont{subsubsection in toc}%
- \beamer@usesphere{subsubsection number projected}{smallsphere}%
- \kern0.75ex\inserttocsubsubsection\par}
+ toc}\leftskip=8.2ex\usebeamerfont{subsubsection in toc}%
+ \llap{%
+ \beamer@usesphere{subsubsection number projected}{smallsphere}\kern0.75ex}\inserttocsubsubsection\par}
diff --git a/macros/latex/contrib/beamer/base/beamerbasecompatibility.sty b/macros/latex/contrib/beamer/base/beamerbasecompatibility.sty
index 02abbad55a..140b3d3641 100644
--- a/macros/latex/contrib/beamer/base/beamerbasecompatibility.sty
+++ b/macros/latex/contrib/beamer/base/beamerbasecompatibility.sty
@@ -249,6 +249,42 @@
}{}
%
+% Fix for metropolis theme
+% https://github.com/josephwright/beamer/issues/802
+%
+% metropolis patches an old version of the \beamer@@frametitle
+% definition and throws an error if it does not find the outdated
+% code. To avoid breaking all metropolis persentations, we revert
+% back to the old definition at the start of the file and then
+% overwrite again with the current implimentation at the end
+%
+\AddToHook{file/beamerfontthememetropolis.sty/before}{%
+ \long\def\beamer@@frametitle[#1]#2{%
+ \ifblank{#2}{}{%
+ \gdef\insertframetitle{{#2\ifnum\beamer@autobreakcount>0\relax{}\space\usebeamertemplate*{frametitle continuation}\fi}}%
+ \gdef\beamer@frametitle{#2}%
+ \gdef\beamer@shortframetitle{#1}%
+ }%
+ }
+}
+\AddToHook{file/beamerfontthememetropolis.sty/after}{%
+ \long\def\beamer@@frametitle[#1]#2{%
+ \ifblank{#2}{}{%
+ \gdef\insertframetitle{{%
+ \metropolis@frametitleformat{#2}%
+ \ifnum\beamer@autobreakcount>0
+ \relax{}\space%
+ \beamer@insertframetitlecontinuation%
+ \fi%
+ }}%
+ \gdef\beamer@frametitle{#2}%
+ \gdef\beamer@shortframetitle{#1}%
+ }%
+ }
+}
+
+
+%
% Obsolete commands from old versions of beamer
%
\mode
diff --git a/macros/latex/contrib/beamer/base/beamerbaselocalstructure.sty b/macros/latex/contrib/beamer/base/beamerbaselocalstructure.sty
index 59dcb77a89..8e7114c099 100644
--- a/macros/latex/contrib/beamer/base/beamerbaselocalstructure.sty
+++ b/macros/latex/contrib/beamer/base/beamerbaselocalstructure.sty
@@ -22,13 +22,22 @@
% The \frametitle command
%
%
+\protected\def\beamer@insertframetitlecontinuation{\usebeamertemplate*{frametitle continuation}}
+
\newcommand<>\frametitle{\alt#1{\@dblarg\beamer@@frametitle}{\beamer@gobbleoptional}}
+% if this definition changes, also update beamerbasecompatibility.sty under the comment "Fix for metropolis theme"
\long\def\beamer@@frametitle[#1]#2{%
\ifblank{#2}{}{%
- \gdef\insertframetitle{{#2\ifnum\beamer@autobreakcount>0\relax{}\space\usebeamertemplate*{frametitle continuation}\fi}}%
- \gdef\beamer@frametitle{#2}%
- \gdef\beamer@shortframetitle{#1}%
-}%
+ \gdef\insertframetitle{{%
+ #2%
+ \ifnum\beamer@autobreakcount>0
+ \relax{}\space%
+ \beamer@insertframetitlecontinuation%
+ \fi%
+ }}%
+ \gdef\beamer@frametitle{#2}%
+ \gdef\beamer@shortframetitle{#1}%
+ }%
}
\newcommand\insertshortframetitle[1][]{%
@@ -486,16 +495,16 @@
{\let\makelabel\beamer@biblabeltemplate}{}{}
\apptocmd{\abx@macro@begentry}
{\let\bbx@tempa\@empty%
- \usebeamercolor[fg]{bibliography entry author}}{}{}
+ \usebeamercolor[fg]{bibliography entry author}\usebeamerfont{bibliography entry author}}{}{}
\pretocmd{\abx@macro@labeltitle}
{\ifboolexpr{ test {\ifcsundef{abx@field@label}}
and test {\ifcsundef{abx@field@labeltitle}} }{}{\let\bbx@tempa\labelnamepunct}}{}{}
\pretocmd{\abx@macro@title}
{\ifcsundef{abx@name@labelname}{}{\let\bbx@tempa\labelnamepunct}%
- \bbx@tempa\newblock\unspace\usebeamercolor[fg]{bibliography entry title}}{}{}
+ \bbx@tempa\newblock\unspace\usebeamercolor[fg]{bibliography entry title}\usebeamerfont{bibliography entry title}}{}{}
\apptocmd{\abx@macro@title}
{\ifcsundef{abx@field@title}{}{\ifpunct{}{\midsentence\newunitpunct}}%
- \newblock\unspace\usebeamercolor[fg]{bibliography entry note}}{}{}}
+ \newblock\unspace\usebeamercolor[fg]{bibliography entry note}\usebeamerfont{bibliography entry note}}{}{}}
{}}
% Adding patches to some biblatex styles
diff --git a/macros/latex/contrib/beamer/base/beamerbasenavigation.sty b/macros/latex/contrib/beamer/base/beamerbasenavigation.sty
index 408fa4bfe4..9caf1839e4 100644
--- a/macros/latex/contrib/beamer/base/beamerbasenavigation.sty
+++ b/macros/latex/contrib/beamer/base/beamerbasenavigation.sty
@@ -228,242 +228,7 @@
}%
}
-\pgfdefobject{beamerslidenavlight}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
- {\pgfpathqmoveto{4bp}{0.5bp}
- \pgfpathqlineto{2bp}{2bp}
- \pgfpathqlineto{4bp}{3.5bp}
- \pgfusepathqfill
- \pgfpathqmoveto{16bp}{0.5bp}
- \pgfpathqlineto{18bp}{2bp}
- \pgfpathqlineto{16bp}{3.5bp}
- \pgfusepathqfill}
-\pgfdefobject{beamerslidenavstrong}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
-{%
- \pgfpathrectangle{\pgfpoint{8.3pt}{0.8pt}}{\pgfpoint{3.4pt}{2.4pt}}%
- \pgfusepathqstroke%
-}
-
-\def\insertslidenavigationsymbol{%
- \begin{pgfpicture}{0pt}{-1.5pt}{20pt}{5.5pt}
- \pgfuseobject{beamerslidenavstrong}%
- \usebeamercolor[fg]{navigation symbols dimmed}
- \pgfuseobject{beamerslidenavlight}%
- \end{pgfpicture}\kern-20pt%
- \hyperlinkslideprev{\beamer@linkspace{6pt}}%
- \Acrobatmenu{GoToPage}{\beamer@linkspace{8pt}}%
- \hyperlinkslidenext{\beamer@linkspace{6pt}}}
-
-\pgfdefobject{beamerframenavlight}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
- {\pgfpathqmoveto{4bp}{0.5bp}
- \pgfpathqlineto{2bp}{2bp}
- \pgfpathqlineto{4bp}{3.5bp}
- \pgfpathqmoveto{16bp}{0.5bp}
- \pgfpathqlineto{18bp}{2bp}
- \pgfpathqlineto{16bp}{3.5bp}
- \pgfusepathqfill}
-\pgfdefobject{beamerframenavstrong}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
-{%
- \pgfpathrectangle{\pgfpoint{7pt}{0pt}}{\pgfpoint{3.4pt}{2.4pt}}
- \pgfpathqmoveto{7.8bp}{2.4bp}
- \pgfpathqlineto{7.8bp}{3.2bp}
- \pgfpathqlineto{11.2bp}{3.2bp}
- \pgfpathqlineto{11.2bp}{.8bp}
- \pgfpathqlineto{10.4bp}{.8bp}
- \pgfpathqmoveto{8.6bp}{3.2bp}
- \pgfpathqlineto{8.6bp}{4bp}
- \pgfpathqlineto{12bp}{4bp}
- \pgfpathqlineto{12bp}{1.6bp}
- \pgfpathqlineto{11.2bp}{1.6bp}
- \pgfusepathqstroke}
-
-\def\insertframenavigationsymbol{%
- \begin{pgfpicture}{0pt}{-1.5pt}{20pt}{5.5pt}
- \pgfuseobject{beamerframenavstrong}%
- \usebeamercolor[fg]{navigation symbols dimmed}
- \pgfuseobject{beamerframenavlight}%
- \end{pgfpicture}\kern-20pt%
- \hyperlinkframeendprev{\beamer@linkspace{5pt}}%
- \hyperlinkframestart{\beamer@linkspace{5pt}}%
- \hyperlinkframeend{\beamer@linkspace{5pt}}%
- \hyperlinkframestartnext{\beamer@linkspace{5pt}}}
-
-\pgfdefobject{beamersubsectionnavlight}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
-{%
- \pgfpathqmoveto{4bp}{0.5bp}
- \pgfpathqlineto{2bp}{2bp}
- \pgfpathqlineto{4bp}{3.5bp}
- \pgfpathqmoveto{16bp}{0.5bp}
- \pgfpathqlineto{18bp}{2bp}
- \pgfpathqlineto{16bp}{3.5bp}
- \pgfusepathqfill
- \pgfsetlinewidth{0.6pt}
- \pgfpathqmoveto{8bp}{4bp}
- \pgfpathqlineto{11bp}{4bp}
- \pgfpathqmoveto{9bp}{2bp}
- \pgfpathqlineto{12bp}{2bp}
- \pgfpathqmoveto{8bp}{1bp}
- \pgfpathqlineto{11bp}{1bp}
- \pgfpathqmoveto{9bp}{0bp}
- \pgfpathqlineto{12bp}{0bp}
- \pgfusepathqstroke}
-\pgfdefobject{beamersubsectionnavstrong}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
-{%
- \pgfsetlinewidth{0.6pt}
- \pgfpathqmoveto{9bp}{3bp}
- \pgfpathqlineto{12bp}{3bp}
- \pgfusepathqstroke}
-
-\def\insertsubsectionnavigationsymbol{%
- \begin{pgfpicture}{0pt}{-1.5pt}{20pt}{5.5pt}
- \pgfuseobject{beamersubsectionnavstrong}%
- \usebeamercolor[fg]{navigation symbols dimmed}
- \pgfuseobject{beamersubsectionnavlight}%
- \end{pgfpicture}\kern-20pt%
- \hyperlinksubsectionendprev{\beamer@linkspace{5pt}}%
- \hyperlinksubsectionstart{\beamer@linkspace{5pt}}%
- \hyperlinksubsectionend{\beamer@linkspace{5pt}}%
- \hyperlinksubsectionstartnext{\beamer@linkspace{5pt}}}
-
-\pgfdefobject{beamersectionnavlight}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
-{%
- \pgfpathqmoveto{4bp}{0.5bp}
- \pgfpathqlineto{2bp}{2bp}
- \pgfpathqlineto{4bp}{3.5bp}
- \pgfpathqmoveto{16bp}{0.5bp}
- \pgfpathqlineto{18bp}{2bp}
- \pgfpathqlineto{16bp}{3.5bp}
- \pgfusepathqfill
- \pgfsetlinewidth{0.6pt}
- \pgfpathqmoveto{8bp}{1bp}
- \pgfpathqlineto{11bp}{1bp}
- \pgfpathqmoveto{9bp}{0bp}
- \pgfpathqlineto{12bp}{0bp}
- \pgfusepathqstroke}
-\pgfdefobject{beamersectionnavstrong}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
-{%
- \pgfsetlinewidth{0.6pt}
- \pgfpathqmoveto{8bp}{4bp}
- \pgfpathqlineto{11bp}{4bp}
- \pgfpathqmoveto{9bp}{3bp}
- \pgfpathqlineto{12bp}{3bp}
- \pgfpathqmoveto{9bp}{2bp}
- \pgfpathqlineto{12bp}{2bp}
- \pgfusepathqstroke
-}
-
-\def\insertsectionnavigationsymbol{%
- \begin{pgfpicture}{0pt}{-1.5pt}{20pt}{5.5pt}
- \pgfuseobject{beamersectionnavstrong}%
- \usebeamercolor[fg]{navigation symbols dimmed}
- \pgfuseobject{beamersectionnavlight}%
- \end{pgfpicture}\kern-20pt%
- \hyperlinksectionendprev{\beamer@linkspace{5pt}}%
- \hyperlinksectionstart{\beamer@linkspace{5pt}}%
- \hyperlinksectionend{\beamer@linkspace{5pt}}%
- \hyperlinksectionstartnext{\beamer@linkspace{5pt}}}
-
-\pgfdefobject{beamerdocnavlight}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
-{%
- \pgfpathqmoveto{10bp}{-.5bp}
- \pgfpathqlineto{10bp}{4.5bp}
- \pgfusepathqstroke
-}
-\pgfdefobject{beamerdocnavstrong}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
-{
- \pgfsetlinewidth{0.6pt}
- \pgfpathqmoveto{4bp}{4bp}
- \pgfpathqlineto{7bp}{4bp}
- \pgfpathqmoveto{5bp}{3bp}
- \pgfpathqlineto{8bp}{3bp}
- \pgfpathqmoveto{5bp}{2bp}
- \pgfpathqlineto{8bp}{2bp}
- \pgfpathqmoveto{3bp}{1bp}
- \pgfpathqlineto{7bp}{1bp}
- \pgfpathqmoveto{5bp}{0bp}
- \pgfpathqlineto{8bp}{0bp}
- \pgfpathqmoveto{12bp}{3bp}
- \pgfpathqlineto{15bp}{3bp}
- \pgfpathqmoveto{13bp}{2bp}
- \pgfpathqlineto{16bp}{2bp}
- \pgfpathqmoveto{13bp}{1bp}
- \pgfpathqlineto{16bp}{1bp}
- \pgfusepathqstroke
-}
-
-\pgfdefobject{beamerdocnavstrongsingle}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
-{%
- \pgfsetlinewidth{0.6pt}
- \pgfpathqmoveto{8bp}{4bp}
- \pgfpathqlineto{11bp}{4bp}
- \pgfpathqmoveto{9bp}{3bp}
- \pgfpathqlineto{12bp}{3bp}
- \pgfpathqmoveto{9bp}{2bp}
- \pgfpathqlineto{12bp}{2bp}
- \pgfpathqmoveto{8bp}{1bp}
- \pgfpathqlineto{11bp}{1bp}
- \pgfpathqmoveto{9bp}{0bp}
- \pgfpathqlineto{12bp}{0bp}
- \pgfusepathqstroke%
-}
-
-\def\insertdocnavigationsymbol{%
- \ifx\beamer@startpageofappendix\@empty%
- \begin{pgfpicture}{0pt}{-1.5pt}{20pt}{5.5pt}
- \pgfuseobject{beamerdocnavstrongsingle}%
- \end{pgfpicture}\kern-20pt%
- \hyperlinkpresentationstart{\beamer@linkspace{9pt}}%
- \hyperlinkpresentationend{\beamer@linkspace{11pt}}%
- \else%
- \begin{pgfpicture}{0pt}{-1.5pt}{20pt}{5.5pt}
- \pgfuseobject{beamerdocnavstrong}%
- \usebeamercolor[fg]{navigation symbols dimmed}
- \pgfuseobject{beamerdocnavlight}%
- \end{pgfpicture}\kern-20pt%
- \hyperlinkpresentationstart{\beamer@linkspace{5pt}}%
- \hyperlinkpresentationend{\beamer@linkspace{5pt}}%
- \hyperlinkappendixstart{\beamer@linkspace{3.5pt}}%
- \hyperlinkappendixend{\beamer@linkspace{6.5pt}}%
- \fi}
-
-\pgfdefobject{beamerbackfindforwardnav}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
-{
- % search symbol
- \pgfsetlinewidth{0.6pt}
- \pgfpathqmoveto{10.4bp}{1.6bp}
- \pgfpathqlineto{12bp}{0bp}
- \pgfusepathqstroke
- \pgfsetlinewidth{0.4pt}
- \pgfpathcircle{\pgfpoint{9.5pt}{2.5pt}}{1.2pt}
- \pgfusepathqstroke
- % left arrow
- \pgfsetroundcap
- \pgfpathqmoveto{4bp}{0bp}
- \pgfpathqcurveto{5.1pt}{0pt}{6bp}{0.9bp}{6bp}{2bp}
- \pgfpathqcurveto{6bp}{3.1bp}{5.1bp}{4bp}{4bp}{4bp}
- \pgfpathqcurveto{2.9bp}{4bp}{2bp}{3.1bp}{2bp}{2bp}
- \pgfpathqmoveto{3.2bp}{2.6bp}
- \pgfpathqlineto{2bp}{1.6bp}
- \pgfpathqlineto{0.8bp}{2.6bp}
- % right arrow
- \pgfpathqmoveto{16bp}{0bp}
- \pgfpathqcurveto{14.9bp}{0bp}{14bp}{0.9bp}{14bp}{2bp}
- \pgfpathqcurveto{14bp}{3.1bp}{14.9bp}{4bp}{16bp}{4bp}
- \pgfpathqcurveto{17.1bp}{4bp}{18bp}{3.1bp}{18bp}{2bp}
- \pgfpathqmoveto{19.2bp}{2.6bp}
- \pgfpathqlineto{18bp}{1.6bp}
- \pgfpathqlineto{16.8bp}{2.6bp}
- \pgfusepathqstroke
-}
-
-\def\insertbackfindforwardnavigationsymbol{%
- \begin{pgfpicture}{0pt}{-1.5pt}{20pt}{5.5pt}
- \pgfuseobject{beamerbackfindforwardnav}%
- \end{pgfpicture}\kern-20pt%
- \Acrobatmenu{GoBack}{\beamer@linkspace{7pt}}%
- \Acrobatmenu{Find}{\beamer@linkspace{6pt}}%
- \Acrobatmenu{GoForward}{\beamer@linkspace{7pt}}}
-
-
+\input{beamerbasenavigationsymbols}
%
% User Buttons
diff --git a/macros/latex/contrib/beamer/base/beamerbasenavigationsymbols.tex b/macros/latex/contrib/beamer/base/beamerbasenavigationsymbols.tex
new file mode 100644
index 0000000000..b8d2081a76
--- /dev/null
+++ b/macros/latex/contrib/beamer/base/beamerbasenavigationsymbols.tex
@@ -0,0 +1,246 @@
+% Copyright 2003--2007 by Till Tantau
+% Copyright 2010 by Vedran Mileti\'c
+% Copyright 2012--2015 by Vedran Mileti\'c, Joseph Wright
+% Copyright 2017,2018 by Louis Stuart, Joseph Wright
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/licenses/LICENSE for more details.
+
+\pgfdefobject{beamerslidenavlight}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
+ {\pgfpathqmoveto{4bp}{0.5bp}
+ \pgfpathqlineto{2bp}{2bp}
+ \pgfpathqlineto{4bp}{3.5bp}
+ \pgfusepathqfill
+ \pgfpathqmoveto{16bp}{0.5bp}
+ \pgfpathqlineto{18bp}{2bp}
+ \pgfpathqlineto{16bp}{3.5bp}
+ \pgfusepathqfill}
+\pgfdefobject{beamerslidenavstrong}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
+{%
+ \pgfpathrectangle{\pgfpoint{8.3pt}{0.8pt}}{\pgfpoint{3.4pt}{2.4pt}}%
+ \pgfusepathqstroke%
+}
+
+\def\insertslidenavigationsymbol{%
+ \begin{pgfpicture}{0pt}{-1.5pt}{20pt}{5.5pt}
+ \pgfuseobject{beamerslidenavstrong}%
+ \usebeamercolor[fg]{navigation symbols dimmed}
+ \pgfuseobject{beamerslidenavlight}%
+ \end{pgfpicture}\kern-20pt%
+ \hyperlinkslideprev{\beamer@linkspace{6pt}}%
+ \Acrobatmenu{GoToPage}{\beamer@linkspace{8pt}}%
+ \hyperlinkslidenext{\beamer@linkspace{6pt}}}
+
+\pgfdefobject{beamerframenavlight}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
+ {\pgfpathqmoveto{4bp}{0.5bp}
+ \pgfpathqlineto{2bp}{2bp}
+ \pgfpathqlineto{4bp}{3.5bp}
+ \pgfpathqmoveto{16bp}{0.5bp}
+ \pgfpathqlineto{18bp}{2bp}
+ \pgfpathqlineto{16bp}{3.5bp}
+ \pgfusepathqfill}
+\pgfdefobject{beamerframenavstrong}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
+{%
+ \pgfpathrectangle{\pgfpoint{7pt}{0pt}}{\pgfpoint{3.4pt}{2.4pt}}
+ \pgfpathqmoveto{7.8bp}{2.4bp}
+ \pgfpathqlineto{7.8bp}{3.2bp}
+ \pgfpathqlineto{11.2bp}{3.2bp}
+ \pgfpathqlineto{11.2bp}{.8bp}
+ \pgfpathqlineto{10.4bp}{.8bp}
+ \pgfpathqmoveto{8.6bp}{3.2bp}
+ \pgfpathqlineto{8.6bp}{4bp}
+ \pgfpathqlineto{12bp}{4bp}
+ \pgfpathqlineto{12bp}{1.6bp}
+ \pgfpathqlineto{11.2bp}{1.6bp}
+ \pgfusepathqstroke}
+
+\def\insertframenavigationsymbol{%
+ \begin{pgfpicture}{0pt}{-1.5pt}{20pt}{5.5pt}
+ \pgfuseobject{beamerframenavstrong}%
+ \usebeamercolor[fg]{navigation symbols dimmed}
+ \pgfuseobject{beamerframenavlight}%
+ \end{pgfpicture}\kern-20pt%
+ \hyperlinkframeendprev{\beamer@linkspace{5pt}}%
+ \hyperlinkframestart{\beamer@linkspace{5pt}}%
+ \hyperlinkframeend{\beamer@linkspace{5pt}}%
+ \hyperlinkframestartnext{\beamer@linkspace{5pt}}}
+
+\pgfdefobject{beamersubsectionnavlight}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
+{%
+ \pgfpathqmoveto{4bp}{0.5bp}
+ \pgfpathqlineto{2bp}{2bp}
+ \pgfpathqlineto{4bp}{3.5bp}
+ \pgfpathqmoveto{16bp}{0.5bp}
+ \pgfpathqlineto{18bp}{2bp}
+ \pgfpathqlineto{16bp}{3.5bp}
+ \pgfusepathqfill
+ \pgfsetlinewidth{0.6pt}
+ \pgfpathqmoveto{8bp}{4bp}
+ \pgfpathqlineto{11bp}{4bp}
+ \pgfpathqmoveto{9bp}{2bp}
+ \pgfpathqlineto{12bp}{2bp}
+ \pgfpathqmoveto{8bp}{1bp}
+ \pgfpathqlineto{11bp}{1bp}
+ \pgfpathqmoveto{9bp}{0bp}
+ \pgfpathqlineto{12bp}{0bp}
+ \pgfusepathqstroke}
+\pgfdefobject{beamersubsectionnavstrong}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
+{%
+ \pgfsetlinewidth{0.6pt}
+ \pgfpathqmoveto{9bp}{3bp}
+ \pgfpathqlineto{12bp}{3bp}
+ \pgfusepathqstroke}
+
+\def\insertsubsectionnavigationsymbol{%
+ \begin{pgfpicture}{0pt}{-1.5pt}{20pt}{5.5pt}
+ \pgfuseobject{beamersubsectionnavstrong}%
+ \usebeamercolor[fg]{navigation symbols dimmed}
+ \pgfuseobject{beamersubsectionnavlight}%
+ \end{pgfpicture}\kern-20pt%
+ \hyperlinksubsectionendprev{\beamer@linkspace{5pt}}%
+ \hyperlinksubsectionstart{\beamer@linkspace{5pt}}%
+ \hyperlinksubsectionend{\beamer@linkspace{5pt}}%
+ \hyperlinksubsectionstartnext{\beamer@linkspace{5pt}}}
+
+\pgfdefobject{beamersectionnavlight}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
+{%
+ \pgfpathqmoveto{4bp}{0.5bp}
+ \pgfpathqlineto{2bp}{2bp}
+ \pgfpathqlineto{4bp}{3.5bp}
+ \pgfpathqmoveto{16bp}{0.5bp}
+ \pgfpathqlineto{18bp}{2bp}
+ \pgfpathqlineto{16bp}{3.5bp}
+ \pgfusepathqfill
+ \pgfsetlinewidth{0.6pt}
+ \pgfpathqmoveto{8bp}{1bp}
+ \pgfpathqlineto{11bp}{1bp}
+ \pgfpathqmoveto{9bp}{0bp}
+ \pgfpathqlineto{12bp}{0bp}
+ \pgfusepathqstroke}
+\pgfdefobject{beamersectionnavstrong}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
+{%
+ \pgfsetlinewidth{0.6pt}
+ \pgfpathqmoveto{8bp}{4bp}
+ \pgfpathqlineto{11bp}{4bp}
+ \pgfpathqmoveto{9bp}{3bp}
+ \pgfpathqlineto{12bp}{3bp}
+ \pgfpathqmoveto{9bp}{2bp}
+ \pgfpathqlineto{12bp}{2bp}
+ \pgfusepathqstroke
+}
+
+\def\insertsectionnavigationsymbol{%
+ \begin{pgfpicture}{0pt}{-1.5pt}{20pt}{5.5pt}
+ \pgfuseobject{beamersectionnavstrong}%
+ \usebeamercolor[fg]{navigation symbols dimmed}
+ \pgfuseobject{beamersectionnavlight}%
+ \end{pgfpicture}\kern-20pt%
+ \hyperlinksectionendprev{\beamer@linkspace{5pt}}%
+ \hyperlinksectionstart{\beamer@linkspace{5pt}}%
+ \hyperlinksectionend{\beamer@linkspace{5pt}}%
+ \hyperlinksectionstartnext{\beamer@linkspace{5pt}}}
+
+\pgfdefobject{beamerdocnavlight}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
+{%
+ \pgfpathqmoveto{10bp}{-.5bp}
+ \pgfpathqlineto{10bp}{4.5bp}
+ \pgfusepathqstroke
+}
+\pgfdefobject{beamerdocnavstrong}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
+{
+ \pgfsetlinewidth{0.6pt}
+ \pgfpathqmoveto{4bp}{4bp}
+ \pgfpathqlineto{7bp}{4bp}
+ \pgfpathqmoveto{5bp}{3bp}
+ \pgfpathqlineto{8bp}{3bp}
+ \pgfpathqmoveto{5bp}{2bp}
+ \pgfpathqlineto{8bp}{2bp}
+ \pgfpathqmoveto{3bp}{1bp}
+ \pgfpathqlineto{7bp}{1bp}
+ \pgfpathqmoveto{5bp}{0bp}
+ \pgfpathqlineto{8bp}{0bp}
+ \pgfpathqmoveto{12bp}{3bp}
+ \pgfpathqlineto{15bp}{3bp}
+ \pgfpathqmoveto{13bp}{2bp}
+ \pgfpathqlineto{16bp}{2bp}
+ \pgfpathqmoveto{13bp}{1bp}
+ \pgfpathqlineto{16bp}{1bp}
+ \pgfusepathqstroke
+}
+
+\pgfdefobject{beamerdocnavstrongsingle}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
+{%
+ \pgfsetlinewidth{0.6pt}
+ \pgfpathqmoveto{8bp}{4bp}
+ \pgfpathqlineto{11bp}{4bp}
+ \pgfpathqmoveto{9bp}{3bp}
+ \pgfpathqlineto{12bp}{3bp}
+ \pgfpathqmoveto{9bp}{2bp}
+ \pgfpathqlineto{12bp}{2bp}
+ \pgfpathqmoveto{8bp}{1bp}
+ \pgfpathqlineto{11bp}{1bp}
+ \pgfpathqmoveto{9bp}{0bp}
+ \pgfpathqlineto{12bp}{0bp}
+ \pgfusepathqstroke%
+}
+
+\def\insertdocnavigationsymbol{%
+ \ifx\beamer@startpageofappendix\@empty%
+ \begin{pgfpicture}{0pt}{-1.5pt}{20pt}{5.5pt}
+ \pgfuseobject{beamerdocnavstrongsingle}%
+ \end{pgfpicture}\kern-20pt%
+ \hyperlinkpresentationstart{\beamer@linkspace{9pt}}%
+ \hyperlinkpresentationend{\beamer@linkspace{11pt}}%
+ \else%
+ \begin{pgfpicture}{0pt}{-1.5pt}{20pt}{5.5pt}
+ \pgfuseobject{beamerdocnavstrong}%
+ \usebeamercolor[fg]{navigation symbols dimmed}
+ \pgfuseobject{beamerdocnavlight}%
+ \end{pgfpicture}\kern-20pt%
+ \hyperlinkpresentationstart{\beamer@linkspace{5pt}}%
+ \hyperlinkpresentationend{\beamer@linkspace{5pt}}%
+ \hyperlinkappendixstart{\beamer@linkspace{3.5pt}}%
+ \hyperlinkappendixend{\beamer@linkspace{6.5pt}}%
+ \fi}
+
+\pgfdefobject{beamerbackfindforwardnav}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{20pt}{5pt}}
+{
+ % search symbol
+ \pgfsetlinewidth{0.6pt}
+ \pgfpathqmoveto{10.4bp}{1.6bp}
+ \pgfpathqlineto{12bp}{0bp}
+ \pgfusepathqstroke
+ \pgfsetlinewidth{0.4pt}
+ \pgfpathcircle{\pgfpoint{9.5pt}{2.5pt}}{1.2pt}
+ \pgfusepathqstroke
+ % left arrow
+ \pgfsetroundcap
+ \pgfpathqmoveto{4bp}{0bp}
+ \pgfpathqcurveto{5.1pt}{0pt}{6bp}{0.9bp}{6bp}{2bp}
+ \pgfpathqcurveto{6bp}{3.1bp}{5.1bp}{4bp}{4bp}{4bp}
+ \pgfpathqcurveto{2.9bp}{4bp}{2bp}{3.1bp}{2bp}{2bp}
+ \pgfpathqmoveto{3.2bp}{2.6bp}
+ \pgfpathqlineto{2bp}{1.6bp}
+ \pgfpathqlineto{0.8bp}{2.6bp}
+ % right arrow
+ \pgfpathqmoveto{16bp}{0bp}
+ \pgfpathqcurveto{14.9bp}{0bp}{14bp}{0.9bp}{14bp}{2bp}
+ \pgfpathqcurveto{14bp}{3.1bp}{14.9bp}{4bp}{16bp}{4bp}
+ \pgfpathqcurveto{17.1bp}{4bp}{18bp}{3.1bp}{18bp}{2bp}
+ \pgfpathqmoveto{19.2bp}{2.6bp}
+ \pgfpathqlineto{18bp}{1.6bp}
+ \pgfpathqlineto{16.8bp}{2.6bp}
+ \pgfusepathqstroke
+}
+
+\def\insertbackfindforwardnavigationsymbol{%
+ \begin{pgfpicture}{0pt}{-1.5pt}{20pt}{5.5pt}
+ \pgfuseobject{beamerbackfindforwardnav}%
+ \end{pgfpicture}\kern-20pt%
+ \Acrobatmenu{GoBack}{\beamer@linkspace{7pt}}%
+ \Acrobatmenu{Find}{\beamer@linkspace{6pt}}%
+ \Acrobatmenu{GoForward}{\beamer@linkspace{7pt}}}
diff --git a/macros/latex/contrib/beamer/doc/beamerexample-conference-talk.pdf b/macros/latex/contrib/beamer/doc/beamerexample-conference-talk.pdf
index e18033ad3c..e4d84100e2 100644
--- a/macros/latex/contrib/beamer/doc/beamerexample-conference-talk.pdf
+++ b/macros/latex/contrib/beamer/doc/beamerexample-conference-talk.pdf
Binary files differ
diff --git a/macros/latex/contrib/beamer/doc/beamerexample-lecture-beamer-version.pdf b/macros/latex/contrib/beamer/doc/beamerexample-lecture-beamer-version.pdf
index cd5a3421d6..ddbf2d0f2d 100644
--- a/macros/latex/contrib/beamer/doc/beamerexample-lecture-beamer-version.pdf
+++ b/macros/latex/contrib/beamer/doc/beamerexample-lecture-beamer-version.pdf
Binary files differ
diff --git a/macros/latex/contrib/beamer/doc/beamerexample-lecture-print-version.pdf b/macros/latex/contrib/beamer/doc/beamerexample-lecture-print-version.pdf
index 2555657089..3dd19e6a9f 100644
--- a/macros/latex/contrib/beamer/doc/beamerexample-lecture-print-version.pdf
+++ b/macros/latex/contrib/beamer/doc/beamerexample-lecture-print-version.pdf
Binary files differ
diff --git a/macros/latex/contrib/beamer/doc/beamerug-fonts.tex b/macros/latex/contrib/beamer/doc/beamerug-fonts.tex
index 1d044cc6f2..e9801d3f94 100644
--- a/macros/latex/contrib/beamer/doc/beamerug-fonts.tex
+++ b/macros/latex/contrib/beamer/doc/beamerug-fonts.tex
@@ -193,7 +193,7 @@ To use a \beamer-font, you can use the command |\usebeamerfont|. Inside the temp
\example |\usebeamerfont{frametitle}|
In the unstarred version of this command, the font is changed according to the attributes specified in the \meta{beamer-font name}, but unspecified attributes remain unchanged. For example, if the font specifies that the font should be ``bold,'' but specifies nothing else, and if the current font is large, then |\usebeamerfont| causes the current font to become large and bold.
- In the starred version of this command, the font is first reset before the font's attributes are applied. Thus, in the above example of a \beamer-font having only the attribute ``boldface'' set, saying |\usebeamerfont*| will \emph{always} cause the current font to become a normal-size, normal-shape, bold, default-family font.
+ In the starred version of this command, the font is first reset before the font's attributes are applied. Thus, in the above example of a \beamer-font having only the attribute ``boldface'' set, saying |\usebeamerfont*| will \emph{always} cause the current font to become a normal-shape, bold, default-family font (the font size won't be reset).
\end{command}
diff --git a/macros/latex/contrib/beamer/doc/beamerug-frames.tex b/macros/latex/contrib/beamer/doc/beamerug-frames.tex
index 6084846432..dff2440e7e 100644
--- a/macros/latex/contrib/beamer/doc/beamerug-frames.tex
+++ b/macros/latex/contrib/beamer/doc/beamerug-frames.tex
@@ -385,7 +385,7 @@ Figure \ref{fig:framelayers} shows an overview of the order in which the differe
}
\end{tikzpicture}
-\caption{Diagram of the order in which the different frame components are drawn (Image originally created by \href{https://tex.stackexchange.com/a/27302}{Andrew Stacey})}
+\caption{Diagram of the order in which the different frame components are drawn (image originally created by \href{https://tex.stackexchange.com/a/27302}{Andrew Stacey})}
\label{fig:framelayers}
\end{figure}
@@ -934,47 +934,37 @@ By clicking on the document title in a navigation bar (not all themes show it),
\subsubsection{The Navigation Symbols}
\label{section-navigation-symbols}
-Navigation symbols are small icons that are shown on every slide in |beamer| mode by default. The following symbols are shown:
-\begin{enumerate}
-\item
- A slide icon, which is depicted as a single rectangle. To the left and right of this symbol, a left and right arrow are shown.
-\item
- A frame icon, which is depicted as three slide icons ``stacked on top of each other''. This symbol is framed by arrows.
-\item
- A subsection icon, which is depicted as a highlighted subsection entry in a table of contents. This symbol is framed by arrows.
-\item
- A section icon, which is depicted as a highlighted section entry (together with all subsections) in a table of contents. This symbol is framed by arrows.
-\item
- A presentation icon, which is depicted as a completely highlighted table of contents.
-\item
- An appendix icon, which is depicted as a completely highlighted table of contents consisting of only one section. (This icon is only shown if there is an appendix.)
-\item
- Back and forward icons, depicted as circular arrows.
-\item
- A ``search'' or ``find'' icon, depicted as a detective's magnifying glass.
-\end{enumerate}
-
-Clicking on the left arrow next to an icon always jumps to (the last slide of) the previous slide, frame, subsection, or section. Clicking on the right arrow next to an icon always jumps to (the first slide of) the next slide, frame, subsection, or section.
+\begingroup
+\makeatletter
+\newcommand{\beamer@linkspace}[1]{}
+\renewcommand{\Acrobatmenu}[2]{}
+\renewcommand{\usebeamercolor}[2][]{\color{.!20}}
+\makeatother
-Clicking \emph{on} any of these icons has different effects:
-\begin{enumerate}
-\item
+Navigation symbols are small icons that are shown on every slide in |beamer| mode by default. The following symbols are shown:
+\begin{description}
+\item[{\makebox[0.7cm][l]{\insertslidenavigationsymbol}}]
+ A slide icon, which is depicted as a single rectangle. To the left and right of this symbol, a left and right arrow are shown.\newline
If supported by the viewer application, clicking on a slide icon pops up a window that allows you to enter a slide number to which you wish to jump.
-\item
+\item[{\makebox[0.7cm][l]{\insertframenavigationsymbol}}]
+ A frame icon, which is depicted as three slide icons ``stacked on top of each other''. This symbol is framed by arrows.\newline
Clicking on the left side of a frame icon will jump to the first slide of the frame, clicking on the right side will jump to the last slide of the frame (this can be useful for skipping overlays).
-\item
+\item[{\makebox[0.7cm][l]{\insertsubsectionnavigationsymbol}}]
+ A subsection icon, which is depicted as a highlighted subsection entry in a table of contents. This symbol is framed by arrows.\newline
Clicking on the left side of a subsection icon will jump to the first slide of the subsection, clicking on the right side will jump to the last slide of the subsection.
-\item
+\item[{\makebox[0.7cm][l]{\insertsectionnavigationsymbol}}]
+ A section icon, which is depicted as a highlighted section entry (together with all subsections) in a table of contents. This symbol is framed by arrows.\newline
Clicking on the left side of a section icon will jump to the first slide of the section, clicking on the right side will jump to the last slide of the section.
-\item
- Clicking on the left side of the presentation icon will jump to the first slide, clicking on the right side will jump to the last slide of the presentation. However, this does \emph{not} include the appendix.
-\item
- Clicking on the left side of the appendix icon will jump to the first slide of the appendix, clicking on the right side will jump to the last slide of the appendix.
-\item
- If supported by the viewer application, clicking on the back and forward symbols jumps to the previously visited slides.
-\item
- If supported by the viewer application, clicking on the search icon pops up a window that allows you to enter a search string. If found, the viewer application will jump to this string.
-\end{enumerate}
+\item[{\makebox[0.7cm][l]{\insertdocnavigationsymbol}}]
+ A presentation icon, which is depicted as a completely highlighted table of contents and an appendix icon, which is depicted as a completely highlighted table of contents consisting of only one section. (This icon is only shown if there is an appendix.)\newline
+ Clicking on the left side of the presentation icon will jump to the first slide, clicking on the right side will jump to the last slide of the presentation. However, this does \emph{not} include the appendix. Clicking on the left side of the appendix icon will jump to the first slide of the appendix, clicking on the right side will jump to the last slide of the appendix.
+\item[{\makebox[0.7cm][l]{\insertbackfindforwardnavigationsymbol}}]
+ Back and forward icons, depicted as circular arrows and a ``search'' or ``find'' icon, depicted as a detective's magnifying glass.\newline
+ If supported by the viewer application, clicking on the back and forward symbols jumps to the previously visited slides and clicking on the search icon pops up a window that allows you to enter a search string. If found, the viewer application will jump to this string.
+\end{description}
+\endgroup
+
+Clicking on the left arrow next to an icon always jumps to (the last slide of) the previous slide, frame, subsection, or section. Clicking on the right arrow next to an icon always jumps to (the first slide of) the next slide, frame, subsection, or section.
You can reduce the number of icons that are shown or their layout by adjusting the |navigation symbols| template.
diff --git a/macros/latex/contrib/beamer/doc/beamerug-globalstructure.tex b/macros/latex/contrib/beamer/doc/beamerug-globalstructure.tex
index 175ec3ab15..9058356c1e 100644
--- a/macros/latex/contrib/beamer/doc/beamerug-globalstructure.tex
+++ b/macros/latex/contrib/beamer/doc/beamerug-globalstructure.tex
@@ -608,7 +608,8 @@ sectionstyle=show/shaded,subsectionstyle=show/show/shaded
\example
|subsectionstyle=show/shaded/hide| causes all subsections outside the current section to be suppressed and only the current subsection in the current section to be highlighted.
\item
- \declare{|subsubsectionstyle=|\meta{style for current subsubsection}|/|\meta{style for other subsubsections in current subsection}|/|\\\meta{style for subsubsections in other subsections in current section}|/|\meta{style for subsubsections in other subsections in other sections}} specifies how subsubsections should be displayed. The same styles as for the |sectionstyle| option may be given. You can omit the last style, in which case the second also applies to the last, and you can omit the last two, in which case the first applies to all.
+ \declare{|subsubsectionstyle=|\meta{style for current subsubsection}|/|\meta{style for other subsubsections in current subsection}|/|\\\meta{style for subsubsections in other subsections in current section}|/|\meta{style for subsubsections in other subsections in other sections}} specifies how subsubsections should be displayed.
+ The same styles as for the |sectionstyle| option may be given. You can omit styles from the end of the list, in which case the last given style will also be applied to the omitted styles.
This option operates in an analogous manner to |subsectionstyle|.
\end{itemize}
diff --git a/macros/latex/contrib/beamer/doc/beamerug-introduction.tex b/macros/latex/contrib/beamer/doc/beamerug-introduction.tex
index 317ab826bd..e31c838a23 100644
--- a/macros/latex/contrib/beamer/doc/beamerug-introduction.tex
+++ b/macros/latex/contrib/beamer/doc/beamerug-introduction.tex
@@ -105,20 +105,21 @@ This user's guide contains descriptions of all ``public'' commands, environments
Unfortunately, it is not quite trivial to come up with a good definition for some templates. Fortunately, there are often \emph{predefined options} for a template. These are indicated like this:
\begin{itemize}
- \itemoption{square}{}
- causes a small square to be used to render the template.
- \itemoption{circle}{\marg{radius}}
- causes circles of the given radius to be used to render the template.
+ \itemoption{rose}{}
+ causes a rose be used to render the template.
+ \itemoption{shamrock}{\marg{number of leaves}}
+ causes a shamrock with a given number of leaves to be used to render the template.
\end{itemize}
You can install such a predefined option like this:
\begin{verbatim}
-\setbeamertemplate{some beamer element}[square]
-%% Now squares are used
+\setbeamertemplate{some beamer element}[rose]
+%% Now a rose is used
-\setbeamertemplate{some beamer element}[circle]{3pt}
-%% Now a circle is used
+\setbeamertemplate{some beamer element}[shamrock]{3}
+%% Now a shamrock is used
\end{verbatim}
+ Note that not all templates have predefined options and that not all templates with predefined options allow an additional argument.
\beamer-colors are explained in Section~\ref{section-colors}. Here is the essence: To change the foreground of the color to, say, red, use
\begin{verbatim}
diff --git a/macros/latex/contrib/beamer/doc/beamerug-overlays.tex b/macros/latex/contrib/beamer/doc/beamerug-overlays.tex
index 82767756f5..e21d605d9d 100644
--- a/macros/latex/contrib/beamer/doc/beamerug-overlays.tex
+++ b/macros/latex/contrib/beamer/doc/beamerug-overlays.tex
@@ -508,14 +508,14 @@ This section explains how to define new commands that are overlay specification-
\end{actionenv}}
\begin{frame}
- \begin{myboldblock}<2>
+ \begin{myboldblock}{A title for the theorem}<2>
This theorem is shown only on the second slide.
\end{myboldblock}
\end{frame}
\end{verbatim}
\example
- Text in the following environment is normally bold and italic on non-specified slides:
+ Text in the following environment is bold on specified slides and of normal weight on non-specified slides:
\begin{verbatim}
\newenvironment<>{boldornormal}
{\begin{altenv}#1
@@ -545,13 +545,15 @@ This section explains how to define new commands that are overlay specification-
\end{verbatim}
\end{command}
-In a similar way |\NewDocumentCommand|, |\NewDocumentEnvironment| etc. can be used to define overlay aware commands and environments. The overlay argument can be specified via |d<>| (without default value) or |D<>{}| (with default value) type arguments.
+In a similar way |\NewDocumentCommand|, |\NewDocumentEnvironment| etc.\ can be used to define overlay aware commands and environments. The overlay argument can be specified via |d<>| (without default value) or |D<>{}| (with default value) type arguments.
\example
\begin{verbatim}
\NewDocumentCommand{\makeblue}{D<>{.-} m}{{\color<#1>{blue}#2}}
\end{verbatim}
+Note that by using |\NewDocumentCommand|, |\NewDocumentEnvironment| etc.\ the original definition of the command or environment won't be retained as |\beameroriginal{...}| or |\begin{original...}|.
+
The following two commands can be used to ensure that a certain counter is automatically reset on subsequent slides of a frame. This is necessary for example for the equation count. You might want this count to be increased from frame to frame, but certainly not from overlay slide to overlay slide. For equation counters and footnote counters (you should not use footnotes), these commands have already been invoked.
\begin{command}{\resetcounteronoverlays\marg{counter name}}
diff --git a/macros/latex/contrib/beamer/doc/beameruserguide.pdf b/macros/latex/contrib/beamer/doc/beameruserguide.pdf
index 2c93b611ac..3939ee7a71 100644
--- a/macros/latex/contrib/beamer/doc/beameruserguide.pdf
+++ b/macros/latex/contrib/beamer/doc/beameruserguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/beamer/doc/beameruserguide.tex b/macros/latex/contrib/beamer/doc/beameruserguide.tex
index 1380e2307d..cdca8af0e8 100644
--- a/macros/latex/contrib/beamer/doc/beameruserguide.tex
+++ b/macros/latex/contrib/beamer/doc/beameruserguide.tex
@@ -13,7 +13,7 @@
\documentclass{ltxdoc}
-\def\beamerugversion{3.68}
+\def\beamerugversion{3.69}
\def\beamerugpgfversion{3.1.7}
\def\beamerugxcolorversion{2.00}
@@ -29,7 +29,9 @@
\usepackage[left=2.25cm,right=2.25cm,top=2.5cm,bottom=2.5cm,nohead]{geometry}
\usepackage{translator}
\usepackage{tikz}
+\usepackage{beamerarticle}
+\input{beamerbasenavigationsymbols}
\input{beamerug-macros}
\makeindex
diff --git a/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic1.jpg b/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic1.jpg
index a97f0e3d65..7fbce74d3e 100644
--- a/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic1.jpg
+++ b/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic1.jpg
Binary files differ
diff --git a/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic2.jpg b/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic2.jpg
index 78dada67f5..958a7f288b 100644
--- a/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic2.jpg
+++ b/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic2.jpg
Binary files differ
diff --git a/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic3.jpg b/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic3.jpg
index 8c3282ad20..67c4bce95c 100644
--- a/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic3.jpg
+++ b/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic3.jpg
Binary files differ
diff --git a/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic4.jpg b/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic4.jpg
index 64adaf5d9b..fd6c9c1b22 100644
--- a/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic4.jpg
+++ b/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic4.jpg
Binary files differ
diff --git a/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic5.jpg b/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic5.jpg
index 1e203002e8..0a18dc5a73 100644
--- a/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic5.jpg
+++ b/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic5.jpg
Binary files differ
diff --git a/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic6.jpg b/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic6.jpg
index 9a2d23dc25..fb451d9195 100644
--- a/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic6.jpg
+++ b/macros/latex/contrib/beamer/doc/examples/a-lecture/beamerexample-lecture-pic6.jpg
Binary files differ
diff --git a/macros/latex/contrib/hyperxmp/README b/macros/latex/contrib/hyperxmp/README
index 93a2733315..22a0b26a9a 100644
--- a/macros/latex/contrib/hyperxmp/README
+++ b/macros/latex/contrib/hyperxmp/README
@@ -47,7 +47,7 @@ Building hyperxmp.pdf is a little more involved:
Copyright and license
=====================
-Copyright (C) 2011-2020 Scott Pakin
+Copyright (C) 2011-2023 Scott Pakin
This file may be distributed and/or modified under the conditions of
the LaTeX Project Public License, either version 1.3c of this license
diff --git a/macros/latex/contrib/hyperxmp/einstein-xmp.tex b/macros/latex/contrib/hyperxmp/einstein-xmp.tex
index 7fad01f38a..323937cc4a 100644
--- a/macros/latex/contrib/hyperxmp/einstein-xmp.tex
+++ b/macros/latex/contrib/hyperxmp/einstein-xmp.tex
@@ -21,7 +21,6 @@
xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/"
xmlns:pdfuaid="http://www.aiim.org/pdfua/ns/id/"
xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/"
- xmlns:pdfxid="http://www.npes.org/pdfx/ns/id/"
xmlns:prism="http://prismstandard.org/namespaces/basic/3.0/"
xmlns:jav="http://www.niso.org/schemas/jav/1.0/"
xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
diff --git a/macros/latex/contrib/hyperxmp/hyperxmp-add-bytecount.pl b/macros/latex/contrib/hyperxmp/hyperxmp-add-bytecount.pl
index 8d965a63f5..d3fb7e59b1 100755
--- a/macros/latex/contrib/hyperxmp/hyperxmp-add-bytecount.pl
+++ b/macros/latex/contrib/hyperxmp/hyperxmp-add-bytecount.pl
@@ -8,7 +8,7 @@ use warnings;
# hyperxmp-add-bytecount #
# Adds/updates byteCount specification in XMP packet in pdf file(s) #
# made by hyperxmp, with byteCount = file size. #
-# Copyright (C) 2020 John Collins <jcc8@psu.edu> #
+# Copyright (C) 2020-2022 John Collins <jcc8@psu.edu> #
# and Scott Pakin, <scott+hyxmp@pakin.org> #
# #
# This program may be distributed and/or modified under the conditions #
diff --git a/macros/latex/contrib/hyperxmp/hyperxmp.dtx b/macros/latex/contrib/hyperxmp/hyperxmp.dtx
index 4fad6b29d0..ea0d533429 100644
--- a/macros/latex/contrib/hyperxmp/hyperxmp.dtx
+++ b/macros/latex/contrib/hyperxmp/hyperxmp.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2011-2020 by Scott Pakin <scott+hyxmp@pakin.org>
+% Copyright (C) 2011-2023 by Scott Pakin <scott+hyxmp@pakin.org>
% --------------------------------------------------------------
%
% This file may be distributed and/or modified under the
@@ -22,7 +22,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{hyperxmp}
%<*package>
- [2020/11/22 v5.9 Store hyperref metadata in XMP format]
+ [2022/10/16 v5.11 Store hyperref metadata in XMP format]
%</package>
%
%<*driver>
@@ -76,7 +76,7 @@
pdftitle={The hyperxmp package},
pdfsubject={LaTeX2e support for XMP metadata},
pdfkeywords={LaTeX, embedded metadata, XMP, PDF, copyright, license, comments},
- pdfcopyright={Copyright (C) 2011-2020, Scott Pakin},
+ pdfcopyright={Copyright (C) 2011-2023, Scott Pakin},
pdflicenseurl={http://www.latex-project.org/lppl/},
pdfcaptionwriter={Scott Pakin},
pdfcontactemail={scott+hyxmp@pakin.org},
@@ -98,25 +98,40 @@
bookmarksnumbered
}
+% Redefine \changes to properly sort v5.10 *after* v5.9.
+\makeatletter
+\let\orig@changes=\changes
+\def\discard@suffix#1\relax{}
+\def\pad@minor@ver v#1.#2\relax{%
+ \afterassignment\discard@suffix
+ \@tempcnta=#2\relax
+ \edef\new@change@ver{%
+ v#1.%
+ \ifnum\@tempcnta<10
+ 0#2
+ \else
+ #2
+ \fi
+ }%
+}
+\renewcommand{\changes}[2]{%
+ \pad@minor@ver#1\relax
+ \orig@changes{\new@change@ver=#1}{#2}%
+}
+\makeatother
+
\begin{document}
\DocInput{hyperxmp.dtx}
\Needspace{10\baselineskip}
- \phantomsection\addcontentsline{toc}{section}{Change History}
+ \renewcommand*{\glossaryname}{Change History}
\PrintChanges
- \makeatletter
- \let\orig@index@prologue=\index@prologue
- \def\index@prologue{%
- \phantomsection\addcontentsline{toc}{section}{Index}
- \orig@index@prologue
- }%
- \makeatother
\Needspace{12\baselineskip}
\PrintIndex
\end{document}
%</driver>
% \fi
%
-% \CheckSum{2836}
+% \CheckSum{2844}
%
% \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
@@ -203,11 +218,12 @@
% \DoNotIndex{\@ifpackageloaded,\@ifundefined,\@nil,\@secondoftwo}
% \DoNotIndex{\@tempcnta,\@tempcntb,\MessageBreak,\advance,\afterassignment}
% \DoNotIndex{\aftergroup,\begin,\begingroup,\bgroup,\catcode,\csname,\def}
-% \DoNotIndex{\divide,\edef,\egroup,\else,\end,\endcsname,\endgroup}
-% \DoNotIndex{\expandafter,\fi,\futurelet,\g@addto@macro,\gdef,\global,\if}
-% \DoNotIndex{\ifcase,\ifnum,\ifx,\immediate,\lccode,\let,\loop,\lowercase}
-% \DoNotIndex{\multiply,\newcommand,\noexpand,\or,\relax,\repeat,\space}
-% \DoNotIndex{\string,\the,\toks,\uccode,\uppercase,\usepackage,\xdef}
+% \DoNotIndex{\divide,\do,\edef,\egroup,\else,\end,\endcsname,\endgroup}
+% \DoNotIndex{\expandafter,\fi,\futurelet,\g@addto@macro,\gdef,\global}
+% \DoNotIndex{\hbox,\if,\ifcase,\ifnum,\ifx,\immediate,\lccode,\let,\loop}
+% \DoNotIndex{\lowercase,\multiply,\newcommand,\noexpand,\or,\relax,\repeat}
+% \DoNotIndex{\space,\string,\the,\toks,\uccode,\uppercase,\usepackage}
+% \DoNotIndex{\xdef}
%
% ^^A Define a few logical styles.
% \DeclareRobustCommand{\term}[1]{#1\SortIndex{#1}{#1}}
@@ -1114,21 +1130,23 @@
% \item \pdfLaTeX
% \item \LuaLaTeX
% \item \XeLaTeX
-% \item \LaTeX~$+$ Dvipdfm
+% \item \LaTeX~$+$ \term{Dvipdfm}
+% \item \LaTeX~$+$ \Dvips~$+$ \term{Ghostscript}
% \item \LaTeX~$+$ \Dvips~$+$ Adobe Acrobat Distiller
% \end{itemize}
%
% \noindent
-% Unfortunately, the \LaTeX~$+$ \Dvips~$+$ \term{Ghostscript} path
-% doesn't work.
-% \href{http://bugs.ghostscript.com/show_bug.cgi?id=690066}{Ghostscript
-% bug report~\#690066}, closed with ``\textsc{wontfix}'' status on
-% 2012-05-28, explains that \term{Ghostscript} doesn't honor the
-% \pdfterm{Metadata} tag needed to inject a custom \acro{XMP} packet.
-% Instead, \term{Ghostscript} fabricates an \acro{XMP} packet of its own
-% based on the metadata it finds in the \acro{PDF} file's \pdfterm{Info}
-% dictionary (\pdfterm{Author}, \pdfterm{Title}, \pdfterm{Subject}, and
-% \pdfterm{Keywords}).
+% The \LaTeX~$+$ \Dvips~$+$ \term{Ghostscript} path stores the
+% \acro{XMP} packet in a compressed stream, which implies that a
+% \acro{PDF} reader is needed to access it. Ideally, \acro{XMP}
+% metadata should be stored uncompressed so it can be extracted as
+% ordinary text. Unfortunately, as of 2022-10-07, Ghostscript has no
+% plans to support uncompressed metadata streams
+% (\href{https://bugs.ghostscript.com/show_bug.cgi?id=705962}{Ghostscript
+% bug report~\#705962}). It is possible to leave \emph{all} streams
+% uncompressed by passing |-dCompressStreams=false| to \term{Ghostscript}
+% (e.g.,~via the \progname{ps2pdf} wrapper script), but this leads to
+% larger file sizes.
%
% \bigskip
%
@@ -1742,6 +1760,19 @@ sub mycmd {
% \subsection{Initial preparation}
% \label{sec:initial-prep}
%
+% \changes{v5.11}{2022/10/02}{Disable \protect\pkgname{hyperxmp} if
+% \LaTeX3 document metadata is available. Document metadata implies
+% the presence of PDF management, which completely breaks
+% \protect\pkgname{hyperxmp}}
+% \begin{macrocode}
+\IfDocumentMetadataTF{%
+ \PackageWarning
+ {hyperxmp}
+ {Disabling hyperxmp because it is incompatible with PDF management}
+}{}
+\IfDocumentMetadataTF{\endinput}{}
+% \end{macrocode}
+%
% \changes{v1.2}{2011/04/17}{Made the package compatible with \pkgname{ngerman}.
% Thanks to Tobias Mueller for the bug report.}
%
@@ -1772,12 +1803,19 @@ sub mycmd {
% \protect\tex\ back ends that provide it. Thanks to Nelson Posse
% Lago for pointing out why \protect\pkgname{atenddvi} is best avoided
% if possible}
-% \begin{macrocode}
-\@ifundefined{AtEndDocument}{%
- \RequirePackage{atenddvi}
- \let\hyxmp@at@end=\AtEndDvi
+% \changes{v5.11}{2022/10/16}{Use \protect\cs{AddToHook} when available.
+% This addresses a bug reported on \protect\TeX\ StackExchange by joHub
+% and solved by Ulrike Fischer}
+% \begin{macrocode}
+\@ifundefined{AddToHook}{%
+ \@ifundefined{AtEndDocument}{%
+ \RequirePackage{atenddvi}
+ \let\hyxmp@at@end=\AtEndDvi
+ }{%
+ \let\hyxmp@at@end=\AtEndDocument
+ }
}{%
- \let\hyxmp@at@end=\AtEndDocument
+ \def\hyxmp@at@end{\AddToHook{shipout/lastpage}}
}
% \end{macrocode}
% \end{macro}
@@ -2056,14 +2094,26 @@ sub mycmd {
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@hyxmp@count}
+% \changes{v5.11}{2022/10/02}{Added this macro to fix a bug with
+% \protect\optname{pdfapart}. Thanks to John H. Lienhard and
+% Kartik Singhal for their bug reports}
+% Define a temporary counter. The code previously used \cs{@tempcnta},
+% but this is no longer safe within \cs{pdfstringdef} as of more recent
+% versions of \pkgname{hyperref}.
+% \begin{macrocode}
+\newcount\@hyxmp@count
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\@pdfapart}
% Prepare to store the \acro{PDF/A} part ID, which defaults to~``1''
% if \optname{pdfa} is passed to \pkgname{hyperref}.
% \begin{macrocode}
\def\@pdfapart{}
\define@key{Hyp}{pdfapart}{%
- \afterassignment\hyxmp@no@bad@parts\@tempcnta=0#1\relax
- \hyxmp@pdfstringdef\@pdfapart{\the\@tempcnta}%
+ \afterassignment\hyxmp@no@bad@parts\@hyxmp@count=0#1\relax
+ \hyxmp@pdfstringdef\@pdfapart{\the\@hyxmp@count}%
}
% \end{macrocode}
% \end{macro}
@@ -2085,8 +2135,8 @@ sub mycmd {
% \begin{macrocode}
\def\@pdfuapart{}
\define@key{Hyp}{pdfuapart}{%
- \afterassignment\hyxmp@no@bad@parts\@tempcnta=0#1\relax
- \hyxmp@pdfstringdef\@pdfuapart{\the\@tempcnta}%
+ \afterassignment\hyxmp@no@bad@parts\@hyxmp@count=0#1\relax
+ \hyxmp@pdfstringdef\@pdfuapart{\the\@hyxmp@count}%
}
% \end{macrocode}
% \end{macro}
@@ -2101,11 +2151,11 @@ sub mycmd {
%
% \begin{macro}{\hyxmp@set@pdfx@major@i}
% This is the first helper macro for |\hyxmp@set@pdfx@major|. It stores
-% the \acro{PDF/X} major version in |\@tempcnta|.
+% the \acro{PDF/X} major version in |\@hyxmp@count|.
% \begin{macrocode}
\def\hyxmp@set@pdfx@major@i PDF/X-{%
\afterassignment\hyxmp@set@pdfx@major@ii
- \@tempcnta=%
+ \@hyxmp@count=%
}
% \end{macrocode}
% \end{macro}
@@ -2113,12 +2163,12 @@ sub mycmd {
% \begin{macro}{\hyxmp@set@pdfx@major@ii}
% \begin{macro}{\hyxmp@pdfx@major}
% This is the second helper macro for |\hyxmp@set@pdfx@major|. It
-% copies the \acro{PDF/X} major version from |\@tempcnta| to
+% copies the \acro{PDF/X} major version from |\@hyxmp@count| to
% |\@hyxmp@pdfx@major| and discards the rest of the \acro{PDF/X}
% standard string.
% \begin{macrocode}
\def\hyxmp@set@pdfx@major@ii#1!{%
- \edef\hyxmp@pdfx@major{\the\@tempcnta}%
+ \edef\hyxmp@pdfx@major{\the\@hyxmp@count}%
}
% \end{macrocode}
% \end{macro}
@@ -2719,6 +2769,9 @@ sub mycmd {
%
% \begin{macro}{\hyxmp@ProcessKeyvalOptions}
% \changes{v2.0}{2012/09/05}{Added this macro}
+% \changes{v5.11}{2022/10/02}{Bug fix: Restore
+% \protect\cs{ProcessKeyvalOptions} after first use. Thanks to
+% Ulrike Fischer for the bug report}
% \begin{macro}{\ProcessKeyvalOptions}
% \changes{v2.0}{2012/09/05}{Added this macro}
% Redefine \pkgname{kvoptions}'s |\ProcessOptions| command to invoke
@@ -2726,6 +2779,7 @@ sub mycmd {
% \begin{macrocode}
\let\hyxmp@ProcessKeyvalOptions=\ProcessKeyvalOptions
\renewcommand*{\ProcessKeyvalOptions}{%
+ \global\let\ProcessKeyvalOptions=\hyxmp@ProcessKeyvalOptions
\hyxmp@redefine@Hyp
\hyxmp@ProcessKeyvalOptions
}
@@ -3183,17 +3237,6 @@ sub mycmd {
% \end{macrocode}
% \end{macro}
%
-% \pkgname{hyperxmp} can directly query the page count using
-% \LuaTeX\ features. When any other \TeX\ engine is used,
-% \pkgname{hyperxmp} employs the \pkgname{totpages} package to help
-% tally the total number of pages.
-% \begin{macrocode}
-\ifLuaTeX
-\else
- \RequirePackage{totpages}
-\fi
-% \end{macrocode}
-%
% Determine the size of the output file from the \emph{previous} run of
% \LuaLaTeX\@. This action has to be performed before the
% |\begin{document}| because at that point the size of the output file
@@ -3331,25 +3374,16 @@ end
% \begin{macrocode}
\newcommand*{\hyxmp@query@self}{%
% \end{macrocode}
-% \LuaTeX\ exposes via \texttt{status.total\_pages} the number of pages
-% written. We use this mechanism when available to assign
-% \cs{@pdfnumpages}. To finalize the page count we first issue a
-% \cs{clearpage}.
+% \LaTeX's |totalpages| counter tracks the number of pages written. We
+% use this mechanism to assign \cs{@pdfnumpages}.
+% \changes{v5.11}{2022/10/16}{Use \protect\cs{thetotalpages} to compute
+% the page count in an engine-independent manner. Thanks to Ulrike
+% Fischer for recommending this mechanism}
% \begin{macrocode}
- \ifLuaTeX
- \@if@def@and@nonempty{@pdfnumpages}{%
- }{%
- \clearpage
- \xdef\@pdfnumpages{\luadirect{tex.print(status.total_pages)}}%
- }%
- \else
-% \end{macrocode}
-% Without \LuaTeX\ we rely on the \pkgname{totpages} package to help
-% count the number of pages. This may require an additional run of
-% \LaTeX, but the user will be notified in that case.
-% \begin{macrocode}
- \pdfstringdef\@pdfnumpages{\ref*{TotPages}}%
- \fi
+ \@if@def@and@nonempty{@pdfnumpages}{%
+ }{%
+ \xdef\@pdfnumpages{\thetotalpages}%
+ }%
% \end{macrocode}
% If \optname{pdfbytes} hasn't been set, set it to the output file's size
% from the previous run.
@@ -4134,19 +4168,19 @@ end
% midnight or the timezone so we omit those fields when defining
% macro~|#1|.
% \begin{macrocode}
- \@tempcnta=\time
- \divide\@tempcnta by 60
- \ifnum\@tempcnta<10
- \xdef#1{#1T0\the\@tempcnta}%
+ \@hyxmp@count=\time
+ \divide\@hyxmp@count by 60
+ \ifnum\@hyxmp@count<10
+ \xdef#1{#1T0\the\@hyxmp@count}%
\else
- \xdef#1{#1T\the\@tempcnta}%
+ \xdef#1{#1T\the\@hyxmp@count}%
\fi
- \multiply\@tempcnta by -60
- \advance\@tempcnta by \time
- \ifnum\@tempcnta<10
- \xdef#1{#1:0\the\@tempcnta}%
+ \multiply\@hyxmp@count by -60
+ \advance\@hyxmp@count by \time
+ \ifnum\@hyxmp@count<10
+ \xdef#1{#1:0\the\@hyxmp@count}%
\else
- \xdef#1{#1:\the\@tempcnta}%
+ \xdef#1{#1:\the\@hyxmp@count}%
\fi
\xdef#1{#1Z}%
}
@@ -4923,14 +4957,14 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
% \xmpprop{xmpMM:InstanceID} fields.
%
% \begin{macro}{\hyxmp@modulo@a}
-% Replace the contents of |\@tempcnta| with the contents modulo~|#1|.
+% Replace the contents of |\@hyxmp@count| with the contents modulo~|#1|.
% Note that |\@tempcntb| is overwritten in the process.
% \begin{macrocode}
\def\hyxmp@modulo@a#1{%
- \@tempcntb=\@tempcnta
+ \@tempcntb=\@hyxmp@count
\divide\@tempcntb by #1
\multiply\@tempcntb by #1
- \advance\@tempcnta by -\@tempcntb
+ \advance\@hyxmp@count by -\@tempcntb
}
% \end{macrocode}
% \end{macro}
@@ -4952,7 +4986,7 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
% of text.
% \begin{macrocode}
\def\hyxmp@seed@rng#1{%
- \@tempcnta=\hyxmp@big@prime
+ \@hyxmp@count=\hyxmp@big@prime
\futurelet\hyxmp@one@token\hyxmp@seed@rng@i#1\@empty
}
% \end{macrocode}
@@ -4963,8 +4997,8 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
% \begin{macro}{\hyxmp@one@token}
% \begin{macro}{\next}
% Do all of the work for |\hyxmp@seed@rng|. For each character code $c$
-% of the input text, assign $\mathtt{\string\@tempcnta} \leftarrow 3
-% \cdot \mathtt{\string\@tempcnta} + c
+% of the input text, assign $\mathtt{\string\@hyxmp@count} \leftarrow 3
+% \cdot \mathtt{\string\@hyxmp@count} + c
% \pmod{\mathtt{\string\hyxmp@big@prime}}$.
% \begin{macrocode}
\def\hyxmp@seed@rng@i{%
@@ -4972,8 +5006,8 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
\let\next=\relax
\else
\def\next##1{%
- \multiply\@tempcnta by 3
- \advance\@tempcnta by `##1
+ \multiply\@hyxmp@count by 3
+ \advance\@hyxmp@count by `##1
\hyxmp@modulo@a{\hyxmp@big@prime}%
\futurelet\hyxmp@one@token\hyxmp@seed@rng@i
}%
@@ -4991,15 +5025,15 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
% sequence. Specifically, we assign $\mathtt{\string\hyxmp@rand@num}
% \leftarrow 3 \cdot \mathtt{\string\hyxmp@rand@num} +
% \mathtt{\string\hyxmp@big@prime@ii}
-% \pmod{\mathtt{\string\hyxmp@big@prime}}$. Note that both |\@tempcnta|
+% \pmod{\mathtt{\string\hyxmp@big@prime}}$. Note that both |\@hyxmp@count|
% and |\@tempcntb| are overwritten in the process.
% \begin{macrocode}
\def\hyxmp@set@rand@num{%
- \@tempcnta=\hyxmp@rand@num
- \multiply\@tempcnta by 3
- \advance\@tempcnta by \hyxmp@big@prime@ii
+ \@hyxmp@count=\hyxmp@rand@num
+ \multiply\@hyxmp@count by 3
+ \advance\@hyxmp@count by \hyxmp@big@prime@ii
\hyxmp@modulo@a{\hyxmp@big@prime}%
- \xdef\hyxmp@rand@num{\the\@tempcnta}%
+ \xdef\hyxmp@rand@num{\the\@hyxmp@count}%
}
% \end{macrocode}
% \end{macro}
@@ -5007,21 +5041,21 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
%
% \begin{macro}{\hyxmp@append@hex}
% Append a randomly selected hexadecimal digit to macro~|#1|. Note that
-% both |\@tempcnta| and |\@tempcntb| are overwritten in the process.
+% both |\@hyxmp@count| and |\@tempcntb| are overwritten in the process.
% \begin{macrocode}
\def\hyxmp@append@hex#1{%
\hyxmp@set@rand@num
- \@tempcnta=\hyxmp@rand@num
+ \@hyxmp@count=\hyxmp@rand@num
\hyxmp@modulo@a{16}%
- \ifnum\@tempcnta<10
- \xdef#1{#1\the\@tempcnta}%
+ \ifnum\@hyxmp@count<10
+ \xdef#1{#1\the\@hyxmp@count}%
\else
% \end{macrocode}
% There \emph{must} be a better way to handle the numbers~10--15 than
% with |\ifcase|.
% \begin{macrocode}
- \advance\@tempcnta by -10
- \ifcase\@tempcnta
+ \advance\@hyxmp@count by -10
+ \ifcase\@hyxmp@count
\xdef#1{#1a}%
\or\xdef#1{#1b}%
\or\xdef#1{#1c}%
@@ -5063,7 +5097,7 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
% in which each ``\textit{x}'' is a lowercase hexadecimal digit and
% ``\textit{y}'' is one of ``|8|'', ``|9|'', ``|a|'', or~``|b|''. We
% assume that the random-number generator is already seeded. Note that
-% |\hyxmp@create@uuid| overwrites both |\@tempcnta| and |\@tempcntb|.
+% |\hyxmp@create@uuid| overwrites both |\@hyxmp@count| and |\@tempcntb|.
% \changes{v2.4}{2014/01/02}{Modified this macro to produce a proper
% version~4 (random or pseudorandom) \protect\acro{UUID}}
% \begin{macrocode}
@@ -5080,9 +5114,9 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
% Randomly select one of ``|8|'', ``|9|'', ``|a|'', or~``|b|''.
% \begin{macrocode}
\hyxmp@set@rand@num
- \@tempcnta=\hyxmp@rand@num
+ \@hyxmp@count=\hyxmp@rand@num
\hyxmp@modulo@a{4}%
- \ifcase\@tempcnta
+ \ifcase\@hyxmp@count
\g@addto@macro#1{8}%
\or\g@addto@macro#1{9}%
\or\g@addto@macro#1{a}%
@@ -5109,7 +5143,7 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
\newcommand*{\hyxmp@def@DocumentID}{%
\edef\hyxmp@seed@string{\hyxmp@jobname:\@pdftitle:\@pdfauthor:}%
\expandafter\hyxmp@seed@rng\expandafter{\hyxmp@seed@string}%
- \edef\hyxmp@rand@num{\the\@tempcnta}%
+ \edef\hyxmp@rand@num{\the\@hyxmp@count}%
\hyxmp@create@uuid\hyxmp@DocumentID
}
% \end{macrocode}
@@ -5138,7 +5172,7 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
\hyxmp@jobname:\@pdftitle:\@pdfauthor:\hyxmp@today@xmp:\hyxmp@seed@string
}%
\expandafter\hyxmp@seed@rng\expandafter{\hyxmp@seed@string}%
- \edef\hyxmp@rand@num{\the\@tempcnta}%
+ \edef\hyxmp@rand@num{\the\@hyxmp@count}%
\hyxmp@create@uuid\hyxmp@InstanceID
}
% \end{macrocode}
@@ -5196,16 +5230,16 @@ ______<#3 xml:lang="#1">\hyxmp@xmlified</#3>^^J%
% \begin{macrocode}
\newcommand*{\hyxmp@add@to@xml}[1]{%
\bgroup
- \@tempcnta=0
+ \@hyxmp@count=0
\ifhyxmp@unicodetex
\@tempcntb=65536%
\else
\@tempcntb=256%
\fi
\loop
- \lccode\@tempcnta=\@tempcnta
- \advance\@tempcnta by 1
- \ifnum\@tempcnta<\@tempcntb
+ \lccode\@hyxmp@count=\@hyxmp@count
+ \advance\@hyxmp@count by 1
+ \ifnum\@hyxmp@count<\@tempcntb
\repeat
\lccode`\_=`\ \relax
\lccode`\^^C=`\,\relax
@@ -6011,14 +6045,14 @@ ______</dc:#2>^^J%
% \changes{v5.0}{2020/02/26}{Added this macro}
% \begin{macrocode}
\newcommand*{\hyxmp@pdfx@id@schema}{%
- \@tempcnta=0\hyxmp@pdfx@major\relax
- \ifnum\@tempcnta=0
+ \@hyxmp@count=0\hyxmp@pdfx@major\relax
+ \ifnum\@hyxmp@count=0
\else
- \ifnum\@tempcnta=1
+ \ifnum\@hyxmp@count=1
\hyxmp@add@simple{pdfx:GTS_PDFXVersion}{PDF/X-1:2001}%
\hyxmp@add@simple{pdfx:GTS_PDFXConformance}{\@pdfxstandard}%
\else
- \ifnum\@tempcnta<4
+ \ifnum\@hyxmp@count<4
\hyxmp@add@simple{pdfx:GTS_PDFXVersion}{\@pdfxstandard}%
\else
\hyxmp@add@simple{pdfxid:GTS_PDFXVersion}{\@pdfxstandard}%
@@ -6629,8 +6663,8 @@ ______________________</rdf:li>^^J%
% \end{macrocode}
% Declare the schema used in \PDFstd{X}{4}{}{} and later versions.
% \begin{macrocode}
- \@tempcnta=0\hyxmp@pdfx@major\relax
- \ifnum\@tempcnta>3
+ \@hyxmp@count=0\hyxmp@pdfx@major\relax
+ \ifnum\@hyxmp@count>3
\hyxmp@begin@ext@decl
{PDF/X ID Schema}%
{pdfxid}%
@@ -6958,7 +6992,27 @@ _____________________xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEven
_____________________xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/"^^J%
_____________________xmlns:pdfuaid="http://www.aiim.org/pdfua/ns/id/"^^J%
_____________________xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/"^^J%
+ }%
+% \end{macrocode}
+% We make one exception to the rule of including every namespace we can
+% potentially use: We don't define the \texttt{pdfxid} namespace unless
+% the \acro{PDF/X} version (specified by the \optname{pdfxstandard})
+% option is~4 or greater. Otherwise, Adobe Acrobat---at least Adobe
+% Acrobat DC 2020---alters the way it displays color. (I believe it
+% renders color in a printer gamut instead of a screen gamut.)
+% \changes{v5.10}{2020/01/05}{Include the \string\texttt{pdfxid} namespace
+% only if the \protect\acro{PDF/X} version is~4 or greater. Thanks to
+% John Lienhard for the bug report}
+% \begin{macrocode}
+ \ifnum0\hyxmp@pdfx@major>3
+ \hyxmp@add@to@xml{%
_____________________xmlns:pdfxid="http://www.npes.org/pdfx/ns/id/"^^J%
+ }%
+ \fi
+% \end{macrocode}
+% Revert to ``include every namespace'' mode.
+% \begin{macrocode}
+ \hyxmp@add@to@xml{%
_____________________xmlns:prism="http://prismstandard.org/namespaces/basic/3.0/"^^J%
_____________________xmlns:jav="http://www.niso.org/schemas/jav/1.0/"^^J%
_____________________xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"^^J%
@@ -7177,7 +7231,7 @@ __</rdf:RDF>^^J%
<<
/Type /Metadata
/Subtype /XML
- /Length \the\@tempcnta
+ /Length \the\@hyxmp@count
>>
stream^^J\hyxmp@xml endstream%
}%
@@ -7191,7 +7245,7 @@ __</rdf:RDF>^^J%
% \end{macro}
%
% \begin{macro}{\hyxmp@string@len}
-% Set |\@tempcnta| to the number of characters in a given string~(|#1|).
+% Set |\@hyxmp@count| to the number of characters in a given string~(|#1|).
% The approach is first to tally the number of space characters then to
% tally the number of non-space characters. While this is rather
% sloppy I haven't found a better way to achieve the same effect,
@@ -7199,7 +7253,7 @@ __</rdf:RDF>^^J%
% assigned their category codes.
% \begin{macrocode}
\newcommand*{\hyxmp@string@len}[1]{%
- \@tempcnta=0
+ \@hyxmp@count=0
\expandafter\hyxmp@count@spaces#1 {} %
\expandafter\hyxmp@count@non@spaces#1{}%
}
@@ -7214,9 +7268,9 @@ __</rdf:RDF>^^J%
\def\hyxmp@count@spaces#1 {%
\def\hyxmp@one@token{#1}%
\ifx\hyxmp@one@token\@empty
- \advance\@tempcnta by -1
+ \advance\@hyxmp@count by -1
\else
- \advance\@tempcnta by 1
+ \advance\@hyxmp@count by 1
\expandafter\hyxmp@count@spaces
\fi
}
@@ -7233,7 +7287,7 @@ __</rdf:RDF>^^J%
\def\hyxmp@one@token{#1}%
\ifx\hyxmp@one@token\@empty
\else
- \advance\@tempcnta by 1
+ \advance\@hyxmp@count by 1
\expandafter\hyxmp@count@non@spaces
\fi
}
diff --git a/macros/latex/contrib/hyperxmp/hyperxmp.ins b/macros/latex/contrib/hyperxmp/hyperxmp.ins
index 81db9d155a..80abd7b3c3 100644
--- a/macros/latex/contrib/hyperxmp/hyperxmp.ins
+++ b/macros/latex/contrib/hyperxmp/hyperxmp.ins
@@ -1,5 +1,5 @@
%%
-%% Copyright (C) 2011-2020 by Scott Pakin <scott+hyxmp@pakin.org>
+%% Copyright (C) 2011-2023 by Scott Pakin <scott+hyxmp@pakin.org>
%%
%% This file may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3c of this license
@@ -21,7 +21,7 @@
This is a generated file.
-Copyright (C) 2011-2020 by Scott Pakin <scott+hyxmp@pakin.org>
+Copyright (C) 2011-2023 by Scott Pakin <scott+hyxmp@pakin.org>
This file may be distributed and/or modified under the conditions of
the LaTeX Project Public License, either version 1.3c of this license
diff --git a/macros/latex/contrib/hyperxmp/hyperxmp.pdf b/macros/latex/contrib/hyperxmp/hyperxmp.pdf
index f11adaee15..2374394e6b 100644
--- a/macros/latex/contrib/hyperxmp/hyperxmp.pdf
+++ b/macros/latex/contrib/hyperxmp/hyperxmp.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3build/CHANGELOG.md b/macros/latex/contrib/l3build/CHANGELOG.md
index f14e4db1a0..eda72d0a20 100644
--- a/macros/latex/contrib/l3build/CHANGELOG.md
+++ b/macros/latex/contrib/l3build/CHANGELOG.md
@@ -7,6 +7,15 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2023-02-20]
+
+### Changed
+- Unify `testdir` by dropping possibly trailing `.lua` passed to `--config`
+
+### Fixed
+- Ensure directories `testdir` and `resultdir` exist when `--dirty` is set
+- epoch settings with xetex
+
## [2023-02-16]
### Changed
@@ -620,7 +629,8 @@ this project uses date-based 'snapshot' version identifiers.
- Rationalise short option names: removed `-d`, `-E`, `-r`
- Target `cmdcheck`: specific to LaTeX kernel work
-[Unreleased]: https://github.com/latex3/l3build/compare/2023-02-16...HEAD
+[Unreleased]: https://github.com/latex3/l3build/compare/2023-02-20...HEAD
+[2023-02-20]: https://github.com/latex3/l3build/compare/2023-02-16...2023-02-20
[2023-02-16]: https://github.com/latex3/l3build/compare/2022-11-10...2023-02-16
[2022-11-10]: https://github.com/latex3/l3build/compare/2022-09-15...2022-11-10
[2022-09-15]: https://github.com/latex3/l3build/compare/2022-04-19...2022-09-15
diff --git a/macros/latex/contrib/l3build/README.md b/macros/latex/contrib/l3build/README.md
index e33fee3229..40741a74ed 100644
--- a/macros/latex/contrib/l3build/README.md
+++ b/macros/latex/contrib/l3build/README.md
@@ -1,7 +1,7 @@
l3build: a testing and building system for LaTeX
=================================================
-Release 2023-02-16
+Release 2023-02-20
Overview
--------
diff --git a/macros/latex/contrib/l3build/l3build-check.lua b/macros/latex/contrib/l3build/l3build-check.lua
index d6d68086bc..b77a7e26cc 100644
--- a/macros/latex/contrib/l3build/l3build-check.lua
+++ b/macros/latex/contrib/l3build/l3build-check.lua
@@ -55,7 +55,10 @@ local remove = os.remove
-- Set up the check system files: needed for checking one or more tests and
-- for saving the test files
function checkinit()
- if not options["dirty"] then
+ if options["dirty"] then
+ mkdir(testdir)
+ mkdir(resultdir)
+ else
cleandir(testdir)
cleandir(resultdir)
end
@@ -787,6 +790,8 @@ function runtest(name, engine, hide, ext, test_type, breakout)
os_setenv .. " LUAINPUTS=." .. localtexmf()
.. (checksearch and os_pathsep or "")
.. os_concat ..
+ -- ensure epoch settings
+ set_epoch_cmd(epoch, forcecheckepoch) ..
-- Ensure lines are of a known length
os_setenv .. " max_print_line=" .. maxprintline
.. os_concat ..
diff --git a/macros/latex/contrib/l3build/l3build.1 b/macros/latex/contrib/l3build/l3build.1
index f36d695a06..f9738ed8d9 100644
--- a/macros/latex/contrib/l3build/l3build.1
+++ b/macros/latex/contrib/l3build/l3build.1
@@ -1,4 +1,4 @@
-.TH l3build 1 "2023-02-16"
+.TH l3build 1 "2023-02-20"
.SH NAME
l3build \- Checking and building packages
.SH SYNOPSIS
diff --git a/macros/latex/contrib/l3build/l3build.dtx b/macros/latex/contrib/l3build/l3build.dtx
index 435036c8bf..085ac1d022 100644
--- a/macros/latex/contrib/l3build/l3build.dtx
+++ b/macros/latex/contrib/l3build/l3build.dtx
@@ -236,7 +236,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-16}
+% \date{Released 2023-02-20}
%
% \maketitle
% \tableofcontents
diff --git a/macros/latex/contrib/l3build/l3build.lua b/macros/latex/contrib/l3build/l3build.lua
index 110d394772..ff80523b17 100755
--- a/macros/latex/contrib/l3build/l3build.lua
+++ b/macros/latex/contrib/l3build/l3build.lua
@@ -25,7 +25,7 @@ for those people who are interested.
--]]
-- Version information
-release_date = "2023-02-16"
+release_date = "2023-02-20"
-- File operations are aided by the LuaFileSystem module
local lfs = require("lfs")
@@ -205,22 +205,23 @@ if #checkconfigs > 1 then
end
end
if #checkconfigs == 1 and
- checkconfigs[1] ~= "build" and
- (options["target"] == "check" or options["target"] == "save" or options["target"] == "clean") then
- local config = "./" .. gsub(checkconfigs[1],"%.lua$","") .. ".lua"
- if fileexists(config) then
- local savedtestfiledir = testfiledir
- dofile(config)
- testdir = testdir .. "-" .. checkconfigs[1]
- -- Reset testsuppdir if required
- if savedtestfiledir ~= testfiledir and
- testsuppdir == savedtestfiledir .. "/support" then
- testsuppdir = testfiledir .. "/support"
- end
- else
- print("Error: Cannot find configuration " .. checkconfigs[1])
- exit(1)
- end
+ checkconfigs[1] ~= "build" and
+ (options["target"] == "check" or options["target"] == "save" or options["target"] == "clean") then
+ local configname = gsub(checkconfigs[1], "%.lua$", "")
+ local config = "./" .. configname .. ".lua"
+ if fileexists(config) then
+ local savedtestfiledir = testfiledir
+ dofile(config)
+ testdir = testdir .. "-" .. configname
+ -- Reset testsuppdir if required
+ if savedtestfiledir ~= testfiledir and
+ testsuppdir == savedtestfiledir .. "/support" then
+ testsuppdir = testfiledir .. "/support"
+ end
+ else
+ print("Error: Cannot find configuration " .. checkconfigs[1])
+ exit(1)
+ end
end
-- Call the main function
diff --git a/macros/latex/contrib/l3build/l3build.pdf b/macros/latex/contrib/l3build/l3build.pdf
index 5172226c84..4afb71bd9b 100644
--- a/macros/latex/contrib/l3build/l3build.pdf
+++ b/macros/latex/contrib/l3build/l3build.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
index b2293c1e65..11e2450911 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
index d89b4727fd..4eae208f9e 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
@@ -5,8 +5,8 @@
% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
\documentclass[a4paper,french,11pt]{article}
-\def\PLversion{2.5.2}
-\def\PLdate{11 Février 2023}
+\def\PLversion{2.5.3}
+\def\PLdate{19 Février 2023}
\usepackage{ProfLycee}
\useproflyclib{piton,minted,pythontex}
\usepackage{lualatex-math}
@@ -4642,10 +4642,14 @@ Les (deux) commandes sont donc liées à un environnement \ctex{tikzpicture}, et
\subsection{Options et arguments}
\begin{codeinfo}
-Les \Cle{donnees} seront à préciser sous forme \ctex{<sommet1>/<proba1>/<position1>,<sommet2>/<proba2>/<position2>,...} avec comme \og sens de lecture \fg{} de la gauche vers la droite puis du haut vers le bas (on balaye les \textit{sous-arbres}), avec comme possibilités :
+Les \Cle{donnees} seront à préciser sous forme
+
+\hfill\ctex{<sommet1>/<proba1>/<position1>,<sommet2>/<proba2>/<position2>,...}\hfill~
+
+avec comme \og sens de lecture \fg{} de la gauche vers la droite puis du haut vers le bas (on balaye les \textit{sous-arbres}), avec comme possibilités :
\begin{itemize}
- \item une donnée \Cle{proba} peut être laissée vide ;
+ \item \cmaj{2.5.3} une donnée \Cle{proba} peut être laissée vide ou spécifiée avec des \textsf{macros} ;
\item une donnée \Cle{position} peut valoir \Cle{above} (au-dessus), \Cle{below} (en-dessous) ou être laissée \Cle{vide} (sur).
\end{itemize}
\end{codeinfo}
@@ -4738,29 +4742,16 @@ Les nœuds crées par les commandes sont :
\begin{codetex}[listing only]
\def\ArbreDeuxTrois{
$A$/\num{0.05}/above,
- $B_1$/\num{0.4}/above,
- $B_2$/\num{0.35}/,
- $B_3$//below,
+ $B_1$/\num{0.4}/above,$B_2$/\num{0.35}/,$B_3$//below,
$\overline{A}$/.../below,
- $B_1$/$\frac{2}{15}$/above,
- $B_2$/.../,
- $B_3$/$\frac{1}{3}$/below
+ $B_1$/$\frac{2}{15}$/above,$B_2$/.../,$B_3$/$\frac{1}{3}$/below
}
\ArbreProbasTikz[Type=2x3,InclineProbas=false,EspaceFeuille=1.15]{\ArbreDeuxTrois}
\def\ArbreTroisTrois{
- $A_1$/\num{0.05}/,
- $B_1$/{1/3}/,
- $B_2$/{1/3}/,
- $B_3$/{1/3}/,
- $A_2$/\num{0.80}/,
- $B_1$/{1/3}/,
- $B_2$/{1/3}/,
- $B_3$/{1/3}/,
- $A_3$/\num{0.15}/,
- $B_1$/{1/3}/,
- $B_2$/{1/3}/,
- $B_3$/{1/3}/
+ $A_1$/\num{0.05}/,$B_1$/{1/3}/,$B_2$/{1/3}/,$B_3$/{1/3}/,
+ $A_2$/\num{0.80}/,$B_1$/{1/3}/,$B_2$/{1/3}/,$B_3$/{1/3}/,
+ $A_3$/\num{0.15}/,$B_1$/{1/3}/,$B_2$/{1/3}/,$B_3$/{1/3}/
}
\ArbreProbasTikz[Type=3x3,StyleTrait={densely dashed},EspaceFeuille=0.7,PoliceProbas=\scriptsize,Police=\small]{\ArbreTroisTrois}
@@ -6247,6 +6238,8 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0
\part{Historique}
+{\small \bverb|v 2.5.3|~:~~~~Modification du traitement des tests dans les arbres de probas (page \pageref{arbresprobas})
+
{\small \bverb|v 2.5.2|~:~~~~Correction d'un dysfonctionnement avec \textsf{tcolorbox 6.0}
{\small \bverb|v 2.5.1|~:~~~~Ajout d'une version étoilée pour la conversion en fraction (page \pageref{convfrac})
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index c6656d3c20..4f59788744 100644
--- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty
+++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
@@ -3,7 +3,8 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2023/02/11 2.5.2 Aide pour l'utilisation de LaTeX en lycee]
+\ProvidesPackage{ProfLycee}[2023/02/19 2.5.3 Aide pour l'utilisation de LaTeX en lycee]
+% 2.5.3 Modification des tests d'arguments dans les probas (macros autorisées)
% 2.5.2 Correction d'un dysfonctionnement avec tcolorbox 6.0 :-(
% 2.5.1 Modification de la commande de conversion en fraction
% 2.5.0 Passage à des libraires via \useproflyclib
@@ -17,6 +18,7 @@
% 2.1.3 Ajout de l'option auto-tabs-gobble sur piton (v1.0) + correction d'un bug sur CodePiton
% 2.1.2 Ajout d'une commande pour déterminer la mesure principale d'un angle + option <ElargirOx/y> pour les axes
% 2.1.1 Ajout d'une section pour les tracés de repère et courbe, en tikz
+% 2.1.1 Ajout d'une section pour les tracés de repère et courbe, en tikz
% 2.1.0 Ajout du calcul du seuil pour les suites récurrentes + racines de nombres décimaux + option pour pythontex
% 2.0.9 Ajouts de commandes pour générer des nombres et listes aléatoires
% 2.0.8 Ajout d'options pour stretch et fonte env python(s) (pas tous...)
@@ -429,7 +431,7 @@
width=#2,#3
}
-\NewTCBInputListing[]{\CodePythonLstFichier}{ s O{\linewidth} m m }{
+\NewTCBInputListing{\CodePythonLstFichier}{ s O{\linewidth} m m }{
\IfBooleanTF{#1}{stylepythonlstnolineos}{stylepythonlstlineos},
width=#2,#3,
listing file={#4}
@@ -806,7 +808,7 @@
\useKVdefault[kvensemble]%
\setKV[kvensemble]{#1}%
\ifboolKV[kvensemble]{Mathpunct}%
- {\left\lbrace \PLensopt{} \mathpunct{} \StrSubstitute{#2}{/}{\mathpunct{}{\PLenssep}\mathpunct{}} \right\rbrace}%
+ {\left\lbrace \PLensopt{} \mathpunct{} \StrSubstitute{#2}{/}{\mathpunct{}{\PLenssep}\mathpunct{}} \mathpunct{} \right\rbrace}%
{\left\lbrace \PLensopt{} \StrSubstitute{#2}{/}{{\PLenssep}} \right\rbrace}
}
@@ -2449,24 +2451,24 @@
\node[noeud] (A12) at ({1*\PLAPespniv},{-2.5*\PLAPespfeuille}) {\PLARBREDONNES[4,1]};
\node[noeud] (A23) at ({2*\PLAPespniv},{-2*\PLAPespfeuille}) {\PLARBREDONNES[5,1]};
\node[noeud] (A24) at ({2*\PLAPespniv},{-3*\PLAPespfeuille}) {\PLARBREDONNES[6,1]};
- \IfEq{\PLARBREDONNES[1,2]}{}
- {\draw[PLfleche] (R)--(A11) ;}
- {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;}
- \IfEq{\PLARBREDONNES[2,2]}{}
- {\draw[PLfleche] (A11)--(A21) ;}
- {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;}
- \IfEq{\PLARBREDONNES[3,2]}{}
- {\draw[PLfleche] (A11)--(A22) ;}
- {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;}
- \IfEq{\PLARBREDONNES[4,2]}{}
- {\draw[PLfleche] (R)--(A12) ;}
- {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;}
- \IfEq{\PLARBREDONNES[5,2]}{}
- {\draw[PLfleche] (A12)--(A23) ;}
- {\draw[PLfleche] (A12)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;}
- \IfEq{\PLARBREDONNES[6,2]}{}
- {\draw[PLfleche] (A12)--(A24) ;}
- {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[1,2]}
+ {\draw[PLfleche] (R)--(A11) ;}
+ {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[2,2]}
+ {\draw[PLfleche] (A11)--(A21) ;}
+ {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[3,2]}
+ {\draw[PLfleche] (A11)--(A22) ;}
+ {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[4,2]}
+ {\draw[PLfleche] (R)--(A12) ;}
+ {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[5,2]}
+ {\draw[PLfleche] (A12)--(A23) ;}
+ {\draw[PLfleche] (A12)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[6,2]}
+ {\draw[PLfleche] (A12)--(A24) ;}
+ {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;}
}{}
%arbre3x2
\IfEq{\PLAPtype}{3x2}
@@ -2483,33 +2485,33 @@
\node[noeud] (A25) at ({2*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[8,1]};
\node[noeud] (A26) at ({2*\PLAPespniv},{-5*\PLAPespfeuille}) {\PLARBREDONNES[9,1]};
%branches
- \IfEq{\PLARBREDONNES[1,2]}{}
- {\draw[PLfleche] (R)--(A11) ;}
- {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;}
- \IfEq{\PLARBREDONNES[2,2]}{}
- {\draw[PLfleche] (A11)--(A21) ;}
- {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;}
- \IfEq{\PLARBREDONNES[3,2]}{}
- {\draw[PLfleche] (A11)--(A22) ;}
- {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;}
- \IfEq{\PLARBREDONNES[4,2]}{}
- {\draw[PLfleche] (R)--(A12) ;}
- {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;}
- \IfEq{\PLARBREDONNES[5,2]}{}
- {\draw[PLfleche] (A12)--(A23) ;}
- {\draw[PLfleche] (A12)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;}
- \IfEq{\PLARBREDONNES[6,2]}{}
- {\draw[PLfleche] (A12)--(A24) ;}
- {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;}
- \IfEq{\PLARBREDONNES[7,2]}{}
- {\draw[PLfleche] (R)--(A13) ;}
- {\draw[PLfleche] (R)--(A13) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;}
- \IfEq{\PLARBREDONNES[8,2]}{}
- {\draw[PLfleche] (A13)--(A25) ;}
- {\draw[PLfleche] (A13)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;}
- \IfEq{\PLARBREDONNES[9,2]}{}
- {\draw[PLfleche] (A13)--(A26) ;}
- {\draw[PLfleche] (A13)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[9,3]}] {{\PLARBREDONNES[9,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[1,2]}
+ {\draw[PLfleche] (R)--(A11) ;}
+ {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[2,2]}
+ {\draw[PLfleche] (A11)--(A21) ;}
+ {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[3,2]}
+ {\draw[PLfleche] (A11)--(A22) ;}
+ {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[4,2]}
+ {\draw[PLfleche] (R)--(A12) ;}
+ {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[5,2]}
+ {\draw[PLfleche] (A12)--(A23) ;}
+ {\draw[PLfleche] (A12)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[6,2]}
+ {\draw[PLfleche] (A12)--(A24) ;}
+ {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[7,2]}
+ {\draw[PLfleche] (R)--(A13) ;}
+ {\draw[PLfleche] (R)--(A13) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[8,2]}
+ {\draw[PLfleche] (A13)--(A25) ;}
+ {\draw[PLfleche] (A13)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[9,2]}
+ {\draw[PLfleche] (A13)--(A26) ;}
+ {\draw[PLfleche] (A13)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[9,3]}] {{\PLARBREDONNES[9,2]}} ;}
}{}
%arbre2x3
\IfEq{\PLAPtype}{2x3}
@@ -2525,30 +2527,30 @@
\node[noeud] (A25) at ({2*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[7,1]};
\node[noeud] (A26) at ({2*\PLAPespniv},{-5*\PLAPespfeuille}) {\PLARBREDONNES[8,1]};
%branches
- \IfEq{\PLARBREDONNES[1,2]}{}
- {\draw[PLfleche] (R)--(A11) ;}
- {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;}
- \IfEq{\PLARBREDONNES[5,2]}{}
- {\draw[PLfleche] (R)--(A12) ;}
- {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;}
- \IfEq{\PLARBREDONNES[2,2]}{}
- {\draw[PLfleche] (A11)--(A21) ;}
- {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;}
- \IfEq{\PLARBREDONNES[3,2]}{}
- {\draw[PLfleche] (A11)--(A22) ;}
- {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;}
- \IfEq{\PLARBREDONNES[4,2]}{}
- {\draw[PLfleche] (A11)--(A23) ;}
- {\draw[PLfleche] (A11)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;}
- \IfEq{\PLARBREDONNES[6,2]}{}
- {\draw[PLfleche] (A12)--(A24) ;}
- {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;}
- \IfEq{\PLARBREDONNES[7,2]}{}
- {\draw[PLfleche] (A12)--(A25) ;}
- {\draw[PLfleche] (A12)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;}
- \IfEq{\PLARBREDONNES[8,2]}{}
- {\draw[PLfleche] (A12)--(A26) ;}
- {\draw[PLfleche] (A12)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[1,2]}
+ {\draw[PLfleche] (R)--(A11) ;}
+ {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[5,2]}
+ {\draw[PLfleche] (R)--(A12) ;}
+ {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[2,2]}
+ {\draw[PLfleche] (A11)--(A21) ;}
+ {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[3,2]}
+ {\draw[PLfleche] (A11)--(A22) ;}
+ {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[4,2]}
+ {\draw[PLfleche] (A11)--(A23) ;}
+ {\draw[PLfleche] (A11)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[6,2]}
+ {\draw[PLfleche] (A12)--(A24) ;}
+ {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[7,2]}
+ {\draw[PLfleche] (A12)--(A25) ;}
+ {\draw[PLfleche] (A12)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[8,2]}
+ {\draw[PLfleche] (A12)--(A26) ;}
+ {\draw[PLfleche] (A12)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;}
}{}
%arbre2x3
\IfEq{\PLAPtype}{3x3}
@@ -2568,43 +2570,43 @@
\node[noeud] (A28) at ({2*\PLAPespniv},{-7*\PLAPespfeuille}) {\PLARBREDONNES[11,1]};
\node[noeud] (A29) at ({2*\PLAPespniv},{-8*\PLAPespfeuille}) {\PLARBREDONNES[12,1]};
%branches
- \IfEq{\PLARBREDONNES[1,2]}{}
- {\draw[PLfleche] (R)--(A11) ;}
- {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;}
- \IfEq{\PLARBREDONNES[5,2]}{}
- {\draw[PLfleche] (R)--(A12) ;}
- {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;}
- \IfEq{\PLARBREDONNES[9,2]}{}
- {\draw[PLfleche] (R)--(A13) ;}
- {\draw[PLfleche] (R)--(A13) node[probas,PLetiquette,{\PLARBREDONNES[9,3]}] {{\PLARBREDONNES[9,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[1,2]}
+ {\draw[PLfleche] (R)--(A11) ;}
+ {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[5,2]}
+ {\draw[PLfleche] (R)--(A12) ;}
+ {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[9,2]}
+ {\draw[PLfleche] (R)--(A13) ;}
+ {\draw[PLfleche] (R)--(A13) node[probas,PLetiquette,{\PLARBREDONNES[9,3]}] {{\PLARBREDONNES[9,2]}} ;}
%N2
- \IfEq{\PLARBREDONNES[2,2]}{}
- {\draw[PLfleche] (A11)--(A21) ;}
- {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;}
- \IfEq{\PLARBREDONNES[3,2]}{}
- {\draw[PLfleche] (A11)--(A22) ;}
- {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;}
- \IfEq{\PLARBREDONNES[4,2]}{}
- {\draw[PLfleche] (A11)--(A23) ;}
- {\draw[PLfleche] (A11)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;}
- \IfEq{\PLARBREDONNES[6,2]}{}
- {\draw[PLfleche] (A12)--(A24) ;}
- {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;}
- \IfEq{\PLARBREDONNES[7,2]}{}
- {\draw[PLfleche] (A12)--(A25) ;}
- {\draw[PLfleche] (A12)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;}
- \IfEq{\PLARBREDONNES[8,2]}{}
- {\draw[PLfleche] (A12)--(A26) ;}
- {\draw[PLfleche] (A12)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;}
- \IfEq{\PLARBREDONNES[10,2]}{}
- {\draw[PLfleche] (A13)--(A27) ;}
- {\draw[PLfleche] (A13)--(A27) node[probas,PLetiquette,{\PLARBREDONNES[10,3]}] {{\PLARBREDONNES[10,2]}} ;}
- \IfEq{\PLARBREDONNES[11,2]}{}
- {\draw[PLfleche] (A13)--(A28) ;}
- {\draw[PLfleche] (A13)--(A28) node[probas,PLetiquette,{\PLARBREDONNES[11,3]}] {{\PLARBREDONNES[11,2]}} ;}
- \IfEq{\PLARBREDONNES[12,2]}{}
- {\draw[PLfleche] (A13)--(A29) ;}
- {\draw[PLfleche] (A13)--(A29) node[probas,PLetiquette,{\PLARBREDONNES[12,3]}] {{\PLARBREDONNES[12,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[2,2]}
+ {\draw[PLfleche] (A11)--(A21) ;}
+ {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[3,2]}
+ {\draw[PLfleche] (A11)--(A22) ;}
+ {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[4,2]}
+ {\draw[PLfleche] (A11)--(A23) ;}
+ {\draw[PLfleche] (A11)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[6,2]}
+ {\draw[PLfleche] (A12)--(A24) ;}
+ {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[7,2]}
+ {\draw[PLfleche] (A12)--(A25) ;}
+ {\draw[PLfleche] (A12)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[8,2]}
+ {\draw[PLfleche] (A12)--(A26) ;}
+ {\draw[PLfleche] (A12)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[10,2]}
+ {\draw[PLfleche] (A13)--(A27) ;}
+ {\draw[PLfleche] (A13)--(A27) node[probas,PLetiquette,{\PLARBREDONNES[10,3]}] {{\PLARBREDONNES[10,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[11,2]}
+ {\draw[PLfleche] (A13)--(A28) ;}
+ {\draw[PLfleche] (A13)--(A28) node[probas,PLetiquette,{\PLARBREDONNES[11,3]}] {{\PLARBREDONNES[11,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[12,2]}
+ {\draw[PLfleche] (A13)--(A29) ;}
+ {\draw[PLfleche] (A13)--(A29) node[probas,PLetiquette,{\PLARBREDONNES[12,3]}] {{\PLARBREDONNES[12,2]}} ;}
}{}
\end{tikzpicture}
}
@@ -2635,24 +2637,24 @@
\node[noeud] (A12) at ({1*\PLAPespniv},{-2.5*\PLAPespfeuille}) {\PLARBREDONNES[4,1]};
\node[noeud] (A23) at ({2*\PLAPespniv},{-2*\PLAPespfeuille}) {\PLARBREDONNES[5,1]};
\node[noeud] (A24) at ({2*\PLAPespniv},{-3*\PLAPespfeuille}) {\PLARBREDONNES[6,1]};
- \IfEq{\PLARBREDONNES[1,2]}{}
- {\draw[PLfleche] (R)--(A11) ;}
- {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;}
- \IfEq{\PLARBREDONNES[2,2]}{}
- {\draw[PLfleche] (A11)--(A21) ;}
- {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;}
- \IfEq{\PLARBREDONNES[3,2]}{}
- {\draw[PLfleche] (A11)--(A22) ;}
- {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;}
- \IfEq{\PLARBREDONNES[4,2]}{}
- {\draw[PLfleche] (R)--(A12) ;}
- {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;}
- \IfEq{\PLARBREDONNES[5,2]}{}
- {\draw[PLfleche] (A12)--(A23) ;}
- {\draw[PLfleche] (A12)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;}
- \IfEq{\PLARBREDONNES[6,2]}{}
- {\draw[PLfleche] (A12)--(A24) ;}
- {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[1,2]}
+ {\draw[PLfleche] (R)--(A11) ;}
+ {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[2,2]}
+ {\draw[PLfleche] (A11)--(A21) ;}
+ {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[3,2]}
+ {\draw[PLfleche] (A11)--(A22) ;}
+ {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[4,2]}
+ {\draw[PLfleche] (R)--(A12) ;}
+ {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[5,2]}
+ {\draw[PLfleche] (A12)--(A23) ;}
+ {\draw[PLfleche] (A12)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[6,2]}
+ {\draw[PLfleche] (A12)--(A24) ;}
+ {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;}
}{}
%arbre3x2
\IfEq{\PLAPtype}{3x2}
@@ -2669,33 +2671,33 @@
\node[noeud] (A25) at ({2*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[8,1]};
\node[noeud] (A26) at ({2*\PLAPespniv},{-5*\PLAPespfeuille}) {\PLARBREDONNES[9,1]};
%branches
- \IfEq{\PLARBREDONNES[1,2]}{}
- {\draw[PLfleche] (R)--(A11) ;}
- {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;}
- \IfEq{\PLARBREDONNES[2,2]}{}
- {\draw[PLfleche] (A11)--(A21) ;}
- {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;}
- \IfEq{\PLARBREDONNES[3,2]}{}
- {\draw[PLfleche] (A11)--(A22) ;}
- {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;}
- \IfEq{\PLARBREDONNES[4,2]}{}
- {\draw[PLfleche] (R)--(A12) ;}
- {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;}
- \IfEq{\PLARBREDONNES[5,2]}{}
- {\draw[PLfleche] (A12)--(A23) ;}
- {\draw[PLfleche] (A12)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;}
- \IfEq{\PLARBREDONNES[6,2]}{}
- {\draw[PLfleche] (A12)--(A24) ;}
- {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;}
- \IfEq{\PLARBREDONNES[7,2]}{}
- {\draw[PLfleche] (R)--(A13) ;}
- {\draw[PLfleche] (R)--(A13) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;}
- \IfEq{\PLARBREDONNES[8,2]}{}
- {\draw[PLfleche] (A13)--(A25) ;}
- {\draw[PLfleche] (A13)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;}
- \IfEq{\PLARBREDONNES[9,2]}{}
- {\draw[PLfleche] (A13)--(A26) ;}
- {\draw[PLfleche] (A13)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[9,3]}] {{\PLARBREDONNES[9,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[1,2]}
+ {\draw[PLfleche] (R)--(A11) ;}
+ {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[2,2]}
+ {\draw[PLfleche] (A11)--(A21) ;}
+ {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[3,2]}
+ {\draw[PLfleche] (A11)--(A22) ;}
+ {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[4,2]}
+ {\draw[PLfleche] (R)--(A12) ;}
+ {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[5,2]}
+ {\draw[PLfleche] (A12)--(A23) ;}
+ {\draw[PLfleche] (A12)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[6,2]}
+ {\draw[PLfleche] (A12)--(A24) ;}
+ {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[7,2]}
+ {\draw[PLfleche] (R)--(A13) ;}
+ {\draw[PLfleche] (R)--(A13) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[8,2]}
+ {\draw[PLfleche] (A13)--(A25) ;}
+ {\draw[PLfleche] (A13)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[9,2]}
+ {\draw[PLfleche] (A13)--(A26) ;}
+ {\draw[PLfleche] (A13)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[9,3]}] {{\PLARBREDONNES[9,2]}} ;}
}{}
%arbre2x3
\IfEq{\PLAPtype}{2x3}
@@ -2711,30 +2713,30 @@
\node[noeud] (A25) at ({2*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[7,1]};
\node[noeud] (A26) at ({2*\PLAPespniv},{-5*\PLAPespfeuille}) {\PLARBREDONNES[8,1]};
%branches
- \IfEq{\PLARBREDONNES[1,2]}{}
- {\draw[PLfleche] (R)--(A11) ;}
- {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;}
- \IfEq{\PLARBREDONNES[5,2]}{}
- {\draw[PLfleche] (R)--(A12) ;}
- {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;}
- \IfEq{\PLARBREDONNES[2,2]}{}
- {\draw[PLfleche] (A11)--(A21) ;}
- {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;}
- \IfEq{\PLARBREDONNES[3,2]}{}
- {\draw[PLfleche] (A11)--(A22) ;}
- {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;}
- \IfEq{\PLARBREDONNES[4,2]}{}
- {\draw[PLfleche] (A11)--(A23) ;}
- {\draw[PLfleche] (A11)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;}
- \IfEq{\PLARBREDONNES[6,2]}{}
- {\draw[PLfleche] (A12)--(A24) ;}
- {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;}
- \IfEq{\PLARBREDONNES[7,2]}{}
- {\draw[PLfleche] (A12)--(A25) ;}
- {\draw[PLfleche] (A12)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;}
- \IfEq{\PLARBREDONNES[8,2]}{}
- {\draw[PLfleche] (A12)--(A26) ;}
- {\draw[PLfleche] (A12)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[1,2]}
+ {\draw[PLfleche] (R)--(A11) ;}
+ {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[5,2]}
+ {\draw[PLfleche] (R)--(A12) ;}
+ {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[2,2]}
+ {\draw[PLfleche] (A11)--(A21) ;}
+ {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[3,2]}
+ {\draw[PLfleche] (A11)--(A22) ;}
+ {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[4,2]}
+ {\draw[PLfleche] (A11)--(A23) ;}
+ {\draw[PLfleche] (A11)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[6,2]}
+ {\draw[PLfleche] (A12)--(A24) ;}
+ {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[7,2]}
+ {\draw[PLfleche] (A12)--(A25) ;}
+ {\draw[PLfleche] (A12)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[8,2]}
+ {\draw[PLfleche] (A12)--(A26) ;}
+ {\draw[PLfleche] (A12)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;}
}{}
%arbre2x3
\IfEq{\PLAPtype}{3x3}
@@ -2754,43 +2756,43 @@
\node[noeud] (A28) at ({2*\PLAPespniv},{-7*\PLAPespfeuille}) {\PLARBREDONNES[11,1]};
\node[noeud] (A29) at ({2*\PLAPespniv},{-8*\PLAPespfeuille}) {\PLARBREDONNES[12,1]};
%branches
- \IfEq{\PLARBREDONNES[1,2]}{}
- {\draw[PLfleche] (R)--(A11) ;}
- {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;}
- \IfEq{\PLARBREDONNES[5,2]}{}
- {\draw[PLfleche] (R)--(A12) ;}
- {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;}
- \IfEq{\PLARBREDONNES[9,2]}{}
- {\draw[PLfleche] (R)--(A13) ;}
- {\draw[PLfleche] (R)--(A13) node[probas,PLetiquette,{\PLARBREDONNES[9,3]}] {{\PLARBREDONNES[9,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[1,2]}{}
+ {\draw[PLfleche] (R)--(A11) ;}
+ {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[5,2]}{}
+ {\draw[PLfleche] (R)--(A12) ;}
+ {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[9,2]}{}
+ {\draw[PLfleche] (R)--(A13) ;}
+ {\draw[PLfleche] (R)--(A13) node[probas,PLetiquette,{\PLARBREDONNES[9,3]}] {{\PLARBREDONNES[9,2]}} ;}
%N2
- \IfEq{\PLARBREDONNES[2,2]}{}
- {\draw[PLfleche] (A11)--(A21) ;}
- {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;}
- \IfEq{\PLARBREDONNES[3,2]}{}
- {\draw[PLfleche] (A11)--(A22) ;}
- {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;}
- \IfEq{\PLARBREDONNES[4,2]}{}
- {\draw[PLfleche] (A11)--(A23) ;}
- {\draw[PLfleche] (A11)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;}
- \IfEq{\PLARBREDONNES[6,2]}{}
- {\draw[PLfleche] (A12)--(A24) ;}
- {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;}
- \IfEq{\PLARBREDONNES[7,2]}{}
- {\draw[PLfleche] (A12)--(A25) ;}
- {\draw[PLfleche] (A12)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;}
- \IfEq{\PLARBREDONNES[8,2]}{}
- {\draw[PLfleche] (A12)--(A26) ;}
- {\draw[PLfleche] (A12)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;}
- \IfEq{\PLARBREDONNES[10,2]}{}
- {\draw[PLfleche] (A13)--(A27) ;}
- {\draw[PLfleche] (A13)--(A27) node[probas,PLetiquette,{\PLARBREDONNES[10,3]}] {{\PLARBREDONNES[10,2]}} ;}
- \IfEq{\PLARBREDONNES[11,2]}{}
- {\draw[PLfleche] (A13)--(A28) ;}
- {\draw[PLfleche] (A13)--(A28) node[probas,PLetiquette,{\PLARBREDONNES[11,3]}] {{\PLARBREDONNES[11,2]}} ;}
- \IfEq{\PLARBREDONNES[12,2]}{}
- {\draw[PLfleche] (A13)--(A29) ;}
- {\draw[PLfleche] (A13)--(A29) node[probas,PLetiquette,{\PLARBREDONNES[12,3]}] {{\PLARBREDONNES[12,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[2,2]}
+ {\draw[PLfleche] (A11)--(A21) ;}
+ {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[3,2]}
+ {\draw[PLfleche] (A11)--(A22) ;}
+ {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[4,2]}
+ {\draw[PLfleche] (A11)--(A23) ;}
+ {\draw[PLfleche] (A11)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[6,2]}
+ {\draw[PLfleche] (A12)--(A24) ;}
+ {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[7,2]}
+ {\draw[PLfleche] (A12)--(A25) ;}
+ {\draw[PLfleche] (A12)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[8,2]}
+ {\draw[PLfleche] (A12)--(A26) ;}
+ {\draw[PLfleche] (A12)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[10,2]}
+ {\draw[PLfleche] (A13)--(A27) ;}
+ {\draw[PLfleche] (A13)--(A27) node[probas,PLetiquette,{\PLARBREDONNES[10,3]}] {{\PLARBREDONNES[10,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[11,2]}
+ {\draw[PLfleche] (A13)--(A28) ;}
+ {\draw[PLfleche] (A13)--(A28) node[probas,PLetiquette,{\PLARBREDONNES[11,3]}] {{\PLARBREDONNES[11,2]}} ;}
+ \ifstrempty{\PLARBREDONNES[12,2]}
+ {\draw[PLfleche] (A13)--(A29) ;}
+ {\draw[PLfleche] (A13)--(A29) node[probas,PLetiquette,{\PLARBREDONNES[12,3]}] {{\PLARBREDONNES[12,2]}} ;}
}{}
}
{
diff --git a/macros/latex/contrib/recorder-fingering/README.md b/macros/latex/contrib/recorder-fingering/README.md
index d0d5179023..4116341d1d 100644
--- a/macros/latex/contrib/recorder-fingering/README.md
+++ b/macros/latex/contrib/recorder-fingering/README.md
@@ -1,8 +1,8 @@
# recorder-fingering
-Version 1.0 February 17, 2023
+Version 1.1 February 20, 2023
-LaTeX package for recorder fingering diagrams. Support for all standard F and C recorder fingerings, with the ability to add new fingerings as needed.
+The `recorder-fingering` package provides support for generating fingering diagrams for baroque fingering recorders. Standard fingerings are provided for recorders in both C and F, along with methods to create and display alternate fingerings for trills, etc.
# Sample of what you can do with it:
diff --git a/macros/latex/contrib/recorder-fingering/RecorderInCchart.png b/macros/latex/contrib/recorder-fingering/RecorderInCchart.png
deleted file mode 100644
index 2dc30ed9f3..0000000000
--- a/macros/latex/contrib/recorder-fingering/RecorderInCchart.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/recorder-fingering/recorder-fingering.pdf b/macros/latex/contrib/recorder-fingering/recorder-fingering.pdf
index a513c2c860..289cbdbe21 100644
--- a/macros/latex/contrib/recorder-fingering/recorder-fingering.pdf
+++ b/macros/latex/contrib/recorder-fingering/recorder-fingering.pdf
Binary files differ
diff --git a/macros/latex/contrib/recorder-fingering/recorder-fingering.sty b/macros/latex/contrib/recorder-fingering/recorder-fingering.sty
index 6c5f447f72..1b4aebc23c 100644
--- a/macros/latex/contrib/recorder-fingering/recorder-fingering.sty
+++ b/macros/latex/contrib/recorder-fingering/recorder-fingering.sty
@@ -25,12 +25,13 @@
%
% recorder-fingering.tex, recorder-fingering.pdf
%
-% Version 1.0 2023/02/17
+% Version 1.1 2023/02/20
\NeedsTeXFormat{LaTeX2e}[2022/11/01]
-\ProvidesPackage{recorder-fingering}[2023/02/17 v1.0 Recorder fingering diagrams]
+\ProvidesPackage{recorder-fingering}[2023/02/20 v1.1 Recorder fingering diagrams]
\RequirePackage{tikz}
\usetikzlibrary{calc}
-\RequirePackage{graphicx}
+\RequirePackage{graphicx}
+% First set up TikZ styles for the diagrams
% Split node code from
% https://tex.stackexchange.com/a/657282/2693
% These styles are local to the package
@@ -60,58 +61,115 @@ h/.style={node split half=-90}, % finger half hole
top double/.style={circle,minimum size=7pt,inner sep=0pt,draw,##1},
bottom double/.style={circle,minimum size=6pt,inner sep=0pt,draw,##1},
}}
-\ExplSyntaxOn
-
+\ExplSyntaxOn
% Error messages
\msg_new:nnnn {recorder-fingering}{too-few}{\\You\ haven't\ provided\ enough\ holes!}{Fingerings\ must\ specify\ all\ 8\ holes\ (thumb\ +\ all\ 7\ fingers)}
\msg_new:nnnn {recorder-fingering}{key-exists}{\\This\ fingering\ is\ already\ defined!}{Use\ the\ starred\ version\ of\ the\ command\ or\ \token_to_str:N \AddFingerings\ instead\ to\ override\ existing\ fingerings.}
\msg_new:nnnn {recorder-fingering}{wrong-instrument}{\\This\ command\ only\ permits\ F\ and\ C\ fingerings!}{}
\msg_new:nnnn {recorder-fingering}{deprecated}{\\This\ command\ is\ deprecated.\ Please\ use\ \token_to_str:N \alto\ or\ \token_to_str:N \soprano\ instead.}{}
+\msg_new:nnnn {recorder-fingering}{no-hole}{\\The\ recorder\ does't\ have\ enough\ holes\ to\ trill\ here.\ Please\ use\ hole\ numbers\ between\ 1\ and\ 7!}{}
+\msg_new:nnnn {recorder-fingering}{key-not-found}{\\Key\ not\ found}{}
-% Command parameters
-\keys_define:nn {fingering}{
- thumboffset.bool_set:N = \g_fingering_thumboffset_bool,
- width.dim_set:N = \g_fingering_size_dim,
- thumboffset.initial:n = {true},
- width.initial:n = {20pt}
-}
-\keys_define:nn {fingering / command}{
- thumboffset.bool_set:N = \g_fingering_command_thumboffset_bool,
- width.dim_set:N = \l_fingering_command_size_dim,
-}
-\NewDocumentCommand{\fingeringSetup}{m}{
- \keys_set:nn {fingering} {#1}
-}
+% Set up the property lists for F and C fingerings
+\prop_new:N \l_fingering_F_prop
+\prop_new:N \l_fingering_C_prop
+
+% Set up sharp/flat conversion list
+\prop_new:N \l_fingering_F_sharp_flat_prop
+\prop_new:N \l_fingering_C_sharp_flat_prop
+
+% Set up transposition tables for later
+\prop_new:N \l_fingering_C_to_F_prop
+\prop_new:N \l_fingering_F_to_C_prop
+
+% Set up the clists for the fingering vectors themselves
+\clist_new:N \l_fingering_fing_clist
+\clist_new:N \l_fingering_topholes_clist
+
+% Set up the trill holes clist
+\clist_new:N \l_fingering_trill_holes_clist
+
+\prop_new:N \l_fingering_pointer_prop
+\prop_set_from_keyval:Nn \l_fingering_pointer_prop {
+ LPointer = {$\rightarrow$},
+ RPointer = {$\leftarrow$}
+ }
+
+
+
+% Definitions of the hole positions. To be used to add trill notation.
+
+
+\tl_const:Nn \c_fingering_thumb_tl {0.5}
+\tl_const:Nn \c_fingering_one_tl {1.0}
+\tl_const:Nn \c_fingering_two_tl {1.5}
+\tl_const:Nn \c_fingering_three_tl {2.0}
+\tl_const:Nn \c_fingering_four_tl {2.5}
+\tl_const:Nn \c_fingering_five_tl {3.0}
+\tl_const:Nn \c_fingering_six_seven_x_tl {0.15}
+\tl_const:Nn \c_fingering_six_top_tl {3.5}
+\tl_const:Nn \c_fingering_six_bot_tl {3.575}
+\tl_const:Nn \c_fingering_seven__top_tl {4.0}
+\tl_const:Nn \c_fingering_seven_bot_tl {4.075}
+\tl_const:Nn \c_fingering_bell_tl {4.5}
% Manage the thumb offset parameters
-\tl_set:Nn \g_fingering_thumboffset_x {-.5}
-\tl_set:Nn \g_fingering_thumboffset_y {-.25}
+\tl_set:Nn \l_fingering_thumboffset_x {-.5}
+\tl_set:Nn \l_fingering_thumboffset_y {-.25}
\cs_new:Nn \fingering_offset_reset:
-{\tl_gset:Nn \g_fingering_thumboffset_x {-.5}
-\tl_gset:Nn \g_fingering_thumboffset_y {-.25}
+{\tl_gset:Nn \l_fingering_thumboffset_x {-.5}
+\tl_gset:Nn \l_fingering_thumboffset_y {-.25}
}
\cs_new:Nn \fingering_offset_zero:
-{\tl_gset:Nn \g_fingering_thumboffset_x {0}
-\tl_gset:Nn \g_fingering_thumboffset_y {0}
+{\tl_gset:Nn \l_fingering_thumboffset_x {0}
+\tl_gset:Nn \l_fingering_thumboffset_y {0}
}
\cs_new:Nn \fingering_set_thumboffset: {
-\bool_if:nTF {\g_fingering_command_thumboffset_bool}
+\bool_if:nTF {\l_fingering_thumboffset_bool}
{\fingering_offset_reset:}
{\fingering_offset_zero:}
}
-% Set up the property lists for F and C fingerings
-\prop_new:N \l_fingering_F_prop
-\prop_new:N \l_fingering_C_prop
-% Set up transposition tables for later
-\prop_new:N \l_fingering_C_to_F_prop
-\prop_new:N \l_fingering_F_to_C_prop
+\tl_new:N \l_fingering_top_bottom_space_tl
+\tl_new:N \l_fingering_trill_offset_tl
+\bool_new:N \l_fingering_trill_offset_LR_bool
-% Set up the clists for the fingering vectors themselves
-\clist_new:N \l_fingering_fing_clist
-\clist_new:N \l_fingering_topholes_clist
+% Command parameters
+\keys_define:nn {fingering}{
+ thumboffset.bool_set:N = \l_fingering_thumboffset_bool,
+ width.dim_set:N = \l_fingering_size_dim,
+ thumboffset.initial:n = {true},
+ width.initial:n = {20pt},
+ LHRHspace.tl_set:N = \l_fingering_top_bottom_space_tl,
+ LHRHspace.initial:n = {4pt},
+ LHRHdivider.bool_set:N = \l_fingering_LHRH_divider_bool,
+ LHRHdivider.initial:n = {false},
+ LPointer.prop_put:N = \l_fingering_pointer_prop,
+ RPointer.prop_put:N = \l_fingering_pointer_prop,
+ trill.clist_set:N = \l_fingering_trill_holes_clist,
+ trilldir.choice:,
+ trilldir / L .code:n =
+ {\bool_set_false:N \l_fingering_trill_offset_LR_bool
+ \tl_set:Nn \l_fingering_trill_offset_tl {-.5}
+ \prop_get:NnN \l_fingering_pointer_prop {LPointer} \l_fingering_trill_pointer_tl},
+ trilldir / R .code:n =
+ {\bool_set_false:N \l_fingering_trill_offset_LR_bool
+ \tl_set:Nn \l_fingering_trill_offset_tl {.5}
+ \prop_get:NnN \l_fingering_pointer_prop {RPointer} \l_fingering_trill_pointer_tl},
+ trilldir / LR .code:n = {
+ \bool_set_true:N \l_fingering_trill_offset_LR_bool },
+ trilldir.initial:n = LR
+}
+
+
+\NewDocumentCommand{\fingeringSetup}{m}{
+ \keys_set:nn {fingering} {#1}
+ \keys_set:nn {fingering} {trill={}} % trill makes no sense as a global option
+}
+% Set defaults
+\fingeringSetup{thumboffset=true,trilldir=LR,LHRHdivider=true,LHRHspace=10pt,width=20pt}
% Generic fingering generator: takes a clist, splits it between top holes and bottom holes
% and produces the corresponding diagram
@@ -121,36 +179,59 @@ bottom double/.style={circle,minimum size=6pt,inner sep=0pt,draw,##1},
{
\clist_set:Nn \l_fingering_holes_clist {#1}
\clist_clear:N \l_fingering_topholes_clist
- \int_step_inline:nn { 6 } {
+ \int_step_inline:nn { 4 } {
\clist_pop:NNF \l_fingering_holes_clist \l_tmpa_tl { \msg_error:nn { recorder-fingering } { too-few }}
\clist_put_right:NV \l_fingering_topholes_clist \l_tmpa_tl }
- \resizebox{\l_fingering_command_size_dim}{!}{
+ \resizebox{\l_fingering_size_dim}{!}{
\begin{tikzpicture}[/fingering]
-% display the topholes
+% display the thumb and first three topholes
\fingering_set_thumboffset:
\foreach[expand~list]~\x~[count=\xi]~in~\l_fingering_topholes_clist {
- \node[hole=\x]~at~(0+\g_fingering_thumboffset_x,-\xi/2+\g_fingering_thumboffset_y)~{};
+ \node[hole=\x]~at~(0+\l_fingering_thumboffset_x,-\xi/2+\l_fingering_thumboffset_y)~{};
\fingering_offset_zero:}
+% add the divider if selected
+ \bool_if:NTF \l_fingering_LHRH_divider_bool
+ {\draw[overlay]~($(-.5,-2.25)+(0,-\l_fingering_top_bottom_space_tl/2)$)~
+ --($(.5,-2.25)+(0,-\l_fingering_top_bottom_space_tl/2)$);}
+ {}
+% now shift the bottom holes to make a small space between LH and RH holes
+ \begin{scope}[yshift=-\l_fingering_top_bottom_space_tl]
+ \clist_pop:NN \l_fingering_holes_clist \l_tmpa_tl
+ \node[hole=\l_tmpa_tl]~at~(0,-\c_fingering_four_tl)~{};
+ \clist_pop:NN \l_fingering_holes_clist \l_tmpa_tl
+ \node[hole=\l_tmpa_tl]~at~(0,-\c_fingering_five_tl)~{};
% display the bottom two paired holes
\clist_pop:NN \l_fingering_holes_clist \l_tmpa_tl
\int_case:nnTF {\l_tmpa_tl}{
- {0} {\node[top~double=0]~at~(.15,-7/2)~{};
- \node[bottom~double=0]~at~(-.15,-7.15/2)~{};}
- {2} {\node[top~double=1,]~at~(.15,-7/2)~{};
- \node[bottom~double=1]~at~(-.15,-7.15/2)~{};}
- {1} {\node[top~double=1]~at~(.15,-7/2)~{};
- \node[bottom~double=0]~at~(-.15,-7.15/2)~{};}
+ {0} {\node[top~double=0]~at~
+ (\c_fingering_six_seven_x_tl,-\c_fingering_six_top_tl)~{};
+ \node[bottom~double=0]~at~
+ (-\c_fingering_six_seven_x_tl,-\c_fingering_six_bot_tl)~{};}
+ {2} {\node[top~double=1,]~at~
+ (\c_fingering_six_seven_x_tl,-\c_fingering_six_top_tl)~{};
+ \node[bottom~double=1]~at~
+ (-\c_fingering_six_seven_x_tl,-\c_fingering_six_bot_tl)~{};}
+ {1} {\node[top~double=1]~at~
+ (\c_fingering_six_seven_x_tl,-\c_fingering_six_top_tl)~{};
+ \node[bottom~double=0]~at~
+ (-\c_fingering_six_seven_x_tl,-\c_fingering_six_bot_tl)~{};}
}
{}
{}
\clist_pop:NN \l_fingering_holes_clist \l_tmpa_tl
\int_case:nnTF {\l_tmpa_tl}{
- {0} {\node[top~double=0,]~at~(.15,-8/2)~{};
- \node[bottom~double=0]~at~(-.15,-8.15/2)~{};}
- {2} {\node[top~double=1,]~at~(.15,-8/2)~{};
- \node[bottom~double=1]~at~(-.15,-8.15/2)~{};}
- {1} {\node[top~double=1,]~at~(.15,-8/2)~{};
- \node[bottom~double=0]~at~(-.15,-8.15/2)~{};}
+ {0} {\node[top~double=0,]~at~
+ (\c_fingering_six_seven_x_tl,-\c_fingering_seven__top_tl)~{};
+ \node[bottom~double=0]~at~
+ (-\c_fingering_six_seven_x_tl,-\c_fingering_seven_bot_tl)~{};}
+ {2} {\node[top~double=1,]~at~
+ (\c_fingering_six_seven_x_tl,-\c_fingering_seven__top_tl)~{};
+ \node[bottom~double=1]~at~
+ (-\c_fingering_six_seven_x_tl,-\c_fingering_seven_bot_tl)~{};}
+ {1} {\node[top~double=1,]~at~
+ (\c_fingering_six_seven_x_tl,-\c_fingering_seven__top_tl)~{};
+ \node[bottom~double=0]~at~
+ (-\c_fingering_six_seven_x_tl,-\c_fingering_seven_bot_tl)~{};}
}
{}
{}
@@ -158,36 +239,63 @@ bottom double/.style={circle,minimum size=6pt,inner sep=0pt,draw,##1},
\clist_if_empty:NTF \l_fingering_holes_clist
{}
{\clist_pop:NN \l_fingering_holes_clist \l_tmpa_tl
- \node[hole=\l_tmpa_tl]~at~(0,-9/2)~{};}
+ \node[hole=\l_tmpa_tl]~at~(0,-\c_fingering_bell_tl)~{};}
+% display trill arrows if present
+ \clist_if_empty:NTF \l_fingering_trill_holes_clist
+ {}
+ {
+ \clist_map_variable:NNn \l_fingering_trill_holes_clist \l_tmpa_tl
+ {\int_compare:nNnTF {\l_tmpa_tl} > {7}
+ {\msg_warning:nn { recorder-fingering } { no-hole }}
+ {\int_compare:nNnTF {\l_tmpa_tl} > {3}
+ {\tl_set:Nn \l_fingering_top_bottom_space_tl {0}}
+ {}
+ \bool_if:nTF {\l_fingering_trill_offset_LR_bool}
+ {\int_compare:nNnTF {\l_tmpa_tl} > {3}
+ {\tl_set:Nn \l_fingering_trill_offset_tl {.5}
+ \prop_get:NnN \l_fingering_pointer_prop {RPointer}
+ \l_fingering_trill_pointer_tl }
+ {\tl_set:Nn \l_fingering_trill_offset_tl {-.5}
+ \prop_get:NnN \l_fingering_pointer_prop {LPointer}
+ \l_fingering_trill_pointer_tl }
+ }
+ {}
+ \int_set:Nn \l_tmpb_int {\l_tmpa_tl+1}
+ \node[overlay]~at~($(\l_fingering_trill_offset_tl,
+ -\l_tmpb_int/2)+(0,\l_fingering_top_bottom_space_tl)
+ $)~{\l_fingering_trill_pointer_tl};
+ }
+ }
+ }
+ \end{scope}
\end{tikzpicture}}
}
+
+
+
+
% create variable version of the command
\cs_generate_variant:Nn \fingering_generate_fingering:n { V }
-
% Main user commands and synonyms
% First basic commands to display the fingering for any note
-\NewDocumentCommand{\Alto}{om}{
-\IfNoValueTF{#1}
- {\keys_set:nn {fingering / command} {width = \g_fingering_size_dim}
- \bool_set_eq:NN {\g_fingering_command_thumboffset_bool}{\g_fingering_thumboffset_bool}}
- {\bool_set_eq:NN {\g_fingering_command_thumboffset_bool}{\g_fingering_thumboffset_bool}
- \keys_set:nn {fingering /command } {#1}}
- \prop_get:NnN \l_fingering_F_prop {#2} \l_tmpa_tl
- \fingering_generate_fingering:V \l_tmpa_tl
+\NewDocumentCommand{\Alto}{O{}m}{
+ \group_begin:
+ \keys_set:nn {fingering} {#1}
+ \prop_get:NnN \l_fingering_F_prop {#2} \l_tmpa_tl
+ \fingering_generate_fingering:V \l_tmpa_tl
+ \group_end:
}
\cs_set_eq:NN \Sopranino \Alto
\cs_set_eq:NN \Bass \Alto
-\NewDocumentCommand{\Soprano}{om}{
-\IfNoValueTF{#1}
- {\keys_set:nn {fingering / command} {width = \g_fingering_size_dim}
- \bool_set_eq:NN {\g_fingering_command_thumboffset_bool}{\g_fingering_thumboffset_bool}}
- {\bool_set_eq:NN {\g_fingering_command_thumboffset_bool}{\g_fingering_thumboffset_bool}
- \keys_set:nn {fingering /command } {#1}}
- \prop_get:NnN \l_fingering_C_prop {#2} \l_tmpa_tl
- \fingering_generate_fingering:V \l_tmpa_tl
+\NewDocumentCommand{\Soprano}{O{}m}{
+ \group_begin:
+ \keys_set:nn {fingering} {#1}
+ \prop_get:NnN \l_fingering_C_prop {#2} \l_tmpa_tl
+ \fingering_generate_fingering:V \l_tmpa_tl
+ \group_end:
}
\cs_set_eq:NN \Tenor \Soprano
@@ -208,7 +316,7 @@ bottom double/.style={circle,minimum size=6pt,inner sep=0pt,draw,##1},
\NewDocumentCommand{\NewFfingering}{smm}{
\IfBooleanTF{#1}
{\prop_put:Nnn \l_fingering_F_prop {#2} {#3}}
- {\prop_get:NnNTF \l_fingering_F_prop {#2} \tl_tmpa_tl
+ {\prop_get:NnNTF \l_fingering_F_prop {#2} \l_tmpa_tl
{\msg_error:nn { recorder-fingering } { key-exists }}
{\prop_put:Nnn \l_fingering_F_prop {#2} {#3}}
}}
@@ -216,11 +324,42 @@ bottom double/.style={circle,minimum size=6pt,inner sep=0pt,draw,##1},
\NewDocumentCommand{\NewCfingering}{smm}{
\IfBooleanTF{#1}
{\prop_put:Nnn \l_fingering_C_prop {#2} {#3}}
- {\prop_get:NnNTF \l_fingering_C_prop {#2} \tl_tmpa_tl
+ {\prop_get:NnNTF \l_fingering_C_prop {#2} \l_tmpa_tl
{\msg_error:nn { recorder-fingering } { key-exists }}
{\prop_put:Nnn \l_fingering_C_prop {#2} {#3}}
}}
+% macros to copy fingerings (for now internal only)
+\cs_new_protected:Nn \fingering_add_F_fingering:nn {\prop_put:Nnn \l_fingering_F_prop {#1} {#2}}
+\cs_new_protected:Nn \fingering_add_C_fingering:nn {\prop_put:Nnn \l_fingering_C_prop {#1} {#2}}
+\cs_generate_variant:Nn \fingering_add_F_fingering:nn {nV}
+\cs_generate_variant:Nn \fingering_add_C_fingering:nn {nV}
+
+% These macros take two arguments: a new key and an existing key, and create a new
+% fingering in the associated property list with the new key name and the existing key
+% fingering
+ \cs_new_protected:Nn \fingering_copy_F:nn
+ {\prop_get:NnN \l_fingering_F_sharp_flat_prop {#1} \l_tmpa_tl
+ \prop_get:NoN \l_fingering_F_prop {\l_tmpa_tl} \l_tmpb_tl
+ \fingering_add_F_fingering:nV {#1} {\l_tmpb_tl}}
+
+\cs_new_protected:Nn \fingering_copy_C:nn
+ {\prop_get:NnN \l_fingering_C_sharp_flat_prop {#1} \l_tmpa_tl
+ \prop_get:NoN \l_fingering_C_prop {\l_tmpa_tl} \l_tmpb_tl
+ \fingering_add_C_fingering:nV {#1} {\l_tmpb_tl}}
+
+\NewDocumentCommand{\debug}{O{f}m}{
+ \str_case:nn {#1}{
+ {f}{\prop_get:NnNTF \l_fingering_F_prop {#2} \l_tmpa_tl
+ {}{\msg_error:nn { recorder-fingering } { key-not-found }}
+ \l_tmpa_tl}
+ {c}{\prop_get:NnNTF \l_fingering_C_prop {#2} \l_tmpa_tl
+ {}{\msg_error:nn { recorder-fingering } { key-not-found }}
+ \l_tmpa_tl
+ }
+ }
+}
+
% Now add all of the basic fingerings
\AddFingerings{F}{
F = {1,1,1,1,1,1,2,2},
@@ -283,39 +422,44 @@ bottom double/.style={circle,minimum size=6pt,inner sep=0pt,draw,##1},
eb' = {t,0,1,1,0,1,2,0}
}
+% These are equivalent lists for generating the # versions
+% new_key = {existing_key}
+\prop_set_from_keyval:Nn \l_fingering_F_sharp_flat_prop {
+ F# = {Gb},
+ G# = {Ab},
+ A# = {Bb},
+ C# = {Db},
+ D# = {Eb},
+ f# = {gb},
+ g# = {ab},
+ a# = {bb},
+ c# = {db},
+ d# = {eb},
+ f#' = {gb'},
+ g#' = {ab'}
+}
+\prop_set_from_keyval:Nn \l_fingering_C_sharp_flat_prop {
+ C# = {Db},
+ D# = {Eb},
+ Bb = {F},
+ F# = {Gb},
+ G# = {Ab},
+ A# = {Bb},
+ c# = {db},
+ d# = {eb},
+ f# = {gb},
+ g# = {ab},
+ a# = {bb},
+ c#' = {db'},
+ d#' = {eb'}
+}
+
+% Add all the sharp fingerings.
+ \prop_map_function:NN \l_fingering_F_sharp_flat_prop \fingering_copy_F:nn
+ \prop_map_function:NN \l_fingering_C_sharp_flat_prop \fingering_copy_C:nn
+
% Transposition tables (may be useful; currently not used)
\prop_set_from_keyval:Nn \l_fingering_F_to_C_prop {
- F = {C},
- Gb = {Db},
- G = {D},
- Ab = {Eb},
- A = {E},
- Bb = {F},
- B = {Gb},
- C = {G},
- Db = {Ab},
- D = {A},
- Eb = {Bb},
- E = {B},
- f = {c},
- gb = {db},
- g = {d},
- ab = {eb},
- a = {e},
- bb = {f},
- b = {gb},
- c = {g},
- db = {ab},
- d = {a},
- eb = {bb},
- e = {b},
- f' = {c'},
- gb' = {db'},
- g' = {d'},
- ab' = {eb'}
- }
-
-\prop_set_from_keyval:Nn \l_fingering_C_to_F_prop {
C = {F},
Db = {Gb},
D = {G},
@@ -344,9 +488,39 @@ bottom double/.style={circle,minimum size=6pt,inner sep=0pt,draw,##1},
db' = {gb'},
d' = {g'},
eb' = {ab'}
+ }
+
+\prop_set_from_keyval:Nn \l_fingering_C_to_F_prop {
+ F = {C},
+ Gb = {Db},
+ G = {D},
+ Ab = {Eb},
+ A = {E},
+ Bb = {F},
+ B = {Gb},
+ C = {G},
+ Db = {Ab},
+ D = {A},
+ Eb = {Bb},
+ E = {B},
+ f = {c},
+ gb = {db},
+ g = {d},
+ ab = {eb},
+ a = {e},
+ bb = {f},
+ b = {gb},
+ c = {g},
+ db = {ab},
+ d = {a},
+ eb = {bb},
+ e = {b},
+ f' = {c'},
+ gb' = {db'},
+ g' = {d'},
+ ab' = {eb'}
}
-
% Backwards (in)compatibility with the initial version of the package
\NewDocumentCommand{\fingering}{}{
diff --git a/macros/latex/contrib/recorder-fingering/recorder-fingering.tex b/macros/latex/contrib/recorder-fingering/recorder-fingering.tex
index c2cfbe9cae..066369408d 100644
--- a/macros/latex/contrib/recorder-fingering/recorder-fingering.tex
+++ b/macros/latex/contrib/recorder-fingering/recorder-fingering.tex
@@ -24,7 +24,7 @@
\DefineShortVerb{\|}
\title{The \texttt{recorder-fingering} package}
\author{Alan Munn\\amunn@msu.edu}
-\date{Version 1.0\\February 17, 2023}
+\date{Version 1.1\\February 20, 2023}
\lstset{%
basicstyle=\ttfamily\small,
@@ -39,7 +39,7 @@
}
\newcommand*{\pkg}[1]{\texttt{#1}}
-\newcolumntype{t}{>{\ttfamily}r}
+\newcolumntype{t}[1]{>{\ttfamily}#1}
\newcolumntype{T}{>{\ttfamily}c}
\newcommand*{\bs}{\textbackslash}
\setlength{\droptitle}{-1in}
@@ -62,7 +62,7 @@ This package provides five commands (|\Sopranino|, |\Soprano|, |\Alto|, |\Tenor|
\begin{table}[htpb]
\centering
-\begin{tabularx}{.8\textwidth}{tX}
+\begin{tabularx}{.8\textwidth}{t{r}X}
\toprule
\bs Sopranino [<parameters>]\{<note>\} & Display a fingering diagram for note in F\\
\bs Soprano [<parameters>]\{<note>\} & Display a fingering diagram for note in C\\
@@ -77,31 +77,45 @@ This package provides five commands (|\Sopranino|, |\Soprano|, |\Alto|, |\Tenor|
The notes range from C–Eb for recorders in C (|\Soprano| and |\Tenor|) or F–Ab for recorders in F (|\Sopranino| and |\Alto|).
Notes are noted as C-B (first octave) c-b (second octave) and c'–eb' (third octave) with an equivalent scheme starting at F for the recorders in F.
+
+Enharmonic notes are available for any of the flat/sharp notes (i.e., Db and C\#, etc. are both defined by default.)
\subsection{Display parameters}
-Each display command allows two display parameters to be set.
+Fingering diagrams are customizable either globally using |\fingeringSetup{}| or locally as an optional argument passed to any individual command.
\begin{table}[htpb]
\centering
-\begin{tabularx}{.9\textwidth}{tX}
+\begin{tabularx}{.9\textwidth}{t{l}X}
\toprule
thumboffset = <true/false> & Display the thumb hole offset or not (default = \pkg{true})\\
width = <length> & Width of the diagram (default = \pkg{20pt}). Height adjusts proportionally\\
+LHRHdivider = <true/false> & Display a line separating the left and right hand holes (default = \pkg{true})\\
+LHRHspace = <length> & Space between the left hand and right hand holds (default = \pkg{10pt})\\
+trilldir = <L/R/LR> & trill arrows uniformly to the Left or Right, or top 3 holes L, bottom 4 holes R\\
+Lpointer = <left trill pointer> & changes the left pointer for trills\\
+Rpointer = <right trill pointer> & changes the right pointer for trills\\
+trill = \{<list of holes>\} & add a trill marker at each hole position in the list (local use only)\\
\bottomrule
\end{tabularx}
-\caption{Display parameters}
+\caption{Display options}
\end{table}
The |width| parameter sets the width of the diagram; it defaults to |20pt| for the default thumb offset diagrams. If you set |thumboffset=false| you will probably want to choose a smaller value e.g. |10pt|.
+The |trill| parameter sets an arrow pointing to a hole (numbered 1-7 from the top hole). This parameter is only in effect when using the display commands. It will place an arrow on the side specified by |trilldir| at a single hole or comma separated list of holes. e.g. |trill=3| sets an arrow at hole 3, |trill={6,7}| sets arrows at holes 6 and 7.
+
+The trill arrow direction can be specified using the |trilldir| parameter. Setting it to |L| places all arrows on the left, setting it to |R| places all arrows on the right. Setting it to |LR| places arrows to the left on holes 1-3 and on the right on holes 4-7.
+
+The |Lpointer| and |Rpointer| parameters set the left and right trill pointers. The default values are |Lpointer={$\rightarrow$}| and |Rpointer={$\leftarrow$}|.
+
You can set the parameters individually for any particular display command, but most likely you'll want global settings. To set the parameters globally use the command |\fingeringSetup|
e.g. |\fingeringSetup{width=12pt,thumboffset=false}| makes all diagrams use an inline thumb hole and 12pt width.
\begin{table}[htpb]
\centering
-\begin{tabular}{TT}
-\pkg{\bs Alto\{c\}} & \pkg{\bs Soprano[width=10pt,thumboffset=false]\{f\}}\\
+\begin{tabular}{TTT}
+\bs Alto\{c\} & \bs Soprano[width=10pt,thumboffset=false]\{f\} & \bs Alto[trill=3]\{C\}\\
\\
-\Alto{c} & \Soprano[width=10pt,thumboffset=false]{f}
+\Alto{c} & \Soprano[width=10pt,thumboffset=false]{f} & \Alto[trill=3]{C}
\end{tabular}
\caption{Example fingering commands}
\end{table}
@@ -115,7 +129,7 @@ Fingerings are specified using an 8 (and possibly 9) element comma separated lis
\begin{table}[htpb]
\centering
-\begin{tabularx}{.8\textwidth}{tX}
+\begin{tabularx}{.8\textwidth}{t{r}X}
\toprule
0 & open hole\\
1 & closed hole (positions 0-5); single closed hole (positions 6,7)\\
@@ -145,48 +159,54 @@ The third command is designed to enter a set of new fingerings at once. It will
\end{table}
%\clearpage
\subsection{New fingering examples}
-\NewFfingering{ABbtrill}{0,1,1,1,1,1,0,0}
+\NewFfingering{BbAtrill}{0,1,1,1,1,1,0,0}
\AddFingerings{C}{
EFtrill = {0,1,1,1,1,1,0,0},
altd = {0,1,1,1,1,1,2,2}
}
+\AddFingerings{F}{
+ agtrill = {0,0,1,1,1,1,0,0}}
\begin{lstlisting}
-\NewFfingering{ABbtrill}{0,1,1,1,1,1,0,0}
-\Alto{ABbtrill}
+\NewFfingering{BbAtrill}{0,1,1,1,1,1,0,0}
+\Alto[trill=5]{BbAtrill}
\end{lstlisting}
-\Alto{ABbtrill}
-
+\Alto[trill=5]{BbAtrill}
+\clearpage
\begin{lstlisting}
\AddFingerings{C}{
EFtrill = {0,1,1,1,1,1,0,0},
altd = {0,1,1,1,1,1,2,2}
+\AddFingerings{F}{
+ agtrill = {0,0,1,1,1,1,0,0}
}
\Soprano{EFtrill}
-\Soprano{altd}
+\Soprano{altd}\hfil
+\Alto{agtrill}\hfil
\end{lstlisting}
-\Soprano{EFtrill}
-\Soprano{altd}
+\Soprano{EFtrill}\hfil
+\Soprano{altd}\hfil
+\Alto{agtrill}
\section{Version History}
-Version 0.5 of this package (the initial version) was in response to a \href{https://tex.stackexchange.com/q/674847/2693}{TeX.se question} and used a substantially different set of user commands. The current version (1.0) is more flexible and has a more useable user interface. Bug reports and feature requests are welcome at the \href{https://github.com/amunn/recorder-fingering/issues}{GitHub bug tracker}.
+Version 0.5 of this package (the initial version) was in response to a \href{https://tex.stackexchange.com/q/674847/2693}{TeX.se question} and used a substantially different set of user commands. The current version (1.0) is more flexible and has a more useable user interface. Version 1.1 added support for trill annotation, and added a separation between the left and right hand holes. Bug reports and feature requests are welcome at the \href{https://github.com/amunn/recorder-fingering/issues}{GitHub bug tracker}.
\section{Acknowledgements}
-This is my first attempt to write a package using |expl3|. Thanks to Jonathan P. Spratte for suggesting how to split fingering vectors and the various LaTeX development team members (David Carlisle, Ulrike Fischer, Phelype Olenik and Joseph Wright) who have answered random |expl3| questions in the TeX.se chat. Thanks also to all the TeX.se users who have both asked and answered questions on the site. Your questions encourage new packages like this one and your answers help make the code better.
+This is my first attempt to write a package using |expl3|. Thanks to Jonathan P. Spratte for suggesting how to split fingering vectors and the various LaTeX development team members (David Carlisle, Ulrike Fischer, Phelype Olenik and Joseph Wright) who have answered random |expl3| questions in the TeX.se chat. Thanks to Bob Tennent, whose suggestions resulted in version 1.1. Thanks also to all the TeX.se users who have both asked and answered questions on the site. Your questions encourage new packages like this one and your answers help make the code better.
\clearpage
-\section{Samples} The chart below shows all of the possible fingerings.
+\section{Samples} The chart below shows all of the possible fingerings.\footnote{Since the top row of the table represents the input name, \pkg{b} and \pkg{\#} are used instead the proper symbols \flat\ and \sharp.}
\section*{Recorder in C soprano chart}
\begin{tabular}{cccccccccccc}
\toprule
-C & Db & D & Eb & E & F & Gb & G & Ab & A & Bb & B\\
+C & C\# & D & Eb & E & F & F\# & G & Ab & A & Bb & B\\
\midrule
\Soprano{C} &
-\Soprano{Db} &
+\Soprano{C#} &
\Soprano{D} &
\Soprano{Eb} &
\Soprano{E} &
\Soprano{F} &
-\Soprano{Gb} &
+\Soprano{F#} &
\Soprano{G} &
\Soprano{Ab} &
\Soprano{A} &
@@ -198,7 +218,7 @@ C & Db & D & Eb & E & F & Gb & G & Ab & A & Bb & B\\
\bigskip
\begin{tabular}{cccccccccccc}
\toprule
-c & db & d & eb & e & f & gb & g & ab & a & bb & b\\
+c & c\# & d & eb & e & f & f\# & g & ab & a & bb & b\\
\midrule
\Soprano{c} &
\Soprano{db} &
@@ -223,7 +243,7 @@ Here's what the fingering diagrams look like with |thumboffset=false|:
\begin{tabular}{cccc}
\toprule
-c' & db' & d' & eb'\\
+c' & c\#' & d' & eb'\\
\midrule
\Soprano{c'} &
\Soprano{db'} &
diff --git a/macros/unicodetex/latex/bithesis/bithesis.dtx b/macros/unicodetex/latex/bithesis/bithesis.dtx
index 71252d8e2b..ce6de30aec 100644
--- a/macros/unicodetex/latex/bithesis/bithesis.dtx
+++ b/macros/unicodetex/latex/bithesis/bithesis.dtx
@@ -21,7 +21,7 @@
%<thesis>\ProvidesExplClass{bithesis}
%<report>\ProvidesExplClass{bitreport}
%<beamer>\ProvidesExplClass{bitbeamer}
-%<cls>{2023-02-11}{3.3.1}{BIT Thesis Templates}
+%<cls>{2023-02-20}{3.4.0}{BIT Thesis Templates}
%
%<oldcls>\NeedsTeXFormat{LaTeX2e}[2020/10/01]
%<book>\ProvidesClass{bitbook}
@@ -30,7 +30,7 @@
%<oldcls> [2022/05/09 v2.1.1 BIT Thesis Templates]
%
%<*driver>
-\ProvidesFile{bithesis.dtx}[2023/02/11 3.3.1 BIT Thesis Templates]
+\ProvidesFile{bithesis.dtx}[2023/02/20 3.4.0 BIT Thesis Templates]
\documentclass[letterpaper]{l3doc}
\usepackage{dtx-style}
@@ -1027,6 +1027,30 @@
% \textit{一般不需要用户自行修改。}
% \end{function}
%
+% \begin{function}[added=2023-02-18]{publications/maxbibnames}
+% \begin{bitsyntax}[emph={[1]maxbibnames}]
+% maxbibnames = (*(3)|\marg{正整数}*)
+% \end{bitsyntax}
+%
+% 影响「攻读学位期间发表论文与研究成果清单」中所有名称列表(author、editor 等)的阈值。
+% 如果名称列表超过了该阈值,即,它包含的姓名数量超过 \marg{正整数},
+% 那么就会根据 \kvopt{publications/minbibnames}{正整数} 选项的设置进行自动截断。
+%
+% \end{function}
+%
+% \begin{function}[added=2023-02-18]{publications/minbibnames}
+% \begin{bitsyntax}[emph={[1]minbibnames}]
+% minbibnames = (*(1)|\marg{正整数}*)
+% \end{bitsyntax}
+%
+% 影响所有名称列表(author、editor 等)的限制值。如果某个列表包含的姓名数量超
+% 过 \marg{正整数},那么就会自动截断至 |minbibnames| 个姓名。|minbibnames| 的值必须小于或
+% 等于 |maxbibnames|。
+%
+% 对于用户来说,可以将 |minbibnames| 理解为「姓名列表的最小长度」。
+% 例如,你在全部文献中最低排在第四位,那么可以将 |minbibnames| 和 |maxbibnames| 都设置为 4。
+%
+% \end{function}
%
% \subsubsection{其他配置}
%
@@ -1104,7 +1128,7 @@
% 此时页码会使用罗马数字进行计数。
% \end{function}
%
-% \begin{function}{abstract}
+% \begin{function}[updated=2023-02-17]{abstract}
% \begin{bitsyntax}[emph={[1]abstract}]
% \begin{abstract}
% (*\meta{中文摘要}*)
@@ -1112,7 +1136,7 @@
% \end{bitsyntax}
% \end{function}
%
-% \begin{function}{abstractEn}
+% \begin{function}[updated=2023-02-17]{abstractEn}
% \begin{bitsyntax}[emph={[1]abstractEn}]
% \begin{abstractEn}
% (*\meta{英文摘要}*)
@@ -2224,6 +2248,10 @@
sorting .initial:n = {true},
omit .bool_set:N = \l_@@_publications_omit_bool,
omit .initial:n = {false},
+ maxbibnames .int_set:N = \l_@@_publications_maxbibnames_int,
+ maxbibnames .initial:n = {3},
+ minbibnames .int_set:N = \l_@@_publications_minbibnames_int,
+ minbibnames .initial:n = {1},
}
% \end{macrocode}
% 在宏加载时,处理 |bithesis/option| 中的值。使得 |bithesis|
@@ -2258,6 +2286,10 @@
}
% \end{macrocode}
%
+% 抑制 fontspec 宏包关于字体的警告信息。
+% \begin{macrocode}
+\PassOptionsToPackage{quiet}{xeCJK}
+% \end{macrocode}
% 加载 ctexbook 模板类。
% \begin{macrocode}
\ProcessOptions\relax
@@ -3735,7 +3767,14 @@
\par
\vspace{4ex}
\noindent
- \textbf{\heiti \c_@@_label_keywords_tl \l_@@_value_keywords_tl}\par
+ \@@_if_graduate:TF {
+ % 研究生模板中,“关键词”宋体小四加粗
+ % 关键词为宋体小四号字。
+ \textbf{\c_@@_label_keywords_tl}\l_@@_value_keywords_tl\par
+ } {
+ % 本科生模板中,关键词为黑体加粗
+ \textbf{\heiti \c_@@_label_keywords_tl \l_@@_value_keywords_tl}\par
+ }
\newpage
}
% \end{macrocode}
@@ -3801,7 +3840,14 @@
}
{
\par\vspace{3ex}\noindent
- \textbf{\c_@@_label_keywords_en_tl \l_@@_value_keywords_en_tl}
+ \@@_if_graduate:TF {
+ % Times New Roman小四号字,行距22磅
+ % “Key Words”
+ % Times New Roman小四号字加粗
+ \textbf{\c_@@_label_keywords_en_tl} \l_@@_value_keywords_en_tl
+ } {
+ \textbf{\c_@@_label_keywords_en_tl \l_@@_value_keywords_en_tl}
+ }
\newpage
}
@@ -4161,6 +4207,16 @@
\newrefcontext
}
+ % 根据 maxbibnames 的设置,覆盖 \blx@maxbibnames 选项,保证所有作者都能显示。
+ \cs_set:Npn \blx@maxbibnames {
+ \l_@@_publications_maxbibnames_int
+ }
+
+ % 根据 minbibnames 的设置,覆盖 \blx@minbibnames 选项,保证所有作者都能显示。
+ \cs_set:Npn \blx@minbibnames {
+ \l_@@_publications_minbibnames_int
+ }
+
\chapter{\c_@@_label_publications_tl}
#1
\end{blindPeerReview}
@@ -6140,7 +6196,7 @@ footskip=0.7cm% 页脚 1.8cm %
\ProvidesPackage{dtx-style}
\RequirePackage{hypdoc}
\RequirePackage{ifthen}
-\RequirePackage{fontspec}
+\RequirePackage[quiet]{fontspec}
\RequirePackage{amsmath}
\RequirePackage{unicode-math}
\RequirePackage[UTF8,scheme=chinese,heading,sub3section]{ctex}
diff --git a/macros/unicodetex/latex/bithesis/bithesis.pdf b/macros/unicodetex/latex/bithesis/bithesis.pdf
index b235ecb670..a900536984 100644
--- a/macros/unicodetex/latex/bithesis/bithesis.pdf
+++ b/macros/unicodetex/latex/bithesis/bithesis.pdf
Binary files differ