diff options
author | Norbert Preining <norbert@preining.info> | 2024-09-18 03:03:10 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2024-09-18 03:03:10 +0000 |
commit | 73cf6f1d6adcda573c712d2b05d7fa9536c63d84 (patch) | |
tree | 39a0ffc503bc932a49e508600ba8b393988250a2 /macros | |
parent | 24ad0d96154aa10da70ac289b2907f3cb618c1c1 (diff) |
CTAN sync 202409180303
Diffstat (limited to 'macros')
88 files changed, 2867 insertions, 1327 deletions
diff --git a/macros/latex/contrib/animate/ChangeLog b/macros/latex/contrib/animate/ChangeLog index 969f6399c6..4faf3429d7 100644 --- a/macros/latex/contrib/animate/ChangeLog +++ b/macros/latex/contrib/animate/ChangeLog @@ -1,3 +1,7 @@ +2024-09-17 + * change: `method=widget' now default for extended range of supporting viewers + * fix: documentation revised + 2024-09-06 * fix: documentation PDF re-compiled and minor README additions @@ -57,10 +61,10 @@ * fix: pausing on the 0th frame 2020-08-29 - * new: \multiframebreak for terminating \multiframe loop + * new: \multiframebreak for terminating \multiframe loop 2020-08-04 - * fix: typesetting failure with `latex-dev' + * fix: typesetting failure with `latex-dev' 2020-05-29 * fix: `autoplay' option non-functional in combination with `poster=last'; @@ -231,12 +235,12 @@ * fix: bug related to XObject referencing 2016-03-11 - * new: now uses pdfbase.sty for low level PDF operations + * new: now uses pdfbase.sty for low level PDF operations 2016-02-28 * Fix: workaround for bug http://tex.stackexchange.com/q/295715 : different behaviour of AR versions with regard to PageOpen and PageVisible events - where animation initialisation takes place + where animation initialisation takes place 2016-02-15 * Fix: bug http://tex.stackexchange.com/q/292805 @@ -454,7 +458,7 @@ * New: the transparency stack can now be cleared using `c' in the timeline file * improved documentation of the timeline option - * New animateinline example (Lorenz Attractor) + * New animateinline example (Lorenz Attractor) * Fix: animfp.sty: trailing zeros are now removed from the fractional part of the result of the addition of two reals diff --git a/macros/latex/contrib/animate/README.md b/macros/latex/contrib/animate/README.md index 504a759f5c..0c52e149fa 100644 --- a/macros/latex/contrib/animate/README.md +++ b/macros/latex/contrib/animate/README.md @@ -10,7 +10,7 @@ This package provides an interface to create portable, JavaScript driven PDF and It supports the usual PDF making workflows, i. e. pdfLaTeX, LaTeX ⇒ `dvips` ⇒ `ps2pdf` (Ghostscript)/Distiller, (Xe)LaTeX ⇒ `(x)dvipdfmx`, LuaLaTeX, and LaTeX ⇒ `dvisvgm` for SVG. -The resulting PDF with animations can be viewed in Acrobat Reader (except on mobile devices), KDE Okular, PDF-XChange, Foxit Reader, PDF.js (PDF viewer in Firefox). For compatibility with PDF.js, animations must be built with option `method=widget`. +The resulting PDF with animations can be viewed in Acrobat Reader (except on mobile devices), KDE Okular, PDF-XChange, Foxit Reader, PDF.js (Firefox' built-in PDF viewer and extension for Chromium-based browsers). Animated SVG are self-contained files that can be embedded into HTML using the `<object>` tag or opened directly in a Web browser, such as Firefox or Chromium. diff --git a/macros/latex/contrib/animate/animate.pdf b/macros/latex/contrib/animate/animate.pdf Binary files differindex d74cbc4515..a117175261 100644 --- a/macros/latex/contrib/animate/animate.pdf +++ b/macros/latex/contrib/animate/animate.pdf diff --git a/macros/latex/contrib/animate/animate.sty b/macros/latex/contrib/animate/animate.sty index 7e5b746210..08dbf8a881 100644 --- a/macros/latex/contrib/animate/animate.sty +++ b/macros/latex/contrib/animate/animate.sty @@ -13,7 +13,7 @@ \NeedsTeXFormat{LaTeX2e}[2022-06-01] -\def\@anim@version{2024/09/06} +\def\@anim@version{2024/09/17} \ProvidesPackage{animate} [\@anim@version\space PDF & SVG animations from files and inline graphics] @@ -3351,7 +3351,8 @@ \setboolean{@anim@@draft}{false}% } \newboolean{@anim@@nomouse} -\def\@anim@@method{\z@}%default animation method is `icon' +%\def\@anim@@method{\z@}%default animation method is `icon' +\def\@anim@@method{\@ne}%default animation method is `widget' \def\@anim@@ftype{}% file type (extension) of graphics \ExplSyntaxOn diff --git a/macros/latex/contrib/animate/animate.tex b/macros/latex/contrib/animate/animate.tex index d3bab3850b..9cc30bf2eb 100644 --- a/macros/latex/contrib/animate/animate.tex +++ b/macros/latex/contrib/animate/animate.tex @@ -18,7 +18,7 @@ %%%%%% /pdfmanagement-testphase %%%%%% \documentclass[a4paper]{article} \frenchspacing -\usepackage[buttonbg=0.9,method=widget]{animate} +\usepackage[buttonbg=0.9]{animate} \usepackage[UKenglish]{babel} \usepackage{pst-3dplot} \usepackage{pst-node,pst-plot,pst-tools,pst-text,pst-ode} @@ -94,7 +94,7 @@ \def\@anim@sanitizeColon{}\def\@anim@sanitizeJS{}\def\@anim@endsanitize{} \expandafter\parsedate\animVersion\relax %set current date to package date \makeatother -\author{Alexander Grahn \animategraphics[autoplay,loop,height=1.8ex,nomouse]{8}{bye_}{0}{3}\protect\footnote{Animated GIF taken from \href{http://www.phpBB.com}{phpBB} forum software and burst into a set of EPS files using \href{http://www.imagemagick.org}{ImageMagick} before embedding.} \protect\footnote{Animation examples in this document have all been built with the `\texttt{method=widget}' option to make them work in PDF.js, Mozilla's PDF viewer built into the Firefox Web browser.}% +\author{Alexander Grahn \animategraphics[autoplay,loop,height=1.8ex,nomouse]{8}{bye_}{0}{3}\protect\footnote{Animated GIF taken from \href{http://www.phpBB.com}{phpBB} forum software and burst into a set of EPS files using \href{http://www.imagemagick.org}{ImageMagick} before embedding.}% \protect\footnote{Animation examples in this document have all been built with the `\texttt{method=widget}' option to make them work in PDF.js, Mozilla's PDF viewer built into the Firefox Web browser.}% %\space\protect\footnote{Animations may run slowly if viewed in the Acrobat Reader browser plugin.}% \\[1ex]\url{https://gitlab.com/agrahn/animate}} \maketitle @@ -111,16 +111,32 @@ \tableofcontents %\newpage -\section{Introduction} +\section{Introduction}\label{sect:intro} This package provides an interface for creating PDF and SVG files with animated content from sets of graphics or image files, from inline graphics, such as \LaTeX-picture, PSTricks or pgf/TikZ generated pictures, or just from typeset text. Unlike standard movie/video formats, package `animate' allows for animating vector graphics. The result is roughly similar to the SWF (Flash) format, although not as space-efficient. Package `animate' supports the usual workflows for making PDF, i.\,e. pdf\LaTeX{}, Lua\-\LaTeX{}, \LaTeX{} $\rightarrow$ \verb+dvips+ $\rightarrow$ \verb+ps2pdf+/Distiller and \pXepLaTeX{} $\rightarrow$ \verb+(x)dvipdfmx+. For animated SVG, it supports the \verb+dvisvgm+ driver. The DVI/XDV used as input for \verb+dvisvgm+ can be generated with \LaTeX{}, Lua\LaTeX{} (in DVI mode with command `\verb+dvilualatex+') and \XeLaTeX{} (with option `\verb+--no-pdf+'). -PDF files with animations can be viewed in Acrobat Reader (except on mobile devices), KDE Okular, PDF-XChange, Foxit Reader, PDF.js (as Firefox built-in PDF viewer, or in other Web browsers via URL). The most recent release of PDF.js can be accessed online in a Web browser (Firefox, Chromium, Chrome, Edge, ...) via the following URL: +PDF files with animations can be viewed in Acrobat Reader (except on mobile devices), KDE Okular, PDF-XChange, Foxit Reader, PDF.js (Firefox' built-in PDF viewer and extension for Chromium-based Web browsers). To view a local PDF file in the Web browser, open it by right-click in a file explorer or by starting the Web browser on the command-line, passing the PDF file name as its argument. The full-screen mode, also known as Presentation Mode in PDF.js, can be reached via the \raisebox{0.5\depth}{{\fboxsep=3pt\colorbox{lightgray}{\texttt{\large>>}}}} button at the right end of the toolbar. The PDF.js extension for Chromium/Chrome/Edge can be installed from -\url{https://mozilla.github.io/pdf.js/web/viewer.html?file=} +\makebox[\linewidth][l]{\href{https://chromewebstore.google.com/detail/pdf-viewer/oemmndcbldboiebfnladdacbdfmadadm}{\nolinkurl{https://chromewebstore.google.com/detail/pdf-viewer/}}}\\ +\makebox[\linewidth][r]{\href{https://chromewebstore.google.com/detail/pdf-viewer/oemmndcbldboiebfnladdacbdfmadadm}{\nolinkurl{oemmndcbldboiebfnladdacbdfmadadm}}} -Then, to open a local PDF file in PDF.js, click \raisebox{0.5\depth}{{\fboxsep=3pt\colorbox{lightgray}{\texttt{\large>>}}}} at the right end of its tool bar. In the `Tools' menu, click on `Open'. Note that option `\texttt{method=widget}' must be set to produce animations that are compatible with PDF.js. +For animations to play in the Chromium extension, JavaScript needs to be enabled in the settings: + +\makebox[\linewidth][l]{\url{chrome://extensions/?id=oemmndcbldboiebfnladdacbdfmadadm} $\rightarrow$}\\ +\makebox[\linewidth][r]{Extension options $\rightarrow$ Enable active content (JavaScript) in PDFs} + +Viewing of local files also needs to be enabled in Chromium-based browsers: + +\makebox[\linewidth][l]{\url{chrome://extensions/?id=oemmndcbldboiebfnladdacbdfmadadm} $\rightarrow$}\\ +\makebox[\linewidth][r]{Allow access to file URLs} + +%Note that option `\texttt{method=widget}' must be set to produce animations that are compatible with PDF.js. +%PDF files with animations can be viewed in Acrobat Reader (except on mobile devices), KDE Okular, PDF-XChange, Foxit Reader, PDF.js (as Firefox built-in PDF viewer, or in other Web browsers via URL). The most recent release of PDF.js can be accessed online in a Web browser (Firefox, Chromium, Chrome, Edge, ...) via the following URL: +% +%\url{https://mozilla.github.io/pdf.js/web/viewer.html?file=} +% +%Then, to open a local PDF file in PDF.js, click \raisebox{0.5\depth}{{\fboxsep=3pt\colorbox{lightgray}{\texttt{\large>>}}}} at the right end of its tool bar. In the `Tools' menu, click on `Open'. Note that option `\texttt{method=widget}' must be set to produce animations that are compatible with PDF.js. Animated SVG produced by means of \LaTeX{} and \verb+dvisvgm+ are self-sufficient files that can be embedded into HTML using the \verb+<object>+ tag or opened directly in a Web browser, such as Chromium or Firefox. Also, presentations, such as `beamer'-class documents, with embedded animations can be exported to SVG instead of PDF and viewed in a Web browser. SVG-capable Web browsers are standard on many platforms and operating systems and thus make SVG a very portable file format. A \LaTeX{} package for embedding video and audio into SVG is also available\cite{media4svg}. @@ -135,8 +151,7 @@ The user interacts with the animation through optional animation controls or usi \item pdf\TeX{}, version $\ge1.40$, or Lua\TeX{}, version $\ge0.95$, for direct PDF output \item Ghostscript, version $\ge9.15$, or Adobe Distiller for PS to PDF conversion \item \verb+dvipdfmx+ for DVI to PDF conversion -\item dvipdfmx, version $\ge 20190503$, for DVI to PDF conversion -\item \verb+dvisvgm+ for DVI to SVG conversion (also requires Ghostscript) +\item \verb+dvisvgm+ for DVI to SVG conversion (also requires Ghostscript and MuPDF) \item PDF: Acrobat Reader, KDE Okular, PDF-XChange, Foxit Reader, Firefox, version $\ge130$, PDF.js, version $\ge4.4.168$ \item SVG: Chromium-based browsers for best performance \end{trivlist} @@ -144,7 +159,7 @@ The user interacts with the animation through optional animation controls or usi \section{Installation} Unzip the file \href{http://mirrors.ctan.org/install/macros/latex/contrib/animate.tds.zip}{`animate.tds.zip'} into the local TDS root directory which can be found by running `\verb+kpsewhich -var-value TEXMFLOCAL+' on the command line. -After installation, update the filename database by running `\verb+texhash+' on the command line. +After installation, update the file name database by running `\verb+texhash+' on the command line. \TeX-Live and MiK\TeX{} users should run the package manager of their system for installation. @@ -392,11 +407,11 @@ With `\verb+draft+' the animation is not embedded. Instead, a box with the exact \begin{verbatim} nomouse \end{verbatim} -Animation widget will not respond to mouse clicks. Unless the JavaScript interface, Sect.~\ref{sect:api}, p.~\pageref{sect:api}, is used to control the animation, it is recommended to also set at least one of the `\verb+autoplay+' or `\verb+controls+' options. +Animation widget will not respond to mouse clicks. Unless the JavaScript interface, Section~\ref{sect:api}, p.~\pageref{sect:api}, is used to control the animation, it is recommended to also set at least one of the `\verb+autoplay+' or `\verb+controls+' options. \begin{verbatim} method=icon | widget | ocg \end{verbatim}\hypertarget{method}{}% -The package implements three different animation methods. The `\verb+icon+' method is the default method and usually gives the best performance in terms of animation frame rate. `\verb+widget+' and `\verb+ocg+' are alternative animation methods. Animations using the `\verb+widget+` method are supported in versions 4.4.168 and above of PDF.js, Mozilla's PDF viewer that ships as a built-in component of Firefox, but which can also be used with other Web browsers, such as Chrome or Chromium. The `\verb+ocg+' method may lead to a better animation performance than the other two in rare cases, such as standalone animations without animation controls. Moreover, `\verb+ocg+' allows an animation to be overlaid with other typeset material, that is, it can play in the page background. +The package implements three different animation methods. The `\verb+icon+' method usually gives the best performance in terms of animation frame rate in Acrobat Reader. However, the `\verb+widget+' method is now set by default because it extends the range of supporting viewers. Beginning with version 130, Firefox renders functional animations too. The PDF viewer bundled with Firefox, PDF.js, is also available as an extension for Chrome and releated browsers, see Section~\ref{sect:intro}. In rare cases, such as standalone animations without animation controls, the alternative `\verb+ocg+' method may lead to a better animation performance than the other two. Also, `\verb+ocg+' allows an animation to be overlaid with other typeset material, that is, it can play in the page background. However, support is limited to Acrobat Reader and Okular. \begin{verbatim} measure \end{verbatim} @@ -472,7 +487,7 @@ frame No. & timeline file & transparency stack\\\hline\hline \end{tabular} \end{table} -Figures~\ref{fig:taylor} and \ref{fig:lorenz} in Sect.~\ref{sect:examples} are animation examples with a single transparency stack. +Figures~\ref{fig:taylor} and \ref{fig:lorenz} in Section~\ref{sect:examples} are animation examples with a single transparency stack. \myparagraph*{Grouping objects into layers (= sub-stacks) using `{\tt;}'} Due to the stack-like nature of the animation, the position of a transparency specification in the timeline file determines its \emph{depth} level in relation to other transparencies. The timeline file is processed line by line and from left to right. In a single-stack animation, the stack is strictly built from the bottom up, such that earlier transparencies are overprinted by more recent ones. This may turn out to be inconvenient in certain situations. For example, it might be desirable to change the background image in the middle of an animation without affecting objects that are located in the foreground. For this purpose, transparency specifications can be grouped into layers (sub-stacks) using the semicolon (\verb+;+) as a separator. New transparencies can now be put on top of the individual sub-stacks. After a line of the timeline file has been processed, the global stack is built by placing the sub-stacks on top of the other. Again, the left-to-right rule applies when determining the height of the sub-stacks in relation to each other within the global stack. @@ -509,7 +524,7 @@ frame No. & timeline file & transparency stack\\\hline\hline % %Note that \emph{without} setting up two layers, that is, by replacing the semicolons with commas, the foreground objects (transparencies 2 through 99) which have been added during the first 49 frames would be overprinted by the new background image, transparency 1, from frame 50 onward. -See the second animation, Fig.~\ref{fig:scarab}, in Sect.~\ref{sect:examples} for a working example that makes use of the timeline and the layer concept. +See the second animation, Fig.~\ref{fig:scarab}, in Section~\ref{sect:examples} for a working example that makes use of the timeline and the layer concept. \myparagraph*{Associate JavaScript actions with animation frames}\label{sect:jsfield} The optional fourth field \verb+<JavaScript>+ in a frame specification takes JavaScript code to be executed upon display of that frame. This could be used, for instance, to play a sound that was embedded using the `media9' \LaTeX{} package \cite{media9} or to execute JavaScript methods of the animation object. A non-trivial example is looping over a sub-range of frames which can be programmed by setting the `\verb+frameNum+' property of the animation object. See Section~\ref{sect:api} for details of the animation programming interface. @@ -605,7 +620,7 @@ Also, the programming interface can be used to create custom buttons for playbac ]{\fbox{Goto 6th frame}} \end{lstlisting} -\clearpage +%\clearpage \section{Examples} \subsection{Animations from sets of files, using {\tt\textbackslash animategraphics}}\label{sect:examples} Animations in this section are made from graphics files that were prepared with \MP. Run `\verb+mpost --tex=latex+' on the files ending in `.mp' in the `files' directory to generate the graphics files. Both examples make use of the `\verb+timeline+' option to reduce the resulting PDF file size. @@ -1379,7 +1394,7 @@ The following code may serve as a template for generating standalone animated SV % \end{document} \end{lstlisting} -Note that when animating external graphics with \verb+\animategraphics+, only PDF and PostScript (EPS, PS, MPS) files are converted to inline SVG code; files in other formats (SVG, PNG, JPEG) remain external and must be bundled with the final SVG output. Thus, for obtaining self-contained SVG, it is recommended to convert PNG, JPEG and SVG files to PDF or PostScript first. Also note that PostScript files must have all required fonts embedded. This is not always the case for \MP-generated PostScript. Here, embedding of fonts is ensured by putting `\verb+prologues := 3;+' into the header of the \MP{} input. +Note that when animating external graphics with \verb+\animategraphics+, only PDF and PostScript (EPS, PS, MPS) files are converted to inline SVG code; files in other formats (SVG, PNG, JPEG) remain external and must be bundled with the final SVG output. Thus, for obtaining self-contained SVG, it is recommended to convert PNG, JPEG and SVG files to PostScript or PDF first. Also note that PostScript files must have all required fonts embedded. This is not always the case for \MP-generated PostScript. Here, embedding of fonts is ensured by putting `\verb+prologues := 3;+' into the header of the \MP{} input. If PDF is chosen as file format for input graphics, the conversion utility `\verb+mutool+' must be present on the system. It is installed as part of the MuPDF (\url{https://mupdf.com}) package. Use one of \begin{verbatim} @@ -1473,7 +1488,7 @@ In \TeX4ht documents, the whole \verb+<object>...</object>+ tag can be inserted \item PDFs with animations cannot be embedded (via {\tt\string\includegraphics},\\ {\tt\string\includepdf}) into other documents as the animation capability gets lost. - \item Animations should not be placed on \emph{multilayered} slides, also known as overlays, created with presentation making classes such as Beamer or Powerdot. Those document classes turn overlays into separate PDF pages and re-insert the animation on every page thus produced. The animations are independent from each other and do not share the current playing state, such as frame number, playing speed and direction. Therefore, put animations on flat slides only; slides without animations may still have overlays, of course. On \href{https://tex.stackexchange.com/a/385209}{\TeX.SE}~\cite{texsx}, a method is suggested for placing an animation on a slide with overlays. It makes use of the programming interface introduced in Sect.~\ref{sect:api}, p.~\pageref{sect:api}. + \item Animations should not be placed on \emph{multilayered} slides, also known as overlays, created with presentation making classes such as Beamer or Powerdot. Those document classes turn overlays into separate PDF pages and re-insert the animation on every page thus produced. The animations are independent from each other and do not share the current playing state, such as frame number, playing speed and direction. Therefore, put animations on flat slides only; slides without animations may still have overlays, of course. On \href{https://tex.stackexchange.com/a/385209}{\TeX.SE}~\cite{texsx}, a method is suggested for placing an animation on a slide with overlays. It makes use of the programming interface introduced in Section~\ref{sect:api}, p.~\pageref{sect:api}. \end{itemize} \section{Acknowledgements} @@ -1481,14 +1496,14 @@ I would like to thank François Lafont who discovered quite a few bugs and made %\enlargethispage{4ex} \begin{thebibliography}{8} -\bibitem{chupin} Chupin, M.: \emph{Syracuse MetaPost/Animations.} URL: \href{http://melusine.eu.org/syracuse/metapost/animations/chupin/?idsec=scara}{\texttt{http://melusine.eu.org/}} \href{http://melusine.eu.org/syracuse/metapost/animations/chupin/?idsec=scara}{\texttt{syracuse/metapost/animations/chupin/?idsec=scara}} +\bibitem{chupin} Chupin, M.: \emph{Syracuse MetaPost/Animations.} URL: \href{http://melusine.eu.org/syracuse/metapost/animations/chupin/?idsec=scara}{\nolinkurl{http://melusine.eu.org/}} \href{http://melusine.eu.org/syracuse/metapost/animations/chupin/?idsec=scara}{\nolinkurl{syracuse/metapost/animations/chupin/?idsec=scara}} \bibitem{dvisvgm} \emph{dvisvgm: A fast DVI to SVG converter} URL: \url{http://dvisvgm.de} \bibitem{gilg05} Gilg, J.: PDF-Animationen. In: \emph{Die \TeX nische Kom\"odie}, Issue 4, 2005, pp.~30--37 \bibitem{hol} Holeček, J.; Sojka, P.: Animations in pdf\TeX-generated PDF. In: \emph{\TeX, XML, and Digital Typography}, Springer, 2004, pp.~179--191. doi:10.1007/978-3-540-27773-6\textunderscore14 \bibitem{luque12} Luque, M.: \emph{PSTricks : applications.} URL: \url{http://pstricks.blogspot.com} \bibitem{media4svg} \emph{The media4svg Package}. URL: \url{http://www.ctan.org/pkg/media4svg} \bibitem{media9} \emph{The media9 Package}. URL: \url{http://www.ctan.org/pkg/media9} -\bibitem{texsx} \emph{Beamer: animate package and overlay}. URL: \href{https://tex.stackexchange.com/a/385209}{\texttt{https://tex.stackexchange.com}}\\ \href{https://tex.stackexchange.com/a/385209}{\texttt{/a/385209}} +\bibitem{texsx} \emph{Beamer: animate package and overlay}. URL: \href{https://tex.stackexchange.com/a/385209}{\nolinkurl{https://tex.stackexchange.com}}\\ \href{https://tex.stackexchange.com/a/385209}{\nolinkurl{/a/385209}} \end{thebibliography} \end{document} diff --git a/macros/latex/contrib/changelog/README.md b/macros/latex/contrib/changelog/README.md index ab16196d1e..6b7d251083 100644 --- a/macros/latex/contrib/changelog/README.md +++ b/macros/latex/contrib/changelog/README.md @@ -2,12 +2,21 @@ [Available on CTAN as `changelog`][changelog] -Changelogs are important. Unfortunately, there are few facilities -for typesetting changelogs in LaTeX. `changelog` defines a `changelog` +Changelogs are important. The `changelog` package defines a `changelog` environment to make changelogs simple and intuitive. Inspired by [keepachangelog.com]. +```latex +\begin{changelog}[author=Rebecca Turner, simple, sectioncmd=\section*] +\begin{version}[v=1.0.0, date=2018-12-28] + \item Cool features + \item Bug fixes +\end{version} +\shortversion{v=0.1.0, date=2018-10-25, changes=Initial beta} +\end{changelog} +``` + File | Description -----------------------------|------------------------------- changelog.sty | The changelog package diff --git a/macros/latex/contrib/changelog/changelog.pdf b/macros/latex/contrib/changelog/changelog.pdf Binary files differindex c80cec01db..f0e2277664 100644 --- a/macros/latex/contrib/changelog/changelog.pdf +++ b/macros/latex/contrib/changelog/changelog.pdf diff --git a/macros/latex/contrib/changelog/changelog.sty b/macros/latex/contrib/changelog/changelog.sty index 4c95edd805..b58e33479a 100644 --- a/macros/latex/contrib/changelog/changelog.sty +++ b/macros/latex/contrib/changelog/changelog.sty @@ -1,5 +1,5 @@ \RequirePackage{expl3} -\ProvidesExplPackage{changelog}{2023/02/16}{2.5.0}{Typesetting changelogs} +\ProvidesExplPackage{changelog}{2024/09/17}{2.5.1}{Typesetting changelogs} % Description: Provides the changelog environment for typesetting changelogs % License: LPPL 1.3c % Homepage: https://github.com/9999years/latex-changelog @@ -210,24 +210,28 @@ {} } -\cs_set:Npn \changelog__short_version_define_date +% Display the current version, which may be a version number, a date, or "Unreleased". +\cs_set:Npn \changelog__display_version { - \tl_if_empty:NT \g__changelog_version_tl + \tl_if_empty:NTF \g__changelog_version_tl { \tl_if_empty:NTF \g__changelog_date_tl { - \tl_set:Nn \g__changelog_version_tl { \GetTranslation{changelog-Unreleased} } + \GetTranslation{changelog-Unreleased} \tl_set:Nn \g__changelog_date_tl { \today } } { - \tl_set_eq:NN \g__changelog_version_tl \g__changelog_date_tl + \tl_use:N \g__changelog_date_tl } } + { + \tl_use:N \g__changelog_version_tl + } } \cs_set:Npn \changelog__short_version_item { - \tl_use:N \g__changelog_version_tl + \changelog__display_version \bool_if:NT \g__changelog_yanked_bool { \ \changelogyanked @@ -247,12 +251,21 @@ \cs_set:Npn \changelog__short_version_author_date { + % This might output nothing if there's no author and the date is being used + % as a version number, so make sure to `\leavevmode` to avoid a weird + % indent at the start of the item. + \mode_leave_vertical: \tl_use:N \g__changelog_author_tl \tl_if_empty:NF \g__changelog_date_tl { - \tl_if_empty:NF \g__changelog_author_tl - { ~ } - (\tl_use:N \g__changelog_date_tl) + % If no version number is given, the date is used instead, so we don't + % want to show the date twice. + \tl_if_empty:NF \g__changelog_version_tl + { + \tl_if_empty:NF \g__changelog_author_tl + { ~ } + (\tl_use:N \g__changelog_date_tl) + } } } @@ -308,7 +321,6 @@ % environment \cs_set:Npn \changelog__short_version { - \changelog__short_version_define_date \bool_gset_true:N \g__changelog_seen_version_bool \item[\changelog__short_version_item] diff --git a/macros/latex/contrib/changelog/changelog.tex b/macros/latex/contrib/changelog/changelog.tex index f4d0706350..9c949501fc 100644 --- a/macros/latex/contrib/changelog/changelog.tex +++ b/macros/latex/contrib/changelog/changelog.tex @@ -30,14 +30,13 @@ \author{Rebecca Turner\thanks{\email{rbt@sent.as}}} \title{The \cl\ Package} -\date{2.5.0 (2023/02/16)} +\date{2.5.1 (2024/09/17)} \begin{document} \maketitle \begin{abstract} - Changelogs are important. Unfortunately, there are few facilities - for typesetting changelogs in \LaTeX. \cl\ defines a |changelog| - environment to make changelogs simple and intuitive. + Changelogs are important. \cl\ defines a |changelog| + environment to make writing changelogs declarative and easy. For rationale, read \keepachangelog. \end{abstract} @@ -346,15 +345,27 @@ an email} and I'll incorporate the translation into \cl's next release! This is this package's actual changelog --- not an example! \begin{changelog}[author=Rebecca Turner <\email{rbt@sent.as}>, section=false] +\begin{version}[v=2.5.1, date=2024-09-17] +\fixed + \item Fixed \href{https://github.com/9999years/latex-changelog/issues/13}{a + bug where a version with a date and no version number would display the + date twice}, like ``\textbf{2024-09-17} (2024-09-17)''. Now, the date will + correctly only be shown once. + + \item Fixed a bug where a version with a version number but no date or author + would be indented. +\end{version} + \begin{version}[v=2.5.0, date=2023-02-16] \added - \item Added the \cs{newchangelogsection} command to support custom - sections. + \item Added the \cs{newchangelogsection} command to support custom + sections. \item Added the |remark| and |remarks| keys to support custom remarks (like ``YANKED'') on versions. \item Added the |\changelogremark| command, which renders the ``YANKED'' remark and other custom remarks. \end{version} + \begin{version}[v=2.4.1, date=2023-02-14] \changed \item Converted the |changelog.sty| implementation to use the \ctan{expl3} @@ -362,6 +373,7 @@ This is this package's actual changelog --- not an example! environment. I believe \ctan{expl3} is the future of programming in \LaTeX, despite its verbosity. \end{version} + \begin{version}[v=2.4.0, date=2020-09-02, author={cmplstofB <\https{github.com/cmplstofB}>}] \added diff --git a/macros/latex/contrib/changelog/example.pdf b/macros/latex/contrib/changelog/example.pdf Binary files differindex 110ae72c38..d31f6729c8 100644 --- a/macros/latex/contrib/changelog/example.pdf +++ b/macros/latex/contrib/changelog/example.pdf diff --git a/macros/latex/contrib/changelog/example.tex b/macros/latex/contrib/changelog/example.tex index 9db61a2ea7..8b1557ee92 100644 --- a/macros/latex/contrib/changelog/example.tex +++ b/macros/latex/contrib/changelog/example.tex @@ -7,17 +7,28 @@ title=Example changelog] \begin{version} \critical - \item A critical new feature + \item A critical new feature. \added - \item Really cool features + \item Really cool feature. + \item A second feature. \end{version} \begin{version}[date=2019-01-23, short] - A version with only a date + A version with only a date. +\end{version} + +\begin{version}[date=2019-01-23] +\added + \item A ``full'' version with only a date. \end{version} \begin{version}[v=1.1.0, simple] - \item A version with no date + \item A version with no date. +\end{version} + +\begin{version}[v=1.1.0, author=] +\added + \item A version with no date or author. \end{version} \begin{version}[v=1.0.3, remark=Remark, simple] @@ -29,24 +40,24 @@ \end{version} \begin{version}[v=1.0.1, yanked, simple] - \item A version with a terrible bug + \item A version with a terrible bug. \end{version} \begin{version}[v=1.0.0, date=2018-10-26] \added - \item A cool feature + \item A cool feature. \changed - \item Some \textsc{api} detail + \item Some \textsc{api} detail. \deprecated - \item Something that was a bad idea in the first place + \item Something that was a bad idea in the first place. \removed - \item Something that was deprecated 3 versions ago + \item Something that was deprecated 3 versions ago. \fixed - \item A bug that would delete files instead of saving them + \item A bug that would delete files instead of saving them. \security - \item improved with addition of buffer bound checks + \item improved with addition of buffer bound checks. \misc - \item A change that doesn't fit into any other category + \item A change that doesn't fit into any other category. \end{version} \shortversion{v=0.1.0, date=2018-10-19, diff --git a/macros/latex/contrib/cs-techrep/README b/macros/latex/contrib/cs-techrep/README index bb3aefdd37..fbe8f9aff8 100644 --- a/macros/latex/contrib/cs-techrep/README +++ b/macros/latex/contrib/cs-techrep/README @@ -1,5 +1,5 @@ ----------------------------- - Version 0.2 of the cs-techrep class + Version 0.4 of the cs-techrep class Christoph P. Neumann ----------------------------- diff --git a/macros/latex/contrib/cs-techrep/cs-techrep.dtx b/macros/latex/contrib/cs-techrep/cs-techrep.dtx index 35775ca107..ccc3475664 100644 --- a/macros/latex/contrib/cs-techrep/cs-techrep.dtx +++ b/macros/latex/contrib/cs-techrep/cs-techrep.dtx @@ -1,16 +1,16 @@ %\iffalse % cs-techrep.dtx generated using makedtx version 1.2 (c) Nicola Talbot % Command line args: -% -preamble "Copyright 2023-2024 Christoph P. Neumann This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license or any later version. The latest version of this license is in https://www.latex-project.org/lppl.txt and version 1.3c or later is part of all distributions of LaTeX version 2008 or later. This work has the LPPL maintenance status maintained. The Current Maintainer of this work is Christoph P. Neumann. " -% -setambles ".*=>\nopreamble" -% -author "Christoph P. Neumann " -% -dir "src" -% -src "(_cpn_copyIntoExamplesFolder_cls.cmd|cs-techrep.cls)=>\1" % -doc "doc/cs-techrep.tex" +% -author "Christoph P. Neumann " +% -setambles ".*=>\nopreamble" % -date "2023-2024" +% -dir "src" % -macrocode ".*" +% -preamble "Copyright 2023-2024 Christoph P. Neumann This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license or any later version. The latest version of this license is in https://www.latex-project.org/lppl.txt and version 1.3c or later is part of all distributions of LaTeX version 2008 or later. This work has the LPPL maintenance status maintained. The Current Maintainer of this work is Christoph P. Neumann. " +% -src "(_cpn_copyIntoExamplesFolder_cls.cmd|cs-techrep.cls)=>\1" % cs-techrep -% Created on 2024/4/10 18:14 +% Created on 2024/9/14 21:40 %\fi %\iffalse %<*package> @@ -56,7 +56,7 @@ %\title{\textsf{cs-techrep}\\ %Technical Reports in Computer Science and Software Engineering} %\author{Christoph P.\ Neumann \texttt{$<$cyberpetaneuron@gmail.com$>$}} -%\date{Version 0.2} +%\date{Version 0.4} %\maketitle %\PrintChanges % @@ -117,14 +117,33 @@ %This package provides the documentclass \texttt{cs-techrep}. The documentclass %supports the following options: % -% %\begin{itemize} %\item |conference| Passed to IEEEtran %\item |a4paper| Passed to IEEEtran -%\item |flushend| Activate flushend package -%\item |pbalance| Activate pbalance package +%\item |subfig| Loads subfig package with custom style settings +%\item |subcaption| Loads subcaption package with custom style settings +%\item |flushend| Activate flushend package (compatible with arXiv build process) +%\item |pbalance| Activate pbalance package (incompatible with arXiv build process) %\end{itemize} % +%A Remark about two-column document balancing on the last page: +%The flushend package is recommended, because it works within the arXiv automated build process. +%However, flushend has a major incampatibility with package lineno, which is, e.\,g., transitively loaded by package mindflow. +%Thus, in case when flushend does not have any effect, check whether one of your packages loads lineno. +%Usually you are stuck with your packages and, thus, will instead be forced to switch from flushend to pbalance. +%Please be aware that pbalance works great and has high compatibility, but unfortunately it will not have any effect within the arXiv automated build process. +%In case of both, a somehow needed lineno package and an intended arXiv upload, I recommend to do without two-column balancing on the last page and just to stay away from both flushend and pbalance, in order to ensure that your paper is layouted identically in any initial publication and a later arXiv upload. +%I hope this remark proves helpful, it took me some nerve to find out. +% +%There is also another important difference between flushend and pbalance: the handling of footnotes on the last page. +%Flushend provides a decent result, but the result of pbalance is incomprehensible. +%I strongly recommend avoiding footnotes on the last page. +%If you absolutely need footnotes on the last page, consider staying away from two-column balancing on the last page. +% +%About subfigures: +%Both well-known packages subfig and subcaption can be used. +%However, they are not compatible with each other and we can either load one or the other. +%The document class provides options to load them for you with some customized style settings. % %\section{Requirements} % @@ -142,6 +161,7 @@ %\item cleveref %\item csquotes %\item diagbox +%\item doclicense %\item etoolbox %\item extdash %\item flushend @@ -164,6 +184,7 @@ %\item pdflscape %\item siunitx %\item stfloats +%\item subcaption %\item subfig %\item tcolorbox %\item times @@ -222,13 +243,25 @@ pause% \end{macrocode} \NeedsTeXFormat{LaTeX2e} % Provide the name of your document class, the date it was last updated, and a comment about what it's used for -\ProvidesClass{cs-techrep}[2024/04/10 Technical Reports in Computer Science and Software Engineering v0.2] +\ProvidesClass{cs-techrep}[2024/09/16 Technical Reports in Computer Science and Software Engineering v0.4] % Define marker counter for options (counter are global in latex): +\newcounter{cstechrep@subfigtracker} +\newcounter{cstechrep@subcaptiontracker} \newcounter{cstechrep@pbalancetracker} \newcounter{cstechrep@flushendtracker} % Declare options: + +\DeclareOption{subfig}{ + \setcounter{cstechrep@subfigtracker}{1} + \typeout{cs-techrep class: subfig option is set (use subfloat command).} +} +\DeclareOption{subcaption}{ + \setcounter{cstechrep@subcaptiontracker}{1} + \typeout{cs-techrep class: subcaption option is set (use subfigure command).} +} + \DeclareOption{onecolumn}{\OptionNotUsed} % IEEE option onecolumn will be ignored \DeclareOption{pbalance}{ @@ -268,7 +301,7 @@ pause% \end{macrocode} \DefcstechrepVar{Department} % e.g., Department of Electrical Engineering, Media and Computer Science \DefcstechrepVar{Institution} % e.g., Ostbayerische Technische Hochschule Amberg-Weiden \DefcstechrepVar{Address} % e.g., Amberg, Germany -\DefcstechrepVar{Series} % e.g., Technical Reports +\DefcstechrepVar{Type} % e.g., Technical Report \DefcstechrepVar{Year} % e.g., 2023 \DefcstechrepVar{Title} \DefcstechrepVar{Month} % e.g., 6 (for June) @@ -355,7 +388,7 @@ pause% \end{macrocode} \RequirePackage[cmyk, table]{xcolor} -\RequirePackage[nolist]{acronym} +\RequirePackage[nolist,smaller]{acronym} % Code Listings \RequirePackage{listings} @@ -456,7 +489,7 @@ pause% \end{macrocode} \RequirePackage{booktabs} % Extended enumerate, such as \begin{compactenum} -\RequirePackage{paralist} +\RequirePackage[alwaysadjust]{paralist} % Read: Is there a disadvantage to using natbib=true with biblatex? % https://tex.stackexchange.com/questions/149313/is-there-a-disadvantage-to-using-natbib-true-with-biblatex @@ -490,6 +523,7 @@ pause% \end{macrocode} autolang=other ]{biblatex} +% Due to applied option defernumbers=true: % Prevent citations in the references are being numbered as '0' in ArXiv % https://tex.stackexchange.com/questions/463556/all-the-citations-in-the-references-are-being-numbered-as-0-in-arxiv-while-upl \makeatletter @@ -636,9 +670,9 @@ pause% \end{macrocode} \RequirePackage{pdflscape} \RequirePackage{afterpage} -% Allows to hyphenate a word that contains a dash: -% https://stackoverflow.com/questions/2193307/how-do-i-get-latex-to-hyphenate-a-word-that-contains-a-dash -\RequirePackage[shortcuts]{extdash} % Use \-/ for a breakable dash that does not prevent the remainer of the word to be hyphenated +% requires, e.g., \PassOptionsToPackage{ +% type=CC,modifier=by,version=4.0}{doclicense} before \documentclass +\RequirePackage[hyperxmp=false,lang=English]{doclicense} % Improve wrapping of URLs - hint by http://tex.stackexchange.com/a/10419/9075 \makeatletter @@ -651,7 +685,9 @@ pause% \end{macrocode} \begin{minipage}{0.8\textwidth} \centering % Creative Commons / Open Access: - \href{https://creativecommons.org/licenses/by/4.0/}{\ccby{} This work is licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) License.} + %\href{https://creativecommons.org/licenses/by/4.0/}{\ccby{} This work is %licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) %License.} + % License based on doclicense package: + \href{\doclicenseURL}{\doclicenseIcon{} This work is licensed under a \doclicenseLongNameRef{} (\doclicenseNameRef{}) license.} % Citation advice: \\Please cite as: \fullcite{selfref}. \end{minipage} @@ -683,7 +719,18 @@ pause% \end{macrocode} \cstechrepAddress }} -\IEEEspecialpapernotice{\cstechrepSeries: \cstechrepNumber, \citemonth{selfref} \cstechrepYear} +\IEEEspecialpapernotice{\cstechrepType: \cstechrepNumber, \citemonth{selfref} \cstechrepYear} + +% subfigure captions with parentheses and footnotesize: +\ifnum\value{cstechrep@subfigtracker}=1 + \typeout{cs-techrep class: load subfig package (use subfloat command).} + \RequirePackage[caption=false,font=footnotesize]{subfig} +\fi +\ifnum\value{cstechrep@subcaptiontracker}=1 + \typeout{cs-techrep class: load subcaption package (use subfigure command).} + \RequirePackage{subcaption} + \captionsetup[subfigure]{labelformat=parens,font=footnotesize} +\fi % Balance/level columns at the last page / in bibliography % DISCLAIMER: No solution is a 100%/perfect one! @@ -699,6 +746,14 @@ pause% \end{macrocode} \RequirePackage{flushend} \fi +% ======================================================== +% Packages that need to be loaded last: + +% Allows to hyphenate a word that contains a dash: +% https://stackoverflow.com/questions/2193307/how-do-i-get-latex-to-hyphenate-a-word-that-contains-a-dash +\RequirePackage[shortcuts]{extdash} % Use \-/ for a breakable dash that does not prevent the remainer of the word to be hyphenated +% ======================================================== + % Finally, we'll use \endinput to indicate that LaTeX can stop reading this file. LaTeX will ignore anything after this line. \endinput % \end{macrocode} diff --git a/macros/latex/contrib/cs-techrep/cs-techrep.ins b/macros/latex/contrib/cs-techrep/cs-techrep.ins index 0fc5868464..51ed401600 100644 --- a/macros/latex/contrib/cs-techrep/cs-techrep.ins +++ b/macros/latex/contrib/cs-techrep/cs-techrep.ins @@ -1,4 +1,4 @@ -% cs-techrep.ins generated using makedtx version 1.2 2024/4/10 18:14 +% cs-techrep.ins generated using makedtx version 1.2 2024/9/14 21:40 \input docstrip \preamble diff --git a/macros/latex/contrib/cs-techrep/cs-techrep.pdf b/macros/latex/contrib/cs-techrep/cs-techrep.pdf Binary files differindex 766e80d57b..6374436b6c 100644 --- a/macros/latex/contrib/cs-techrep/cs-techrep.pdf +++ b/macros/latex/contrib/cs-techrep/cs-techrep.pdf diff --git a/macros/latex/contrib/cs-techrep/template/cpn_all_all.bib b/macros/latex/contrib/cs-techrep/template/cpn_all_all.bib index cc7abaec4a..ba79c01832 100644 --- a/macros/latex/contrib/cs-techrep/template/cpn_all_all.bib +++ b/macros/latex/contrib/cs-techrep/template/cpn_all_all.bib @@ -1,3 +1,4 @@ + @Thesis{neumann2004sa, author = {Neumann, Christoph P.}, title = {{Conceptional Design and Realization of a `Component Test Stand' for Measurements on Enterprise JavaBeans}}, @@ -7,6 +8,7 @@ type = {Studienarbeit}, _url = {https://www.cyberlytics.eu/theses/all/Studienarbeit_ChristophPeterNeumann_revised/} } + @Thesis{neumann2005da, author = {Neumann, Christoph P.}, title = {{Design of an Open Framework for Optimizing the Distribution of Hardware and Software Components in Control Networks for Vehicles}}, @@ -16,6 +18,7 @@ type = {Diplomarbeit}, _url = {https://www.cyberlytics.eu/theses/all/Diplomarbeit_ChristophPeterNeumann_original/} } + @INPROCEEDINGS{MeNe04testejb, author = {Marcus Meyerh{\"o}fer and Christoph Neumann}, title = {{TestEJB} -- A Measurement Framework for {EJBs}}, @@ -35,21 +38,20 @@ @INPROCEEDINGS{NHSL09oxdbs, author = {Christoph P. Neumann and Stefan Hanisch and Bernhard Schiemann and - Richard Lenz}, + Richard Lenz}, title = {{OXDBS -- Erweiterung einer nativen XML\-/Datenbank um die Validierung - und Konsistenzpr{\"u}fung gegen eine OWL\-/Ontologie}}, + und Konsistenzpr{\"u}fung gegen eine OWL\-/Ontologie}}, booktitle = {Tagungsband der 54.\,GMDS\-/Jahrestagung}, year = {2009}, _pages = {271:1--271:2}, address = {Essen, DE}, month = sep, organization = {{Deutsche Gesellschaft f{\"u}r Medizinische Informatik, Biometrie - und Epidemiologie} (GMDS)}, + und Epidemiologie} (GMDS)}, doi = {10.3205/09GMDS271}, _url = {http://www.egms.de/en/meetings/gmds2009/09gmds271.shtml}, } - @INPROCEEDINGS{NeWL09xdsrig, author = {Christoph P. Neumann and Florian Wagner and Richard Lenz}, title = {{XdsRig -- Eine Open\-/Source IHE XDS Testumgebung}}, @@ -59,15 +61,14 @@ address = {Essen, DE}, month = sep, organization = {{Deutsche Gesellschaft f{\"u}r Medizinische Informatik, Biometrie - und Epidemiologie} (GMDS)}, + und Epidemiologie} (GMDS)}, doi = {10.3205/09GMDS276}, _url = {http://www.egms.de/en/meetings/gmds2009/09gmds276.shtml}, } - @INPROCEEDINGS{NRDL09deus, - author = {Christoph P. Neumann and Florian Rampp and Michael Daum and Richard Lenz}, - title = {{A Mediated Publish\-/Subscribe System for Inter\-/Institutional Process Support in Healthcare}}, + author = {Christoph P. Neumann and Florian Rampp and Michael Daum and Richard Lenz}, + title = {{A Mediated Publish\-/Subscribe System for Inter\-/Institutional Process Support in Healthcare}}, booktitle = {Proc of the 3rd ACM Int'l Conf on Distributed Event\-/Based Systems (DEBS 2009)}, year = {2009}, _chapter = {14}, @@ -85,8 +86,8 @@ author = {Christoph P. Neumann and Richard Lenz}, title = {{alpha\-/Flow: A Document\-/based Approach to Inter\-/Institutional Process Support in Healthcare}}, booktitle = {Proc of the 3rd Int'l Workshop on Process\-/oriented Information Systems - in Healthcare (ProHealth'09) in conjunction with the 7th Int'l Conf - on Business Process Management (BPM'09)}, + in Healthcare (ProHealth'09) in conjunction with the 7th Int'l Conf + on Business Process Management (BPM'09)}, year = {2009}, pages = {569--580}, address = {Ulm, DE}, @@ -100,10 +101,10 @@ @INPROCEEDINGS{NeLe09dmps, author = {Christoph P. Neumann and Richard Lenz}, title = {{A Light\-/Weight System Extension Supporting Document\-/based Processes - in Healthcare}}, + in Healthcare}}, booktitle = {Proc of the 3rd Int'l Workshop on Process\-/oriented Information Systems - in Healthcare (ProHealth'09) in conjunction with the 7th Int'l Conf - on Business Process Management (BPM'09)}, + in Healthcare (ProHealth'09) in conjunction with the 7th Int'l Conf + on Business Process Management (BPM'09)}, year = {2009}, pages = {557--568}, address = {Ulm, DE}, @@ -140,12 +141,13 @@ doi = {10.1145/1866480.1866502}, _isbn = {978\-/1\-/60558\-/900\-/8}, } + @INPROCEEDINGS{NSWL11alphaadaptive, author = {Christoph P. Neumann and Peter K. Schwab and Andreas M. Wahl and Richard Lenz}, title = {{alpha\-/Adaptive: Evolutionary Workflow Metadata in Distributed Document\-/Oriented Process Management}}, booktitle = {Proc of the 4th Int'l Workshop on Process\-/oriented Information Systems - in Healthcare (ProHealth'11) in conjunction with the 9th Int'l Conf - on Business Process Management (BPM'11)}, + in Healthcare (ProHealth'11) in conjunction with the 9th Int'l Conf + on Business Process Management (BPM'11)}, year = {2011}, pages = {225--236}, address = {Clermont\-/Ferrand, FR}, @@ -209,26 +211,26 @@ } @MastersThesis{Neumann2012dissPreprint_OldBibTeX, - author = {Christoph P. Neumann}, - title = {{Distributed Document\-/Oriented Process Management in Healthcare}}, - school = {Friedrich\-/Alexander\-/Universit{\"a}t Erlangen\-/N{\"u}rnberg}, - type = {Dissertation}, - _type = {`Dissertation' (PhD thesis)}, - _type = {PhD thesis (`Dissertation' in Germany)}, - month = nov, - year = 2012, - url = {https://nbn-resolving.org/urn:nbn:de:bvb:29-opus-39070} + author = {Christoph P. Neumann}, + title = {{Distributed Document\-/Oriented Process Management in Healthcare}}, + school = {Friedrich\-/Alexander\-/Universit{\"a}t Erlangen\-/N{\"u}rnberg}, + type = {Dissertation}, + _type = {`Dissertation' (PhD thesis)}, + _type = {PhD thesis (`Dissertation' in Germany)}, + month = nov, + year = 2012, + url = {https://nbn-resolving.org/urn:nbn:de:bvb:29-opus-39070} } @phdthesis{Neumann2012dissPreprint, - author = {Christoph P. Neumann}, - title = {{Distributed Document\-/Oriented Process Management in Healthcare}}, - school = {Friedrich\-/Alexander\-/Universit{\"a}t Erlangen\-/N{\"u}rnberg}, - month = nov, - year = 2012, - address = {Erlangen}, - doi = {10.13140/RG.2.2.14719.79521}, - url = {https://nbn-resolving.org/urn:nbn:de:bvb:29-opus-39070} + author = {Christoph P. Neumann}, + title = {{Distributed Document\-/Oriented Process Management in Healthcare}}, + school = {Friedrich\-/Alexander\-/Universit{\"a}t Erlangen\-/N{\"u}rnberg}, + month = nov, + year = 2012, + address = {Erlangen}, + doi = {10.13140/RG.2.2.14719.79521}, + url = {https://nbn-resolving.org/urn:nbn:de:bvb:29-opus-39070} } @INPROCEEDINGS{NeLe13adhocCoop, @@ -244,7 +246,9 @@ _isbn = {978\-/3\-/642\-/36437\-/2}, doi = {10.1007/978-3-642-36438-9_8}, _url = {https://doi.org/10.1007/978-3-642-36438-9_8}, -}@incollection{Neumann2012lni, +} + +@incollection{Neumann2012lni, author={Christoph P. Neumann}, editor={Abraham Bernstein and Wolfgang Effelsberg and Steffen H{\"o}lldobler and Hans{-}Peter Lenhof and Klaus{-}Peter L{\"o}hr and Paul Molitor and Gustaf Neumann and R{\"u}diger Reischuk and Nicole Schweikardt and Myra Spiliopoulou and Harald St{\"o}rrle and Sabine S{\"u}sstrunk}, title={Verteiltes Dokumenten\-/orientiertes Prozessmanagement im Gesundheitswesen}, @@ -256,18 +260,19 @@ year={2012}, url={https://dl.gi.de/20.500.12116/33740} } + @BOOK{Neumann2013dissBook, - author = {Christoph P. Neumann}, - title = {{Distributed Case Handling}}, - year = 2013, - publisher = {Verlag Dr.~Hut}, - address = {M{\"u}nchen}, - isbn = {9783843909198}, - _urn = {urn:nbn:de:bvb:29\-/opus\-/39070}, - _url = {https://d-nb.info/1033041637}, - _note = {\url{http://www.opus.ub.uni-erlangen.de/opus/volltexte/2012/3907/}(preprint version)}, - _note = {\url{https://d-nb.info/1033041637}(DNB)}, - _note = {\url{https://www.dr.hut-verlag.de/978-3-8439-0919-8.html}(URL)} + author = {Christoph P. Neumann}, + title = {{Distributed Case Handling}}, + year = 2013, + publisher = {Verlag Dr.~Hut}, + address = {M{\"u}nchen}, + isbn = {9783843909198}, + _urn = {urn:nbn:de:bvb:29\-/opus\-/39070}, + _url = {https://d-nb.info/1033041637}, + _note = {\url{http://www.opus.ub.uni-erlangen.de/opus/volltexte/2012/3907/}(preprint version)}, + _note = {\url{https://d-nb.info/1033041637}(DNB)}, + _note = {\url{https://www.dr.hut-verlag.de/978-3-8439-0919-8.html}(URL)} } @INPROCEEDINGS{IND+09lzatav, @@ -363,11 +368,10 @@ month=apr, year={2024}, doi = {10.48550/arXiv.2404.02637}, - _url = {https://www.thinkmind.org/index.php?view=article&articleid=cloud_computing_2024_X_YY_ZZZZZ}, - _url = {https://doi.org/10.48550/arXiv.2404.02637}, + _url = {https://www.thinkmind.org/index.php?view=article&articleid=cloud_computing_2024_2_10_28007}, + _url2 = {https://doi.org/10.48550/arXiv.2404.02637}, _issn = {2308\-/4294}, - _pages = {AA--OO}, - note = {accepted for publication} + pages = {19--24} } @INPROCEEDINGS{ToNe11alphaprops, @@ -425,6 +429,28 @@ _url2 = {https://www.oth-aw.de/files/oth-aw/Aktuelles/Veroeffentlichungen/Forschungsbericht/OTH_Forschungsbericht_2024.pdf}, _url3 = {https://www.researchgate.net/profile/Christoph-Neumann-8/publication/379109359_Analyse_von_Methoden_zur_Sicherung_der_Vertraulichkeit_in_Neuronalen_Netzen/links/65faff43a4857c7962654c5c/Analyse-von-Methoden-zur-Sicherung-der-Vertraulichkeit-in-Neuronalen-Netzen.pdf} } + +@MISC{StNe24kosmosis, + title={The Kosmosis Use-Case of Crypto Rug Pull Detection and Prevention}, + author={Philipp Stangl and Christoph P. Neumann}, + year={2024}, + eprint={2405.19762}, + archivePrefix={arXiv}, + primaryClass={cs.CR} +} + +@TECHREPORT{StNe24kosmosis-TR, + author = {Philipp Stangl and Christoph P. Neumann}, + title = {{The Kosmosis Use-Case of Crypto Rug Pull Detection and Prevention}}, + institution = {Ostbayerische Technische Hochschule Amberg\-/Weiden, CyberLytics\-/Lab at the Department of Electrical Engineering, Media and Computer Science}, + series = {Technischer Bericht}, + number = {CL-2024-01}, + year = 2024, + month = 2, + doi = {10.48550/arXiv.2405.19762}, + _url = {https://doi.org/10.48550/arXiv.2405.19762}, +} + @TECHREPORT{ModA-TR-2021SS-WAE-TeamWeiss-CovidDashboard, author = {Tobias Bauer and Albert Hahn and Lukas Kleinlein and Nicolas Proske and Leonard W{\"o}llmer and Andrei Trukhin and Christoph P. Neumann}, title = {{Covidash: Eine MEAN\-/Variation-basierte Webanwendung für Inzidenz\-/Zahlen und Impffortschritt in Deutschland}}, @@ -543,7 +569,6 @@ _url = {https://dx.doi.org/10.13140/RG.2.2.33933.31209}, } - @TECHREPORT{ModA-TR-2023SS-BDCC-TeamRot-CompVisPipeline, author = {André Kestler and Antonio Vidos and Marcus Haberl and Tobias Dobmeier and Tobias Lettner and Tobias Weiß and Christoph P. Neumann}, title = {{Computer Vision Pipeline: Eine React- und Flask\-/basierte Webanwendung zur No\-/Code\-/Bildverarbeitung mit Cloud\-/Deployment}}, @@ -622,4 +647,107 @@ doi = {10.13140/RG.2.2.22177.79209}, _url = {https://dx.doi.org/10.13140/RG.2.2.22177.79209}, } +@TECHREPORT{ModA-TR-2024SS-CCT-TeamGruen-CloudDice, + author = {Lukas Rupp and Franziska Rubenbauer and Christoph P. Neumann}, + title = {{CloudDice: Ein React\-/basiertes Kniffel-Würfelspiel}}, + institution = {Ostbayerische Technische Hochschule Amberg\-/Weiden, CyberLytics\-/Lab an der Fakult{\"a}t Elektrotechnik, Medien und Informatik}, + series = {Technische Berichte}, + number = {CL-2024-14}, + year = 2024, + month = 7, + doi = {10.13140/RG.2.2.11229.83686}, + _url = {https://dx.doi.org/10.13140/RG.2.2.11229.83686}, +} + +@TECHREPORT{ModA-TR-2024SS-BCN-TeamCyan-SkillIssue, + author = {Fabian Heindl and Paul Brand and Daniel Reichert and Christoph P. Neumann}, + title = {{SkillIssue: A MERN\-/based Low\-/Latency Multi\-/User Game for Displaying True Skill With Your Friends}}, + institution = {Ostbayerische Technische Hochschule Amberg\-/Weiden, CyberLytics\-/Lab an der Fakult{\"a}t Elektrotechnik, Medien und Informatik}, + type = {Technical Reports}, + number = {CL-2024-12}, + year = 2024, + month = 7, + doi = {10.13140/RG.2.2.32201.35686}, + _url = {https://dx.doi.org/10.13140/RG.2.2.32201.35686}, +} +@TECHREPORT{ModA-TR-2024SS-BCN-TeamGelb-GoalGuru, + author = {Bernhard Gailer and Timo Gräf and Maria Lyoteva and Tsvetan Stanchev and Apporva Bhoir and Christoph P. Neumann}, + title = {{GoalGuru: A React- and FastAPI\-/based Cloud Application for Predicting Soccer Games Outcome}}, + institution = {Ostbayerische Technische Hochschule Amberg\-/Weiden, CyberLytics\-/Lab an der Fakult{\"a}t Elektrotechnik, Medien und Informatik}, + type = {Technical Reports}, + number = {CL-2024-11}, + year = 2024, + month = 7, + doi = {10.13140/RG.2.2.18779.58407}, + _url = {https://dx.doi.org/10.13140/RG.2.2.18779.58407}, +} +@TECHREPORT{ModA-TR-2024SS-BCN-TeamWeiss-InfluenzaConnect, + author = {Sebastian Weidner and Jonas Hermann and Nils Bayerl and Dominik Schwagerl and \ Timon Spichtinger and Christoph P. Neumann}, + title = {{InfluenzaConnect: Eine React- und Flask\-/basierte Webanwendung für Influencer\-/Marketing}}, + institution = {Ostbayerische Technische Hochschule Amberg\-/Weiden, CyberLytics\-/Lab an der Fakult{\"a}t Elektrotechnik, Medien und Informatik}, + type = {Technische Berichte}, + number = {CL-2024-10}, + year = 2024, + month = 7, + doi = {10.13140/RG.2.2.25490.47041}, + _url = {https://dx.doi.org/10.13140/RG.2.2.25490.47041}, +} + +@TECHREPORT{ModA-TR-2024SS-BCN-TeamGruen-NanoVend, + author = {Lukas Hirsch and Johannes Küffner and Denis Tomazi and Christoph P. Neumann}, + title = {{NanoVend: Ein Cloud\-/native E-Commerce\-/Backend als Baukasten für mittelständische Unternehmen}}, + institution = {Ostbayerische Technische Hochschule Amberg\-/Weiden, CyberLytics\-/Lab an der Fakult{\"a}t Elektrotechnik, Medien und Informatik}, + type = {Technische Berichte}, + number = {CL-2024-08}, + year = 2024, + month = 7, + doi = {10.13140/RG.2.2.12068.69761}, + _url = {https://dx.doi.org/10.13140/RG.2.2.12068.69761}, +} +@TECHREPORT{ModA-TR-2024SS-BCN-TeamRot-StockSentinel, + author = {Andreas Hecht and Linus Heise and Oliver Kneidl and Eva-Maria Maurer and Christoph P. Neumann}, + title = {{StockSentinel: AI\-/Powered Web Tool for Analyzing the Markets Perception of Stocks}}, + institution = {Ostbayerische Technische Hochschule Amberg\-/Weiden, CyberLytics\-/Lab an der Fakult{\"a}t Elektrotechnik, Medien und Informatik}, + type = {Technical Reports}, + number = {CL-2024-07}, + year = 2024, + month = 7, + doi = {10.13140/RG.2.2.20457.30564}, + _url = {https://dx.doi.org/10.13140/RG.2.2.20457.30564}, +} +@TECHREPORT{ModA-TR-2024SS-WAE-TeamCyan-Connect4IfYouCan, + author = {Amos Asmerom and Daniel Reichert and Fabian Heindl and Christoph P. Neumann}, + title = {{Connect4IfYouCan: A MERN\-/based Web Game for Competitive Two Player Matches}}, + institution = {Ostbayerische Technische Hochschule Amberg\-/Weiden, CyberLytics\-/Lab an der Fakult{\"a}t Elektrotechnik, Medien und Informatik}, + type = {Technical Reports}, + number = {CL-2024-06}, + year = 2024, + month = 7, + doi = {10.13140/RG.2.2.27168.19200}, + _url = {https://dx.doi.org/10.13140/RG.2.2.27168.19200}, +} + +@TECHREPORT{ModA-TR-2024SS-WAE-TeamWeiss-Geodingens, + author = {Viktor Hense and Johannes Lindner and Lukas Mrosek and Christoph P. Neumann}, + title = {{Geodingens: A Web Application for Intuitive and User\-/friendly Work with Geopandas}}, + institution = {Ostbayerische Technische Hochschule Amberg\-/Weiden, CyberLytics\-/Lab an der Fakult{\"a}t Elektrotechnik, Medien und Informatik}, + type = {Technical Reports}, + number = {CL-2024-04}, + year = 2024, + month = 7, + doi = {10.13140/RG.2.2.13746.41929}, + _url = {https://dx.doi.org/10.13140/RG.2.2.13746.41929}, +} + +@TECHREPORT{ModA-TR-2024SS-WAE-TeamGruen-MunchMunch, + author = {Juliana Kühn and Nikolett Rácz and Raffael Friedl and Maximilian Lippmann and Christoph P. Neumann}, + title = {{MunchMunch: Eine MERN\-/basierte kulinarische Web-Anwendung für verbessertes User Engagement beim Entdecken neuer Gerichte und Rezepte}}, + institution = {Ostbayerische Technische Hochschule Amberg\-/Weiden, CyberLytics\-/Lab an der Fakult{\"a}t Elektrotechnik, Medien und Informatik}, + type = {Technische Berichte}, + number = {CL-2024-02}, + year = 2024, + month = 7, + doi = {10.13140/RG.2.2.23812.74883}, + _url = {https://dx.doi.org/10.13140/RG.2.2.23812.74883}, +} diff --git a/macros/latex/contrib/cs-techrep/template/cpn_supervised_all.bib b/macros/latex/contrib/cs-techrep/template/cpn_supervised_all.bib index d4341f790c..910906ac9a 100644 --- a/macros/latex/contrib/cs-techrep/template/cpn_supervised_all.bib +++ b/macros/latex/contrib/cs-techrep/template/cpn_supervised_all.bib @@ -1,3 +1,4 @@ + @Thesis{kampf2012bt, author = {Kampf, Marvin}, title = {{alpha\-/CDM: Konzeption und Implementierung eines Modells zur Inhaltsabh{\"a}ngigkeit als Baustein einer Prozessunterst{\"u}tzung auf Basis von aktiven Dokumenten}}, diff --git a/macros/latex/contrib/cs-techrep/template/cs-techrep-example-neumann.pdf b/macros/latex/contrib/cs-techrep/template/cs-techrep-example-neumann.pdf Binary files differindex ca478d3d61..c0c516b25b 100644 --- a/macros/latex/contrib/cs-techrep/template/cs-techrep-example-neumann.pdf +++ b/macros/latex/contrib/cs-techrep/template/cs-techrep-example-neumann.pdf diff --git a/macros/latex/contrib/cs-techrep/template/cs-techrep-example-neumann.tex b/macros/latex/contrib/cs-techrep/template/cs-techrep-example-neumann.tex index 1ae583aed0..5dc34ceb3f 100644 --- a/macros/latex/contrib/cs-techrep/template/cs-techrep-example-neumann.tex +++ b/macros/latex/contrib/cs-techrep/template/cs-techrep-example-neumann.tex @@ -1,7 +1,8 @@ +\PassOptionsToPackage{type=CC,modifier=by,version=4.0}{doclicense} \documentclass[conference,a4paper,flushend]{cs-techrep} \pdfoutput=1 % pdflatex hint for arxiv.org (within first 5 lines) -% Class iaria.cls loads biblatex / biber with predefined options +% Class cs-techrep.cls loads biblatex / biber with predefined options \addbibresource{embedded.bib} % its content is declared below, embedded within this tex-file \addbibresource{webdev_commons.bib} % includes REST, React, Angular, Vue, Svelte, Docker, AWS-*, Socket.IO, and many more! \addbibresource{cpn_all_all.bib} % includes all previous CyberLytics@OTH-AW technical reports @@ -17,7 +18,7 @@ %\cstechrepAuthorListBib{Vorname1 Nachname1 and Vorname2 Nachname2 and Vorname3 Nachname3 and Vorname4 Nachname4 and Vorname5 Nachname5 and Vorname6 Nachname6 and Christoph P. Neumann} % Capitalization: https://capitalizemytitle.com/style/Chicago/ -\cstechrepTitleTex{The cs-techrep Example of a Technical Report in Computer Science and Software Engineering} +\cstechrepTitleTex{The cs-techrep Paper Example of a Technical Report in Computer Science or Software Engineering} % IF you need manual linebreaks in the titel, then clone the title without linebreaks for BibTeX: \cstechrepTitleBib{{\cstechrepTitleTex}} %\cstechrepTitleBib{The cs-techrep \LaTeX{} Class Example of a Software Engineering Technical Report} @@ -27,11 +28,11 @@ \cstechrepInstitution{Ostbayerische Technische Hochschule Amberg\-/Weiden} \cstechrepAddress{Amberg, Germany} %\cstechrepAddress{Amberg, Deutschland} % DE -\cstechrepSeries{Technical Reports} -%\cstechrepSeries{Technische Berichte} % DE -\cstechrepYear{2024} -\cstechrepMonth{3} -\cstechrepNumber{CL-\cstechrepYear{}-42} +\cstechrepType{Technical Report} +%\cstechrepType{Technischer Bericht} % DE +\cstechrepYear{2024} % CTAN +\cstechrepMonth{9} % CTAN +\cstechrepNumber{CL-TR-\cstechrepYear{}-99} \cstechrepLang{english} % en-US %\cstechrepLang{ngerman} % DE @@ -47,7 +48,7 @@ author = {|cstechrepAuthorListBib}, title = {\cstechrepTitleBib}, institution = {\cstechrepInstitution, \cstechrepDepartment}, - series = {\cstechrepSeries}, + type = {\cstechrepType}, number = {\cstechrepNumber}, year = {|cstechrepYear}, month = {|cstechrepMonth}, @@ -123,7 +124,7 @@ \maketitle \begin{abstract} -\lipsum[1][3-10] +\lipsum[11]%[3-10] \{\,\faWarning{}The abstract does neither mention a teaching module nor a team/project, it is a summary of the content of the technical report, thus, the objectives and architecture.\} \end{abstract} @@ -146,7 +147,7 @@ The pipe symbol \textquote{\textbar{}} in the headings represents alternatives. The problem statement needs to be written from perspective of a subject-matter expert (\textquote{Fachkonzept}). Like an elevator pitch / mission statement \faWarning{}. NOT from a technical perspective. \section{Optional: Related Work \textbar{} State of the Art \textbar{} Methods \textbar{} Data Acquisition} -\lipsum[2] +\lipsum[12] \section{Architectural Goals} % \textbar{} \textquote{Architekturziele}} Provides @@ -169,13 +170,13 @@ In discussions concerning multi-tier architecture, the term \textquote{layer} is \subsection{Presentation Tier \textbar{} Frontend} -\lipsum[3] +\lipsum[13] \subsection{Application Tier \textbar{} Backend \textbar{} \textquote{Anwendungskern}} -\lipsum[4] +\lipsum[14] \subsection{Data Tier \textbar{} Persistence} -\lipsum[5] +\lipsum[15] \subsection{Optional: Infrastructure and Deployment \textbar{} Distribution Perspective \textbar{} \textquote{Verteilungssicht}} Provides (1) information about configuration, exact software versions, SBOM, DevOps, Cloud, AWS, and others. @@ -184,51 +185,54 @@ Could include (3) a software bill of materials (SBOM), at least for the major li \section{Discussion \textbar{} Evaluation \textbar{} \\ Lessons Learned \textbar{} Impediments} -\lipsum[6] +\lipsum[16] \section{Conclusion and Future Work \textbar{} \\ \textquote{Fazit und Ausblick}} -\lipsum[7] +\lipsum[17] - -%%% Advisor -\nocite{StNe23foodfresh} - -%%% First-Author +%%% CPN Peer-Rev'd +\nocite{LeNe24vocattllm} % Co +\nocite{PANP23seccloudfogai} % Co +\nocite{StNe23foodfresh} % Advisor \nocite{NeLe13adhocCoop} \nocite{Neumann2012lni} \nocite{NeLe12alphaFlow} \nocite{NeHL12hydra} \nocite{NeWL12offsync} +\nocite{WaNe12alphaoffsync} % Co \nocite{NSWL11alphaadaptive} +\nocite{ToNe11alphaprops} % Co +\nocite{JBN+10fcmdb} % Co +\nocite{FDI+10esmmog} % Co \nocite{NeFL10oxdbs} \nocite{NeLe10alphaUC} +\nocite{ILN+09semrttx} % Co +\nocite{NHSL09oxdbs} % DE \nocite{NeLe09alphaflow} \nocite{NeLe09dmps} -\nocite{NHSL09oxdbs} % DE \nocite{NeWL09xdsrig} % DE \nocite{NRDL09deus} +\nocite{IND+09lzatav} % Co (DE) +\nocite{MeNe04testejb} % Pseudo-Co -%%% Co-Authorship -\nocite{LeNe24vocattllm} -\nocite{PANP23seccloudfogai} -\nocite{WaNe12alphaoffsync} -\nocite{ToNe11alphaprops} -\nocite{FDI+10esmmog} -\nocite{JBN+10fcmdb} -\nocite{ILN+09semrttx} -\nocite{IND+09lzatav} % DE -\nocite{MeNe04testejb} - -%%% Monographic Work +%%% CPN Monographic Work \nocite{Neumann2013dissBook} \nocite{Neumann2012dissPreprint} \nocite{neumann2005da} \nocite{neumann2004sa} %%% TechRep / Non-Peer-Reviewed - +\nocite{ModA-TR-2024SS-CCT-TeamGruen-CloudDice} +\nocite{ModA-TR-2024SS-BCN-TeamCyan-SkillIssue} +\nocite{ModA-TR-2024SS-BCN-TeamGelb-GoalGuru} +\nocite{ModA-TR-2024SS-BCN-TeamWeiss-InfluenzaConnect} +\nocite{ModA-TR-2024SS-BCN-TeamGruen-NanoVend} +\nocite{ModA-TR-2024SS-BCN-TeamRot-StockSentinel} +\nocite{ModA-TR-2024SS-WAE-TeamCyan-Connect4IfYouCan} +\nocite{ModA-TR-2024SS-WAE-TeamWeiss-Geodingens} +\nocite{ModA-TR-2024SS-WAE-TeamGruen-MunchMunch} \nocite{SaNe24othfb} - +\nocite{StNe24kosmosis-TR} \nocite{ModA-TR-2023SS-WAE-TeamWeiss-Neunerln} \nocite{ModA-TR-2023SS-BDCC-TeamRot-CompVisPipeline} \nocite{ModA-TR-2023SS-BDCC-TeamBlau-NauticalNonsense} @@ -246,7 +250,6 @@ Could include (3) a software bill of materials (SBOM), at least for the major li \nocite{ModA-TR-2021SS-WAE-TeamWeiss-CovidDashboard} \nocite{ModA-TR-2021SS-WAE-TeamRot-FireForceDefense} \nocite{ModA-TR-2021SS-WAE-TeamGruen-MedPlanner} - \nocite{NeRL12deus} \nocite{LNR+11egr} diff --git a/macros/latex/contrib/cs-techrep/template/selfref.bib b/macros/latex/contrib/cs-techrep/template/selfref.bib index f498920efc..b6e15b23a7 100644 --- a/macros/latex/contrib/cs-techrep/template/selfref.bib +++ b/macros/latex/contrib/cs-techrep/template/selfref.bib @@ -2,9 +2,9 @@ author = {Christoph P. Neumann}, title = {\cstechrepTitleBib}, institution = {\cstechrepInstitution, \cstechrepDepartment}, - series = {\cstechrepSeries}, + type = {\cstechrepType}, number = {\cstechrepNumber}, year = {2024}, - month = {3}, + month = {9}, langid = {english}, } diff --git a/macros/latex/contrib/cs-techrep/template/webdev_commons.bib b/macros/latex/contrib/cs-techrep/template/webdev_commons.bib index 159bef9d0e..602a25edb6 100644 --- a/macros/latex/contrib/cs-techrep/template/webdev_commons.bib +++ b/macros/latex/contrib/cs-techrep/template/webdev_commons.bib @@ -1,572 +1,1234 @@ - -@Online{sqlite, - author = {Richard Hipp}, +@online{angular, + title = {{Angular}}, + author = {Google}, + url = {https://angular.io/}, + note = {[Online]} +} +@online{asp, + title = {{ASP.NET}}, + author = {Microsoft}, + url = {https://dotnet.microsoft.com/apps/aspnet}, note = {[Online]}, - title = {{SQLite}: {F}eatures}, - url = {https://sqlite.org/features.html} + addendum = {(aufgerufen: 22.06.2024)}, + ids = {asp_net} +} +@online{authjs, + title = {{Auth.js}}, + author = {Balázs Orbán}, + url = {https://authjs.dev/}, + note = {[Online]} +} +@online{aws, + title = {{Amazon Web Services}}, + author = {Amazon}, + url = {https://aws.amazon.com/}, + note = {[Online]} +} +@online{aws-apigateway, + title = {{AWS API Gateway}}, + author = {Amazon}, + url = {https://aws.amazon.com/api-gateway/}, + note = {[Online]} +} +@online{aws-apprunner, + title = {{AWS AppRunner}}, + author = {Amazon}, + url = {https://aws.amazon.com/apprunner/}, + note = {[Online]} +} +@online{aws-cli, + title = {{AWS CLI}}, + author = {Amazon}, + url = {https://aws.amazon.com/cli/}, + note = {[Online]} +} +@online{aws-codebuild, + title = {{AWS CodeBuild}}, + author = {Amazon}, + url = {https://aws.amazon.com/de/codebuild/}, + note = {[Online]} +} +@online{aws-codecommit, + title = {{AWS CodeCommit}}, + author = {Amazon}, + url = {https://aws.amazon.com/de/codecommit/}, + note = {[Online]} +} +@online{aws-codepipeline, + title = {{AWS CodePipeline}}, + author = {Amazon}, + url = {https://aws.amazon.com/de/codepipeline/}, + note = {[Online]} +} +@online{aws-cognito, + title = {{{AWS Cognito}: Identity Platform}}, + author = {Amazon}, + url = {https://aws.amazon.com/cognito/}, + note = {[Online]} +} +@online{aws-ec2, + title = {{AWS EC2}}, + author = {Amazon}, + url = {https://aws.amazon.com/ec2/}, + note = {[Online]} +} +@online{aws-ecr, + title = {{AWS ECR}}, + author = {Amazon}, + url = {https://aws.amazon.com/ecr/}, + note = {[Online]} +} +@online{aws-elasticbeanstalk, + title = {{AWS Elastic Beanstalk}}, + author = {Amazon}, + url = {https://aws.amazon.com/elasticbeanstalk/}, + note = {[Online]} +} +@online{aws-iam, + title = {{AWS IAM}}, + author = {Amazon}, + url = {https://aws.amazon.com/iam/}, + note = {[Online]} +} +@online{aws-lambda, + title = {{AWS Lambda}}, + author = {Amazon}, + url = {https://aws.amazon.com/lambda/}, + note = {[Online]} +} +@online{aws-s3, + title = {{Amazon S3}}, + author = {Amazon}, + url = {https://aws.amazon.com/s3/}, + note = {[Online]} +} +@online{aws-sam, + title = {{AWS SAM}}, + author = {Amazon}, + url = {https://aws.amazon.com/serverless/sam/}, + note = {[Online]} +} +@online{aws-sdk-js, + title = {{{AWS SDK} for {JavaScript}}}, + author = {Amazon}, + url = {https://www.npmjs.com/package/aws-sdk}, + note = {[Online]} } - -@Online{django, +@online{aws-toolkit-intelij, + title = {{{AWS Toolkit} for {IntelliJ IDEA}}}, + author = {Amazon}, + url = {https://aws.amazon.com/intellij/}, + note = {[Online]} +} +@online{axios, + title = {{Axios}}, + author = {Matt Zabriskie}, + url = {https://axios-http.com/}, + note = {[Online]} +} +@online{bootstrap, + title = {{Bootstrap: Build fast, responsive sites}}, + author = {Mark Otto und Jacob Thornton}, + url = {https://getbootstrap.com/}, + note = {[Online]} +} +@online{boto3, + title = {{{Boto3}: {AWS SDK} for Python}}, + author = {Amazon}, + url = {https://boto3.amazonaws.com/v1/documentation/api/latest/index.html}, + note = {[Online]} +} +@online{catapi, + title = {{The Cat {API}}}, + author = {Aden Forshaw}, + url = {https://thecatapi.com/}, + note = {[Online]} +} +@online{chai, + title = {{Chai Assertion Library}}, + author = {Chai}, + url = {https://www.chaijs.com/}, + note = {[Online]} +} +@online{chess, + title = {{Chess}}, + author = {chess.com}, + url = {https://www.chess.com/}, + note = {[Online]} +} +@online{csharp, + title = {{{C\#} Programming Language}}, + author = {Microsoft}, + url = {https://learn.microsoft.com/dotnet/csharp/}, + note = {[Online]} +} +@online{cypress, + title = {{Cypress}}, + author = {Brian Mann}, + url = {https://www.cypress.io/}, + note = {[Online]} +} +@online{d3js, + title = {{D3.js}}, + author = {Observable}, + url = {https://d3js.org}, + note = {[Online]} +} +@online{django, + title = {{Django}}, author = {Adrian Holovaty and Simon Willison}, - note = {[Online]}, - title = {Django}, url = {https://www.djangoproject.com/}, + note = {[Online]} } - -@Online{fastapi, - author = {Sebastián Ramírez}, - note = {[Online]}, - title = {FastAPI}, - url = {https://fastapi.tiangolo.com/}, -} - -@Online{docker, +@online{docker, + title = {{Docker: Accelerated Container Application Development}}, author = {Docker}, - note = {[Online]}, - title = {Docker: Accelerated Container Application Development}, url = {https://www.docker.com/}, + note = {[Online]} } - -@Online{elasticsearch, - author = {Elastic}, - note = {[Online]}, - title = {Elasticsearch Platform}, - url = {https://www.elastic.co/de/elasticsearch/}, -} - -@Online{react, - author = {Facebook}, - note = {[Online]}, - title = {React}, - url = {https://react.dev/}, +@online{docker-compose, + title = {{Compose: Defining and Running Multi-Container Docker Applications}}, + author = {Docker}, + url = {https://docs.docker.com/compose/}, + note = {[Online]} } - -@Online{angular, - author = {Google}, - note = {[Online]}, - title = {Angular}, - url = {https://angular.io/}, +@online{dotnet, + title = {{{.NET}: free, open-source, cross-platform framework}}, + author = {Microsoft}, + url = {https://dotnet.microsoft.com/}, + note = {[Online]} } - -@Online{vue, - author = {Evan You}, - note = {[Online]}, - title = {Vue.js}, - url = {https://vuejs.org/}, +@online{elasticsearch, + title = {{Elasticsearch Platform}}, + author = {Elastic}, + url = {https://www.elastic.co/de/elasticsearch/}, + note = {[Online]} } - -@Online{eslint, +@online{eslint, + title = {{ESLint: {P}luggable {J}avaScript linter}}, author = {Nicholas Zakas}, - note = {[Online]}, - title = {ESLint: {P}luggable {J}avaScript linter}, url = {https://eslint.org/}, + note = {[Online]} } - -@Online{express, +@online{express, + title = {{Express}}, author = {Douglas Christopher Wilson}, - note = {[Online]}, - title = {Express}, url = {https://expressjs.com/}, + note = {[Online]} +} +@online{fastapi, + title = {{FastAPI}}, + author = {Sebastián Ramírez}, + url = {https://fastapi.tiangolo.com/}, + note = {[Online]} } - -@Online{graphql, +@online{flask, + title = {{Flask User's Guide}}, + author = {Pallets}, + url = {https://flask.palletsprojects.com/}, + note = {[Online]} +} +@online{GitHub, + title = {{GitHub}}, + url = {https://github.com/}, + note = {[Online]} +} +@online{graphql, + title = {{GraphQL: {A} query language for your {API}}}, author = {Facebook}, - note = {[Online]}, - title = {GraphQL: {A} query language for your {API}}, url = {https://graphql.org/}, + note = {[Online]} +} +@online{grpc, + title = {{gRPC: A high performance, open source universal RPC framework}}, + author = {{CNCF}}, + url = {https://grpc.io/}, + note = {[Online]} +} +@online{hetzner, + title = {{Hetzner Cloud Hosting}}, + author = {Hetzner}, + url = {https://www.hetzner.com/cloud/}, + note = {[Online]} +} +@online{InstaApi, + title = {{Instagram Basic Display API}}, + author = {Facebook}, + url = {https://developers.facebook.com/docs/instagram-basic-display-api}, + note = {[Online]} } - -@Online{istanbuljs, +@online{istanbuljs, + title = {{Istanbul: {J}avaScript test coverage made simple}}, author = {Istanbul}, - note = {[Online]}, - title = {Istanbul: {J}avaScript test coverage made simple}, url = {https://istanbul.js.org/}, + note = {[Online]} } - -@Online{node, - author = {Ryan Dahl}, +@online{jest, + title = {{Jest is a delightful JavaScript Testing Framework with a focus on simplicity}}, + author = {Facebook}, + url = {https://jestjs.io/}, + note = {[Online]} +} +@online{json, + title = {{JSON}}, + author = {Douglas Crockford}, + url = {https://www.json.org/}, + note = {[Online]} +} +@online{kaggle-elonmusktweets, + title = {{Kaggle Datasets: Elon Musk Tweets}}, + author = {Google}, + url = {https://www.kaggle.com/datasets/gpreda/elon-musk-tweets}, + note = {[Online]} +} +@online{kubernetes, + title = {{Kubernetes/K8s: open-source system for automating deployment, scaling, and management of containerized applications}}, + author = {{CNCF}}, + url = {https://kubernetes.io/}, + note = {[Online]}, + ids = {k8s} +} +@online{mariadb, + title = {{MariaDB Community Server}}, + author = {Michael Widenius}, + url = {https://mariadb.com/}, + note = {[Online]}, + ids = {maria} +} +@online{mocha, + title = {{Mocha Testing Framework}}, + author = {Mocha}, + url = {https://mochajs.org/}, + note = {[Online]} +} +@book{mongo_book, + title = {{MongoDB: The Definitive Guide}}, + author = {Kristina Chodorow}, + year = 2013, + publisher = {O'Reilly Media} +} +@online{mongodb, + title = {{MongoDB}}, + author = {Dwight Merriman and Eliot Horowitz and Kevin Ryan}, + url = {https://www.mongodb.com/}, note = {[Online]}, - title = {Node.js}, + ids = {mongo} +} +@online{mongodb-atlas, + title = {{MongoDB Atlas}}, + author = {{MongoDB, Inc.}}, + url = {https://www.mongodb.com/atlas}, + note = {[Online]} +} +@online{mongodb-atlas-serverless, + title = {{{AWS} Prescriptive Guidance: {MongoDB Atlas} on {AWS} -- Migrating from a self-managed environment to the {AWS} Cloud}}, + author = {Amazon}, + url = {https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-mongodb-atlas/serverless.html}, + note = {[Online]} +} +@online{mongodb-replication, + title = {{{MongoDB} Replication}}, + author = {{MongoDB, Inc.}}, + url = {https://www.mongodb.com/docs/manual/replication/}, + note = {[Online]} +} +@online{mswjs, + title = {{Mock Service Worker: {API} mocking library for browser and Node.js}}, + author = {Artem Zakharchenko}, + url = {https://mswjs.io/}, + note = {[Online]} +} +@online{mui, + title = {{{MUI}: The React component library you always wanted}}, + author = {{Material UI SAS}}, + url = {https://mui.com}, + note = {[Online]} +} +@online{mysql, + title = {{MySQL: high-performance and scalable Online Transaction Processing}}, + author = {Michael Widenius und David Axmark}, + url = {https://www.mysql.com/}, + note = {[Online]} +} +@online{nextjs, + title = {{Next.js}}, + author = {Vercel}, + url = {https://nextjs.org/}, + note = {[Online]} +} +@online{node, + title = {{Node.js}}, + author = {Ryan Dahl}, url = {https://www.nodejs.org/}, + note = {[Online]}, + ids = {nodejs} } - -@Online{npm, +@online{npm, + title = {{npm}}, author = {Isaac Schlueter}, - note = {[Online]}, - title = {npm}, url = {https://www.npmjs.com/}, + note = {[Online]} } - -@Online{prettier, - author = {Prettier}, +@online{ontotext, + title = {{GraphDB}}, + author = {Ontotext}, + url = {https://www.ontotext.com/products/graphdb/}, + note = {[Online]} +} +@online{opcua, + title = {{OPC Unified Architecture: a platform independent service-oriented architecture that integrates all the functionality of the individual OPC Classic specifications into one extensible framework}}, + author = {{OPC}}, + url = {https://opcfoundation.org/about/opc-technologies/opc-ua/}, + note = {[Online]} +} +@online{opencv, + title = {{{OpenCV}: Open Source Computer Vision Library}}, + author = {Gray Bradsky}, + url = {https://opencv.org}, + note = {[Online]} +} +@online{phaser, + title = {{Phaser Game Framework}}, + author = {{Photon Storm}}, + url = {https://phaser.io/}, + note = {[Online]} +} +@online{pinia, + title = {{Pinia}}, + author = {Eduardo San Martin Morote}, + url = {https://pinia.vuejs.org/}, + note = {[Online]} +} +@online{postgresql, + title = {{PostgreSQL: Open Source Relational Database}}, + author = {Andrew Yu and Jolly Chen}, + url = {https://www.postgresql.org/}, note = {[Online]}, - title = {Prettier: {O}pinionated {C}ode {F}ormatter}, + ids = {postgres} +} +@online{prettier, + title = {{Prettier: {O}pinionated {C}ode {F}ormatter}}, + author = {Prettier}, url = {https://prettier.io/}, + note = {[Online]} +} +@online{prisma, + title = {{Prisma}}, + author = {{Prisma Data, Inc.}}, + url = {https://www.prisma.io/}, + note = {[Online]} +} +@online{pydantic, + title = {{Pydantic Documentation}}, + author = {Sebastián Ramírez}, + url = {https://docs.pydantic.dev/}, + note = {[Online]} +} +@online{pymongo, + title = {{PyMongo}}, + author = {{MongoDB, Inc.}}, + url = {https://pypi.org/project/pymongo/}, + note = {[Online]} +} +@online{pytest, + title = {{pytest: helps you write better programs}}, + author = {Guido van Rossum}, + url = {https://docs.pytest.org/}, + note = {[Online]} +} +@online{pytest, + title = {{Pytest}}, + author = {Holger Krekel and {pytest Entwicklungteam}}, + url = {https://pytest.org/}, + note = {[Online]} +} +@online{python, + title = {{Python}}, + author = {Guido van Rossum}, + url = {https://www.python.org}, + note = {[Online]} +} +@online{react, + title = {{React}}, + author = {Facebook}, + url = {https://react.dev/}, + note = {[Online]} +} +@online{reacttestinglibrary, + title = {{TestingLibraryReact}}, + author = {React Testing Library}, + url = {https://testing-library.com/docs/react-testing-library/intro/}, + note = {[Online]} +} +@book{restful, + title = {{Architectural styles and the design of network-based software architectures}}, + author = {Fielding, Roy Thomas}, + year = 2000, + publisher = {University of California, Irvine}, + ids = {rest} +} +@online{restfulapi, + title = {{REST API Tutorial}}, + author = {Lokesh Gupta}, + url = {https://restfulapi.net/}, + note = {[Online]} +} +@techreport{rfc6455, + title = {{The WebSocket Protocol}}, + author = {Alexey Melnikov and Ian Fette}, + year = 2011, + month = dec, + number = 6455, + doi = {10.17487/RFC6455}, + issn = {2070-1721}, + url = {https://www.rfc-editor.org/info/rfc6455}, + type = {{RFC}} +} +@online{scikit, + title = {{scikit-learn: Machine Learning in Python}}, + author = {David Cournapeau}, + url = {https://scikit-learn.org/}, + note = {[Online]}, + ids = {scikit-learn} +} +@article{scikit-image, + title = {{scikit-image: image processing in {P}ython}}, + author = {van der Walt, {S}t\'efan and {S}ch\"onberger, {J}ohannes {L}. and {Nunez-Iglesias}, {J}uan and {B}oulogne, {F}ran\c{c}ois and {W}arner, {J}oshua {D}. and {Y}ager, {N}eil and {G}ouillart, {E}mmanuelle and {Y}u, {T}ony and the scikit-image contributors}, + year = 2014, + month = 6, + journal = {PeerJ}, + volume = 2, + pages = {e453}, + doi = {10.7717/peerj.453}, + issn = {2167-8359}, + url = {https://doi.org/10.7717/peerj.453}, + keywords = {Image processing, Reproducible research, Education, Visualization, Open source, Python, Scientific programming} +} +@online{scratch, + title = {{Scratch}}, + author = {{MIT Media Lab}}, + url = {https://scratch.mit.edu/projects/editor/}, + note = {[Online]} +} +@online{selenium, + title = {{Selenium}}, + author = {Selenium}, + url = {https://www.selenium.dev/}, + note = {[Online]} +} +@online{socketio, + title = {{Socket.IO}}, + author = {Guillermo Rauch}, + url = {https://socket.io/}, + note = {[Online]} } - -@Online{svelte, +@online{sqlite, + title = {{{SQLite}: {F}eatures}}, + author = {Richard Hipp}, + url = {https://sqlite.org/features.html}, + note = {[Online]} +} +@online{starlette, + title = {{Starlette}}, + author = {Sebastián Ramírez}, + url = {https://www.starlette.io/}, + note = {[Online]} +} +@online{svelte, + title = {{Svelte: Cybernetically enhanced web apps}}, author = {Rich Harris}, - note = {[Online]}, - title = {Svelte: Cybernetically enhanced web apps}, url = {https://www.svelte.dev/}, + note = {[Online]} } - -@Online{sveltekit, +@online{sveltekit, + title = {{Svelte Kit: {T}he fastest way to build {S}velte Apps}}, author = {Rich Harris}, - note = {[Online]}, - title = {Svelte Kit: {T}he fastest way to build {S}velte Apps}, url = {https://kit.svelte.dev/}, + note = {[Online]} } - -@Online{typescript, +@online{tailwind, + title = {{Tailwind {CSS}}}, + author = {Adam Wathan and Jonathan Reinink and David Hemphill and Steve Schoger}, + url = {https://tailwindcss.com/}, + note = {[Online]} +} +@online{terraform, + title = {{Terraform}}, + author = {{HashiCorp}}, + url = {https://www.terraform.io/}, + note = {[Online]} +} +@online{tinydb, + title = {{TinyDB: Lightweight Document-oriented Database}}, + author = {Markus Siemens}, + url = {https://github.com/msiemens/tinydb}, + note = {[Online]} +} +@online{typescript, + title = {{TypeScript: JavaScript With Syntax For Types}}, author = {Microsoft}, - note = {[Online]}, - title = {TypeScript: {J}avaScript {W}ith {S}yntax {F}or {T}ypes}, url = {https://www.typescriptlang.org/}, + note = {[Online]} } - -@Online{jest, - author = {Facebook}, - note = {[Online]}, - title = {Jest is a delightful JavaScript Testing Framework with a focus on simplicity}, - url = {https://jestjs.io/}, - +@online{uvicorn, + title = {{Uvicorn}}, + author = {Sebastián Ramírez}, + url = {https://www.uvicorn.org/}, + note = {[Online]} +} +@online{virtuoso, + title = {{Virtuoso Universal Server}}, + author = {OpenLink}, + url = {https://virtuoso.openlinksw.com/}, + note = {[Online]} } - -@Online{vite, +@online{vite, + title = {{Vite: {N}ext {G}eneration {F}rontend {T}ooling}}, author = {Evan You}, - note = {[Online]}, - title = {Vite: {N}ext {G}eneration {F}rontend {T}ooling}, url = {https://github.com/vitejs/vite}, + note = {[Online]} } - -@Online{vitest, +@online{vitest, + title = {{Vitest: {A} {V}ite-native unit test framework}}, author = {Anthony Fu and Matías Capeletto}, - note = {[Online]}, - title = {Vitest: {A} {V}ite-native unit test framework}, url = {https://vitest.dev/}, + note = {[Online]} } - -@Online{pinia, - author = {Eduardo San Martin Morote}, - note = {[Online]}, - title = {Pinia}, - url = {https://pinia.vuejs.org/}, +@online{vue, + title = {{Vue.js}}, + author = {Evan You}, + url = {https://vuejs.org/}, + note = {[Online]} } - -@Online{virtuoso, - author = {OpenLink}, - note = {[Online]}, - title = {Virtuoso Universal Server}, - url = {https://virtuoso.openlinksw.com/}, +@online{websocket-whatwg, + title = {{Origin of {WebSocket} ({IRC} logs: freenode / \#whatwg / 20080618)}}, + author = {Ian Hickson and Michael Carter}, + url = {https://krijnhoetmer.nl/irc-logs/whatwg/20080618#l-1145}, + note = {[Online]} } - -@Online{ontotext, - author = {Ontotext}, - note = {[Online]}, - title = {GraphDB}, - url = {https://www.ontotext.com/products/graphdb/}, +@online{yfinance, + title = {{Yahoo Finance}}, + author = {Yahoo}, + url = {https://finance.yahoo.com}, + note = {[Online]} } - -@Online{mongodb, - author = {Dwight Merriman and Eliot Horowitz and Kevin Ryan}, - note = {[Online]}, - title = {MongoDB}, - url = {https://www.mongodb.com/}, +@online{angular, + title = {{Angular}}, + author = {Google}, + url = {https://angular.io/}, + note = {[Online]} } - -@Online{dotnet, +@online{asp, + title = {{ASP.NET}}, author = {Microsoft}, + url = {https://dotnet.microsoft.com/apps/aspnet}, note = {[Online]}, - title = {{.NET}: free, open-source, cross-platform framework}, - url = {https://dotnet.microsoft.com/}, + addendum = {(aufgerufen: 22.06.2024)}, + ids = {asp_net} } - -@Online{phaser, - author = {{Photon Storm}}, - note = {[Online]}, - title = {Phaser Game Framework}, - url = {https://phaser.io/}, +@online{authjs, + title = {{Auth.js}}, + author = {Balázs Orbán}, + url = {https://authjs.dev/}, + note = {[Online]} } - -@Online{kubernetes, - author = {{CNCF}}, - note = {[Online]}, - title = {Kubernetes/K8s: open-source system for automating deployment, scaling, and management of containerized applications}, - url = {https://kubernetes.io/}, +@online{aws, + title = {{Amazon Web Services}}, + author = {Amazon}, + url = {https://aws.amazon.com/}, + note = {[Online]} } - -@Online{bootstrap, - author = {Mark Otto und Jacob Thornton}, - note = {[Online]}, - title = {Bootstrap: Build fast, responsive sites}, - url = {https://getbootstrap.com/}, +@online{aws-apigateway, + title = {{AWS API Gateway}}, + author = {Amazon}, + url = {https://aws.amazon.com/api-gateway/}, + note = {[Online]} } - -@Online{docker-compose, - author = {Docker}, - note = {[Online]}, - title = {Compose: Defining and Running Multi-Container Docker Applications}, - url = {https://docs.docker.com/compose/}, +@online{aws-apprunner, + title = {{AWS AppRunner}}, + author = {Amazon}, + url = {https://aws.amazon.com/apprunner/}, + note = {[Online]} } - -@book{restful, - title={Architectural styles and the design of network-based software architectures}, - author={Fielding, Roy Thomas}, - year={2000}, - publisher={University of California, Irvine} +@online{aws-cli, + title = {{AWS CLI}}, + author = {Amazon}, + url = {https://aws.amazon.com/cli/}, + note = {[Online]} } - -@Online{grpc, - author = {{CNCF}}, - note = {[Online]}, - title = {gRPC: A high performance, open source universal RPC framework}, - url = {https://grpc.io/}, +@online{aws-codebuild, + title = {{AWS CodeBuild}}, + author = {Amazon}, + url = {https://aws.amazon.com/de/codebuild/}, + note = {[Online]} } - -@Online{mysql, - author = {Michael Widenius und David Axmark}, - note = {[Online]}, - title = {MySQL: high-performance and scalable Online Transaction Processing}, - url = {https://www.mysql.com/}, +@online{aws-codecommit, + title = {{AWS CodeCommit}}, + author = {Amazon}, + url = {https://aws.amazon.com/de/codecommit/}, + note = {[Online]} } - -@Online{mariadb, - author = {Michael Widenius}, - note = {[Online]}, - title = {MariaDB Community Server}, - url = {https://mariadb.com/}, +@online{aws-codepipeline, + title = {{AWS CodePipeline}}, + author = {Amazon}, + url = {https://aws.amazon.com/de/codepipeline/}, + note = {[Online]} } - -@Online{postgresql, - author = {Andrew Yu and Jolly Chen}, - note = {[Online]}, - title = {PostgreSQL: Open Source Relational Database}, - url = {https://www.postgresql.org/}, +@online{aws-cognito, + title = {{{AWS Cognito}: Identity Platform}}, + author = {Amazon}, + url = {https://aws.amazon.com/cognito/}, + note = {[Online]} } - -@Online{opcua, - author = {{OPC}}, - note = {[Online]}, - title = {OPC Unified Architecture: a platform independent service-oriented architecture that integrates all the functionality of the individual OPC Classic specifications into one extensible framework}, - url = {https://opcfoundation.org/about/opc-technologies/opc-ua/}, +@online{aws-ec2, + title = {{AWS EC2}}, + author = {Amazon}, + url = {https://aws.amazon.com/ec2/}, + note = {[Online]} } - -@Online{aws, +@online{aws-ecr, + title = {{AWS ECR}}, author = {Amazon}, - note = {[Online]}, - title = {Amazon Web Services}, - url = {https://aws.amazon.com/} + url = {https://aws.amazon.com/ecr/}, + note = {[Online]} } - -@Online{aws-cognito, +@online{aws-elasticbeanstalk, + title = {{AWS Elastic Beanstalk}}, author = {Amazon}, - note = {[Online]}, - title = {{AWS Cognito}: Identity Platform}, - url = {https://aws.amazon.com/cognito/} + url = {https://aws.amazon.com/elasticbeanstalk/}, + note = {[Online]} } - -@Online{aws-apigateway, +@online{aws-iam, + title = {{AWS IAM}}, author = {Amazon}, - note = {[Online]}, - title = {{AWS API Gateway}}, - url = {https://aws.amazon.com/api-gateway/} + url = {https://aws.amazon.com/iam/}, + note = {[Online]} } - -@Online{mongodb-atlas, - author = {{MongoDB, Inc.}}, - note = {[Online]}, - title = {{MongoDB Atlas}}, - url = {https://www.mongodb.com/atlas}, +@online{aws-lambda, + title = {{AWS Lambda}}, + author = {Amazon}, + url = {https://aws.amazon.com/lambda/}, + note = {[Online]} } - -@Online{mongodb-atlas-serverless, +@online{aws-s3, + title = {{Amazon S3}}, author = {Amazon}, - note = {[Online]}, - title = {{AWS} Prescriptive Guidance: {MongoDB Atlas} on {AWS} -- Migrating from a self-managed environment to the {AWS} Cloud}, - url = {https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-mongodb-atlas/serverless.html} + url = {https://aws.amazon.com/s3/}, + note = {[Online]} } - -@Online{aws-lambda, +@online{aws-sam, + title = {{AWS SAM}}, author = {Amazon}, - note = {[Online]}, - title = {{AWS Lambda}}, - url = {https://aws.amazon.com/lambda/} + url = {https://aws.amazon.com/serverless/sam/}, + note = {[Online]} } - -@Online{aws-ec2, +@online{aws-sdk-js, + title = {{{AWS SDK} for {JavaScript}}}, author = {Amazon}, - note = {[Online]}, - title = {{AWS EC2}}, - url = {https://aws.amazon.com/ec2/} + url = {https://www.npmjs.com/package/aws-sdk}, + note = {[Online]} } - -@Online{nextjs, - author = {Vercel}, - note = {[Online]}, - title = {Next.js}, - url = {https://nextjs.org/} +@online{aws-toolkit-intelij, + title = {{{AWS Toolkit} for {IntelliJ IDEA}}}, + author = {Amazon}, + url = {https://aws.amazon.com/intellij/}, + note = {[Online]} } - -@Online{aws-lambda-runtime, +@online{axios, + title = {{Axios}}, + author = {Matt Zabriskie}, + url = {https://axios-http.com/}, + note = {[Online]} +} +@online{bootstrap, + title = {{Bootstrap: Build fast, responsive sites}}, + author = {Mark Otto und Jacob Thornton}, + url = {https://getbootstrap.com/}, + note = {[Online]} +} +@online{boto3, + title = {{{Boto3}: {AWS SDK} for Python}}, author = {Amazon}, - note = {[Online]}, - title = {{AWS Lambda}: Run-Time Environment}, - url = {https://docs.aws.amazon.com/de_de/lambda/latest/dg/lambda-runtime-environment.html} + url = {https://boto3.amazonaws.com/v1/documentation/api/latest/index.html}, + note = {[Online]} } - -@Online{authjs, - author = {Balázs Orbán}, - note = {[Online]}, - title = {Auth.js}, - url = {https://authjs.dev/} +@online{catapi, + title = {{The Cat {API}}}, + author = {Aden Forshaw}, + url = {https://thecatapi.com/}, + note = {[Online]} +} +@online{chai, + title = {{Chai Assertion Library}}, + author = {Chai}, + url = {https://www.chaijs.com/}, + note = {[Online]} +} +@online{chess, + title = {{Chess}}, + author = {chess.com}, + url = {https://www.chess.com/}, + note = {[Online]} +} +@online{csharp, + title = {{{C\#} Programming Language}}, + author = {Microsoft}, + url = {https://learn.microsoft.com/dotnet/csharp/}, + note = {[Online]} } - -@Online{mongodb-via-aws, - author = {{MongoDB, Inc.}}, - note = {[Online]}, - title = {{MongoDB Atlas} via {AWS}}, - url = {https://www.mongodb.com/docs/atlas/reference/amazon-aws/} +@online{cypress, + title = {{Cypress}}, + author = {Brian Mann}, + url = {https://www.cypress.io/}, + note = {[Online]} } - -@Online{mongodb-replication, - author = {{MongoDB, Inc.}}, - note = {[Online]}, - title = {{MongoDB} Replication}, - url = {https://www.mongodb.com/docs/manual/replication/} +@online{d3js, + title = {{D3.js}}, + author = {Observable}, + url = {https://d3js.org}, + note = {[Online]} } - -@Online{prisma, - author = {{Prisma Data, Inc.}}, - note = {[Online]}, - title = {Prisma}, - url = {https://www.prisma.io/} +@online{django, + title = {{Django}}, + author = {Adrian Holovaty and Simon Willison}, + url = {https://www.djangoproject.com/}, + note = {[Online]} } - -@Online{prisma-schema, - author = {{Prisma Data, Inc.}}, - note = {[Online]}, - title = {Prisma Schema}, - url = {https://www.prisma.io/docs/concepts/components/prisma-schema} +@online{docker, + title = {{Docker: Accelerated Container Application Development}}, + author = {Docker}, + url = {https://www.docker.com/}, + note = {[Online]} } - -@Online{aws-s3, - author = {Amazon}, - note = {[Online]}, - title = {{Amazon S3}}, - url = {https://aws.amazon.com/s3/}, +@online{docker-compose, + title = {{Compose: Defining and Running Multi-Container Docker Applications}}, + author = {Docker}, + url = {https://docs.docker.com/compose/}, + note = {[Online]} } -@Online{aws-sam, - author = {Amazon}, - note = {[Online]}, - title = {{AWS SAM}}, - url = {https://aws.amazon.com/serverless/sam/}, +@online{dotnet, + title = {{{.NET}: free, open-source, cross-platform framework}}, + author = {Microsoft}, + url = {https://dotnet.microsoft.com/}, + note = {[Online]} } - -@Online{aws-cli, - author = {Amazon}, - note = {[Online]}, - title = {{AWS CLI}}, - url = {https://aws.amazon.com/cli/}, +@online{elasticsearch, + title = {{Elasticsearch Platform}}, + author = {Elastic}, + url = {https://www.elastic.co/de/elasticsearch/}, + note = {[Online]} } - -@Online{aws-iam, - author = {Amazon}, - note = {[Online]}, - title = {{AWS IAM}}, - url = {https://aws.amazon.com/iam/}, +@online{eslint, + title = {{ESLint: {P}luggable {J}avaScript linter}}, + author = {Nicholas Zakas}, + url = {https://eslint.org/}, + note = {[Online]} } - -@Online{aws-toolkit-intelij, - author = {Amazon}, - note = {[Online]}, - title = {{AWS Toolkit} for {IntelliJ IDEA}}, - url = {https://aws.amazon.com/intellij/}, +@online{express, + title = {{Express}}, + author = {Douglas Christopher Wilson}, + url = {https://expressjs.com/}, + note = {[Online]} } - -@Online{kaggle-elonmusktweets, +@online{fastapi, + title = {{FastAPI}}, + author = {Sebastián Ramírez}, + url = {https://fastapi.tiangolo.com/}, + note = {[Online]} +} +@online{flask, + title = {{Flask User's Guide}}, + author = {Pallets}, + url = {https://flask.palletsprojects.com/}, + note = {[Online]} +} +@online{GitHub, + title = {{GitHub}}, + url = {https://github.com/}, + note = {[Online]} +} +@online{graphql, + title = {{GraphQL: {A} query language for your {API}}}, + author = {Facebook}, + url = {https://graphql.org/}, + note = {[Online]} +} +@online{grpc, + title = {{gRPC: A high performance, open source universal RPC framework}}, + author = {{CNCF}}, + url = {https://grpc.io/}, + note = {[Online]} +} +@online{hetzner, + title = {{Hetzner Cloud Hosting}}, + author = {Hetzner}, + url = {https://www.hetzner.com/cloud/}, + note = {[Online]} +} +@online{InstaApi, + title = {{Instagram Basic Display API}}, + author = {Facebook}, + url = {https://developers.facebook.com/docs/instagram-basic-display-api}, + note = {[Online]} +} +@online{istanbuljs, + title = {{Istanbul: {J}avaScript test coverage made simple}}, + author = {Istanbul}, + url = {https://istanbul.js.org/}, + note = {[Online]} +} +@online{jest, + title = {{Jest is a delightful JavaScript Testing Framework with a focus on simplicity}}, + author = {Facebook}, + url = {https://jestjs.io/}, + note = {[Online]} +} +@online{json, + title = {{JSON}}, + author = {Douglas Crockford}, + url = {https://www.json.org/}, + note = {[Online]} +} +@online{kaggle-elonmusktweets, + title = {{Kaggle Datasets: Elon Musk Tweets}}, author = {Google}, - note = {[Online]}, - title = {Kaggle Datasets: Elon Musk Tweets}, url = {https://www.kaggle.com/datasets/gpreda/elon-musk-tweets}, + note = {[Online]} } - -@Online{yfinance, - author = {Yahoo}, +@online{kubernetes, + title = {{Kubernetes/K8s: open-source system for automating deployment, scaling, and management of containerized applications}}, + author = {{CNCF}}, + url = {https://kubernetes.io/}, note = {[Online]}, - title = {Yahoo Finance}, - url = {https://finance.yahoo.com}, + ids = {k8s} } - -@Online{d3js, - author = {Observable}, +@online{mariadb, + title = {{MariaDB Community Server}}, + author = {Michael Widenius}, + url = {https://mariadb.com/}, note = {[Online]}, - title = {D3.js}, - url = {https://d3js.org}, + ids = {maria} } - -@Online{mui, - author = {{Material UI SAS}}, +@online{mocha, + title = {{Mocha Testing Framework}}, + author = {Mocha}, + url = {https://mochajs.org/}, + note = {[Online]} +} +@book{mongo_book, + title = {{MongoDB: The Definitive Guide}}, + author = {Kristina Chodorow}, + year = 2013, + publisher = {O'Reilly Media} +} +@online{mongodb, + title = {{MongoDB}}, + author = {Dwight Merriman and Eliot Horowitz and Kevin Ryan}, + url = {https://www.mongodb.com/}, note = {[Online]}, - title = {{MUI}: The React component library you always wanted}, + ids = {mongo} +} +@online{mongodb-atlas, + title = {{MongoDB Atlas}}, + author = {{MongoDB, Inc.}}, + url = {https://www.mongodb.com/atlas}, + note = {[Online]} +} +@online{mongodb-atlas-serverless, + title = {{{AWS} Prescriptive Guidance: {MongoDB Atlas} on {AWS} -- Migrating from a self-managed environment to the {AWS} Cloud}}, + author = {Amazon}, + url = {https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-mongodb-atlas/serverless.html}, + note = {[Online]} +} +@online{mongodb-replication, + title = {{{MongoDB} Replication}}, + author = {{MongoDB, Inc.}}, + url = {https://www.mongodb.com/docs/manual/replication/}, + note = {[Online]} +} +@online{mswjs, + title = {{Mock Service Worker: {API} mocking library for browser and Node.js}}, + author = {Artem Zakharchenko}, + url = {https://mswjs.io/}, + note = {[Online]} +} +@online{mui, + title = {{{MUI}: The React component library you always wanted}}, + author = {{Material UI SAS}}, url = {https://mui.com}, + note = {[Online]} } - - -@Online{pytest, - author = {Holger Krekel and {pytest Entwicklungteam}}, +@online{mysql, + title = {{MySQL: high-performance and scalable Online Transaction Processing}}, + author = {Michael Widenius und David Axmark}, + url = {https://www.mysql.com/}, + note = {[Online]} +} +@online{nextjs, + title = {{Next.js}}, + author = {Vercel}, + url = {https://nextjs.org/}, + note = {[Online]} +} +@online{node, + title = {{Node.js}}, + author = {Ryan Dahl}, + url = {https://www.nodejs.org/}, note = {[Online]}, - title = {Pytest}, - url = {https://pytest.org/} + ids = {nodejs} } - -@Online{starlette, - author = {Sebastián Ramírez}, +@online{npm, + title = {{npm}}, + author = {Isaac Schlueter}, + url = {https://www.npmjs.com/}, + note = {[Online]} +} +@online{ontotext, + title = {{GraphDB}}, + author = {Ontotext}, + url = {https://www.ontotext.com/products/graphdb/}, + note = {[Online]} +} +@online{opcua, + title = {{OPC Unified Architecture: a platform independent service-oriented architecture that integrates all the functionality of the individual OPC Classic specifications into one extensible framework}}, + author = {{OPC}}, + url = {https://opcfoundation.org/about/opc-technologies/opc-ua/}, + note = {[Online]} +} +@online{opencv, + title = {{{OpenCV}: Open Source Computer Vision Library}}, + author = {Gray Bradsky}, + url = {https://opencv.org}, + note = {[Online]} +} +@online{phaser, + title = {{Phaser Game Framework}}, + author = {{Photon Storm}}, + url = {https://phaser.io/}, + note = {[Online]} +} +@online{pinia, + title = {{Pinia}}, + author = {Eduardo San Martin Morote}, + url = {https://pinia.vuejs.org/}, + note = {[Online]} +} +@online{postgresql, + title = {{PostgreSQL: Open Source Relational Database}}, + author = {Andrew Yu and Jolly Chen}, + url = {https://www.postgresql.org/}, note = {[Online]}, - title = {Starlette}, - url = {https://www.starlette.io/}, + ids = {postgres} } - -@Online{pydantic, +@online{prettier, + title = {{Prettier: {O}pinionated {C}ode {F}ormatter}}, + author = {Prettier}, + url = {https://prettier.io/}, + note = {[Online]} +} +@online{prisma, + title = {{Prisma}}, + author = {{Prisma Data, Inc.}}, + url = {https://www.prisma.io/}, + note = {[Online]} +} +@online{pydantic, + title = {{Pydantic Documentation}}, author = {Sebastián Ramírez}, - note = {[Online]}, - title = {Pydantic Documentation}, url = {https://docs.pydantic.dev/}, + note = {[Online]} } - -@Online{uvicorn, - author = {Sebastián Ramírez}, - note = {[Online]}, - title = {Uvicorn}, - url = {https://www.uvicorn.org/} +@online{pymongo, + title = {{PyMongo}}, + author = {{MongoDB, Inc.}}, + url = {https://pypi.org/project/pymongo/}, + note = {[Online]} } - -@Online{terraform, - author = {{HashiCorp}}, - note = {[Online]}, - title = {Terraform}, - url = {https://www.terraform.io/} +@online{pytest, + title = {{pytest: helps you write better programs}}, + author = {Guido van Rossum}, + url = {https://docs.pytest.org/}, + note = {[Online]} } - -@Online{cypress, - author = {Brian Mann}, - note = {[Online]}, - title = {Cypress}, - url = {https://www.cypress.io/} +@online{pytest, + title = {{Pytest}}, + author = {Holger Krekel and {pytest Entwicklungteam}}, + url = {https://pytest.org/}, + note = {[Online]} } - -@Online{pymongo, - author = {{MongoDB, Inc.}}, - note = {[Online]}, - title = {PyMongo}, - url = {https://pypi.org/project/pymongo/} +@online{python, + title = {{Python}}, + author = {Guido van Rossum}, + url = {https://www.python.org}, + note = {[Online]} } - -@Online{websocket-whatwg, - author = {Ian Hickson and Michael Carter}, - note = {[Online]}, - title = {Origin of {WebSocket} ({IRC} logs: freenode / \#whatwg / 20080618)}, - url = {https://krijnhoetmer.nl/irc-logs/whatwg/20080618#l-1145}, +@online{react, + title = {{React}}, + author = {Facebook}, + url = {https://react.dev/}, + note = {[Online]} } - -@TechReport{rfc6455, - type ={{RFC}}, - number = 6455, - doi = {10.17487/RFC6455}, - url = {https://www.rfc-editor.org/info/rfc6455}, - author = {Alexey Melnikov and Ian Fette}, - title = {{The WebSocket Protocol}}, - year = 2011, - month = dec, - issn = {2070-1721}, -} - -@Online{socketio, - author = {Guillermo Rauch}, - note = {[Online]}, +@online{reacttestinglibrary, + title = {{TestingLibraryReact}}, + author = {React Testing Library}, + url = {https://testing-library.com/docs/react-testing-library/intro/}, + note = {[Online]} +} +@book{restful, + title = {{Architectural styles and the design of network-based software architectures}}, + author = {Fielding, Roy Thomas}, + year = 2000, + publisher = {University of California, Irvine}, + ids = {rest} +} +@online{restfulapi, + title = {{REST API Tutorial}}, + author = {Lokesh Gupta}, + url = {https://restfulapi.net/}, + note = {[Online]} +} +@techreport{rfc6455, + title = {{The WebSocket Protocol}}, + author = {Alexey Melnikov and Ian Fette}, + year = 2011, + month = dec, + number = 6455, + doi = {10.17487/RFC6455}, + issn = {2070-1721}, + url = {https://www.rfc-editor.org/info/rfc6455}, + type = {{RFC}} +} +@online{scikit, + title = {{scikit-learn: Machine Learning in Python}}, + author = {David Cournapeau}, + url = {https://scikit-learn.org/}, + note = {[Online]}, + ids = {scikit-learn} +} +@article{scikit-image, + title = {{scikit-image: image processing in {P}ython}}, + author = {van der Walt, {S}t\'efan and {S}ch\"onberger, {J}ohannes {L}. and {Nunez-Iglesias}, {J}uan and {B}oulogne, {F}ran\c{c}ois and {W}arner, {J}oshua {D}. and {Y}ager, {N}eil and {G}ouillart, {E}mmanuelle and {Y}u, {T}ony and the scikit-image contributors}, + year = 2014, + month = 6, + journal = {PeerJ}, + volume = 2, + pages = {e453}, + doi = {10.7717/peerj.453}, + issn = {2167-8359}, + url = {https://doi.org/10.7717/peerj.453}, + keywords = {Image processing, Reproducible research, Education, Visualization, Open source, Python, Scientific programming} +} +@online{scratch, + title = {{Scratch}}, + author = {{MIT Media Lab}}, + url = {https://scratch.mit.edu/projects/editor/}, + note = {[Online]} +} +@online{selenium, + title = {{Selenium}}, + author = {Selenium}, + url = {https://www.selenium.dev/}, + note = {[Online]} +} +@online{socketio, title = {{Socket.IO}}, + author = {Guillermo Rauch}, url = {https://socket.io/}, + note = {[Online]} } - -@Online{catapi, - author = {Aden Forshaw}, - note = {[Online]}, - title = {The Cat {API}}, - url = {https://thecatapi.com/}, +@online{sqlite, + title = {{{SQLite}: {F}eatures}}, + author = {Richard Hipp}, + url = {https://sqlite.org/features.html}, + note = {[Online]} } - -@Online{boto3, - author = {Amazon}, - note = {[Online]}, - title = {{Boto3}: {AWS SDK} for Python}, - url = {https://boto3.amazonaws.com/v1/documentation/api/latest/index.html}, +@online{starlette, + title = {{Starlette}}, + author = {Sebastián Ramírez}, + url = {https://www.starlette.io/}, + note = {[Online]} } - -@Online{aws-sdk-js, - author = {Amazon}, - note = {[Online]}, - title = {{AWS SDK} for {JavaScript}}, - url = {https://www.npmjs.com/package/aws-sdk}, +@online{svelte, + title = {{Svelte: Cybernetically enhanced web apps}}, + author = {Rich Harris}, + url = {https://www.svelte.dev/}, + note = {[Online]} } - -@Online{pytest-cov, - author = {Holger Krekel and {pytest Entwicklungteam}}, - note = {[Online]}, - title = {pytest Coverage Reports}, - url = {https://pypi.org/project/pytest-cov/}, +@online{sveltekit, + title = {{Svelte Kit: {T}he fastest way to build {S}velte Apps}}, + author = {Rich Harris}, + url = {https://kit.svelte.dev/}, + note = {[Online]} } - -@Online{scratch, - author = {{MIT Media Lab}}, - note = {[Online]}, - title = {Scratch}, - url = {https://scratch.mit.edu/projects/editor/}, +@online{tailwind, + title = {{Tailwind {CSS}}}, + author = {Adam Wathan and Jonathan Reinink and David Hemphill and Steve Schoger}, + url = {https://tailwindcss.com/}, + note = {[Online]} } - -@Online{python, - author = {Guido van Rossum}, - note = {[Online]}, - title = {Python}, - url = {https://www.python.org}, +@online{terraform, + title = {{Terraform}}, + author = {{HashiCorp}}, + url = {https://www.terraform.io/}, + note = {[Online]} } - -@Online{opencv, - author = {Gray Bradsky}, - note = {[Online]}, - title = {{OpenCV}: Open Source Computer Vision Library}, - url = {https://opencv.org}, +@online{tinydb, + title = {{TinyDB: Lightweight Document-oriented Database}}, + author = {Markus Siemens}, + url = {https://github.com/msiemens/tinydb}, + note = {[Online]} } - -@article{scikit-image, - title = {scikit-image: image processing in {P}ython}, - author = {van der Walt, {S}t\'efan and {S}ch\"onberger, {J}ohannes {L}. and - {Nunez-Iglesias}, {J}uan and {B}oulogne, {F}ran\c{c}ois and {W}arner, - {J}oshua {D}. and {Y}ager, {N}eil and {G}ouillart, {E}mmanuelle and - {Y}u, {T}ony and the scikit-image contributors}, - year = {2014}, - month = {6}, - keywords = {Image processing, Reproducible research, Education, - Visualization, Open source, Python, Scientific programming}, - volume = {2}, - pages = {e453}, - journal = {PeerJ}, - issn = {2167-8359}, - url = {https://doi.org/10.7717/peerj.453}, - doi = {10.7717/peerj.453} -} - - -@Online{flask, - author = {Pallets}, - note = {[Online]}, - title = {Flask User's Guide}, - url = {https://flask.palletsprojects.com/}, +@online{typescript, + title = {{TypeScript: JavaScript With Syntax For Types}}, + author = {Microsoft}, + url = {https://www.typescriptlang.org/}, + note = {[Online]} +} +@online{uvicorn, + title = {{Uvicorn}}, + author = {Sebastián Ramírez}, + url = {https://www.uvicorn.org/}, + note = {[Online]} +} +@online{virtuoso, + title = {{Virtuoso Universal Server}}, + author = {OpenLink}, + url = {https://virtuoso.openlinksw.com/}, + note = {[Online]} +} +@online{vite, + title = {{Vite: {N}ext {G}eneration {F}rontend {T}ooling}}, + author = {Evan You}, + url = {https://github.com/vitejs/vite}, + note = {[Online]} +} +@online{vitest, + title = {{Vitest: {A} {V}ite-native unit test framework}}, + author = {Anthony Fu and Matías Capeletto}, + url = {https://vitest.dev/}, + note = {[Online]} +} +@online{vue, + title = {{Vue.js}}, + author = {Evan You}, + url = {https://vuejs.org/}, + note = {[Online]} +} +@online{websocket-whatwg, + title = {{Origin of {WebSocket} ({IRC} logs: freenode / \#whatwg / 20080618)}}, + author = {Ian Hickson and Michael Carter}, + url = {https://krijnhoetmer.nl/irc-logs/whatwg/20080618#l-1145}, + note = {[Online]} +} +@online{yfinance, + title = {{Yahoo Finance}}, + author = {Yahoo}, + url = {https://finance.yahoo.com}, + note = {[Online]} } - - @Online{bibtemplate, - author = {}, - note = {[Online]}, title = {}, + author = {}, url = {}, + note = {[Online]}, }
\ No newline at end of file diff --git a/macros/latex/contrib/iaria-lite/README b/macros/latex/contrib/iaria-lite/README index d94943e549..62decf0ef3 100644 --- a/macros/latex/contrib/iaria-lite/README +++ b/macros/latex/contrib/iaria-lite/README @@ -1,5 +1,5 @@ ----------------------------- - Version 0.3 of the iaria-lite class + Version 0.4 of the iaria-lite class Christoph P. Neumann ----------------------------- diff --git a/macros/latex/contrib/iaria-lite/iaria-lite.dtx b/macros/latex/contrib/iaria-lite/iaria-lite.dtx index 2476b70fe2..c6d98a9f1e 100644 --- a/macros/latex/contrib/iaria-lite/iaria-lite.dtx +++ b/macros/latex/contrib/iaria-lite/iaria-lite.dtx @@ -2,15 +2,15 @@ % iaria-lite.dtx generated using makedtx version 1.2 (c) Nicola Talbot % Command line args: % -preamble "Copyright 2023-2024 Christoph P. Neumann This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license or any later version. The latest version of this license is in https://www.latex-project.org/lppl.txt and version 1.3c or later is part of all distributions of LaTeX version 2008 or later. This work has the LPPL maintenance status maintained. The Current Maintainer of this work is Christoph P. Neumann. " +% -macrocode ".*" % -setambles ".*=>\nopreamble" -% -date "2024-2024" % -src "(_cpn_copyIntoExamplesFolder_cls.cmd|iaria-lite.cls)=>\1" -% -macrocode ".*" -% -doc "doc/iaria-lite.tex" -% -author "Christoph P. Neumann " +% -date "2024-2024" % -dir "src" +% -author "Christoph P. Neumann " +% -doc "doc/iaria-lite.tex" % iaria-lite -% Created on 2024/9/14 19:09 +% Created on 2024/9/14 21:27 %\fi %\iffalse %<*package> @@ -56,7 +56,7 @@ %\title{\textsf{iaria-lite}\\ % An Unofficial IARIA LaTeX Class (Lite Version)} %\author{Christoph P.\ Neumann \texttt{$<$cyberpetaneuron@gmail.com$>$}} -%\date{Version 0.3} +%\date{Version 0.4} %\maketitle %\PrintChanges % @@ -122,14 +122,34 @@ %This package provides the documentclass \texttt{iaria-lite}. The documentclass %supports the following options: % -% %\begin{itemize} %\item |conference| Passed to IEEEtran %\item |a4paper| Passed to IEEEtran -%\item |flushend| Activate flushend package -%\item |pbalance| Activate pbalance package +%\item |subfig| Loads subfig package with IARIA style settings +%\item |subcaption| Loads subcaption package with IARIA style settings +%\item |flushend| Activate flushend package (compatible with arXiv build process) +%\item |pbalance| Activate pbalance package (incompatible with arXiv build process) %\end{itemize} % +%A Remark about two-column document balancing on the last page: +%The flushend package is recommended, because it works within the arXiv automated build process. +%However, flushend has a major incampatibility with package lineno, which is, e.\,g., transitively loaded by package mindflow. +%Thus, in case when flushend does not have any effect, check whether one of your packages loads lineno. +%Usually you are stuck with your packages and, thus, will instead be forced to switch from flushend to pbalance. +%Please be aware that pbalance works great and has high compatibility, but unfortunately it will not have any effect within the arXiv automated build process. +%In case of both, a somehow needed lineno package and an intended arXiv upload, I recommend to do without two-column balancing on the last page and just to stay away from both flushend and pbalance, in order to ensure that your paper is layouted identically in IARIA submission and arXiv upload. +%I hope this remark proves helpful, it took me some nerve to find out. +% +%There is also another important difference between flushend and pbalance: the handling of footnotes on the last page. +%Flushend provides a decent result, but the result of pbalance is incomprehensible. +%I strongly recommend avoiding footnotes on the last page. +%If you absolutely need footnotes on the last page, consider staying away from two-column balancing on the last page. +% +%About subfigures: +%Both well-known packages subfig and subcaption can be used. +%However, they are not compatible with each other and we can either load one or the other. +%Both require dedicated style settings to be compatible with IARIA formatting rules. +%Thus, the document class provides options to load them for you with correct settings. % %\section{Requirements} % @@ -144,6 +164,8 @@ %\item hyperref %\item orcidlink %\item pbalance +%\item subcaption +%\item subfig %\item times %\item url %\item xcolor @@ -198,13 +220,25 @@ pause% \end{macrocode} \NeedsTeXFormat{LaTeX2e} % Provide the name of your document class, the date it was last updated, and a comment about what it's used for -\ProvidesClass{iaria-lite}[2024/09/15 unofficial IARIA-lite conference template v0.3] +\ProvidesClass{iaria-lite}[2024/09/16 unofficial IARIA-lite conference template v0.4] % Define marker counter for options (counter are global in latex): +\newcounter{iaria@subfigtracker} +\newcounter{iaria@subcaptiontracker} \newcounter{iaria@pbalancetracker} \newcounter{iaria@flushendtracker} % Declare options: + +\DeclareOption{subfig}{ + \setcounter{iaria@subfigtracker}{1} + \typeout{iaria class: subfig option is set (use subfloat command).} +} +\DeclareOption{subcaption}{ + \setcounter{iaria@subcaptiontracker}{1} + \typeout{iaria class: subcaption option is set (use subfigure command).} +} + \DeclareOption{onecolumn}{\OptionNotUsed} % IEEE option onecolumn will be ignored \DeclareOption{pbalance}{ @@ -274,9 +308,6 @@ pause% \end{macrocode} \crcr} \makeatother -% IARIA subfigure captions require this: -\RequirePackage[caption=false,font=footnotesize]{subfig} - % IARIA requires to bring the table caption in the same line of "Table I" \usepackage{etoolbox} \makeatletter @@ -287,6 +318,17 @@ pause% \end{macrocode} {} \makeatother +% IARIA subfigure captions require parentheses and footnotesize: +\ifnum\value{iaria@subfigtracker}=1 + \typeout{iaria class: load subfig package (use subfloat command).} + \RequirePackage[caption=false,font=footnotesize]{subfig} +\fi +\ifnum\value{iaria@subcaptiontracker}=1 + \typeout{iaria class: load subcaption package (use subfigure command).} + \RequirePackage{subcaption} + \captionsetup[subfigure]{labelformat=parens,font=footnotesize} +\fi + % Balance/level columns at the last page / in bibliography % DISCLAIMER: No solution is a 100%/perfect one! % Mainstream option: pbalance (see https://ctan.org/pkg/pbalance) diff --git a/macros/latex/contrib/iaria-lite/iaria-lite.ins b/macros/latex/contrib/iaria-lite/iaria-lite.ins index ebc14d5bf2..84f0e6507f 100644 --- a/macros/latex/contrib/iaria-lite/iaria-lite.ins +++ b/macros/latex/contrib/iaria-lite/iaria-lite.ins @@ -1,4 +1,4 @@ -% iaria-lite.ins generated using makedtx version 1.2 2024/9/14 19:09 +% iaria-lite.ins generated using makedtx version 1.2 2024/9/14 21:27 \input docstrip \preamble diff --git a/macros/latex/contrib/iaria-lite/iaria-lite.pdf b/macros/latex/contrib/iaria-lite/iaria-lite.pdf Binary files differindex 301d4c6255..a015125dbc 100644 --- a/macros/latex/contrib/iaria-lite/iaria-lite.pdf +++ b/macros/latex/contrib/iaria-lite/iaria-lite.pdf diff --git a/macros/latex/contrib/iaria/README b/macros/latex/contrib/iaria/README index 16c3774c97..45ade57c51 100644 --- a/macros/latex/contrib/iaria/README +++ b/macros/latex/contrib/iaria/README @@ -1,5 +1,5 @@ ----------------------------- - Version 0.3 of the iaria class + Version 0.4 of the iaria class Christoph P. Neumann ----------------------------- diff --git a/macros/latex/contrib/iaria/iaria.dtx b/macros/latex/contrib/iaria/iaria.dtx index f4c62b202f..e9e8b44644 100644 --- a/macros/latex/contrib/iaria/iaria.dtx +++ b/macros/latex/contrib/iaria/iaria.dtx @@ -1,16 +1,16 @@ %\iffalse % iaria.dtx generated using makedtx version 1.2 (c) Nicola Talbot % Command line args: -% -author "Christoph P. Neumann " % -setambles ".*=>\nopreamble" -% -doc "doc/iaria.tex" -% -macrocode ".*" +% -src "(_cpn_copyIntoExamplesFolder_cls.cmd|iaria.cls)=>\1" % -preamble "Copyright 2023-2024 Christoph P. Neumann This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license or any later version. The latest version of this license is in https://www.latex-project.org/lppl.txt and version 1.3c or later is part of all distributions of LaTeX version 2008 or later. This work has the LPPL maintenance status maintained. The Current Maintainer of this work is Christoph P. Neumann. " +% -author "Christoph P. Neumann " +% -macrocode ".*" % -date "2023-2024" -% -src "(_cpn_copyIntoExamplesFolder_cls.cmd|iaria.cls)=>\1" % -dir "src" +% -doc "doc/iaria.tex" % iaria -% Created on 2024/9/14 19:09 +% Created on 2024/9/14 21:35 %\fi %\iffalse %<*package> @@ -56,7 +56,7 @@ %\title{\textsf{iaria}\\ %An Unofficial IARIA LaTeX Class} %\author{Christoph P.\ Neumann \texttt{$<$cyberpetaneuron@gmail.com$>$}} -%\date{Version 0.3} +%\date{Version 0.4} %\maketitle %\PrintChanges % @@ -104,7 +104,7 @@ % %\section{Templates} % -%For a quick start the \textsf{iaria-lite} distribution contains document +%For a quick start the \textsf{iaria} distribution contains document %templates. %The templates can be found in the \texttt{iaria-example-neumann.zip} file. % @@ -114,14 +114,35 @@ %This package provides the documentclass \texttt{iaria}. The documentclass %supports the following options: % -% %\begin{itemize} %\item |conference| Passed to IEEEtran %\item |a4paper| Passed to IEEEtran -%\item |flushend| Activate flushend package -%\item |pbalance| Activate pbalance package +%\item |subfig| Loads subfig package with IARIA style settings +%\item |subcaption| Loads subcaption package with IARIA style settings +%\item |flushend| Activate flushend package (compatible with arXiv build process) +%\item |pbalance| Activate pbalance package (incompatible with arXiv build process) %\end{itemize} % +%A Remark about two-column document balancing on the last page: +%The flushend package is recommended, because it works within the arXiv automated build process. +%However, flushend has a major incampatibility with package lineno, which is, e.\,g., transitively loaded by package mindflow. +%Thus, in case when flushend does not have any effect, check whether one of your packages loads lineno. +%Usually you are stuck with your packages and, thus, will instead be forced to switch from flushend to pbalance. +%Please be aware that pbalance works great and has high compatibility, but unfortunately it will not have any effect within the arXiv automated build process. +%In case of both, a somehow needed lineno package and an intended arXiv upload, I recommend to do without two-column balancing on the last page and just to stay away from both flushend and pbalance, in order to ensure that your paper is layouted identically in IARIA submission and arXiv upload. +%I hope this remark proves helpful, it took me some nerve to find out. +% +%There is also another important difference between flushend and pbalance: the handling of footnotes on the last page. +%Flushend provides a decent result, but the result of pbalance is incomprehensible. +%I strongly recommend avoiding footnotes on the last page. +%If you absolutely need footnotes on the last page, consider staying away from two-column balancing on the last page. +% +%About subfigures: +%Both well-known packages subfig and subcaption can be used. +%However, they are not compatible with each other and we can either load one or the other. +%Both require dedicated style settings to be compatible with IARIA formatting rules. +%Thus, the document class provides options to load them for you with correct settings. +% %\section{Requirements} % %We instrument several other \LaTeX\ packages for different purposes, @@ -138,6 +159,8 @@ %\item inputenc %\item orcidlink %\item pbalance +%\item subcaption +%\item subfig %\item times %\item url %\item xcolor @@ -206,7 +229,7 @@ pause% \end{macrocode} \NeedsTeXFormat{LaTeX2e} % Provide the name of your document class, the date it was last updated, and a comment about what it's used for -\ProvidesClass{iaria}[2024/09/15 unofficial IARIA conference template v0.3] +\ProvidesClass{iaria}[2024/09/16 unofficial IARIA conference template v0.4] % Define marker counter for options (counter are global in latex): \newcounter{iaria@subfigtracker} diff --git a/macros/latex/contrib/iaria/iaria.ins b/macros/latex/contrib/iaria/iaria.ins index c252246deb..4bc3d864b8 100644 --- a/macros/latex/contrib/iaria/iaria.ins +++ b/macros/latex/contrib/iaria/iaria.ins @@ -1,4 +1,4 @@ -% iaria.ins generated using makedtx version 1.2 2024/9/14 19:09 +% iaria.ins generated using makedtx version 1.2 2024/9/14 21:35 \input docstrip \preamble diff --git a/macros/latex/contrib/iaria/iaria.pdf b/macros/latex/contrib/iaria/iaria.pdf Binary files differindex 3b0e704128..7a3e0ddad7 100644 --- a/macros/latex/contrib/iaria/iaria.pdf +++ b/macros/latex/contrib/iaria/iaria.pdf diff --git a/macros/latex/contrib/iaria/template/iaria-example-neumann.pdf b/macros/latex/contrib/iaria/template/iaria-example-neumann.pdf Binary files differindex 00f49c7987..a0d1d5b5e4 100644 --- a/macros/latex/contrib/iaria/template/iaria-example-neumann.pdf +++ b/macros/latex/contrib/iaria/template/iaria-example-neumann.pdf diff --git a/macros/latex/contrib/iaria/template/iaria-example-neumann.tex b/macros/latex/contrib/iaria/template/iaria-example-neumann.tex index bd248409dd..387d8e2cc4 100644 --- a/macros/latex/contrib/iaria/template/iaria-example-neumann.tex +++ b/macros/latex/contrib/iaria/template/iaria-example-neumann.tex @@ -83,7 +83,7 @@ final % Always enable microtype, even if in draft mode. This helps finding bad b \hyphenation{block-chain block-chains Ethe-re-um} % Capitalization: https://capitalizemytitle.com/style/Chicago/ -\title{The Unofficial \textsmaller{IARIA} \LaTeX{} Class Paper Example (v2024-09)} +\title{The \textsmaller{IARIA} \LaTeX{} Class Paper Example (v2024-09)} \author{ \IEEEauthorblockN{Christoph P.\ Neumann\,\orcidlink{0000-0002-5936-631X}} @@ -103,7 +103,7 @@ final % Always enable microtype, even if in draft mode. This helps finding bad b \maketitle \begin{abstract} - \lipsum[1][3-12] + \lipsum[21]%[3-12] \end{abstract} % A list of IEEE Computer Society appoved keywords can be obtained at @@ -121,23 +121,23 @@ The \textsmaller{IARIA} formatting rules \cite{iaria2014formattingrules} are ado In addition, be aware of the supplementary \textsmaller{IARIA} editorial rules \cite{iaria2009editorialrules} \faWarning{} that provide a beginner-friendly set of further advices. It is recommended to use a grammar tool, e.\,g., the LanguageTool \cite{languagetool} browser plugin in combination with Overleaf \cite{overleaf}. -\lipsum[2] +\lipsum[22] \{\faWarning{} \textsmaller{IARIA} editorial rules: Introduction must end with a paragraph describing the structure of the paper!\} The remainder of the paper is organized as follows: In Section~II, … \section{Related work \textbar{} Methods} -\lipsum[3] +\lipsum[23] \section{Results} -\lipsum[4] +\lipsum[24] \section{Discussion \textbar{} Evalution} -\lipsum[5] +\lipsum[25] \section{Conclusion and Future Work} \{\faWarning{} \textsmaller{IARIA} editorial rules: Last section must be \textquote{Conclusion and Future Work}!\} -\lipsum[6] +\lipsum[26] %%% CPN Peer-Rev'd \nocite{LeNe24vocattllm} % Co diff --git a/macros/latex/contrib/keytheorems/CHANGELOG.md b/macros/latex/contrib/keytheorems/CHANGELOG.md new file mode 100644 index 0000000000..053436ddb7 --- /dev/null +++ b/macros/latex/contrib/keytheorems/CHANGELOG.md @@ -0,0 +1,18 @@ +# Changelog for keytheorems package + +## [v0.1.2] +- Move support for memoir and AMS classes to dedicated files +- document `headformat` key +- add Italian translations +- add `indent` list key +- add `no-toc` list key +- documentation improvements + +## [v0.1.1] - 2024-09-09 +- First CTAN release + +## 0.1.0 - 2024-09-04 +- First release + +[v0.1.2]: https://github.com/mbertucci47/keytheorems/compare/v0.1.1...v0.1.2 +[v0.1.1]: https://github.com/mbertucci47/keytheorems/compare/v0.1.0...v0.1.1
\ No newline at end of file diff --git a/macros/latex/contrib/keytheorems/README.md b/macros/latex/contrib/keytheorems/README.md index 205c7aab8b..baf8506c2d 100644 --- a/macros/latex/contrib/keytheorems/README.md +++ b/macros/latex/contrib/keytheorems/README.md @@ -5,6 +5,8 @@ with a key-value interface. Meant to emulate most of the functionality of [`thmtools`](https://www.ctan.org/pkg/thmtools) but written in expl3. If you find a bug please open an issue or pull request. +The package is maintained by Matthew Bertucci. + ## Sample document ```tex \documentclass{article} diff --git a/macros/latex/contrib/keytheorems/doc/keytheorems-doc.pdf b/macros/latex/contrib/keytheorems/doc/keytheorems-doc.pdf Binary files differindex 935d96b6cf..79acb6371a 100644 --- a/macros/latex/contrib/keytheorems/doc/keytheorems-doc.pdf +++ b/macros/latex/contrib/keytheorems/doc/keytheorems-doc.pdf diff --git a/macros/latex/contrib/keytheorems/doc/keytheorems-doc.tex b/macros/latex/contrib/keytheorems/doc/keytheorems-doc.tex index e63783a70f..b285f5f840 100644 --- a/macros/latex/contrib/keytheorems/doc/keytheorems-doc.tex +++ b/macros/latex/contrib/keytheorems/doc/keytheorems-doc.tex @@ -20,7 +20,7 @@ \usepackage{cleveref} \usepackage{amssymb} -\def\version{0.1.1} +\def\version{0.1.2} \title{% \pkg{keytheorems} package \\[1ex] @@ -129,14 +129,16 @@ \maketitle \begin{abstract} -An \pkg{expl3}-implementation of a key-value interface to \pkg{amsthm}, implementing most of the functionality provided by \pkg{thmtools}. Several issues encountered with \pkg{thmtools} are avoided (see the README for a list) and a few new features are added. +An \pkg{expl3}-implementation of a key-value interface to \pkg{amsthm}, implementing most of the functionality provided by \pkg{thmtools}. +Several issues encountered with \pkg{thmtools} are avoided (see the README for a list) and a few new features are added. \end{abstract} \tableofcontents \section{Dependencies} -Without using the \refKey{tcolorbox} or \refKey{tcolorbox-no-titlebar} options, the package loads the \pkg{aliascnt}, \pkg{amsthm}, \pkg{refcount}, and \pkg{translations} packages. A \LaTeX{} kernel no older than 2023-06-01 is required; if older than 2024-06-01, \pkg{nameref} is required. +Without using the \refKey{tcolorbox} or \refKey{tcolorbox-no-titlebar} options, the package loads the \pkg{aliascnt}, \pkg{amsthm}, \pkg{refcount}, and \pkg{translations} packages. +A \LaTeX{} kernel no older than 2023-06-01 is required; if older than 2024-06-01, \pkg{nameref} is required. \section{Global Options} @@ -148,13 +150,16 @@ Every key in this section can be given as a package option with \cs{usepackage}\ \begin{docKey}{overload} {} {initially unset} -Redefines \cs{newtheorem} to internally use the \pkg{keytheorems} machinery. The syntax remains the same. This is automatically set by \refKey{thmtools-compat}. +Redefines \cs{newtheorem} to internally use the \pkg{keytheorems} machinery. The syntax remains the same. +This is automatically set by \refKey{thmtools-compat}. \end{docKey} \begin{docKey}{thmtools-compat} {} {initially unset} -For compatibility with \pkg{thmtools} syntax. Currently defines the commands in the left column below. The right column lists the corresponding \pkg{keytheorems} replacement that should be used in new documents. +For compatibility with \pkg{thmtools} syntax. +Currently defines the commands in the left column below. +The right column lists the corresponding \pkg{keytheorems} replacement that should be used in new documents. \begin{center} \begin{tabular}{cc} \pkg{thmtools} command & \pkg{keytheorems} replacement \\ @@ -177,21 +182,23 @@ Also defined are the \docAuxKey*{shaded} and \docAuxKey*{thmbox} keys, implement \begin{docKey}{store-all} {} {initially unset} -Tells \pkg{keytheorems} to grab the body of each theorem so it can later be -printed with the \refKey{print-body} option of \refCom{listofkeytheorems}. Note that this means a theorem body -\emph{cannot} contain verbatim material. +Tells \pkg{keytheorems} to grab the body of each theorem so it can later be printed with the \refKey{print-body} option of \refCom{listofkeytheorems}. +Note that this means a theorem body \emph{cannot} contain verbatim material. \end{docKey} \begin{docKey}{restate-counters} {=\marg{comma-list of counters}} {initially \ttbraces{equation}} -Additional counters whose values are preserved when a theorem is restated. This key does not reset the list, so you don't need to include |equation| in \meta{comma-list}. +Additional counters whose values are preserved when a theorem is restated. +This key does not reset the list, so you don't need to include |equation| in \meta{comma-list}. \end{docKey} \begin{docKey}{continues-code} {=\meta{code with \textup{\texttt{\#1}}}} {initially \cs{GetTranslation}\ttbraces{keythms\string_continues}\cs{pageref}\ttbraces{\#1}} -The code used to typeset the note produced by the \refKey{continues} key. If English or an unknown language is used, defaults to \texttt{continuing from p.}\cs{,}\cs{pageref}\ttbraces{\#1}. Currently (likely inaccurate!) translations exist for French, German, and Spanish. +The code used to typeset the note produced by the \refKey{continues} key. +If English or an unknown language is used, defaults to \texttt{continuing from p.}\cs{,}\cs{pageref}\ttbraces{\#1}. +Currently (likely inaccurate!) translations exist for French, German, Italian, and Spanish. \end{docKey} \begin{docKey}{qed-symbol} @@ -203,16 +210,20 @@ Redefines \cs{qedsymbol} to be \meta{symbol}. \begin{docKey}{auto-translate} {\colOpt{=true\textbar false}} {default |true|, initially |true|} -If |false|, \pkg{keytheorems} does not automatically translate the title text for \refCom{listofkeytheorems} and the note produced by the \refKey{continues} key. These texts can be manually customized with the \refKey{title} and \refKey{continues-code} keys, respectively. +If |false|, \pkg{keytheorems} does not automatically translate the title text for \refCom{listofkeytheorems} and the note produced by the \refKey{continues} key. +These texts can be manually customized with the \refKey{title} and \refKey{continues-code} keys, respectively. \end{docKey} \section{Defining Theorems} \begin{docCommand}{newkeytheorem} {\marg{env name}\oarg{options}} -Defines a theorem environment \meta{env name} which itself takes a few options (see \autoref{in-doc-keys}). You can also declare multiple theorems at once by replacing \meta{env name} with a comma-list of names, e.g. \cs{newkeytheorem}\ttbraces{theorem,lemma,proposition}\bracks{\meta{options}}. +Defines a theorem environment \meta{env name} which itself takes a few options (see \autoref{in-doc-keys}). +You can also declare multiple theorems at once by replacing \meta{env name} with a comma-list of names, e.g. \cs{newkeytheorem}\ttbraces{theorem,lemma,proposition}\bracks{\meta{options}}. -By default, the theorem's printed name is a title-cased \meta{env name}. This can be changed with the \refKey{thm/name} key. All \meta{options} are described in subsections \ref{thm-thmtools-keys} and \ref{thm-added-keys}. +By default, the theorem's printed name is a title-cased \meta{env name}. +This can be changed with the \refKey{thm/name} key. +All \meta{options} are described in subsections \ref{thm-thmtools-keys} and \ref{thm-added-keys}. \end{docCommand} \begin{tcbwritetemp} @@ -240,7 +251,9 @@ Alternatively, the optional argument may contain any of the following keys. \begin{docKey}{note} {=\meta{text}} {initially unset} -Alias \docAuxKey[][doc label=thmuse/name]{name}. This is the key-value equivalent of the optional argument described above. This syntax, however, allows the argument to contain other keys. +Alias \docAuxKey[][doc label=thmuse/name]{name}. +This is the key-value equivalent of the optional argument described above. +This syntax, however, allows the argument to contain other keys. \begin{keythmscode}[] \begin{theorem}[some heading] @@ -256,7 +269,8 @@ Some more text \begin{docKey}{short-note} {=\meta{text}} {initially unset} -Alias \docAuxKey{short-name}. This replaces the value of \refKey{note} when displayed in \refCom{listofkeytheorems}. +Alias \docAuxKey{short-name}. +This replaces the value of \refKey{note} when displayed in \refCom{listofkeytheorems}. \end{docKey} \begin{docKey}{label} @@ -276,7 +290,10 @@ Some text \begin{docKey}{continues} {\sarg=\meta{label name}} {initially unset} -Pick up a theorem where you left off. The theorem number remains the same. The printed text can be customized with the \refKey{continues-code} option. The starred version also copies the theorem note, if it exists. +Pick up a theorem where you left off. +The theorem number remains the same. +The printed text can be customized with the \refKey{continues-code} option. +The starred version also copies the theorem note, if it exists. \begin{keythmscode}[] \begin{theorem}[continues=foo] @@ -289,7 +306,8 @@ Pick up a theorem where you left off. The theorem number remains the same. The p \begin{docKey}{store} {=\meta{tag}} {initially unset} -Alias \docAuxKey{restate}. Stores the the theorem to be restated at any point in the document with \refCom{getkeytheorem}. +Alias \docAuxKey{restate}. +Stores the the theorem to be restated at any point in the document with \refCom{getkeytheorem}. \begin{keythmscode}[] \begin{theorem}[store=blub] @@ -299,7 +317,8 @@ More brilliant mathematics. \getkeytheorem{blub} \end{keythmscode} -A theorem given this key \emph{cannot} contain verbatim material or other unexpected catcodes, such as a \pkg{tikz-cd} diagram. The latter issue can be averted with the \texttt{ampersand-replacement} key. +A theorem given this key \emph{cannot} contain verbatim material or other unexpected catcodes, such as a \pkg{tikz-cd} diagram. +The latter issue can be averted with the \texttt{ampersand-replacement} key. \begin{tcbwritetemp} \usepackage{tikz} @@ -323,7 +342,8 @@ Y \ar[r] \& S \begin{docKey}{listhack} {=\docValue*{true}\textbar\docValue*{false}} {initially |false|} -Meant only to be used with the \refKey{break} style key for a theorem starting with a list. Compare: +Meant only to be used with the \refKey{break} style key for a theorem starting with a list. +Compare: \begin{tcbwritetemp} \newkeytheoremstyle{breaksty}{break} @@ -350,12 +370,15 @@ Note that the value |true| must be explicitly set so that |listhack| is not inte \begin{docKey}[][doc label=thm/seq]{seq} {=\meta{name}} {initially unset} -Adds the theorem to a custom sequence \meta{name} that can then be listed with \cs{listofkeytheorems}\bracks{seq=\meta{name}}. See \refKey{listof/seq} for more details. +Adds the theorem to a custom sequence \meta{name} that can then be listed with \cs{listofkeytheorems}\bracks{seq=\meta{name}}. +See \refKey{listof/seq} for more details. \end{docKey} \subsection{Keys inherited from \pkg{thmtools}} \label{thm-thmtools-keys} -These are the \oarg{options} available to \cs{newkeytheorem}. Except for \refKey{thm/name} and \refKey{style}, each key below can also be used in \refCom{newkeytheoremstyle}. For more description, see the \href{https://ctan.org/pkg/thmtools}{\pkg{thmtools}} package. +These are the \oarg{options} available to \cs{newkeytheorem}. +Except for \refKey{thm/name} and \refKey{style}, each key below can also be used in \refCom{newkeytheoremstyle}. +For more description, see the \href{https://ctan.org/pkg/thmtools}{\pkg{thmtools}} package. \begin{docKey}[][doc label=thm/name]{name} {=\meta{display name}} @@ -475,13 +498,16 @@ Some text \begin{docKey}{refname} {=\meta{ref name} \textrm{or} \brackets{\meta{singular name},\meta{plural name}}} {initially \meta{display name}} -If a single string, then the name used by \pkg{hyperref}'s \cs{autoref} and \pkg{cleveref}'s \cs{cref}. If two strings separated by a comma, then the second string is the plural form used by \cs{cref}. +If a single string, then the name used by \pkg{hyperref}'s \cs{autoref} and \pkg{cleveref}'s \cs{cref}. +If two strings separated by a comma, then the second string is the plural form used by \cs{cref}. \end{docKey} \begin{docKey}{Refname} {=\meta{ref name} \textrm{or} \brackets{\meta{singular name},\meta{plural name}}} {initially \meta{display name}} -Same as \refKey{refname} but for \docAuxCommand{Autoref} and \cs{Cref}. Note that \cs{Autoref} is defined by \pkg{keytheorems}, but requires \pkg{hyperref} to work. +Same as \refKey{refname} but for \docAuxCommand{Autoref} and \cs{Cref}. +Note that \cs{Autoref} is defined by \pkg{keytheorems}, but requires \pkg{hyperref} to work. +As with \cs{autoref}, there is also a starred version \docAuxCommand{Autoref*} that suppresses the hyperlink. \begin{tcbwritetemp} \newkeytheorem{prop}[ @@ -509,7 +535,8 @@ Consider \cref{abc,def}. \begin{docKey}{qed} {\colOpt{=\meta{symbol}}} {default \cs{openbox}, initially unset} -Adds \colOpt{\meta{symbol}} to the end of the theorem body. If no value is given, the symbol \openbox\ is used. +Adds \colOpt{\meta{symbol}} to the end of the theorem body. +If no value is given, the symbol \openbox\ is used. \begin{tcbwritetemp} \newkeytheorem{example}[qed] @@ -587,7 +614,11 @@ Some text \begin{docCommand}{newkeytheoremstyle} {\marg{name}\marg{options}} -This is \pkg{keytheorems}' version of \pkg{thmtools}' \cs{declaretheoremstyle}\bracks{\meta{options}}\marg{name}. Since it makes little sense to define a style with no keys, we've made the \meta{options} argument mandatory. Note that unlike \pkg{amsthm}'s \cs{newtheoremstyle}, this command will error if a style has already been defined. To overwrite an existing style, there is the analogous \docAuxCommand{renewkeytheoremstyle}. For completeness, there is also \docAuxCommand{declarekeytheoremstyle} and \docAuxCommand{providekeytheoremstyle}. +This is \pkg{keytheorems}' version of \pkg{thmtools}' \cs{declaretheoremstyle}\bracks{\meta{options}}\marg{name}. +Since it makes little sense to define a style with no keys, we've made the \meta{options} argument mandatory. +Note that unlike \pkg{amsthm}'s \cs{newtheoremstyle}, this command will error if a style has already been defined. +To overwrite an existing style, there is the analogous \docAuxCommand{renewkeytheoremstyle}. +For completeness, there is also \docAuxCommand{declarekeytheoremstyle} and \docAuxCommand{providekeytheoremstyle}. \end{docCommand} \begin{notebox} @@ -596,7 +627,8 @@ For the AMS classes \cls{amsart}, \cls{amsbook}, and \cls{amsproc}, as well as t \subsection{Keys inherited from \pkg{thmtools}} -The following keys have the same meaning and syntax as the corresponding \pkg{thmtools} keys. In addition to the list below, most of the keys available to \refCom{newkeytheorem} can be used in \cs{newkeytheoremstyle}. +The following keys have the same meaning and syntax as the corresponding \pkg{thmtools} keys. +In addition to the list below, most of the keys available to \refCom{newkeytheorem} can be used in \cs{newkeytheoremstyle}. \begin{docKey}{spaceabove} {=\meta{length}} @@ -658,7 +690,7 @@ Do not use this with the \refKey{postheadspace} key. \end{docKey} -\begin{docKey}{headstyle} +\begin{docKey}{headformat} {=\docValue{margin}\textbar\docValue{swapnumber}\textbar\meta{code using \cs{NAME}, \cs{NUMBER}, and \cs{NOTE}}} {} Alias \docAuxKey{headstyle}. Within \meta{code}, the commands \docAuxCommand{NAME}, \docAuxCommand{NUMBER}, and \docAuxCommand{NOTE} correspond to the formatted parts of the theorem head. @@ -669,16 +701,20 @@ Alias \docAuxKey{headstyle}. Within \meta{code}, the commands \docAuxCommand{NAM \begin{docKey}{inherit-style} {=\meta{style name}} {initially unset} -Inherit the keys of any style declared with \refCom{newkeytheoremstyle}. Additionally, the three styles predefined by \pkg{amsthm} are possible values: \docValue{plain}, \docValue{definition}, and \docValue{remark}. +Inherit the keys of any style declared with \refCom{newkeytheoremstyle}. +Additionally, the three styles predefined by \pkg{amsthm} are possible values: \docValue{plain}, \docValue{definition}, and \docValue{remark}. \end{docKey} \section{Restating Theorems} -When a theorem is given the \refKey{store} key, the contents of the theorem are saved and written to a |.thlist| file. At the start of the next run, this file is input at the beginning of the document and allows you to retrieve the stored theorems at any point, before or after the original theorem. +When a theorem is given the \refKey{store} key, the contents of the theorem are saved and written to a |.thlist| file. +At the start of the next run, this file is input at the beginning of the document and allows you to retrieve the stored theorems at any point, before or after the original theorem. \begin{docCommand}{getkeytheorem} {\oarg{property}\marg{tag}} -Retrieves the theorem given the key |store=|\meta{tag}. An optional \meta{property} can be given to retrieve only the corresponding part of the theorem. Currently only the property |body| is implemented, which retrieves the (unformatted) body of the theorem. +Retrieves the theorem given the key |store=|\meta{tag}. +An optional \meta{property} can be given to retrieve only the corresponding part of the theorem. +Currently only the property |body| is implemented, which retrieves the (unformatted) body of the theorem. \begin{keythmscode}[] \getkeytheorem{mytag} @@ -712,7 +748,9 @@ example! \begin{docCommand}{listofkeytheorems} {\oarg{options}} - +Similar to \cs{listoffigures} or \cs{listoftables} but for theorems. +For \cls{memoir} and the AMS classes, \pkg{keytheorems} tries to copy the formatting of these commands as defined by the class. +For other classes, manual adjustments to \refKey{numwidth} and \refKey{indent} may be necessary. \end{docCommand} \begin{docCommand}{keytheoremlistset} @@ -729,7 +767,7 @@ example! \begin{docKey}{numwidth} {=\meta{length}} {initially |2.3em|} - +For the AMS classes, this is initially |1.5pc|. \end{docKey} \begin{docKey}{ignore} @@ -773,7 +811,9 @@ example! \begin{docKey}{title} {=\meta{text}} {initially \cs{GetTranslation}\ttbraces{keythms\string_listof\string_title}} -Defaults to ``List of Theorems'' if English or an unknown language is used. Currently French, German, and Spanish have (likely inaccurate!) translations. A translation can be added with a GitHub pull request or manually with \cs{DeclareTranslation}\marg{lang}\ttbraces{keythms\string_listof\string_title}\marg{text}. +Defaults to ``List of Theorems'' if English or an unknown language is used. +Currently French, German, Italian, and Spanish have (likely inaccurate!) translations. +A translation can be added with a GitHub pull request or manually with \cs{DeclareTranslation}\marg{lang}\ttbraces{keythms\string_listof\string_title}\marg{text}. \end{docKey} \begin{docKey}{swapnumber} @@ -784,28 +824,40 @@ Defaults to ``List of Theorems'' if English or an unknown language is used. Curr \subsection{Keys added by \pkg{keytheorems}} +\begin{docKey}{indent} + {=\meta{length}} + {initially |1.5em|} +Sets the left indent of items in the list of theorems. +For \cls{memoir} and the AMS classes, the indent is initially |0pt|. +It is not recommended to change this unless your class has different defaults not already covered. +\end{docKey} + \begin{docKey}{onlynumbered} {\colOpt{=\marg{comma-list of env names}}} {initially unset} -Similar to \refKey{onlynamed}, but lists only those theorems which are numbered. This is useful if you'd like to exclude things like unnumbered definitions and remarks from the list of theorems. +Similar to \refKey{onlynamed}, but lists only those theorems which are numbered. +This is useful if you'd like to exclude things like unnumbered definitions and remarks from the list of theorems. \end{docKey} \begin{docKey}[][doc label=listof/seq]{seq} {=\meta{name}} {initially unset} -Used to list only the theorems added to the custom sequence \meta{name} with the \refKey{thm/seq} theorem key. This is the only way to fully customize which theorems appear in the list of theorems. Unlike with \refKey{show}, you do not need to use \refKey{ignoreall} to prevent theorems not in \meta{name} from being printed. +Used to list only the theorems added to the custom sequence \meta{name} with the \refKey{thm/seq} theorem key. +This is the only way to fully customize which theorems appear in the list of theorems. +Unlike with \refKey{show}, you do not need to use \refKey{ignoreall} to prevent theorems not in \meta{name} from being printed. \end{docKey} \begin{docKey}{title-code} {=\meta{code with \textup{\texttt{\#1}}}} {initially \cs{section*}\ttbraces{\#1}} -If \cs{chapter} is defined, then initially this is instead \cs{chapter*}\ttbraces{\#1}. +If \cs{chapter} is defined, then initially this is instead \cs{chapter*}\ttbraces{\#1}. This key has no effect if used with an AMS class because these classes hard-code the section heading into \cs{@starttoc}. \end{docKey} \begin{docKey}{no-title} - {} - {initially unset} -Suppresses the title of the list of theorems. Useful for custom ordering of the list. + {\colOpt{=true\textbar false}} + {initially |false|} +Suppresses the title of the list of theorems. +Useful for custom ordering of the list. \begin{keythmscode}[] \keytheoremlistset{ignoreall} @@ -824,7 +876,8 @@ Formats the optional note in the list of theorems. \begin{docKey}{print-body} {} {initially unset} -Instead of listing the theorem headings, the theorems are restated with their body text. Not very useful without the \refKey{store-all} load-time option. +Instead of listing the theorem headings, the theorems are restated with their body text. +Not very useful without the \refKey{store-all} load-time option. \end{docKey} \begin{docKey}{no-continues} @@ -836,7 +889,8 @@ Suppresses the printing of theorems given the \refKey{continues} key in the list \begin{docKey}{no-chapter-skip} {\colOpt{=true\textbar false}} {initially |false|} -By default a small vertical space is inserted between each chapter's chunk of theorems. Setting this key to |true| removes this space. +By default a small vertical space is inserted between each chapter's chunk of theorems. +Setting this key to |true| removes this space. \end{docKey} \begin{docKey}{chapter-skip-length} @@ -845,15 +899,18 @@ By default a small vertical space is inserted between each chapter's chunk of th Controls the amount of space inserted between chunks. \end{docKey} +\begin{docKey}{no-toc} + {\colOpt{=true\textbar false}} + {initially false} +With the standard classes, lists of figures/tables are not added to the table of contents by default. The same is true for \cs{listofkeytheorems}, and with those classes this key does nothing. However some classes, notably \cls{memoir} and the AMS classes, do add lists to the table of contents. With these classes, this key suppresses the addition of the list of theorems to the table of contents. +\end{docKey} + \subsection{Adding code to list of theorems} -There are analogous commands to \cs{addcontentsline} and \cs{addtocontents} for -adding entries or arbitrary code to the list of theorems. +There are analogous commands to \cs{addcontentsline} and \cs{addtocontents} for adding entries or arbitrary code to the list of theorems. \begin{notebox} -You \emph{must} use these commands rather than the aforementioned because the -|.thlist| file is also used to define restated theorems and cannot contain -unexpected code. +You \emph{must} use these commands rather than the aforementioned because the |.thlist| file is also used to define restated theorems and cannot contain unexpected code. \end{notebox} \begin{docCommand}{addtheoremcontentsline} @@ -870,7 +927,9 @@ unexpected code. \begin{docCommand}{addtotheoremhook} {\oarg{env name}\marg{hook name}\marg{code}} -\meta{hook name} can be \hook{prehead}, \hook{posthead}, \hook{prefoot}, \hook{postfoot}, or \hook{restated}. If no \meta{env name} is given, the \meta{code} is added to the ``generic'' hook, i.e. applied to all theorems. As in \pkg{thmtools}, the order of hooks is as follows: +\meta{hook name} can be \hook{prehead}, \hook{posthead}, \hook{prefoot}, \hook{postfoot}, or \hook{restated}. +If no \meta{env name} is given, the \meta{code} is added to the ``generic'' hook, i.e. applied to all theorems. +As in \pkg{thmtools}, the order of hooks is as follows: \begin{center} \tcbset{ @@ -898,7 +957,8 @@ unexpected code. \tcbox{generic\\ \hook{postfoot}} \tcbox{\meta{env name}\\ \hook{postfoot}} \end{center} -The \hook{restated} hook is applied at the start of theorems retrieved with \cs{getkeytheorem}, before the \hook{prehead} hook. This can be useful for disabling commands such as \cs{footnote} in the restated theorems, e.g. +The \hook{restated} hook is applied at the start of theorems retrieved with \cs{getkeytheorem}, before the \hook{prehead} hook. +This can be useful for disabling commands such as \cs{footnote} in the restated theorems, e.g. \begin{dispListing} \addtotheoremhook{restated}{% \renewcommand\footnote[2][]{}% @@ -911,16 +971,24 @@ In \pkg{thmtools}, the \hook{prefoot} and \hook{postfoot} hooks always prepend c \addtotheorempostfoothook{A} \addtotheorempostfoothook{B} \end{dispListing} -results in |BA| after the theorem. With \pkg{keytheorems}, code is added in the order declared, meaning +results in |BA| after the theorem. +With \pkg{keytheorems}, code is added in the order declared, meaning \begin{dispListing} \addtotheoremhook{postfoot}{A} \addtotheoremhook{postfoot}{B} \end{dispListing} -results in |AB| after the theorem. This is the behavior of the \LaTeX{} kernel hooks that \pkg{keytheorems} uses under the hood. +results in |AB| after the theorem. +This is the behavior of the \LaTeX{} kernel hooks that \pkg{keytheorems} uses under the hood. -Right now, code added using the hook keys \refKey{preheadhook}, etc. is outermost, meaning executed first in \hook{prehead} and \hook{posthead} and last in \hook{prefoot} and \hook{postfoot}. This may change if I think of good reasons to do so\dots +Right now, code added using the hook keys \refKey{preheadhook}, etc. is outermost, meaning executed first in \hook{prehead} and \hook{posthead} and last in \hook{prefoot} and \hook{postfoot}. +This may change if I think of good reasons to do so\dots \end{docCommand} +\section{Further examples} + +More examples will be added soon -- rather, eventually\dots{} +For now, you can find a \pkg{keytheorems} adaptation of \pkg{amsthm}'s classic file \href{https://mirrors.ctan.org/macros/latex/required/amscls/doc/thmtest.tex}{\texttt{thmtest.tex}} in the Github \texttt{tests} folder: \href{https://github.com/mbertucci47/keytheorems/blob/main/tests/keytheorems-amsthmtest.tex}{\texttt{keytheorems-amsthmtest.tex}}. + %\section{Implementation} %\inputminted[linenos,style=bw]{latex}{../keytheorems.sty} diff --git a/macros/latex/contrib/keytheorems/tex/class-support/keythms-amsart-support.tex b/macros/latex/contrib/keytheorems/tex/class-support/keythms-amsart-support.tex new file mode 100644 index 0000000000..36f89461d2 --- /dev/null +++ b/macros/latex/contrib/keytheorems/tex/class-support/keythms-amsart-support.tex @@ -0,0 +1,61 @@ +% Maintained by Matthew Bertucci, 2024-present +% Please report all issues and feature requests at https://github.com/mbertucci47/keytheorems +% This work is licensed under the LPPL version 1.3c or later: https://www.latex-project.org/lppl.txt +\ProvidesExplFile{keythms-amsart-support}{2024-09-16}{0.1.2} + {keytheorems~support~for~the~amsart~class} + +\__keythms_support_AMSshared_code: + +\IfClassLoadedTF { acmart } + { % acmart loads amsart + \keytheoremset{overload} % since acmart predefines several theorems + \keythms_thmstyle_setdefaultkeys:n + { + spaceabove = .5\baselineskip plus .2\baselineskip minus .2\baselineskip, + spacebelow = .5\baselineskip plus .2\baselineskip minus .2\baselineskip, + bodyfont = \@acmplainbodyfont, + headindent = \@acmplainindent, + headfont = \@acmplainheadfont, + headpunct = {.}, + postheadspace = .5em, + notefont = \@acmplainnotefont, + notebraces = {(}{)}, + headstyle = \keythms_thmstyle_headcmd_default:nnn{#1}{#2}{#3}, + } + \keys_define:nn { keytheorems/thmstyle } + { + inherit-style / acmplain .meta:n = {}, + inherit-style / acmdefinition .meta:n = + { + bodyfont = \@acmdefinitionbodyfont, + headindent = \@acmdefinitionindent, + headfont = \@acmdefinitionheadfont, + notefont = \@acmdefinitionnotefont, + }, + } + % TODO: define inherit-style=acmdefinition/acmplain + } + { + \keythms_thmstyle_setdefaultkeys:n + { + spaceabove = .5\baselineskip plus .2\baselineskip minus .2\baselineskip, + spacebelow = .5\baselineskip plus .2\baselineskip minus .2\baselineskip, + bodyfont = \itshape, + headindent = 0pt, + headfont = \bfseries, + headpunct = {.}, + postheadspace = 5pt plus 1pt minus 1pt, + notefont = \fontseries\mddefault\upshape, + notebraces = {(}{)}, + headstyle = \keythms_thmstyle_headcmd_default:nnn{#1}{#2}{#3}, + } + } + +\keys_define:nn { keytheorems/thmstyle } + { + inherit-style / remark .meta:n = + { + headfont = \itshape, + bodyfont = \normalfont, + } + }
\ No newline at end of file diff --git a/macros/latex/contrib/keytheorems/tex/class-support/keythms-amsbook-support.tex b/macros/latex/contrib/keytheorems/tex/class-support/keythms-amsbook-support.tex new file mode 100644 index 0000000000..e7e83ea1cb --- /dev/null +++ b/macros/latex/contrib/keytheorems/tex/class-support/keythms-amsbook-support.tex @@ -0,0 +1,29 @@ +% Maintained by Matthew Bertucci, 2024-present +% Please report all issues and feature requests at https://github.com/mbertucci47/keytheorems +% This work is licensed under the LPPL version 1.3c or later: https://www.latex-project.org/lppl.txt +\ProvidesExplFile{keythms-amsbook-support}{2024-09-16}{0.1.2} + {keytheorems~support~for~the~amsbook~class} + +\__keythms_support_AMSshared_code: + +\keythms_thmstyle_setdefaultkeys:n + { + spaceabove = .5\baselineskip plus .2\baselineskip minus .2\baselineskip, + spacebelow = .5\baselineskip plus .2\baselineskip minus .2\baselineskip, + bodyfont = \itshape, + headindent = \parindent, + headfont = \scshape, + headpunct = {.}, + postheadspace = 5pt plus 1pt minus 1pt, + notefont = \fontseries\mddefault\upshape, + notebraces = {(}{)}, + headstyle = \keythms_thmstyle_headcmd_default:nnn{#1}{#2}{#3}, + } + +\keys_define:nn { keytheorems/thmstyle } + { + inherit-style / remark .meta:n = + { + bodyfont = \normalfont, + }, + }
\ No newline at end of file diff --git a/macros/latex/contrib/keytheorems/tex/class-support/keythms-amsproc-support.tex b/macros/latex/contrib/keytheorems/tex/class-support/keythms-amsproc-support.tex new file mode 100644 index 0000000000..a3bb1d65b9 --- /dev/null +++ b/macros/latex/contrib/keytheorems/tex/class-support/keythms-amsproc-support.tex @@ -0,0 +1,29 @@ +% Maintained by Matthew Bertucci, 2024-present +% Please report all issues and feature requests at https://github.com/mbertucci47/keytheorems +% This work is licensed under the LPPL version 1.3c or later: https://www.latex-project.org/lppl.txt +\ProvidesExplFile{keythms-amsproc-support}{2024-09-16}{0.1.2} + {keytheorems~support~for~the~amsproc~class} + +\__keythms_support_AMSshared_code: + +\keythms_thmstyle_setdefaultkeys:n + { + spaceabove = .5\baselineskip plus .2\baselineskip minus .2\baselineskip, + spacebelow = .5\baselineskip plus .2\baselineskip minus .2\baselineskip, + bodyfont = \itshape, + headindent = \parindent, + headfont = \scshape, + headpunct = {.}, + postheadspace = 5pt plus 1pt minus 1pt, + notefont = \fontseries\mddefault\upshape, + notebraces = {(}{)}, + headstyle = \keythms_thmstyle_headcmd_default:nnn{#1}{#2}{#3}, + } + +\keys_define:nn { keytheorems/thmstyle } + { + inherit-style / remark .meta:n = + { + bodyfont = \normalfont, + }, + }
\ No newline at end of file diff --git a/macros/latex/contrib/keytheorems/tex/class-support/keythms-memoir-support.tex b/macros/latex/contrib/keytheorems/tex/class-support/keythms-memoir-support.tex new file mode 100644 index 0000000000..4fa2804042 --- /dev/null +++ b/macros/latex/contrib/keytheorems/tex/class-support/keythms-memoir-support.tex @@ -0,0 +1,48 @@ +% Maintained by Matthew Bertucci, 2024-present +% Please report all issues and feature requests at https://github.com/mbertucci47/keytheorems +% This work is licensed under the LPPL version 1.3c or later: https://www.latex-project.org/lppl.txt +\ProvidesExplFile{keythms-memoir-support}{2024-09-16}{0.1.2} + {keytheorems~support~for~the~memoir~class} + +\bool_new:N \l__keythms_support_titlecode_bool + +\keys_define:nn { keytheorems/listof } + { + indent .initial:n = 0pt, + title-code .code:n = + { + \bool_set_true:N \l__keythms_support_titlecode_bool + \cs_set:Npn \__keythms_listof_titlecmd:n ##1 { #1 } + }, + } + +% use memoir's list function; not using \newlistentry, though +\newlistof{ keythms_support_memoir_listof:w }{ thlist } + { \l__keythms_listof_title_tl } + +\RenewDocumentCommand \listofkeytheorems { O{} } + { + \bool_gset_true:N \g__keythms_listof_writefile_bool + \group_begin: + \keys_set:nn { keytheorems/listof } { #1 } + \bool_if:NT \l__keythms_listof_nochapskip_bool + { + \cs_set_eq:NN \KeyThmsAddvspace \use_none:n + } + \bool_if:NTF \l__keythms_listof_notitle_bool + { + \cs_set:Npn \@thlistmaketitle {} + \keythms_support_memoir_listof:w* + } + { + \bool_if:NT \l__keythms_support_titlecode_bool + { + \cs_set:Npn \@thlistmaketitle + { \__keythms_listof_titlecmd:n { \l__keythms_listof_title_tl } } + } + \bool_if:NTF \l__keythms_listof_notoc_bool + { \keythms_support_memoir_listof:w* } + { \keythms_support_memoir_listof:w } + } + \group_end: + }
\ No newline at end of file diff --git a/macros/latex/contrib/keytheorems/tex/keytheorems.sty b/macros/latex/contrib/keytheorems/tex/keytheorems.sty index 540a2ca800..28c485083e 100644 --- a/macros/latex/contrib/keytheorems/tex/keytheorems.sty +++ b/macros/latex/contrib/keytheorems/tex/keytheorems.sty @@ -1,5 +1,8 @@ +% Maintained by Matthew Bertucci, 2024-present +% Please report all issues and feature requests at https://github.com/mbertucci47/keytheorems +% This work is licensed under the LPPL version 1.3c or later: https://www.latex-project.org/lppl.txt \NeedsTeXFormat{LaTeX2e}[2023-06-01] -\ProvidesExplPackage{keytheorems}{2024-09-09}{0.1.1}{l3keys interface to amsthm} +\ProvidesExplPackage{keytheorems}{2024-09-16}{0.1.2}{l3keys interface to amsthm} \IfFormatAtLeastTF { 2024-06-01 } { } { @@ -10,6 +13,8 @@ \cs_generate_variant:Nn \tl_put_right:Nn { Ne } \ProvideDocumentCommand \IfPackageLoadedT { m m } { \IfPackageLoadedTF{#1}{#2}{ } } + \ProvideDocumentCommand \IfClassLoadedT { m m } + { \IfClassLoadedTF{#1}{#2}{ } } } \RequirePackage{aliascnt} % for sibling theorems \RequirePackage{amsthm} @@ -65,6 +70,10 @@ Theorem~style~'#1'~already~defined.~ Use~\protect\renewkeytheoremstyle\space instead. } +\msg_new:nnn { keytheorems } { title-code-with-AMS } + { + The~'title-code'~key~has~no~effect~with~an~AMS~class. + } % Error if thmtools loaded since compilation hangs. % If thmtools loaded after, produce warning. @@ -201,19 +210,19 @@ spacebelow = 0.5\topsep, }, % thm keys that are saved for later - numbered .code:n = \keythms_thmstyle_savethmkey_optval:n { #1 }, - parent .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, - numberwithin .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, - within .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, - sibling .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, - numberlike .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, - sharenumber .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, - preheadhook .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, - postheadhook .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, - prefoothook .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, - postfoothook .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, - qed .code:n = \keythms_thmstyle_savethmkey_optval:n { #1 }, - tcolorbox .code:n = \keythms_thmstyle_savethmkey_optval:n { #1 }, + numbered .code:n = \keythms_thmstyle_savethmkey_optval:n { #1 }, + parent .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, + numberwithin .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, + within .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, + sibling .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, + numberlike .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, + sharenumber .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, + preheadhook .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, + postheadhook .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, + prefoothook .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, + postfoothook .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 }, + qed .code:n = \keythms_thmstyle_savethmkey_optval:n { #1 }, + tcolorbox .code:n = \keythms_thmstyle_savethmkey_optval:n { #1 }, tcolorbox-no-titlebar .code:n = \keythms_thmstyle_savethmkey_optval:n { #1 }, } @@ -252,21 +261,14 @@ } } -%%% <SURELY A BETTER WAY> -\cs_new_protected:Npn \__keythms_thmstyle_definekeylist:nn #1#2 - { - \clist_const:cn { c__keythms_thmstyle_defaultkeys_ #1 _clist } { #2 } - } - -\cs_new_protected:Npn \__keythms_thmstyle_setdefaultkeys:n #1 +\cs_new_protected:Npn \keythms_thmstyle_setdefaultkeys:n #1 { - \keys_precompile:nvN { keytheorems/thmstyle } - { c__keythms_thmstyle_defaultkeys_ #1 _clist } + \keys_precompile:nnN { keytheorems/thmstyle } + { #1 } \l__keythms_thmstyle_defaultkeys_tl } - -\__keythms_thmstyle_definekeylist:nn { default } - { +\keythms_thmstyle_setdefaultkeys:n + { % support files may overwrite these defaults spaceabove = \topsep, spacebelow = \topsep, bodyfont = \itshape, @@ -278,105 +280,6 @@ notebraces = {(}{)}, headstyle = \keythms_thmstyle_headcmd_default:nnn{#1}{#2}{#3}, } -\__keythms_thmstyle_definekeylist:nn { amsart } - { - spaceabove = .5\baselineskip plus .2\baselineskip minus .2\baselineskip, - spacebelow = .5\baselineskip plus .2\baselineskip minus .2\baselineskip, - bodyfont = \itshape, - headindent = 0pt, - headfont = \bfseries, - headpunct = {.}, - postheadspace = 5pt plus 1pt minus 1pt, - notefont = \fontseries\mddefault\upshape, - notebraces = {(}{)}, - headstyle = \keythms_thmstyle_headcmd_default:nnn{#1}{#2}{#3}, - } -\__keythms_thmstyle_definekeylist:nn { amsproc } - { - spaceabove = .5\baselineskip plus .2\baselineskip minus .2\baselineskip, - spacebelow = .5\baselineskip plus .2\baselineskip minus .2\baselineskip, - bodyfont = \itshape, - headindent = \parindent, - headfont = \scshape, - headpunct = {.}, - postheadspace = 5pt plus 1pt minus 1pt, - notefont = \fontseries\mddefault\upshape, - notebraces = {(}{)}, - headstyle = \keythms_thmstyle_headcmd_default:nnn{#1}{#2}{#3}, - } -\__keythms_thmstyle_definekeylist:nn { amsbook } - { - spaceabove = .5\baselineskip plus .2\baselineskip minus .2\baselineskip, - spacebelow = .5\baselineskip plus .2\baselineskip minus .2\baselineskip, - bodyfont = \itshape, - headindent = \parindent, - headfont = \scshape, - headpunct = {.}, - postheadspace = 5pt plus 1pt minus 1pt, - notefont = \fontseries\mddefault\upshape, - notebraces = {(}{)}, - headstyle = \keythms_thmstyle_headcmd_default:nnn{#1}{#2}{#3}, - } -\__keythms_thmstyle_definekeylist:nn { acmart } - { - spaceabove = .5\baselineskip plus .2\baselineskip minus .2\baselineskip, - spacebelow = .5\baselineskip plus .2\baselineskip minus .2\baselineskip, - bodyfont = \@acmplainbodyfont, - headindent = \@acmplainindent, - headfont = \@acmplainheadfont, - headpunct = {.}, - postheadspace = .5em, - notefont = \@acmplainnotefont, - notebraces = {(}{)}, - headstyle = \keythms_thmstyle_headcmd_default:nnn{#1}{#2}{#3}, - } - -\IfClassLoadedTF { amsart } - { - \IfClassLoadedTF { acmart } % acmart loads amsart - { - \__keythms_thmstyle_setdefaultkeys:n { acmart } - } - { - \__keythms_thmstyle_setdefaultkeys:n { amsart } - \keys_define:nn { keytheorems/thmstyle } - { - inherit-style / remark .meta:n = - { - headfont = \itshape, - bodyfont = \normalfont, - } - } - } - } - { - \IfClassLoadedTF { amsbook } - { - \__keythms_thmstyle_setdefaultkeys:n { amsbook } - \keys_define:nn { keytheorems/thmstyle } - { - inherit-style / remark .meta:n = - { - bodyfont = \normalfont, - }, - } - } - { - \IfClassLoadedTF { amsproc } - { - \__keythms_thmstyle_setdefaultkeys:n { amsproc } - \keys_define:nn { keytheorems/thmstyle } - { - inherit-style / remark .meta:n = - { - bodyfont = \normalfont, - }, - } - } - { \__keythms_thmstyle_setdefaultkeys:n { default } } - } - } -%%% </SURELY A BETTER WAY> \NewDocumentCommand \newkeytheoremstyle { m m } { @@ -730,6 +633,8 @@ \exp_args:Nno \__keythms_thm_tcboxcode:nn { #1 } { \l__keythms_thm_tcbkeys_tl } } + % Set up list-of definition + \cs_set_eq:cN { l@ #1 } \keythms_listof_tocline: % Set default list-of display command \__keythms_listof_show_aux:n { #1 } % Set theorem style back to original state if needed @@ -1319,6 +1224,8 @@ { numwidth .dim_set:N = \l__keythms_listof_numwidth_dim, numwidth .initial:n = 2.3em, + indent .dim_set:N = \l__keythms_listof_indent_dim, + indent .initial:n = 1.5em, ignore .code:n = { \hook_gput_code:nnn { begindocument/before } { keytheorems } @@ -1386,6 +1293,8 @@ no-chapter-skip .initial:n = false, chapter-skip-length .dim_set:N = \keythms@listof@chaptervspace@dim, chapter-skip-length .initial:n = 10pt, + no-toc .bool_set:N = \l__keythms_listof_notoc_bool, + no-toc .initial:n = false, % false does not mean "to-toc" for standard classes } \hook_gput_code:nnn { begindocument } { . } % redefine these keys at begindocument @@ -1605,79 +1514,32 @@ { \cs_set_protected:Npn \__keythms_listof_titlecmd:n #1 { \chapter*{#1} } } { \cs_set_protected:Npn \__keythms_listof_titlecmd:n #1 { \section*{#1} } } -\hook_gput_code:nnn { begindocument } { . } - { % try to detect ams classes - \keythms_if_amsclass:TF - { - \prop_map_inline:Nn \g__keythms_thmnames_prop - { - \cs_set:cpn { l@ #1 } - { - \@tocline{ 0 }{ 3pt plus 2pt }{ 0pt } - { \l__keythms_listof_numwidth_dim }{ } - } - } - } - { - \prop_map_inline:Nn \g__keythms_thmnames_prop - { - \cs_set:cpn { l@ #1 } - { - \@dottedtocline{ 1 }{ 1.5em } - { \l__keythms_listof_numwidth_dim } - } - } - } - } +\cs_new_protected:Npn \__keythms_listof_default_tocline: + { + \@dottedtocline{ 1 }{ \l__keythms_listof_indent_dim } + { \l__keythms_listof_numwidth_dim } + } +\cs_new_eq:NN \keythms_listof_tocline: \__keythms_listof_default_tocline: -\keythms_if_amsclass:TF +\NewDocumentCommand \listofkeytheorems { O{} } { - \keys_define:nn { keytheorems/listof } % adjust to class + \bool_gset_true:N \g__keythms_listof_writefile_bool + \group_begin: + \keys_set:nn { keytheorems/listof } { #1 } + \bool_if:NT \l__keythms_listof_nochapskip_bool { - numwidth .initial:n = 1.5pc, - } - \NewDocumentCommand \listofkeytheorems { O{} } - { % title command not customizable here - \bool_gset_true:N \g__keythms_listof_writefile_bool - \group_begin: - \keys_set:nn { keytheorems/listof } { #1 } - \bool_if:NT \l__keythms_listof_nochapskip_bool - { - \cs_set_eq:NN \KeyThmsAddvspace \use_none:n - } - \legacy_if_set_false:n { @filesw } - \bool_if:NTF \l__keythms_listof_notitle_bool - { - \@starttoc{ thlist }{ } - } - { % ams classes don't expand title enough - \protected@edef \l__keythms_tmpa_tl { \l__keythms_listof_title_tl } - \@starttoc{ thlist }{ \l__keythms_tmpa_tl } - } - \group_end: + \cs_set_eq:NN \KeyThmsAddvspace \use_none:n } - } - { - \NewDocumentCommand \listofkeytheorems { O{} } + \bool_if:NF \l__keythms_listof_notitle_bool { - \bool_gset_true:N \g__keythms_listof_writefile_bool - \group_begin: - \keys_set:nn { keytheorems/listof } { #1 } - \bool_if:NT \l__keythms_listof_nochapskip_bool - { - \cs_set_eq:NN \KeyThmsAddvspace \use_none:n - } - \bool_if:NF \l__keythms_listof_notitle_bool - { - \__keythms_listof_titlecmd:n { \l__keythms_listof_title_tl } - \@mkboth % QUESTION: should this go in titlecmd ? - { \MakeUppercase \l__keythms_listof_title_tl } - { \MakeUppercase \l__keythms_listof_title_tl } - } - \legacy_if_set_false:n { @filesw } - \@starttoc{ thlist } - \group_end: + \__keythms_listof_titlecmd:n { \l__keythms_listof_title_tl } + \@mkboth % QUESTION: should this go in titlecmd ? + { \MakeUppercase \l__keythms_listof_title_tl } + { \MakeUppercase \l__keythms_listof_title_tl } } + \legacy_if_set_false:n { @filesw } + \@starttoc{ thlist } + \group_end: } % ^ unlike thmtools we don't use the class's style of \listoffigures because % we want control over title-code, no-title, etc. But this means we have to guess @@ -2174,6 +2036,8 @@ \ProvideTranslation { French } { keythms_continues } { suite~de~la~p.\, } \ProvideTranslation { German } { keythms_listof_title } { Liste~der~Theoreme } \ProvideTranslation { German } { keythms_continues } { weiter~von~Seite~ } + \ProvideTranslation { Italian } { keythms_listof_title } { Elenco~dei~teoremi } + \ProvideTranslation { Italian } { keythms_continues } { continua~da~p.\, } \ProvideTranslation { Spanish } { keythms_listof_title } { Lista~de~teoremas } \ProvideTranslation { Spanish } { keythms_continues } { continúa~de~la~p.\, } } @@ -2181,4 +2045,62 @@ \ProcessKeyOptions[keytheorems] +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Support for non-default classes %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\cs_new_protected:Npn \__keythms_support_AMSshared_code: + { + \keys_define:nn { keytheorems/listof } % adjust to AMS classes + { + numwidth .initial:n = 1.5pc, + indent .initial:n = 0pt, + title-code .code:n = + { % warn but set titlecmd just in case + \msg_warning:nn { keytheorems } { title-code-with-AMS } + \cs_set_protected:Npn \__keythms_listof_titlecmd:n ####1 { ##1 } + }, + } + \RenewDocumentCommand \listofkeytheorems { O{} } + { % title command not customizable here + \bool_gset_true:N \g__keythms_listof_writefile_bool + \group_begin: + \keys_set:nn { keytheorems/listof } { ##1 } + \bool_if:NT \l__keythms_listof_nochapskip_bool + { + \cs_set_eq:NN \KeyThmsAddvspace \use_none:n + } + \legacy_if_set_false:n { @filesw } + \bool_if:NTF \l__keythms_listof_notitle_bool + { % hacky! + \cs_set_eq:NN \@startsection \use_none:nnnnnnn + \@starttoc{ thlist }{ } + } + { % ams classes don't expand title enough + \protected@edef \l__keythms_tmpa_tl { \l__keythms_listof_title_tl } + \bool_if:NT \l__keythms_listof_notoc_bool + { \cs_set_eq:NN \addcontentsline \use_none:nnn } % hacky! + \@starttoc{ thlist }{ \l__keythms_tmpa_tl } + } + \group_end: + } + \cs_new:Npn \__keythms_listof_ams_tocline: + { + \@tocline{ 0 }{ 3pt plus 2pt }{ \l__keythms_listof_indent_dim } + { \l__keythms_listof_numwidth_dim }{ } + } + \cs_set_eq:NN \keythms_listof_tocline: \__keythms_listof_ams_tocline: + } + +\cs_new_protected:Npn \keythms_support_check:n #1 + { + \IfClassLoadedT { #1 } { \file_input:n { class-support/keythms-#1-support } } + } + +% acmart defaults also handled in amsart support file +\keythms_support_check:n { amsart } +\keythms_support_check:n { amsbook } +\keythms_support_check:n { amsproc } +\keythms_support_check:n { memoir } + \file_input_stop:
\ No newline at end of file diff --git a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf b/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf Binary files differindex f916afc3bb..dfa1dab825 100644 --- a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf +++ b/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf diff --git a/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty b/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty index d03683957c..06a082376d 100644 --- a/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty +++ b/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty @@ -2,9 +2,9 @@ % licence : Released under the LaTeX Project Public License v1.3c % or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e}% -\def\filedate{2024/09/01}% +\def\filedate{2024/09/17}% \let\PfMfiledate\filedate% -\def\fileversion{0.98}% +\def\fileversion{0.99}% \let\PfMfileversion\fileversion% \ProvidesPackage{ProfMaquette}[\filedate\space v\fileversion\space Maquettage de documents]% @@ -54,26 +54,26 @@ \makeatother %définition des clés \RequirePackage{simplekv}% -\setKVdefault[Boulot]{Dys=false,Taille=14,Cours=false,Base=false,BaseHTML=false,CAN=false,Fiche=false,DM=false,DS=false,IE=false,Kholle=false,RecapBrevet=false,PdT=false,Parcours=false,Contrat=false,FdR=false,ParcoursPerso=false,OlympiadesAPMEP=false,LivreHeros=false,CorrigeInverse=false,CorrigeSeul=false,CorrigeApres=false,CorrigeFin=false,CorrigeAll=false,Brevet=false,BaremeComplet=false,BaremeGlobal=false,CorrectionColonnes=false,EntrainementColonnes=false,Epaisseur=0pt,EEpaisseur=0pt,ESansSaut=false,VersSolution=false,AvecEntrainement=false,Small=false,Footnotesize=false,Scriptsize=false,AllDirect=false,AllPouce=false,Input=false}%Les deux derniers pour essayer de mettre tous les exercices d'un même fichier en mode Reponse, en mode Indice. Pas implanté, pas testé +\setKVdefault[Boulot]{Graine=1,Dys=false,Taille=14,Cours=false,Base=false,BaseHTML=false,CAN=false,Fiche=false,DM=false,DS=false,IE=false,Kholle=false,RecapBrevet=false,PdT=false,Parcours=false,Contrat=false,FdR=false,ParcoursPerso=false,OlympiadesAPMEP=false,LivreHeros=false,CorrigeInverse=false,CorrigeSeul=false,CorrigeApres=false,CorrigeFin=false,CorrigeAll=false,Brevet=false,BaremeComplet=false,BaremeGlobal=false,CorrectionColonnes=false,EntrainementColonnes=false,Epaisseur=0pt,EEpaisseur=0pt,ESansSaut=false,VersSolution=false,AvecEntrainement=false,Small=false,Footnotesize=false,Scriptsize=false,AllDirect=false,AllPouce=false,Input=false}%Les deux derniers pour essayer de mettre tous les exercices d'un même fichier en mode Reponse, en mode Indice. Pas implanté, pas testé \defKV[Boulot]{Colonnes=\setKV[Boulot]{CorrectionColonnes}}% \defKV[Boulot]{EColonnes=\setKV[Boulot]{EntrainementColonnes}}% -\setKVdefault[Cours]{Couleur=Crimson,Theme=Trace écrite,NomExercice=Exercice}% +\setKVdefault[Cours]{Couleur=Crimson,Theme=Trace \'ecrite,NomExercice=Exercice}% \setKVdefault[DM]{Numero=1,Date=\today,Classe={},Niveau=3,Code=\jobname}% \setKVdefault[DS]{Numero=1,Date=\today,Classe={},Niveau=3,Code=\jobname,Calculatrice=false,Sujet=A}% -\setKVdefault[Fiche]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice,}% -\setKVdefault[PdT]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}% -\setKVdefault[FdR]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}% -\setKVdefault[Parcours]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice,Vertical=false,Plan=false,Court=false}% -\setKVdefault[Contrat]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}% -\setKVdefault[OlympiadesAPMEP]{Theme=Les nombres décimaux}% +\setKVdefault[Fiche]{Theme=Les nombres d\'ecimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice,}% +\setKVdefault[PdT]{Theme=Les nombres d\'ecimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}% +\setKVdefault[FdR]{Theme=Les nombres d\'ecimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}% +\setKVdefault[Parcours]{Theme=Les nombres d\'ecimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice,Vertical=false,Plan=false,Court=false}% +\setKVdefault[Contrat]{Theme=Les nombres d\'ecimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}% +\setKVdefault[OlympiadesAPMEP]{Theme=Les nombres d\'ecimaux}% \setKVdefault[ParcoursPerso]{Fichier={}}% \setKVdefault[IE]{Nom=\'Evaluation,Sujets=false,Theme={},Numero=1,Date=\today,Classe={},Niveau=3,Code=\jobname,Calculatrice=false}% \defKV[IE]{Sujet=\setKV[IE]{Sujets}}% -\setKVdefault[RecapBrevet]{Theme=Les nombres décimaux,Date=\today,Code={},NomExercice=Exercice}% -\setKVdefault[Kholle]{Sujet=1,Numero=1,Date=15,Niveau=TSI-1,Code=\jobname,Lieu=Lycée +\setKVdefault[RecapBrevet]{Theme=Les nombres d\'ecimaux,Date=\today,Code={},NomExercice=Exercice}% +\setKVdefault[Kholle]{Sujet=1,Numero=1,Date=15,Niveau=TSI-1,Code=\jobname,Lieu=Lyc\'ee du Hainaut (Valenciennes),NomEleve=Albert Einstein,CR=false}% \setKVdefault[CAN]{Date=\today,Niveau=6,Duree=9,CoefQ=0.4,CoefR=0.35,CoefJ=0.1}% -\setKVdefault[ClesExercices]{NbQuestions=1,PasTitre=false,AffichageSource=false,BaremeTotal,BaremeDetaille=false,MotPoint=point,AffichageTitre=false,Calculatrice=true,Oral=false,Difficulte=0,AffichageCompetence=false,PasCorrige=false,Direct=false,Pouce=false,Parcours=false,Contrat=false,FdR=false,Routes=false,Stops=false,Background=white,Cadre=gray!50,Numerote,Ligne=false,Doublespacing=false,Onehalfspacing=false,Cadres=false,Grilles=false,Cinq=false,Huit=false,TitreSol=false,NonUtilise=false,Profile=false,AEntretenir=false,Fragile=false,AvecIndications=false,ACompleter=false,Aide=0,Score=0,EchelleSeyes=8}% +\setKVdefault[ClesExercices]{NbQuestions=1,PasTitre=false,AffichageSource=false,BaremeTotal,BaremeDetaille=false,MotPoint=point,AffichageTitre=false,Calculatrice=true,Oral=false,Difficulte=0,AffichageCompetence=false,PasCorrige=false,Direct=false,Pouce=false,Parcours=false,Contrat=false,FdR=false,Routes=false,Stops=false,Background=white,Cadre=gray!50,Numerote,Ligne=false,Doublespacing=false,Onehalfspacing=false,Cadres=false,Grilles=false,Cinq=false,Huit=false,TitreSol=false,NonUtilise=false,Profile=false,AEntretenir=false,Fragile=false,AvecIndications=false,ACompleter=false,Aide=0,Score=0,EchelleSeyes=8,Ajout={},TitreCorrige=Corrigé de l'exercice}% \defKV[ClesExercices]{TitreSolution=\setKV[ClesExercices]{TitreSol}}% \defKV[ClesExercices]{Source=\setKV[ClesExercices]{AffichageSource}}% \defKV[ClesExercices]{Titre=\setKV[ClesExercices]{AffichageTitre}}% @@ -105,8 +105,7 @@ \leavevmode% \cleaders\hb@xt@.44em{\hss\xleaders\hrule width0.33em\hss}\hfill% \kern\z@}% - -%\makeatother% +\makeatother% % \NewDocumentCommand\PfMpointilles{o}{% \IfNoValueTF{#1}{\PfMDotfill}{\makebox[#1]{\PfMDotfill}}% @@ -186,6 +185,8 @@ \setcounter{PfMExoEntrai}{0}% \newcounter{PfMCorrigeParcoursPerso}%affichage des solutions ou pas dans le cadre d'un parcours perso \setcounter{PfMCorrigeParcoursPerso}{0}% +\newcounter{PfMRetiensMapourPP}%Pour retenir le numéro de la maquette de référence pour les parcours perso +\setcounter{PfMRetiensMapourPP}{0}% \newcounter{PfMSOS}%Numéro des SOS dans les parcours fléchés \setcounter{PfMSOS}{0}% \newcounter{PfMAlea}%Pour repérer les valeurs aléatoires construites automatiquement @@ -474,7 +475,6 @@ \RenewDocumentCommand\ChoixAlea{s o m m m}{% \IfBooleanTF{#1}{% \stepcounter{PfMAlea}% -% je sauvegarde la valeur \thePfMExo-\thePfMAlea \IfNoValueTF{#2}{% \expandafter\xdef\csname valeur\Roman{PfMExo}\roman{PfMAlea}\endcsname{\fpeval{randint(#3,#4)}}% \expandafter\xdef\csname #5\endcsname{\csname valeur\Roman{PfMExo}\roman{PfMAlea}\endcsname}% @@ -1029,7 +1029,7 @@ \def\endIndiceWrite{\immediate\closeout\verbatim@out\@esphack} \makeatother -\def\SolutionNow{\textbf{Correction de l'exercice --}\par\nopagebreak\setcounter{PfMExoSol}{\thePfMExo}\setcounter{PfMAlea}{0}\PfMAffichageHideItemSolution}%\setcounter{PfMExoSolAlea}{\thePfMExo} +\def\SolutionNow{\textbf{\csname PfMTNomSol\Roman{PfMExo}\endcsname~--}\par\nopagebreak\setcounter{PfMExoSol}{\thePfMExo}\setcounter{PfMAlea}{0}\PfMAffichageHideItemSolution}%\setcounter{PfMExoSolAlea}{\thePfMExo} \def\endSolutionNow{\par\goodbreak\PfMshowitems} \def\ReponseNow{\textbf{Réponse(s) de l'exercice --}\par\nopagebreak\PfMAffichageHideItemSolution} @@ -1190,16 +1190,17 @@ \xintFor* ##1 in{\xintSeq{1}{\PfMCANTotalExo}}\do{% \setcounter{PfMExoSol}{##1}% \setcounter{PfMAlea}{0}% - \IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.sol}{\textbf{Question\ifnum\PfMCANTotalExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{TestCAN-##1}}:\fi}~\input{\jobname-Ma\thePfMMaquette-Ex##1.sol}\par\goodbreak}{}%page-\thePfMMaquette-##1 + \IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.sol}{\textbf{Question\ifnum\PfMCANTotalExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{TestCAN-##1}}:\fi}~\input{\jobname-Ma\thePfMMaquette-Ex##1.sol}\par\goodbreak}{}% }% }{% \setcounter{PfMExoSol}{0}% %\setcounter{PfMExoSolAlea}{0}% \xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{% - \refstepcounter{PfMExoSol}%{##1}% + \refstepcounter{PfMExoSol}% %\stepcounter{PfMExoSolAlea}% \label{pagesol-\thePfMMaquette-\thePfMExoSol}% \setcounter{PfMAlea}{0}% + \def\PfMTexteDuCorrige{\csname PfMTNomSol\Roman{PfMExoSol}\endcsname} \IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.sol}{\PfMAffichageHideItemSolution\textbf{\PfMTexteDuCorrige\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-\thePfMMaquette-##1}}\fi\PfMAffichageTitreSolution}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-Ex##1.sol}\par\goodbreak}{\IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.rep}{\PfMAffichageHideItemSolution\textbf{Réponse(s) seule(s) de l'exercice\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-\thePfMMaquette-##1}}\fi}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-Ex##1.rep}\par\goodbreak}{% \IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.cdp}{\PfMAffichageHideItemSolution\textbf{Indice(s) pour l'exercice\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-\thePfMMaquette-##1}}\fi}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-Ex##1.cdp}\par\goodbreak}{}% }% @@ -1288,6 +1289,7 @@ \end{center} \end{tcolorbox}% }% + %%%%%%%% BAREME %%%%%%%%%%% %% Bareme \newlength{\brouillon} @@ -1485,6 +1487,7 @@ colback=LightSteelBlue, colbacklower=white, frame hidden, + overlay=\useKV[ClesExercices]{Ajout}% }% }% @@ -1497,6 +1500,7 @@ title=\ifboolKV[ClesExercices]{AffichageTitre}{\useKV[ClesExercices]{Titre}}{},% coltitle=black, frame hidden, + overlay=\useKV[ClesExercices]{Ajout}% } } @@ -1524,6 +1528,8 @@ },% overlay unbroken and first={% % + \useKV[ClesExercices]{Ajout}% + % \PfMAffichageSource% % \ifboolKV[ClesExercices]{BaremeTotal}{% @@ -1705,7 +1711,6 @@ \immediate\write\@auxout{\noexpand\expandafter\gdef\noexpand\csname \Roman{PfMMaquette}Contrat#1\endcsname{\csname \Roman{PfMMaquette}confiance#1\endcsname}}% }% - \NewDocumentEnvironment{exerciceContrat}{so}{% \setcounter{PfMAlea}{0}% \setcounter{PfMNbLogo}{1}% @@ -1755,7 +1760,6 @@ }% }% }% - %%% Contrat %%% \tcbset{% usercontrat/.style={% @@ -1804,7 +1808,9 @@ anchor=west, xshift=10pt, ] at (frame.north west){\bfseries\sffamily \useKV[Contrat]{NomExercice} \thePfMExo\ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{}}; - %% + %% + \useKV[ClesExercices]{Ajout}% + %% \PfMAffichageLogos% %% \PfMAffichageCompetencesTravaillees% @@ -2279,7 +2285,9 @@ anchor=west, xshift=10pt, ] at (frame.north west){\bfseries\sffamily \useKV[FdR]{NomExercice} \thePfMExo\ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{}}; - %% + %% + \useKV[ClesExercices]{Ajout}% + %% \PfMAffichageLogos %% \PfMAffichageCompetencesTravaillees% @@ -2708,6 +2716,10 @@ }% }% +\NewDocumentCommand\PfMChoixNomCorrection{}{% + \expandafter\xdef\csname PfMTNomSol\Roman{PfMExo}\endcsname{\useKV[ClesExercices]{TitreCorrige}} +}% + \NewDocumentCommand\PfMChoixHideItemSolution{}{% \ifboolKV[ClesExercices]{Profile}{% % J'ai un élève à profil : Je dois me souvenir que la correction doit être profilée. Le compteur PfMExo vaut \thePfMExo @@ -2734,6 +2746,7 @@ \PfMChoixCorrection% \PfMChoixEntrainement% \refstepcounter{PfMExo}% + \PfMChoixNomCorrection% \ifboolKV[ClesExercices]{ACompleter}{% \let\oldenumerate\enumerate% \let\oldendenumerate\endenumerate% @@ -2924,6 +2937,7 @@ }% \makeatother + %%% Recap Brevet %%% Style Brevet \tcbset{% @@ -2981,6 +2995,7 @@ at (frame.north east)% {\footnotesize\sffamily \total{\the\c@PfMSection-\the\c@PfMExo}};% }{}% + \useKV[ClesExercices]{Ajout}% }% }% }% @@ -3014,6 +3029,8 @@ xshift=10pt, ] at (frame.north west){\bfseries\sffamily \useKV[PdT]{NomExercice} \thePfMExo\ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{}}; } + %% + \useKV[ClesExercices]{Ajout}% %% \PfMAffichageLogos% % @@ -3485,6 +3502,8 @@ anchor=west, xshift=\kvtcb@leftlower, ] at (frame.north west){\bfseries\sffamily\useKV[Fiche]{NomExercice}\ifboolKV[ClesExercices]{Numerote}{ \thePfMExo}{}\ifboolKV[ClesExercices]{AffichageTitre}{\ifboolKV[ClesExercices]{Numerote}{~:~}{\xdef\PfMTitiLgNE{\useKV[Fiche]{NomExercice}}\IfStrEq{\PfMTitiLgNE}{}{}{~:~}}\useKV[ClesExercices]{Titre}}{}}; + %% + \useKV[ClesExercices]{Ajout}% %% \PfMAffichageLogos% % @@ -3519,7 +3538,9 @@ anchor=west, xshift=\kvtcb@leftlower, ] at (frame.north west){\color{colLogo}\resizebox{1em}{!}{\carreEntoure{}}~\Large\bfseries\sffamily\useKV[Fiche]{NomExercice}\ifboolKV[ClesExercices]{Numerote}{ \thePfMExo}{}\ifboolKV[ClesExercices]{AffichageTitre}{\ifboolKV[ClesExercices]{Numerote}{.~}{\xdef\PfMTitiLgNE{\useKV[Fiche]{NomExercice}}\IfStrEq{\PfMTitiLgNE}{}{}{.~}}\useKV[ClesExercices]{Titre}}{}}; - %% + %% + \useKV[ClesExercices]{Ajout}% + %% \PfMAffichageLogos% % \PfMAffichageCompetencesTravaillees% @@ -3578,7 +3599,9 @@ anchor=west, xshift=10pt, ] at (frame.north west){\bfseries\sffamily \useKV[Parcours]{NomExercice} \thePfMExo\ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{}}; - %% + %% + \useKV[ClesExercices]{Ajout}% + %% \PfMAffichageLogos% %% \PfMAffichageCompetencesTravaillees% @@ -3659,6 +3682,8 @@ title=Exercice\ifboolKV[ClesExercices]{Numerote}{ \thePfMExo}{}\ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{}, overlay unbroken and first={% % + \useKV[ClesExercices]{Ajout}% + % \PfMAffichageSource% % \ifboolKV[ClesExercices]{BaremeTotal}{% @@ -3703,7 +3728,7 @@ \clearpage \begin{minipage}{0.6\linewidth} \begin{tcolorbox}[userie]% - \sffamily \useKV[IE]{Nom} \useKV[IE]{Numero} : \useKV[IE]{Theme} \ifboolKV[IE]{Sujets}{\scriptsize(Sujet \useKV[IE]{Sujet})}{} + \sffamily \useKV[IE]{Nom} \useKV[IE]{Numero} : \useKV[IE]{Theme} \ifboolKV[IE]{Sujets}{{\scriptsize(Sujet \useKV[IE]{Sujet})}}{} \vspace{1em} \par{\tiny\useKV[IE]{Code}}\hfill{\scriptsize\useKV[IE]{Date}} \end{tcolorbox}% @@ -3728,42 +3753,39 @@ \end{tcolorbox}% }% -\NewDocumentCommand\Recapitulatif{mm}{% - \setKV[Boulot]{#1}% - \DTLforeach*{dataperso}{\Prenom=PrenomEleve,\Nom=NomEleve,\RecapListeExo=ListeExo}{% - \ifboolKV[Boulot]{Dys}{% - \begin{Maquette}[Fiche,Dys]{#2,Code=\normalsize\Prenom~\Nom}% - }{% - \begin{Maquette}[Fiche]{#2,Code=\normalsize\Prenom~\Nom}% - }% +\NewDocumentCommand\PfMRecapitulatif{mm}{% + \setKV[Boulot]{#1}% + \setcounter{PfMRetiensMapourPP}{\thePfMMaquette}% + \DTLforeach*{dataperso}{\Prenom=PrenomEleve,\Nom=NomEleve,\RecapListeExo=ListeExo}{% + \ifboolKV[Boulot]{Dys}{% + \begin{Maquette}[Fiche,Dys]{#2,Code=\normalsize\Prenom~\Nom}% + }{% + \begin{Maquette}[Fiche]{#2,Code=\normalsize\Prenom~\Nom}% + }% + \readlist*\ListeExercices{\RecapListeExo}% + \ifnum\fpeval{\ListeExerciceslen}=1\relax{} + \setKVdefault[ClesExercices]{Numerote=false} + \input{\jobname-Ma\thePfMRetiensMapourPP-PPEx\ListeExercices[1].tex}% + \setKVdefault[ClesExercices]{Numerote} + \else + \foreach\i in{1,...,\ListeExerciceslen}{% + \input{\jobname-Ma\thePfMRetiensMapourPP-PPEx\ListeExercices[\i].tex}% + } + \fi + \ifnum\thePfMCorrigeParcoursPerso=1\relax% + % \RecapitulatifCorrection{#2}% + \clearpage + \TikzFicheCor{#1,Code=\normalsize\Prenom~\Nom}% \readlist*\ListeExercices{\RecapListeExo}% \ifnum\fpeval{\ListeExerciceslen}=1\relax{} - \setKVdefault[ClesExercices]{Numerote=false} -% \begin{exercice}* - \input{\jobname-Ma\thePfMMaquette-PPEx\ListeExercices[1].tex}% - % \end{exercice}% - \setKVdefault[ClesExercices]{Numerote} + \textbf{Corrigé de l'exercice} : \input{\jobname-Ma\thePfMMaquette-PPEx\ListeExercices[1].sol}\par\goodbreak% \else \foreach\i in{1,...,\ListeExerciceslen}{% - % \begin{exercice} - \input{\jobname-Ma\thePfMMaquette-PPEx\ListeExercices[\i].tex}% - % \end{exercice}% - } - \fi - \ifnum\thePfMCorrigeParcoursPerso=1\relax% - % \RecapitulatifCorrection{#2}% - \clearpage - \TikzFicheCor{#1,Code=\normalsize\Prenom~\Nom}% - \readlist*\ListeExercices{\RecapListeExo}% - \ifnum\fpeval{\ListeExerciceslen}=1\relax{} - \textbf{Corrigé de l'exercice} : \input{\jobname-Ma\thePfMMaquette-PPEx\ListeExercices[1].sol}\par\goodbreak% - \else - \foreach\i in{1,...,\ListeExerciceslen}{% - \textbf{Corrigé de l'exercice \i} : \input{\jobname-Ma\thePfMMaquette-PPEx\ListeExercices[\i].sol}\par\goodbreak% - }% - \fi% + \textbf{Corrigé de l'exercice \i} : \input{\jobname-Ma\thePfMMaquette-PPEx\ListeExercices[\i].sol}\par\goodbreak% + }% \fi% - \end{Maquette}% + \fi% + \end{Maquette}% }% }% @@ -3834,7 +3856,7 @@ \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}% \PfMChangerTailleCorrection% }% -\makeatletter +\makeatother \NewDocumentCommand\PfMAffichageCorrectionColonnes{}{% \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}% @@ -3855,7 +3877,7 @@ }% }% -\setKVdefault[LivreHeros]{Theme=Les nombres décimaux} +\setKVdefault[LivreHeros]{Theme=Les nombres d\'ecimaux} \NewDocumentCommand\vaen{m}{\ref{#1}}% @@ -3905,6 +3927,38 @@ % Environnement englobant le tout. \makeatletter \newwrite\PfMfile@out% + +\IfClassLoadedTF{beamer}{% + %-> tex.stackexchange.com/questions/605282/beamer-custom-frame-environment-with-options + \NewDocumentEnvironment{Maquette}{om}{% + \setcounter{RetiensSol}{0}% + \setcounter{RetiensRep}{0}% + \setcounter{RetiensInd}{0}% + % on remet à zéro le compteur des exercices + %\setcounter{PfMExo}{0}% + \setcounter{PfMSOS}{0}% + % nouvelles valeurs. + \stepcounter{PfMMaquette}% + \IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection\PfMChoixAffichageEntrainement}}{\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection\PfMChoixAffichageEntrainement}}% + \useKVdefault[FdR]% + \setKV[FdR]{#1}% + \let\exercice\exerciceBeamer\let\endexercice\endexerciceBeamer% + \begin{frame}[environment=Maquette,fragile] + \setcounter{PfMExo}{10}% + \PfCGraineAlea{\useKV[Boulot]{Graine}}% + \frametitle{\useKV[FdR]{Theme}\hfill\raisebox{-0.25\height}{\mplibforcehmode\begin{mplibcode} + labeloffset:=1pt; + fill cercle((0,0),4mm) withcolor white; + trace cercle((0,0),4mm) withcolor \mpcolor{Evidence!50}; + drawoptions(withcolor 0.5white); + label.top(TEX("\tiny alea\TeX"),(0,0)); + drawoptions(withcolor \mpcolor{Evidence}); + label.bot(TEX("\tiny SL \& CP$^2$"),(0,0)); + \end{mplibcode}}~\phantom{t}} + }{% + \end{frame} + } +}{ \NewDocumentEnvironment{Maquette}{om}{% % on remet à zéro les compteurs de solutions : inutile ? \setcounter{RetiensSol}{0}% @@ -3933,14 +3987,16 @@ \useKVdefault[Boulot]% \setKV[Boulot]{#1}% \ifboolKV[Boulot]{CorrigeSeul}{\setKV[Boulot]{CorrigeFin}}{}% - \if@Dyslexie - \setKV[Boulot]{Dys} - \fi + \if@Dyslexie% + \setKV[Boulot]{Dys}% + \fi% \PfMBasculeDys% \IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection\PfMChoixAffichageEntrainement}}{\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection\PfMChoixAffichageEntrainement}}% % Test \IfHookExistsTF{env/exercice/begin}{\RemoveFromHook{env/exercice/begin}[*]}{}% \IfHookExistsTF{env/Maquette/end}{\RemoveFromHook{env/Maquette/end}[*]}{}% +% \ifboolKV[Boulot]{Diaporama}{% +% }{% \ifboolKV[Boulot]{OlympiadesAPMEP}{% % \input{PfMMaquetteOlympAPMEP}% \setKV[OlympiadesAPMEP]{#2}%\TikzOlympiadesAPMEP% @@ -4101,7 +4157,7 @@ \ifboolKV[Boulot]{CorrigeFin}{\setcounter{PfMCorrigeParcoursPerso}{1}}{}% \setcounter{PfMExo}{0}% \AtEndDocument{% - \Recapitulatif{#1}{#2}% + \PfMRecapitulatif{#1}{#2}% }% }{% \ifboolKV[Boulot]{Parcours}{% @@ -4268,6 +4324,8 @@ \setsepchar{,}\ignoreemptyitems\readlist*\ListePerm{\PfMFooMelange}\reademptyitems% \phantomsection{} \addcontentsline{toc}{section}{\useKV[LivreHeros]{Theme}}% + \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}% + \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}% \xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{% \itemtomacro\ListePerm[##1]\PfMPermute% \begin{tcolorbox}[tikzLH,title=##1]% @@ -4275,6 +4333,7 @@ \input{\jobname-Ma\thePfMMaquette-Ex\PfMPermute.gb}% \end{tcolorbox}% }% + \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}% }% }{}% }% @@ -4291,6 +4350,7 @@ }% }% }% +} }{}% \makeatother %D'après JCC @@ -5034,7 +5094,9 @@ \fi \makeatother -% enumitem obligatoire ^^ +\IfClassLoadedTF{beamer}{}{% + % enumitem obligatoire ^^ +% mais pas compatible beamer \RequirePackage{enumitem} % d'après https://tex.stackexchange.com/questions/164613/adding-code-at-the-end-of-each-list-item \newif\iffirstlegal\firstlegalfalse% We need a toggle to track whether the item is first in the list or not @@ -5114,4 +5176,5 @@ \begin{Test}[#1]% #3 \end{Test}% -}{}%
\ No newline at end of file +}{}% +}
\ No newline at end of file diff --git a/macros/latex/contrib/tableof/README.md b/macros/latex/contrib/tableof/README.md index fa5ea8d72b..2f0b93dd0a 100644 --- a/macros/latex/contrib/tableof/README.md +++ b/macros/latex/contrib/tableof/README.md @@ -2,9 +2,9 @@ tableof ======= - Package: tableof (Tables of tagged contents) -- Version: 1.4c (2021/07/05) +- Version: 1.4d (2024/09/17) - License: LPPL 1.3c -- Copyright (C) 2012, 2013, 2015, 2018, 2021 Jean-Francois Burnol <jfbu at free dot fr> +- Copyright (C) 2012, 2013, 2015, 2018, 2021, 2024 Jean-Francois Burnol <jfbu at free dot fr> Provides `\toftagstart{}`, `\toftagstop{}`, `\toftagthis{}`, `\tofuntagthis{}` to tag chapters, sections or any other sectioning units destined to end up in @@ -31,6 +31,10 @@ usable only once, contrarily to the `\tableof{}` et al. package macros. Change History ============== +* v1.4d (2024/09/17) reestablishes compatibility with `hyperref`, + which got broken at the latter `v7.01c` release. The package now + requires LaTeX 2020-10-01. Thanks to Ekkart Kleinod for report. + * v1.4c (2021/07/05) additional efforts for `biblatex` compatibility. Allow style file extraction via `etex`, reword the abstract. Use utf8 source encoding. diff --git a/macros/latex/contrib/tableof/tableof.dtx b/macros/latex/contrib/tableof/tableof.dtx index bd7a435cef..bd952ec2a3 100644 --- a/macros/latex/contrib/tableof/tableof.dtx +++ b/macros/latex/contrib/tableof/tableof.dtx @@ -1,14 +1,14 @@ % -*- coding: utf-8; -*- %<*none> -{\def\doctimestamp {Time-stamp: <05-07-2021 14:42:11 CEST>}% +{\def\doctimestamp {Time-stamp: <17-09-2024 10:15:25 CEST>}% \def\getdtxtimestamp #1 <#2 #3 #4>{#2 at #3 #4}% \xdef\tofdtxtimestamp {\expandafter\getdtxtimestamp\doctimestamp }}% %</none> %% %% Package: tableof -%% Version: 1.4c (2021/07/05) +%% Version: 1.4d (2024/09/17) %% License: LPPL 1.3c -%% Copyright (C) 2012, 2013, 2015, 2018, 2021 Jean-Francois Burnol <jfbu at free dot fr> +%% Copyright (C) 2012, 2013, 2015, 2018, 2021, 2024 Jean-Francois Burnol <jfbu at free dot fr> %% % See README.md for installation instructions % @@ -22,8 +22,8 @@ % The Author of this Work is: Jean-Francois Burnol <jfbu at free dot fr> %<*none> \def\pkgname {tableof} -\def\pkgdate {2021/07/05} -\def\pkgversion {v1.4c} +\def\pkgdate {2024/09/17} +\def\pkgversion {v1.4d} \def\pkgdescription {Tables of tagged contents (JFB)} \begingroup \input docstrip.tex @@ -237,11 +237,85 @@ A,B,C % \PassOptionsToPackage{dvipdfmx-outline-open}{bookmark} % \makeatother -\documentclass[a4paper,fontsize=11pt,abstract]{scrdoc} +\documentclass[a4paper,fontsize=11pt,abstract]{scrartcl} +\makeatletter +%%% START OF CUSTOM doc.sty LOADING (May 21, 2022 in xint.dtx) +%%% (August 26, 2022 in etoc.dtx, comments trimmed) +%%% (September 17, 2024 here, some unneeded stuff removed, +%%% I do not have time to do the syntax coloring as in etoc.pdf, +%%% and in particular there is here no reason to use doc=v2) + + +% At 1.4d I wanted to use doc v3, but hypdoc is causing too much trouble. +% - a warning in the log about hyperref already loaded, +% - an overwrite of my hidelinks option, +% - an impact on placement of codeline numbers in implementation part. +\usepackage{doc}[=v2] +% As explained above I was formerly using scrdoc hence ltxdoc indirectly. +% Let's emulate here the little I appear to need from ltxdoc.cls and +% srcdoc.cls. +% +\AtBeginDocument{\MakeShortVerb{\|}} +\DeclareFontShape{OT1}{cmtt}{bx}{n}{<-> ssub * cmtt/m/n}{} +\DeclareFontFamily{OMS}{cmtt}{\skewchar\font 48} % '60 +\DeclareFontShape{OMS}{cmtt}{m}{n}{<-> ssub * cmsy/m/n}{} +\DeclareFontShape{OMS}{cmtt}{bx}{n}{<-> ssub * cmsy/b/n}{} +\DeclareFontShape{OT1}{cmss}{m}{it}{<->ssub*cmss/m/sl}{} +\CodelineNumbered +% \EnableCrossrefs % but this will be hacked +% \setcounter{StandardModuleDepth}{1} % we don't use this mechanism currently +\def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}} +\def\cmd@to@cs#1#2{\char\number`#2\relax} +% Here I am loading doc=v2 but formerly I was using ltxdoc via scrdoc +% which I dropped at release 1.4l (2022-05-29) and without much +% thinking I had kept this. +\DeclareRobustCommand\cs[1]{\texttt{\bslash#1}} +% As I may have the * active, or macro names with _ or ^, I should +% add \detokenize. But see below for a redefinition anyhow. +% +% More urgent is that I am also using hyperref and this definition gives wrong +% bookmarks if \cs is used in section titles. As I had very very few usags of +% \cs in the whole of xint.dtx, it took me a while to realize the problem +% here. Turns out that doc=v3 by default loads hypdoc which includes this +% configuration for hyperref compatibility: +\AtBeginDocument{% +\pdfstringdefDisableCommands{\def\cs#1{\textbackslash\detokenize{#1}}}% +}% +% As I have not loaded hyperref yet I must delay it to AtBeginDocument. +\providecommand\marg[1]{% + {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}} +\providecommand\oarg[1]{% + {\ttfamily[}\meta{#1}{\ttfamily]}} +\providecommand\parg[1]{% + {\ttfamily(}\meta{#1}{\ttfamily)}} +% \@addtoreset{CodelineNo}{part}% No need for this here +% \def\partname{File}% \partname is "fixed" somewhere further down anyhow +% No need for this, anyhow I don't build the indices +% \gdef\codeline@wrindex#1{\if@filesw +% \begingroup +% \let\protect\noexpand +% \immediate\write\@indexfile +% {\string\indexentry{#1}% +% {\filesep\number\c@CodelineNo}}% +% \endgroup\fi} +% \let\filesep\@empty + +% There is very little we seem to need from the scrdoc extras: page geometry +% is set by geometry package and a4paper option from xint.tex file. So it +% seems I only need the hologo loading: +\usepackage{hologo} +%\DeclareRobustCommand*{\eTeX}{\hologo{eTeX}}% +%\DeclareRobustCommand*{\LuaTeX}{\hologo{LuaTeX}}% +% +\makeatother +%%% end of ltxdoc+srcdoc emulation from June 2022 xint.dtx, +%%% copied over almost verbatim to etoc.dtx on 2022/08/26, +%%% and copied and trimmed for tableof.dtx 2024/09/17. + \pagestyle{headings} \usepackage[T1]{fontenc} \usepackage[hscale=0.66,vscale=0.76]{geometry} - +\usepackage{centeredline} \usepackage{txfonts} \DeclareFontFamily{T1}{txtt}{} \DeclareFontShape{T1}{txtt}{m}{n}{ %medium @@ -314,6 +388,15 @@ pdfkeywords={LaTeX, table of contents},% pdfstartview=FitH,% pdfpagemode=UseOutlines} + +% Finally 1.4d uses doc=v2 +% % Attention que hypdoc fait +% % Package hyperref Info: Option `colorlinks' set `true' on input line 75. +% % Package hyperref Info: Option `plainpages' set `false' on input line 75. +% % Package hyperref Info: Option `bookmarksopen' set `true' on input line 75. +% % Package hyperref Info: Option `bookmarksnumbered' set `true' on input line 75. +% \AtBeginDocument{\hypersetup{hidelinks}}% fix de l'effet de hypdoc + \usepackage{bookmark} \DeclareRobustCommand\csa[1]{{\ttfamily\char`\\#1}} @@ -356,7 +439,7 @@ pdfpagemode=UseOutlines} Package version: \pkgversion\ (\pkgdate)\\ Documentation generated from tableof.dtx with timestamp \tofdtxtimestamp\\ - \textcopyright 2012, 2013, 2015, 2018, 2021 Jean-François Burnol + \textcopyright 2012, 2013, 2015, 2018, 2021, 2024 Jean-François Burnol <jfbu (at) free (dot) fr> \end{center} @@ -554,10 +637,6 @@ Please consider: this command should \emph{not} be used when the \section{Compatibility with other packages} -\tableof checks if |hyperref| is loaded as |hyperref| modifies the format of the -lines in the |.toc| file (and this must be taken into account). This check is -done at the \csa{begin}|{document}| so the order of loading is not important. - \tableof requires the document |.toc| file to use the |\contentsline| macro (possibly patched by other packages). It is thus incompatible with the |beamer| class. However, if |beamer| is used in an article mode, i.e., with @@ -585,6 +664,10 @@ tables of contents, apart from \hangafter1 } \makeatother +|2024/09/17 v1.4d: |reestablish compatibility with |hyperref|, +which got broken at the latter |v7.01c| release. The package now +requires \LaTeX{} |2020-10-01|. Thanks to Ekkart Kleinod for report. + |2021/07/05 v1.4c: |ensure the added scope-limiting group for |\tableof{}| and alike macros encompasses all contents of the |.toc| file even in presence of packages hacking into these contents (in particular |biblatex|). @@ -696,7 +779,7 @@ document uses standard |\tableofcontents| or like commands. %</none> %<*package> % \begin{macrocode} -\NeedsTeXFormat{LaTeX2e} +\NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{atveryend} \DeclareOption*{\PackageWarning{tableof}{Option `\CurrentOption' is unknown.}} \ProcessOptions\relax @@ -738,7 +821,8 @@ document uses standard |\tableofcontents| or like commands. % macro is used to typeset the TOC, it is now the one bearing the % responsability for creating the scope-limiting group. % \begin{macrocode} -\AtBeginDocument{\IfFileExists{\jobname.toc} +\AtBeginDocument{% + \IfFileExists{\jobname.toc} {{\endlinechar\m@ne \makeatletter \newread\tof@tf @@ -746,7 +830,9 @@ document uses standard |\tableofcontents| or like commands. \tof@toctoks{\tof@begingroup}% \tof@readtoc \global\tof@toctoks=\expandafter{\the\tof@toctoks\tof@endgroup}% - \closein\tof@tf}}{}} + \closein\tof@tf}} + {}% +} % \end{macrocode} % The trick is that |\@ifundefined| chooses the undefined branch if the % meaning is |\relax|. Thus it is possible for \tableof to define and use @@ -771,26 +857,39 @@ document uses standard |\tableofcontents| or like commands. % |1.4c| replaces |{}| (last argument of |\@ifundefined|) by |\relax|. No % strong reason. We and \etoc use |\endlinechar-1| anyhow. % \begin{macrocode} -\AtBeginDocument{ +\AtBeginDocument{% \addtocontents{toc}{\string\@ifundefined{tof@begin}% {\global\let\string\tof@begin\relax \global\let\string\tof@finish\string\@empty \global\let\string\tof@starttags\string\@gobble \global\let\string\tof@stoptags\string\@gobble \global\let\string\tof@tagthis\string\@gobble - \global\let\string\tof@untagthis\string\@gobble}\relax} - \addtocontents{toc}{\string\tof@begin} + \global\let\string\tof@untagthis\string\@gobble}\relax}% + \addtocontents{toc}{\string\tof@begin}% +} % \end{macrocode} -% \LaTeX\ of 2020 or 2021 always has |\contentsline| with four arguments. +% \textbf{Now obsolete hyperref-related remark (see next paragraph)}: +% {\itshape\LaTeX\ of 2020 or 2021 always has |\contentsline| with four arguments. % So an update should be done here to always gobble four, else in absence % of |hyperref| some |{}| are left. Does not seem to matter a lot except % if all is executed in math mode... thanks to \etoc for example. -% No urgency here, only mentioning for the record. +% No urgency here, only mentioning for the record.} +% +% |hyperref| stopped defining its |\hyper@last| at its |7.01c| release in fall +% of 2023, but \tableof tested for it, if |hyperref| was found to be present, +% in case a document previously not using |hyperref| started using it on +% second compilation, hence with a wrong |.toc| file format (in earlier +% years). As \tableof was doing +% \centeredline{|\ifx\hyper@last\@undefined\tof@toctoks{}\fi|} it now +% unconditionally emptied |\tof@toctoks| in presence of |hyperref|. This is +% the same problem which impacted \etoc and got fixed at its |1.2c| release +% but unfortunately \tableof was not updated then. Belatedly fixed at |1.4d| +% of |2024/09/17|. +% +% Formerly this was a short macro, but it doesn't look like a problem +% to simply alias it to the long |\@gobblefour|. % \begin{macrocode} - \@ifpackageloaded{hyperref} - {\def\tof@gobblethree@orfour#1#2#3#4{}% - \ifx\hyper@last\@undefined\tof@toctoks{}\fi} - {\def\tof@gobblethree@orfour#1#2#3{}}} +\let\tof@gobblethree@orfour\@gobblefour % \end{macrocode} % |1.4b| (belatedly) fixes issue with |\tof@finish| getting lost due % to a final |\clearpage| before |\end{document}|. Indeed, formerly @@ -999,24 +1098,6 @@ document uses standard |\tableofcontents| or like commands. \endinput % \end{macrocode} % \MakePercentComment -\CharacterTable - {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z - Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z - Digits \0\1\2\3\4\5\6\7\8\9 - Exclamation \! Double quote \" Hash (number) \# - Dollar \$ Percent \% Ampersand \& - Acute accent \' Left paren \( Right paren \) - Asterisk \* Plus \+ Comma \, - Minus \- Point \. Solidus \/ - Colon \: Semicolon \; Less than \< - Equals \= Greater than \> Question mark \? - Commercial at \@ Left bracket \[ Backslash \\ - Right bracket \] Circumflex \^ Underscore \_ - Grave accent \` Left brace \{ Vertical bar \| - Right brace \} Tilde \~} - -\CheckSum{559} - \Finale %% %% End of file `tableof.dtx'. diff --git a/macros/latex/contrib/tableof/tableof.pdf b/macros/latex/contrib/tableof/tableof.pdf Binary files differindex f04fc964a0..1c2d6ae655 100644 --- a/macros/latex/contrib/tableof/tableof.pdf +++ b/macros/latex/contrib/tableof/tableof.pdf diff --git a/macros/latex/contrib/tagpdf/README.md b/macros/latex/contrib/tagpdf/README.md index 243b7c398e..7ba67de333 100644 --- a/macros/latex/contrib/tagpdf/README.md +++ b/macros/latex/contrib/tagpdf/README.md @@ -1,6 +1,6 @@ #tagpdf — A package to create tagged pdf -Packageversion: 0.99e -Packagedate: 2024/09/11 +Packageversion: 0.99f +Packagedate: 2024/09/16 Author: Ulrike Fischer, LaTeX Project Team ## License diff --git a/macros/latex/contrib/tagpdf/ex-AF-file.pdf b/macros/latex/contrib/tagpdf/ex-AF-file.pdf index dd578dd350..83a304a201 100644 --- a/macros/latex/contrib/tagpdf/ex-AF-file.pdf +++ b/macros/latex/contrib/tagpdf/ex-AF-file.pdf @@ -1,11 +1,11 @@ %PDF-2.0 % 22 0 obj -<< /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<</ModDate (D:20240911230058+02'00') /Size 151 /CheckSum (0D5C479FDEEFE59350963296D27AAE46) >> /Length 151 >> +<< /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<</ModDate (D:20240916231350+02'00') /Size 151 /CheckSum (F1F871442F296ACB6365DC9AC224F015) >> /Length 151 >> stream %% LaTeX2e file `example-input-file.tex' %% generated by the `filecontents' environment -%% from source `ex-AF-file' on 2024/09/11. +%% from source `ex-AF-file' on 2024/09/16. %% Additional info! @@ -15,7 +15,7 @@ endobj << /Type /Filespec /AFRelationship /Unspecified /F (example-input-file.tex) /UF <FEFF006500780061006D0070006C0065002D0069006E007000750074002D00660069006C0065002E007400650078> /EF<</F 22 0 R/UF 22 0 R>> >> endobj 25 0 obj -<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<</ModDate (D:20240911) >> /Length 19 >> +<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<</ModDate (D:20240916) >> /Length 19 >> stream Bär with teh shirt endstream @@ -24,7 +24,7 @@ endobj << /Type /Filespec /AFRelationship /Supplement /F (tag-AFfile1.txt) /UF <FEFF007400610067002D0041004600660069006C00650031002E007400780074> /EF<</F 25 0 R/UF 25 0 R>> >> endobj 28 0 obj -<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<</ModDate (D:20240911) >> /Length 4 >> +<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<</ModDate (D:20240916) >> /Length 4 >> stream Duck endstream @@ -248,17 +248,17 @@ stream </dc:language> <dc:date> <rdf:Seq> - <rdf:li>2024-09-11T23:01:13+02:00</rdf:li> + <rdf:li>2024-09-16T23:14:06+02:00</rdf:li> </rdf:Seq> </dc:date> <dc:format>application/pdf</dc:format> <dc:source>ex-AF-file.tex</dc:source> <xmp:CreatorTool>LaTeX</xmp:CreatorTool> - <xmp:CreateDate>2024-09-11T23:01:13+02:00</xmp:CreateDate> - <xmp:ModifyDate>2024-09-11T23:01:13+02:00</xmp:ModifyDate> - <xmp:MetadataDate>2024-09-11T23:01:13+02:00</xmp:MetadataDate> + <xmp:CreateDate>2024-09-16T23:14:06+02:00</xmp:CreateDate> + <xmp:ModifyDate>2024-09-16T23:14:06+02:00</xmp:ModifyDate> + <xmp:MetadataDate>2024-09-16T23:14:06+02:00</xmp:MetadataDate> <xmpMM:DocumentID>uuid:38d5a844-2217-4081-87cc-b2129dc357a6</xmpMM:DocumentID> - <xmpMM:InstanceID>uuid:09f27344-5b75-463c-8877-423748155ecb</xmpMM:InstanceID> + <xmpMM:InstanceID>uuid:f3e8d74f-e578-4148-81cf-4735ea173170</xmpMM:InstanceID> <prism:complianceProfile>three</prism:complianceProfile> <prism:pageCount>1</prism:pageCount> </rdf:Description> @@ -353,7 +353,7 @@ endobj << /Type /Namespace /NS (https://www.latex-project.org/ns/book/2022) /RoleMapNS 18 0 R >> endobj 19 0 obj -<< /Type /Namespace /NS (data:,B95FB03C-9D60-1F01-951E-7918FB69E933) >> +<< /Type /Namespace /NS (data:,4A2CE27A-F4B-3881-D950-B43D7275F9F5) >> endobj 8 0 obj [ 9 0 R 11 0 R 13 0 R 15 0 R 17 0 R 19 0 R ] @@ -455,7 +455,7 @@ endobj << /Type /Catalog /Pages 36 0 R /MarkInfo 37 0 R/Lang (de-DE)/Metadata 31 0 R/StructTreeRoot 5 0 R >> endobj 46 0 obj -<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240911230113+02'00')/ModDate (D:20240911230113+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >> +<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240916231406+02'00')/ModDate (D:20240916231406+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >> endobj xref 0 47 @@ -464,10 +464,10 @@ xref 0000000003 00000 f 0000000004 00000 f 0000000010 00000 f -0000016693 00000 n +0000016692 00000 n 0000013958 00000 n 0000014169 00000 n -0000016123 00000 n +0000016122 00000 n 0000014748 00000 n 0000000012 00000 f 0000014816 00000 n @@ -480,34 +480,34 @@ xref 0000015756 00000 n 0000016034 00000 n 0000000000 00000 f -0000016184 00000 n +0000016183 00000 n 0000000020 00000 n 0000000382 00000 n -0000016297 00000 n +0000016296 00000 n 0000000603 00000 n 0000000758 00000 n -0000016429 00000 n +0000016428 00000 n 0000000943 00000 n 0000001083 00000 n -0000016561 00000 n +0000016560 00000 n 0000001268 00000 n 0000013812 00000 n 0000013677 00000 n 0000013071 00000 n -0000020446 00000 n -0000020800 00000 n +0000020445 00000 n +0000020799 00000 n 0000013922 00000 n 0000014015 00000 n 0000014132 00000 n -0000016813 00000 n -0000019262 00000 n -0000016999 00000 n -0000019483 00000 n -0000020600 00000 n -0000020862 00000 n -0000020980 00000 n +0000016812 00000 n +0000019261 00000 n +0000016998 00000 n +0000019482 00000 n +0000020599 00000 n +0000020861 00000 n +0000020979 00000 n trailer -<< /Size 47 /Root 45 0 R /Info 46 0 R /ID [ <EF11D0BC0166BADB0809C3789FE9235A> <EF11D0BC0166BADB0809C3789FE9235A> ] >> +<< /Size 47 /Root 45 0 R /Info 46 0 R /ID [ <CAF46A2B1E52D3AE87EB05AABC0D2D7E> <CAF46A2B1E52D3AE87EB05AABC0D2D7E> ] >> startxref -21203 +21202 %%EOF diff --git a/macros/latex/contrib/tagpdf/ex-alt-actualtext.pdf b/macros/latex/contrib/tagpdf/ex-alt-actualtext.pdf Binary files differindex 049d60252f..b98f65296d 100644 --- a/macros/latex/contrib/tagpdf/ex-alt-actualtext.pdf +++ b/macros/latex/contrib/tagpdf/ex-alt-actualtext.pdf diff --git a/macros/latex/contrib/tagpdf/ex-attribute.pdf b/macros/latex/contrib/tagpdf/ex-attribute.pdf index 41fc96be1c..3690dceabf 100644 --- a/macros/latex/contrib/tagpdf/ex-attribute.pdf +++ b/macros/latex/contrib/tagpdf/ex-attribute.pdf @@ -222,17 +222,17 @@ stream </dc:language> <dc:date> <rdf:Seq> - <rdf:li>2024-09-11T23:01:57+02:00</rdf:li> + <rdf:li>2024-09-16T23:14:51+02:00</rdf:li> </rdf:Seq> </dc:date> <dc:format>application/pdf</dc:format> <dc:source>ex-attribute.tex</dc:source> <xmp:CreatorTool>LaTeX</xmp:CreatorTool> - <xmp:CreateDate>2024-09-11T23:01:57+02:00</xmp:CreateDate> - <xmp:ModifyDate>2024-09-11T23:01:57+02:00</xmp:ModifyDate> - <xmp:MetadataDate>2024-09-11T23:01:57+02:00</xmp:MetadataDate> + <xmp:CreateDate>2024-09-16T23:14:51+02:00</xmp:CreateDate> + <xmp:ModifyDate>2024-09-16T23:14:51+02:00</xmp:ModifyDate> + <xmp:MetadataDate>2024-09-16T23:14:51+02:00</xmp:MetadataDate> <xmpMM:DocumentID>uuid:7a9cf910-1c19-429a-8f24-339c62d8a57f</xmpMM:DocumentID> - <xmpMM:InstanceID>uuid:189bb4fa-8af3-4644-8654-2baf81e10776</xmpMM:InstanceID> + <xmpMM:InstanceID>uuid:cc63fc15-f109-4c23-87e0-ae054c5fc24a</xmpMM:InstanceID> <prism:complianceProfile>three</prism:complianceProfile> <prism:pageCount>1</prism:pageCount> </rdf:Description> @@ -456,7 +456,7 @@ endobj << /Type /Catalog /Pages 26 0 R /MarkInfo 27 0 R/Lang (de_DE)/Metadata 21 0 R/StructTreeRoot 5 0 R >> endobj 38 0 obj -<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/Title (Title)/CreationDate (D:20240911230157+02'00')/ModDate (D:20240911230157+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >> +<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/Title (Title)/CreationDate (D:20240916231451+02'00')/ModDate (D:20240916231451+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >> endobj xref 0 39 @@ -500,7 +500,7 @@ xref 0000018052 00000 n 0000018170 00000 n trailer -<< /Size 39 /Root 37 0 R /Info 38 0 R /ID [ <2AFD44752DDB6BFD19BAE550F03B3C96> <2AFD44752DDB6BFD19BAE550F03B3C96> ] >> +<< /Size 39 /Root 37 0 R /Info 38 0 R /ID [ <D8FFE97D0CAF78CED294D3AF8DA45DD2> <D8FFE97D0CAF78CED294D3AF8DA45DD2> ] >> startxref 18407 %%EOF diff --git a/macros/latex/contrib/tagpdf/ex-formula-problem.pdf b/macros/latex/contrib/tagpdf/ex-formula-problem.pdf index a829a64a59..3be4493a87 100644 --- a/macros/latex/contrib/tagpdf/ex-formula-problem.pdf +++ b/macros/latex/contrib/tagpdf/ex-formula-problem.pdf @@ -245,17 +245,17 @@ stream </dc:language> <dc:date> <rdf:Seq> - <rdf:li>2024-09-11T23:02:18+02:00</rdf:li> + <rdf:li>2024-09-16T23:15:14+02:00</rdf:li> </rdf:Seq> </dc:date> <dc:format>application/pdf</dc:format> <dc:source>ex-formula-problem.tex</dc:source> <xmp:CreatorTool>LaTeX</xmp:CreatorTool> - <xmp:CreateDate>2024-09-11T23:02:18+02:00</xmp:CreateDate> - <xmp:ModifyDate>2024-09-11T23:02:18+02:00</xmp:ModifyDate> - <xmp:MetadataDate>2024-09-11T23:02:18+02:00</xmp:MetadataDate> + <xmp:CreateDate>2024-09-16T23:15:14+02:00</xmp:CreateDate> + <xmp:ModifyDate>2024-09-16T23:15:14+02:00</xmp:ModifyDate> + <xmp:MetadataDate>2024-09-16T23:15:14+02:00</xmp:MetadataDate> <xmpMM:DocumentID>uuid:8eb2ce1d-b2ec-440a-8bc2-73733eb3eeb0</xmpMM:DocumentID> - <xmpMM:InstanceID>uuid:348a8a14-64eb-4e05-81dd-2888a320cd86</xmpMM:InstanceID> + <xmpMM:InstanceID>uuid:07852560-d6c8-4db0-8dcb-56801fad3639</xmpMM:InstanceID> <prism:complianceProfile>three</prism:complianceProfile> <prism:pageCount>2</prism:pageCount> </rdf:Description> @@ -431,7 +431,7 @@ endobj << /Type /Catalog /Pages 16 0 R /MarkInfo 23 0 R/Lang (de-DE)/Metadata 19 0 R/StructTreeRoot 5 0 R >> endobj 33 0 obj -<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240911230218+02'00')/ModDate (D:20240911230218+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >> +<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240916231514+02'00')/ModDate (D:20240916231514+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >> endobj xref 0 34 @@ -470,7 +470,7 @@ xref 0000019217 00000 n 0000019335 00000 n trailer -<< /Size 34 /Root 32 0 R /Info 33 0 R /ID [ <E4A77C91007F4B25FCB6D6A6D69C4C5D> <E4A77C91007F4B25FCB6D6A6D69C4C5D> ] >> +<< /Size 34 /Root 32 0 R /Info 33 0 R /ID [ <BE560A5AB892B55B8DEB50F7C89AA5EB> <BE560A5AB892B55B8DEB50F7C89AA5EB> ] >> startxref 19558 %%EOF diff --git a/macros/latex/contrib/tagpdf/ex-list.pdf b/macros/latex/contrib/tagpdf/ex-list.pdf index f59334e857..bff3e7f266 100644 --- a/macros/latex/contrib/tagpdf/ex-list.pdf +++ b/macros/latex/contrib/tagpdf/ex-list.pdf @@ -216,17 +216,17 @@ stream </dc:language> <dc:date> <rdf:Seq> - <rdf:li>2024-09-11T23:02:40+02:00</rdf:li> + <rdf:li>2024-09-16T23:15:40+02:00</rdf:li> </rdf:Seq> </dc:date> <dc:format>application/pdf</dc:format> <dc:source>ex-list.tex</dc:source> <xmp:CreatorTool>LaTeX</xmp:CreatorTool> - <xmp:CreateDate>2024-09-11T23:02:40+02:00</xmp:CreateDate> - <xmp:ModifyDate>2024-09-11T23:02:40+02:00</xmp:ModifyDate> - <xmp:MetadataDate>2024-09-11T23:02:40+02:00</xmp:MetadataDate> + <xmp:CreateDate>2024-09-16T23:15:40+02:00</xmp:CreateDate> + <xmp:ModifyDate>2024-09-16T23:15:40+02:00</xmp:ModifyDate> + <xmp:MetadataDate>2024-09-16T23:15:40+02:00</xmp:MetadataDate> <xmpMM:DocumentID>uuid:4c749825-1de7-414c-879f-29e4d0bef66e</xmpMM:DocumentID> - <xmpMM:InstanceID>uuid:37f1fc97-1b37-45e9-8bc1-1447b36d46cb</xmpMM:InstanceID> + <xmpMM:InstanceID>uuid:663679a3-cbaa-41c1-8541-e27efe5bf460</xmpMM:InstanceID> <prism:complianceProfile>three</prism:complianceProfile> <prism:pageCount>1</prism:pageCount> </rdf:Description> @@ -660,7 +660,7 @@ endobj << /Type /Catalog /Pages 54 0 R /MarkInfo 55 0 R/Lang (en)/Metadata 48 0 R/StructTreeRoot 5 0 R >> endobj 72 0 obj -<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240911230240+02'00')/ModDate (D:20240911230240+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >> +<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240916231540+02'00')/ModDate (D:20240916231540+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >> endobj xref 0 73 @@ -738,7 +738,7 @@ xref 0000029921 00000 n 0000030036 00000 n trailer -<< /Size 73 /Root 71 0 R /Info 72 0 R /ID [ <7B8BCECC9F7E2EB74D40849C3F2B689E> <7B8BCECC9F7E2EB74D40849C3F2B689E> ] >> +<< /Size 73 /Root 71 0 R /Info 72 0 R /ID [ <47141410601154CA87EA5F9B05C19636> <47141410601154CA87EA5F9B05C19636> ] >> startxref 30259 %%EOF diff --git a/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf b/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf index eb6042ce92..c4deafa33d 100644 --- a/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf +++ b/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf @@ -249,17 +249,17 @@ stream </dc:language> <dc:date> <rdf:Seq> - <rdf:li>2024-09-11T23:03:00+02:00</rdf:li> + <rdf:li>2024-09-16T23:16:06+02:00</rdf:li> </rdf:Seq> </dc:date> <dc:format>application/pdf</dc:format> <dc:source>ex-mc-manual-para-split-obsolete.tex</dc:source> <xmp:CreatorTool>LaTeX</xmp:CreatorTool> - <xmp:CreateDate>2024-09-11T23:03:00+02:00</xmp:CreateDate> - <xmp:ModifyDate>2024-09-11T23:03:00+02:00</xmp:ModifyDate> - <xmp:MetadataDate>2024-09-11T23:03:00+02:00</xmp:MetadataDate> + <xmp:CreateDate>2024-09-16T23:16:06+02:00</xmp:CreateDate> + <xmp:ModifyDate>2024-09-16T23:16:06+02:00</xmp:ModifyDate> + <xmp:MetadataDate>2024-09-16T23:16:06+02:00</xmp:MetadataDate> <xmpMM:DocumentID>uuid:c33d64b4-96ec-4e48-8f27-0b3edc831547</xmpMM:DocumentID> - <xmpMM:InstanceID>uuid:ca503309-4c77-4249-831a-bedd2cd8edde</xmpMM:InstanceID> + <xmpMM:InstanceID>uuid:02d42fce-9fea-44e8-84cb-b67592a2a853</xmpMM:InstanceID> <prism:complianceProfile>three</prism:complianceProfile> <prism:pageCount>2</prism:pageCount> </rdf:Description> @@ -419,7 +419,7 @@ endobj << /Type /Catalog /Pages 14 0 R /Lang (de)/Metadata 15 0 R >> endobj 25 0 obj -<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240911230300+02'00')/ModDate (D:20240911230300+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >> +<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240916231606+02'00')/ModDate (D:20240916231606+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >> endobj xref 0 26 @@ -450,7 +450,7 @@ xref 0000024225 00000 n 0000024303 00000 n trailer -<< /Size 26 /Root 24 0 R /Info 25 0 R /ID [ <715DD84A6B76368D6021B514623D2DCA> <715DD84A6B76368D6021B514623D2DCA> ] >> +<< /Size 26 /Root 24 0 R /Info 25 0 R /ID [ <3C637231FF843589F1694979C9C8F1E9> <3C637231FF843589F1694979C9C8F1E9> ] >> startxref 24526 %%EOF diff --git a/macros/latex/contrib/tagpdf/ex-softhyphen.pdf b/macros/latex/contrib/tagpdf/ex-softhyphen.pdf index 4cfd86fbf0..5b157abef4 100644 --- a/macros/latex/contrib/tagpdf/ex-softhyphen.pdf +++ b/macros/latex/contrib/tagpdf/ex-softhyphen.pdf @@ -216,17 +216,17 @@ stream </dc:language> <dc:date> <rdf:Seq> - <rdf:li>2024-09-11T23:03:19+02:00</rdf:li> + <rdf:li>2024-09-16T23:16:29+02:00</rdf:li> </rdf:Seq> </dc:date> <dc:format>application/pdf</dc:format> <dc:source>ex-softhyphen.tex</dc:source> <xmp:CreatorTool>LaTeX</xmp:CreatorTool> - <xmp:CreateDate>2024-09-11T23:03:19+02:00</xmp:CreateDate> - <xmp:ModifyDate>2024-09-11T23:03:19+02:00</xmp:ModifyDate> - <xmp:MetadataDate>2024-09-11T23:03:19+02:00</xmp:MetadataDate> + <xmp:CreateDate>2024-09-16T23:16:29+02:00</xmp:CreateDate> + <xmp:ModifyDate>2024-09-16T23:16:29+02:00</xmp:ModifyDate> + <xmp:MetadataDate>2024-09-16T23:16:29+02:00</xmp:MetadataDate> <xmpMM:DocumentID>uuid:aa82e685-4098-469d-861c-3c45dfc700c7</xmpMM:DocumentID> - <xmpMM:InstanceID>uuid:46cfccca-4918-4c12-8e3d-cfa2826bcdd2</xmpMM:InstanceID> + <xmpMM:InstanceID>uuid:c1f8ee28-c74d-4fe3-859d-5667f036c14d</xmpMM:InstanceID> <prism:complianceProfile>three</prism:complianceProfile> <prism:pageCount>1</prism:pageCount> </rdf:Description> @@ -399,7 +399,7 @@ endobj << /Type /Catalog /Pages 19 0 R /MarkInfo 20 0 R/Lang (de)/Metadata 14 0 R/StructTreeRoot 5 0 R >> endobj 30 0 obj -<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240911230319+02'00')/ModDate (D:20240911230319+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >> +<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240916231629+02'00')/ModDate (D:20240916231629+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >> endobj xref 0 31 @@ -435,7 +435,7 @@ xref 0000018444 00000 n 0000018559 00000 n trailer -<< /Size 31 /Root 29 0 R /Info 30 0 R /ID [ <B12DC08369E214B53B74B54D34A58FBB> <B12DC08369E214B53B74B54D34A58FBB> ] >> +<< /Size 31 /Root 29 0 R /Info 30 0 R /ID [ <DD4C19A30779C7C53A0E2F9F517D5100> <DD4C19A30779C7C53A0E2F9F517D5100> ] >> startxref 18782 %%EOF diff --git a/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf b/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf index 1c3171a09b..fa6c7457d8 100644 --- a/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf +++ b/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf @@ -216,17 +216,17 @@ stream </dc:language> <dc:date> <rdf:Seq> - <rdf:li>2024-09-11T23:03:37+02:00</rdf:li> + <rdf:li>2024-09-16T23:16:50+02:00</rdf:li> </rdf:Seq> </dc:date> <dc:format>application/pdf</dc:format> <dc:source>ex-spaceglyph-listings.tex</dc:source> <xmp:CreatorTool>LaTeX</xmp:CreatorTool> - <xmp:CreateDate>2024-09-11T23:03:37+02:00</xmp:CreateDate> - <xmp:ModifyDate>2024-09-11T23:03:37+02:00</xmp:ModifyDate> - <xmp:MetadataDate>2024-09-11T23:03:37+02:00</xmp:MetadataDate> + <xmp:CreateDate>2024-09-16T23:16:50+02:00</xmp:CreateDate> + <xmp:ModifyDate>2024-09-16T23:16:50+02:00</xmp:ModifyDate> + <xmp:MetadataDate>2024-09-16T23:16:50+02:00</xmp:MetadataDate> <xmpMM:DocumentID>uuid:acdc2435-bf29-4e54-8d09-1c9b6dc32038</xmpMM:DocumentID> - <xmpMM:InstanceID>uuid:6b2bca4b-96ca-4ac0-8463-b09fd02fe20c</xmpMM:InstanceID> + <xmpMM:InstanceID>uuid:22e6b54d-e349-4a3d-89ca-64190a29b6f8</xmpMM:InstanceID> <prism:complianceProfile>three</prism:complianceProfile> <prism:pageCount>1</prism:pageCount> </rdf:Description> @@ -360,7 +360,7 @@ endobj << /Type /Catalog /Pages 15 0 R /MarkInfo 16 0 R/Lang (de)/Metadata 10 0 R/StructTreeRoot 5 0 R >> endobj 26 0 obj -<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240911230337+02'00')/ModDate (D:20240911230337+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >> +<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240916231650+02'00')/ModDate (D:20240916231650+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >> endobj xref 0 27 @@ -392,7 +392,7 @@ xref 0000015816 00000 n 0000015931 00000 n trailer -<< /Size 27 /Root 25 0 R /Info 26 0 R /ID [ <797172104CB057DD5ADF295BF9F5263B> <797172104CB057DD5ADF295BF9F5263B> ] >> +<< /Size 27 /Root 25 0 R /Info 26 0 R /ID [ <E53E29969037BD3F9F9BB1E9ADABB4FC> <E53E29969037BD3F9F9BB1E9ADABB4FC> ] >> startxref 16154 %%EOF diff --git a/macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf b/macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf index e9fe3d6711..70b4e9922a 100644 --- a/macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf +++ b/macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf @@ -216,17 +216,17 @@ stream </dc:language> <dc:date> <rdf:Seq> - <rdf:li>2024-09-11T23:03:56+02:00</rdf:li> + <rdf:li>2024-09-16T23:17:11+02:00</rdf:li> </rdf:Seq> </dc:date> <dc:format>application/pdf</dc:format> <dc:source>ex-structure-obsolete.tex</dc:source> <xmp:CreatorTool>LaTeX</xmp:CreatorTool> - <xmp:CreateDate>2024-09-11T23:03:56+02:00</xmp:CreateDate> - <xmp:ModifyDate>2024-09-11T23:03:56+02:00</xmp:ModifyDate> - <xmp:MetadataDate>2024-09-11T23:03:56+02:00</xmp:MetadataDate> + <xmp:CreateDate>2024-09-16T23:17:11+02:00</xmp:CreateDate> + <xmp:ModifyDate>2024-09-16T23:17:11+02:00</xmp:ModifyDate> + <xmp:MetadataDate>2024-09-16T23:17:11+02:00</xmp:MetadataDate> <xmpMM:DocumentID>uuid:bf5e4a2b-cfa9-4fc5-878c-8f9d2ee95445</xmpMM:DocumentID> - <xmpMM:InstanceID>uuid:7e1e767d-58e8-4df8-8bc1-54321b804575</xmpMM:InstanceID> + <xmpMM:InstanceID>uuid:5942b5fc-8732-48de-83f5-988ceab02c03</xmpMM:InstanceID> <prism:complianceProfile>three</prism:complianceProfile> <prism:pageCount>1</prism:pageCount> </rdf:Description> @@ -532,7 +532,7 @@ endobj << /Type /Catalog /Pages 26 0 R /MarkInfo 27 0 R/Lang (de)/Metadata 20 0 R/StructTreeRoot 5 0 R >> endobj 43 0 obj -<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240911230356+02'00')/ModDate (D:20240911230356+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >> +<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240916231711+02'00')/ModDate (D:20240916231711+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >> endobj xref 0 44 @@ -581,7 +581,7 @@ xref 0000023754 00000 n 0000023869 00000 n trailer -<< /Size 44 /Root 42 0 R /Info 43 0 R /ID [ <0419F055213D878FAD9CA09C1517FAC5> <0419F055213D878FAD9CA09C1517FAC5> ] >> +<< /Size 44 /Root 42 0 R /Info 43 0 R /ID [ <315E3C9C805F4176C8EEA6E28B15D63A> <315E3C9C805F4176C8EEA6E28B15D63A> ] >> startxref 24092 %%EOF diff --git a/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf b/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf index ca3d09bd4d..dab28eb5be 100644 --- a/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf +++ b/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf @@ -216,17 +216,17 @@ stream </dc:language> <dc:date> <rdf:Seq> - <rdf:li>2024-09-11T23:04:16+02:00</rdf:li> + <rdf:li>2024-09-16T23:17:32+02:00</rdf:li> </rdf:Seq> </dc:date> <dc:format>application/pdf</dc:format> <dc:source>ex-tagpdf-template.tex</dc:source> <xmp:CreatorTool>LaTeX</xmp:CreatorTool> - <xmp:CreateDate>2024-09-11T23:04:16+02:00</xmp:CreateDate> - <xmp:ModifyDate>2024-09-11T23:04:16+02:00</xmp:ModifyDate> - <xmp:MetadataDate>2024-09-11T23:04:16+02:00</xmp:MetadataDate> + <xmp:CreateDate>2024-09-16T23:17:32+02:00</xmp:CreateDate> + <xmp:ModifyDate>2024-09-16T23:17:32+02:00</xmp:ModifyDate> + <xmp:MetadataDate>2024-09-16T23:17:32+02:00</xmp:MetadataDate> <xmpMM:DocumentID>uuid:f320abfc-f6ab-4d12-8719-d176f4d947cf</xmpMM:DocumentID> - <xmpMM:InstanceID>uuid:8d57dc19-ea05-4843-8e7e-3b9d3b267d67</xmpMM:InstanceID> + <xmpMM:InstanceID>uuid:00659af0-3fb7-47ae-865d-6609c8c59fe3</xmpMM:InstanceID> <prism:complianceProfile>three</prism:complianceProfile> <prism:pageCount>1</prism:pageCount> </rdf:Description> @@ -313,7 +313,7 @@ endobj << /Type /Namespace /NS (https://www.latex-project.org/ns/book/2022) /RoleMapNS 18 0 R >> endobj 19 0 obj -<< /Type /Namespace /NS (data:,12A4B315-916B-E36F-334B-6733F8EF6CD5) >> +<< /Type /Namespace /NS (data:,C5949C29-1579-8EAA-5B48-21F381CD9140) >> endobj 8 0 obj [ 9 0 R 11 0 R 13 0 R 15 0 R 17 0 R 19 0 R ] @@ -405,7 +405,7 @@ endobj << /Type /Catalog /Pages 31 0 R /MarkInfo 32 0 R/Lang (en)/Metadata 26 0 R/StructTreeRoot 5 0 R >> endobj 42 0 obj -<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240911230416+02'00')/ModDate (D:20240911230416+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >> +<< /Producer (luahbtex-1.18.0)/Creator (LaTeX)/CreationDate (D:20240916231732+02'00')/ModDate (D:20240916231732+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.18.0 (TeX Live 2024)) >> endobj xref 0 43 @@ -453,7 +453,7 @@ xref 0000018173 00000 n 0000018288 00000 n trailer -<< /Size 43 /Root 41 0 R /Info 42 0 R /ID [ <1F4359ECADEDD129E3F575A5A6D77264> <1F4359ECADEDD129E3F575A5A6D77264> ] >> +<< /Size 43 /Root 41 0 R /Info 42 0 R /ID [ <0DBC95E2E8610D105A3F1B62C5D4C9B9> <0DBC95E2E8610D105A3F1B62C5D4C9B9> ] >> startxref 18511 %%EOF diff --git a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx index 752aa6be2e..f21c1804ec 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx @@ -47,13 +47,13 @@ % }^^A % } % -% \date{Version 0.99e, released 2024-09-11} +% \date{Version 0.99f, released 2024-09-16} % \maketitle % \begin{implementation} % \begin{macrocode} %<@@=tag> %<*luatex> -\ProvidesExplFile {tagpdf-luatex.def} {2024-09-11} {0.99e} +\ProvidesExplFile {tagpdf-luatex.def} {2024-09-16} {0.99f} {tagpdf~driver~for~luatex} % \end{macrocode} % \section{Loading the lua} @@ -85,6 +85,7 @@ % \@@_seq_new:N, % \@@_prop_gput:Nnn, % \@@_seq_gput_right:Nn, +% \@@_seq_gput_left:Nn, % \@@_seq_item:cn, % \@@_prop_item:cn, % \@@_seq_show:N, @@ -123,9 +124,18 @@ \seq_gput_right:Nn #1 { #2 } \lua_now:e { table.insert(ltx.@@.tables.\cs_to_str:N#1, "#2") } } - +% \end{macrocode} +% +% this inserts on the right of the lua table, but as the lua table is not used for kids +% this is ignored for now. +% \begin{macrocode} +\cs_set_protected:Npn \@@_seq_gput_left:Nn #1 #2 + { + \seq_gput_left:Nn #1 { #2 } + \lua_now:e { table.insert(ltx.@@.tables.\cs_to_str:N#1, "#2") } + } + %Hm not quite sure about the naming - \cs_set:Npn \@@_seq_item:cn #1 #2 { \lua_now:e { tex.print(ltx.@@.tables.#1[#2]) } @@ -164,8 +174,8 @@ local ProvidesLuaModule = { name = "tagpdf", - version = "0.99e", --TAGVERSION - date = "2024-09-11", --TAGDATE + version = "0.99f", --TAGVERSION + date = "2024-09-16", --TAGDATE description = "tagpdf lua code", license = "The LATEX Project Public License 1.3c" } diff --git a/macros/latex/contrib/tagpdf/tagpdf-checks.dtx b/macros/latex/contrib/tagpdf/tagpdf-checks.dtx index 0c334eb646..5ade1ff427 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-checks.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-checks.dtx @@ -48,7 +48,7 @@ % }^^A % } % -% \date{Version 0.99e, released 2024-09-11} +% \date{Version 0.99f, released 2024-09-16} % \maketitle % \begin{documentation} % \section{Commands} @@ -331,7 +331,7 @@ % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-checks-code} {2024-09-11} {0.99e} +\ProvidesExplPackage {tagpdf-checks-code} {2024-09-16} {0.99f} {part of tagpdf - code related to checks, conditionals, debugging and messages} %</header> % \end{macrocode} @@ -1137,24 +1137,24 @@ } } % \end{macrocode} -% This tracks tag stop and start. -% The tag-stop message should go before the int is increased. -% The tag-start message after the int is decreased. +% This tracks tag suspend and resume. +% The tag-suspend message should go before the int is increased. +% The tag-resume message after the int is decreased. % \begin{macrocode} -\msg_new:nnn { tag / debug } {tag-stop} +\msg_new:nnn { tag / debug } {tag-suspend} { \int_if_zero:nTF {#1} - {Tagging~stopped} - {Tagging~(not)~stopped~(already~inactive)}\\ + {Tagging~suspended} + {Tagging~(not)~suspended~(already~inactive)}\\ level:~#1~==>~\int_eval:n{#1+1}\tl_if_empty:nF{#2}{,~label:~#2}~[\msg_line_context:] } -\msg_new:nnn { tag / debug } {tag-start} +\msg_new:nnn { tag / debug } {tag-resume} { \int_if_zero:nTF {#1} - {Tagging~restarted} - {Tagging~(not)~restarted}\\ + {Tagging~resumed} + {Tagging~(not)~resumed}\\ level:~\int_eval:n{#1+1}~==>~#1\tl_if_empty:nF{#2}{,~label:~#2}~[\msg_line_context:] } % \end{macrocode} diff --git a/macros/latex/contrib/tagpdf/tagpdf-code.pdf b/macros/latex/contrib/tagpdf/tagpdf-code.pdf Binary files differindex 60af59e1ba..5a5d60643a 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-code.pdf +++ b/macros/latex/contrib/tagpdf/tagpdf-code.pdf diff --git a/macros/latex/contrib/tagpdf/tagpdf-code.tex b/macros/latex/contrib/tagpdf/tagpdf-code.tex index b483b96974..df05b99a30 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-code.tex +++ b/macros/latex/contrib/tagpdf/tagpdf-code.tex @@ -28,9 +28,18 @@ % The next line is needed so that \GetFileInfo will be able to pick up % version data. +\usepackage{iftex} +%until l3doc is corrected +\ifluatex +\usepackage[TU]{fontenc} +\ttfamily + \DeclareFontShape{TU}{lmtt}{m}{it} + {<-> \UnicodeFontFile{lmmonoslant10-regular}{}}{} +\fi \usepackage{longtable} \usepackage{tagpdf} -\makeatletter + +\input{tagpdf-docelements} %\def\@setupverbvisiblespace{} %\def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi % \bgroup @@ -38,13 +47,12 @@ % \verbatim@font\@noligs % \language\l@nohyphenation % \@ifstar\@verb\@verb} -\makeatother \begin{document} \GetFileInfo{tagpdf.sty} \title{% - \pkg{tagpdf} -- A package to experiment with pdf tagging% + \pkg{tagpdf} -- \LaTeX{} kernel code for PDF tagging% \thanks{This file describes \fileversion, last revised \filedate.}% } diff --git a/macros/latex/contrib/tagpdf/tagpdf-data.dtx b/macros/latex/contrib/tagpdf/tagpdf-data.dtx index 06fe55255d..7bff6b5d15 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-data.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-data.dtx @@ -47,7 +47,7 @@ % }^^A % } % -% \date{Version 0.99e, released 2024-09-11} +% \date{Version 0.99f, released 2024-09-16} % \maketitle % \begin{documentation} % This files contains a various data files which are read in @@ -61,7 +61,7 @@ % latex-lab has also a namespace module, which takes precedence! % \begin{macrocode} %<*ns-latex> -%% \ProvidesExplFile {tagpdf-ns-latex.def} {2024-09-11} {0.99e} +%% \ProvidesExplFile {tagpdf-ns-latex.def} {2024-09-16} {0.99f} %% {latex} {https://www.latex-project.org/ns/dflt/2022}{} title, Title, pdf2, part, Title, pdf2, @@ -93,7 +93,7 @@ text, P, pdf2, % It is bound to change % \begin{macrocode} %<*ns-latex-book> -%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2024-09-11} {0.99e} +%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2024-09-16} {0.99f} %% {latex-book} {https://www.latex-project.org/ns/book/2022}{} chapter, H1,pdf2, section, H2,pdf2, @@ -107,7 +107,7 @@ subparagraph, H6,pdf2, % \section{The pdf namespace data} % \begin{macrocode} %<*ns-pdf> -%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2024-09-11} {0.99e} +%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2024-09-16} {0.99f} %% {pdf} {http://iso.org/pdf/ssn}{} StructTreeRoot,StructTreeRoot,pdf,D, Document,Document,pdf,D, @@ -175,7 +175,7 @@ Strong,Span,pdf,I, % \section{The pdf 2.0 namespace data} % \begin{macrocode} %<*ns-pdf2> -%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2024-09-11} {0.99e} +%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2024-09-16} {0.99f} %% {pdf2} {http://iso.org/pdf2/ssn}{} StructTreeRoot,StructTreeRoot,pdf2,D, Document,Document,pdf2,D, @@ -232,7 +232,7 @@ Strong,Strong,pdf2,I, % \section{The mathml namespace data} % \begin{macrocode} %<*ns-mathml> -%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2024-09-11} {0.99e} +%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2024-09-16} {0.99f} % {mathml}{http://www.w3.org/1998/Math/MathML}{} abs,abs,mathml, and,and,mathml, @@ -467,7 +467,7 @@ xor,xor,mathml, % This will perhaps change in future. % \begin{macrocode} %<*parent-child> -%% \ProvidesExplFile {tagpdf-parent-child.csv} {2024-09-11} {0.99e} +%% \ProvidesExplFile {tagpdf-parent-child.csv} {2024-09-16} {0.99f} ,,,StructTreeRoot,Document,Art,Part,Div,Sect,BlockQuote,NonStruct,TOC,TOCI,Index,Private,Quote,Note,Reference,BibEntry,P,Hn,H,Lbl,Code,Span,Link,Annot,Form,Ruby,RB,RT,RP,Warichu,WT,WP,L,LI,LBody,Table,TR,TH,TD,THead,TBody,TFoot,Caption,Figure,Formula,MC Document,both,document level,1,0..n,∅,‡,‡,∅,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅ Art,1.7,grouping,∅,0..n,∅,‡,‡,0..n,0..n,‡,∅,∅,∅,0..n,∅,0..n,∅,∅,∅,0..1,0..1,∅,∅,∅,0..n,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,0..n,∅,∅,0..n,0..n,∅,∅,∅,0..n,0..n,∅,∅ @@ -522,7 +522,7 @@ MC,both,---,∅,∅,∅,∅,∅,∅,0..n,‡,∅,∅,∅,0..n,0..n,0..n,0..n,0.. % This will perhaps change in future. % \begin{macrocode} %<*parent-child-2> -%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2024-09-11} {0.99e} +%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2024-09-16} {0.99f} ,,,StructTreeRoot,Document,DocumentFragment,Art,Part,Div,Sect,Aside,BlockQuote,NonStruct,TOC,TOCI,Index,Private,Title,Sub,Quote,Note,Reference,BibEntry,P,Hn,H,Lbl,Code,Em,Strong,Span,Link,Annot,Form,Ruby,RB,RT,RP,Warichu,WT,WP,FENote,L,LI,LBody,Table,TR,TH,TD,THead,TBody,TFoot,Caption,Figure,Formula,math,mathml,Artifact,MC Document,both,document level,1,0..n,0..n,∅,‡,‡,∅,0..n,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,0..n,∅ DocumentFragment,2.0,document level,∅,0..n,0..n,0..n,‡,‡,0..n,0..n,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅*,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅*,∅*,∅,∅,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅,0..n,∅ diff --git a/macros/latex/contrib/tagpdf/tagpdf-docelements.tex b/macros/latex/contrib/tagpdf/tagpdf-docelements.tex new file mode 100644 index 0000000000..c388889aa1 --- /dev/null +++ b/macros/latex/contrib/tagpdf/tagpdf-docelements.tex @@ -0,0 +1,2 @@ +\ProvideDocElement[printtype=\textit{struct key},idxtype=key,idxgroup=Structure keys]{Structkeydecl}{structkeydecl} +\ProvideDocElement[printtype=\textit{setup key},idxtype=key,idxgroup=Setup keys]{Setupkeydecl}{setupkeydecl} diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx index 41f6b53fba..f10752d296 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.99e, released 2024-09-11} +% \date{Version 0.99f, released 2024-09-16} % \maketitle % \begin{documentation} % \end{documentation} @@ -55,11 +55,11 @@ % \begin{macrocode} %<@@=tag> %<*generic> -\ProvidesExplPackage {tagpdf-mc-code-generic} {2024-09-11} {0.99e} +\ProvidesExplPackage {tagpdf-mc-code-generic} {2024-09-16} {0.99f} {part of tagpdf - code related to marking chunks - generic mode} %</generic> %<*debug> -\ProvidesExplPackage {tagpdf-debug-generic} {2024-09-11} {0.99e} +\ProvidesExplPackage {tagpdf-debug-generic} {2024-09-16} {0.99f} {part of tagpdf - debugging code related to marking chunks - generic mode} %</debug> % \end{macrocode} diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx index bc19d481f8..5b41c883ed 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.99e, released 2024-09-11} +% \date{Version 0.99f, released 2024-09-16} % \maketitle % \begin{implementation} % The code is split into three parts: code shared by all engines, @@ -86,11 +86,11 @@ % \begin{macrocode} %<@@=tag> %<*luamode> -\ProvidesExplPackage {tagpdf-mc-code-lua} {2024-09-11} {0.99e} +\ProvidesExplPackage {tagpdf-mc-code-lua} {2024-09-16} {0.99f} {tagpdf - mc code only for the luamode } %</luamode> %<*debug> -\ProvidesExplPackage {tagpdf-debug-lua} {2024-09-11} {0.99e} +\ProvidesExplPackage {tagpdf-debug-lua} {2024-09-16} {0.99f} {part of tagpdf - debugging code related to marking chunks - lua mode} %</debug> % \end{macrocode} diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx index 4ac73c0b8f..c8b7d1a5e8 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.99e, released 2024-09-11} +% \date{Version 0.99f, released 2024-09-16} % \maketitle % \begin{documentation} % \section{Public Commands} @@ -181,7 +181,7 @@ % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-mc-code-shared} {2024-09-11} {0.99e} +\ProvidesExplPackage {tagpdf-mc-code-shared} {2024-09-16} {0.99f} {part of tagpdf - code related to marking chunks - code shared by generic and luamode } %</header> @@ -365,12 +365,12 @@ \tag_mc_end_push: \tag_mc_begin:n {artifact=#1} \group_begin: - \tag_stop:n{artifact-group} + \tag_suspend:n{artifact-group} } \cs_set_protected:Npn \tag_mc_artifact_group_end: { - \tag_start:n{artifact-group} + \tag_resume:n{artifact-group} \group_end: \tag_mc_end: \tag_mc_begin_pop:n{} diff --git a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx index f704e49ab6..d29c328b2e 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.99e, released 2024-09-11} +% \date{Version 0.99f, released 2024-09-16} % \maketitle % \begin{documentation} % \begin{function} @@ -98,7 +98,7 @@ % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-roles-code} {2024-09-11} {0.99e} +\ProvidesExplPackage {tagpdf-roles-code} {2024-09-16} {0.99f} {part of tagpdf - code related to roles and structure names} %</header> % \end{macrocode} diff --git a/macros/latex/contrib/tagpdf/tagpdf-space.dtx b/macros/latex/contrib/tagpdf/tagpdf-space.dtx index cabc5e2091..e0aa2e09d7 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-space.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-space.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.99e, released 2024-09-11} +% \date{Version 0.99f, released 2024-09-16} % \maketitle % \begin{documentation} % \begin{function}{activate/space (setup-key),interwordspace (deprecated)} @@ -66,7 +66,7 @@ % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-space-code} {2024-09-11} {0.99e} +\ProvidesExplPackage {tagpdf-space-code} {2024-09-16} {0.99f} {part of tagpdf - code related to real space chars} %</header> % \end{macrocode} diff --git a/macros/latex/contrib/tagpdf/tagpdf-struct.dtx b/macros/latex/contrib/tagpdf/tagpdf-struct.dtx index 970325dcd4..f656b91686 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-struct.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-struct.dtx @@ -27,6 +27,7 @@ \usepackage{array,booktabs,caption} \hypersetup{pdfauthor=Ulrike Fischer, pdftitle=tagpdf-tree module (tagpdf)} +\input{tagpdf-docelements} \begin{document} \DocInput{\jobname.dtx} \end{document} @@ -46,7 +47,7 @@ % }^^A % } % -% \date{Version 0.99e, released 2024-09-11} +% \date{Version 0.99f, released 2024-09-16} % \maketitle % \begin{documentation} % \section{Public Commands} @@ -135,7 +136,7 @@ % % \section{Public keys} % \subsection{Keys for the structure commands} -% \begin{function}{tag (struct-key)} +% \begin{structkeydecl}{tag} % This is required. The value of the key is normally one of the % standard types listed in the main tagpdf documentation. % It is possible to setup new tags/types. @@ -144,15 +145,15 @@ % Currently the names spaces |pdf|, |pdf2|, |mathml| and |user| are defined. % This allows to use a different name space than % the one connected by default to the tag. But normally this should not be needed. -% \end{function} -% \begin{function}{stash (struct-key)} +% \end{structkeydecl} +% \begin{structkeydecl}{stash} % Normally a new structure inserts itself as a kid % into the currently active structure. This key prohibits this. % The structure is nevertheless from now on % \enquote{the current active structure} % and parent for following marked content and structures. -% \end{function} -% \begin{function}{label (struct-key)} +% \end{structkeydecl} +% \begin{structkeydecl}{label} % This key sets a label by which % one can refer to the structure. It is e.g. % used by \cs{tag_struct_use:n} (where a real label is actually not @@ -161,55 +162,63 @@ % Internally the label name will start with \texttt{tagpdfstruct-} and it stores % the two attributes |tagstruct| (the structure number) and |tagstructobj| (the % object reference). -% \end{function} -% \begin{function}{parent (struct-key)} +% \end{structkeydecl} +% \begin{structkeydecl}{parent} % By default a structure is added as kid to the currently active structure. % With the parent key one can choose another parent. The value is a structure number which % must refer to an already existing, previously created structure. Such a structure % number can for example be have been stored with \cs{tag_get:n}, but one can also use % a label on the parent structure and then use % \cs{property_ref:nn}|{tagpdfstruct-label}{tagstruct}| to retrieve it. -% \end{function} -% \begin{function}{title (struct-key),title-o (struct-key)} +% \end{structkeydecl} +% \begin{structkeydecl}{firstkey} +% If this key is used the structure is added at the left of the kids of +% the parent structure (if the structure is not stashed). +% This means that it will be the first kid of the structure +% (unless some later structure uses the key too). +% \end{structkeydecl} +% \begin{structkeydecl}{title,title-o} % This keys allows to set the dictionary entry % \texttt{/Title} in the structure object. % The value is handled as verbatim string and hex encoded. % Commands are not expanded. |title-o| will expand the value once. -% \end{function} +% \end{structkeydecl} % -% \begin{function}{alt (struct-key)} +% \begin{structkeydecl}{alt} % This key inserts an \texttt{/Alt} value in the dictionary of structure object. % The value is handled as verbatim string and hex encoded. % The value will be expanded first once. If it is empty, nothing will happen. -% \end{function} -% \begin{function}{actualtext (struct-key)} +% \end{structkeydecl} +% \begin{structkeydecl}{actualtext} % This key inserts an \texttt{/ActualText} value in the dictionary of structure object. % The value is handled as verbatim string and hex encoded. % The value will be expanded first once. If it is empty, nothing will happen. -% \end{function} -% \begin{function}{lang (struct-key)} +% \end{structkeydecl} +% \begin{structkeydecl}{lang} % This key allows to set the language for a structure element. The value should be a bcp-identifier, % e.g. |de-De|. -% \end{function} -% \begin{function}{ref (struct-key)} +% \end{structkeydecl} +% \begin{structkeydecl}{ref} % This key allows to add references to other structure elements, % it adds the |/Ref| array to the structure. % The value should be a comma separated list of structure labels % set with the |label| key. e.g. |ref={label1,label2}|. -% \end{function} -% \begin{function}{E (struct-key)} +% \end{structkeydecl} +% \begin{structkeydecl}{E} % This key sets the |/E| key, the expanded form of an % abbreviation or an acronym % (I couldn't think of a better name, so I sticked to E). -% \end{function} -% \begin{function}{AF (struct-key),AFref (struct-key), -% AFinline (struct-key),AFinline-o (struct-key),texsource,mathml} +% \end{structkeydecl} +% \begin{structkeydecl}{AF,AFref, +% AFinline,AFinline-o,texsource,mathml} +% These keys handle associated files in the structure element. +% % \begin{syntax} % AF = \meta{object name}\\ % AFref = \meta{object reference}\\ % AF-inline = \meta{text content}\\ % \end{syntax} -% These keys allows to reference an associated file in the structure element. +% % The value \meta{object name} should be the name of an object pointing % to the \texttt{/Filespec} dictionary as expected by % |\pdf_object_ref:n| from a current \texttt{l3kernel}. @@ -221,15 +230,16 @@ % Future versions will perhaps extend this to more mime types, but it is % still a research task to find out what is really needed. % -% |texsource| is a special variant of |AF-inline-o| which embeds the file -% as |.tex| source with the |/AFrelationship| key set to |/Source|. It also sets the |/Desc| key -% to a (currently) fix text. +% |texsource| is a special variant of |AF-inline-o| which embeds the content +% as |.tex| source with the |/AFrelationship| key set to |/Source|. +% It also sets the |/Desc| key to a (currently) fix text. % -% |mathml| is a special variant of |AF-inline-o| which embeds the file +% |mathml| is a special variant of |AF-inline-o| which embeds the content % as |.xml| file with the |/AFrelationship| key set to |/Supplement|. % It also sets the |/Desc| key to a (currently) fix text. % -% The argument of |AF| is an object name referring an embedded file as declared for example with +% The argument of |AF| is an object name referring an embedded file as declared +% for example with % \cs{pdf_object_new:n} or with the l3pdffile module. |AF| expands its argument % (this allows e.g. to use some variable for automatic numbering) % and can be used more than once, to associate more than one file. @@ -243,9 +253,9 @@ % does not check if the reference is valid!} % % The inline keys can be used only once per structure. Additional calls are ignored. -% \end{function} +% \end{structkeydecl} % -% \begin{function}{attribute (struct-key)} +% \begin{structkeydecl}{attribute} % This key takes as argument a comma list of attribute names % (use braces to protect the commas from the external key-val parser) % and allows to add one or more attribute dictionary entries in @@ -255,16 +265,17 @@ % \end{verbatim} % Attribute names and their content must be declared first in \cs{tagpdfsetup}. % -% \end{function} +% \end{structkeydecl} % -% \begin{function}{attribute-class (struct-key)} +% \begin{structkeydecl}{attribute-class} % This key takes as argument a comma list of attribute class names % (use braces to protect the commas from the external key-val parser) % and allows to add one or more attribute classes to the structure object. % % Attribute class names and their content % must be declared first in \cs{tagpdfsetup}. -% \end{function} +% \end{structkeydecl} +% % \subsection{Setup keys} % \begin{function}{role/new-attribute (setup-key), newattribute (deprecated)} % \begin{syntax} @@ -284,20 +295,20 @@ % \end{verbatim} % % \end{function} -% \begin{function}{root-AF (setup-key)} +% \begin{setupkeydecl}{root-AF} % \begin{syntax} % root-AF = \meta{object name} % \end{syntax} % This key can be used in the setup command \cs{tagpdfsetup} and allows % to add associated files to the root structure. Like |AF| it can be used more than % once to add more than one file. -% \end{function} +% \end{setupkeydecl} % \end{documentation} % \begin{implementation} % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-struct-code} {2024-09-11} {0.99e} +\ProvidesExplPackage {tagpdf-struct-code} {2024-09-16} {0.99f} {part of tagpdf - code related to storing structure} %</header> % \end{macrocode} @@ -471,6 +482,15 @@ % \end{macrocode} % \end{variable} % +% \begin{variable}{\l_@@_struct_addkid_tl} +% This decides if a structure kid is added at the left or right of the parent. +% The default is \texttt{right}. +% \begin{macrocode} +\tl_new:N \l_@@_struct_addkid_tl +\tl_set:Nn \l_@@_struct_addkid_tl {right} +% \end{macrocode} +% \end{variable} + % \subsection{Variables used by tagging code of basic elements} % % \begin{variable}{\g_@@_struct_dest_num_prop} @@ -720,8 +740,9 @@ % \end{macrocode} % \begin{macrocode} %<*package|debug> -%<package>\cs_new_protected:Npn \@@_struct_kid_mc_gput_right:nn #1 #2 %#1 structure num, #2 MCID absnum% -%<debug>\cs_set_protected:Npn \@@_struct_kid_mc_gput_right:nn #1 #2 %#1 structure num, #2 MCID absnum% +%<package>\cs_new_protected:Npn \@@_struct_kid_mc_gput_right:nn #1 #2 +%<debug>\cs_set_protected:Npn \@@_struct_kid_mc_gput_right:nn #1 #2 +%#1 structure num, #2 MCID absnum% { \@@_seq_gput_right:ce { g_@@_struct_kids_#1_seq } @@ -749,8 +770,9 @@ % This commands adds a structure as kid. We only need to record the object % reference in the sequence. % \begin{macrocode} -%<package>\cs_new_protected:Npn\@@_struct_kid_struct_gput_right:nn #1 #2 %#1 num of parent struct, #2 kid struct -%<debug>\cs_set_protected:Npn\@@_struct_kid_struct_gput_right:nn #1 #2 %#1 num of parent struct, #2 kid struct +%<package>\cs_new_protected:Npn\@@_struct_kid_struct_gput_right:nn #1 #2 +%<debug>\cs_set_protected:Npn\@@_struct_kid_struct_gput_right:nn #1 #2 +%%#1 num of parent struct, #2 kid struct { \@@_seq_gput_right:ce { g_@@_struct_kids_#1_seq } @@ -763,10 +785,35 @@ %<debug> Struct~#2 %<debug> } } - %<package>\cs_generate_variant:Nn \@@_struct_kid_struct_gput_right:nn {ee} % \end{macrocode} % \end{macro} +% \begin{macro} +% { +% \@@_struct_kid_struct_gput_left:nn,\@@_struct_kid_struct_gput_left:ee +% } +% This commands adds a structure as kid one the left, so as first +% kid. We only need to record the object reference in the sequence. +% \begin{macrocode} +%<package>\cs_new_protected:Npn\@@_struct_kid_struct_gput_left:nn #1 #2 +%<debug>\cs_set_protected:Npn\@@_struct_kid_struct_gput_left:nn #1 #2 +%%#1 num of parent struct, #2 kid struct + { + \@@_seq_gput_left:ce + { g_@@_struct_kids_#1_seq } + { + \pdf_object_ref_indexed:nn { @@/struct }{ #2 } + } +%<debug> \seq_gput_left:cn +%<debug> { g_@@_struct_debug_kids_#1_seq } +%<debug> { +%<debug> Struct~#2 +%<debug> } + } +%<package>\cs_generate_variant:Nn \@@_struct_kid_struct_gput_left:nn {ee} +% \end{macrocode} +% \end{macro} +% % \begin{macro} % {\@@_struct_kid_OBJR_gput_right:nnn,\@@_struct_kid_OBJR_gput_right:eee} % At last the command to add an OBJR object. This has to write an object first. @@ -775,10 +822,11 @@ % object reference % % \begin{macrocode} -%<package>\cs_new_protected:Npn\@@_struct_kid_OBJR_gput_right:nnn #1 #2 #3 %#1 num of parent struct, -%<package> %#2 obj reference -%<package> %#3 page object reference +%<package>\cs_new_protected:Npn\@@_struct_kid_OBJR_gput_right:nnn #1 #2 #3 +%<package> +%<package> %<debug>\cs_set_protected:Npn\@@_struct_kid_OBJR_gput_right:nnn #1 #2 #3 +%%#1 num of parent struct,#2 obj reference,#3 page object reference { \pdf_object_unnamed_write:nn { dict } @@ -982,7 +1030,8 @@ % \begin{macrocode} \prop_get:cnNF { g_@@_struct_#1_prop } {P}\l_@@_tmpb_tl { - \prop_gput:cne { g_@@_struct_#1_prop } {P}{\pdf_object_ref_indexed:nn { @@/struct }{1}} + \prop_gput:cne { g_@@_struct_#1_prop } {P} + {\pdf_object_ref_indexed:nn { @@/struct }{1}} \prop_gput:cne { g_@@_struct_#1_prop } {S}{/Artifact} \seq_if_empty:cF {g_@@_struct_kids_#1_seq} { @@ -1034,8 +1083,9 @@ % \tag_struct_end: % \end{verbatim} % \begin{macrocode} -\cs_new_protected:Npn \@@_struct_insert_annot:nn #1 #2 %#1 object reference to the annotation/xform - %#2 structparent number +\cs_new_protected:Npn \@@_struct_insert_annot:nn #1 #2 + %#1 object reference to the annotation/xform + %#2 structparent number { \bool_if:NT \g_@@_active_struct_bool { @@ -1057,7 +1107,8 @@ #1 % } { - \pdf_pageobject_ref:n { \property_ref:nnn {@tag@objr@page@#2 }{ tagabspage }{1} } + \pdf_pageobject_ref:n + { \property_ref:nnn {@tag@objr@page@#2 }{ tagabspage }{1} } } % add the parent obj number to the parent tree: \exp_args:Nne @@ -1066,7 +1117,8 @@ #2 } { - \pdf_object_ref_indexed:nn { @@/struct }{ \l_@@_struct_stack_parent_tmpa_tl } + \pdf_object_ref_indexed:nn + { @@/struct }{ \l_@@_struct_stack_parent_tmpa_tl } } % increase the int: \int_gincr:N \c@g_@@_parenttree_obj_int @@ -1141,7 +1193,8 @@ \socket_new:nn { tag/struct/tag }{1} \socket_new_plug:nnn { tag/struct/tag }{ latex-tags } { - \seq_set_split:Nne \l_@@_tmpa_seq { / } {#1/\prop_item:Ne\g__tag_role_tags_NS_prop{#1}} + \seq_set_split:Nne \l_@@_tmpa_seq { / } + {#1/\prop_item:Ne\g__tag_role_tags_NS_prop{#1}} \tl_gset:Ne \g_@@_struct_tag_tl { \seq_item:Nn\l_@@_tmpa_seq {1} } \tl_gset:Ne \g_@@_struct_tag_NS_tl{ \seq_item:Nn\l_@@_tmpa_seq {2} } \@@_check_structure_tag:N \g_@@_struct_tag_tl @@ -1149,10 +1202,12 @@ \socket_new_plug:nnn { tag/struct/tag }{ pdf-tags } { - \seq_set_split:Nne \l_@@_tmpa_seq { / } {#1/\prop_item:Ne\g_@@_role_tags_NS_prop{#1}} + \seq_set_split:Nne \l_@@_tmpa_seq { / } + {#1/\prop_item:Ne\g_@@_role_tags_NS_prop{#1}} \tl_gset:Ne \g_@@_struct_tag_tl { \seq_item:Nn\l_@@_tmpa_seq {1} } \tl_gset:Ne \g_@@_struct_tag_NS_tl{ \seq_item:Nn\l_@@_tmpa_seq {2} } - \@@_role_get:VVNN \g_@@_struct_tag_tl\g_@@_struct_tag_NS_tl\l_@@_tmpa_tl\l_@@_tmpb_tl + \@@_role_get:VVNN + \g_@@_struct_tag_tl \g_@@_struct_tag_NS_tl \l_@@_tmpa_tl \l_@@_tmpb_tl \tl_gset:Ne \g_@@_struct_tag_tl {\l_@@_tmpa_tl} \tl_gset:Ne \g_@@_struct_tag_NS_tl{\l_@@_tmpb_tl} \@@_check_structure_tag:N \g_@@_struct_tag_tl @@ -1160,19 +1215,20 @@ \socket_assign_plug:nn { tag/struct/tag } {latex-tags} % \end{macrocode} -% \begin{macro} +% \begin{structkeydecl} % { -% label (struct-key), -% stash (struct-key), -% parent (struct-key), -% tag (struct-key), -% title (struct-key), -% title-o (struct-key), -% alt (struct-key), -% actualtext (struct-key), -% lang (struct-key), -% ref (struct-key), -% E (struct-key) +% label, +% stash, +% parent, +% firstkid, +% tag, +% title, +% title-o, +% alt, +% actualtext, +% lang, +% ref, +% E % } % \begin{macrocode} \keys_define:nn { @@ / struct } @@ -1202,7 +1258,8 @@ { parent~key~ignored } } }, - parent .default:n = {-1}, + parent .default:n = {-1}, + firstkid .code:n = { \tl_set:Nn \l_@@_struct_addkid_tl {left} }, tag .code:n = % S property { \socket_use:nn { tag/struct/tag }{#1} @@ -1271,6 +1328,7 @@ }, } % \end{macrocode} +% \end{structkeydecl} % Ref is rather special as it values are often % known only at the end of the document. % It therefore stores it values as @@ -1328,7 +1386,7 @@ % \end{macrocode} % \end{macro} -% +% \begin{structkeydecl}{ref,E,} % \begin{macrocode} \keys_define:nn { @@ / struct } { @@ -1354,9 +1412,9 @@ }, } % \end{macrocode} -% \end{macro} -% \begin{macro}{AF (struct-key), AFref (struct-key), -% AFinline (struct-key),AFinline-o (struct-key)} +% \end{structkeydecl} +% +% \begin{structkeydecl}{AF, AFref,AFinline,AFinline-o,texsource,mathml} % keys for the AF keys (associated files). They use commands from l3pdffile! % The stream variants use txt as extension to get the mimetype. % TODO: check if this should be configurable. For math we will perhaps need another @@ -1407,7 +1465,8 @@ % \end{macrocode} % % \begin{macrocode} -\cs_new_protected:Npn \@@_struct_add_AF:nn #1 #2 % #1 struct num #2 object reference +\cs_new_protected:Npn \@@_struct_add_AF:nn #1 #2 +% #1 struct num #2 object reference { \tl_if_exist:cTF { @@ -1433,7 +1492,8 @@ { \pdf_object_if_exist:eTF {#1} { - \@@_struct_add_AF:ee { \int_use:N \c@g_@@_struct_abs_int }{\pdf_object_ref:e {#1}} + \@@_struct_add_AF:ee + { \int_use:N \c@g_@@_struct_abs_int }{\pdf_object_ref:e {#1}} \@@_struct_prop_gput:nne { \int_use:N \c@g_@@_struct_abs_int } { AF } @@ -1490,8 +1550,8 @@ } } % \end{macrocode} -% \end{macro} -% \begin{macro}{root-AF (setup-key)} +% \end{structkeydecl} +% \begin{setupkeydecl}{root-AF} % The root structure can take AF keys too, so we provide a key for it. % This key is used with |\tagpdfsetup|, not in a structure! % \begin{macrocode} @@ -1518,7 +1578,7 @@ }, } % \end{macrocode} -% \end{macro} +% \end{setupkeydecl} % \section{User commands} % We allow to set a language by default % \begin{macro}{\l_@@_struct_lang_tl} @@ -1699,7 +1759,7 @@ %record this structure as kid: %\tl_show:N \g_@@_struct_stack_current_tl %\tl_show:N \l_@@_struct_stack_parent_tmpa_tl - \@@_struct_kid_struct_gput_right:ee + \use:c { @@_struct_kid_struct_gput_ \l_@@_struct_addkid_tl :ee } { \l_@@_struct_stack_parent_tmpa_tl } { \g_@@_struct_stack_current_tl } %\prop_show:c { g_@@_struct_\g_@@_struct_stack_current_tl _prop } @@ -2057,7 +2117,7 @@ % \section{Attributes and attribute classes} % \begin{macrocode} %<*header> -\ProvidesExplPackage {tagpdf-attr-code} {2024-09-11} {0.99e} +\ProvidesExplPackage {tagpdf-attr-code} {2024-09-16} {0.99f} {part of tagpdf - code related to attributes and attribute classes} %</header> % \end{macrocode} @@ -2132,7 +2192,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{attribute-class (struct-key)} +% \begin{structkeydecl}{attribute-class} % attribute-class has to store the used attribute names so that % they can be added to the ClassMap later. % \begin{macrocode} @@ -2174,8 +2234,8 @@ } } % \end{macrocode} -% \end{macro} -% \begin{macro}{attribute (struct-key)} +% \end{structkeydecl} +% \begin{structkeydecl}{attribute} % \begin{macrocode} \keys_define:nn { @@ / struct } { @@ -2232,5 +2292,5 @@ } %</package> % \end{macrocode} -% \end{macro} +% \end{structkeydecl} % \end{implementation} diff --git a/macros/latex/contrib/tagpdf/tagpdf-tree.dtx b/macros/latex/contrib/tagpdf/tagpdf-tree.dtx index c6c52b196e..879a62c41f 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-tree.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-tree.dtx @@ -47,13 +47,13 @@ % }^^A % } % -% \date{Version 0.99e, released 2024-09-11} +% \date{Version 0.99f, released 2024-09-16} % \maketitle % \begin{implementation} % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-tree-code} {2024-09-11} {0.99e} +\ProvidesExplPackage {tagpdf-tree-code} {2024-09-16} {0.99f} {part of tagpdf - code related to writing trees and dictionaries to the pdf} %</header> % \end{macrocode} diff --git a/macros/latex/contrib/tagpdf/tagpdf-user.dtx b/macros/latex/contrib/tagpdf/tagpdf-user.dtx index d67210fc73..8dfa6893c0 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-user.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-user.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.99e, released 2024-09-11} +% \date{Version 0.99f, released 2024-09-16} % \maketitle % \begin{documentation} % \section{Setup commands} @@ -309,7 +309,7 @@ % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-user} {2024-09-11} {0.99e} +\ProvidesExplPackage {tagpdf-user} {2024-09-16} {0.99f} {tagpdf - user commands} %</header> % \end{macrocode} @@ -866,9 +866,9 @@ {\tagmcbegin{tag=Lbl}} {#1} } - \tag_stop:n{hangfrom} + \tag_suspend:n{hangfrom} \hangindent \wd\@tempboxa\noindent - \tag_start:n{hangfrom} + \tag_resume:n{hangfrom} \tagmcbegin{}\box\@tempboxa\tagmcend\tagstructend\tagmcbegin{} } } @@ -1166,7 +1166,7 @@ % \tagpdfparaOff % } % This two command switch para mode on and off. |\tagpdfsetup| could be used -% too but is longer. An alternative is |\tag_tool:n{para=false}| +% too but is longer. An alternative is |\tag_tool:n{para/tagging=false}| % \begin{macrocode} %<base>\newcommand\tagpdfparaOn {} %<base>\newcommand\tagpdfparaOff{} @@ -1246,11 +1246,11 @@ \bool_gset_false:N \g_@@_in_mc_bool } \tag_mc_begin:n {artifact} - \tag_stop:n{headfoot} + \tag_suspend:n{headfoot} } \cs_new_protected:Npn \@@_exclude_headfoot_end: { - \tag_start:n{headfoot} + \tag_resume:n{headfoot} \tag_mc_end: \bool_if:NTF \g_@@_mode_lua_bool { @@ -1277,12 +1277,12 @@ } \tag_struct_begin:n{tag=Artifact,attribute-class=@@/attr/#1} \tag_mc_begin:n {artifact=#1} - \tag_stop:n{headfoot} + \tag_suspend:n{headfoot} } \cs_new_protected:Npn \@@_exclude_struct_headfoot_end: { - \tag_start:n{headfoot} + \tag_resume:n{headfoot} \tag_mc_end: \tag_struct_end: \bool_if:NTF \g_@@_mode_lua_bool diff --git a/macros/latex/contrib/tagpdf/tagpdf.dtx b/macros/latex/contrib/tagpdf/tagpdf.dtx index 11c002c973..d40c60bc67 100644 --- a/macros/latex/contrib/tagpdf/tagpdf.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf.dtx @@ -21,68 +21,107 @@ % https://github.com/latex3/tagpdf % % for those people who are interested. -% +%<*driver> +\DocumentMetadata{} +\documentclass{l3doc} +\usepackage{array,booktabs,caption} +\hypersetup{pdfauthor=Ulrike Fischer, + pdftitle=tagpdf (main module)} +\input{tagpdf-docelements} +\begin{document} + \DocInput{\jobname.dtx} +\end{document} +%</driver> % \fi +% \title{^^A +% The \pkg{tagpdf} main module +% \\ Part of the tagpdf package +% } +% +% \author{^^A +% Ulrike Fischer\thanks +% {^^A +% E-mail: +% \href{mailto:fischer@troubleshooting-tex.de} +% {fischer@troubleshooting-tex.de}^^A +% }^^A +% } +% +% \date{Version 0.99f, released 2024-09-16} +% \maketitle% +% % \begin{documentation} -% \begin{function}{ -% \tag_stop:, \tag_start:, -% \tagstop, \tagstart } +% \begin{function}{\tag_suspend:n, \tag_resume:n,\tag_stop:n, \tag_start:n }% +% \begin{syntax} +% \cs{tag_suspend:n}\Arg{label}\\ +% \cs{tag_resume:n}\Arg{label}\\ +% \cs{tag_stop:n}\Arg{label} (\emph{deprecated})\\ +% \cs{tag_start:n}\Arg{label} (\emph{deprecated}) +% \end{syntax} % We need commands to stop tagging in some places. % They switches three local booleans and also stop the counting -% of paragraphs. If they are nested an inner \cs{tag_start:} will not -% restart tagging. +% of paragraphs. If they are nested an inner \cs{tag_resume:n} will not +% restart tagging. +% \meta{label} is only used in debugging messages to allow to follow the nesting +% and to identify which code is disabling the tagging. +% The label is not expanded so can be a single token, e.g. |\caption|. +% |\tag_suspend:n| and |\tag_resume:n| are the l3-layer variants of +% |\SuspendTagging| and |\ResumeTagging| and will be provided by the kernel +% in the next release. % \end{function} -% -% \begin{function}{\tag_stop:n, \tag_start:n }% -% \begin{syntax} -% \cs{tag_stop:n}\Arg{label} -% \cs{tag_start:n}\Arg{label}\\ -% \end{syntax} -% The commands with argument allow to give a label. This is only used -% in debugging messages to allow to follow the nesting. +% +% \begin{function}{ +% \tag_stop:, \tag_start:, +% \tagstop, \tagstart } +% \emph{deprecated} These are variants of the above commands +% without the debuging level. They are now deprecated and it +% is recommended to use the kernel command +% |\SuspendTagging|, |\ResumeTagging|, |\tag_suspend:n| and |\tag_resume:n| +% instead. % \end{function} % -% \begin{function}{activate/spaces (setup-key)} +% +% \begin{setupkeydecl}{activate/spaces} % |activate/spaces| activates the additional parsing needed for % interword spaces. It replaces the deprecated key |interwordspace|. -% \end{function} +% \end{setupkeydecl} % -% \begin{function}{activate/mc (setup-key), -% activate/tree (setup-key), -% activate/struct (setup-key), -% activate/all (setup-key), +% \begin{setupkeydecl}{activate/mc, +% activate/tree, +% activate/struct, +% activate/all, % activate-mc (deprecated), % activate-tree (deprecated), % activate-struct (deprecated), % activate-all (deprecated), % } % Keys to activate the various tagging steps. -% \end{function} -%\begin{function}{activate/struct-dest (setup-key),no-struct-dest (deprecated)} +% \end{setupkeydecl} +%\begin{setupkeydecl}{activate/struct-dest,no-struct-dest (deprecated)} % The key allows to suppress the creation of structure destinations -% \end{function} +% \end{setupkeydecl} % -% \begin{function}{debug/log (setup-key)} +% \begin{setupkeydecl}{debug/log} % The |debug/log| key takes currently the values |none|, |v|, |vv|, |vvv|, |all|. % More details are in \texttt{tagpdf-checks}. -% \end{function} +% \end{setupkeydecl} % -% \begin{function}{activate/tagunmarked (setup-key), tagunmarked (deprecated) } +% \begin{setupkeydecl}{activate/tagunmarked, tagunmarked (deprecated) } % This key allows to set if (in luamode) unmarked text should be % marked up as artifact. The initial value is true. -% \end{function} +% \end{setupkeydecl} % -% \begin{function}{activate/softhyphen (setup-key)} +% \begin{setupkeydecl}{activate/softhyphen} % This key allows to activates automatic handling of hyphens inserted % by hyphenation. It only is used in luamode and replaces hyphens % by U+00AD if the font supports this. -% \end{function} +% \end{setupkeydecl} % -% \begin{function}{page/tabsorder (setup-key), tabsorder (deprecated)} +% \begin{setupkeydecl}{page/tabsorder, tabsorder (deprecated)} % This sets the tabsorder on a page. The values are |row|, |column|, |structure| (default) % or |none|. Currently this is set more or less globally. More finer control can be % added if needed. -% \end{function} +% \end{setupkeydecl} % % \begin{function}{tagstruct,tagstructobj,tagabspage,tagmcabs,tagmcid} % These are attributes used by the label/ref system. @@ -93,7 +132,7 @@ % \begin{macrocode} %<@@=tag> %<*package> -\ProvidesExplPackage {tagpdf} {2024-09-11} {0.99e} +\ProvidesExplPackage {tagpdf} {2024-09-16} {0.99f} { LaTeX kernel code for PDF tagging } \bool_if:nF @@ -119,7 +158,7 @@ % \end{macrocode} %<*debug> % \begin{macrocode} -\ProvidesExplPackage {tagpdf-debug} {2024-09-11} {0.99e} +\ProvidesExplPackage {tagpdf-debug} {2024-09-16} {0.99f} { debug code for tagpdf } \@ifpackageloaded{tagpdf}{}{\PackageWarning{tagpdf-debug}{tagpdf~not~loaded,~quitting}\endinput} % \end{macrocode} @@ -142,7 +181,7 @@ % we define a base package with dummy functions % \begin{macrocode} %<*base> -\ProvidesExplPackage {tagpdf-base} {2024-09-11} {0.99e} +\ProvidesExplPackage {tagpdf-base} {2024-09-16} {0.99f} {part of tagpdf - provide base, no-op versions of the user commands } %</base> % \end{macrocode} @@ -467,6 +506,7 @@ \cs_set_eq:NN \@@_seq_new:N \seq_new:N \cs_set_eq:NN \@@_prop_gput:Nnn \prop_gput:Nnn \cs_set_eq:NN \@@_seq_gput_right:Nn \seq_gput_right:Nn +\cs_set_eq:NN \@@_seq_gput_left:Nn \seq_gput_left:Nn \cs_set_eq:NN \@@_seq_item:cn \seq_item:cn \cs_set_eq:NN \@@_prop_item:cn \prop_item:cn \cs_set_eq:NN \@@_seq_show:N \seq_show:N @@ -474,6 +514,7 @@ % cnx temporary needed for latex-lab-graphic code \cs_generate_variant:Nn \@@_prop_gput:Nnn { Nen , Nee, Nne , cnn, cen, cne, cno, cnx} \cs_generate_variant:Nn \@@_seq_gput_right:Nn { Ne , No, cn, ce } +\cs_generate_variant:Nn \@@_seq_gput_left:Nn { ce } \cs_generate_variant:Nn \@@_prop_new:N { c } \cs_generate_variant:Nn \@@_seq_new:N { c } \cs_generate_variant:Nn \@@_seq_show:N { c } @@ -485,6 +526,7 @@ % \section{General tagging commands} % % \begin{macro}{ +% \tag_suspend:n,\tag_resume:n, % \tag_stop:,\tag_start:, % \tag_stop:n,\tag_start:n} % We need commands to stop tagging in some places. @@ -493,7 +535,8 @@ % counter. Tagging only is only restarted at the outer level, % if the current level is 1. % The commands with argument allow to give a label. This is only used -% in debugging messages to allow to follow the nesting. +% in debugging messages to allow to follow the nesting. The label is +% not expand so can e.g. be a single command token. % % \begin{variable}{\l_@@_tag_stop_int} % When stop/start pairs are nested we do not want the inner @@ -510,7 +553,7 @@ % \begin{macrocode} \cs_set_protected:Npn \tag_stop: { -%<debug> \msg_note:nne {tag / debug }{tag-stop}{ \int_use:N \l_@@_tag_stop_int } +%<debug> \msg_note:nne {tag / debug }{tag-suspend}{ \int_use:N \l_@@_tag_stop_int } \int_incr:N \l_@@_tag_stop_int \bool_set_false:N \l_@@_active_struct_bool \bool_set_false:N \l_@@_active_mc_bool @@ -527,15 +570,15 @@ \bool_set_true:N \l_@@_active_socket_bool \@@_start_para_ints: } -%<debug> \msg_note:nne {tag / debug }{tag-start}{ \int_use:N \l_@@_tag_stop_int } +%<debug> \msg_note:nne {tag / debug }{tag-resume}{ \int_use:N \l_@@_tag_stop_int } } \cs_set_eq:NN\tagstop\tag_stop: \cs_set_eq:NN\tagstart\tag_start: % \end{macrocode} % \begin{macrocode} -\cs_set_protected:Npn \tag_stop:n #1 +\cs_set_protected:Npn \tag_suspend:n #1 { -%<debug> \msg_note:nnee {tag / debug }{tag-stop} +%<debug> \msg_note:nnee {tag / debug }{tag-suspend} %<debug> { \int_use:N \l_@@_tag_stop_int }{\exp_not:n{#1}} \int_incr:N \l_@@_tag_stop_int \bool_set_false:N \l_@@_active_struct_bool @@ -543,7 +586,8 @@ \bool_set_false:N \l_@@_active_socket_bool \@@_stop_para_ints: } -\cs_set_protected:Npn \tag_start:n #1 +\cs_set_eq:NN \tag_stop:n \tag_suspend:n +\cs_set_protected:Npn \tag_resume:n #1 { \int_if_zero:nF { \l_@@_tag_stop_int } { \int_decr:N \l_@@_tag_stop_int } \int_if_zero:nT { \l_@@_tag_stop_int } @@ -552,10 +596,11 @@ \bool_set_true:N \l_@@_active_mc_bool \bool_set_true:N \l_@@_active_socket_bool \@@_start_para_ints: - } -%<debug> \msg_note:nnee {tag / debug }{tag-start} + } +%<debug> \msg_note:nnee {tag / debug }{tag-resume} %<debug> { \int_use:N \l_@@_tag_stop_int }{\exp_not:n{#1}} } +\cs_set_eq:NN \tag_start:n \tag_resume:n %</package|debug> %<*base> \cs_new_protected:Npn \tag_stop:{} @@ -564,6 +609,11 @@ \cs_new_protected:Npn \tagstart{} \cs_new_protected:Npn \tag_stop:n #1 {} \cs_new_protected:Npn \tag_start:n #1 {} +% \end{macrocode} +% Until the commands are provided by the kernel we provide them here too +% \begin{macrocode} +\cs_set_eq:NN \tag_suspend:n \tag_stop:n +\cs_set_eq:NN \tag_resume:n \tag_start:n %</base> % \end{macrocode} % \end{macro} @@ -573,13 +623,13 @@ % % TODO: the log-levels must be sorted % -% \begin{macro} +% \begin{setupkeydecl} % { -% activate/mc (setup-key), -% activate/tree (setup-key), -% activate/struct (setup-key), -% activate/all (setup-key), -% activate/struct-dest (setup-key), +% activate/mc, +% activate/tree, +% activate/struct, +% activate/all, +% activate/struct-dest, % } % Keys to (globally) activate tagging. % |activate/spaces| activates the additional parsing needed for @@ -607,14 +657,14 @@ activate-all .default:n = true, no-struct-dest .bool_gset_inverse:N = \g_@@_active_struct_dest_bool, % \end{macrocode} -% \end{macro} -% \begin{macro}{debug/show (setup-key)} +% \end{setupkeydecl} +% \begin{setupkeydecl}{debug/show} % Subkeys/values are defined in various other places. % \begin{macrocode} debug/show .choice:, % \end{macrocode} -% \end{macro} -% \begin{macro}{debug/log (setup-key), debug/uncompress (setup-key), log (deprecated), uncompress (deprecated)} +% \end{setupkeydecl} +% \begin{setupkeydecl}{debug/log, debug/uncompress, log (deprecated), uncompress (deprecated)} % The |log| takes currently the values |none|, |v|, |vv|, |vvv|, |all|. % The description of the log levels is in tagpdf-checks. % \begin{macrocode} @@ -635,8 +685,8 @@ log .meta:n = {debug/log={#1}}, uncompress .code:n = { \pdf_uncompress: }, % \end{macrocode} -% \end{macro} -% \begin{macro}{activate/tagunmarked (setup-key),tagunmarked (deprecated)} +% \end{setupkeydecl} +% \begin{setupkeydecl}{activate/tagunmarked,tagunmarked (deprecated)} % This key allows to set if (in luamode) unmarked text should be % marked up as artifact. The initial value is true. % \begin{macrocode} @@ -647,15 +697,15 @@ % \begin{macrocode} tagunmarked .bool_gset:N = \g_@@_tagunmarked_bool, % \end{macrocode} -% \end{macro} -% \begin{macro}{activate/softhyphen (setup-key)} +% \end{setupkeydecl} +% \begin{setupkeydecl}{activate/softhyphen} % This key activates (in luamode) the handling of soft hyphens. % \begin{macrocode} activate/softhyphen .bool_gset:N = \g_@@_softhyphen_bool, activate/softhyphen .initial:n = true, % \end{macrocode} -% \end{macro} -% \begin{macro}{page/tabsorder (setup-key),tabsorder (deprecated)} +% \end{setupkeydecl} +% \begin{setupkeydecl}{page/tabsorder,tabsorder (deprecated)} % This sets the tabsorder on a page. The values are |row|, |column|, |structure| (default) % or |none|. Currently this is set more or less globally. More finer control can be % added if needed. @@ -676,7 +726,7 @@ tabsorder .meta:n = {page/tabsorder={#1}}, } % \end{macrocode} -% \end{macro} +% \end{setupkeydecl} % \section{loading of engine/more dependent code} % \begin{macrocode} \sys_if_engine_luatex:T diff --git a/macros/latex/contrib/tagpdf/tagpdf.pdf b/macros/latex/contrib/tagpdf/tagpdf.pdf Binary files differindex 9a4ea62707..a6443d59a4 100644 --- a/macros/latex/contrib/tagpdf/tagpdf.pdf +++ b/macros/latex/contrib/tagpdf/tagpdf.pdf diff --git a/macros/latex/contrib/tagpdf/tagpdf.tex b/macros/latex/contrib/tagpdf/tagpdf.tex index bffecaf942..9b0beb8101 100644 --- a/macros/latex/contrib/tagpdf/tagpdf.tex +++ b/macros/latex/contrib/tagpdf/tagpdf.tex @@ -16,8 +16,8 @@ } \DebugBlocksOff \makeatletter -\def\UlrikeFischer@package@version{0.99e} -\def\UlrikeFischer@package@date{2024-09-11} +\def\UlrikeFischer@package@version{0.99f} +\def\UlrikeFischer@package@date{2024-09-16} \makeatother \documentclass[bibliography=totoc,a4paper]{article} @@ -99,7 +99,7 @@ in the \pkg{latex-lab} bundle for the Tagged PDF project (i.e., loaded by that c The package is developed and improved in parallel with the code in the \pkg{latex-lab} bundle (part of the core \LaTeX{} distribution), the \pkg{pdfmanagement-testphase} -package (the \LaTeX{} PDF management bundle) and the L3 programming layer (part of of the \LaTeX{} format). +package (the \LaTeX{} PDF management bundle) and the L3 programming layer (part of the \LaTeX{} format). That means you must ensure that all these components are up-to-date and in sync which each other. @@ -1715,6 +1715,11 @@ The key-val list understands the following keys: \cs{property\_ref:nn}\verb+{tagpdfstruct-label}{tagstruct}+ to retrieve it. + \item[\PrintKeyName{firstkid}] If this key is used the structure is + added at the left of the kids of the parent structure (if the structure is not stashed). This means that it will be the first kid of the structure (unless some + later structure uses the key too). This can be needed e.g. for a caption as + the PDF reference requires it to be the first or last kid of its structure. + \item[\PrintKeyName{alt}] This key inserts an \texttt{/Alt} value in the dictionary of structure object, see section~\ref{sec:alt}. The value is handled as verbatim string and hex encoded. The value will be @@ -2059,36 +2064,49 @@ or the output routine is called. \begin{docCommands} { - {doc name=tag_stop:}, - {doc name=tag_start:}, - {doc name=tagstop}, - {doc name=tagstart}, - {doc name=tag_stop:n,doc parameter=\marg{label}}, - {doc name=tag_start:n,doc parameter=\marg{label}} + {doc name=tag_suspend:n,doc parameter=\marg{label}}, + {doc name=tag_resume:n,doc parameter=\marg{label}} } \end{docCommands} -This commands stop and start tagging in the current group by switching +These commands suspend and resume tagging in the current group by switching \emph{local} booleans. They also stop the increasing of the counters which keep track of paragraphs if the correct wrapper commands are used. Restarting tagging is normally only needed if groups can't be used and then -must be done with care: |\tagstart| should normally only restart tagging if +must be done with care: |\tag_resume:n| should normally only restart tagging if the corresponding stop command actually stopped tagging. This is implement through a local counter which keeps track of the level. -The \meta{label} can be used to identify the command in debugging message. +The \meta{label} can be used to identify the command in debugging message. The label is not expanded and so can for example be a single command token. + +The commands are the L3-layer versions of |\SuspendTagging| and |\ResumeTagging| +and will be available in the kernel with the 2024 november release. \begin{taglstlisting} -\tag_stop:n{outer} +\tag_suspend:n{\outercommand} ... - \tag_stop:n{inner} + \tag_suspend:n{\innercommand} ... - \tag_start:n{inner} + \tag_resume:n{\innercommand} ... -\tag_start:n{outer} +\tag_resume:n{\outercommand} \end{taglstlisting} +\begin{docCommands} + { + {doc name=tag_stop:}, + {doc name=tag_start:}, + {doc name=tagstop}, + {doc name=tagstart}, + {doc name=tag_stop:n,doc parameter=\marg{label}}, + {doc name=tag_start:n,doc parameter=\marg{label}} + } +\end{docCommands} + +These commands are now deprecated in favor or |\tag_suspend:n| and |\tag_resume:n| +but are still provided for some time. + \subsection{Lazy and automatic tagging}\label{sec:lazy} @@ -3050,7 +3068,11 @@ cases building the structure should now need only two or three compilations. The new code requires a current pdfmanagement-testphase and is then used automatically if the new engines are detected. -\subsection{} +\subsection{Changes in version 0.99f} + +Deprecated |\tag_start:|, |\tag_stop:|, |\tag_stop:n| and +|\tag_start:n| in favor of |\tag_suspend:n| and |\tag_resume:n|. + \printbibliography[heading=bibintoc] diff --git a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty index 5619d59571..81ce196e8e 100644 --- a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty +++ b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty @@ -1,5 +1,5 @@ %\RequirePackage[enable-debug]{expl3}[2018/06/14] -\ProvidesExplPackage {tagpdfdocu-patches} {2024-09-11} {0.99e} +\ProvidesExplPackage {tagpdfdocu-patches} {2024-09-16} {0.99f} {patches/commands for the tagpdf documentation} \RequirePackage{etoolbox,xpatch} diff --git a/macros/luatex/generic/nodetree/README.md b/macros/luatex/generic/nodetree/README.md index f9fdb53fff..71297fb7f1 100644 --- a/macros/luatex/generic/nodetree/README.md +++ b/macros/luatex/generic/nodetree/README.md @@ -18,7 +18,7 @@ terminal to generate the document. # License -Copyright (C) 2016-2023 by Josef Friedrich <josef@friedrich.rocks> +Copyright (C) 2016-2024 by Josef Friedrich <josef@friedrich.rocks> ------------------------------------------------------------------------ This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 of this license @@ -150,8 +150,8 @@ if not modules then modules = { } end modules ['nodetree'] = { ### Update the copyright year: ``` -sed -i 's/(C) 2016-2023/(C) 2016-2021/g' nodetree.ins -sed -i 's/(C) 2016-2023/(C) 2016-2021/g' nodetree.dtx +sed -i 's/(C) 2016-2024/(C) 2016-2021/g' nodetree.ins +sed -i 's/(C) 2016-2024/(C) 2016-2021/g' nodetree.dtx ``` ### Command line tasks: diff --git a/macros/luatex/generic/nodetree/nodetree-doc.tex b/macros/luatex/generic/nodetree/nodetree-doc.tex index d9531ad9f2..c992d70246 100644 --- a/macros/luatex/generic/nodetree/nodetree-doc.tex +++ b/macros/luatex/generic/nodetree/nodetree-doc.tex @@ -107,7 +107,7 @@ \href{https://github.com/Josef-Friedrich/nodetree}{github.com/Josef-Friedrich/nodetree}\\% with contributions by Werner Lemberg } -\date{v2.3.0 from 2023/09/10} +\date{v2.4.0 from 2024/09/17} \maketitle diff --git a/macros/luatex/generic/nodetree/nodetree.dtx b/macros/luatex/generic/nodetree/nodetree.dtx index 0b3668a8ce..6c274899d3 100644 --- a/macros/luatex/generic/nodetree/nodetree.dtx +++ b/macros/luatex/generic/nodetree/nodetree.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2016-2023 by Josef Friedrich <josef@friedrich.rocks> +% Copyright (C) 2016-2024 by Josef Friedrich <josef@friedrich.rocks> % ---------------------------------------------------------------------- % This work may be distributed and/or modified under the conditions of % the LaTeX Project Public License, either version 1.3 of this license @@ -28,7 +28,7 @@ %<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] %<package>\ProvidesPackage{nodetree} %<*package> - [2023/09/10 v2.3.0 Visualize node lists in a tree view] + [2024/09/17 v2.4.0 Visualize node lists in a tree view] %</package> % \fi % @@ -218,7 +218,7 @@ % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}[1994/06/01] \ProvidesPackage{nodetree-embed} - [2023/09/10 v2.3.0 Embed node trees into a LaTeX document] + [2024/09/17 v2.4.0 Embed node trees into a LaTeX document] % \end{macrocode} % % \begin{macrocode} diff --git a/macros/luatex/generic/nodetree/nodetree.ins b/macros/luatex/generic/nodetree/nodetree.ins index e1ded5bb1b..fce0ba7c8d 100644 --- a/macros/luatex/generic/nodetree/nodetree.ins +++ b/macros/luatex/generic/nodetree/nodetree.ins @@ -1,4 +1,4 @@ -% Copyright (C) 2016-2023 by Josef Friedrich <josef@friedrich.rocks> +% Copyright (C) 2016-2024 by Josef Friedrich <josef@friedrich.rocks> % ---------------------------------------------------------------------- % This work may be distributed and/or modified under the conditions of % the LaTeX Project Public License, either version 1.3c of this license @@ -21,7 +21,7 @@ This is a generated file. -Copyright (C) 2016-2023 by Josef Friedrich <josef@friedrich.rocks> +Copyright (C) 2016-2024 by Josef Friedrich <josef@friedrich.rocks> ---------------------------------------------------------------------- This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license diff --git a/macros/luatex/generic/nodetree/nodetree.lua b/macros/luatex/generic/nodetree/nodetree.lua index 18a1f204c3..82a3e294d3 100644 --- a/macros/luatex/generic/nodetree/nodetree.lua +++ b/macros/luatex/generic/nodetree/nodetree.lua @@ -30,7 +30,7 @@ --- be either `continue` or `stop`. if not modules then modules = {} end modules ['nodetree'] = { - version = '2.3.0', + version = '2.4.0', comment = 'nodetree', author = 'Josef Friedrich', copyright = 'Josef Friedrich', @@ -649,30 +649,37 @@ end --- Convert a Lua table into a format string. --- ----@param table table # A table to generate an inline view of. +---@param tbl table # A table to generate an inline view of. --- ---@return string -function template.table_inline(table) +function template.table_inline(tbl) local tex_escape = '' if options.channel == 'tex' then tex_escape = '\\' end - if type(table) == 'table' then - table = get_all_table_data(table) + if type(tbl) == 'table' then + tbl = get_all_table_data(tbl) local output = tex_escape .. '{' local kv_list = '' - for key, value in pairs(table) do - if type(key) ~= 'numbers' then - key = '\'' .. - template.colored_string(key, 'cyan', 'dim') .. '\'' - end - kv_list = kv_list .. '[' .. key .. '] = ' .. - template.table_inline(value) .. ', ' + local keys = {} + for key in pairs(tbl) do + keys[#keys + 1] = key + end + table.sort(keys) + for i = 1, #keys do + local key = keys[i] + local value = tbl[key] + if type(key) ~= 'numbers' then + key = '\'' .. + template.colored_string(key, 'cyan', 'dim') .. '\'' + end + kv_list = kv_list .. '[' .. key .. '] = ' .. + template.table_inline(value) .. ', ' end output = output .. kv_list:gsub(', $', '') return output .. tex_escape .. '}' else - return tostring(table) + return tostring(tbl) end end diff --git a/macros/luatex/generic/nodetree/nodetree.pdf b/macros/luatex/generic/nodetree/nodetree.pdf Binary files differindex c15b1e5c17..6c228dbe58 100644 --- a/macros/luatex/generic/nodetree/nodetree.pdf +++ b/macros/luatex/generic/nodetree/nodetree.pdf diff --git a/macros/luatex/latex/plantuml/CHANGELOG.md b/macros/luatex/latex/plantuml/CHANGELOG.md index d52aecffd6..6cc76d6b7c 100644 --- a/macros/luatex/latex/plantuml/CHANGELOG.md +++ b/macros/luatex/latex/plantuml/CHANGELOG.md @@ -5,13 +5,21 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [0.4.0] – 2024-09-17 + +### Fixed + +- Updated command-line parameters for inkscape. [#33](https://github.com/koppor/plantuml/pull/33) +- Updated command-line parameters for plantuml. [#33](https://github.com/koppor/plantuml/pull/33) +- Works if multiple diagrams are present. [#15](https://github.com/koppor/plantuml/issues/15), [#17](https://github.com/koppor/plantuml/issues/17) + ## [0.3.2] – 2023-05-12 ### Changed - Updated file extension for including diagrams to `.tex` to align with changes introduced in PlantUML v1.2023.0. This change is not backwards compatible with - older versions of PlantUML. + older versions of PlantUML. [#29](https://github.com/koppor/plantuml/pull/29) ## [0.3.1] – 2020-05-19 @@ -66,7 +74,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). Initial public release -[unreleased]: https://github.com/koppor/plantuml/compare/0.3.2...HEAD +[0.4.0]: https://github.com/koppor/plantuml/compare/0.3.2...0.4.0 [0.3.2]: https://github.com/koppor/plantuml/compare/0.3.1...0.3.2 [0.3.1]: https://github.com/koppor/plantuml/compare/0.3.0...0.3.1 [0.3.0]: https://github.com/koppor/plantuml/compare/0.2.3...0.3.0 diff --git a/macros/luatex/latex/plantuml/README.md b/macros/luatex/latex/plantuml/README.md index 0a9f37cba9..bbd4adb0e0 100644 --- a/macros/luatex/latex/plantuml/README.md +++ b/macros/luatex/latex/plantuml/README.md @@ -14,7 +14,7 @@ Check [issue #1](https://github.com/koppor/plantuml/issues/1) for the current st 1. Environment variable `PLANTUML_JAR` set to the location of `plantuml.jar`. You get it from <https://sourceforge.net/projects/plantuml/files/plantuml.jar/download>. -2. Enviroment variable `GRAPHVIZ_DOT` set to the location of `dot.exe`. +2. Windows: Environment variable `GRAPHVIZ_DOT` set to the location of `dot.exe`. Example: `C:\Program Files (x86)\Graphviz2.38\bin\dot.exe`. You can install graphviz using `choco install graphviz`. 3. lualatex available with command line parameter `-shell-escape` included. @@ -55,6 +55,29 @@ Check [issue #1](https://github.com/koppor/plantuml/issues/1) for the current st \usepackage{graphics} \usepackage{epstopdf} \epstopdfDeclareGraphicsRule{.svg}{pdf}{.pdf}{ + inkscape #1 --export-filename=\OutputFile +} +\usepackage[output=svg]{plantuml} +\begin{document} +\begin{plantuml} +@startuml +class Car + +Driver - Car : drives > +Car *- Wheel : have 4 > +Car -- Person : < owns +@enduml +\end{plantuml} +\end{document} +``` + +**For older Inkscape use this LaTeX source:** + +```latex +\documentclass{scrartcl} +\usepackage{graphics} +\usepackage{epstopdf} +\epstopdfDeclareGraphicsRule{.svg}{pdf}{.pdf}{ inkscape -z --file=#1 --export-pdf=\OutputFile } \usepackage[output=svg]{plantuml} diff --git a/macros/luatex/latex/plantuml/example-class-relations--svg.tex b/macros/luatex/latex/plantuml/example-class-relations--svg.tex index 5d7d9b8ed8..f26045d0f2 100644 --- a/macros/luatex/latex/plantuml/example-class-relations--svg.tex +++ b/macros/luatex/latex/plantuml/example-class-relations--svg.tex @@ -8,7 +8,7 @@ % We just include the SVG as is. \usepackage{epstopdf} \epstopdfDeclareGraphicsRule{.svg}{pdf}{.pdf}{% - inkscape -z --file=#1 --export-pdf=\OutputFile + inkscape #1 --export-filename=\OutputFile } \usepackage[output=svg]{plantuml} diff --git a/macros/luatex/latex/plantuml/example-component-diagram.tex b/macros/luatex/latex/plantuml/example-component-diagram.tex index 785d2e7a56..5ce270d101 100644 --- a/macros/luatex/latex/plantuml/example-component-diagram.tex +++ b/macros/luatex/latex/plantuml/example-component-diagram.tex @@ -1,13 +1,13 @@ \documentclass{scrartcl} -\usepackage{graphics} +\usepackage{graphics} % Enables inclusion of SVG graphics - 1:1 approach % This is NOT the approach of https://ctan.org/pkg/svg-inkscape % which allows text in SVG to be typeset using LaTeX. % We just include the SVG as is. \usepackage{epstopdf} \epstopdfDeclareGraphicsRule{.svg}{pdf}{.pdf}{% - inkscape -z --file=#1 --export-pdf=\OutputFile + inkscape #1 --export-filename=\OutputFile } \usepackage[output=svg]{plantuml} diff --git a/macros/luatex/latex/plantuml/example-multiple-diagrams-svg.tex b/macros/luatex/latex/plantuml/example-multiple-diagrams-svg.tex new file mode 100644 index 0000000000..359bc6d960 --- /dev/null +++ b/macros/luatex/latex/plantuml/example-multiple-diagrams-svg.tex @@ -0,0 +1,42 @@ +\documentclass{scrartcl} + +\usepackage{graphics} + +\usepackage{epstopdf} +\epstopdfDeclareGraphicsRule{.svg}{pdf}{.pdf}{% + inkscape #1 --export-filename=\OutputFile +} + +\usepackage[output=svg]{plantuml} + +\begin{document} + + \begin{plantuml} + @startuml + () "Interface 2" as I2 + () "Interface 3" as I3 + + [component 1] as c1 + [component 2] as c2 + [component 3] as c3 + + c1 -- I2 + c1 -- I3 + + I2 )-- c2 + I3 )-- c3 + @enduml + \end{plantuml} + +\newpage + + \begin{plantuml} + @startuml + class Car + + Driver - Car : drives > + Car *- Wheel : have 4 > + Car -- Person : < owns + @enduml + \end{plantuml} +\end{document} diff --git a/macros/luatex/latex/plantuml/plantuml.lua b/macros/luatex/latex/plantuml/plantuml.lua index 7edb923d6b..8bb14c8abb 100644 --- a/macros/luatex/latex/plantuml/plantuml.lua +++ b/macros/luatex/latex/plantuml/plantuml.lua @@ -7,9 +7,6 @@ function convertPlantUmlToTikz(jobname, mode) local plantUmlSourceFilename = jobname .. "-plantuml.txt" local plantUmlTargetFilename = jobname .. "-plantuml." .. mode - -- delete generated file to ensure they are really recreated - os.remove(plantUmlTargetFilename) - if not (lfs.attributes(plantUmlSourceFilename)) then texio.write_nl("Source " .. plantUmlSourceFilename .. " does not exist.") return @@ -25,9 +22,15 @@ function convertPlantUmlToTikz(jobname, mode) local cmd = "java -Djava.awt.headless=true -jar " .. plantUmlJar .. " -charset UTF-8 -t" if (mode == "latex") then cmd = cmd .. "latex:nopreamble" + -- plantuml has changed output format in https://github.com/plantuml/plantuml/pull/1237 + plantUmlTargetFilename = jobname .. "-plantuml.tex" else cmd = cmd .. mode end + + -- delete generated file to ensure they are really recreated + os.remove(plantUmlTargetFilename) + cmd = cmd .. " " .. plantUmlSourceFilename texio.write_nl(cmd) local handle,error = io.popen(cmd) diff --git a/macros/luatex/latex/plantuml/plantuml.pdf b/macros/luatex/latex/plantuml/plantuml.pdf Binary files differindex ecb703caef..114c9026ff 100644 --- a/macros/luatex/latex/plantuml/plantuml.pdf +++ b/macros/luatex/latex/plantuml/plantuml.pdf diff --git a/macros/luatex/latex/plantuml/plantuml.sty b/macros/luatex/latex/plantuml/plantuml.sty index bb978dfa9c..91c15789e4 100644 --- a/macros/luatex/latex/plantuml/plantuml.sty +++ b/macros/luatex/latex/plantuml/plantuml.sty @@ -3,7 +3,7 @@ %% SPDX-License-Identifier: LPPL-1.3c+ \NeedsTeXFormat{LaTeX2e}\relax \ProvidesPackage{plantuml} - [2023/05/12 v0.3.2 + [2024/09/17 v0.4.0 Embed PlantUML diagrams in latex documents.] % Required by PlantUML LaTeX output @@ -24,9 +24,11 @@ \RequirePackage{adjustbox} +\newcounter{PlantUmlFigureNumberSVG} +\def\UMLcountUp{\stepcounter{PlantUmlFigureNumberSVG} \def\PlantUMLJobname{PlantUML\thePlantUmlFigureNumberSVG}} % \jobname has an encoding issue if the .tex filename includes a multibyte string. % One needs to redefine PlantUMLJobname to fix it -\def\PlantUMLJobname{\jobname} +\def\PlantUMLJobname{\jobname\thePlantUmlFigureNumberSVG} \ExplSyntaxOn \keys_define:nn { plantuml } { @@ -93,6 +95,7 @@ \end{adjustbox} }{ \includegraphics[width=\maxwidth{\textwidth}]{\PlantUMLJobname-plantuml.\PlantUmlMode} + \UMLcountUp } } \or @@ -102,4 +105,3 @@ }{} \fi \makeatother - |