summaryrefslogtreecommitdiff
path: root/macros/latex/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib')
-rw-r--r--macros/latex/contrib/colorblind/ChangeLog7
-rw-r--r--macros/latex/contrib/colorblind/README.md23
-rw-r--r--macros/latex/contrib/colorblind/bib.bib43
-rw-r--r--macros/latex/contrib/colorblind/colorblind.sty398
-rw-r--r--macros/latex/contrib/colorblind/documentation.pdfbin0 -> 105258 bytes
-rw-r--r--macros/latex/contrib/colorblind/documentation.tex365
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx127
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin631701 -> 632184 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.tex52
-rw-r--r--macros/latex/contrib/ximera/LICENSE754
-rw-r--r--macros/latex/contrib/ximera/README18
-rw-r--r--macros/latex/contrib/ximera/ximera.dtx9
-rw-r--r--macros/latex/contrib/ximera/ximera.pdfbin321122 -> 320915 bytes
13 files changed, 1372 insertions, 424 deletions
diff --git a/macros/latex/contrib/colorblind/ChangeLog b/macros/latex/contrib/colorblind/ChangeLog
new file mode 100644
index 0000000000..a864cd215e
--- /dev/null
+++ b/macros/latex/contrib/colorblind/ChangeLog
@@ -0,0 +1,7 @@
+Package `colorblind` by Simon Pfahler
+https://github.com/simon-pfahler/colorblind
+
+History
+=======
+2024/05/12 v1.0
+* First published release.
diff --git a/macros/latex/contrib/colorblind/README.md b/macros/latex/contrib/colorblind/README.md
new file mode 100644
index 0000000000..0fd83d42f8
--- /dev/null
+++ b/macros/latex/contrib/colorblind/README.md
@@ -0,0 +1,23 @@
+## Package `colorblind` by Simon Pfahler
+
+Version 2024-05-12 v1.0
+
+In colorblind-safe documents, the contents are presented in a way that the same information is conveyed to readers regardless of a potential color vision deficiency.
+This package provides the tools necessary for colorblind-safe typesetting in LaTeX.
+It provides color schemes for a wide range of applications.
+The most commonly used schemes are qualitative schemes, providing easily distinguishable colors for use in graphics, but also for text coloring or highlighting.
+Additionally, diverging and sequential schemes are included which can be used for encoding quantitative information in the colors of a graphic.
+Therefore, colorblind-safeness is incorporated into the writing process, making it both less cumbersome and less error-prone.
+
+## Copyright (C)
+- 2023-2024 Simon Pfahler
+
+## License
+LaTeX Project Public License, version 1.3c or later.
+
+## Notes
+This package is available on github:
+https://github.com/simon-pfahler/colorblind
+
+If you find any bugs, please report them there.
+
diff --git a/macros/latex/contrib/colorblind/bib.bib b/macros/latex/contrib/colorblind/bib.bib
new file mode 100644
index 0000000000..4639115ad7
--- /dev/null
+++ b/macros/latex/contrib/colorblind/bib.bib
@@ -0,0 +1,43 @@
+%%
+%% ----------------------------------------------------------------
+%% Copyright (C) 2023-2024 by Simon Pfahler <simon.pfahler at ur dot de>
+%% ----------------------------------------------------------------
+%%
+@online{Tol,
+ author = {Paul Tol},
+ title = {Paul Tol's Notes: Colour schemes and templates},
+ year = {2021},
+ url = {https://personal.sron.nl/~pault/},
+ urldate = {2023-12-29},
+}
+
+@inproceedings{Ichihara_2008,
+ author = {Yasuyo G. Ichihara and Masataka Okabe and Koichi Iga and Yosuke Tanaka and Kohei Musha and Kei Ito},
+ title = {{Color universal design: the selection of four easily distinguishable colors for all color vision types}},
+ year = {2008},
+ volume = {6807},
+ booktitle = {Color Imaging XIII: Processing, Hardcopy, and Applications},
+ editor = {Reiner Eschbach and Gabriel G. Marcu and Shoji Tominaga},
+ organization = {International Society for Optics and Photonics},
+ publisher = {SPIE},
+ pages = {68070O},
+ keywords = {Color Universal Design, color vision, color category, visual communication},
+ doi = {10.1117/12.765420},
+ url = {https://doi.org/10.1117/12.765420},
+}
+
+@article{Wong_2011,
+ author={Wong, Bang},
+ title={Points of view: Color blindness},
+ journal={Nature Methods},
+ year={2011},
+ month={Jun},
+ day={01},
+ volume={8},
+ number={6},
+ pages={441-441},
+ issn={1548-7105},
+ doi={10.1038/nmeth.1618},
+ url={https://doi.org/10.1038/nmeth.1618}
+}
+
diff --git a/macros/latex/contrib/colorblind/colorblind.sty b/macros/latex/contrib/colorblind/colorblind.sty
new file mode 100644
index 0000000000..a549ea06f9
--- /dev/null
+++ b/macros/latex/contrib/colorblind/colorblind.sty
@@ -0,0 +1,398 @@
+%%
+%% ----------------------------------------------------------------
+%% Copyright (C) 2023-2024 by Simon Pfahler <simon.pfahler at ur dot de>
+%% ----------------------------------------------------------------
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{colorblind}[2024/05/12 Easy colorblind-safe typesetting]
+
+\RequirePackage{xcolor}
+\RequirePackage{ifthen}
+\RequirePackage{tikz}
+\usetikzlibrary{math}
+\RequirePackage{pgfplots}
+\pgfplotsset{compat=1.18}
+
+\DeclareOption{Tol}{
+%>>> Color schemes by Paul Tol, source: https://personal.sron.nl/~pault
+%
+%>>> Qualitative color schemes
+%
+% Bright Qualitative color scheme
+\providecolorset{RGB}{T-Q-B}{}{%
+ 1,68,119,170;%
+ 2,102,204,238;%
+ 3,34,136,51;%
+ 4,204,187,68;%
+ 5,238,102,119;%
+ 6,170,51,119;%
+ 0,187,187,187%
+}
+%
+% High-contrast qualitative color scheme
+\providecolorset{RGB}{T-Q-HC}{}{%
+ 1,255,255,255;%
+ 2,221,170,51;%
+ 3,187,85,102;%
+ 4,0,68,136;%
+ 0,0,0,0%
+}
+%
+% Vibrant qualitative color scheme
+\providecolorset{RGB}{T-Q-V}{}{%
+ 1,0,119,187;%
+ 2,51,187,238;%
+ 3,0,153,136;%
+ 4,238,119,51;%
+ 5,204,51,17;%
+ 6,238,51,119;%
+ 0,187,187,187%
+}
+%
+% Muted qualitative color scheme
+\providecolorset{RGB}{T-Q-M}{}{%
+ 1,51,34,136;%
+ 2,136,204,238;%
+ 3,68,170,153;%
+ 4,153,153,51;%
+ 5,221,204,119;%
+ 6,204,102,119;%
+ 7,136,34,85;%
+ 8,170,68,153;%
+ 0,221,221,221%
+}
+%
+% Medium-contrast qualitative color scheme
+\providecolorset{RGB}{T-Q-MC}{}{%
+ 1,255,255,255;%
+ 2,238,204,102;%
+ 3,238,153,170;%
+ 4,102,153,204;%
+ 5,153,119,0;%
+ 6,153,68,85;%
+ 7,0,68,136;%
+ 0,0,0,0%
+}
+%
+% Pale qualitative color scheme, for highlighting
+\providecolorset{RGB}{T-Q-PH}{}{%
+ 1,187,204,238;%
+ 2,204,238,255;%
+ 3,204,221,170;%
+ 4,238,238,187;%
+ 5,255,204,204;%
+ 0,221,221,221%
+}
+%
+% Dark qualitative color scheme, for text colors
+\providecolorset{RGB}{T-Q-DT}{}{%
+ 1,34,34,85;%
+ 2,34,85,85;%
+ 3,34,85,34;%
+ 4,102,102,51;%
+ 5,102,51,51;%
+ 0,85,85,85%
+}
+%
+% Light qualitative color scheme
+\providecolorset{RGB}{T-Q-L}{}{%
+ 1,119,170,221;%
+ 2,153,221,255;%
+ 3,68,187,153;%
+ 4,187,204,51;%
+ 5,170,170,0;%
+ 6,238,221,136;%
+ 7,238,136,102;%
+ 8,255,170,187;%
+ 0,221,221,221%
+}
+%
+%<<< Qualitative color schemes
+%
+%>>> Diverging color schemes
+%
+% Sunset diverging color scheme
+\providecolorset{RGB}{T-D-S}{}{%
+ 1,54,75,154;%
+ 2,74,123,183;%
+ 3,110,166,205;%
+ 4,152,202,225;%
+ 5,194,228,239;%
+ 6,234,236,204;%
+ 7,254,218,139;%
+ 8,253,179,102;%
+ 9,246,126,75;%
+ 10,221,61,45;%
+ 11,165,0,38;%
+ 0,255,255,255%
+}
+\pgfplotsset{
+ colormap={T-D-S}{color(0)=(T-D-S1) color(1)=(T-D-S2) color(2)=(T-D-S3) color(3)=(T-D-S4) color(4)=(T-D-S5) color(5)=(T-D-S6) color(6)=(T-D-S7) color(7)=(T-D-S8) color(8)=(T-D-S9) color(9)=(T-D-S10) color(10)=(T-D-S11)}
+}
+%
+% Nightfall diverging color scheme
+\providecolorset{RGB}{T-D-N}{}{%
+ 1,18,90,86;%
+ 2,0,118,123;%
+ 3,35,143,157;%
+ 4,66,167,198;%
+ 5,96,188,233;%
+ 6,157,204,239;%
+ 7,198,219,237;%
+ 8,222,230,231;%
+ 9,236,234,218;%
+ 10,240,230,178;%
+ 11,249,213,118;%
+ 12,255,185,84;%
+ 13,253,154,68;%
+ 14,245,118,52;%
+ 15,233,76,31;%
+ 16,209,24,7;%
+ 17,160,24,19;%
+ 0,255,255,255%
+}
+\pgfplotsset{
+ colormap={T-D-N}{color(0)=(T-D-N1) color(1)=(T-D-N2) color(2)=(T-D-N3) color(3)=(T-D-N4) color(4)=(T-D-N5) color(5)=(T-D-N6) color(6)=(T-D-N7) color(7)=(T-D-N8) color(8)=(T-D-N9) color(9)=(T-D-N10) color(10)=(T-D-N11) color(11)=(T-D-N12) color(12)=(T-D-N13) color(13)=(T-D-N14) color(14)=(T-D-N15) color(15)=(T-D-N16) color(16)=(T-D-N17)}
+}
+%
+% BuRd diverging color scheme
+\providecolorset{RGB}{T-D-BR}{}{%
+ 1,32,102,172;%
+ 2,67,147,195;%
+ 3,146,197,222;%
+ 4,209,229,240;%
+ 5,247,247,247;%
+ 6,253,219,199;%
+ 7,244,165,130;%
+ 8,214,96,77;%
+ 9,178,24,43;%
+ 0,255,238,153%
+}
+\pgfplotsset{
+ colormap={T-D-BR}{color(0)=(T-D-BR1) color(1)=(T-D-BR2) color(2)=(T-D-BR3) color(3)=(T-D-BR4) color(4)=(T-D-BR5) color(5)=(T-D-BR6) color(6)=(T-D-BR7) color(7)=(T-D-BR8) color(8)=(T-D-BR9)}
+}
+%
+% PRGn diverging color scheme
+\providecolorset{RGB}{T-D-PG}{}{%
+ 1,118,42,131;%
+ 2,153,112,171;%
+ 3,194,165,207;%
+ 4,231,212,232;%
+ 5,247,247,247;%
+ 6,217,240,211;%
+ 7,172,211,158;%
+ 8,90,174,97;%
+ 9,27,120,55;%
+ 0,255,238,153%
+}
+\pgfplotsset{
+ colormap={T-D-PG}{color(0)=(T-D-PG1) color(1)=(T-D-PG2) color(2)=(T-D-PG3) color(3)=(T-D-PG4) color(4)=(T-D-PG5) color(5)=(T-D-PG6) color(6)=(T-D-PG7) color(7)=(T-D-PG8) color(8)=(T-D-PG9)}
+}
+%
+%<<< Diverging color schemes
+%
+%>>> Sequential color schemes
+%
+% YlOrBr sequential color scheme
+\providecolorset{RGB}{T-S-YOB}{}{%
+ 1,255,255,229;%
+ 2,255,247,188;%
+ 3,254,227,145;%
+ 4,254,196,79;%
+ 5,251,154,41;%
+ 6,236,112,20;%
+ 7,204,76,2;%
+ 8,153,52,4;%
+ 9,102,37,6;%
+ 0,136,136,136%
+}
+\pgfplotsset{
+ colormap={T-S-YOB}{color(0)=(T-S-YOB1) color(1)=(T-S-YOB2) color(2)=(T-S-YOB3) color(3)=(T-S-YOB4) color(4)=(T-S-YOB5) color(5)=(T-S-YOB6) color(6)=(T-S-YOB7) color(7)=(T-S-YOB8) color(8)=(T-S-YOB9)}
+}
+%
+% Iridescent sequential color scheme
+\providecolorset{RGB}{T-S-IR}{}{%
+ 1,254,251,233;%
+ 2,252,247,213;%
+ 3,245,243,193;%
+ 4,234,240,181;%
+ 5,221,236,191;%
+ 6,208,231,202;%
+ 7,194,227,210;%
+ 8,181,221,216;%
+ 9,168,216,220;%
+ 10,155,210,225;%
+ 11,141,203,228;%
+ 12,129,196,231;%
+ 13,123,188,231;%
+ 14,126,178,228;%
+ 15,136,165,221;%
+ 16,147,152,210;%
+ 17,155,138,196;%
+ 18,157,125,178;%
+ 19,154,112,158;%
+ 20,144,99,136;%
+ 21,128,87,112;%
+ 22,104,73,87;%
+ 23,70,53,58;%
+ 0,153,153,153%
+}
+\pgfplotsset{
+ colormap={T-S-IR}{color(0)=(T-S-IR1) color(1)=(T-S-IR2) color(2)=(T-S-IR3) color(3)=(T-S-IR4) color(4)=(T-S-IR5) color(5)=(T-S-IR6) color(6)=(T-S-IR7) color(7)=(T-S-IR8) color(8)=(T-S-IR9) color(9)=(T-S-IR10) color(10)=(T-S-IR11) color(11)=(T-S-IR12) color(12)=(T-S-IR13) color(13)=(T-S-IR14) color(14)=(T-S-IR15) color(15)=(T-S-IR16) color(16)=(T-S-IR17) color(17)=(T-S-IR18) color(18)=(T-S-IR19) color(19)=(T-S-IR20) color(20)=(T-S-IR21) color(21)=(T-S-IR22) color(22)=(T-S-IR23)}
+}
+%
+% Incandescent sequential color scheme
+\providecolorset{RGB}{T-S-IN}{}{%
+ 1,206,255,255;%
+ 2,198,247,214;%
+ 3,162,244,155;%
+ 4,187,228,83;%
+ 5,213,206,4;%
+ 6,231,181,3;%
+ 7,241,153,3;%
+ 8,246,121,11;%
+ 9,249,73,2;%
+ 10,228,5,21;%
+ 11,168,0,3;%
+ 0,136,136,136%
+}
+\pgfplotsset{
+ colormap={T-S-IN}{color(0)=(T-S-IN1) color(1)=(T-S-IN2) color(2)=(T-S-IN3) color(3)=(T-S-IN4) color(4)=(T-S-IN5) color(5)=(T-S-IN6) color(6)=(T-S-IN7) color(7)=(T-S-IN8) color(8)=(T-S-IN9) color(9)=(T-S-IN10) color(10)=(T-S-IN11)}
+}
+%
+% Discrete rainbow color scheme
+\providecolorset{RGB}{T-S-DR}{}{%
+ 1,209,187,215;%
+ 2,174,118,163;%
+ 3,136,46,114;%
+ 4,25,101,176;%
+ 5,82,137,199;%
+ 6,123,175,222;%
+ 7,78,178,101;%
+ 8,144,201,135;%
+ 9,202,224,171;%
+ 10,247,240,86;%
+ 11,246,193,65;%
+ 12,241,147,45;%
+ 13,232,96,28;%
+ 14,220,5,12;%
+ 0,119,119,119%
+}
+%
+\providecolorset{RGB}{T-S-SR}{}{%
+ 1,232,236,251;%
+ 2,221,216,239;%
+ 3,209,193,225;%
+ 4,195,168,209;%
+ 5,181,143,194;%
+ 6,167,120,180;%
+ 7,155,98,167;%
+ 8,140,78,153;%
+ 9,111,76,155;%
+ 10,96,89,169;%
+ 11,85,104,184;%
+ 12,78,121,197;%
+ 13,77,138,198;%
+ 14,78,150,188;%
+ 15,84,158,179;%
+ 16,89,165,169;%
+ 17,96,171,158;%
+ 18,105,177,144;%
+ 19,119,183,125;%
+ 20,140,188,104;%
+ 21,166,190,84;%
+ 22,190,188,72;%
+ 23,209,181,65;%
+ 24,221,170,60;%
+ 25,228,156,57;%
+ 26,231,140,53;%
+ 27,230,121,50;%
+ 28,228,99,45;%
+ 29,223,72,40;%
+ 30,218,34,34;%
+ 31,184,34,30;%
+ 32,149,33,27;%
+ 33,114,30,23;%
+ 34,82,26,19;%
+ 0,102,102,102%
+}
+\pgfplotsset{
+ colormap={T-S-SR}{color(0)=(T-S-SR1) color(1)=(T-S-SR2) color(2)=(T-S-SR3) color(3)=(T-S-SR4) color(4)=(T-S-SR5) color(5)=(T-S-SR6) color(6)=(T-S-SR7) color(7)=(T-S-SR8) color(8)=(T-S-SR9) color(9)=(T-S-SR10) color(10)=(T-S-SR11) color(11)=(T-S-SR12) color(12)=(T-S-SR13) color(13)=(T-S-SR14) color(14)=(T-S-SR15) color(15)=(T-S-SR16) color(16)=(T-S-SR17) color(17)=(T-S-SR18) color(18)=(T-S-SR19) color(19)=(T-S-SR20) color(20)=(T-S-SR21) color(21)=(T-S-SR22) color(22)=(T-S-SR23) color(23)=(T-S-SR24) color(24)=(T-S-SR25) color(25)=(T-S-SR26) color(26)=(T-S-SR27) color(27)=(T-S-SR28) color(28)=(T-S-SR29) color(29)=(T-S-SR30) color(30)=(T-S-SR31) color(31)=(T-S-SR32) color(32)=(T-S-SR33) color(33)=(T-S-SR34)}
+}
+%
+%<<< Sequential color schemes
+%
+%<<< Color schemes by Paul Tol, source: https://personal.sron.nl/~pault
+}
+
+\DeclareOption{OkabeIto}{
+%>>> Qualitative color scheme by Okabe and Ito
+\providecolorset{RGB}{OI}{}{%
+ 1,230,159,0;%
+ 2,86,180,233;%
+ 3,0,158,115;%
+ 4,240,228,66;%
+ 5,0,114,178;%
+ 6,213,94,0;%
+ 7,204,121,167;%
+ 0,0,0,0%
+}
+%<<< Qualitative color scheme by Okabe and Ito
+}
+
+\DeclareOption*{\PackageWarning{colorblind}{Unknown '\CurrentOption'}}
+\ProcessOptions\relax
+
+%>>> Function to print a discrete color scheme
+\newcommand\@drawSchemeRadius{0.7cm}
+\newcommand\@drawSchemeOffset{1cm}
+\newcounter{ColorNum}
+\newcommand\drawScheme[1]{%
+ \tikz{%
+ \node[inner sep=1, fill=red] at (-1.2*\@drawSchemeRadius,2.3*\@drawSchemeRadius) {R};
+ \node[inner sep=1, fill=green] at (-1.2*\@drawSchemeRadius, 1.8*\@drawSchemeRadius) {G};
+ \node[inner sep=1, fill=blue] at (-1.2*\@drawSchemeRadius,1.3*\@drawSchemeRadius) {B};
+ \setcounter{ColorNum}{1}%
+ \whiledo{%
+ \@ifundefined{\string\color@#1\theColorNum}{\boolean{false}}{\boolean{true}}%
+ }{%
+ \extractcolorspecs{#1\the\value{ColorNum}}{\modelspec}{\colorspec}%
+ \tikzmath{
+ int \r, \g, \b;
+ \r = round(255*array({\colorspec},0));
+ \g = round(255*array({\colorspec},1));
+ \b = round(255*array({\colorspec},2));
+ }%
+ \node at (\value{ColorNum}*\@drawSchemeOffset-\@drawSchemeOffset,2.3*\@drawSchemeRadius) {\r};
+ \node at (\value{ColorNum}*\@drawSchemeOffset-\@drawSchemeOffset,1.8*\@drawSchemeRadius) {\g};
+ \node at (\value{ColorNum}*\@drawSchemeOffset-\@drawSchemeOffset,1.3*\@drawSchemeRadius) {\b};
+ \draw[fill=#1\the\value{ColorNum}] (\value{ColorNum}*\@drawSchemeOffset-\@drawSchemeOffset,0) circle (\@drawSchemeRadius);%
+ \node[rotate=25, anchor=north east] at (\value{ColorNum}*\@drawSchemeOffset-\@drawSchemeOffset,-1*\@drawSchemeRadius) {#1\theColorNum};%
+ \stepcounter{ColorNum}%
+ }%
+ \extractcolorspecs{#10}{\modelspec}{\colorspec}%
+ \tikzmath{
+ int \r, \g, \b;
+ \r = round(255*array({\colorspec},0));
+ \g = round(255*array({\colorspec},1));
+ \b = round(255*array({\colorspec},2));
+ }%
+ \node at (\value{ColorNum}*\@drawSchemeOffset-0.5*\@drawSchemeOffset,2.3*\@drawSchemeRadius) {\r};
+ \node at (\value{ColorNum}*\@drawSchemeOffset-0.5*\@drawSchemeOffset,1.8*\@drawSchemeRadius) {\g};
+ \node at (\value{ColorNum}*\@drawSchemeOffset-0.5*\@drawSchemeOffset,1.3*\@drawSchemeRadius) {\b};
+ \draw[fill=#10] (\value{ColorNum}*\@drawSchemeOffset-0.5*\@drawSchemeOffset,0) circle(\@drawSchemeRadius);%
+ \node[rotate=25, anchor=north east] at (\value{ColorNum}*\@drawSchemeOffset-0.5*\@drawSchemeOffset, -1*\@drawSchemeRadius) {#10};%
+ }%
+}
+%<<< Function to print a discrete color scheme
+
+%>>> Function to print a continuous color scheme
+\newcommand\drawSchemeC[2][0.5\textwidth]{%
+ \tikz{%
+ \pgfplotscolorbardrawstandalone[colormap name=#2, colorbar horizontal, colorbar style={width=#1, ticks=none}]%
+ \draw[fill=#20] (#1+0.5*\@drawSchemeOffset,-0.55cm) circle(0.5*\@drawSchemeRadius);%
+ }%
+}
+%<<< Function to print a continuous color scheme
+
+\endinput
diff --git a/macros/latex/contrib/colorblind/documentation.pdf b/macros/latex/contrib/colorblind/documentation.pdf
new file mode 100644
index 0000000000..f35c947328
--- /dev/null
+++ b/macros/latex/contrib/colorblind/documentation.pdf
Binary files differ
diff --git a/macros/latex/contrib/colorblind/documentation.tex b/macros/latex/contrib/colorblind/documentation.tex
new file mode 100644
index 0000000000..a04188b570
--- /dev/null
+++ b/macros/latex/contrib/colorblind/documentation.tex
@@ -0,0 +1,365 @@
+%%
+%% ----------------------------------------------------------------
+%% Copyright (C) 2023-2024 by Simon Pfahler <simon.pfahler at ur dot de>
+%% ----------------------------------------------------------------
+%%
+%! TeX program = lualatex
+\documentclass{scrartcl}
+\usepackage[left=4cm,right=3cm,top=3cm,bottom=3cm, marginpar=3cm]{geometry}
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{1ex}
+
+\usepackage{cprotect}
+\usepackage{tikz}
+\usetikzlibrary{math}
+
+\usepackage{xcolor}
+\usepackage{soul}
+
+\usepackage{tikz}
+\usetikzlibrary{positioning, shapes, fit, arrows.meta, decorations.pathmorphing}
+\pgfdeclarelayer{bg}
+\pgfsetlayers{bg,main}
+
+\usepackage{pgfplots, pgfplotstable}
+\pgfplotsset{compat=1.18}
+
+%%%% from https://tex.stackexchange.com/questions/355713/pgfplots-show-error-marker-in-legend
+\pgfplotsset{error bar legend/.style={%
+ /pgfplots/legend image code/.prefix code={%
+ \pgfkeysgetvalue{/pgfplots/error bars/error mark}{\pgfplotserrorbarsmark}%
+ \draw[%
+ /pgfplots/every error bar,
+ mark=\pgfplotserrorbarsmark,
+ /pgfplots/error bars/error mark options,
+ sharp plot,
+ ##1
+ ] plot coordinates {(0.3cm, -0.15cm) (0.3cm, 0.15cm)};%
+ }
+ }
+}
+%%%%
+
+\pgfplotsset{custom area legend/.style={%
+ /pgfplots/legend image code/.prefix code={%
+ \fill[##1, draw=white] plot coordinates {(0cm, -0.1cm) (0.6cm,-0.1cm) (0.6cm, 0.1cm) (0cm, 0.1cm)};%
+ }
+ }
+}
+
+\def\w{420pt}
+
+\usepackage{hyperref}
+\hypersetup{
+ pdftitle={Easy colorblind-safe typesetting: the colorblind package},
+ pdfauthor={Simon Pfahler},
+}
+\usepackage{cleveref}
+
+\usepackage{csquotes}
+\usepackage[backend=biber, style=numeric-comp, seconds=true, sorting=none, subentry=true, doi=false, alldates=iso]{biblatex}
+\renewcommand*{\entrysetpunct}{\\[5pt]}
+\addbibresource{bib.bib}
+
+\usepackage[Tol, OkabeIto]{colorblind}
+
+\newcommand\colorblind{\textbf{colorblind} }
+\newcommand\hlc[2][T-Q-PH4]{{%
+ \colorlet{foo}{#1}%
+ \sethlcolor{foo}\hl{#2}}%
+}
+
+\reversemarginpar
+\newcommand\marg[1]{\leavevmode\marginpar{\raggedleft #1}}
+\newcommand\tbs{\textbackslash}
+
+\title{Easy colorblind-safe typesetting:\\ the \colorblind package}
+\author{Simon Pfahler}
+\date{\today\\Version 1.0}
+
+
+\begin{document}
+
+\maketitle
+
+\begin{abstract}
+ In colorblind-safe documents, the contents are presented in a way that the same information is conveyed to readers regardless of a potential color vision deficiency.
+ This package provides the tools necessary for colorblind-safe typesetting in \LaTeX.
+ It provides color schemes for a wide range of applications.
+ The most commonly used schemes are qualitative schemes, providing easily distinguishable colors for use in graphics, but also for text coloring or highlighting.
+ Additionally, diverging and sequential schemes are included which can be used for encoding quantitative information using colors.
+ This package incorporates colorblind-safeness into the writing process, making it both less cumbersome and less error-prone.
+\end{abstract}
+
+\tableofcontents
+\clearpage
+
+\section{Introduction}
+\subsection{Package options}
+\cprotect\marg{\verb!Tol!\\\verb!OkabeIto!}%
+The \colorblind package provides the color schemes by Paul Tol~\cite{Tol} and the Okabe Ito color palette~\cite{Ichihara_2008}.
+By default, no schemes are loaded.
+Providing one of the options \verb!Tol! or \verb!OkabeIto! loads all corresponding schemes.
+
+\subsection{Overview}
+As an example for how to use the colors, we look at the \emph{bright qualitative} color scheme by Tol.
+\cref{fig:T-Q-Bexample} shows the colors in the scheme
+
+\begin{figure}[ht]
+ \centering
+ \drawScheme{T-Q-B}
+ \caption{Bright qualitative color scheme by Tol.}
+ \label{fig:T-Q-Bexample}
+\end{figure}
+
+All colors in this model start with \verb!T-Q-B!, indicating that it is a scheme by \textbf{T}ol, that it is a \textbf{q}ualitative scheme, and that it is the \textbf{b}right scheme.
+The colors in the scheme are specified by a number following the scheme name, in this case ranging from \verb!T-Q-B1! to \verb!T-Q-B6! for the non-grey colors.
+The additional color \verb!T-Q-B0! provides a color that can be used, e.g., to indicate bad data.
+
+There are two reasons why color names are not based on natural color names (e.g., ``\hlc[T-Q-PH1]{blue}''):
+\begin{enumerate}
+ \item Certain colors (\hlc[T-Q-PH3]{green}, \hlc[T-Q-PH5]{red}) are often used by people with full color vision to convey certain meanings (\hlc[T-Q-PH3]{good}, \hlc[T-Q-PH5]{bad}).
+ This meaning is difficult for people with color vision deficiencies to pick up.
+ By not using natural color names, it is easier to write colorblind-safe documents that do not make use of said connotations.
+ \item Natural color names can be cumbersome, e.g., when multiple variations of a primary color are used. It is annoying having to look up if a color is called, e.g., \hlc[T-Q-PH1]{blue} or \hlc[T-Q-PH2]{cyan}.
+\end{enumerate}
+
+These colors are used the same way as any other colors. To change the text color to \verb!T-Q-B1! for example, use \verb!\color{T-Q-B1}!.
+
+\section{Guidelines}
+On its own, using colorblind-safe colors is not sufficient for making a document truly colorblind-safe.
+This section provides some general rules to follow for colorblind-safe typesetting.
+
+These rules apply to each visual unit of a document individually.
+A visual unit may be a graphic, a table or a paragraph of text.
+It might be advisable to be consistent also between different visual units (e.g., use the same color scheme for all graphics), but this is more of an aesthetic argument and is not strictly necessary for a colorblind-safe document.
+
+The most important rules are:
+\begin{enumerate}
+ \item \hlc{Do not mix the colors in qualitative schemes!}\newline
+ The colors in each scheme are defined with the purpose of being easily distinguishable.
+ Mixing of colors, e.g., \verb?T-Q-B1!50!T-Q-B5? interferes with this.
+ A special case of this is that qualitative colors should not be mixed in order to convey quantitative information.
+ In this case, a suitable non-qualitative color scheme (i.e.\ a diverging or sequential scheme) should be used.
+ \item \hlc{Only use colors from one color scheme for a given visual unit!}\newline
+ The colors between different schemes are not tuned to be distinguishable.
+ Using colors from multiple schemes therefore defies the point of this package.
+ \item \hlc{Do not use shades of colors!}\newline
+ Saturation and brightness are also used for distinguishability, so mixings involving \verb!white! and \verb!black! should also be avoided.
+\end{enumerate}
+
+The first two rules should be ensured in any visual unit. If the need for more colors arises, a different color scheme should be used alltogether.
+While the third rule should also be followed in most scenarios, there are some situations that might allow for breaking this rule. As an example, consider \cref{fig:errorbar_plot}, where the error band is colored with a lighter shade of the original color.
+This is ok because only few colors are used in the plot and the colors are not necessary for conveying the message of the plot.
+
+\begin{figure}[ht]
+ \centering
+ \begin{tikzpicture}
+ \begin{axis}[
+ width=0.4*\w,
+ height=0.28*\w,
+ scale only axis=true,
+ xlabel = {x},
+ ylabel = {y},
+ x label style = {yshift=2mm},
+ y label style = {yshift=-2mm},
+ clip marker paths=true,
+ axis on top
+ ]
+
+ \fill[T-Q-B5!20] (0,0.1068558) -- (40,0.1068558) -- (40,0.0668558) -- (0,0.0668558) -- cycle;
+ \draw[T-Q-B5] (0,0.0868558) -- (40,0.0868558);
+
+ \addplot[color=T-Q-B1, mark=*, only marks, forget plot]
+ plot[/pgfplots/error bars/.cd, x dir=none, y dir=both, y explicit,
+ error mark=-, error bar style={color=T-Q-B1}]
+ coordinates {
+ (4,0.263148) +- (0.120064,0.120064)
+ (8,0.159158) +- (0.0621894,0.0621894)
+ (12,0.129892) +- (0.0543303,0.0543303)
+ (16,0.112302) +- (0.0358508,0.0358508)
+ (20,0.098435) +- (0.02648,0.02648)
+ (24,0.0909784) +- (0.0215048,0.0215048)
+ (28,0.0894657) +- (0.0212992,0.0212992)
+ (32,0.0869343) +- (0.0202553,0.0202553)
+ };
+ \addlegendimage{T-Q-B1, mark=*, only marks, error bar legend};
+ \addlegendentry{data};
+ \addlegendimage{draw=T-Q-B5, fill=T-Q-B5!20, custom area legend};
+ \addlegendentry{reference};
+
+ \end{axis}
+ \end{tikzpicture}
+ \cprotect\caption{This plot breaks rule 3 by using the shade \verb?T-Q-B5!20? for the error band of the reference, but it is still colorblind-safe.}
+ \label{fig:errorbar_plot}
+\end{figure}
+
+There are additional guidelines that should be kept in mind when typesetting colorblind-safe documents.
+Their importance may vary between different applications, so try to follow them as best as possible, at your own judgement.
+In no particular order, they are:
+\begin{itemize}
+ \item \hlc{Do not convey information only through color!}\newline
+ When possible, encode the information the color provides also in a different way, e.g., through text, patterns or symbols.
+ \item \hlc{Do not use color for information and aesthetics simultaneously!}\newline
+ Color is often also used for aesthetic reasons, e.g., on a scientific poster.
+ While this is ok in principle, do not mix information and aesthetics within the same visual unit, as this makes it more difficult to extract the encoded information.
+ \item \hlc{Do not use rainbow color schemes!}\newline
+ Due to the many different colors in a rainbow color scheme, they are very difficult to distinguish for people with color vision deficiencies (even when the scheme is tuned for this purpose).
+ Therefore, it is best to avoid them.
+ If you insist on using them, Paul Tol provides both a sequential as well as a continuous version, which are optimized to be as distinguishable as possible.
+\end{itemize}
+
+\section{Provided color schemes}\label{sec:colors}
+The color schemes provided are split into three groups:
+\begin{itemize}
+ \item Qualitative schemes:\newline
+ These schemes are used to convey qualitative information, such as different data sources, countries or manufacturers.
+ They should usually be used for coloring text or distinguishing different lines/bars in a plot.
+ \item Diverging color schemes:\newline
+ When quantitative data ranges between two extremes, and the middle is being considered ``neutral'', a diverging color scheme should be used.
+ Examples for this kind of data might be test grades, temperatures or pH values.
+ \item Sequential color schemes:\newline
+ For quantitative data without an important midpoint, sequential color schemes should be preferred over diverging ones.
+ This is especially true for quantites that start from $0$.
+ They can be used to denote for example velocities, concentrations or pressures.
+\end{itemize}
+
+For each type of schemes, this package provides a range of options.
+\Cref{sec:Tol_schemes} shows the schemes designed by Paul Tol~\cite{Tol}, which include qualitative, diverging and sequential schemes (see \cref{sec:T-Q,sec:T-D,sec:T-S}).
+In \cref{sec:OkabeIto}, the Okabe Ito color scheme~\cite{Ichihara_2008} is provided, which is probably the most famous qualitative colorblind-safe color scheme due to it being mentioned in various articles in high-ranking journals.
+
+All of the schemes are colorblind-safe, and some are optimized for printout or designed for a particular purpose.
+This is denoted under the scheme name.\clearpage
+
+\subsection{Paul Tol's color schemes}\label{sec:Tol_schemes}
+
+\subsubsection{Qualitative color schemes}\label{sec:T-Q}
+\begin{minipage}{0.5\textwidth}
+ \centering
+ \scalebox{0.7}{\drawScheme{T-Q-B}}\\
+ \textbf{B}right\\
+ \phantom{pb}
+\end{minipage}\hfill%
+\begin{minipage}{0.5\textwidth}
+ \centering
+ \scalebox{0.7}{\drawScheme{T-Q-V}}\\
+ \textbf{V}ibrant
+\end{minipage}
+
+\begin{minipage}{0.5\textwidth}
+ \centering
+ \scalebox{0.7}{\drawScheme{T-Q-HC}}\\
+ \textbf{H}igh-\textbf{C}ontrast\\
+ works for black and white printout
+\end{minipage}\hfill%
+\begin{minipage}{0.5\textwidth}
+ \centering
+ \scalebox{0.7}{\drawScheme{T-Q-MC}}\\
+ \textbf{M}edium-\textbf{C}ontrast\\
+ works for black and white printout
+\end{minipage}
+
+\begin{center}
+ \scalebox{0.7}{\drawScheme{T-Q-M}}\\
+ \textbf{M}uted
+\end{center}
+
+\begin{minipage}{0.5\textwidth}
+ \centering
+ \scalebox{0.7}{\drawScheme{T-Q-PH}}\\
+ \textbf{P}ale \textbf{H}ighlight\\
+ specifically for text background
+\end{minipage}\hfill%
+\begin{minipage}{0.5\textwidth}
+ \centering
+ \scalebox{0.7}{\drawScheme{T-Q-DT}}\\
+ \textbf{D}ark \textbf{T}ext\\
+ specifically for text color
+\end{minipage}
+
+\begin{center}
+ \scalebox{0.7}{\drawScheme{T-Q-L}}\\
+ \textbf{L}ight\\
+ less distinguishable than other schemes,\\ mostly meant for filling in labelled cells
+\end{center}\clearpage
+
+\subsubsection{Diverging color schemes}\label{sec:T-D}
+For diverging schemes, when a continuous palette is needed, the colors are allowed to be linearly interpolated.
+When using \verb!pgfplots! (or \verb!TikZ!), the interpolations are available as colormaps with the names of their color scheme.
+
+\begin{center}
+ \scalebox{0.7}{\drawScheme{T-D-S}}\\
+ \drawSchemeC[0.6\textwidth]{T-D-S}\\
+ \textbf{S}unset
+\end{center}
+
+\begin{center}
+ \scalebox{0.7}{\drawScheme{T-D-N}}\\
+ \drawSchemeC[0.9\textwidth]{T-D-N}\\
+ \textbf{N}ightfall
+\end{center}
+
+\begin{center}
+ \scalebox{0.7}{\drawScheme{T-D-BR}}\\
+ \drawSchemeC[0.5\textwidth]{T-D-BR}\\
+ \textbf{B}u\textbf{R}d
+\end{center}\clearpage
+
+\subsubsection{Sequential color schemes}\label{sec:T-S}
+For most sequential schemes, a continuous palette can be obtained again by linearly interpolating the colors.
+The only exception to this is the \emph{discrete rainbow} scheme, which has an explicitly continuos variation, the \emph{smooth rainbow} scheme.
+When using \verb!pgfplots!, the interpolations are available as colormaps with the names of their color scheme.
+
+When the discrete scheme is not shown, this is because there are too many colors in them.
+
+\begin{center}
+ \scalebox{0.7}{\drawScheme{T-S-YOB}}\\
+ \drawSchemeC[0.5\textwidth]{T-S-YOB}\\
+ \textbf{Y}l\textbf{O}r\textbf{B}r
+\end{center}
+
+\begin{center}
+ \drawSchemeC[0.9\textwidth]{T-S-IR}\\
+ \textbf{Ir}idescent
+\end{center}
+
+\begin{center}
+ \scalebox{0.7}{\drawScheme{T-S-IN}}\\
+ \drawSchemeC[0.6\textwidth]{T-S-IN}\\
+ \textbf{In}candescent\\
+ not print-friendly
+\end{center}
+
+\begin{center}
+ \scalebox{0.7}{\drawScheme{T-S-DR}}\\
+ \textbf{D}iscrete \textbf{R}ainbow\\
+ Do not interpolate!
+\end{center}
+
+\begin{center}
+ \drawSchemeC[\textwidth]{T-S-SR}\\
+ \textbf{S}mooth \textbf{R}ainbow\\
+\end{center}
+
+\subsection{Okabe Ito qualitative color scheme}\label{sec:OkabeIto}
+This is the qualitative color scheme commonly known as the \emph{Okabe Ito} color palette~\cite{Ichihara_2008}.
+
+\begin{center}
+ \scalebox{0.7}{\drawScheme{OI}}\\
+ \textbf{O}kabe \textbf{I}to
+\end{center}
+
+\section{Provided commands}
+\cprotect\marg{\verb!\drawScheme{...}!}%
+The discrete visualizations of color schemes given in this documentation are created with the command \verb!\drawScheme{...}!.
+The name of the color scheme should be provided to the command, e.g.\ \verb!\drawScheme{T-Q-B}! to print the \emph{qualitative bright} scheme by Tol.
+
+\cprotect\marg{\verb!\drawSchemeC{...}!}%
+The continuous visualizations of color schemes given in this documentation are created with the command \verb!\drawSchemeC{...}!.
+The name of the color scheme should be provided to the command, e.g.\ \verb!\drawSchemeC{T-D-S}! to print the \emph{diverging sunset} scheme by Tol.
+Note that this command only works for color schemes that are allowed to be interpolated.
+
+\clearpage
+\printbibliography
+
+\end{document}
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index 7beb93bdb9..3ebd079924 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -14,7 +14,7 @@
% This work has the LPPL maintenance status `maintained'.
%<*class>
\NeedsTeXFormat{LaTeX2e}[2021/11/15]
-\ProvidesExplClass{easybook}{2024/05/10}{2024bn}
+\ProvidesExplClass{easybook}{2024/05/12}{2024bo}
{Easily typesetting Chinese theses or books}
\bool_new:N \l__eb_compile_draft_bool
@@ -85,7 +85,7 @@
{ \eb_set_family:xnn { \CJKsfdefault } {#2} {#1} }
\cs_new_protected:Npn \eb_setCJKmonofont:nn #1#2
{ \eb_set_family:xnn { \CJKttdefault } {#2} {#1} }
-\eb_seq_map_inline:nn
+\clist_map_inline:nn
{ main,sans,mono,CJKmain,CJKsans,CJKmono }
{
\exp_args:Nc \RenewDocumentCommand { set#1font }{O{}mO{}}
@@ -301,7 +301,7 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2021/11/15]
\RequirePackage{etoolbox}
-\ProvidesExplPackage{easybase}{2024/05/10}{2024bn}
+\ProvidesExplPackage{easybase}{2024/05/12}{2024bo}
{Easily typesetting Chinese theses or books}
\cs_generate_variant:Nn \dim_set:Nn { NV }
@@ -318,11 +318,6 @@
\cs_set_protected:Npn \ctex_define:nn #1
{ \keys_define:nn { ctex/#1 } }
-\cs_new_protected:Npn \eb_seq_map_inline:nn #1#2
- {
- \seq_set_from_clist:Nn \l_tmpa_seq {#1}
- \seq_map_inline:Nn \l_tmpa_seq {#2}
- }
\cs_new_protected:Npn \eb_patch_cmd:Nnn #1#2#3
{
\ctex_patch_cmd_once:NnnnTF #1 { } {#2} {#3}
@@ -334,7 +329,7 @@
{ \AddToHook{cmd/#1/after}{#2} }
\cs_new_protected:Npn \eb_at_begin_environment:nn #1#2
{
- \eb_seq_map_inline:nn {#1}
+ \clist_map_inline:nn {#1}
{ \AtBeginEnvironment{##1}{#2} }
}
\cs_new_protected:Npn \eb_at_end_preamble:n
@@ -360,7 +355,7 @@
\RenewDocumentCommand{\usepackage}{O{}mO{}}
{
\PassOptionsToPackage{#1}{#2}
- \eb_seq_map_inline:nn {#2}
+ \clist_map_inline:nn {#2}
{
\eb_if_package_loaded:nnF {##1} {#1}
{ \eb@usepackage@save{##1}[#3] }
@@ -383,7 +378,7 @@
\int_compare:nTF { \clist_count:n {#1} <= 1 }
{ \RequirePackage }
{
- \eb_seq_map_inline:nn {#1}
+ \clist_map_inline:nn {#1}
{ \eb_match_load_package:n {##1} }
}
}
@@ -440,6 +435,10 @@
{\RequirePackage[heading]{ctex}}
}
}
+\ctex_disable_package:n { nccfoots }
+\ctex_disable_package:n { setspace }
+\ctex_disable_package:n { tocloft }
+\ctex_disable_package:n { titlesec }
\seq_set_from_clist:Nn \l__eb_module_paths_seq
{
@@ -611,7 +610,7 @@
\booltrue{@mainmatter}
\pagenumbering{arabic}
}
-\eb_seq_map_inline:nn
+\clist_map_inline:nn
{ chapter,section,subsection }
{
\exp_args:Nc \NewDocumentCommand { eb@mark@#1@label@layout }
@@ -826,7 +825,7 @@
\cs_new_protected:Npn \eb_fnmarktext_short_label_set:Nn #1#2
{
\tl_set:Nn \l__eb_fnmarktext_short_tokens_tl {#2}
- \eb_seq_map_inline:nn
+ \clist_map_inline:nn
{ A,a,1,I,i,c,s }
{
\regex_match:nnT {##1} {#2}
@@ -1043,7 +1042,7 @@
\l__eb_fnpara_format_tl{#1}
\tl_if_eq:NnT \l__eb_footnote_value_tl { hang } { \par }
}
-\eb_seq_map_inline:nn { \@footnotetext,\@mpfootnotetext }
+\clist_map_inline:nn { \@footnotetext,\@mpfootnotetext }
{
\eb_patch_cmd:Nnn #1
{ \reset@font }
@@ -1291,7 +1290,7 @@
{ \use:c { CTEX@#1@tocline }{#1}{#2} }
\group_end:
}
-\cs_new_protected:Npn \RegisterBititle #1
+\cs_new_protected:Npn \eb@register@bititle #1
{
\exp_args:Nc \NewDocumentCommand { bi#1 }{sO{##3}mm}
{
@@ -1308,9 +1307,12 @@
}
}
}
-\clist_map_function:nN
- { chapter,section,subsection }
- \RegisterBititle
+\cs_new_protected:Npn \RegisterBititle #1
+ {
+ \clist_map_function:nN {#1}
+ \eb@register@bititle
+ }
+\RegisterBititle{chapter,section,subsection}
\eb_preto_cmd:nn { @chapter }
{
\skip_if_eq:nnF { \eb@toc@lol@skip } { \c_zero_skip }
@@ -1379,7 +1381,7 @@
hyphen-every .initial:n = .,
unknown .code:n = \eb_msg_deprecated_option:n { tools }
}
-\eb_seq_map_inline:nn
+\clist_map_inline:nn
{ figure,table,listing,equation }
{
\cs_set:cpn { the#1 }
@@ -1625,7 +1627,7 @@
\ctex_set:nn {#2}
{
tocformat = \IfBooleanT{#1}{\contentsmargin{0pt}},
- tocindent = 0em,
+ tocindent = 0pt,
tocrule = \IfBooleanTF{#1}{,~\thecontentspage}{\tocrule{$\cdot$}},
toclabel =
{
@@ -1641,13 +1643,19 @@
}
\seq_new:N \l__eb_toc_every_include_name_seq
\cs_new_protected:Npn \ExcludeEveryTocName #1
- { \seq_remove_all:Nn \l__eb_toc_every_include_name_seq {#1} }
+ {
+ \clist_map_inline:nn {#1}
+ { \seq_remove_all:Nn \l__eb_toc_every_include_name_seq {##1} }
+ }
\cs_new_protected:Npn \IncludeEveryTocName #1
{
- \seq_put_right:Nn \l__eb_toc_every_include_name_seq {#1}
- \seq_remove_duplicates:N \l__eb_toc_every_include_name_seq
+ \clist_map_inline:nn {#1}
+ {
+ \seq_put_right:Nn \l__eb_toc_every_include_name_seq {##1}
+ \seq_remove_duplicates:N \l__eb_toc_every_include_name_seq
+ }
}
-\NewDocumentCommand{\RegisterTocName}{sm}
+\cs_new_protected:Npn \eb@register@toc@name #1#2
{
\IfBooleanT{#1}
{
@@ -1665,10 +1673,16 @@
\tl_clear:N \l__eb_toc_tmpa_tl
\tl_clear:N \l__eb_toc_tmpb_tl
}
-\seq_map_function:NN
-\c__ctex_headings_seq \RegisterTocName
+\NewDocumentCommand{\RegisterTocName}{sm}
+ {
+ \clist_map_inline:nn {#2}
+ { \eb@register@toc@name{#1}{##1} }
+ }
+\clist_set_from_seq:NN
+\c__ctex_headings_clist \c__ctex_headings_seq
+\exp_args:NV \RegisterTocName \c__ctex_headings_clist
\ctex_define:n { float/unknown .code:n = \eb_msg_deprecated_option:n { float } }
-\cs_new_protected:Npn \RegisterEveryTocOption #1
+\cs_new_protected:Npn \eb@register@every@toc@option #1
{
\ctex_define:nn { toc }
{
@@ -1679,9 +1693,12 @@
}
}
}
-\clist_map_function:nN
- { tocafter,tocindent,tocrule }
- \RegisterEveryTocOption
+\cs_new_protected:Npn \RegisterEveryTocOption #1
+ {
+ \clist_map_function:nN {#1}
+ \eb@register@every@toc@option
+ }
+\RegisterEveryTocOption{tocafter,tocindent,tocrule}
\NewDocumentCommand{\tocrule}{st-O{0.7pc}d()mO{}}
{
\normalsize\normalfont
@@ -1770,21 +1787,21 @@
part =
{
tocformat = \addvspace{1pc}\sffamily\large,
- tocindent = 0em,
+ tocindent = 0pt,
tocrule = \tocrule{}[\bfseries],
tocline = \CTEXnumberline{#1}#2
},
chapter =
{
tocformat = \addvspace{1pc}\sffamily,
- tocindent = 0em,
+ tocindent = 0pt,
tocrule = \tocrule{$\cdot$}[\bfseries],
tocline = \CTEXnumberline{#1}#2
},
section =
{
tocformat = \bool_if:NF \l__eb_class_mode_book_bool { \sffamily },
- tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 1.5em } { 0em },
+ tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 1.5em } { 0pt },
tocrule =
{
\bool_if:NTF \l__eb_class_mode_book_bool
@@ -1821,7 +1838,7 @@
binumber .initial:n = \arabic{chapter}
}
\cs_new_protected:Npn \eb_counter_zero:n #1
- { \eb_seq_map_inline:nn {#1} { \setcounter{##1}{0} } }
+ { \clist_map_inline:nn {#1} { \setcounter{##1}{0} } }
\RenewDocumentCommand{\appendix}
{O{Appendix\space}D(){\Alph{chapter}}}
{
@@ -1893,18 +1910,13 @@
}
}
\cs_set_eq:NN \addtosubfont \ebaddtofont
+
\ctex_define:nn { spread }
{
line .code:n = \setspread{#1},
- line .initial:n =
- {
- \fp_compare:nNnTF { \l__ctex_line_spread_fp } = { 1.3 }
- { 1.354 }
- { \fp_use:N \l__ctex_line_spread_fp }
- },
table .fp_set:N = \l__eb_spread_table_fp,
- table .initial:n = 1.354,
- math .fp_set:N = \l__eb_spread_math_fp,
+ table .initial:n = 1.2,
+ math .tl_set:N = \eb@spread@math,
math .initial:n = 1.2,
footnote .code:n =
{
@@ -1944,10 +1956,15 @@
belowdisplayskip .initial:n = 0.5ex plus .1ex minus .1ex,
unknown .code:n = \eb_msg_deprecated_option:n { spread }
}
-\AfterPreamble
- {\skip_set:Nn \abovedisplayshortskip { 0ex plus .1ex }}
+\tl_if_eq:NnT \l__ctex_scheme_tl { chinese }
+ {
+ \fp_compare:nNnTF { \l__ctex_line_spread_fp } = { 1.3 }
+ { \ctex_set:nn { spread } { line = 1.354,table = 1.354 } }
+ { \ctex_set:nn { spread } { line = \fp_use:N \l__ctex_line_spread_fp } }
+ }
+\AfterPreamble{\skip_set:Nn \abovedisplayshortskip { 0ex plus .1ex }}
-\eb_seq_map_inline:nn
+\clist_map_inline:nn
{ table,figure,listing }
{
\DeclareCaptionFont{eb@#1@font}
@@ -2022,7 +2039,7 @@
}{}
\cs_new_protected:Npn \eb_enumitem_label_set:nn #1#2
{ \SetEnumitemValue{label}{#1}{\color{ctex@emph}#2} }
-\eb_seq_map_inline:nn
+\clist_map_inline:nn
{
{ bullet } { \textbullet },
{ endash } { \normalfont\bfseries\textendash },
@@ -2045,7 +2062,7 @@
\setlist[enumerate,3]{label = roman,ref = enumiii}
\setlist[description]{font = sf,style = standard}
\newlist{eb@eqcomp@list}{description}{1}
-\setlist[eb@eqcomp@list]{nosep,labelsep = 0em}
+\setlist[eb@eqcomp@list]{nosep,labelsep = 0pt}
\cs_new:Npn \seteqcomplist #1 { \setlist*[eb@eqcomp@list]{#1} }
\keys_define:nn { eb/eqcomp }
@@ -2053,7 +2070,7 @@
width .dim_set:N = \l__eb_eqsymb_width_dim,
width .initial:n = 10pt,
delim .tl_set:N = \l__eb_eqsymb_delim_tl,
- delim .initial:n = ——,
+ delim .initial:n = \tl_if_eq:NnTF \l__ctex_scheme_tl { chinese } { —— } { --- },
space .dim_set:N = \l__eb_eqsymb_space_dim,
space .initial:n = 0.25em,
item-align .tl_set:N = \l__eb_eqsymb_item_align_tl,
@@ -2143,7 +2160,7 @@
\declaretheoremstyle{default}[
spaceabove = 0ex plus .1ex,
spacebelow = 0ex plus .1ex,
- headindent = 0em,
+ headindent = 0pt,
within = \bool_if:NT \l__eb_class_mode_book_bool { chapter },
headpunct = { },
headfont = \color{ctex@emph}\sffamily,
@@ -2209,21 +2226,21 @@
cases,cases*,dcases,dcases*,rcases,rcases*,drcases,drcases*,
aligned,alignedat,gathered,multlined,lgathered,rgathered
}
- { \setspread{\fp_use:N \l__eb_spread_math_fp} }
-\eb_seq_map_inline:nn
+ { \setspread{\eb@spread@math} }
+\clist_map_inline:nn
{ \start@gather,\start@align,\start@multline }
{
\eb_patch_cmd:Nnn #1
{ \collect@body }
{
- \setspread{\fp_use:N \l__eb_spread_math_fp}
+ \setspread{\eb@spread@math}
\collect@body
}
}
\eb_patch_cmd:Nnn \gather@split
{ \spread@equation }
{
- \setspread{\fp_use:N \l__eb_spread_math_fp}
+ \setspread{\eb@spread@math}
\spread@equation
}
\ctex_at_end_package:nn { unicode-math }
@@ -2389,7 +2406,7 @@
},
}
}
-\eb_seq_map_inline:nn
+\clist_map_inline:nn
{
{ linkcolor } { link },
{ color } { theme }
@@ -2536,7 +2553,7 @@
}
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2024/05/10}{2024bn}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2024/05/12}{2024bo}
{Customization of tcolorbox for easybook}
\cs_set_protected:Npn \addtotcbstyle #1#2
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index 858e406649..d39bbfb09f 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex
index 60dc80facc..558f5dde4d 100644
--- a/macros/latex/contrib/easybook/easybook.tex
+++ b/macros/latex/contrib/easybook/easybook.tex
@@ -23,8 +23,8 @@
name = easybook,
color-scheme = blue,
title = EASYBOOK使用手册,
- version = v2024bn,
- date = 2024/05/10,
+ version = v2024bo,
+ date = 2024/05/12,
authors = 瞿毅,
info = 简便地排版中文学位论文或书籍,
email = toquyi@163.com,
@@ -136,10 +136,10 @@
\renewcommand{\cnltx@write@lastname}{}
\renewcommand{\cmltx@list@setup}
{
- \setlength{\leftmargin}{0em}
+ \setlength{\leftmargin}{0pt}
\setlength{\labelwidth}{2em}
\setlength{\itemindent}{-1em}
- \setlength{\labelsep}{0em}
+ \setlength{\labelsep}{0pt}
\setlength{\listparindent}{2em}
\setlength{\topsep}{\smallskipamount}
\setlength{\itemsep}{\smallskipamount}
@@ -190,8 +190,8 @@
您在使用 \easybook{} 文档类编写文档前可能需要具备以下的条件:
\begin{itemize}
\item 使用 \hologo{XeLaTeX}(推荐)或 \hologo{LuaLaTeX} 两种编译方式之一。
- \item 由于文档类用到了一些 \LaTeX 和依赖宏包较新的功能,需要版本至少在\textbf{2021/11/15}以后的 \LaTeX 内核支持。建议您安装最新的 \TeX 发行版。
- \item 虽然手册对基本用法做了介绍,但这并不是入门教程,所涉及到宏包的用法与命令并未进行详细介绍,需要对它们有所了解。您应当具有一定的 \LaTeX 使用基础,可以在 \TeX 综合网站 \href{https://www.ctan.org/}{CTAN} 查看相关资源。
+ \item 由于文档类用到了一些 \hologo{LaTeX} 和依赖宏包较新的功能,需要版本至少在\textbf{2021/11/15}以后的 \hologo{LaTeX} 内核支持。建议您安装最新的 \hologo{TeX} 发行版。
+ \item 虽然手册对基本用法做了介绍,但这并不是入门教程,所涉及到宏包的用法与命令并未进行详细介绍,需要对它们有所了解。您应当具有一定的 \hologo{LaTeX} 使用基础,可以在 \hologo{TeX} 综合网站 \href{https://www.ctan.org/}{CTAN} 查看相关资源。
\end{itemize}
\subsection{前言}
@@ -199,7 +199,7 @@
\subsection{基本用法}
\label{subsec:basic usage}
-以下一份简单的 \TeX 文档演示了 \easybook{} 的最基本用法,在导言区进行宏包载入与文档设置,一些详细的使用样例会不定期上传在 \href{https://www.latexstudio.net/}{\LaTeX 工作室} 的网站。
+以下一份简单的 \TeX 文档演示了 \easybook{} 的最基本用法,在导言区进行宏包载入与文档设置,一些详细的使用样例会不定期上传在 \href{https://www.latexstudio.net/}{\hologo{LaTeX} 工作室} 的网站。
\begin{frameverb}
\documentclass[文档类选项]{easybook}
@@ -467,8 +467,8 @@
\label{subsec:spread}
行距因子用于设置各种行距倍数,\meta{数值} 是不带有长度单位的浮点数。各类行距既可以在导言区全局设置,也可以在正文中设置对后面生效。
\begin{options}
- \keyval{line}{数值}
- 正文行距因子。行距因子初始值为 \code{1.354}(相当于 \textsf{Word} 的1.25倍行距),如果设置了文类或 \pkg*{ctex} 宏包的全局行距选项 \option*{linespread} 则初始值设为它的值。
+ \keyval{line}{数值}\Default{1.354}
+ 正文行距因子。中文主题下行距因子初始值为 \code{1.354}(相当于 \textsf{Word} 的1.25倍行距),如果设置了文类或 \pkg*{ctex} 宏包的全局行距选项 \option*{linespread} 则初始值设为它的值。
\keyval{table}{数值}\Default{1.354}
表格内容行距因子,对传统表格 \env{tabular} 和 \env{tabularx} 等环境生效。\pkg*{tabularray} 宏包的 \env{tblr} 环境自带 \option*{stretch} 和 \option*{rowsep} 等行间距选项,这里不做调整。
\keyval{math}{数值}\Default{1.2}
@@ -573,15 +573,15 @@
\begin{options}
\keyval{name}{定理名}
定理环境的标题名称,默认为英文首字母大写的环境名。
- \keychoice{numbered}{no,yes,unless unique}
+ \keychoice{numbered}{no,\fbox{yes},unless unique}
定理可以被编号、不被编号或者只有在文档中多次出现时才被编号。
- \keychoice{within}{chapter,section,\optpath*{empty},\optpath*{counter}}
+ \keychoice{within}{\fbox{chapter},section,\optpath*{empty},\optpath*{counter}}
定理编号跟随的计数器。当计数器值递增时定理编号会从零开始,通常这是一个章节计数器。
\keyval{numberlike}{计数器}
定理将使用此 \meta{计数器} 进行编号,通常这是另一个定理环境的名称。
\keyval{qed}{证毕符号}
证毕符号。位于定理段落末尾行的版心右边,可以设置成 \cs{qedsymbol} 默认是空心方块。
- \keyval{style}{定理样式}
+ \keyval{style}{定理样式}\Default{default}
选项的值为使用 \cs{declaretheoremstyle} 命令新定义的定理样式。
使用 \cs{declaretheorem} 命令以\ref{exam:new theorem sty} 中的定理样式 \code{fancy} 新建一个定理环境猜想,然后用一个基于 \pkg*{tcolorbox} 宏包的预置彩色盒子 \env{easyboxi} 增加背景:
@@ -594,23 +594,23 @@
\command{declaretheoremstyle}[\oarg{键值列表1}\marg{定理样式}\oarg{键值列表2}]
定理样式声明命令,键值列表支持自身以及定理声明命令 \cs{declaretheorem} 的所有选项。可选参数的 \meta{键值列表1} 与 \meta{键值列表2} 等效,其中支持的选项如下:
\begin{options}
- \keyval{headfont}{字体命令}
- 定理标题部分的字体,包括字体族、字体系列、字体尺寸和字体形状命令。
- \keyval{notefont}{字体命令}
+ \keyval{headfont}{字体命令}\Default{\cs*{sffamily}}
+ 定理标题部分(包括题注)的字体,包括字体族、字体系列、字体尺寸和字体形状命令。
+ \keyval{notefont}{字体命令}\Default{\cs*{sffamily}}
定理题注部分的字体,包括字体族、字体系列、字体尺寸和字体形状命令。
- \keyval{bodyfont}{字体命令}
+ \keyval{bodyfont}{字体命令}\Default{\cs*{normalfont}}
定理内容部分的字体,包括字体族、字体系列、字体尺寸和字体形状命令。
\keyval{headpunct}{代码}
紧随定理标题末尾的标记代码,位于定理第一段内容的间距 \option{postheadspace} 之前,可以是字符或插入换行符 \cs*{newline} 等命令。
- \keyval{headindent}{刚性长度}
+ \keyval{headindent}{刚性长度}\Default{0pt}
定理标题的缩进。默认无缩进,可用 \cs*{parindent} 命令设置为段落缩进。
- \keyval{postheadspace}{刚性长度}
+ \keyval{postheadspace}{刚性长度}\Default{1em}
定理标题后与定理第一段内容的间距。
- \keyval{spaceabove}{弹性长度}
+ \keyval{spaceabove}{弹性长度}\Default{0ex plus .1ex}
定理环境前的间距,使用 \pkg*{tcolorbox} 的盒子环境包装后被覆盖。
- \keyval{spacebelow}{弹性长度}
+ \keyval{spacebelow}{弹性长度}\Default{0ex plus .1ex}
定理环境后的间距,使用 \pkg*{tcolorbox} 的盒子环境包装后被覆盖。
- \kvsplit-{notebraces}{\marg{左括号}\marg{右括号}}
+ \kvsplit-{notebraces}{\marg{左括号}\marg{右括号}}\Default{\Marg{(}\Marg{)}}
设置定理题注两边的括号,两个必选参数分别代表左括号和右括号。
\keyval{headformat}{标题排列}
定理标题各组成元素的位置排列和格式。定理标题由定理名、编号和题注组成,\meta{标题排列} 中命令 \cs*{NAME}、\cs*{NUMBER} 和 \cs*{NOTE} 分别代表定理名、编号和题注。
@@ -903,8 +903,8 @@
\end{options}
\begin{commands}
- \command{RegisterTocName}[\sarg\marg{条目名}]\newtagv[Changed]{2024as}%
- 给条目类型名称为 \meta{条目名} 的标题注册用于设置目录样式的选项,即选项前有符号 \ding{73} 表示需要注册后使用。前面提到的条目类型均已注册,新类型的条目注册后默认格式与图表条目相同。这个命令可以重复使用,会重置目录条目为默认格式。带有星号参数的命令使注册目录的条目形成一个段落,此时多出下面三个选项可用:
+ \command{RegisterTocName}[\sarg\marg{条目名列表}]\newtagv[Changed]{2024bo}%
+ 给 \meta{条目名列表} 中的每个 \meta{条目名} 标题注册用于设置目录样式的选项,即选项前有符号 \ding{73} 表示需要注册后使用。前面提到的条目类型均已注册,新类型的条目注册后默认格式与图表条目相同。这个命令可以重复使用,会重置目录条目为默认格式。带有星号参数的命令使注册目录的条目形成一个段落,此时多出下面三个选项可用:
\begin{options}
\keyval{tocbegin}{开始代码}\dtag\newtagv{2024as}%
当前级别目录条目第一个标题前的代码,仅在存在更高级别的条目时有效。
@@ -983,7 +983,7 @@
\keyval{tocrule-every}{引导线命令}
统一设置所有类型的目录引导线样式。
\begin{commands}
- \command{ExcludeEveryTocName}[\marg{条目名}]\newtagv{2024bn}
+ \command{ExcludeEveryTocName}[\marg{条目名列表}]\newtagv{2024bn}
用于指定带有 \option*{every} 后缀选项排除的条目类型。
\end{commands}
\end{options}
@@ -1212,7 +1212,7 @@
\environment{description}[\oarg{键值列表}]
已为三种列表各自预置了三个级别。同种列表或不同种列表间的不同级别可相互嵌套,可以使用短编号的形式,带有星号的环境为行内列表。默认列表标签与标准文档类一致,下面举几个更改列表标签以及其它格式的例子:
\begin{ctexexam}
- \setlist*{wide = 0em} % 取消所有列表的左边距
+ \setlist*{wide = 0pt} % 取消所有列表的左边距
\begin{enumerate}[label = (\arabic*),leftmargin = 1cm,resume]
\begin{enumerate*}[(1)] % 短编号形式
\begin{itemize}[label = \textbullet,labelsep = *]
@@ -1319,7 +1319,7 @@
\section{扩展功能}
\subsection{物理量}
-使用 \pkg*{siunitx} 宏包提供国际单位制的物理量支持。\pkg*{siunitx} 宏包旨在为 \LaTeX 用户提供一种统一的方法,以便正确、轻松地排版数字和单位。\pkg*{siunitx} 的设计理念是默认遵循约定的规则,但允许通过选项设置进行更改。
+使用 \pkg*{siunitx} 宏包提供国际单位制的物理量支持。\pkg*{siunitx} 宏包旨在为 \hologo{LaTeX} 用户提供一种统一的方法,以便正确、轻松地排版数字和单位。\pkg*{siunitx} 的设计理念是默认遵循约定的规则,但允许通过选项设置进行更改。
\begin{commands}
\command{num}[\oarg{键值列表}\marg{数字}]
\cs{num} 命令可以输出以科学计数法表示的数值。
diff --git a/macros/latex/contrib/ximera/LICENSE b/macros/latex/contrib/ximera/LICENSE
index d7f1051397..4db9b5af29 100644
--- a/macros/latex/contrib/ximera/LICENSE
+++ b/macros/latex/contrib/ximera/LICENSE
@@ -1,339 +1,415 @@
-GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- {description}
- Copyright (C) {year} {fullname}
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- {signature of Ty Coon}, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
+The LaTeX Project Public License
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+LPPL Version 1.3c 2008-05-04
+
+Copyright 1999 2002-2008 LaTeX3 Project
+ Everyone is allowed to distribute verbatim copies of this
+ license document, but modification of it is not allowed.
+
+
+PREAMBLE
+========
+
+The LaTeX Project Public License (LPPL) is the primary license under
+which the LaTeX kernel and the base LaTeX packages are distributed.
+
+You may use this license for any work of which you hold the copyright
+and which you wish to distribute. This license may be particularly
+suitable if your work is TeX-related (such as a LaTeX package), but
+it is written in such a way that you can use it even if your work is
+unrelated to TeX.
+
+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
+below, gives instructions, examples, and recommendations for authors
+who are considering distributing their works under this license.
+
+This license gives conditions under which a work may be distributed
+and modified, as well as conditions under which modified versions of
+that work may be distributed.
+
+We, the LaTeX3 Project, believe that the conditions below give you
+the freedom to make and distribute modified versions of your work
+that conform with whatever technical specifications you wish while
+maintaining the availability, integrity, and reliability of
+that work. If you do not see how to achieve your goal while
+meeting these conditions, then read the document `cfgguide.tex'
+and `modguide.tex' in the base LaTeX distribution for suggestions.
+
+
+DEFINITIONS
+===========
+
+In this license document the following terms are used:
+
+ `Work'
+ Any work being distributed under this License.
+
+ `Derived Work'
+ Any work that under any applicable law is derived from the Work.
+
+ `Modification'
+ Any procedure that produces a Derived Work under any applicable
+ law -- for example, the production of a file containing an
+ original file associated with the Work or a significant portion of
+ such a file, either verbatim or with modifications and/or
+ translated into another language.
+
+ `Modify'
+ To apply any procedure that produces a Derived Work under any
+ applicable law.
+
+ `Distribution'
+ Making copies of the Work available from one person to another, in
+ whole or in part. Distribution includes (but is not limited to)
+ making any electronic components of the Work accessible by
+ file transfer protocols such as FTP or HTTP or by shared file
+ systems such as Sun's Network File System (NFS).
+
+ `Compiled Work'
+ A version of the Work that has been processed into a form where it
+ is directly usable on a computer system. This processing may
+ include using installation facilities provided by the Work,
+ transformations of the Work, copying of components of the Work, or
+ other activities. Note that modification of any installation
+ facilities provided by the Work constitutes modification of the Work.
+
+ `Current Maintainer'
+ A person or persons nominated as such within the Work. If there is
+ no such explicit nomination then it is the `Copyright Holder' under
+ any applicable law.
+
+ `Base Interpreter'
+ A program or process that is normally needed for running or
+ interpreting a part or the whole of the Work.
+
+ A Base Interpreter may depend on external components but these
+ are not considered part of the Base Interpreter provided that each
+ external component clearly identifies itself whenever it is used
+ interactively. Unless explicitly specified when applying the
+ license to the Work, the only applicable Base Interpreter is a
+ `LaTeX-Format' or in the case of files belonging to the
+ `LaTeX-format' a program implementing the `TeX language'.
+
+
+
+CONDITIONS ON DISTRIBUTION AND MODIFICATION
+===========================================
+
+1. Activities other than distribution and/or modification of the Work
+are not covered by this license; they are outside its scope. In
+particular, the act of running the Work is not restricted and no
+requirements are made concerning any offers of support for the Work.
+
+2. You may distribute a complete, unmodified copy of the Work as you
+received it. Distribution of only part of the Work is considered
+modification of the Work, and no right to distribute such a Derived
+Work may be assumed under the terms of this clause.
+
+3. You may distribute a Compiled Work that has been generated from a
+complete, unmodified copy of the Work as distributed under Clause 2
+above, as long as that Compiled Work is distributed in such a way that
+the recipients may install the Compiled Work on their system exactly
+as it would have been installed if they generated a Compiled Work
+directly from the Work.
+
+4. If you are the Current Maintainer of the Work, you may, without
+restriction, modify the Work, thus creating a Derived Work. You may
+also distribute the Derived Work without restriction, including
+Compiled Works generated from the Derived Work. Derived Works
+distributed in this manner by the Current Maintainer are considered to
+be updated versions of the Work.
+
+5. If you are not the Current Maintainer of the Work, you may modify
+your copy of the Work, thus creating a Derived Work based on the Work,
+and compile this Derived Work, thus creating a Compiled Work based on
+the Derived Work.
+
+6. If you are not the Current Maintainer of the Work, you may
+distribute a Derived Work provided the following conditions are met
+for every component of the Work unless that component clearly states
+in the copyright notice that it is exempt from that condition. Only
+the Current Maintainer is allowed to add such statements of exemption
+to a component of the Work.
+
+ a. If a component of this Derived Work can be a direct replacement
+ for a component of the Work when that component is used with the
+ Base Interpreter, then, wherever this component of the Work
+ identifies itself to the user when used interactively with that
+ Base Interpreter, the replacement component of this Derived Work
+ clearly and unambiguously identifies itself as a modified version
+ of this component to the user when used interactively with that
+ Base Interpreter.
+
+ b. Every component of the Derived Work contains prominent notices
+ detailing the nature of the changes to that component, or a
+ prominent reference to another file that is distributed as part
+ of the Derived Work and that contains a complete and accurate log
+ of the changes.
+
+ c. No information in the Derived Work implies that any persons,
+ including (but not limited to) the authors of the original version
+ of the Work, provide any support, including (but not limited to)
+ the reporting and handling of errors, to recipients of the
+ Derived Work unless those persons have stated explicitly that
+ they do provide such support for the Derived Work.
+
+ d. You distribute at least one of the following with the Derived Work:
+
+ 1. A complete, unmodified copy of the Work;
+ if your distribution of a modified component is made by
+ offering access to copy the modified component from a
+ designated place, then offering equivalent access to copy
+ the Work from the same or some similar place meets this
+ condition, even though third parties are not compelled to
+ copy the Work along with the modified component;
+
+ 2. Information that is sufficient to obtain a complete,
+ unmodified copy of the Work.
+
+7. If you are not the Current Maintainer of the Work, you may
+distribute a Compiled Work generated from a Derived Work, as long as
+the Derived Work is distributed to all recipients of the Compiled
+Work, and as long as the conditions of Clause 6, above, are met with
+regard to the Derived Work.
+
+8. The conditions above are not intended to prohibit, and hence do not
+apply to, the modification, by any method, of any component so that it
+becomes identical to an updated version of that component of the Work as
+it is distributed by the Current Maintainer under Clause 4, above.
+
+9. Distribution of the Work or any Derived Work in an alternative
+format, where the Work or that Derived Work (in whole or in part) is
+then produced by applying some process to that format, does not relax or
+nullify any sections of this license as they pertain to the results of
+applying that process.
+
+10. a. A Derived Work may be distributed under a different license
+ provided that license itself honors the conditions listed in
+ Clause 6 above, in regard to the Work, though it does not have
+ to honor the rest of the conditions in this license.
+
+ b. If a Derived Work is distributed under a different license, that
+ Derived Work must provide sufficient documentation as part of
+ itself to allow each recipient of that Derived Work to honor the
+ restrictions in Clause 6 above, concerning changes from the Work.
+
+11. This license places no restrictions on works that are unrelated to
+the Work, nor does this license place any restrictions on aggregating
+such works with the Work by any means.
+
+12. Nothing in this license is intended to, or may be used to, prevent
+complete compliance by all parties with all applicable laws.
+
+
+NO WARRANTY
+===========
+
+There is no warranty for the Work. Except when otherwise stated in
+writing, the Copyright Holder provides the Work `as is', without
+warranty of any kind, either expressed or implied, including, but not
+limited to, the implied warranties of merchantability and fitness for a
+particular purpose. The entire risk as to the quality and performance
+of the Work is with you. Should the Work prove defective, you assume
+the cost of all necessary servicing, repair, or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will The Copyright Holder, or any author named in the components of the
+Work, or any other party who may distribute and/or modify the Work as
+permitted above, be liable to you for damages, including any general,
+special, incidental or consequential damages arising out of any use of
+the Work or out of inability to use the Work (including, but not limited
+to, loss of data, data being rendered inaccurate, or losses sustained by
+anyone as a result of any failure of the Work to operate with any other
+programs), even if the Copyright Holder or said author or said other
+party has been advised of the possibility of such damages.
+
+
+MAINTENANCE OF THE WORK
+=======================
+
+The Work has the status `author-maintained' if the Copyright Holder
+explicitly and prominently states near the primary copyright notice in
+the Work that the Work can only be maintained by the Copyright Holder
+or simply that it is `author-maintained'.
+
+The Work has the status `maintained' if there is a Current Maintainer
+who has indicated in the Work that they are willing to receive error
+reports for the Work (for example, by supplying a valid e-mail
+address). It is not required for the Current Maintainer to acknowledge
+or act upon these error reports.
+
+The Work changes from status `maintained' to `unmaintained' if there
+is no Current Maintainer, or the person stated to be Current
+Maintainer of the work cannot be reached through the indicated means
+of communication for a period of six months, and there are no other
+significant signs of active maintenance.
+
+You can become the Current Maintainer of the Work by agreement with
+any existing Current Maintainer to take over this role.
+
+If the Work is unmaintained, you can become the Current Maintainer of
+the Work through the following steps:
+
+ 1. Make a reasonable attempt to trace the Current Maintainer (and
+ the Copyright Holder, if the two differ) through the means of
+ an Internet or similar search.
+
+ 2. If this search is successful, then enquire whether the Work
+ is still maintained.
+
+ a. If it is being maintained, then ask the Current Maintainer
+ to update their communication data within one month.
+
+ b. If the search is unsuccessful or no action to resume active
+ maintenance is taken by the Current Maintainer, then announce
+ within the pertinent community your intention to take over
+ maintenance. (If the Work is a LaTeX work, this could be
+ done, for example, by posting to comp.text.tex.)
+
+ 3a. If the Current Maintainer is reachable and agrees to pass
+ maintenance of the Work to you, then this takes effect
+ immediately upon announcement.
+
+ b. If the Current Maintainer is not reachable and the Copyright
+ Holder agrees that maintenance of the Work be passed to you,
+ then this takes effect immediately upon announcement.
+
+ 4. If you make an `intention announcement' as described in 2b. above
+ and after three months your intention is challenged neither by
+ the Current Maintainer nor by the Copyright Holder nor by other
+ people, then you may arrange for the Work to be changed so as
+ to name you as the (new) Current Maintainer.
+
+ 5. If the previously unreachable Current Maintainer becomes
+ reachable once more within three months of a change completed
+ under the terms of 3b) or 4), then that Current Maintainer must
+ become or remain the Current Maintainer upon request provided
+ they then update their communication data within one month.
+
+A change in the Current Maintainer does not, of itself, alter the fact
+that the Work is distributed under the LPPL license.
+
+If you become the Current Maintainer of the Work, you should
+immediately provide, within the Work, a prominent and unambiguous
+statement of your status as Current Maintainer. You should also
+announce your new status to the same pertinent community as
+in 2b) above.
+
+
+WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
+======================================================
+
+This section contains important instructions, examples, and
+recommendations for authors who are considering distributing their
+works under this license. These authors are addressed as `you' in
+this section.
+
+Choosing This License or Another License
+----------------------------------------
+
+If for any part of your work you want or need to use *distribution*
+conditions that differ significantly from those in this license, then
+do not refer to this license anywhere in your work but, instead,
+distribute your work under a different license. You may use the text
+of this license as a model for your own license, but your license
+should not refer to the LPPL or otherwise give the impression that
+your work is distributed under the LPPL.
+
+The document `modguide.tex' in the base LaTeX distribution explains
+the motivation behind the conditions of this license. It explains,
+for example, why distributing LaTeX under the GNU General Public
+License (GPL) was considered inappropriate. Even if your work is
+unrelated to LaTeX, the discussion in `modguide.tex' may still be
+relevant, and authors intending to distribute their works under any
+license are encouraged to read it.
+
+A Recommendation on Modification Without Distribution
+-----------------------------------------------------
+
+It is wise never to modify a component of the Work, even for your own
+personal use, without also meeting the above conditions for
+distributing the modified component. While you might intend that such
+modifications will never be distributed, often this will happen by
+accident -- you may forget that you have modified that component; or
+it may not occur to you when allowing others to access the modified
+version that you are thus distributing it and violating the conditions
+of this license in ways that could have legal implications and, worse,
+cause problems for the community. It is therefore usually in your
+best interest to keep your copy of the Work identical with the public
+one. Many works provide ways to control the behavior of that work
+without altering any of its licensed components.
+
+How to Use This License
+-----------------------
+
+To use this license, place in each of the components of your work both
+an explicit copyright notice including your name and the year the work
+was authored and/or last substantially modified. Include also a
+statement that the distribution and/or modification of that
+component is constrained by the conditions in this license.
+
+Here is an example of such a notice and statement:
+
+ %% pig.dtx
+ %% Copyright 2005 M. Y. Name
+ %
+ % This work may be distributed and/or modified under the
+ % conditions of the LaTeX Project Public License, either version 1.3
+ % of this license or (at your option) any later version.
+ % The latest version of this license is in
+ % http://www.latex-project.org/lppl.txt
+ % and version 1.3 or later is part of all distributions of LaTeX
+ % version 2005/12/01 or later.
+ %
+ % This work has the LPPL maintenance status `maintained'.
+ %
+ % The Current Maintainer of this work is M. Y. Name.
+ %
+ % This work consists of the files pig.dtx and pig.ins
+ % and the derived file pig.sty.
+
+Given such a notice and statement in a file, the conditions
+given in this license document would apply, with the `Work' referring
+to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
+generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
+referring to any `LaTeX-Format', and both `Copyright Holder' and
+`Current Maintainer' referring to the person `M. Y. Name'.
+
+If you do not want the Maintenance section of LPPL to apply to your
+Work, change `maintained' above into `author-maintained'.
+However, we recommend that you use `maintained', as the Maintenance
+section was added in order to ensure that your Work remains useful to
+the community even when you can no longer maintain and support it
+yourself.
+
+Derived Works That Are Not Replacements
+---------------------------------------
+
+Several clauses of the LPPL specify means to provide reliability and
+stability for the user community. They therefore concern themselves
+with the case that a Derived Work is intended to be used as a
+(compatible or incompatible) replacement of the original Work. If
+this is not the case (e.g., if a few lines of code are reused for a
+completely different task), then clauses 6b and 6d shall not apply.
+
+
+Important Recommendations
+-------------------------
+
+ Defining What Constitutes the Work
+
+ The LPPL requires that distributions of the Work contain all the
+ files of the Work. It is therefore important that you provide a
+ way for the licensee to determine which files constitute the Work.
+ This could, for example, be achieved by explicitly listing all the
+ files of the Work near the copyright notice of each file or by
+ using a line such as:
+
+ % This work consists of all files listed in manifest.txt.
+
+ in that place. In the absence of an unequivocal list it might be
+ impossible for the licensee to determine what is considered by you
+ to comprise the Work and, in such a case, the licensee would be
+ entitled to make reasonable conjectures as to which files comprise
+ the Work.
diff --git a/macros/latex/contrib/ximera/README b/macros/latex/contrib/ximera/README
new file mode 100644
index 0000000000..26b91f193f
--- /dev/null
+++ b/macros/latex/contrib/ximera/README
@@ -0,0 +1,18 @@
+|
+------------:| ------------------------------------------------------------
+ ximera:| Simultaneously write print and online interactive materials
+ Author:| Jim Fowler and Oscar Levin and Jason Nowell and Wim Obbels and Hans Parshall and Bart Snapp
+ E-mail:| bart.snapp@gmail.com
+ License:| Released under the LaTeX Project Public License v1.3c or later
+ See:| http://www.latex-project.org/lppl.txt
+
+Short description:
+Some text about the class: probably the same as the abstract.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/macros/latex/contrib/ximera/ximera.dtx b/macros/latex/contrib/ximera/ximera.dtx
index 27be2648db..597e3b5b20 100644
--- a/macros/latex/contrib/ximera/ximera.dtx
+++ b/macros/latex/contrib/ximera/ximera.dtx
@@ -212,7 +212,7 @@ Running "make install" installs the files in the local TeX tree.
%<classXimera|classXourse>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<classXimera>\ProvidesClass{ximera}
%<classXourse>\ProvidesClass{xourse}
-%<classXimera|classXourse> [2024/5/8 v1.5
+%<classXimera|classXourse> [2024/05/12 v1.5.1
%<classXimera> Simultaneously write print and online interactive materials]
%<classXourse> Combining Ximera activities into Xourses]
%<*driver>
@@ -287,8 +287,8 @@ Running "make install" installs the files in the local TeX tree.
%</driver>
% \fi
%
-%\def\fileversion{v1.5}
-%\def\filedate{2024/5/8}
+%\def\fileversion{v1.5.1}
+%\def\filedate{2024/05/12}
% \DoNotIndex{\newcommand,\newenvironment}
%
%\title{\textsf{ximera} --- Simultaneously write print and online interactive materials.\thanks{This file
@@ -300,7 +300,8 @@ Running "make install" installs the files in the local TeX tree.
%\maketitle
%
%\changes{v1.0.0}{2018/05/25}{First public release}
-%\changes{v1.5.0}{2024/05/8}{Submitting to CTAN}
+%\changes{v1.5.0}{2024/05/08}{Submitting to CTAN}
+%\changes{v1.5.1}{2024/05/12}{Fixed date bug}
% \begin{abstract}
% ``\textsf{Ximera} begins where \TeX\ ends.'' The \textsf{ximera}
diff --git a/macros/latex/contrib/ximera/ximera.pdf b/macros/latex/contrib/ximera/ximera.pdf
index 7c771736db..0d2545b701 100644
--- a/macros/latex/contrib/ximera/ximera.pdf
+++ b/macros/latex/contrib/ximera/ximera.pdf
Binary files differ