summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/dtxdescribe/README.txt4
-rw-r--r--macros/latex/contrib/dtxdescribe/dtxdescribe.dtx105
-rw-r--r--macros/latex/contrib/dtxdescribe/dtxdescribe.pdfbin467890 -> 470587 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx11
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin590690 -> 592288 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.tex72
-rw-r--r--macros/latex/contrib/lni/CHANGELOG.md32
-rw-r--r--macros/latex/contrib/lni/README.md4
-rw-r--r--macros/latex/contrib/lni/lni.dtx70
-rw-r--r--macros/latex/contrib/lni/lni.pdfbin377740 -> 377695 bytes
-rw-r--r--macros/latex/contrib/spbmark/spbmark.pdfbin84938 -> 85360 bytes
-rw-r--r--macros/latex/contrib/spbmark/spbmark.sty4
-rw-r--r--macros/latex/contrib/spbmark/spbmark.tex15
-rw-r--r--macros/latex/contrib/tuda-ci/README.md7
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdfbin552069 -> 552288 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdfbin601729 -> 601729 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer2023.pdfbin556834 -> 556834 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdfbin570431 -> 570532 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdfbin559914 -> 559914 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdfbin567048 -> 567142 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdfbin635542 -> 638055 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdfbin536279 -> 536447 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdfbin662473 -> 662437 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdfbin527234 -> 527922 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdfbin563698 -> 563698 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdfbin624503 -> 627330 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex3
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex3
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer2023.tex3
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib3
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex3
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco3
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex3
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex3
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex37
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex3
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex6
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex3
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex3
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex50
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa2023.sty7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa2023.sty7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2008.sty7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2023.sty7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2023.sty7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2008.sty7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2023.sty7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudabeamer.cls7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudacolors.def7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudacolors.sty7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaexercise.cls7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudafonts.sty7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaletter.cls7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo4
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaposter.cls7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudapub.cls124
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudarules.sty7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudasciposter.cls7
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo4
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudathesis.cfg23
-rw-r--r--macros/luatex/generic/minim-math/README6
-rw-r--r--macros/luatex/generic/minim-math/minim-math.doc8
-rw-r--r--macros/luatex/generic/minim-math/minim-math.pdfbin112093 -> 114067 bytes
-rw-r--r--macros/luatex/generic/minim-math/minim-math.tex2
-rw-r--r--macros/luatex/generic/minim-mp/README11
-rw-r--r--macros/luatex/generic/minim-mp/minim-mp.doc72
-rw-r--r--macros/luatex/generic/minim-mp/minim-mp.lua340
-rw-r--r--macros/luatex/generic/minim-mp/minim-mp.mp216
-rw-r--r--macros/luatex/generic/minim-mp/minim-mp.pdfbin109855 -> 120017 bytes
-rw-r--r--macros/luatex/generic/minim-mp/minim-mp.sty19
-rw-r--r--macros/luatex/generic/minim-mp/minim.mp4
-rw-r--r--macros/luatex/generic/minim-pdf/README16
-rw-r--r--macros/luatex/generic/minim-pdf/minim-pdf.doc99
-rw-r--r--macros/luatex/generic/minim-pdf/minim-pdf.lua135
-rw-r--r--macros/luatex/generic/minim-pdf/minim-pdf.pdfbin116670 -> 126824 bytes
-rw-r--r--macros/luatex/generic/minim-pdf/minim-pdf.tex53
-rw-r--r--macros/luatex/generic/minim-xmp/README8
-rw-r--r--macros/luatex/generic/minim-xmp/minim-xmp.doc7
-rw-r--r--macros/luatex/generic/minim-xmp/minim-xmp.lua6
-rw-r--r--macros/luatex/generic/minim-xmp/minim-xmp.pdfbin72075 -> 73080 bytes
-rw-r--r--macros/luatex/generic/minim/README7
-rw-r--r--macros/luatex/generic/minim/minim-alloc.doc42
-rw-r--r--macros/luatex/generic/minim/minim-doc.sty36
-rw-r--r--macros/luatex/generic/minim/minim-pdfresources.lua6
-rw-r--r--macros/luatex/generic/minim/minim-pdfresources.tex1
-rw-r--r--macros/luatex/generic/minim/minim.doc8
-rw-r--r--macros/luatex/generic/minim/minim.pdfbin338726 -> 365466 bytes
102 files changed, 1412 insertions, 512 deletions
diff --git a/macros/latex/contrib/dtxdescribe/README.txt b/macros/latex/contrib/dtxdescribe/README.txt
index 24e6caa67f..7338088697 100644
--- a/macros/latex/contrib/dtxdescribe/README.txt
+++ b/macros/latex/contrib/dtxdescribe/README.txt
@@ -1,8 +1,8 @@
The LaTeX dtxdescribe package
Describe additional object types in dtx source files.
-v1.07 — 2023/01/03
-Copyright 2016–2023 Brian Dunn — www.BDTechConcepts.com
+v1.08 — 2024/01/08
+Copyright 2016–2024 Brian Dunn — https://github.com/bdtc/dtxdescribe
LaTeX Project Public License, version 1.3
diff --git a/macros/latex/contrib/dtxdescribe/dtxdescribe.dtx b/macros/latex/contrib/dtxdescribe/dtxdescribe.dtx
index e271465c21..3fb7205f40 100644
--- a/macros/latex/contrib/dtxdescribe/dtxdescribe.dtx
+++ b/macros/latex/contrib/dtxdescribe/dtxdescribe.dtx
@@ -1,7 +1,7 @@
% \iffalse meta-comment
%
-% Copyright 2016-2023 Brian Dunn
+% Copyright 2016-2024 Brian Dunn
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -17,7 +17,7 @@
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{dtxdescribe}
-%<package> [2023/01/03 v1.07 Describe additional object types in source files.]
+%<package> [2024/01/08 v1.08 Describe additional object types in source files.]
%
%<*driver>
\documentclass{ltxdoc}
@@ -187,6 +187,8 @@ pageanchor=true,
% \changes{v1.05}{2022/09/08}{\ 2022/09/08}
% \changes{v1.06}{2022/12/07}{\ 2022/12/07}
% \changes{v1.07}{2023/01/03}{\ 2023/01/03}
+% \changes{v1.08}{2024/01/08}{\ 2024/01/08}
+% \changes{v1.08}{2024/01/08}{\ Updated contact info.}
@@ -211,7 +213,8 @@ pageanchor=true,
%
% \bigskip
%
-% {\small\textcopyright{} 2016--2023} Brian Dunn\\ \small \texttt{bd@BDTechConcepts.com}
+% {\small\textcopyright{} 2016--2024} Brian Dunn\\
+% \small \url{https://github.com/bdtc/dtxdescribe}
%
% \vspace{.5in}
%
@@ -227,7 +230,7 @@ pageanchor=true,
% The \pkg{doc} package includes tools for describing macros and environments
% in \LaTeX\ source \filenm{.dtx} format.
% The \pkg{dtxdescribe} package adds additional tools for describing
-% booleans, lengths, counters, hooks, keys, packages, classes, options,
+% booleans, lengths, counters, hooks, sockets, plugs, keys, packages, classes, options,
% files, commands, arguments, and other objects.
% \pkg{dtxdescribe} also works with the regular document classes, for those
% who do not wish to use the \pkg{ltxdoc} class and \filenm{.dtx} files.
@@ -472,7 +475,7 @@ pageanchor=true,
% See \cref{ex:arguments} on \cpageref{ex:arguments}.
-% \subsection{Booleans, lengths, counters, hooks, keys}
+% \subsection{Booleans, lengths, counters, hooks, sockets, plugs, keys}
%
% See \cref{ex:common} on \cpageref{ex:common}.
%
@@ -503,6 +506,19 @@ pageanchor=true,
% \end{sourceverb}
%
%
+% \DescribeMacro{\DescribeSocket} \oarg{category} \marg{name}
+%
+% \DescribeMacro{\DescribePlug} \oarg{category} \marg{name}
+%
+% Describes a socket or plug. Given a `Socket' or 'Plug' tag in the margin and index.
+% The |category| may be used to categorize sockets and plugs by package.
+% Example:
+% \begin{sourceverb}
+% \DescribeSocket{socketname}
+% \DescribePlug{plugname}
+% \end{sourceverb}
+%
+%
% \DescribeMacro{\DescribeKey} \oarg{category} \marg{name}
%
% Describes a key. Given a `Key' tag in the margin and index.
@@ -591,6 +607,10 @@ pageanchor=true,
%
% \DescribeMacro{\ItemDescribeHook} \oarg{category} \marg{name} A description.
%
+% \DescribeMacro{\ItemDescribeSocket} \oarg{category} \marg{name} A description.
+%
+% \DescribeMacro{\ItemDescribePlug} \oarg{category} \marg{name} A description.
+%
% \DescribeMacro{\ItemDescribeKey} \oarg{category} \marg{name} A description.
%
% \DescribeMacro{\ItemDescribePackage} \oarg{category} \marg{package\_name} With underscores.
@@ -1079,10 +1099,15 @@ pageanchor=true,
% the same as the rest of the objects.
-% \begin{dtxexample}{Hooks\label{ex:hook}}
+% \begin{dtxexample}{Hooks and Sockets\label{ex:hook}}
% \DescribeHook{\hookname} A hook with a backslash.
% \DescribeHook{para/begin} A hook without a backslash.
+
+% \DescribeSocket{socketname} A socket.
+
+% \DescribePlug{plugname} A socket plug.
+
% \end{dtxexample}
% Hooks may or may not have a leading backslash.
@@ -3114,6 +3139,52 @@ pageanchor=true,
% \end{macro}
%
%
+% \begin{macro}{\DescribeSocket} \oarg{category} \marg{name}
+% \changes{v1.08}{2024/01/08}{Added.}
+% \begin{macrocode}
+\IfPackageLoadedTF{doc}{% doc
+
+\NewDocElement[
+ macrolike=false,
+ toplevel=true,
+ idxtype=socket,
+ idxgroup=Sockets,
+ printtype=\textit{Socket}
+]{Socket}{socket}
+
+}{% not doc
+
+\newcommand*{\DescribeSocket}[2][]
+ {\DTXD@margintagindex{#1}{#2}{Socket}{socket}{usage}}
+
+}% not doc
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\DescribePlug} \oarg{category} \marg{name}
+% \changes{v1.08}{2024/01/08}{Added.}
+% \begin{macrocode}
+\IfPackageLoadedTF{doc}{% doc
+
+\NewDocElement[
+ macrolike=false,
+ toplevel=true,
+ idxtype=plug,
+ idxgroup=Plugs,
+ printtype=\textit{Plug}
+]{Plug}{plug}
+
+}{% not doc
+
+\newcommand*{\DescribePlug}[2][]
+ {\DTXD@margintagindex{#1}{#2}{Plug}{plug}{usage}}
+
+}% not doc
+% \end{macrocode}
+% \end{macro}
+%
+%
% \begin{macro}{\DescribeKey} \oarg{category} \marg{name}
%
% The |category| may be used to categorize keys by their kev/value group.
@@ -3366,6 +3437,28 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
+% \begin{macro}{\ItemDescribeSocket} \oarg{category} \marg{name}
+% \changes{v1.08}{2024/01/08}{Added.}
+% \begin{macrocode}
+\newcommand{\ItemDescribeSocket}[2][]{%
+ \item[\texttt{#2}:]%
+ \setlength{\parskip}{1.5ex}%
+ \DescribeSocket[#1]{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\ItemDescribePlug} \oarg{category} \marg{name}
+% \changes{v1.08}{2024/01/08}{Added.}
+% \begin{macrocode}
+\newcommand{\ItemDescribePlug}[2][]{%
+ \item[\texttt{#2}:]%
+ \setlength{\parskip}{1.5ex}%
+ \DescribePlug[#1]{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+
% \begin{macro}{\ItemDescribeKey} \oarg{category} \marg{name}
% \changes{v1.00}{2019/01/09}{Added.}
% \begin{macrocode}
diff --git a/macros/latex/contrib/dtxdescribe/dtxdescribe.pdf b/macros/latex/contrib/dtxdescribe/dtxdescribe.pdf
index 1267977d0b..1712382523 100644
--- a/macros/latex/contrib/dtxdescribe/dtxdescribe.pdf
+++ b/macros/latex/contrib/dtxdescribe/dtxdescribe.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index 93ca70813e..9d435384a2 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -15,7 +15,7 @@
%<*class>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2024/01/07}{2024D}
+\ProvidesExplClass{easybook}{2024/01/08}{2024E}
{Easily typesetting Chinese theses or books}
\bool_set_false:N \l__eb_compile_draft_bool
@@ -302,7 +302,7 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e,etoolbox}
-\ProvidesExplPackage{easybase}{2024/01/07}{2024D}
+\ProvidesExplPackage{easybase}{2024/01/08}{2024E}
{Easily typesetting Chinese theses or books}
\cs_generate_variant:Nn \dim_set:Nn { NV }
@@ -1226,7 +1226,7 @@
\use:c { p@#1 } { the#1 }
}
}
-\NewDocumentCommand{\counteruse}{sO{arabic}D(){.}mod()}
+\NewDocumentCommand{\counteruse}{sO{arabic}D(){.}mo}
{
\IfBooleanF{#1}{\stepcounter{#4}}
\tl_set:cn { theeb-#4 }
@@ -1875,9 +1875,8 @@
{
\box_wd:N \l_tmpb_box +
\l__eb_eqsymb_width_dim +
- \l__eb_eqsymb_space_dim +
\box_wd:N \l_tmpa_box +
- \l__eb_eqsymb_space_dim
+ 2\l__eb_eqsymb_space_dim
}
}
\NewDocumentEnvironment{eqcomp}{oD(){}+b}
@@ -2327,7 +2326,7 @@
}
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2024/01/07}{2024D}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2024/01/08}{2024E}
{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 4b1e8049c7..d700f1cfd7 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 e7fc2d4d8a..07b4ad1665 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 = v2024D,
- date = 2024/01/07,
+ version = v2024E,
+ date = 2024/01/08,
authors = 瞿毅,
info = 简便地排版中文学位论文或书籍,
email = toquyi@163.com,
@@ -255,17 +255,17 @@
开启草稿模式会加快编译速度,表现有显示页面边框、行溢出的地方显示黑色方块、图片变成占位方框、显示当前日期和关闭超链接渲染。不使用绘图宏包及依赖于 \pkg*{tcolorbox} 宏包的盒子环境也会增快编译速度,详情见\ref{subsec:box}。
\opt{newline}\dtag
部分和章标题的样式为另起一行,符合一般英文书籍的习惯。
- \keychoice{scheme}{chinese,plain}\dtag\Default{chinese}
+ \keychoice{scheme}{\fbox{chinese},plain}\dtag
文档主题方案选项 \option{scheme} 扩展了 \CTeX 文档类中同名选项原有的作用范围,选项值 \code{plain} 可使各类标题变为英文形式。包括章节标题、图表标题和定理名等。
\opt{enmode}\dtag
同时开启 \option{newline} 和 \keyis{scheme}{plain} 选项以符合英文原生风格。
- \keychoice{paper}{a4paper,b5paper,c5paper,letterpaper,other paper}\Default{a4paper}
+ \keychoice{paper}{\fbox{a4paper},b5paper,c5paper,letterpaper,other paper}
文档页面尺寸选项将参数交给 \pkg*{geometry} 宏包处理,可使用它支持的所有标准纸张规格。
\keyval{config}{配置文件列表}\dtag
载入用户配置的文件名列表,文件列表以花括号包裹并以英文逗号分隔。文件名应包含如 \code{tex}、\code{def} 或 \code{cfg} 等扩展名。若配置文件不在当前文件夹则文件名需要包含路径。
- \keybool{floatpage}\Default{false}
+ \keychoice{floatpage}{true,\fbox{false}}
开启这个选项后浮动环境 \env*{table} 和 \env*{figure} 的比例参数会使用默认值。关闭它则尽可能避免出现浮动页,使图表环境与正文段落更加紧凑,减少多余的空白版面。
- \keybool{theorem}\Default{true}
+ \keychoice{theorem}{\fbox{true},false}
是否提供定理功能支持。选项开启时定理样式模块生效,此时会载入 \pkg*{amsthm} 和 \pkg*{thmtools} 宏包。
\end{options}
@@ -284,7 +284,7 @@
\end{options}
\begin{options}
- \keychoice{font}{noto,times,times*,ebgaramond,libertine,palatino,auto}\dtag\Default{auto}
+ \keychoice{font}{noto,times,times*,ebgaramond,libertine,palatino,\fbox{auto}}\dtag
预置的英文字体相关配置方案如下表所示。这些字体已经包含在了 \TeX Live 发行版中,所以通常不需要再专门安装。如果您想使用其它英文字体,可以使用 \pkg*{fontspec} 宏包的相关命令进行设置。
\insertalltblr[
remark{\ding{72}} = \code{times*} 方案为 \textsf{windows} 系统的预置字体。
@@ -305,13 +305,13 @@
\end{options}
\begin{options}
- \keychoice{mathfont}{times,noto,notosans,nc,stix2,charter,ebgaramond,libertine,none}\dtag\Default{times}
+ \keychoice{mathfont}{\fbox{times},noto,notosans,nc,stix2,charter,ebgaramond,libertine,none}\dtag
选择合适的数学字体,将会加载 \pkg*{newtxmath} 和 \pkg*{bm} 宏包。使用选项 \code{none} 时可以使用 \pkg*{unicode-math} 等其它数学字体宏包定义字体。
\end{options}
\subsection{\textsf{article} 模式}
\begin{options}
- \keychoice{class}{book,article}\Default{book}
+ \keychoice{class}{\fbox{book},article}
使用 \cls*{easybook} 文档类可以有两种模式,默认为 \cls*{book} 模式。选用 \code{article} 会变为 \code{oneside} 单面排版,同时使文档编号、结构等与标准 \cls*{article} 文档类的特性相似,可用于短篇幅的文章,不需要再使用 \cs*{chapter} 命令。此时\ref{subsec:directory command} 中目录命令的 \option{chapter} 选项会失效,将以 \code{section} 标题级别输出目录。如果使用 \cls*{ctexart} 配合 \pkg*{easybase} 宏包,则选项值 \code{book} 会失效。
\opt{book}
开启 \cls*{book} 书籍模式,与 \keyis*{class}{book} 等效。
@@ -351,13 +351,13 @@
\ebstyle{hyphen-figure = {-}}
\end{ctexexam}
- 文档类有三种选项:布尔型 \boolkey*{key},选项的值为真 \code{true} 或假 \code{false},如果不指定默认为真。键值型 \key*{key}{value} 需要为选项指定值,后面 \code{=} 号不能省略。选择型 \choicekey*{key}{one,\default{two},three} 根据提供的可选值进行设定。
+ 文档类有三种选项:布尔型 \choicekey*{key}{true,false},选项的值为真 \code{true} 或假 \code{false},如果不指定默认为真。键值型 \key*{key}{value} 需要为选项指定值,后面 \code{=} 号不能省略。选择型 \choicekey*{key}{one,\fbox{two},three} 根据提供的可选值进行设定。
\end{commands}
\subsection[风格]{风格\smodule{style}}
\label{subsec:style}
\begin{options}
- \keychoice{color}{none,seaside,energy,cyberpunk}\Default{none}
+ \keychoice{color}{\fbox{none},seaside,energy,cyberpunk}
预置了四种颜色主题,默认主题 \code{none} 为黑白页面,颜色主题不包括超链接。
\begin{commands}
\command{DeclareThemeColor}[\splitmarg{风格名称,颜色1,颜色2,颜色3}]
@@ -367,11 +367,11 @@
统一设置主题的各部分颜色。参数是6个十六进制数字组成的 \code{HTML} 颜色代码,任意颜色的代码可以在常见的图片处理工具拾色器中查看。
\keyval{multoc}{整数}\Default{2}
设置目录的排版栏数,与\ref{subsec:directory command} 中目录命令的同名选项有相同效果。
- \keybool{withpart}\Default{false}
+ \keychoice{withpart}{true,\fbox{false}}
使章标题跟随部分计数器编号,当开启新的一部分时章编号从1开始。
- \keychoice{fntnumwith}{part,chapter,page}\Default{chapter}
+ \keychoice{fntnumwith}{part,\fbox{chapter},page}
使脚注跟随编号的计数器名。默认跟随章计数器,即开启新的一章时脚注编号从1开始。
- \keychoice{uppercase}{all,first,none,none*}\Default{all}
+ \keychoice{uppercase}{\fbox{all},first,none,none*}
使用 \cs{rightmark} 和 \cs{leftmark} 等标题标记命令获取标题内容用于页眉页脚时其中英文的大小写类型。\code{all} 为标题标记中的英文字母全部大写。\code{first} 为标记以英文起始时仅第一个字母大写。\code{none} 不改变标记中英文字母的大小写形式,变体 \code{none*} 则强制标记的字母均为小写形式。
\kvsplit{brackets}{左括号,右括号}\Default{\Marg{(,)}}
设置行间公式编号标签的括号及格式,以英文逗号分隔,分别代表左右括号。\meta{左括号} 可以是带有一个参数的命令,用于接受编号和 \meta{右括号}。将标签括号设置为方括号,并使用无衬线字体:
@@ -422,7 +422,7 @@
上下标命令 \cs{supersub} 对应的上下标格式命令。以英文逗号分隔为前后两个部分分别设置上下标格式,也可以只有前部分,表示上标的格式。
\kvsplit{vsep}{上标偏移,下标偏移}\Default{0.6ex}
上下标命令 \cs{supersub} 对应的上下标额外垂直距离。前部分为上标的偏移量,后部分为下标的偏移量。如果只有前部分则上下标各自垂直移动当前值的一半。
- \keychoice{halign}{l,c,r}\Default{l}
+ \keychoice{halign}{\fbox{l},c,r}
上下标命令 \cs{supersub} 对应的上下标水平对齐方式,有左 \code{l}、居中 \code{c} 和右 \code{r} 三种对齐方式。
\end{options}
@@ -430,9 +430,9 @@
\label{subsec:hyperlinks}
模块 \module*{refset} 将超链接选项交给 \pkg*{hyperref} 宏包处理。除了一些超链接颜色的选项失效,其它由宏包全局和接口命令 \cs*{hypersetup} 支持的多数选项可用。
\begin{options}
- \keychoice{linktype}{edge,colors,none}\Default{edge}
+ \keychoice{linktype}{\fbox{edge},colors,none}
超链接类型。\code{edge} 使超链接形式为边框,\code{colors} 使超链接字体为彩色,\code{none} 关闭超链接边框与颜色,此时 \option{linkcolor} 选项无效。
- \keychoice{linkcolor}{fresh,cutepink,navyblue,crimson}\Default{navyblue}
+ \keychoice{linkcolor}{fresh,cutepink,\fbox{navyblue},crimson}
超链接颜色样式。预置了四种超链接颜色风格。为使相关颜色能够正确显示,选项 \option{linkcolor} 应当在 \option{linktype} 前使用。
\begin{commands}
\command{DeclareLinkColor}[\splitmarg{风格名称,颜色1,颜色2,颜色3}]
@@ -440,7 +440,7 @@
\end{commands}
\keyval{linkcolor-every}{HTML颜色代码}
统一设置超链接的各部分颜色。参数是6个十六进制数字组成的 \code{HTML} 颜色代码,任意颜色的代码可以在常见的图片处理工具拾色器中查看。
- \keychoice{linktoc}{none,section,page,all}\Default{all}
+ \keychoice{linktoc}{none,section,page,\fbox{all}}
将目录中的超链接取消、置于标题上、置于页码上或置于标题和页码上。
\end{options}
@@ -501,9 +501,9 @@
\subsection[参考文献]{参考文献\smodule{bibset}}
\label{subsec:reference}
\begin{options}
- \keychoice{backend}{bibtex,biblatex}\Default{bibtex}
+ \keychoice{backend}{\fbox{bibtex},biblatex}
参考文献处理后端。默认用传统的 \hologo{BibTeX} 处理参考文献\footnote{使用 \hologo{BibTeX} 引擎时加载 \pkg*{natbib} 宏包,使用 \hologo{biber} 时将加载 \pkg*{biblatex} 宏包。}。
- \keychoice{bibstyle}{numerical,authoryear,other sty}\Default{numerical}
+ \keychoice{bibstyle}{\fbox{numerical},authoryear,other sty}
参考文献格式使用中国参考文献推荐标准GB/T 7714-2015,对应顺序编码制和著者—出版年制两种风格。若使用其它格式,使用 \hologo{BibTeX} 处理时需确保正确的 \code{bst} 文件,使用 \hologo{biber} 处理可使用 \pkg*{biblatex} 宏包支持的参考文献风格名称。
\keyval{citestyle}{标注风格}
标注参考文献的风格。后端为 \code{bibtex} 时可使用 \option{super}(数字上标标注,默认)或 \option{numbers}(数字标注)等 \pkg*{natbib} 宏包带有的标注风格,后端为 \code{biblatex} 时可使用 \pkg*{biblatex} 宏包支持的标注风格。
@@ -517,7 +517,7 @@
\end{commands}
\begin{options}
- \keychoice*{heading}{bibliography,subbibliography,bibintoc,subbibintoc}\Default{bibintoc}
+ \keychoice*{heading}{bibliography,subbibliography,\fbox{bibintoc},subbibintoc}
参考文献通常有一个章标题或者节标题,该选项选择由 \cs*{defbibheading} 定义的标题名。
\keyval*{title}{参考文献标题名}
如果标题定义支持的话,该选项覆盖由 \option*{heading} 选项提供的缺省标题名。
@@ -616,7 +616,7 @@
\kvsplit*{hdivide}{左边距,页面文本宽度,右边距}\default{}
\kvsplit*{hmargin}{左边距,右边距}\default{}
\keyval*{textheight}{页面文本高度}\default{}
- \keybool*{nofoot}\Default*{false}
+ \keychoice*{nofoot}{true,\fbox{false}}
\begin{ctexexam}
\ebgeoset
{
@@ -690,7 +690,7 @@
\subsection[脚注格式]{脚注格式\smodule{hdrset}}
模块 \module*{hdrset} 还可以灵活调整脚注编号和内容的格式。格式主要包括脚注标记的编号类型、字体、附加符号和对齐方式等,以及脚注内容的首行缩进、行距和字体等。基本思想是默认脚注和自定义编号脚注标记的格式分离,两种类型脚注各自正文和内容的标记又共享格式,默认脚注中正文和内容标记的编号类型分离。目前脚注模块基本兼容 \pkg*{footmisc} 宏包。
\begin{options}
- \keychoice{footnotetype}{plain,hang,flush,bottom}\Default{hang}
+ \keychoice{footnotetype}{plain,\fbox{hang},flush,bottom}
脚注的类型。悬挂缩进 \code{hang} 是默认值,\code{plain} 是原始的类型,\code{flush} 使脚注内容标记位于脚注首行边缘外侧并右对齐。当存在浮动环境排版时,脚注可能位于页面中间,\code{bottom} 使脚注始终位于页面底端。其中 \code{bottom} 是复合选项,可以与前三种类型重复或复合使用:
\begin{ctexexam}
\ebhdrset{footnotetype = plain,footnotetype = bottom}
@@ -702,9 +702,9 @@
每个脚注第二段及之后段落的首行缩进,等于长度 \cs{fnafterindent} 的值。
\keyval{fnparskip}{弹性长度}\Default{0ex plus .1ex}
不同脚注的段落间距,等于长度 \cs{fnparskip} 的值。
- \keychoice{fntext-pos}{normal,super}\Default{super}
+ \keychoice{fntext-pos}{normal,\fbox{super}}
设置脚注内容标记的位置,正常文本或是上标形式。
- \keychoice{fnmark-num}{plain,pifont,pifont*,pisans,pisans*,short num}\Default{plain}
+ \keychoice{fnmark-num}{\fbox{plain},pifont,pifont*,pisans,pisans*,short num}
脚注正文标记编号的类型。默认为原生样式 \code{plain},还可以改为 \code{pifont} 的各个版本,从左往右依次为普通版、阴文衬线版、阳文无衬线版和阴文无衬线版,缺点是它们的编号仅包括1-10。
短编号的参数与列表环境类似,有1、A、a、I和i,除此之外还增加了中文数字 \code{c} 和符号 \code{s} 格式。原生样式 \code{plain} 等同于单独使用数字 \code{1} 参数。这个选项可以用在正文中改变其后脚注编号类型。
@@ -726,9 +726,9 @@
\ebhdrset{fnmark-num = s}
\end{ctexexam}
\end{commands}
- \keychoice{fntext-num}{plain,pifont,pifont*,pisans,pisans*,short num}\Default{plain}
+ \keychoice{fntext-num}{\fbox{plain},pifont,pifont*,pisans,pisans*,short num}
脚注内容标记编号的类型。用法与 \option{fnmark-num} 一样,所以脚注内容与正文标记编号类型\textbf{可以不同}。
- \keychoice{fnmarktext-num}{plain,pifont,pifont*,pisans,pisans*,short num}\Default{plain}
+ \keychoice{fnmarktext-num}{\fbox{plain},pifont,pifont*,pisans,pisans*,short num}
同时设定脚注正文标记编号 \option{fnmark-num} 与脚注内容标记编号 \option{fntext-num} 的类型。目前脚注编号类型选项对于迷你页环境 \env*{minipage} 无效,其中的脚注保持默认英文字母的编号类型。
\keychoice{fnmark-vmove}{fixed length,match}\Default{0pt}
脚注正文标记的垂直偏移。可以设为刚性长度,或用 \code{match} 匹配 \option*{spvmove} 全局的值。
@@ -853,7 +853,7 @@
\end{commands}
\begin{options}
- \keybool{hang}\Default{true}
+ \keychoice{hang}{\fbox{true},false}
悬挂缩进选项 \option{hang} 使目录条目为悬挂缩进形式。缩进距离为条目编号及其与标题间距的长度和。这个选项对所有条目名同时生效。
\keyval{lolskip}{弹性长度}\Default{10pt}
代码目录中每章第一个条目上方增加的垂直距离。与 \CTeX 的表格和图片目录中每章间的条目距离选项 \option*{lotskip} 和 \option*{lofskip} 类似,在 \cls*{article} 模式中此选项失效。
@@ -861,7 +861,7 @@
目录标题与内容间的钩子(作用于标题下方间距之后),一般插入负的垂直距离代码用于抵消目录首行额外的垂直间距。一级路径此选项对应文档主目录的钩子,二级路径为浮动环境的 \meta{条目名}。
\keyval{bibetween}{代码钩子}\newtag%
与选项 \option{between} 类似,是位于一级路径的英文文档主目录(如果启用)代码钩子。
- \keybool{dotalign}\Default{true}
+ \keychoice{dotalign}{\fbox{true},false}
引导线选项 \option{dotalign} 可以使目录引导线右端对齐并与页码保持一定间距,否则会与页码相连。
\keyval{pagenumwd}{刚性长度}\Default{1.55em}
目录条目页码的宽度。开启 \option{dotalign} 选项时宽度越大引导线与页码的距离就越大。
@@ -895,7 +895,7 @@
\command{tableofcontents}[\sarg\oarg{键值列表}\darg{代码钩子}]
文档主目录命令,支持中英文双语标题目录输出。带有星号参数不输出目录条目上方的标题。\meta{代码钩子} 是当方案 \keyis{plan}{both} 时中文与英文目录之间执行的代码,可以插入目录样式和换页等命令。
\begin{options}
- \keychoice{plan}{cn,bi,both}\Default{cn}\newtag[Exp]%
+ \keychoice{plan}{\fbox{cn},bi,both}\newtag[Exp]%
文档主目录的输出方案。\code{cn} 只输出中文目录,\code{bi} 只输出英文目录。\code{both} 同时连续输出中文和英文目录,需要与双语目录标题命令 \cs{bichapter} 等或双语标题选项 \option{title} 配合使用。
\keyval{bicontentsname}{英文目录标题}\Default{Contents}\newtag%
英文目录的标题,为通用接口命令 \cs*{ctexset} 的选项。
@@ -919,7 +919,7 @@
设置目录的排版栏数。\meta{整数} 代表目录栏数,不指定栏数的值则默认为双栏。
\kvsplit{title}{中文目录标题,英文目录标题}
用于更改目录的双语标题。标题之间用一个英文逗号分开,对主目录来说前部分为中文目录标题,后部分为英文目录标题,对图表和代码目录来说后部分则是加入英文目录的条目。也可以只有一部分,表示中文目录的标题。
- \keychoice{bilist}{mix,new}\Default{new}
+ \keychoice{bilist}{mix,\fbox{new}}
确定文档主目录中双语标题列表的输出排列方式。选项 \code{mix} 使每个英文标题条目在中文目录中跟随对应的中文标题输出,\code{new} 则在新建的英文目录中输出英文标题。
\keyval{format}{目录标题格式}
设置目录标题的格式,在标题级别为 \code{chapter} 或者 \cls*{article} 模式且标题级别为 \code{section} 时有效。
@@ -989,7 +989,7 @@
段落中当前行上标或下标的基线与前一行的间距。
\keyval{depth}{刚性长度}
段落中当前行上标或下标的基线与下一行的间距。
- \keychoice{mode}{text,math,match}\Default{match}
+ \keychoice{mode}{text,math,\fbox{match}}
上标或下标的输出格式。可以为文本 \code{text} 或数学 \code{math} 模式。当使用选项 \code{match} 时可以根据当前段落所处的模式自动匹配。
\end{options}
\end{commands}
@@ -1275,9 +1275,9 @@
全局的符号对照引导符。\cs{symb} 局部的 \meta{引导符} 和对齐方式是基于这个符号的宽度。
\keyval{space}{符号间隙}\Default{0.25em}
符号间隙为引导符两侧与符号和说明文字间的距离。
- \keychoice{item-align}{l,c,r}\Default{r}
+ \keychoice{item-align}{l,c,\fbox{r}}
符号的对齐方式,分为左 \code{l}、中 \code{c} 和右 \code{r} 三种对齐方式。
- \keychoice{delim-align}{l,c,r}\Default{c}
+ \keychoice{delim-align}{l,\fbox{c},r}
引导符的对齐方式,分为左 \code{l}、中 \code{c} 和右 \code{r} 三种对齐方式。
\keyval{enumitem}{键值列表2}
可以使用选项 \option{enumitem} 或命令 \cs{seteqcomplist} 调整对照列表的水平和垂直间距。
@@ -1285,7 +1285,7 @@
符号对照的说明文字。应当为简短的几个字,只显示在第一行,其后为悬挂缩进的对照列表。
\keyval{font}{符号字体}
符号的字体。数学和文本符号模式应采用不同的字体命令,最后一个命令可以接受一个参数,这个参数为符号。
- \keychoice{mode}{math,text}\Default{math}
+ \keychoice{mode}{\fbox{math},text}
符号字体模式,可以为数学字体或者文本字体。
\end{options}
\end{commands}
@@ -1335,7 +1335,7 @@
\shortversion{v = 1.638,date = 2022/03/04,changes = 增加目录条目样式选项注册命令 \cs{RegisterTocName}。}
\shortversion{v = 1.644,date = 2022/03/10,changes = 增加浮动环境目录声明命令 \cs{DeclareFloatList} 配合 \pkg*{caption} 宏包。}
\shortversion{v = 1.682,date = 2022/05/01,changes = 将迷你页判断命令 \cs*{notminipage} 改为被保护命令兼容 \pkg*{circledtext} 宏包。}
- \shortversion{v = 2024D,date = 2024/01/07,changes = 核对依赖宏包的更新改动,优化使用手册的内容细节。}
+ \shortversion{v = 2024E,date = 2024/01/08,changes = 核对依赖宏包的更新改动,优化使用手册的内容细节。}
\end{changelog}
\nocite{*}
diff --git a/macros/latex/contrib/lni/CHANGELOG.md b/macros/latex/contrib/lni/CHANGELOG.md
index 9eb9a35d23..84bff5fcc6 100644
--- a/macros/latex/contrib/lni/CHANGELOG.md
+++ b/macros/latex/contrib/lni/CHANGELOG.md
@@ -1,8 +1,20 @@
# Changelog
+
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/).
+## [Unreleased]
+
+## [1.8.1] - 2024-01-08
+
+### Changed
+- Option `defaultsups` now active for package `newtxtext`
+
+### Fixed
+- Fixed `There's no line here to end.` error for more than two `\affil` calls
+- Fixed `\footnote`
+
## [1.8] - 2023-11-26
### Added
@@ -69,7 +81,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
- `hyperref` is loaded without options to make it more compatible with other packages like `authorarchive`
- `hypcap` is only loaded if `hyperref` has been loaded before.
-
## [1.5] - 2019-04-04
### Added
@@ -156,13 +167,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
First release of the revised files
-[Unreleased]: https://github.com/gi-ev/LNI/compare/v1.8...HEAD
-[1.8]: https://github.com/gi-ev/LNI/releases/tag/v1.8
-[1.7]: https://github.com/gi-ev/LNI/releases/tag/v1.7.0
-[1.6]: https://github.com/gi-ev/LNI/releases/tag/v1.6.0
-[1.5]: https://github.com/gi-ev/LNI/releases/tag/v1.5
-[1.4]: https://github.com/gi-ev/LNI/releases/tag/v1.4
-[1.3]: https://github.com/gi-ev/LNI/releases/tag/v1.3
-[1.2]: https://github.com/gi-ev/LNI/releases/tag/v1.2
-[1.1]: https://github.com/gi-ev/LNI/releases/tag/v1.1
+[Unreleased]: https://github.com/gi-ev/LNI/compare/v1.8.1...HEAD
+[1.8.1]: https://github.com/gi-ev/LNI/compare/v1.8...v1.8.1
+[1.8]: https://github.com/gi-ev/LNI/compare/v1.7...v1.8
+[1.7]: https://github.com/gi-ev/LNI/compare/v1.6...v1.7
+[1.6]: https://github.com/gi-ev/LNI/compare/v1.5...v1.6
+[1.5]: https://github.com/gi-ev/LNI/compare/v1.4...v1.5
+[1.4]: https://github.com/gi-ev/LNI/compare/v1.3...v1.4
+[1.3]: https://github.com/gi-ev/LNI/compare/v1.2...v1.3
+[1.2]: https://github.com/gi-ev/LNI/compare/v1.1...v1.2
+[1.1]: https://github.com/gi-ev/LNI/compare/v1.0...v1.1
[1.0]: https://github.com/gi-ev/LNI/releases/tag/v1.0
diff --git a/macros/latex/contrib/lni/README.md b/macros/latex/contrib/lni/README.md
index b8ab8bdfc7..31fbf3da10 100644
--- a/macros/latex/contrib/lni/README.md
+++ b/macros/latex/contrib/lni/README.md
@@ -3,8 +3,8 @@
```yaml
----------------------------------------------------------------------------
lni -- A class for submissions to the ``Lecture Notes in Informatics''
-(c) 2016-2023 Gesellschaft für Informatik (GI)
-Version: 1.8
+(c) 2016-2024 Gesellschaft für Informatik (GI)
+Version: 1.8.1
Maintainer: Martin Sievers
Email: martin.sievers@schoenerpublizieren.de
License: Released under the LaTeX Project Public License v1.3c or later
diff --git a/macros/latex/contrib/lni/lni.dtx b/macros/latex/contrib/lni/lni.dtx
index 399b886416..20261238d4 100644
--- a/macros/latex/contrib/lni/lni.dtx
+++ b/macros/latex/contrib/lni/lni.dtx
@@ -60,7 +60,7 @@ License:| Released under the LaTeX Project Public License v1.3c or later
\postamble
-Copyright (C) 2016-2023 by Gesellschaft für Informatik e.V. (GI)
+Copyright (C) 2016-2024 by Gesellschaft für Informatik e.V. (GI)
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License (LPPL), either
@@ -134,7 +134,7 @@ This work consists of the file lni.dtx
%<class>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<class>\ProvidesClass{lni}
%<*class>
- [2023/11/26 v1.8 Official class for submissions to the ``Lecture Notes
+ [2024/01/08 v1.8.1 Official class for submissions to the ``Lecture Notes
in Informatics'']
%</class>
%<*driver>
@@ -425,8 +425,8 @@ This work consists of the file lni.dtx
% \DescribeOption{anonymous (new in v1.8)}To easily anonymize a paper for
% blind review, use this option. Then all author information will be replaced
% with a placeholder. Additionally, there is a new macro \cs{anon\marg{hide in review}}
-% which will be replaced with ``ANONIMIZED'' if the option is set.
-% Also, \cs{anon\marg[for review]{for final version}} can be used that outputs ``for review''
+% which will be replaced with ``ANONYMIZED'' if the option is set.
+% Also, \cs{anon\oarg{for review}\marg{for final version}} can be used that outputs ``for review''
% if the option is set, and ``for final version'' otherwise.
%
% \newpage
@@ -826,7 +826,7 @@ This work consists of the file lni.dtx
\ifPDFTeX
\IfFileExists{newtxtext.sty}
{%
- \RequirePackage{newtxtext}
+ \RequirePackage[defaultsups]{newtxtext}
\RequirePackage{newtxmath}
\RequirePackage[zerostyle=b,scaled=.9]{newtxtt}
% \end{macrocode}
@@ -1043,11 +1043,47 @@ This work consists of the file lni.dtx
\RequirePackage{enumitem}
\RequirePackage[hang]{footmisc}
\setlength{\footnotemargin}{1em}
-\def\@makefnmark{\rlap{\normalfont\@thefnmark}}%
-
-% \end{macrocode}
-% \begin{macrocode}
-%\def\@makefnmark{\rlap{\normalfont\@thefnmark}}%
+\long\def\@makefntext#1{%
+ \def\@makefnmark{\rlap{\normalfont\@thefnmark}}%
+ \ifFN@hangfoot
+ \bgroup
+ \setbox\@tempboxa\hbox{%
+ \ifdim\footnotemargin>0pt
+ \hb@xt@\footnotemargin{\@makefnmark\hss}%
+ \else
+ \@makefnmark
+ \fi
+ }%
+ \leftmargin\wd\@tempboxa
+ \rightmargin\z@
+ \linewidth \columnwidth
+ \advance \linewidth -\leftmargin
+ \parshape \@ne \leftmargin \linewidth
+ \@totalleftmargin \leftmargin
+ \footnotesize
+ \@setpar{{\@@par}}%
+ \leavevmode
+ \llap{\box\@tempboxa}%
+ \parskip\hangfootparskip\relax
+ \parindent\hangfootparindent\relax
+ \else
+ \parindent1em
+ \noindent
+ \ifdim\footnotemargin>\z@
+ \hb@xt@ \footnotemargin{\hss\@makefnmark}%
+ \else
+ \ifdim\footnotemargin=\z@
+ \llap{\@makefnmark}%
+ \else
+ \llap{\hb@xt@ -\footnotemargin{\@makefnmark\hss}}%
+ \fi
+ \fi
+ \fi
+ \footnotelayout#1%
+ \ifFN@hangfoot
+ \par\egroup
+ \fi
+}
% \end{macrocode}
% We fix the basewidth for lstlistings:
% The default setting of listings with ``fixed columns'' has a space 0.6em
@@ -1113,7 +1149,7 @@ This work consists of the file lni.dtx
\renewcommand\Authsep{, }
\renewcommand\Authands{\iflanguage{ngerman}{ und }{, and }}
\renewcommand\Authand{\iflanguage{ngerman}{ und }{ and }}
-\renewcommand{\AB@authnote}[1]{$^{\mbox{\footnotesize #1}}$}
+\renewcommand{\AB@authnote}[1]{$^{\text{\mbox{\normalfont\footnotesize #1}}}$}
\renewcommand\author[4][]{%
\ifnewaffil\addtocounter{affil}{1}%
\edef\AB@thenote{\arabic{affil}}%
@@ -1162,7 +1198,6 @@ This work consists of the file lni.dtx
\newaffilfalse
}
-
\renewcommand\@author{%
\ifx\AB@affillist\AB@empty\AB@author\else
\ifnum\value{affil}>\value{Maxaffil}\def\rlap##1{##1}%
@@ -1171,7 +1206,6 @@ This work consists of the file lni.dtx
\fi%
\fi%
}
-
\renewcommand\affil[2][]{%
\newaffiltrue\let\AB@blk@and\AB@pand
\if\relax#1\relax\def\AB@note{\AB@thenote}\else\def\AB@note{#1}%
@@ -1186,12 +1220,11 @@ This work consists of the file lni.dtx
\gdef\AB@las{}\gdef\AB@au@str{}%
{\def\\{, \ignorespaces}\xdef\AB@temp{#2}}%
\@temptokena=\expandafter{\AB@affillist}%
- \xdef\AB@affillist{\the\@temptokena \AB@affilsep
+ \xdef\AB@affillist{\the\@temptokena
\footnotetext[\AB@note]{%
\raggedright\AB@temp\ifcsempty{@emailsandorcids\AB@note}{}{, \csuse{@emailsandorcids\AB@note}}}%
}
\endgroup
- \let\AB@affilsep\AB@affilsepx
\setcounter{footnote}{#1}
}
% \end{macrocode}
@@ -1392,13 +1425,6 @@ This work consists of the file lni.dtx
\vfill\kern-3\p@
\hrule\@width 5cm
\kern2.6\p@}
- %\newdimen\fnindent
- %\fnindent0.18cm
- %\long\def\@makefntext#1{%
- %\parindent \fnindent%
- %\leftskip \fnindent% Einrückung vor der footnotemark
- %\noindent
- %\llap{\hb@xt@0.10cm{\hss\@makefnmark\ }}\ignorespaces#1}
% \end{macrocode}
% \begin{macrocode}
\setlength{\parindent}{0pt}
diff --git a/macros/latex/contrib/lni/lni.pdf b/macros/latex/contrib/lni/lni.pdf
index 4fa2e79a5f..ae032bd25b 100644
--- a/macros/latex/contrib/lni/lni.pdf
+++ b/macros/latex/contrib/lni/lni.pdf
Binary files differ
diff --git a/macros/latex/contrib/spbmark/spbmark.pdf b/macros/latex/contrib/spbmark/spbmark.pdf
index 799e84a323..678496688b 100644
--- a/macros/latex/contrib/spbmark/spbmark.pdf
+++ b/macros/latex/contrib/spbmark/spbmark.pdf
Binary files differ
diff --git a/macros/latex/contrib/spbmark/spbmark.sty b/macros/latex/contrib/spbmark/spbmark.sty
index 3529829d7e..9d8c24a018 100644
--- a/macros/latex/contrib/spbmark/spbmark.sty
+++ b/macros/latex/contrib/spbmark/spbmark.sty
@@ -1,7 +1,7 @@
%
% ***************** THE SPBMARK PACKAGE *****************
%
-% Copyright (C) 2021-2022 by Qu Yi <toquyi@163.com>
+% Copyright (C) 2021-2024 by Qu Yi <toquyi@163.com>
%
% This work may be distributed and/or modified under the
% conditions of the CC-BY 4.0 License.
@@ -9,7 +9,7 @@
% https://creativecommons.org/licenses/by/4.0/legalcode
\NeedsTeXFormat{LaTeX2e}[2018/12/31]
\RequirePackage{xparse,l3keys2e}
-\ProvidesExplPackage{spbmark}{2022/10/15}{1.42}
+\ProvidesExplPackage{spbmark}{2024/01/08}{1.43}
{Customize superscripts and subscripts}
\cs_generate_variant:Nn \box_set_ht:Nn { cv }
diff --git a/macros/latex/contrib/spbmark/spbmark.tex b/macros/latex/contrib/spbmark/spbmark.tex
index a2f0e7e5a0..28025db66c 100644
--- a/macros/latex/contrib/spbmark/spbmark.tex
+++ b/macros/latex/contrib/spbmark/spbmark.tex
@@ -6,8 +6,8 @@
{
package = spbmark,
title = the spbmark package,
- version = v1.42,
- date = 2022/10/15,
+ version = v1.43,
+ date = 2024/01/08,
authors = Qu Yi,
info = Customize superscript and subscript,
email = toquyi@163.com,
@@ -50,11 +50,11 @@
\label{sec:macro package options}
The following macro package options will redefine the script commands of the \LaTeX{} kernel. If you do not specify the values of boolean options, they default to \code{true}.
\begin{options}
- \keybool{text}\Default{false}
+ \keychoice{text}{true,\fbox{false}}
\cs{textsuperscript} and \cs{textsubscript} are equivalent to the \cs{super} and \cs{sub} commands.
- \keybool{math}\Default{false}
+ \keychoice{math}{true,\fbox{false}}
\cs{sp} and \cs{sb} are equivalent to the \cs{super} and \cs{sub} commands.
- \keybool{foot}\Default{false}
+ \keychoice{foot}{true,\fbox{false}}
The format of the footnote mark match the superscript global move and format settings.
\opt{both}
The values of \option{text} and \option{math} two options are \code{true} at the same time.
@@ -144,7 +144,7 @@ The options common to \meta{kv list} of the three commands are as follows. They
The distance between the superscript or subscript baseline and the next line.
\keyval{style}{style name}
Use the \meta{style name} defined by the \cs{defspbstyle} command to make it work global or local.
- \keychoice{mode}{text,math,match}\Default{match}
+ \keychoice{mode}{text,math,\fbox{match}}
The mode of superscript or subscript output can be \code{text} or \code{math} mode. The \code{match} option automatically matches output modes according to the current mode.
\end{options}
@@ -203,7 +203,7 @@ The following list of keys control the format of superscript \emph{and} subscrip
The distance between the subscript baseline and the next line.
\kvsplit{vsep}{super move}{sub move}\Default{0.6ex}\newtag[Changed]%
The extra vertical distance between superscript and subscript. The front part is the movement amount of the superscript, and the latter part is the movement amount of the subscript. If only the front part means that both are vertically shifted by one-half of the current value.
- \keychoice{halign}{l,c,r}\Default{l}
+ \keychoice{halign}{\fbox{l},c,r}
The alignment of superscript and subscript, which contains \code{l}, \code{c}, and \code{r} parameters respectively for left, center, and right alignment.
\end{options}
@@ -243,6 +243,7 @@ If you need to use the original definitions of \cs{textsuperscript}, \cs{textsub
\section{Known issues}
At present, the vertical and horizontal move are effective for the unit commands in the \pkg*{siunitx} macro package. However, due to the special mechanism that the decimal point is not recognized correctly because it's converted to a space in the \cs*{unit} command, it's recommended to use \code{pt} as the unit of move.
+\appendix
\nocite{*}
\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/tuda-ci/README.md b/macros/latex/contrib/tuda-ci/README.md
index fa9bdda5ce..96aefe2a35 100644
--- a/macros/latex/contrib/tuda-ci/README.md
+++ b/macros/latex/contrib/tuda-ci/README.md
@@ -1,8 +1,8 @@
# TUDa-CI – Corporate Design LaTeX-Templates for TU Darmstadt
- Copyright (C) Marei Peischl <marei@peitex.de>, 2018–2023
+ Copyright (C) Marei Peischl <marei@peitex.de>, 2018–2024
- tuda-ci v3.35 (2023-12-11)
+ tuda-ci v3.36 (2024-01-05)
***************************************************************************
@@ -352,3 +352,6 @@ leaflets | DEMO-TUDaLeaflet.tex | tudaleaflet.cls
* 3.35 (2023-12-11)
- first CTAN release of the new slide layout
- fix issues with headwidth calculation if custommargins=true is used
+ * 3.36 (2024-01--05)
+ - compatibility to create PDF/A via pdfmangement
+ - small adjustments for \tuprints \ No newline at end of file
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
index acf9ed93bc..4a11fad655 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
index a75b9a9453..4029255838 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer2023.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer2023.pdf
index 835fab9ca9..316ed08c25 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer2023.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer2023.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
index 3ebdab07f4..4d76ed4220 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
index eb2bf25c98..1463f7cdb2 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
index fbdc31600c..d02fc33ead 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
index 78ba6761b5..b3159b7d0d 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
index ef49b09f73..e12f68841b 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
index 80a6de24e1..11f5502ce6 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
index 23103a873a..129f77376b 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
index 1db7a3d759..7769fbfe05 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
index cb7f22e3c1..b044a06332 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
index d0430503c1..137a5842a7 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaAnnouncement.tex' version 3.35 (2023-12-11),
+%% This is file `DEMO-TUDaAnnouncement.tex' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
index 9532c5ed19..f4baeae9ff 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaBeamer.tex' version 3.35 (2023-12-11),
+%% This is file `DEMO-TUDaBeamer.tex' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer2023.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer2023.tex
index f9d90c3229..fcede80707 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer2023.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer2023.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaBeamer2023.tex' version 3.35 (2023-12-11),
+%% This is file `DEMO-TUDaBeamer2023.tex' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
index 5be7e455aa..3a90331cde 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaBibliography.bib' version 3.35 (2023-12-11),
+%% This is file `DEMO-TUDaBibliography.bib' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
index 57de73e60f..ca0a904ffb 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaExercise.tex' version 3.35 (2023-12-11),
+%% This is file `DEMO-TUDaExercise.tex' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
index 600379b3f8..1a33aced46 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaFromaddress.lco' version 3.35 (2023-12-11),
+%% This is file `DEMO-TUDaFromaddress.lco' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
index 1a87494392..c7662dbcdf 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaLeaflet.tex' version 3.35 (2023-12-11),
+%% This is file `DEMO-TUDaLeaflet.tex' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
index de19d02b07..85131892ef 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaLetter.tex' version 3.35 (2023-12-11),
+%% This is file `DEMO-TUDaLetter.tex' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
index 253c0da4bb..78da18f4f5 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaPhD.tex' version 3.35 (2023-12-11),
+%% This is file `DEMO-TUDaPhD.tex' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -292,24 +291,40 @@ Falls eine Layoutanpassung der Titelseite notwendig ist, gelten die in der TUDaP
\item[tuprints] \label{page:tuprints}Übergabe der Daten, sofern das Dokument über TUprints Veröffentlicht werden soll.
\begin{verbatim}
\tuprints{
- urn=1234,
- printid=12345,
+ urn=12345,
+ printid=123456,
year=2022
}
\end{verbatim}
Falls das Argument kein Gleichheitszeichen erkennt, wird der Wert als \code{printid} gesetzt und keine URN angegeben.
- Ab Version 2.07 ist es zudem möglich einen eigenen Lizenztext über den Schlüssel \verb|license| zu übergeben. Dieser ersetzt dann die voreingestellte Lizenzangabe.
+ \minisec{Lizenzangabe}
+ Ab Version 2.07 ist es zudem möglich einen eigenen Lizenztext über den Schlüssel \verb|license=<Text>| zu übergeben. Dieser ersetzt dann die voreingestellte Lizenzangabe.
+
+ Es existieren (seit v3.08) vorgefertigte Werte für die Option \verb|license|, um eine einfachere Anpassung zu ermöglichen. Diese lauten:
+
+ \parbox[t]{.5\linewidth}{%
+ \ttfamily
+ \href{https://creativecommons.org/licenses/by-nc-nd/2.0/}{cc-by-nc-nd-2.0-de} \textnormal{(noch aktuelle Voreinstellung)}\par
+ \href{https://creativecommons.org/licenses/by/4.0/}{cc-by-4.0}\par
+ \href{https://creativecommons.org/licenses/by-sa/4.0/}{cc-by-sa-4.0}\par
+ \href{https://creativecommons.org/licenses/by-nc-sa/4.0/}{cc-by-nc-sa-4.0}\par
+ }%
+ \parbox[t]{.5\linewidth}{
+ \ttfamily
+ \href{https://creativecommons.org/licenses/by-nc-/4.0/}{cc-by-nc-4.0}\par
+ \href{https://creativecommons.org/licenses/by-nd/4.0/}{cc-by-nd-4.0}\par
+ \href{https://creativecommons.org/licenses/by-nc-nd/4.0/}{cc-by-nc-nd-4.0}\par
+ \href{https://rightsstatements.org/page/InC/1.0/}{inc-1.0}\textnormal{ (Ab Version 3.36)}
+ }
- Ab Version 3.08 existieren vorgefertigte Werte für die Option \verb|license|, um eine einfachere Anpassung zu ermöglichen.
- Dies ist Bestandteil der Vorbereitung zur Anpassung der Standardlizenz, die durch die Universitätsbibliothek angepasst wurde.
+ Dies ist Bestandteil der Vorbereitung zur Anpassung der Standardlizenz, welche durch die Universitätsbibliothek angepasst wurde.
Die entsprechende Diskussion findet sich unter \url{https://github.com/tudace/tuda_latex_templates/issues/251} und eine Anpassung der Voreinstellung bei TUDa-CI ist für Version 4.0 vorgesehen.
- Die vorgefertigten Lizenzschlüssel lauten: \verb+cc-by-nc-nd-2.0-de+ (noch aktuelle Voreinstellung), \verb+cc-by-4.0+, \verb+cc-by-sa-4.0+, \verb+cc-by-nc-sa-4.0+, \verb+cc-by-nc-4.0+, \verb+cc-by-nd-4.0+, \verb+cc-by-nc-nd-4.0+.
- Unterstützung bei der Wahl einer passenden Creative Commons Lizenz bietet das Projekt über seinen Lizenzfinder unter \url{http://creativecommons.org/choose/}.
- Ab Version 3.10 werden alle (Stand: Januar 2021) dort vorgeschlagenen Lizenzen von tuda-ci unterstützt.
+ Unterstützung bei der Wahl einer passenden Creative Commons Lizenz bietet die ULB der TUDa unter https://www.ulb.tu-darmstadt.de/dpub oder das CC-Projekt sebst über seinen Lizenzfinder unter \url{http://creativecommons.org/choose/}.
+ Die TU Darmstadt empfiehlt in Ihrer Publikationsrichtlinie und Open-Access-Policy die Nutzung der offenen CC BY 4.0 Lizenz.
- Falls ein davon abweichender Wert gewählt wird, wird dieser direkt an der Stelle des Lizenztextes verwendet. Falls der Text Gleichheitszeichen oder Kommata enthält ist eine Gruppierung notwendig.
+ Falls ein von den oben gelisteten Schlüsseln abweichender Wert gesetzt wird, wird ebendieser direkt an der Stelle des Lizenztextes verwendet. Sofern der Text Gleichheitszeichen oder Kommata enthält ist eine Gruppierung notwendig.
\item[titlegraphic] Hier kann Code übergeben werden, der den farbigen Block im unteren Teil der Titelseite ersetzt. Details sind in der allgemeinen TUDaPub-Dokumentation beschrieben \cite{tudapub}
\item[titleintro] Ab Version 2.03 kann zusätzlich über diesen Hook ein beliebiger Text direkt nach dem Untertitel und vor den automatischen Daten ergänzt werden.
\item[titleaddendum] Wie \code{\tbs{}titleintro} jedoch als letztes Element des Blocks.
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
index a82bbe0b0f..6159ff33b0 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaPoster.tex' version 3.35 (2023-12-11),
+%% This is file `DEMO-TUDaPoster.tex' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
index 62845243e4..67fac56d18 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaPub.tex' version 3.35 (2023-12-11),
+%% This is file `DEMO-TUDaPub.tex' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -50,6 +49,7 @@
\let\code\texttt
\let\pck\textsf
\let\cls\textsf
+\biburlsetup
\usepackage{hologo}
@@ -61,7 +61,7 @@
title=TUDaPub - LaTeX-Paper im Corporate Design der TU Darmstadt,
subject=Basisdokumentation und Template zur Nutzung der tudapub-Dokumentenkasse,
date=2019-04-29,
- keywords=TU Darmstadt \sep Corporate Design \sep LaTeX
+ keywords=TU Darmstadt\sep Corporate Design\sep LaTeX
}
\title{TUDaPub -- \LaTeX-Paper im Corporate Design der TU Darmstadt}
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
index 0b1c211b18..afa868309f 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaReport.tex' version 3.35 (2023-12-11),
+%% This is file `DEMO-TUDaReport.tex' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
index f1f3d8d27a..782da3c25b 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaSciPoster.tex' version 3.35 (2023-12-11),
+%% This is file `DEMO-TUDaSciPoster.tex' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
index e23ae4bb0c..9100c5b08d 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaThesis.tex' version 3.35 (2023-12-11),
+%% This is file `DEMO-TUDaThesis.tex' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -94,6 +93,7 @@
\let\tbs\textbackslash
\let\pck\textsf
\let\cls\textsf
+\biburlsetup
\usepackage{pifont}% Zapf-Dingbats Symbole
\newcommand*{\FeatureTrue}{\ding{52}}
@@ -272,26 +272,43 @@ Falls eine Layoutanpassung der Titelseite notwendig ist, gelten die in der TUDaP
\item[examdate] Datum der Disputation
\item[date] Beliebiges Datum. Wird über \verb|datename| bezeichnet.
\item[publishers] Wird hier für die Ortsangabe verwendet und ist mit \enquote{Darmstadt}, bzw. \enquote{Darmstadt, Technische Universität Darmstadt} (bei Dissertationen) vorbelegt.
- \item[tuprints] \label{page:tuprints}Übergabe der Daten, sofern das dokument über tuprints Veröffentlicht werden soll.
+ \item[tuprints] \label{page:tuprints}Übergabe der Daten, sofern das Dokument über TUprints Veröffentlicht werden soll.
\begin{verbatim}
\tuprints{
- urn=1234,
- printid=12345,
+ printid=12345,
+ urn=123456,
+ year=2022
}
\end{verbatim}
Falls das Argument kein Gleichheitszeichen erkennt, wird der Wert als \code{printid} gesetzt und keine URN angegeben.
- Ab Version 2.07 ist es zudem möglich einen eigenen Lizenztext über den Schlüssel \verb|license| zu übergeben. Dieser ersetzt dann die voreingestellte Lizenzangabe.
+ \minisec{Lizenzangabe}
+ Ab Version 2.07 ist es zudem möglich einen eigenen Lizenztext über den Schlüssel \verb|license=<Text>| zu übergeben. Dieser ersetzt dann die voreingestellte Lizenzangabe.
+
+ Es existieren (seit v3.08) vorgefertigte Werte für die Option \verb|license|, um eine einfachere Anpassung zu ermöglichen. Diese lauten:
+
+ \parbox[t]{.5\linewidth}{%
+ \ttfamily
+ \href{https://creativecommons.org/licenses/by-nc-nd/2.0/}{cc-by-nc-nd-2.0-de} \textnormal{(noch aktuelle Voreinstellung)}\par
+ \href{https://creativecommons.org/licenses/by/4.0/}{cc-by-4.0}\par
+ \href{https://creativecommons.org/licenses/by-sa/4.0/}{cc-by-sa-4.0}\par
+ \href{https://creativecommons.org/licenses/by-nc-sa/4.0/}{cc-by-nc-sa-4.0}\par
+ }%
+ \parbox[t]{.5\linewidth}{
+ \ttfamily
+ \href{https://creativecommons.org/licenses/by-nc-/4.0/}{cc-by-nc-4.0}\par
+ \href{https://creativecommons.org/licenses/by-nd/4.0/}{cc-by-nd-4.0}\par
+ \href{https://creativecommons.org/licenses/by-nc-nd/4.0/}{cc-by-nc-nd-4.0}\par
+ \href{https://rightsstatements.org/page/InC/1.0/}{inc-1.0}\textnormal{ (Ab Version 3.36)}
+ }
- Ab Version 3.08 existieren vorgefertigte Werte für die Option \verb|license|, um eine einfachere Anpassung zu ermöglichen.
- Dies ist Bestandteil der Vorbereitung zur Anpassung der Standardlizenz, die durch die Universitätsbibliothek angepasst wurde.
+ Dies ist Bestandteil der Vorbereitung zur Anpassung der Standardlizenz, welche durch die Universitätsbibliothek angepasst wurde.
Die entsprechende Diskussion findet sich unter \url{https://github.com/tudace/tuda_latex_templates/issues/251} und eine Anpassung der Voreinstellung bei TUDa-CI ist für Version 4.0 vorgesehen.
- Die vorgefertigten Lizenzschlüssel lauten: \verb+cc-by-nc-nd-2.0-de+ (noch aktuelle Voreinstellung), \verb+cc-by-4.0+, \verb+cc-by-sa-4.0+, \verb+cc-by-nc-sa-4.0+, \verb+cc-by-nc-4.0+, \verb+cc-by-nd-4.0+, \verb+cc-by-nc-nd-4.0+.
- Unterstützung bei der Wahl einer passenden Creative Commons Lizenz bietet das Projekt über seinen Lizenzfinder unter \url{http://creativecommons.org/choose/}.
- Ab Version 3.10 werden alle (Stand: Januar 2021) dort vorgeschlagenen Lizenzen von tuda-ci unterstützt.
+ Unterstützung bei der Wahl einer passenden Creative Commons Lizenz bietet die ULB der TUDa unter https://www.ulb.tu-darmstadt.de/dpub oder das CC-Projekt sebst über seinen Lizenzfinder unter \url{http://creativecommons.org/choose/}.
+ Die TU Darmstadt empfiehlt in Ihrer Publikationsrichtlinie und Open-Access-Policy die Nutzung der offenen CC BY 4.0 Lizenz.
- Falls ein davon abweichender Wert gewählt wird, wird dieser direkt an der Stelle des Lizenztextes verwendet. Falls der Text Gleichheitszeichen oder Kommata enthält ist eine Gruppierung notwendig.
+ Falls ein von den oben gelisteten Schlüsseln abweichender Wert gesetzt wird, wird ebendieser direkt an der Stelle des Lizenztextes verwendet. Sofern der Text Gleichheitszeichen oder Kommata enthält ist eine Gruppierung notwendig.
\item[titlegraphic] Hier kann Code übergeben werden, der den farbigen Block im unteren Teil der Titelseite ersetzt. Details sind in der allgemeinen TUDaPub-Dokumentation beschrieben \cite{tudapub}
\item[titleintro] Ab Version 2.03 kann zusätzlich über diesen Hook ein beliebiger Text direkt nach dem Untertitel und vor den automatischen Daten ergänzt werden.
\item[titleaddendum] Wie \code{\tbs{}titleintro} jedoch als letztes Element des Blocks.
@@ -301,7 +318,7 @@ Falls eine Layoutanpassung der Titelseite notwendig ist, gelten die in der TUDaP
Das Makro \verb+\affidavit+ erzeugt eine Selbstständigkeitserklärung mit Unterschriftenzeile. Hier wird der oben übergebene Name/Signatur eingefügt.
In diesem Dokument findet sich das Affidavit direkt nach der Titelei.
-Ab Version 3.32 entfällt die seit Version 3.06 unterstütze Unterscheidung zwischen einem Affidavit für digitale oder gedruckte Abgaben. Aus Kompatibilitätsgründen werden die Optionen weiterhin verstanden, allerdings bewirken Sie nun beide das gleiche. Der Text entstammt von \url{https://www.tu-darmstadt.de/studieren/studierende_tu/studienorganisation_und_tucan/hilfe_und_faq/artikel_details_de_en_37824.de.jsp} (Stand 2023-06-19). Es ist wingend erforderlich, dass Studierende vor der Abgabe einer Arbeit überprüfen, ob der Text der geforderten Fassung entspricht.
+Ab Version 3.32 entfällt die seit Version 3.06 unterstütze Unterscheidung zwischen einem Affidavit für digitale oder gedruckte Abgaben. Aus Kompatibilitätsgründen werden die Optionen weiterhin verstanden, allerdings bewirken nun beide das gleiche. Der Text entstammt von \url{https://www.tu-darmstadt.de/studieren/studierende_tu/studienorganisation_und_tucan/hilfe_und_faq/artikel_details_de_en_37824.de.jsp} (Stand 2023-06-19). Es ist wingend erforderlich, dass Studierende vor der Abgabe einer Arbeit überprüfen, ob der Text der geforderten Fassung entspricht.
Dissertationen verwenden hier einen anderen Text, für die Unterscheidung wird die Affidavit-Option \verb+affidavit=dr+ intern verwendet.
@@ -309,7 +326,10 @@ Version 3.20 ermöglicht zusätzlich die Übergabe weiterer Optionen für den Si
Inwieweit diese Optionen verwendet werden dürfen ist jeweils vor der Verwendung durch die Nutzer:in abzuklären.
TUDa-CI kann hierfür keine gesicherte Aussage treffen.
\begin{verbatim}
- \affidavit[signature=Signaturname,signature-image={\includegraphics[width=\width]{signaturbild}}]
+ \affidavit[
+ signature=Signaturname,
+ signature-image={\includegraphics[width=\width]{signaturbild}}
+ ]
\end{verbatim}
Eine vertikale Verschiebung des Signaturbildes ist nicht direkt implementiert, ist jedoch mit der Verwendung des \LaTeX-Makros \verb+\raisebox{<Verschiebung>}{<Inhalt>}+ problemlos möglich.
@@ -352,7 +372,7 @@ Hierbei ist zu beachten, dass die Einstellungen als Ausgangspunkt den Voreingest
<Eigene Anpassungen>
}
\end{verbatim}
-Die gilt insbesondere für die Optionen \code{includehead}, \code{includefoot} und \code{includemp}.
+Die gilt insbesondere für die Optionen \code{includehead}, \code{includefoot}, \code{includemp}.
\end{description}
diff --git a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
index cfb344c1a0..f57f5caefe 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamercolorthemeTUDa.sty' version 3.35 (2023-12-11),
+%% This is file `beamercolorthemeTUDa.sty' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamercolorthemeTUDa}
[\filedate\space\fileversion]
diff --git a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa2023.sty b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa2023.sty
index ec64aaaf9a..f1f4835aec 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa2023.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa2023.sty
@@ -1,4 +1,4 @@
-%% This is file `beamercolorthemeTUDa2023.sty' version 3.35 (2023-12-11),
+%% This is file `beamercolorthemeTUDa2023.sty' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamercolorthemeTUDa2023}
[\filedate\space\fileversion]
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
index dbfb4744a3..e5d474ff9a 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerfontthemeTUDa.sty' version 3.35 (2023-12-11),
+%% This is file `beamerfontthemeTUDa.sty' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerfontthemeTUDa}
[\filedate\space\fileversion]
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa2023.sty b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa2023.sty
index 0ee8bc3d9c..14663a8528 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa2023.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa2023.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerfontthemeTUDa2023.sty' version 3.35 (2023-12-11),
+%% This is file `beamerfontthemeTUDa2023.sty' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerfontthemeTUDa2023}
[\filedate\space\fileversion]
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
index de588da9ca..832504cbf4 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerinnerthemeTUDa2023.sty' version 3.35 (2023-12-11),
+%% This is file `beamerinnerthemeTUDa2023.sty' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{beamerinnerthemeTUDa2023}{\filedate}{\fileversion}{Inner~beamer~theme~of~tuda-ci}
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2008.sty b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2008.sty
index 520176460c..0e87fea683 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2008.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2008.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerinnerthemeTUDa2008.sty' version 3.35 (2023-12-11),
+%% This is file `beamerinnerthemeTUDa2008.sty' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{beamerinnerthemeTUDa}{\filedate}{\fileversion}{Inner~beamer~theme~of~tuda-ci, compatibility for design of 2008}
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2023.sty b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2023.sty
index 364ece88b6..615e2ab5a3 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2023.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2023.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerinnerthemeTUDa2023.sty' version 3.35 (2023-12-11),
+%% This is file `beamerinnerthemeTUDa2023.sty' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{beamerinnerthemeTUDa2023}{\filedate}{\fileversion}{Inner~beamer~theme~of~tuda-ci,~Design~of~2023}
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
index 38a642df3a..fc1db6be04 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerouterthemeTUDa.sty' version 3.35 (2023-12-11),
+%% This is file `beamerouterthemeTUDa.sty' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{beamerouterthemeTUDa}{\filedate}{\fileversion}{Outer~beamer~theme~of~tuda-ci}
\RequirePackage[paper=slide]{tudarules}
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2023.sty b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2023.sty
index 9e719e0157..980803001c 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2023.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2023.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerouterthemeTUDa2023.sty' version 3.35 (2023-12-11),
+%% This is file `beamerouterthemeTUDa2023.sty' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage{beamerouterthemeTUDa2023}{\filedate}{\fileversion}{Outer~beamer~theme~of~tuda-ci~design~of~2023}
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
index 5cae22d81b..73aa5a5e29 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerthemeTUDa-mecheng.sty' version 3.35 (2023-12-11),
+%% This is file `beamerthemeTUDa-mecheng.sty' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\ProvidesExplPackage{beamerthemeTUDa-mecheng}{\filedate}{\fileversion}{specific tudabeamer configuration for the department of mechanical engineering}
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
index ddf8e8ee2c..3ed1238fae 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerthemeTUDa.sty' version 3.35 (2023-12-11),
+%% This is file `beamerthemeTUDa.sty' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerthemeTUDa}
[\filedate\space\fileversion\space beamer theme using the Corporate Design of TU Darmstadt]
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2008.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2008.sty
index 3caba66bd6..1d9b112bc8 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2008.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2008.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerthemeTUDa2008.sty' version 3.35 (2023-12-11),
+%% This is file `beamerthemeTUDa2008.sty' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerthemeTUDa2008}
[\filedate\space\fileversion\space beamer theme using the Corporate Design of TU Darmstadt Design of 2008]
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2023.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2023.sty
index b4d98c0890..91e3125172 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2023.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2023.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerthemeTUDa2023.sty' version 3.35 (2023-12-11),
+%% This is file `beamerthemeTUDa2023.sty' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerthemeTUDa2023}
[\filedate\space\fileversion\space beamer theme using the Corporate Design of TU Darmstadt Design of 2023]
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
index 419fb6c54f..2a019ee5d2 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a0paper.clo' version 3.35 (2023-12-11),
+%% This is file `tuda-a0paper.clo' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\ProvidesExplFile{tuda-a0paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a0paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{125pt}{165pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
index 345bfe07a8..ecb299f814 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a1paper.clo' version 3.35 (2023-12-11),
+%% This is file `tuda-a1paper.clo' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\ProvidesExplFile{tuda-a1paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a1paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{86pt}{120pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
index fc0b62114c..5af8fb7ae6 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a2paper.clo' version 3.35 (2023-12-11),
+%% This is file `tuda-a2paper.clo' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\ProvidesExplFile{tuda-a2paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a0paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{65pt}{82pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
index 63e5c24610..ced810ba44 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a3paper.clo' version 3.35 (2023-12-11),
+%% This is file `tuda-a3paper.clo' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\ProvidesExplFile{tuda-a3paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a3paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{47pt}{61pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
index 7d027d7233..9081c79a2f 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a4paper.clo' version 3.35 (2023-12-11),
+%% This is file `tuda-a4paper.clo' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\ProvidesExplFile{tuda-a4paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a4paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{36pt}{47pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
index 57d42e91be..75e80d48ce 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a5paper.clo' version 3.35 (2023-12-11),
+%% This is file `tuda-a5paper.clo' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\ProvidesExplFile{tuda-a5paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a5paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{22pt}{28pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty b/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
index ef39aa9992..405025a4ea 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
@@ -1,4 +1,4 @@
-%% This is file `tuda-pgfplots.sty' version 3.35 (2023-12-11),
+%% This is file `tuda-pgfplots.sty' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
% Special thanks to: Sebastian Schöps Institut Theorie Elektromagnetischer Felder (TEMF), TU Darmstadt
% The original version of this file has been inspired by the colorscheme in the Metropolis beamer theme by Matthias Vogelgesang https://github.com/matze/mtheme
\ProvidesPackage{tuda-pgfplots}[\filedate\space\fileversion\space tuda-ci pgfplots color schemes]
diff --git a/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls b/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
index 147c0f66cb..0a2ab1ee48 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
@@ -1,4 +1,4 @@
-%% This is file `tudabeamer.cls' version 3.35 (2023-12-11),
+%% This is file `tudabeamer.cls' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{tudabeamer}
[\filedate\space\fileversion\space]
diff --git a/macros/latex/contrib/tuda-ci/tex/tudacolors.def b/macros/latex/contrib/tuda-ci/tex/tudacolors.def
index 001a3fbda8..482049e5e6 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudacolors.def
+++ b/macros/latex/contrib/tuda-ci/tex/tudacolors.def
@@ -1,4 +1,4 @@
-%% This is file `tudacolors.def' version 3.35 (2023-12-11),
+%% This is file `tudacolors.def' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\ProvidesFile{tudacolors.def}
[\filedate\space\fileversion\space Color definitions for tuda-ci]
diff --git a/macros/latex/contrib/tuda-ci/tex/tudacolors.sty b/macros/latex/contrib/tuda-ci/tex/tudacolors.sty
index edfae54d5c..12c351e281 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudacolors.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tudacolors.sty
@@ -1,4 +1,4 @@
-%% This is file `tudacolors.sty' version 3.35 (2023-12-11),
+%% This is file `tudacolors.sty' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudacolors}{\filedate}{\fileversion}{Color definition for TU Darmstadt's tuda-ci bundle}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls b/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
index 938e825893..c9f99798f0 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaexercise.cls' version 3.35 (2023-12-11),
+%% This is file `tudaexercise.cls' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplClass{tudaexercise}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudafonts.sty b/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
index 7fd595b795..e97c230514 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
@@ -1,4 +1,4 @@
-%% This is file `tudafonts.sty' version 3.35 (2023-12-11),
+%% This is file `tudafonts.sty' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{tudafonts}
[\filedate\space\fileversion\space
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls b/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
index d51348d2ae..108a41cc0a 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaleaflet.cls' version 3.35 (2023-12-11),
+%% This is file `tudaleaflet.cls' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudaleaflet}{\filedate}{\fileversion}{Leaflets using the Corporate Design of TU Darmstadt}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaletter.cls b/macros/latex/contrib/tuda-ci/tex/tudaletter.cls
index 8e3a091042..d322be13dd 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaletter.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaletter.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaletter.cls' version 3.35 (2023-12-11),
+%% This is file `tudaletter.cls' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplClass{tudaletter}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo b/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
index 67bffe121f..b5d756dd77 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
@@ -1,4 +1,4 @@
-%% This is file `tudalettersize10pt.clo' version 3.35 (2023-12-11),
+%% This is file `tudalettersize10pt.clo' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -32,7 +32,7 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainers of this work are Marei Peischl <kontakt@peitex.de> and Markus Lazanowski <latex@ce.tu-darmstadt.de>.
+%% The Current Maintainers of this work are Marei Peischl <kontakt@peitex.de>.
%%
%%
\ProvidesFile{%
diff --git a/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg b/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
index 8480fecfe0..6c99184ae7 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
+++ b/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
@@ -1,4 +1,4 @@
-%% This is file `tudamecheng.cfg' version 3.35 (2023-12-11),
+%% This is file `tudamecheng.cfg' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\RequirePackage{expl3}
\ProvidesExplFile{tudamecheng.cfg}
{\filedate}{\fileversion}{Special Features the department of mechanical engineering of Darmstadt's Corporate Design (tuda-ci)}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaposter.cls b/macros/latex/contrib/tuda-ci/tex/tudaposter.cls
index deff73c12c..55bae572c7 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaposter.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaposter.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaposter.cls' version 3.35 (2023-12-11),
+%% This is file `tudaposter.cls' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudaposter}{\filedate}{\fileversion}{Poster Layouts for the Corporate Design of TU Darmstadt}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudapub.cls b/macros/latex/contrib/tuda-ci/tex/tudapub.cls
index 16f659174f..ce48e40441 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudapub.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudapub.cls
@@ -1,4 +1,4 @@
-%% This is file `tudapub.cls' version 3.35 (2023-12-11),
+%% This is file `tudapub.cls' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplClass{tudapub}
@@ -109,7 +108,7 @@
headline .initial:n =false,
colorback .bool_gset:N = \g_ptxcd_colorback_bool,
colorback .initial:n = true,
- colorback / title .code:n =
+ colorback / title .code:n =
\bool_gset_true:N \g_ptxcd_colorbacktitle_bool
\bool_gset_true:N \g_ptxcd_colorback_bool
\bool_gset_false:N \g_ptxcd_colorbacksubtitle_bool,
@@ -117,13 +116,15 @@
\bool_gset_false:N \g_ptxcd_colorbacktitle_bool
\bool_gset_false:N \g_ptxcd_colorbacksubtitle_bool
\bool_gset_true:N \g_ptxcd_colorback_bool,
- colorback / head .code:n =
+ colorback / head .code:n =
\bool_gset_true:N \g_ptxcd_colorbacktitle_bool
\bool_gset_true:N \g_ptxcd_colorback_bool
\bool_gset_true:N \g_ptxcd_colorbacksubtitle_bool,
colortitleback .code:n = \msg_error:nnx {tudapub} {compatibility-only} {\l_keys_key_tl},
pdfa .bool_gset:N = \g_ptxcd_pdfa_bool,
pdfa .initial:n = true,
+ pdfx .bool_gset:N = \g_ptxcd_pdfx_bool,
+ pdfx .initial:n = true,
twocolumn .bool_gset:N = \g_ptxcd_twocolumn_bool,
twocolumn .default:n = true,
twocolumn .initial:n = false,
@@ -195,10 +196,37 @@
\ProcessKeyOptions[ptxcd/pub]
+\bool_if:NF \g_ptxcd_pdfa_bool {\bool_gset_false:N \g_ptxcd_pdfx_bool}
-%Option adjustments required for valid PDF/A
-\bool_if:NT \g_ptxcd_pdfa_bool {
- \PassOptionsToPackage{RGB}{xcolor}
+\bool_if:NT \g_ptxcd_pdfa_bool {
+ \msg_new:nnn {tudapub} {colors-to-rgb} {
+ You~did~not~add~a~color~profile.\\
+ I~will~use~the~default~one~and~automatically~try~to~convert~internal~colors~to~RGB.\\
+ This~is~required~to~be~able~to~create~PDF/A~compliance.
+ }
+
+ \cs_if_exist:NT \pdfmeta_standard_get:nN {
+ \pdfmeta_standard_get:nN {outputintent_A} \l_tmpa_tl
+ \quark_if_no_value:NF \l_tmpa_tl {
+ \bool_gset_false:N \g_ptxcd_pdfx_bool
+ \msg_new:nnn{tudapub} {prefer-lualatex} {
+ I~detected~usage~of~l3pdfmeta~(\DocumentMetadata)~to~create~PDF/A.\\
+ tudapub~will~not~load~pdfx~to~avoid~conflicts.\\
+ To~disable this message use pdfx=false.
+ }
+ \msg_info:nn {tudapub} {prefer-lualatex}
+ }
+
+ \prop_if_in:NnF \g__pdfmeta_outputintents_prop {GTS_PDFA1} {
+ \PassOptionsToPackage{rgb}{xcolor}
+ \msg_info:nn {tudapub} {colors-to-rgb}
+ }
+ }
+}
+
+\bool_if:NT \g_ptxcd_pdfx_bool {
+ \PassOptionsToPackage{rgb}{xcolor}
+ \msg_info:nn {tudapub} {colors-to-rgb}
}
\exp_args:Nx \tl_if_eq:nnT {\prop_item:Nn \g_ptxcd_clsopts_prop {fontsize}} {9pt}
@@ -665,7 +693,7 @@
+\c_ptxcd_rulesep_dim
]{title.TUDa.image}
- \bool_if:NT \g_ptxcd_colorbacktitle_bool {
+ \bool_if:NT \g_ptxcd_colorbacktitle_bool {
\ModifyLayer[
textarea,
addvoffset=\dim_eval:n {\box_ht:N \ptxcd_headrule_box+\box_dp:N \ptxcd_headrule_box-\g_ptxcd_titlerule_dim},
@@ -770,7 +798,7 @@
\tl_if_empty:NTF \g_ptxcd_titleimage_code_tl
{
\bool_if:NF \g_ptxcd_colorbacktitle_bool
- {
+ {
\bool_if:NT \g_ptxcd_colorback_bool {\putLL{\color{identbarcolor}\rule{\layerwidth}{\layerheight}}}
}
}
@@ -844,7 +872,7 @@
%Logos
\RequirePackage{graphicx}
-\if_bool:N \g_ptxcd_pdfa_bool
+\if_bool:N \g_ptxcd_pdfx_bool
\msg_new:nnn{tudapub} {prefer-lualatex} {
You~use~pdfa-mode~in~#1.\\
@@ -879,9 +907,8 @@
\msg_error:nn{tudapub} {outdated-package-pdfa} {pdfx}
}
-
%%hyperref
- \hypersetup{hidelinks, unicode}
+ \hypersetup{hidelinks, unicode,pdfa}
\iow_new:N \ptxcd_xmpdata_stream
\tl_new:N \g_ptxcd_xmp_title_tl
\tl_new:N \g_ptxcd_xmp_author_tl
@@ -948,17 +975,70 @@
}
\msg_new:nnnn{tudapub} {unknown-metadata} {
- You~ used~ the~ #1~ metadata~ entry.\\
- I~ don't~ know~ how~ to~ handle~ that.\\
- It~ will~ be~ ignored.
+ You~ used~ the~ #1~ metadata~ entry.\\
+ I~ don't~ know~ how~ to~ handle~ that.\\
+ It~ will~ be~ ignored.
} {See~ TUDa-CI~ or~ pdfx~ documentation~ for~ details.}
\else:
- \msg_new:nnn{tudapub} {no-pdfa}{The~ tudapub~ class~ won't~ create~ PDF/A-mode.}
- \msg_info:nn{tudapub} {no-pdfa}
- %%hyperref
- \RequirePackage[hidelinks, unicode]{hyperref}
+ \PassOptionsToPackage{hidelinks, unicode}{hyperref}
+ \RequirePackage{hyperref}
+ \hypersetup{pdfcreator=LaTeX~using~TUDa-CI}
+
+ \msg_new:nnnn {tudapub} {metadata-to-hypersetup} {
+ You~don't~use~pdfx.\\
+ Here~the~\string\Metadata\~command~only~exists~for~compatibility~reasons.\\
+ I~will~pass~the~data~to~ḩypersetup.
+ }{
+ If~possible~please~use~hyperref's~\strung\hypersetup~command~for~the~metadata~directly.\\
+ See~hyperref~documentation~for~details~on~usage.
+ }
- \newcommand{\Metadata}[1]{\ClassError{tudapub}{You~cannot~use~\string\Metadata\ ~with~pdfa=false.}{}}
+ \newcommand*{\Metadata}[1]{
+ \tl_set:Nn \l_tmpa_tl {#1}
+ \tl_replace_all:Nnn \l_tmpa_tl {\sep} {;~}% pdfx-Syntax compatibility
+ \clist_map_inline:Nn \l_tmpa_tl {
+ \exp_args:Nx \hypersetup{pdf\tl_trim_spaces:n {##1}}
+ }
+ \msg_warning:nn {tudapub} {metadata-to-hypersetup}
+ }
+
+
+ \cs_new:Nn \ptxcd_pass_TitleData: {
+ % check if pdfmanagement is active
+ \prop_if_exist:NTF \g__pdfmanagement_documentproperties_prop {
+ \prop_set_eq:NN \l_tmpa_prop \g__pdfmanagement_documentproperties_prop
+ } {
+ \prop_set_eq:NN \l_tmpa_prop \g__hyp_documentproperties_prop
+ }
+
+ % title
+ \prop_if_in:NnF \l_tmpa_prop {hyperref/pdftitle} {
+ \begingroup
+ \def\newline{}
+ \def\\{}
+ \let\thanks\use_none:n
+ \tl_gset:Nf \g_tmpa_tl {\@title}
+ \endgroup
+ \hypersetup{pdftitle={\tl_to_str:V \g_tmpa_tl}}
+ }
+
+ % author
+ \prop_if_in:NnF \l_tmpa_prop {hyperref/pdfauthor} {
+ \begingroup
+ \def\newline{}
+ \def\\{}
+ \let\thanks\use_none:n
+ \tl_gset:Nx \g_tmpa_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \and}}
+ \tl_gset:Nx \g_tmpa_tl {\g_tmpa_tl }
+ \endgroup
+ \hypersetup{pdfauthor=\g_tmpa_tl}
+ }
+ }
+
+ \bool_if:NF \g_ptxcd_pdfa_bool {
+ \msg_new:nnn{tudapub} {no-pdfa}{The~ tudapub~ class~ won't~ create~ PDF/A-mode.}
+ \msg_info:nn{tudapub} {no-pdfa}
+ }
\fi:
\box_new:N \g_ptxcd_sponsor_box
diff --git a/macros/latex/contrib/tuda-ci/tex/tudarules.sty b/macros/latex/contrib/tuda-ci/tex/tudarules.sty
index 9ae3e48885..22b74c478b 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudarules.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tudarules.sty
@@ -1,4 +1,4 @@
-%% This is file `tudarules.sty' version 3.35 (2023-12-11),
+%% This is file `tudarules.sty' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudarules}{\filedate}{\fileversion}{Creation of colored bars for tuda-ci bundle}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls b/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
index 8c6da6486e..3ebd638173 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
@@ -1,4 +1,4 @@
-%% This is file `tudasciposter.cls' version 3.35 (2023-12-11),
+%% This is file `tudasciposter.cls' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudasciposter}{\filedate}{\fileversion}{Scientific Poster Layout for TU Darmstadt}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo b/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
index 0b23256ff5..4977d1918e 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
@@ -1,4 +1,4 @@
-%% This is file `tudasize9pt.clo' version 3.35 (2023-12-11),
+%% This is file `tudasize9pt.clo' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -32,7 +32,7 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainers of this work are Marei Peischl <kontakt@peitex.de> and Markus Lazanowski <latex@ce.tu-darmstadt.de>.
+%% The Current Maintainers of this work are Marei Peischl <kontakt@peitex.de>.
%%
%%
\ProvidesFile{%
diff --git a/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg b/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
index 6f18fa2ac9..ded4b7c23b 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
+++ b/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
@@ -1,4 +1,4 @@
-%% This is file `tudathesis.cfg' version 3.35 (2023-12-11),
+%% This is file `tudathesis.cfg' version 3.36 (2024-01-05),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -18,7 +18,6 @@
%%
%% The Current Maintainers of this work are
%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
%%
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
@@ -26,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.35}
-\def\filedate{2023-12-11}
+\def\fileversion{3.36}
+\def\filedate{2024-01-05}
\RequirePackage{expl3}
\ProvidesExplFile{tudathesis.cfg}
{\filedate}{\fileversion}{Special Features for publication type 'thesis' using TU Darmstadt's Corporate Design (tuda-ci)}
@@ -302,10 +301,16 @@
\tl_gset:Nx \g_ptxcd_license_info_tl {\exp_not:N \g__ptxcd_cc_license:n {\l_keys_choice_tl} \exp_not:N \iflanguage{\exp_not:N \bbl@main@language}{}{\exp_not:n {\par\smallskip\otherlanguage{\bbl@main@language}}{\exp_not:N \g__ptxcd_cc_license:n {\l_keys_choice_tl}}}}
},
license / cc-by-nc-nd-2.0-de .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl {\use:c {g__ptxcd_cc-by-nc-nd-2.0-de:}},
- license / initial .code:n = {
- \keys_set:nn {ptxcd/thesis} {license=cc-by-nc-nd-2-de}
- \tl_put_right:Nn \g_ptxcd_license_info_tl {\msg_warning:nn {tudapub/thesis} {default-license-will-change}}
+ license / inc-1.0-de .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl {
+ Die~Veröffentlichung~ist~urheberrechtlich~geschützt\newline
+ \url{https://rightsstatements.org/page/InC/1.0/}
},
+ license / inc-1.0-en .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl {
+ This~work~is~protected~by~copyright\newline
+ \url{https://rightsstatements.org/page/InC/1.0/}
+ },
+ license / inc-1.0 .code:n = \tl_if_in:NnTF \languagename {german} {\keys_set:nn {ptxcd/thesis}{license=inc-1.0-de}}{\keys_set:nn {ptxcd/thesis}{license=inc-1.0-en}},
+ license / initial .code:n = {\keys_set:nn {ptxcd/thesis} {license=cc-by-4.0}},
license / unknown .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl {#1},
license .initial:n = initial,
signature .tl_set:N = \l_ptxcd_signature_tl,
@@ -371,13 +376,13 @@
\selectlanguage{ngerman}
Bitte~zitieren~Sie~dieses~Dokument~als:
\tl_if_empty:NF \g_ptxcd_thesis_urn_tl {\\URN:~urn:nbn:de:tuda-tuprints-\g_ptxcd_thesis_urn_tl}\\
- URL:~\url{http://tuprints.ulb.tu-darmstadt.de/\g_ptxcd_thesis_tuprints_tl}\\
+ URL:~\url{https://tuprints.ulb.tu-darmstadt.de/\g_ptxcd_thesis_tuprints_tl}\\
\tl_if_empty:NF \g_ptxcd_thesis_doi_tl {DOI:~\url{https://doi.org/\g_ptxcd_thesis_doi_tl}\\}
\tl_if_empty:NF \g_ptxcd_thesis_publication_year_tl {Jahr~der~Veröffentlichung~auf~TUprints:~\g_ptxcd_thesis_publication_year_tl}
\par\vspace{\baselineskip}
Dieses~Dokument~wird~bereitgestellt~von~tuprints,\\
E-Publishing-Service~der~TU~Darmstadt\\
- \url{http://tuprints.ulb.tu-darmstadt.de}\\
+ \url{https://tuprints.ulb.tu-darmstadt.de}\\
\url{tuprints@ulb.tu-darmstadt.de}\\[2\baselineskip]
\tl_if_empty:NF \g_ptxcd_license_info_tl {\\[2\baselineskip]\g_ptxcd_license_info_tl}
}%
diff --git a/macros/luatex/generic/minim-math/README b/macros/luatex/generic/minim-math/README
index bb7786d6cb..24fe3397f1 100644
--- a/macros/luatex/generic/minim-math/README
+++ b/macros/luatex/generic/minim-math/README
@@ -1,4 +1,4 @@
-Version: 2023/1.3
+Version: 2024/1.4
SUMMARY
@@ -18,6 +18,10 @@ In order to obtain the typeset manual of this package, simply say:
HISTORY
+2024/1.4 (5/1/2024)
+
+ * Add \floor and \ceil macros
+
2023/1.3 (20/10/2023)
No notable changes.
diff --git a/macros/luatex/generic/minim-math/minim-math.doc b/macros/luatex/generic/minim-math/minim-math.doc
index 2a44dc72f4..3648458b57 100644
--- a/macros/luatex/generic/minim-math/minim-math.doc
+++ b/macros/luatex/generic/minim-math/minim-math.doc
@@ -8,8 +8,8 @@
\else \startmetadata
author {Esger Renkema}
title {minim-math}
- date {2023-10-20}
- version {2023/1.3}
+ date {2024-01-05}
+ version {2024/1.4}
keywords {LuaTeX; Plain TeX; Unicode mathematics}
stopmetadata
\maketitle \fi
@@ -64,6 +64,7 @@ For nonmathematical text, you should use ⟦*\text⟧ instead of ⟦\mup⟧.
The default properties of characters can be set with one of the following three
commands:
\startlist
+\tagattribute List ListNumbering /Unordered
\item\ignore. ⟦*\mathmap {character list} {style}⟧
\item\ignore. ⟦*\mathclass {character list} {class}⟧
\item\ignore. ⟦*\mathfam {character list} nr⟧
@@ -72,6 +73,7 @@ There, ⟦style⟧ is one of the above and ⟦class⟧ is the name of a class as
Finally, the ⟦character list⟧ should be a comma-separated list with elements of
one of the following forms:
\startlist
+\tagattribute List ListNumbering /Decimal
{\def\⟦#1{⟦[\uppercase{#1}#1]\kern-1pt}
\item1. a list of characters, like ⟦abc⟧ or ⟦\partial⟧ or $ℝ$;
\item2. a character range, like ⟦`A-`Z⟧, ⟦65-90⟧ or ⟦"41-"5A⟧;
@@ -188,6 +190,7 @@ Shorthand & Result \cr
⟦\bra x, \ket y⟧ & $\bra x, \ket y$ \cr
⟦\braket x y⟧ & $\braket x y$ \cr
⟦\norm x, \Norm x⟧ & $\norm x, \Norm x$ \cr
+⟦\floor x, \ceil x⟧ & $\floor x, \ceil x$ \cr
⟦x \stackrel ?= y⟧ & $x \stackrel ?= y$ \cr
⟦x \stackbin a+ y⟧ & $x \stackbin a+ y$ \cr
⟦f\inv⟧ & $f\inv$ \quad (cf. $f^{-1}$) \cr
@@ -233,6 +236,7 @@ contents of this package; I have included them because I find them hard to
remember.
\startlist
+\tagattribute List ListNumbering /Decimal
\item1. ⟦*\eqalign⟧ gives a vertically centered box and can occur many times in
an equation, while ⟦*\eqalignno⟧ and ⟦*\leqalignno⟧ span whole lines (put the
equation numbers in the third column). All assume the relation (or operator)
diff --git a/macros/luatex/generic/minim-math/minim-math.pdf b/macros/luatex/generic/minim-math/minim-math.pdf
index 30e2129fcf..9544068d92 100644
--- a/macros/luatex/generic/minim-math/minim-math.pdf
+++ b/macros/luatex/generic/minim-math/minim-math.pdf
Binary files differ
diff --git a/macros/luatex/generic/minim-math/minim-math.tex b/macros/luatex/generic/minim-math/minim-math.tex
index 1a8f1157c1..7029952418 100644
--- a/macros/luatex/generic/minim-math/minim-math.tex
+++ b/macros/luatex/generic/minim-math/minim-math.tex
@@ -468,6 +468,8 @@
\def\braket#1#2{\left⟨#1\middle\vert#2\right⟩}
\def\norm#1{\left\vert#1\right\vert} \let \abs=\norm
\def\Norm#1{\left\Vert#1\right\Vert}
+\def\ceil#1{\left⌈#1\right⌉}
+\def\floor#1{\left⌊#1\right⌋}
% a slightly smaller unary minus
\def\unaryminus{\mathord{\mathpalette\unaryminus:make{}}}
diff --git a/macros/luatex/generic/minim-mp/README b/macros/luatex/generic/minim-mp/README
index d712a7f11c..6c10eeabb2 100644
--- a/macros/luatex/generic/minim-mp/README
+++ b/macros/luatex/generic/minim-mp/README
@@ -1,4 +1,4 @@
-Version: 2023/1.3
+Version: 2024/1.4
SUMMARY
@@ -19,6 +19,12 @@ In order to obtain the typeset manual of this package, simply say:
HISTORY
+2024/1.4 (5/1/2024)
+
+ * Support the extended graphics state (extgstate)
+ * Allow box resource (xform) creation directly from metapost
+ * Support transparency and transparency groups
+
2023/1.3 (20/10/2023)
* Various runscript improvements:
@@ -30,13 +36,11 @@ HISTORY
* Improve font handling in minim-lamp.ini, and provide \begin{document}.
* Add a minim-mp.sty package file for LaTeX users.
-
2023/1.2 (3/3/2023)
* Add a few more metapost macros.
* Various small bug fixes.
-
2022/1.1 (3/3/2022)
New features:
@@ -57,7 +61,6 @@ HISTORY
into raw pdf code.
* No longer write out superfluous line widths.
-
2021/1.0 (1/6/2021)
This was the original release.
diff --git a/macros/luatex/generic/minim-mp/minim-mp.doc b/macros/luatex/generic/minim-mp/minim-mp.doc
index 2f7541ba75..9429544d8e 100644
--- a/macros/luatex/generic/minim-mp/minim-mp.doc
+++ b/macros/luatex/generic/minim-mp/minim-mp.doc
@@ -8,8 +8,8 @@
\else \startmetadata
author {Esger Renkema}
title {minim-mp}
- date {2023-10-20}
- version {2023/1.3}
+ date {2024-01-05}
+ version {2024/1.4}
keywords {LuaTeX; Plain TeX; MetaPost; mplib}
stopmetadata
\maketitle \fi
@@ -147,7 +147,7 @@ endfig;⟧
\vskip-2\parskip plus 2\parskip
\quitvmode\hfil
\startelement alt {The text ‘Running TeX from within MetaPost’ set along a half-circle.} {Figure}%
-\stoptagging\directmetapost{%
+\startsinglecontentitem\directmetapost{%
beginfig(1)
save t, w, r, a; picture t;
t = "Running TeX from within MetaPost" infont "tenrm";
@@ -158,7 +158,7 @@ beginfig(1)
draw c rotatedaround((x,0), a)
shifted (-r*sind(a)-x, r*cosd(a));
endfor
-endfig;}\starttagging \stopelement{Figure}
+endfig;}\stopsinglecontentitem \stopelement{Figure}
By default, the ⟦maketext⟧ operator is used for typesetting labels. You can,
however, order de ⟦label⟧ macro to use ⟦infont⟧ instead by setting
@@ -199,9 +199,9 @@ between parentheses and can be followed by the usual drawing options.
For example,
⟦multidraw (contours "example" of "tenbf") withpen currentpen scaled 1/10;⟧
will give the word%
-\markelement{Span}{\setactualtext{example }
+\markelement{Span}{\setactualtext{example }\startsinglecontentitem\space
\directmetapost{beginfig(1) multidraw (contours "example" of "tenbf")
-withpen currentpen scaled 1/10; baseline 0; endfig;}}
+withpen currentpen scaled 1/10; baseline 0; endfig;}\stopsinglecontentitem}
in a thin outline.
Finally, two handy clipping macros have been added:
@@ -233,9 +233,9 @@ If your lua snippet returns nothing, the ⟦runscript⟧ call will be invisible
metapost. If on the other hand it does return a value, that value will have to
be translated to metapost. Numbers and strings will be returned as they are
(so make sure the string is surrounded by quotes if you want to return
-a metapost string). You can return a point or colour by returning an array of
-two to four elements. For other return values, ⟦tostring()⟧ will be called.
-
+a metapost string). You can return a point, colour or transform by returning an
+array of two to six elements (excluding five). For other return values,
+⟦tostring()⟧ will be called.
\section Passing values to lua
@@ -275,7 +275,7 @@ and have ⟦texvariable jobname⟧ work as expected.
For accessing count, dimen, attribute or toks registers, the macros are
⟦*tex.count⟧ ⟦[number]⟧ or ⟦*tex.count⟧⟦.name⟧ [etc. etc.] for getting and
-⟦*set tex.count⟧ ⟦[number] = value⟧ or ⟦*tex.count⟧⟦.name = value⟧ etc. for
+⟦*set tex.count⟧ ⟦[number] = value⟧ or ⟦*set tex.count⟧⟦.name = value⟧ etc. for
setting values.
@@ -305,7 +305,7 @@ information on these parameters.
You can use text inside patterns, as in this example:
\hfill \vbox to 0pt{
\startelement alt{A circle filled with red As in a rectangular pattern.}{Figure}
-\directmetapost{
+\startsinglecontentitem \directmetapost{
% define the pattern
picture letter; letter = maketext("a");
beginpattern(a)
@@ -316,7 +316,8 @@ endpattern(12pt,12pt);
beginfig(1)
fill fullcircle scaled 3cm withpattern(a) withcolor 3/4red;
draw fullcircle scaled 3cm withpen pencircle scaled 1;
-endfig;}\stopelement{Figure}\vss}\hskip10pt\strut
+endfig;}\stopsinglecontentitem
+\stopelement{Figure}\vss}\hskip10pt\strut
\par\nobreak
⟦% define the pattern
picture letter; letter = maketext("a");
@@ -333,6 +334,41 @@ endfig;⟧
A small pattern library is available in the ⟦*minim-hatching.mp⟧ file; see the
accompanying documentation sheet for an overview of patterns.
+\section Advanced PDF graphics % 1
+
+You can use ⟦*savegstate⟧ and ⟦*restoregstate⟧ for inserting the ⟦q⟧ and ⟦Q⟧
+operators; these must always be paired, or horrible errors will occur. You may
+need them if you use ⟦*setgstate(<params>)⟧ for modifying the extended
+graphical state (ExtGState). The ⟦params⟧ must be a comma-separated
+⟦Key=value⟧ list, with all ⟦value⟧s being suffixes. The latter restriction may
+require the use of additional variables, but as this is a very low-level
+command, it is best to wrap it in a more specialised macro anyway.
+The ⟦*withgstate (<params>)⟧ can be added to a drawing statement and includes
+saving/restoring the graphical state.
+
+Note that while you could try and use ⟦setgstate⟧ for modifying variables like
+the line cap or dash pattern, the result of doing so will be unpredictable,
+since such changes will be invisible to metapost. Its intended use is
+restricted to graphics parameters outside the scope of metapost.
+
+For applying transparency, ⟦*setalpha(a)⟧ updates the ⟦CA⟧ and ⟦ca⟧ parameters
+as a stand-alone command and ⟦*withalpha(a)⟧ can be used in a drawing statement
+where it will save/restore the graphical state around it. For applying
+transparency to an ensemble of drawing statements, ⟦*transparent (a) <picture>⟧
+will create and insert the proper transparency group. The transparency group
+attributes can be set with the string internal ⟦transparency_group_attrs⟧,
+while for all three macros the blend mode can be set with the string internal
+⟦blend_mode⟧ (it will be added whenever set).
+
+A transparency group is a special kind of XForm, and these can be created from
+withing metapost: ⟦<id> =⟧ ⟦*saveboxresource (<attributes>) <picture>⟧ returns
+a number identifying the resource and can be fed attributes in the same way as
+⟦setgstate⟧. XForms defined through metapost are available to other metapost
+instances, but not to tex, though the macro painting them, ⟦*boxresource <id>⟧,
+also accepts identifiers of tex-defined box resources. There remains a subtle
+difference, however: metapost-defined box resources are placed at their
+original origin.
+
\section Other metapost extensions % 1
@@ -342,7 +378,9 @@ x~coordinate of zero will be added). Transformations will be taken into
account, hence the specification of two coordinates. The last given baseline
will be used.
-You can write to tex’s log directly with ⟦*texmessage "hello"⟧.
+You can write to tex’s log directly with ⟦*texmessage "hello";⟧. You can feed
+it a comma-separated list of strings and numbers, which will be passed through
+⟦string.format()⟧ first.
You can write direct pdf statements with ⟦*special "pdf: statements"⟧ and you
can add comments to the pdf file with ⟦*special "pdfcomment: comments"⟧.
@@ -381,7 +419,9 @@ Say ⟦*nr_remaining = M.left(nr)⟧ for the number of remaining images.
Each metapost instance is a table containing the following entries:
\smallskip\smallskip
-\marktableaslist \halign{\qquad#\quad\hfil&#\hfil\cr
+\marktableaslist
+\tagattribute List ListNumbering /Description
+\halign{\qquad#\quad\hfil&#\hfil\cr
⟦jobname⟧&The jobname.\cr
⟦instance⟧&The primitive metapost instance.\cr
⟦results⟧&A linked list of unretrieved images.\cr
@@ -424,7 +464,9 @@ processing.
Specials can store information in the ⟦user⟧ table of the picture that is being
processed; this information is still available inside the ⟦*finish_mpfigure⟧
callback that is executed just before the processed image is surrounded by
-properly-dimensioned boxes.
+properly-dimensioned boxes. If a ⟦user.save_fn⟧ function is defined, it will
+replace the normal saving of the image to the image list and the image node
+list will be flushed.
The ⟦*M.init_code⟧ table contains the code used for initialing new instances.
In it, the string ⟦INIT⟧ will be replaced with the value of the ⟦format⟧ option
diff --git a/macros/luatex/generic/minim-mp/minim-mp.lua b/macros/luatex/generic/minim-mp/minim-mp.lua
index f1cfd49388..9069ab7147 100644
--- a/macros/luatex/generic/minim-mp/minim-mp.lua
+++ b/macros/luatex/generic/minim-mp/minim-mp.lua
@@ -4,7 +4,9 @@ local cb = require('minim-callbacks')
local pdfres = require('minim-pdfresources')
alloc.remember ('minim-mp')
-local M = {}
+local M = { } -- module contents
+local E = { } -- runscript environment
+local A = { } -- postprocessing functions
-- 1 AUXILIARY FUNCTIONS
@@ -29,7 +31,6 @@ end
-- We can call append:somefunction(...) to append a node or append:somevariable
-- to query the graphics state. These go via its metatable:
-local A = { } -- appending functions
local append_meta =
{
-- Either return an appending function or an entry in the graphics state.
@@ -48,6 +49,7 @@ local function init_append()
node_count = 0, -- node count
state = { }, -- graphics state variables
user = { }, -- user data for extensions
+ object_info = { }, -- data for current object
}, append_meta)
end
@@ -78,7 +80,8 @@ end
-- The following callback is executed just before the final step of surrounding
-- the image in properly-dimensioned boxes. It receives the processed image
--- object as argument. That object has the following fields:
+-- object as argument. That object may have the following fields (which can be
+-- changed):
-- head the head of the node list
-- name the image name
-- user the image user table
@@ -97,6 +100,7 @@ function M.enable_debugging()
pdf.setcompresslevel(0)
pdf.setobjcompresslevel(0)
end
+E.enable_debugging = M.enable_debugging
local function print_prop(append, obj, prop)
if obj[prop] then
@@ -179,7 +183,8 @@ end
local function format_numbers(...)
return (string.format(...)
:gsub('[.]0+ ', ' ')
- :gsub('([.][1-9]+)0+ ', '%1 '))
+ :gsub('([.][1-9]+)0+ ', '%1 ')
+ :gsub(' +$', ''))
end
-- Only to be used for coordinates: ‘cm’ parameters should not be rounded.
@@ -188,6 +193,12 @@ local function pdfnum(operator, ...)
return format_numbers(fmt, ...)
end
+local function make_pdf_dashpattern(dl)
+ return string.format('[%s] %s',
+ table.concat(dl.dashes or {},' '),
+ pdfnum('d', dl.offset))
+end
+
local function point_fmt(operator, ...)
local dd = pdf.getdecimaldigits()
local fmt = string.format('%%.%sf %%.%sf %s', dd, dd, operator)
@@ -212,6 +223,43 @@ function A.literal(append, fmt, ...)
append:node(lit)
end
+-- 2 parsing helpers
+
+local function parse_lua_table(name, str)
+ local f, msg = load('return '..str, name, 't')
+ if msg then return alloc.err(msg) end
+ t = f()
+ if not t or type(t) ~= 'table' then
+ return alloc.err('%s attributes must be given as lua table', name)
+ end
+ -- format all numbers with pdfnum
+ for k, v in pairs(t) do
+ if type(v) == 'number' then
+ t[k] = pdfnum('', v)
+ end
+ end
+ return t
+end
+
+-- 2 boxing helpers
+
+local function make_surrounding_box(nd_id, head)
+ local nd = node.new(nd_id)
+ nd.dir, nd.head = 'TLT', head
+ return nd
+end
+
+local function wrap_picture(head, x0, y0)
+ -- Note: this does not set the image dimensions
+ local horizontal = make_surrounding_box('hlist', head)
+ local vertical = make_surrounding_box('vlist', horizontal)
+ local outer = make_surrounding_box('hlist', vertical)
+ vertical.shift = -y0
+ horizontal.shift = x0
+ return outer
+end
+M.wrap_picture = wrap_picture
+
-- 2 colour conversion
local function rgb_to_gray (r,g,b)
@@ -219,6 +267,7 @@ local function rgb_to_gray (r,g,b)
+ tex.count['GtoG'] * g / 10000
+ tex.count['BtoG'] * b / 10000 )
end
+E.rgb_to_gray = rgb_to_gray
local function cmyk_to_rgb (c,m,y,k)
return (1-k)*(1-c), (1-k)*(1-m), (1-k)*(1-y)
@@ -283,7 +332,7 @@ local colour_fill_operators = { 'g', nil, 'rg', 'k' }
local colour_pattern_spaces = { 'PsG', nil, 'PsRG', 'PsK' }
local function get_colour_params(cr)
- return format_numbers(colour_template[#cr], table.unpack(cr))
+ return format_numbers(colour_template[#cr], table.unpack(cr)) .. ' '
end
local function get_stroke_colour(cr)
@@ -362,7 +411,7 @@ function A.linestate (append, object)
end
local dl = object.dash
if dl then
- local d = string.format('[%s] %s', table.concat(dl.dashes or {},' '), pdfnum('d', dl.offset))
+ local d = make_pdf_dashpattern(dl)
if d ~= append.dashed then
append.dashed = d
table.insert(res, d)
@@ -653,6 +702,105 @@ specials.BASELINE = function(append, _, object)
append.baseline = object.path[1].y_coord
end
+-- 2 box resources (xforms)
+
+-- The first problem that we run into is that we want to refer to xforms (from
+-- the metapost side) whose numerical id* we do know know yet (because the
+-- xform will only be made at the end of the run, during the lua-side
+-- processing of mplib output).
+--
+-- Our solution is using negative ids for metapost-defined xforms, which will
+-- be converted to actual boxresource ids by means of a conversion table.
+--
+-- The second problem is the need to position metapost-defined xforms by their
+-- original (metapost) origin. This necessitates storing extra information
+-- lua-side.
+--
+-- * Not to be confused with the object number which we, due to pdftex’s
+-- special handling of xforms, will never come to know.
+
+local xform_nr_shim = { }
+
+local function resolve_xform_id(nr)
+ nr = tonumber(nr)
+ if nr < 0 then
+ return xform_nr_shim[-nr]
+ else
+ return nr
+ end
+end
+
+local function reserve_xform_id()
+ xform_nr_shim[1+#xform_nr_shim] = false
+ return -#xform_nr_shim
+end
+
+M.resolve_xform_id = resolve_xform_id
+E.resolve_xform_id = resolve_xform_id
+E.reserve_xform_id = reserve_xform_id
+
+-- When using xforms in metapost, the positive numbers refer to tex-defined and
+-- the negative to metapost-defined box resources.
+
+specials.BOXRESOURCE = function(append, id, object)
+ local realid = resolve_xform_id(id)
+ local rule = tex.useboxresource(realid)
+ append:box(object, node.hpack(rule))
+end
+
+local xform_sizes = { }
+local xform_center = { }
+
+local function set_boxresource_dimensions (id, transf, center)
+ xform_sizes[id] = transf
+ xform_center[id] = center
+end
+
+local function get_boxresource_dimensions (id)
+ if xform_sizes[id] then
+ return xform_sizes[id]
+ else
+ return { 'box_size', tex.getboxresourcedimensions(id) }
+ end
+end
+
+local function get_boxresource_center (id)
+ if xform_center[id] then
+ return xform_center[id]
+ else
+ return "(0,0)"
+ end
+end
+
+E.set_boxresource_dimensions = set_boxresource_dimensions
+E.get_boxresource_dimensions = get_boxresource_dimensions
+E.get_boxresource_center = get_boxresource_center
+
+local function save_as_boxresource(pic)
+ -- attributes
+ local attrs = { '/Subtype/Form', bbox_fmt(0, -pic.dp, pic.wd, pic.ht) }
+ for k, v in pairs(pic.user.xform_attrs or { }) do
+ table.insert(attrs, string.format('%s %s', alloc.pdf_name(k), v))
+ end
+ -- box to-be-saved
+ local box = wrap_picture(node.copy_list(pic.head), pic.x0, pic.y0)
+ box.width, box.height, box.depth = pic.wd, pic.ht, pic.dp
+ -- save the box
+ local xform = tex.saveboxresource(box,
+ table.concat(attrs, ' '), nil, false, 4) -- 4: no /Type, /BBox or /Matrix
+ xform_nr_shim[-pic.user.xform_id] = xform
+end
+
+specials.XFORMINDEX = function(append, id, object)
+ append.user.xform_id = tonumber(id)
+ append.user.save_fn = save_as_boxresource
+end
+
+specials.XFORMATTRS = function(append, attrs, object)
+ local t = parse_lua_table('XForm attributes', attrs)
+ append.user.xform_attrs = t or { }
+end
+
-- 2 patterns
-- Saved patterns have the following fields:
@@ -678,27 +826,20 @@ prescripts.fillpattern = function(append, str, object)
end
end
-specials.definepattern = function(append, str, object)
- local nr, tiling, paint, xs, ys, xx, xy, yx, yy = table.unpack(str:explode())
- append.user.pattern_info = { nr = nr, xstep = xs, ystep = ys,
- tilingtype = tiling, painttype = paint,
- matrix = { xx = xx, xy = xy, yx = yx, yy = yy, x = 0, y = 0 } }
-end
-
local function make_pattern_xform(head, bb)
-- regrettably, pdf.refobj does not work with xforms, so we must
-- write it to the pdf immediately, whether the pattern will be
-- used or not.
- local xform = tex.saveboxresource(node.hpack(node.copy_list(head)),
- '/Subtype/Form '..bb, nil, true, 4)
+ local xform = tex.saveboxresource((node.hpack(node.copy_list(head))),
+ '/Subtype/Form '..bb, nil, true, 4) -- 4: no /Type, /BBox or /Matrix
return string.format(' /Resources << /XObject << /PTempl %d 0 R >> >>', xform), '/PTempl Do'
end
-local function definepattern(head, user, bbox)
- local bb = bbox_fmt(table.unpack(bbox))
+local function definepattern(pic)
+ local bb = bbox_fmt(table.unpack(pic.bbox))
local pat, literals, resources = { write = write_pattern_object }, { }
-- pattern content
- for n in node.traverse(head) do
+ for n in node.traverse(pic.head) do
-- try if we can construct the content stream ourselves; otherwise,
-- stuff the pattern template into an xform.
if n.id == WHATSIT_NODE then
@@ -710,18 +851,18 @@ local function definepattern(head, user, bbox)
elseif n.subtype == node.subtype 'restore' then
table.insert(literals, 'Q')
else
- resources, pat.stream = make_pattern_xform(head, bb)
+ resources, pat.stream = make_pattern_xform(pic.head, bb)
goto continue
end
else
- resources, pat.stream = make_pattern_xform(head, bb)
+ resources, pat.stream = make_pattern_xform(pic.head, bb)
goto continue
end
pat.stream = table.concat(literals, '\n')
end
::continue::
-- construct the pattern object
- local i = user.pattern_info
+ local i = pic.user.pattern_info
local m = i.matrix
pat.painttype = tonumber(i.painttype)
pat.attr = table.concat({
@@ -733,12 +874,88 @@ local function definepattern(head, user, bbox)
pdfres.add_resource('Pattern', 'MnmP'..i.nr, pat)
end
-cb.register('finish_mpfigure', function(img)
- if img.user.pattern_info then
- definepattern(img.head, img.user, img.bbox)
- img.discard = true
+specials.definepattern = function(append, str, object)
+ local nr, tiling, paint, xs, ys, xx, xy, yx, yy = table.unpack(str:explode())
+ append.user.pattern_info = { nr = nr, xstep = xs, ystep = ys,
+ tilingtype = tiling, painttype = paint,
+ matrix = { xx = xx, xy = xy, yx = yx, yy = yy, x = 0, y = 0 } }
+ append.user.save_fn = definepattern
+end
+
+-- 2 extgstates
+
+-- Specials for the graphics state:
+--
+-- gstate:save q
+-- gstate:restore Q
+--
+-- extgstate:label /label gs
+-- extgstate:{...} /newlabel gs
+--
+-- If a lua table is passed to the extgstate, minim will try and find an
+-- earlier-defined matching ExtGState object. If it cannot be found, a new one
+-- will be created and used. The values of the table will be written to the pdf
+-- as-they-are (this means booleans and numbers are alright), but the keys will
+-- be converted to pdf name objects.
+
+prescripts.gstate = function(append, str, object)
+ if str == 'save' or str == 'store' then
+ append:save()
+ elseif str == 'restore' then
+ append:restore()
+ else
+ alloc.err('Unknown gstate operator: »%s«', str)
end
-end)
+end
+postscripts.gstate = prescripts.gstate
+
+local gs_next, gs_index = 1, { }
+
+function M.get_gstate_name(t)
+ -- format the pdf dict
+ local d = { }
+ for k,v in pairs(t) do
+ if type(v) == 'table' and t.dashes then
+ v = '[ '..make_pdf_dashpattern(v)..' ]'
+ end
+ table.insert(d, string.format('%s %s', alloc.pdf_name(k), v))
+ end
+ table.sort(d)
+ d[0] = '<<'; table.insert(d, '>>')
+ t.value = table.concat(d, ' ', 0)
+ -- check the index
+ if not gs_index[t.value] then
+ local name = string.format('MnmGs%d', gs_next)
+ gs_index[t.value] = name
+ gs_next = gs_next + 1
+ pdfres.add_resource('ExtGState', name, t)
+ end
+ -- return the resource name
+ return gs_index[t.value]
+end
+
+prescripts.extgstate = function(append, str, object)
+ -- determine resource name
+ local name, t = str
+ if string.find(str, '^[A-Za-z0-9_]+$') then
+ t = pdfres.get_resource('ExtGState', name)
+ if not t then return alloc.err('Unknown named ExtGState: %s', name) end
+ else
+ t = parse_lua_table('ExtGState', str)
+ if not t then return end
+ name = M.get_gstate_name(t)
+ end
+-- -- update state parameters (disabled for now; may be enabled if it has practical use)
+-- if t.LW then append.linewidth = t.LW end
+-- if t.ML then append.miterlimit = t.LW end
+-- if t.LJ then append.linejoin = t.LW end
+-- if t.LC then append.linecap = t.LW end
+-- if t.D and type(t.D) == 'table' then append.dashed = make_pdf_dashpattern(t.D) end
+ -- apply the state change
+ append:literal('%s gs', alloc.pdf_name(name))
+ append:node(pdfres.use_resource_node('ExtGState', name))
+end
+postscripts.extgstate = prescripts.extgstate
-- 2 text
@@ -758,26 +975,13 @@ local function get_transform(rect)
return sx, rx, ry, sy, tx, ty
end
-local function make_surrounding_box(nd_id, head)
- local nd = node.new(nd_id)
- nd.dir, nd.head = 'TLT', head
- return nd
-end
-
-local function wrap_picture(head, tx, ty)
- local horizontal = make_surrounding_box('hlist', head)
- local vertical = make_surrounding_box('vlist', horizontal)
- local outer = make_surrounding_box('hlist', vertical)
- vertical.shift = tex.sp('-'..ty..'bp')
- horizontal.shift = tex.sp(''..tx..'bp')
- return outer
-end
-
local function apply_transform(rect, box)
local sx, rx, ry, sy, tx, ty = get_transform(rect)
local transform = node.new('whatsit', 'pdf_setmatrix')
transform.next, box.prev = box, transform
transform.data = string.format('%f %f %f %f', sx, rx, ry, sy)
+ tx = tex.sp(''..tx..'bp')
+ ty = tex.sp(''..ty..'bp')
return wrap_picture(transform, tx, ty)
end
@@ -803,11 +1007,6 @@ specials.CHAR = function(append, data, object)
append:box(object, node.hpack(n))
end
-specials.BOXRESOURCE = function(append, resource, object)
- local rule = tex.useboxresource(tonumber(resource))
- append:box(object, rule)
-end
-
--
-- 1 METAPOST INSTANCES
@@ -935,8 +1134,12 @@ local function process_results(nr, res)
pic.y0 = tex.sp(string.format('%s bp', -bas ))
end
cb.call_callback('finish_mpfigure', pic)
+ if pic.user.save_fn then
+ pic.discard = true
+ pic.user.save_fn(pic)
+ end
if not pic.discard then
- pic.head = wrap_picture(append.head, -llx, -bas)
+ pic.head = wrap_picture(pic.head, pic.x0, pic.y0)
end
if debugging then
alloc.msg('┌ image %s, with %s objects, %s nodes',
@@ -967,11 +1170,11 @@ end
-- a string that metapost can understand.
--
-- Tables of the form { 'box_size', width, height, depth, margin } are
--- converted to a transformation. (The margin will be ignored for now, this may
+-- converted to a transform. (The margin will be ignored for now, this may
-- change in the future.)
local function mkluastring(s)
- return "'"..(s:gsub('\\', '\\\\'):gsub("'", "\\'")).."'"
+ return "'"..(s:gsub('\\', '\\\\'):gsub("'", "\\'"):gsub('\n', '\\n')).."'"
end
local function runscript(code)
@@ -991,15 +1194,22 @@ local function runscript(code)
return string.format('%.16f', result)
elseif t == 'string' then
return result
- elseif t == 'table' and t[1] == 'box_size' then
- -- TODO: take the margin into account if present (t[5])?
- return make_transform(t[2], t[3], t[4])
- elseif t == 'table' and #t < 5 then
- local fmt = #t == 1 and '%.16f'
- or #t == 2 and '(%.16f, %.16f)'
- or #t == 3 and '(%.16f, %.16f, %.16f)'
- or #t == 4 and '(%.16f, %.16f, %.16f, %.16f)'
- return fmt:format(table.unpack(t))
+ elseif t == 'table' and result[1] == 'box_size' then
+ return make_transform(result[2], result[3], result[4])
+ elseif t == 'table' and #result < 5 then
+ local fmt = #result == 1 and '%.16f'
+ or #result == 2 and '(%.16f, %.16f)'
+ or #result == 3 and '(%.16f, %.16f, %.16f)'
+ or #result == 4 and '(%.16f, %.16f, %.16f, %.16f)'
+ return fmt:format(table.unpack(result))
+ elseif t == 'table' and #result == 6 then
+ return table.concat({
+ 'begingroup save t; transform t;',
+ 'xxpart t = %.16f', 'xypart t = %.16f',
+ 'yxpart t = %.16f', 'yypart t = %.16f',
+ 'xpart t = %.16f', 'ypart t = %.16f',
+ 't endgroup' },
+ ';'):format(table.unpack(result))
else
return tostring(result)
end
@@ -1016,8 +1226,8 @@ end
-- environment. The runscript environment will then be extended with all
-- elements of the M.mp_functions table.
-local E = { }
M.mp_functions = E
+E.texmessage = alloc.msg
local function prepare_env(e) -- in M.open()
local env = e or copy_table(_G, { })
@@ -1038,9 +1248,6 @@ function E.quote_for_lua(s)
return E.quote(mkluastring(s))
end
-E.rgb_to_gray = rgb_to_gray
-E.enable_debugging = M.enable_debugging
-
-- 2 typesetting with tex
-- The result of the maketext function is fed back into metapost; on that side,
@@ -1065,9 +1272,8 @@ local function maketext(text, mode)
local assignment = string.format('\\global\\setbox%s=\\hbox{\\the\\everymaketext %s}', nr, text)
tex.runtoks(function() tex.print(current_instance.catcodes, assignment:explode('\n')) end)
local box = tex.box[nr]
- return 'image ( fill unitsquare withprescript "TEXBOX:' ..nr..'";'..
- 'setbounds currentpicture to unitsquare transformed '..
- make_transform(box.width, box.height, box.depth) .. ';)'
+ return string.format('_set_maketext_result_(%d, %s)', nr,
+ make_transform(box.width, box.height, box.depth))
elseif mode == 1 then -- verbatimtex
tex.runtoks(function() tex.print(current_instance.catcodes, text:explode('\n')) end)
end
@@ -1311,7 +1517,7 @@ end
function M.get_image(nr, name)
local image = retrieve(nr, name)
if image then
- local box = node.hpack(image.head)
+ local box = image.head
box.width = image.wd
box.height = image.ht
box.depth = image.dp
@@ -1329,7 +1535,7 @@ function M.shipout(nr)
tex.pageheight = (image.ht + image.dp)
tex.pagewidth = image.wd
tex.voffset = image.ht
- tex.box[255] = node.vpack(node.hpack(image.head))
+ tex.box[255] = image.head
tex.shipout(255)
tex.count[0] = tex.count[0] + 1
end
diff --git a/macros/luatex/generic/minim-mp/minim-mp.mp b/macros/luatex/generic/minim-mp/minim-mp.mp
index 654449da03..2fd2db1074 100644
--- a/macros/luatex/generic/minim-mp/minim-mp.mp
+++ b/macros/luatex/generic/minim-mp/minim-mp.mp
@@ -2,7 +2,7 @@
delimiters ();
% This file is specific to the minim metapost processor (minim-mp) and cannot
-% be used with luaotfload or other metapost implementations. See minim.mp for
+% be used with luamplib or other metapost implementations. See minim.mp for
% general-purpose extensions.
message "Setting up the minim MetaPost extensions";
@@ -10,13 +10,14 @@ message "Setting up the minim MetaPost extensions";
def save_picture text t = save t; picture t; enddef;
def save_boolean text t = save t; boolean t; enddef;
def save_string text t = save t; string t; enddef;
+def save_path text t = save t; path t; enddef;
% 1 lua scripts, functions and variables
def luafunction = gobble inner_luafunction enddef;
vardef inner_luafunction @# (text args) = endgroup
% we remove the grouping so that the function may return any fragment of
- % lua code, in particular lists to-be-parsed as text parameters
+ % metapost code, in particular lists to-be-parsed as text parameters
runscript ("return " & (str @#) & build_lua_arguments(args))
gobble begingroup enddef;
@@ -38,7 +39,7 @@ vardef setluavariable @# expr val=
vardef lua_string(expr s) =
runscript ("[[quote_for_lua]]"&s) enddef;
-vardef hexadecimal expr n =
+vardef hexadecimal tertiary n =
% TODO: support other number systems
save d, a, m; a = ASCII("a"); m := abs n;
save_string res; res =
@@ -49,7 +50,7 @@ vardef hexadecimal expr n =
if i = 3: & "." fi
endfor; res enddef;
-vardef scaledpoints expr n =
+vardef scaledpoints tertiary n =
% use the fact that 800bp = 803pt
save a, m; m := abs n;
a1 = m div (1025/1024); % 1025/1024 = 800epsilon * 82
@@ -64,32 +65,36 @@ vardef scaledpoints expr n =
& decimal(a3) & ")";
res enddef;
-vardef quote_for_lua expr a =
+vardef quote_for_lua tertiary a =
save_string res; res =
if string a:
lua_string(a)
elseif numeric a:
hexadecimal(a)
elseif pair a:
- "{"&hexadecimal(xpart a) &
- ","&hexadecimal(ypart a) & "}"
+ "{"& (hexadecimal xpart a) &
+ ","& (hexadecimal ypart a) & "}"
elseif boolean a:
if a: "true" else: "false" fi
elseif color a:
- "{"&hexadecimal(redpart a) &
- ","&hexadecimal(greenpart a) &
- ","&hexadecimal(bluepart a) & "}"
+ "{"& (hexadecimal redpart a) &
+ ","& (hexadecimal greenpart a) &
+ ","& (hexadecimal bluepart a) & "}"
elseif cmykcolor a:
- "{"&hexadecimal(cyanpart a) &
- ","&hexadecimal(magentapart a) &
- ","&hexadecimal(yellowpart a) &
- ","&hexadecimal(blackpart a) & "}"
+ "{"& (hexadecimal cyanpart a) &
+ ","& (hexadecimal magentapart a) &
+ ","& (hexadecimal yellowpart a) &
+ ","& (hexadecimal blackpart a) & "}"
elseif pen a:
hide(errmessage("I cannot pass a pen value to lua");)
"nil"
elseif transform a:
- hide(errmessage("I cannot pass a transform value to lua");)
- "nil"
+ "{"& (hexadecimal xxpart a) &
+ ","& (hexadecimal xypart a) &
+ ","& (hexadecimal yxpart a) &
+ ","& (hexadecimal yypart a) &
+ ","& (hexadecimal xpart a) &
+ ","& (hexadecimal ypart a) & "}"
elseif picture a:
hide(errmessage("I cannot pass a picture value to lua");)
"nil"
@@ -97,14 +102,33 @@ vardef quote_for_lua expr a =
"nil"
fi; res enddef;
+% constructing lua tables
+
+def make_lua_dict (text t) = begingroup
+ % Note that though the argument may contain = signs and commas, the rest of
+ % the arguments must consist of suffixes.
+ save_boolean first; first := true;
+ "{ " forsuffixes kv =
+ hide(let = _EQ_ undefined)
+ t hide(let = _EQ_ _EQ_) : &
+ if first: hide(first := false;) else: ", "& fi
+ begingroup make_lua_keyval kv endgroup
+ endfor & " }" endgroup
+enddef;
+let _EQ_ = =;
+
+vardef make_lua_keyval @# expr e =
+ (str @#) & " = " & quote_for_lua e
+enddef;
+
% tex registers
string _SUFFIX_HACK_[];
vardef index_or_suffix (suffix s) =
save_string res; res =
- if string _SUFFIX_HACK_ s: % this is a number
+ if string _SUFFIX_HACK_ s: % s is a number
"["&decimal(s)&"]"
- else: % this is a suffix
+ else: % s is a suffix
"."&(str s)
fi ; res enddef;
@@ -128,20 +152,33 @@ vardef set tex.toks @# expr val =
% 1 typesetting
+boolean debug_tex_bboxes;
+debug_tex_bboxes := false;
+
let textext = maketext;
let TEX = maketext;
+def _set_maketext_result_ (expr nr)(text tr) = image (
+ fill unitsquare withprescript "TEXBOX:"&decimal nr;
+ save_path bb; bb := unitsquare transformed tr;
+ if debug_tex_bboxes: draw bb dashed evenly; fi
+ setbounds currentpicture to bb;) enddef;
+
% baseline pair or numeric -> fill statement
vardef baseline expr o =
fill if numeric o : (0,o) else: o fi
-- cycle withprescript "BASELINE:"; enddef;
-% boxresource number -> fill statement + setbounds
-vardef boxresource expr nr = image(
- fill unitsquare withprescript "BOXRESOURCE:" & decimal nr ;
- setbounds currentpicture to unitsquare transformed runscript
- ("return { 'box_size', tex.getboxresourcedimensions(" & decimal nr & ") }");
- ) enddef;
+vardef find_baseline expr p =
+ save_pair bl, ibl;
+ for c within p:
+ if clipped c or bounded c:
+ ibl := find_baseline c;
+ if known ibl: bl := ibl; fi
+ elseif "BASELINE:" = substring (0,9) of prescriptpart c:
+ bl := point 0 of pathpart c;
+ fi
+ endfor bl enddef;
% actual typesetting
@@ -168,6 +205,129 @@ vardef thelabel@#(expr s,z) = % Position s near z
+ (1-labxf@#-labyf@#)*llcorner p
) ) enddef;
+% 1 box resources (xforms)
+
+% boxresource number -> fill statement + setbounds
+vardef boxresource primary nr = image(
+ fill unitsquare withprescript "BOXRESOURCE:" & decimal nr ;
+ save btf; transform btf;
+ btf = luafunction get_boxresource_dimensions (nr);
+ save_path bb; bb = unitsquare transformed btf;
+ if debug_tex_bboxes: draw bb dashed evenly; fi
+ setbounds currentpicture to bb;
+ currentpicture := currentpicture
+ shifted luafunction get_boxresource_center (nr);
+ ) enddef;
+
+% id = saveboxresource (attributes) image ( ... );
+vardef saveboxresource (text attrs) expr p =
+ save id; id = luafunction reserve_xform_id();
+ % save the dimensions
+ save t, o; transform t; pair o;
+ (0,0) transformed t = llcorner p;
+ (1,0) transformed t = lrcorner p;
+ (0,1) transformed t = ulcorner p;
+ save bl; bl = -ypart find_baseline p;
+ o = (-xpart llcorner p, if known bl: bl else: 0 fi);
+ luafunction set_boxresource_dimensions (id, t shifted o, -o);
+ % shipout the xform
+ shipout image(draw p;
+ special "XFORMATTRS:" & make_lua_dict (attrs);
+ special "XFORMINDEX:" & decimal id;
+ ); id enddef;
+
+% 1 extended graphics state
+
+vardef modify_scripts text t =
+ % Note: this is a no-op when the picture is empty
+ save_picture curr;
+ save_string pre, post;
+ % extract script parts
+ curr := image(drawdot origin t;);
+ pre = prescriptpart curr;
+ post = postscriptpart curr;
+ % add the prescript
+ if pre <> "":
+ curr := currentpicture; clearit;
+ draw curr withprescript pre;
+ fi
+ % add the postscript
+ if post <> "":
+ % here we find the reason for this routine: metapost *should* apply the
+ % postscript to the last element of a picture, but chooses the first
+ % instead.
+ curr := currentpicture; clearit;
+ setbounds curr to llcorner curr -- lrcorner curr --
+ urcorner curr -- ulcorner curr -- cycle;
+ % these bounds force an extra nesting level of the next function
+ draw with_postscript_to_last(curr, post);
+ fi
+enddef;
+
+vardef with_postscript_to_last (expr p, script) =
+ image( save i; i := 0;
+ for c within p:
+ if incr i < length(p): draw c;
+ elseif clipped c:
+ save_picture q; q:= with_postscript_to_last(c, script);
+ clip q to pathpart c;
+ addto currentpicture also q;
+ elseif bounded c:
+ save_picture q; q:= with_postscript_to_last(c, script);
+ setbounds q to pathpart c;
+ addto currentpicture also q;
+ else:
+ draw c withpostscript script;
+ fi
+ endfor) enddef;
+
+def append_postscript expr s =
+ if length(currentpicture) = 0: special s;
+ else: modify_scripts withpostscript s;
+ fi enddef;
+
+def savegstate =
+ append_postscript "gstate:save"; enddef;
+def restoregstate =
+ append_postscript "gstate:restore"; enddef;
+def setgstate =
+ append_postscript "extgstate:" & make_lua_dict enddef;
+
+def withgstate (text t) =
+ withprescript "extgstate:" & make_lua_dict (t)
+ withprescript "gstate:save"
+ withpostscript "gstate:restore" enddef;
+
+% 1 transparency
+
+newinternal string blend_mode;
+newinternal string transparency_group_attrs;
+
+% setalpha (α)
+vardef setalpha expr alpha =
+ save a; a = alpha;
+ save_string bm; bm = "/" & blend_mode;
+ setgstate(CA=a, ca=a if bm <> "/":, BM=bm fi) enddef;
+
+% <drawing_cmd> withalpha (α)
+def withalpha = gobble _withalpha_ enddef;
+string _blend_mode_;
+vardef _withalpha_ (expr alpha) =
+ _with_alpha_ := alpha;
+ _blend_mode_ := "/" & blend_mode;
+ endgroup
+ withgstate(CA=_with_alpha_,ca=_with_alpha_ if _blend_mode_ <> "/":, BM=_blend_mode_ fi)
+ gobble begingroup enddef;
+
+% transparent (α) image (...)
+vardef transparent (expr alpha) expr p =
+ save_string attrs; attrs = "<< /S/Transparency "&transparency_group_attrs&">>";
+ save g; g = saveboxresource (Group=attrs) p;
+ savegstate; setalpha (alpha);
+ draw boxresource g;
+ restoregstate;
+enddef;
+
% 1 even-odd rule and multidraw
def nofill expr c = fill c withprescript "OTYPE:nofill" enddef;
@@ -205,6 +365,9 @@ def beginpattern(suffix s) =
def withcolor = hide(painttype:=1) _withcolor enddef;
save matrix; transform matrix; enddef;
def endpattern (expr xstep, ystep) =
+ modify_scripts
+ withprescript "pdf:/Artifact BMC"
+ withpostscript "pdf:EMC";
if unknown matrix : matrix:=identity; fi
special "definepattern:" for e = charcode, tilingtype, painttype,
xstep, ystep, xxpart matrix, xypart matrix, yxpart matrix, yypart matrix:
@@ -213,12 +376,11 @@ def endpattern (expr xstep, ystep) =
newinternal tilingtype; tilingtype:=1;
_patterns_._last_ := 0;
-
% 1 miscellaneous
-vardef debug_pdf = luafunction enable_debugging () enddef;
+def debug_pdf = luafunction enable_debugging(); enddef;
-def texmessage text msg = luafunction texio.write_nl (msg) enddef;
+vardef texmessage text msg = luafunction texmessage (msg) enddef;
vardef rgb_to_gray expr c =
luafunction rgb_to_gray (redpart c, greenpart c, bluepart c)
diff --git a/macros/luatex/generic/minim-mp/minim-mp.pdf b/macros/luatex/generic/minim-mp/minim-mp.pdf
index aa64541ffe..9ea6a51612 100644
--- a/macros/luatex/generic/minim-mp/minim-mp.pdf
+++ b/macros/luatex/generic/minim-mp/minim-mp.pdf
Binary files differ
diff --git a/macros/luatex/generic/minim-mp/minim-mp.sty b/macros/luatex/generic/minim-mp/minim-mp.sty
index ae0312b560..250e86668e 100644
--- a/macros/luatex/generic/minim-mp/minim-mp.sty
+++ b/macros/luatex/generic/minim-mp/minim-mp.sty
@@ -3,10 +3,6 @@
\input minim-mp
-\makeatletter
-
-\RequirePackage{environ}
-
% work around latex’s \protect mechanism
\let\mnm@protect=\protect
\everymaketext{\let\protect=\mnm@protect}
@@ -21,12 +17,12 @@
\let\mpcolor = \minimpcolor
\csname:metapost:\endcsname[#1]}
{\csname end:metapost:\endcsname \endgroup}
-\NewEnviron{:metapost:}[1][]{%
+\NewDocumentEnvironment{:metapost:}{O{}+b}{%
\mnm@setnormalfont
\let\protect=\noexpand
\directmetapost[#1]{%
- defaultfont:="\mnm@normalfont"; \BODY; }%
- \let\protect=\mnm@protect}
+ defaultfont:="\mnm@normalfont"; #2; }%
+ \let\protect=\mnm@protect}{}
% separate metapost instances
\newcommand\newmetapostenvironment[2][]{%
@@ -37,13 +33,13 @@
\let\mpcolor = \minimpcolor
\csname:#2:\endcsname}
{\csname end:#2:\endcsname \endgroup}%
- \NewEnviron{:#2:}{%
+ \NewDocumentEnvironment{:#2:}{+b}{%
\mnm@setnormalfont
\let\protect=\noexpand
\runmetapostimage
\csname #2@instance\endcsname
- {defaultfont:="\mnm@normalfont";\BODY;}%
- \let\protect=\mnm@protect}}
+ {defaultfont:="\mnm@normalfont";##1;}%
+ \let\protect=\mnm@protect}{}}
% \mpcolor support
\def\minimpcolor#1#{\dominimpcolor{#1}}
@@ -54,6 +50,3 @@
\newtoks\mpcolorspectoks \newtoks\mpcolorruntoks \newtoks\mpcolorvaltoks
\mpcolorruntoks{\expandafter\extractcolorspec\the\mpcolorspectoks\mptmpcolor
\expandafter\mpcolorvaltoks\expandafter\@gobble\mptmpcolor}
-
-\makeatother
-
diff --git a/macros/luatex/generic/minim-mp/minim.mp b/macros/luatex/generic/minim-mp/minim.mp
index 2bcea78343..b0df361b94 100644
--- a/macros/luatex/generic/minim-mp/minim.mp
+++ b/macros/luatex/generic/minim-mp/minim.mp
@@ -70,8 +70,8 @@ def save_string text t = save t; string t; enddef;
% missing trigonometric functions
vardef tand primary x = sind(x)/cosd(x) enddef;
-vardef arcsind primary x = angle((1+-+x, x)) enddef;
-vardef arccosd primary x = angle((x, 1+-+x)) enddef;
+vardef arcsind primary x = angle(1+-+x, x) enddef;
+vardef arccosd primary x = angle(x, 1+-+x) enddef;
vardef arctand primary x = angle(1, x) enddef;
% segments of the circle (counterclockwise)
diff --git a/macros/luatex/generic/minim-pdf/README b/macros/luatex/generic/minim-pdf/README
index eb9a1bd114..0626208f2f 100644
--- a/macros/luatex/generic/minim-pdf/README
+++ b/macros/luatex/generic/minim-pdf/README
@@ -1,4 +1,4 @@
-Version: 2023/1.3
+Version: 2024/1.4
SUMMARY
@@ -27,6 +27,20 @@ In order to obtain the typeset manual of this package, simply say:
HISTORY
+2024/1.4 (5/1/2024)
+
+ Breaking changes:
+
+ * Table cells and headers now connect automatically in \automarktable
+
+ New features:
+
+ * Add support for pdf/ua
+ * Re-write \hyperlink, adding many options
+ * Add ref and title options to structure elements
+ * New helper macros for footnotes
+ * Add \withpdfresource
+
2023/1.3 (20/10/2023)
New features:
diff --git a/macros/luatex/generic/minim-pdf/minim-pdf.doc b/macros/luatex/generic/minim-pdf/minim-pdf.doc
index e04deb31ab..111d8c1423 100644
--- a/macros/luatex/generic/minim-pdf/minim-pdf.doc
+++ b/macros/luatex/generic/minim-pdf/minim-pdf.doc
@@ -3,7 +3,7 @@
\manual{minim-pdf}
-\ifchapter \chapter Hypertext
+\ifchapter \chapter Advanced PDF features
This chapter and the next document the support of the modern pdf features
provided by the minim-pdf package.
@@ -14,8 +14,8 @@ all other features of the package are described here.
\else \startmetadata
author {Esger Renkema}
title {minim-pdf}
- date {2023-10-20}
- version {2023/1.3}
+ date {2024-01-05}
+ version {2024/1.4}
keywords {LuaTeX; Plain TeX; PDF/A; Tagged PDF; accessibility; a11y;
hypertext; bookmarks; document outline; associated files}
stopmetadata
@@ -33,10 +33,16 @@ all other features will be covered first.
\section Hyperlinks % 1
-For most simple cases, you can use
-⟦*\hyperlink [name {...} | url {...}] ... \endlink⟧ for linking to a named
-destination in your own document or to an external hyperlink respectively.
-There is no support for nonsimple cases.
+Hyperlinks can be made with
+⟦*\hyperlink [alt {...}] [attr {...}] <action> ... \endlink⟧, where the
+⟦<action>⟧ must be one of
+⟦name {...} | url {...} | name {...} | next | prev | first | last⟧
+With the ⟦name⟧ action, a named destination must be used (see below), while the
+⟦user⟧ action will be passed directly to the back-end (as with the pdftex
+primitive).
+The ⟦*\hyperlinkstyle⟧ token list can be used so set common (pdf) link
+attributes; it defaults to ⟦/Border [0 0 0]⟧. The contents of the optional
+⟦attr⟧ parameter will be appended to these.
A named destination can be created with ⟦*\nameddestination {...}⟧ (also in
horizontal mode, unlike the backend primitive) and if you cannot think of
@@ -47,9 +53,10 @@ generated name.
\section Bookmarks % 1
-Bookmarks can be added with ⟦*\outline [open|closed] [dest {name}] {title}⟧.
-Add ⟦open⟧ or ⟦closed⟧ to have the bookmark appear initially open or
-closed (default), and
+Bookmarks (also known as outlines) can be added with ⟦*\outline [open|closed]
+[dest {name}] {title}⟧.
+Add ⟦open⟧ or ⟦closed⟧ to have the bookmark appear initially open or closed
+(default), and
say ⟦dest {name}⟧ for having it refer to a specific named destination
(otherwise, a new one will be created where the ⟦\outline⟧ command appears).
@@ -101,6 +108,48 @@ are enabled by default.
You can disable them by setting ⟦*\writehyphensandspaces⟧ to a nonpositive value.
+\section PDF/UA % 1
+
+You can claim pdf/ua conformance with ⟦*\pdfualevel 1⟧.
+By itself, this will do very little:
+
+\startlist
+\tagattribute List ListNumbering /Decimal
+\item 1. The ⟦pdfuaid:part⟧ metadata key will be set.
+\item 2. A conforming ⟦ViewerPreferences⟧ dictionary will be added to the document catalog.
+\item 3. The ⟦/Suspects⟧ key of the ⟦MarkInfo⟧ dictionary will be set to ⟦false⟧.
+\item 4. ⟦/Tab /S⟧ will be added to the page attributes.
+\stoplist
+
+Also making your document pdf/a-compliant, however, will relieve you of a few
+additional worries:
+
+\startlist
+\tagattribute List ListNumbering /Decimal
+\tagattribute List ContinuedList true
+\item 5. Fonts will be included properly.
+\item 6. The (natural) language of every element will be known.
+\item 7. Headings will be strongly-structured.
+\item 8. Table headers will have their ⟦Scope⟧ set properly.
+\item 9. A document outline will be generated automatically.
+\stoplist
+
+This leaves the following for you to provide before your document can be
+pdf/ua-compliant:
+
+\startlist
+\tagattribute List ListNumbering /Decimal
+\tagattribute List ContinuedList true
+\item 10. Figure and Formula structure elements must have alt texts.
+\item 11. Hyperlinks must have alternate descriptions.
+\item 12. Lists must have the ⟦ListNumbering⟧ attribute set.
+\item 13. Tables must have headers that are tagged as such.
+\item 14. Page headers and footers must be marked as header or footer artifacts.
+\item 15. Document section structure elements should have their ⟦title⟧ set.
+\item 16. All embedded files must have a description.
+\stoplist
+
+
\section Embedded files % 1
You can attach (associate) files with ⟦*\embedfile <options>⟧.
@@ -110,7 +159,9 @@ document catalog.
Arguments consisting of a single word can be given without braces and
exactly one of the options ⟦file⟧ or ⟦string⟧ must be present.
-\smallskip\marktableaslist \halign{#\quad\hfil&#\hfil\cr
+\smallskip\marktableaslist
+\tagattribute List ListNumbering /Description
+\halign{#\quad\hfil&#\hfil\cr
⟦file ⟧\hfill⟦{...}⟧ & The file to embed.\cr
⟦string ⟧\hfill⟦{...}⟧ & The string to embed.\cr
⟦global⟧ & Attach to the document catalog.\cr
@@ -166,6 +217,7 @@ You should always check the result in an external application.
This is the full list of limitations, pitfalls and shortcomings:
\startlist
+\tagattribute List ListNumbering /Decimal
\item1. Document content must be seen by tex in its logical order (although you
can mark out-of-order content explicitly if you know what you are doing; see
below).
@@ -342,9 +394,16 @@ Note that for the ⟦owner⟧ and ⟦key⟧ the initial slash must be omitted; t
⟦value⟧ on the other hand will be written to the pdf verbatim.
Any number of attributes can be added.
-An identifier can be set with the ⟦id⟧ option, or after the fact with
+An identifier can be set with the ⟦id {...}⟧ option, or after the fact with
⟦*\settagid {...}⟧. This identifier will be added to the ⟦IDTree⟧ and is
entirely optional; you will probably already know when you need it.
+The ⟦ref {...}⟧ option lets a structure element refer to another (the ⟦/Ref⟧
+option in the structure element dictionary). Its argument should be the ⟦id⟧ of
+the other structure element.
+
+The title of the structure element (corresponding to the ⟦/T⟧ entry in the
+structure element dictionary) can be set with the ⟦title {...}⟧ option. The
+pdf/ua standard requires this key for all document sections.
Finally, structure element classes can be given with the
⟦class <classname>⟧ keyword, which can be repeated.
@@ -450,12 +509,13 @@ sort (and indeed, no general logic can be given in the latter case). Always proc
with caution when using cells spanning multiple rows, and inspect the resulting
structure carefully.
-Marking a table header (either manually or with ⟦\automarktable⟧) will not
-connect normal cells with their headers; you will have to connect these
-manually by including ⟦*\markcolumnhead⟧ or ⟦*\markrowhead⟧ in the appropriate
-header cells. This must be done \emph{after} ⟦\markcolumnspan⟧ if the latter
-appplies. If properly setup like this, other cells of the table (including
-header cells) will be assigned to matching row or column headers automatically.
+Marking up a table header (except if done through ⟦\automarktable⟧)
+will not connect normal table cells with their headers; you will have to
+connect these manually by including ⟦*\markcolumnhead⟧ or ⟦*\markrowhead⟧ in
+the appropriate header cells. This must be done \emph{after} ⟦\markcolumnspan⟧
+if the latter appplies. If properly setup like this, other cells of the table
+(including header cells) will be assigned to matching row or column headers
+automatically.
\section Other helper macros % 1
@@ -465,6 +525,9 @@ For marking up an entry in a table of contents, you can use the macro
tags in the correct way. (The ⟦dest⟧ is a link destination and can be empty;
the ⟦lbl⟧ is a section number and can also be empty.)
+For tagging (foot)notes, ⟦*\marknoteref{*}⟧ and ⟦*\marknotelbl{*}⟧, when placed
+around the footnote markers, will insert the proper ⟦Ref⟧, ⟦Note⟧ and ⟦Lbl⟧
+tags.
% 
diff --git a/macros/luatex/generic/minim-pdf/minim-pdf.lua b/macros/luatex/generic/minim-pdf/minim-pdf.lua
index 74d56eeaac..875fd89659 100644
--- a/macros/luatex/generic/minim-pdf/minim-pdf.lua
+++ b/macros/luatex/generic/minim-pdf/minim-pdf.lua
@@ -7,9 +7,11 @@ alloc.remember('minim-pdf')
-- 1 helper functions
+local HLIST_NODE = node.id 'hlist'
local GLUE_NODE = node.id 'glue'
local GLYPH_NODE = node.id 'glyph'
local RULE_NODE = node.id 'rule'
+local DISC_NODE = node.id 'disc'
local WHATSIT_NODE = node.id 'whatsit'
local USER_DEFINED = node.subtype 'user_defined'
local START_LINK = node.subtype 'pdf_start_link'
@@ -51,9 +53,8 @@ local function singleton(t)
return one
end
--- in-depth node list traversal
--- returns current and parent node
--- only dives into hbox, vbox and ins nodes
+-- in-depth node list traversal; returns current and parent node
+-- only dives into hbox, vbox and ins nodes, and in disc no-break text
-- returns node and enclosing box
local function full_traverse(head)
return function(stack, last)
@@ -178,7 +179,7 @@ local structure_types = alloc.saved_table('structure types', {
-- inline structure elements ILSE
Span = { type = 'inline' },
Quote = { type = 'inline' },
- Note = { type = 'inline' },
+ Note = { type = 'extern' },
Reference = { type = 'inline' },
BibEntry = { type = 'inline' },
Code = { type = 'inline', attributes = { ['CSS-2.00'] = { ['white-space'] = '(pre)' } } },
@@ -198,9 +199,10 @@ local structure_type_compatibility = {
none = { none=1, section=1, group=1, block=1, inline=1, contain=1 },
section = { none=1, section=1, group=1, block=1 },
group = { none=1, group=1, block=1 },
- block = { none=1, inline=1 },
- inline = { none=1, inline=1 },
- contain = { none=1, inline=1, block=1, group=1 },
+ extern = { none=1, group=1, block=1 },
+ block = { none=1, inline=1, extern=1 },
+ inline = { none=1, inline=1, extern=1 },
+ contain = { none=1, inline=1, block=1, group=1, extern=1 },
}
local function check_structure_compatibility(parent, child, childtype)
@@ -354,10 +356,19 @@ local function write_structure()
local id_tree, id_tree_obj = { }, pdf.reserveobj()
structure[1].parent = { objnum = root_obj }
for _, se in ipairs(structure) do
- if not se.hidden then se.objnum = pdf.reserveobj() end
+ if not se.hidden then
+ se.objnum = pdf.reserveobj()
+ if se.id then
+ id_tree[se.id] = se.objnum
+ end
+ end
end
-- update the document catalog
- add_to_catalog('/MarkInfo << /Marked true >>')
+ if tex.count['pdfuaconformancelevel'] > 0 then
+ add_to_catalog('/MarkInfo << /Marked true /Suspects false >>')
+ else
+ add_to_catalog('/MarkInfo << /Marked true >>')
+ end
add_to_catalog('/StructTreeRoot %s 0 R', root_obj)
-- write the structure tree root
pdf.immediateobj(root_obj, string.format(
@@ -368,10 +379,11 @@ local function write_structure()
if not se.hidden then
local res = { '<<' }
insert_formatted(res, '/Type/StructElem /S%s /P %d 0 R', pdf_name(se.struct), se.parent.objnum)
- if se.id then id_tree[se.id] = se.objnum; insert_formatted(res, '/ID %s', pdf_string(se.id)) end
- if se.lang and se.lang ~= se.parent.lang then insert_formatted(res, '/Lang (%s)', se.lang) end
+ if se.id then insert_formatted(res, '/ID %s', pdf_string(se.id)) end
+ if se.lang and se.lang ~= se.parent.lang then insert_formatted(res, '/Lang %s', pdf_string(se.lang)) end
if se.alt then insert_formatted(res, '/Alt %s', pdf_string(se.alt)) end
if se.actual then insert_formatted(res, '/ActualText %s', pdf_string(se.actual)) end
+ if se.title then insert_formatted(res, '/T %s', pdf_string(se.title)) end
if #se.children > 0 then insert_formatted(res, '\n/K %s', format_K_array(se)) end
if se.mainpage then insert_formatted(res, '/Pg %d 0 R', se.mainpage) end
if se.class then
@@ -382,6 +394,19 @@ local function write_structure()
end
if #se.class > 1 then table.insert(res, ']') end
end
+ if se.ref then
+ table.insert(res, '/Ref')
+ table.insert(res, '[')
+ for _, c in ipairs(se.ref) do
+ local onum = id_tree[c]
+ if onum then
+ insert_formatted(res, '%d 0 R', onum)
+ else
+ alloc.err('Invalid structure element ID: %s', c)
+ end
+ end
+ table.insert(res, ']')
+ end
if not is_empty(se.attributes) then
table.insert(res, '/A')
make_attributes(res, se.attributes)
@@ -481,7 +506,7 @@ cb.register('uselanguage', function(name)
end)
local function write_language()
- add_to_catalog('/Lang (%s)', structure[1].lang or 'und')
+ add_to_catalog('/Lang %s', pdf_string(structure[1].lang or 'und'))
end
-- 1 marking structure elements
@@ -559,9 +584,11 @@ end
alloc.luadef('tagging:startelement', function()
local s = options_scanner()
:string('id')
+ :string('ref', true)
:string('type') -- 'section', 'group', 'block' etc.
:argument('alt')
:argument('actual')
+ :argument('title')
:string('lang')
:subtable('attr')
:string('class', true)
@@ -736,7 +763,7 @@ function M.mark_content_items(box)
elseif marker and marker.what == 'mci_stop' then
end_node = end_node and n; insert_tags(b)
-- finally, see if we need to intervene between content nodes
- elseif n.id == RULE_NODE or n.id == GLYPH_NODE
+ elseif n.id == RULE_NODE or n.id == GLYPH_NODE or n.id == DISC_NODE
or marker and marker.what == 'content' then
local _se, _order = n[current_struct], n[current_order]
if n.id == RULE_NODE and (n.width == 0 or n.height == 0 and n.depth == 0) then
@@ -768,7 +795,7 @@ cb.register('pre_shipout', function(nr)
end
end)
--- 1 destinations
+-- 1 links and destinations
local dest_count = alloc.new_count('link dest count')
local function new_dest_name()
@@ -791,7 +818,41 @@ end
alloc.luadef('newdestinationname', function() tex.sprint(new_dest_name()) end)
alloc.luadef('lastdestinationname', function() tex.sprint(last_dest_name()) end)
--- 1 bookmarks
+-- provide the arguments to \pdfextension startlink
+local link_types = { }
+alloc.luadef('hyper:makelink', function()
+ local s = options_scanner()
+ :argument('alt'):argument('contents') -- same thing
+ :argument('attr')
+ :scan()
+ local type = token.scan_word()
+ local userf = link_types[type]
+ if not userf then
+ alloc.err('Unknown hyperlink type: %s', type)
+ userf = link_types.first
+ end
+ local user = userf()
+ attr = { 'attr {\\csname minim:linkattr\\endcsname' }
+ if s.attr then table.insert(attr, s.attr) end
+ if s.alt or s.contents then insert_formatted(attr, '/Contents %s', pdf_string(s.alt or s.contents)) end
+ insert_formatted(attr, '} user {%s}', user)
+ tex.sprint(table.concat(attr, ' '))
+end)
+
+function link_types.dest()
+ return string.format('/Subtype/Link /A <</S/GoTo /D %s>>', pdf_string(token.scan_argument()))
+end
+function link_types.url()
+ return string.format('/Subtype/Link /A <</S/URI /URI %s>>', pdf_string(token.scan_argument()))
+end
+
+function link_types.user() return token.scan_argument() end
+function link_types.next() return '/Subtype/Link /A <</S/Named /N/NextPage>>' end
+function link_types.prev() return '/Subtype/Link /A <</S/Named /N/PrevPage>>' end
+function link_types.first() return '/Subtype/Link /A <</S/Named /N/FirstPage>>' end
+function link_types.last() return '/Subtype/Link /A <</S/Named /N/LastPage>>' end
+
+-- 1 bookmarks (outlines)
-- start with a dummy top-level bookmark
local bookmarks = { { count = 0 } }
@@ -811,8 +872,8 @@ local function write_bookmarks()
-- write bookmark objects
for i=2, #bookmarks do
local bm, res = bookmarks[i], { }
- insert_formatted(res, '<< /Title %s\n/Parent %s 0 R /Dest (%s)', pdf_string(bm.title),
- bm.parent and bm.parent.outline_obj or bookmarks[1].outline_obj, bm.dest)
+ insert_formatted(res, '<< /Title %s\n/Parent %s 0 R /Dest %s', pdf_string(bm.title),
+ bm.parent and bm.parent.outline_obj or bookmarks[1].outline_obj, pdf_string(bm.dest))
if bm.next then insert_formatted(res, '/Next %s 0 R', bm.next.outline_obj) end
if bm.prev then insert_formatted(res, '/Prev %s 0 R', bm.prev.outline_obj) end
if bm.struct and bm.struct.objnum then
@@ -945,13 +1006,13 @@ end, 'protected')
function M.mark_discretionaries(head, gc)
if not spaces_enabled() then return end
- for disc in node.traverse_id(7, head) do
+ for disc in node.traverse_id(DISC_NODE, head) do
if disc.subtype ~= 2 then -- ‘automatic’ (exclude explicit hyphens)
local pre, post, replace = disc.pre, disc.post, disc.replace
local se, order = disc[current_struct], disc[current_order]
-- get the replacement text
local actual = { }
- for c in node.traverse_id(29, replace) do
+ for c in node.traverse_id(GLYPH_NODE, replace) do
table.insert(actual, c.char)
end
-- special case: a single hyphen
@@ -982,7 +1043,7 @@ local space_attr = alloc.new_attribute('space insertion marker')
function M.mark_spaces(head, gc)
if not spaces_enabled() then return end
- for g in node.traverse_id(12, head) do -- glue
+ for g in node.traverse_id(GLUE_NODE, head) do
if g.prev and g.subtype == 13 or g.subtype == 14 then -- (x)spaceskip
local p = g.prev
p[space_attr] = p.id == GLYPH_NODE and p.font
@@ -1011,7 +1072,7 @@ end
function M.insert_spaces(head, gc)
if not spaces_enabled() then return end
- for line in node.traverse_id(0, head) do
+ for line in node.traverse_id(HLIST_NODE, head) do
insert_spaces(line.head)
end
return true
@@ -1085,10 +1146,10 @@ local function write_output_intents()
attr = string.format('/N %d', oi.N),
immediate = true }
insert_formatted(res, '<< /Type/OutputIntent /DestOutputProfile %d 0 R', p)
- insert_formatted(res, '/S/%s /OutputConditionIdentifier (%s)', oi.subtype, oi.id)
- if oi.info then insert_formatted(res, '/Info (%s)', oi.info) end
- if oi.condition then insert_formatted(res, '/OutputCondition (%s)', oi.condition) end
- if oi.registry then insert_formatted(res, '/RegistryName (%s)', oi.registry) end
+ insert_formatted(res, '/S/%s /OutputConditionIdentifier %s', oi.subtype, pdf_string(oi.id))
+ if oi.info then insert_formatted(res, '/Info %s', pdf_string(oi.info)) end
+ if oi.condition then insert_formatted(res, '/OutputCondition %s', pdf_string(oi.condition)) end
+ if oi.registry then insert_formatted(res, '/RegistryName %s', pdf_string(oi.registry)) end
table.insert(res, '>>')
end
table.insert(res, ']')
@@ -1121,9 +1182,31 @@ end
alloc.luadef('minim:default:rgb:profile', function() M.add_default_rgb_output_intent() end)
alloc.luadef('minim:default:cmyk:profile', function() M.add_default_cmyk_output_intent() end)
+-- 1 pdf/ua
+
+alloc.luadef('tagging:enablepdfua', function()
+ add_to_catalog('/ViewerPreferences << /DisplayDocTitle true >>')
+ local pageattr = pdf.getpageattributes()
+ if pageattr then
+ pdf.setpageattributes(pageattr .. ' /Tabs /S')
+ else
+ pdf.setpageattributes('/Tabs /S')
+ end
+end)
+
+local function perform_pdfua_checks()
+ local xmp = require 'minim-xmp'
+ if xmp.get_metadata('dc:title') == '' then
+ alloc.err('PDF/UA error: no dc:title metadata')
+ end
+end
+
--
-cb.register ('finish_pdffile', function()
+cb.register('finish_pdffile', function()
+ if tex.count['pdfuaconformancelevel'] > 0 then
+ perform_pdfua_checks()
+ end
if tagging_enabled() then
write_language()
write_structure()
diff --git a/macros/luatex/generic/minim-pdf/minim-pdf.pdf b/macros/luatex/generic/minim-pdf/minim-pdf.pdf
index a6e22ee194..2b2ea69c42 100644
--- a/macros/luatex/generic/minim-pdf/minim-pdf.pdf
+++ b/macros/luatex/generic/minim-pdf/minim-pdf.pdf
Binary files differ
diff --git a/macros/luatex/generic/minim-pdf/minim-pdf.tex b/macros/luatex/generic/minim-pdf/minim-pdf.tex
index d8b06255ba..8a5f738063 100644
--- a/macros/luatex/generic/minim-pdf/minim-pdf.tex
+++ b/macros/luatex/generic/minim-pdf/minim-pdf.tex
@@ -167,8 +167,8 @@
\newcount\tagging:tablecolspan \tagging:tablecolspan 1
\newcount\tagging:tablerowspan \tagging:tablerowspan 1
\newcount\tagging:i
-\def\tagging:TH{TH}
-\def\tagging:TD{TD}
+\def\tagging:TH{{TH}\markcolumnhead}
+\def\tagging:TD{{TD}}
% initialising variables
\def\marktable{\startelement{Table}%
\global\advance\tagging:tablec1
@@ -205,7 +205,7 @@
\def\marktablecell{%
\global\advance\tagging:tablecol1
\continueelementfrom\tagging:row
- \startelement{\tagging:cell}%
+ \expandafter\startelement\tagging:cell%
\tagging:assignheaders}
% spans
@@ -301,13 +301,27 @@
\def\marktocentry#1#2#3#4#5{%
\ifx\marktocentry#1\marktocentry
\def\marktocentry:link##1{##1}\else
- \def\marktocentry:link##1{\hyperlink dest{#1}##1\endlink}\fi
+ \def\marktocentry:link##1{\hyperlink
+ alt{\csname minim:str:page\endcsname#5}
+ dest{#1}##1\endlink}\fi
\markelement{TOCI}{\nextpartag{}\quitvmode
\ifx\marktocentry#2\marktocentry\else
\markelement{Lbl}{\marktocentry:link{#2}}\fi
\markelement{Reference}{\marktocentry:link{#3%
\ifx\marktocentry#4\marktocentry\else
\markartifact{Layout}{#4}\fi#5}}}}
+\def\minim:str:page{Page }
+
+% \marknoteref {*}
+\def\marknoteref#1{%
+ \startelement ref{\newdestinationname}{Reference}%
+ {\stopformulatagging#1}\stopelement{Reference}}
+% \marknotelbl {*}
+\def\marknotelbl#1{%
+ \startelement id{\lastdestinationname}{Note}%
+ \aftergroup\tagging:ensurestopNote
+ \markelement{Lbl}{{\stopformulatagging#1}}}
+\def\tagging:ensurestopNote{\ensurestopelement{Note}}
% 1 tagging formulas
@@ -351,7 +365,7 @@
\def\formulasource:set#1{%
\begingroup
% strip \setalttext, \setactualtext
- \def\setalttext#1{}\def\setactualtext#1{}%
+ \def\setalttext##1{}\def\setactualtext##1{}%
\xdef\formulasource:thesource{#1}%
\endgroup
\expandafter\splitcommalist
@@ -370,6 +384,7 @@
relation Source desc {Equation source}
name {\formulafilename.tex}
string {\tagging:formulasource{#1}}\fi}
+\def\formulasource:none#1{}
\newtoks\includeformulasources
\includeformulasources{actualtext,attachment}
@@ -390,17 +405,18 @@
\def\linkdest:h#1{\vadjust pre{\linkdest:v{#1}}}
\def\linkdest:v#1{\pdfextension dest name {#1} xyz\nobreak}
-% \hyperlink dest {name} ... \endlink
-% \hyperlink url {url} ... \endlink
+% \hyperlink <args> ... \endlink
+% args: alt {...} attr {...} <type>
+% type: dest {name} | url {url} | next | prev | first | last
\protected\def\endlink{\pdfextension endlink\stopelement{Link}\relax}
\protected\def\startlink{\startelement{Link}\pdfextension startlink}
-\def\hyperlink#1#{\quitvmode\hyperlink:rmspace#1 \hyperlink:rmspace}
-\def\hyperlink:rmspace#1 #2\hyperlink:rmspace{%
- \startlink attr {\minim:linkattr}%
- \csname hyperlink:#1\endcsname}
-\def\hyperlink:dest#1{user {/Subtype/Link /F 4 /A <</S/GoTo /D (#1)>>}}
-\def\hyperlink:url#1{user {/Subtype/Link /F 4 /A <</S/URI /URI (#1)>>}}
-\def\minim:linkattr{/Border [0 0 0]}
+\protected\def\hyperlink{\quitvmode\startlink\hyper:makelink}
+
+% \hyperlinkstyle { ... }
+\def\minim:linkattr{\the\hyperlinkstyle\the\minim:pdfalinkattr}
+\newtoks\hyperlinkstyle
+\newtoks\minim:pdfalinkattr
+\hyperlinkstyle{/Border [0 0 0]}
% 1 languages
@@ -449,9 +465,12 @@
\newcount \pdfaconformancelevel
\pdfaconformancelevel = 0
+\newcount \pdfuaconformancelevel
+\pdfuaconformancelevel = 0
% \pdfalevel 2b
\def\pdfalevel#1#2{%
+ \minim:pdfalinkattr{ /F 4}% hyperlinks must be printed
\global\pdfaconformancelevel=#1\relax
\ifcsname minim:pdfa:#1#2\endcsname \lastnamedcs\else
\errmessage{Unknown pdf/a standard pdf/a-#1}\fi}
@@ -474,6 +493,12 @@
\expandafter\def\csname minim:pdfa:3b\endcsname{\minim:pdfasettings 7B3}
\expandafter\def\csname minim:pdfa:3u\endcsname{\minim:pdfasettings 7U3}
+% \pdfualavel 1
+\def\pdfualevel{\input minim-xmp
+ \setmetadata pdfuaid:part {1}
+ \tagging:enablepdfua
+ \global\pdfuaconformancelevel= }
+
% 
\catcode`\: = \minimpdfloaded
diff --git a/macros/luatex/generic/minim-xmp/README b/macros/luatex/generic/minim-xmp/README
index 4b983bddeb..15878c6e17 100644
--- a/macros/luatex/generic/minim-xmp/README
+++ b/macros/luatex/generic/minim-xmp/README
@@ -1,4 +1,4 @@
-Version: 2023/1.2
+Version: 2024/1.3
SUMMARY
@@ -21,6 +21,12 @@ In order to obtain the typeset manual of this package, simply say:
HISTORY
+2024/1.3 (5/1/2024)
+
+ New features:
+
+ * Add the pdfuaid namespace.
+
2023/1.2 (3/3/2022)
No new features.
diff --git a/macros/luatex/generic/minim-xmp/minim-xmp.doc b/macros/luatex/generic/minim-xmp/minim-xmp.doc
index 651373e2b6..250edb18af 100644
--- a/macros/luatex/generic/minim-xmp/minim-xmp.doc
+++ b/macros/luatex/generic/minim-xmp/minim-xmp.doc
@@ -8,8 +8,8 @@
\else \startmetadata
author {Esger Renkema}
title {minim-xmp}
- date {2023-03-03}
- version {2023/1.2}
+ date {2024-01-05}
+ version {2024/1.3}
keywords {LuaTeX; Plain TeX; XMP; metadata; PDF/A;}
stopmetadata
\maketitle \fi
@@ -85,7 +85,8 @@ the value of a single field and ⟦\getmetadata key⟧ will return all fields as
\section Supported metadata keys
Initially, the ⟦\setmetadata⟧ and ⟦\getmetadata⟧ recognise all pdf/a compatible
-fields in the ⟦pdf⟧, ⟦pdfaid⟧, ⟦dc⟧, ⟦xmp⟧, ⟦xmpMM⟧ and ⟦xmpRights⟧ namespaces.
+fields in the ⟦pdf⟧, ⟦pdfaid⟧, ⟦pdfuaid⟧, ⟦dc⟧, ⟦xmp⟧, ⟦xmpMM⟧ and ⟦xmpRights⟧
+namespaces.
Keys should be prefixed with their namespace, e.g. ⟦dc:creator⟧ or
⟦xmp:CreatorTool⟧.
Note that the ⟦dc⟧ namespace has lower-case fields; field names are
diff --git a/macros/luatex/generic/minim-xmp/minim-xmp.lua b/macros/luatex/generic/minim-xmp/minim-xmp.lua
index d6867a4c9b..e3b7a8de70 100644
--- a/macros/luatex/generic/minim-xmp/minim-xmp.lua
+++ b/macros/luatex/generic/minim-xmp/minim-xmp.lua
@@ -158,6 +158,12 @@ M.add_namespace('PDF/A Identification', 'pdfaid', 'http://www.aiim.org/pdfa/ns/i
part = { 'Integer', 'Version identifier', true },
}, nil, true)
+M.add_namespace('PDF/UA Identification', 'pdfuaid', 'http://www.aiim.org/pdfua/ns/id/', {
+ amd = { 'Text', 'Amendment identifier', true },
+ corr = { 'Text', 'Corrigendum identifier', true },
+ part = { 'Integer', 'Version identifier', true },
+})
+
M.add_namespace('Dublin Core', 'dc', 'http://purl.org/dc/elements/1.1/', {
contributor = { 'Bag ProperName', 'Other contributors' },
coverage = { 'Text', 'Extent or scope' },
diff --git a/macros/luatex/generic/minim-xmp/minim-xmp.pdf b/macros/luatex/generic/minim-xmp/minim-xmp.pdf
index b5011cd8e0..fdf38f3a2c 100644
--- a/macros/luatex/generic/minim-xmp/minim-xmp.pdf
+++ b/macros/luatex/generic/minim-xmp/minim-xmp.pdf
Binary files differ
diff --git a/macros/luatex/generic/minim/README b/macros/luatex/generic/minim/README
index 36fe201f7c..4aa90c7cd8 100644
--- a/macros/luatex/generic/minim/README
+++ b/macros/luatex/generic/minim/README
@@ -1,4 +1,4 @@
-Version: 2023/1.3
+Version: 2024/1.4
SUMMARY
@@ -31,6 +31,11 @@ the packages mentioned above.
HISTORY
+2024/1.4 (5/1/2024)
+
+ * Documented the pdf resource management module
+ * Updated the manual to pdf/ua
+
2023/1.3 (20/10/2023)
No changes.
diff --git a/macros/luatex/generic/minim/minim-alloc.doc b/macros/luatex/generic/minim/minim-alloc.doc
index 4aec2d39fc..5a343c4b85 100644
--- a/macros/luatex/generic/minim/minim-alloc.doc
+++ b/macros/luatex/generic/minim/minim-alloc.doc
@@ -25,7 +25,7 @@ load both packages should not matter.
\section Format files
A major motivation for writing this module (and not, instead, depending on
-⟦ltluatex.tex⟧) is the ability to write lua-heavy code that can be safely
+ltluatex) is the ability to write lua-heavy code that can be safely
included in format files.
For this purpose, the register allocation functions described below allow
ensuring that the allocation is made only once.
@@ -171,6 +171,46 @@ If you create a new callback with a number for a name, that callback will
replace the ⟦*process_rule⟧ callback when its number matches the index property
of the rule.
+\section PDF resources
+
+This package can perform sophisticated pdf resource management, assigning to
+every page a resource object containing only the resources referenced on that
+page. pdf resources are ⟦ExtGstate⟧, ⟦ColorSpace⟧, ⟦Pattern⟧ and ⟦Shading⟧
+objects that have to be referenced by name (⟦/name⟧) instead of with the usual
+object references (⟦n 0 R⟧).\footnote
+ {*}{This is of course also the case for ⟦Font⟧ resources, but those are
+ already managed by luatex’s pdf backend.}
+Currently, the only other package managing pdf resources for plain tex is
+tikz/pgf, and the latter does so by collecting all resources in a single
+(global) resource object. That approach is not wrong per se, but may cause
+other tools processing the resulting pdf to retain unneeded resources.
+Both implementations can safely be used together, but since pgf does not keep
+track of actual resource use, any resources defined through pgf will be added
+to the resource dictionary of every subsequent page.
+
+The resource management is implemented in minim-pdfresources.lua and
+minim-pdfresources.tex, of which the tex file currently only includes pgf
+compatibility code (and may thus be omitted in the absence of pgf). In the
+following, ⟦R = require 'minim-pdfresources'⟧ is understood.
+
+You must register resources before you use them. This can be done with
+⟦*R.add_resource(kind, name, resource)⟧, where ⟦kind⟧ is one of the resource
+types, ⟦name⟧ is the name you want to use for it (without a preceding slash)
+and ⟦resource⟧ is a table that may contain any data you want to associate with
+the resource. In the ⟦resource⟧ table, either the key ⟦value⟧ must be present
+(containing the (raw) contents of the resource; will be written to the pdf
+as-is) or the key ⟦write⟧ (which must be a function that will be called once,
+to generate the ⟦value⟧). Registered resources can be retrieved again with
+⟦*R.get_resource(kind, name)⟧.
+
+You can refer to registered resources with the ⟦name⟧ you used to register
+them. Whenever you do so, however, you must mark the reference with a special
+⟦late_lua⟧ node that will tell minim to include the resource in the resource
+list for the page it appears on. These nodes can be created from lua with
+⟦*R.use_resource_node(kind, name)⟧ or directly inserted by tex with
+⟦*\withpdfresource {kind} {name}⟧ (the braces are optional).
+
+
\section Programming helpers
Optional keyword arguments to tex macros can be defined with help of
diff --git a/macros/luatex/generic/minim/minim-doc.sty b/macros/luatex/generic/minim/minim-doc.sty
index 97b173beac..93d807f16a 100644
--- a/macros/luatex/generic/minim/minim-doc.sty
+++ b/macros/luatex/generic/minim/minim-doc.sty
@@ -9,6 +9,7 @@
%\decompressedpdf
\pdfalevel 3a
+\pdfualevel 1
\overfullrule = 0pt
% 1 page layout
@@ -124,8 +125,22 @@ endfig;}
% page artifacts
\edef\tmp{\markartifact{Pagination /Subtype/Footer}{\the\footline}}
\footline\expandafter{\tmp}
-\def\footnoterule{\markartifact{Layout}{\kern-3\p@
- \hrule width 2truein \kern 2.6\p@}} % the \hrule is .4pt high
+
+% footnotes
+\edef\footnoterule{\markartifact{Layout}\footnoterule}
+\catcode`\@=11
+\def\footnote#1{\let\@sf\empty % parameter #2 (the text) is read later
+ \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
+ \marknoteref{#1}\@sf\vfootnote{#1}}
+\def\vfootnote#1{%
+ \insert\footins\bgroup
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\ht\strutbox % top baseline for broken footnotes
+ \splitmaxdepth\dp\strutbox \floatingpenalty\@MM
+ \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip
+ \nextpartag{}\marknotelbl{#1}\enspace\startelement{P}%
+ \footstrut\futurelet\next\fo@t}
+\catcode`\@=12
% \startlist \item x. ... \stoplist
\def\listskip{\vskip 3pt plus 2pt\vskip-\parskip}
@@ -141,22 +156,26 @@ endfig;}
\protected\def\chapter#1 \par{%
\vfil\break
\ensurestopelement{Section}%
- \startelement{Chapter}%
+ \global\advance\chapterno1 \global\sectionno0
+ \startelement title{Chapter \the\chapterno}{Chapter}%
\outline open {#1}%
\addtotoc{\chapter{#1}{\lastdestinationname}}%
\nextpartag{H}\quitvmode
\red{\Title#1\hfill\copy\notehead}\bigskip\nobreak}
+\newcount \chapterno
% \section Title \par
\addstructuretype Sect Section
\protected\def\section#1 \par{%
\bigskip\penalty-50\relax
- \startelement{Section}%
+ \global\advance\sectionno1
+ \startelement title{Section \the\chapterno.\the\sectionno}{Section}%
\outline closed {#1}%
\addtotoc{\section{#1}{\lastdestinationname}}%
\nextpartag{H}\quitvmode
\red{\title#1}%
\par\nobreak}
+\newcount \sectionno
% table of contents
\newtoks\toc \newif\iftoc \toctrue
@@ -186,7 +205,9 @@ endfig;}
\tocfalse \chapter \getmetadata title
\hfill \tenrm version \getmetadata version
\par\endgroup
- \marktableaslist \halign {\strut
+ \marktableaslist
+ \tagattribute List ListNumbering /None
+ \halign {\strut
\qquad##\quad&##\hfil\cr
author&\getmetadata author\cr
contact&{\def\tmp{@}\def\TMP{.}%
@@ -207,8 +228,9 @@ Licence (EUPL) version 1.2 or later. An english version of this licence has
been included as an attachment to this file; copies in other languages can be
obtained at
\stopformulatagging$$\hbox
-{\hyperlink url {https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12}%
-https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\endlink}$$\startformulatagging}
+{\hyperlink alt{Link to the website of the EUPL.}
+ url {https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12}%
+ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\endlink}$$\startformulatagging}
% for identifying which file we are typesetting
\edef\thejobname{\expandafter\scantextokens\expandafter{\jobname}}
diff --git a/macros/luatex/generic/minim/minim-pdfresources.lua b/macros/luatex/generic/minim/minim-pdfresources.lua
index e6a06e783e..468da03b48 100644
--- a/macros/luatex/generic/minim/minim-pdfresources.lua
+++ b/macros/luatex/generic/minim/minim-pdfresources.lua
@@ -50,7 +50,7 @@ function M.use_resource(kind, name)
return res._entry_
end
--- global resources are mainly for pgf compatibility: contains adds entries to
+-- global resources are mainly for pgf compatibility: it contains entries to
-- the resource dictionaries that will be added for every page.
--
local global_resources = init_resources() -- name ↦ '/Key <value>'
@@ -87,6 +87,10 @@ function M.use_resource_node(kind, name)
return n
end
+alloc.luadef('withpdfresource', function()
+ node.write(M.use_resource_node(token.scan_string(), token.scan_string()))
+end, 'protected')
+
-- construction and caching of resource dictionaries.
--
local previous_dicts = init_resources() -- pdf dict ↦ objnum
diff --git a/macros/luatex/generic/minim/minim-pdfresources.tex b/macros/luatex/generic/minim/minim-pdfresources.tex
index 6b8dc29577..57e9d8f012 100644
--- a/macros/luatex/generic/minim/minim-pdfresources.tex
+++ b/macros/luatex/generic/minim/minim-pdfresources.tex
@@ -13,6 +13,7 @@
% 1 pgf compatibility
% this ballet inserts our fix directly at the end of pgfsys-luatex.def
+% (see the \ProvidesFile redefinition in minim-alloc.tex)
\expandafter\def\csname minim:intercept:pgfsys-luatex.def\endcsname
{\wlog{minim: applying pgf patches...}\newtoks\minim:pgf:fix:toks
\minim:pgf:fix:toks\csname pgfutil@everybye\endcsname
diff --git a/macros/luatex/generic/minim/minim.doc b/macros/luatex/generic/minim/minim.doc
index bf56d89747..e975718b1e 100644
--- a/macros/luatex/generic/minim/minim.doc
+++ b/macros/luatex/generic/minim/minim.doc
@@ -4,8 +4,8 @@
\startmetadata
author {Esger Renkema}
title {minim}
- date {2023-10-20}
- version {2023/1.3}
+ date {2024-01-05}
+ version {2024/1.4}
keywords {LuaTeX; Plain TeX; MetaPost; PDF/A; Tagged PDF; accessibility; a11y;
Unicode mathematics; XMP; metadata; hypertext; bookmarks}
stopmetadata
@@ -20,7 +20,9 @@ a basis for your own formats.
Most features included in the format are provided by separate packages that can
be used on their own; see the packages
-\smallskip\marktableaslist \halign {\strut
+\smallskip\marktableaslist
+\tagattribute List ListNumbering /Description
+\halign {\strut
\vrule height10ptdepth2ptwidth0pt\qquad
\red{#}\quad\hfil&#\hfil\cr
minim-mp&for mplib (MetaPost) support\cr
diff --git a/macros/luatex/generic/minim/minim.pdf b/macros/luatex/generic/minim/minim.pdf
index b6e05b6cc8..3848cf5103 100644
--- a/macros/luatex/generic/minim/minim.pdf
+++ b/macros/luatex/generic/minim/minim.pdf
Binary files differ