diff options
author | Norbert Preining <norbert@preining.info> | 2021-01-10 03:01:42 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2021-01-10 03:01:42 +0000 |
commit | ef57fc77f3c939d55d51322d428e40a5a3c9ed8e (patch) | |
tree | c296d1bf47b8ffa67bb75b1843c2e0786fb0634c /macros/latex/contrib | |
parent | 0b5fb424a9fab0df06b2d7b9f8edc803cb89a760 (diff) |
CTAN sync 202101100301
Diffstat (limited to 'macros/latex/contrib')
117 files changed, 1159 insertions, 518 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-software/Changes b/macros/latex/contrib/biblatex-contrib/biblatex-software/Changes index cd11c76365..3c0375f0f7 100644..120000 --- a/macros/latex/contrib/biblatex-contrib/biblatex-software/Changes +++ b/macros/latex/contrib/biblatex-contrib/biblatex-software/Changes @@ -1,14 +1 @@ -\begin{release}{bltx-v1.2-2}{2020-06-27} \item Fix handling of related field; use date instead of year/month in examples; add swMATH definition \end{release} -\begin{release}{bltx-v1.2-1}{2020-06-01} \item Fix mishandling of SWHIDs and HALids when hyperref is not loaded. Fix wrong origins in some SWHIDs in the examples. Improve ASCL example. \end{release} -\begin{release}{bltx-v1.2}{2020-05-29} \item Bump version to 1.2 with clean support of multiline SWHIDs \end{release} -\begin{release}{bltx-v1.1}{2020-04-29} \item Add support for the institution, organization, eprint, eprinttype and eprintclass fields Force urls output when they are the only reference available Updates to the documentation \end{release} -\begin{release}{bltx-v1.0}{2020-04-25} \item First public release \end{release} -\begin{release}{bltx-v0.9}{2020-04-25} \item Preparing for public release: Licence, Readme, update documentation, handle suggestions from the Working Group \end{release} -\begin{release}{bltx-v0.8}{2020-04-09} \item Make the style usable as an extension, and keep possibility of generating extended styles \end{release} -\begin{release}{bltx-v0.7}{2020-04-09} \item Move to diff model approach to be more portable \end{release} -\begin{release}{bltx-v0.6}{2020-04-08} \item Standardise file names, make softwarebib.tex self contained, separate out sample.tex, update Makefile, use printdate macro \end{release} -\begin{release}{bltx-v0.5}{2020-04-08} \item Added standard list format for licenses \end{release} -\begin{release}{bltx-v0.4}{2020-04-07} \item Added repository and licence field \end{release} -\begin{release}{bltx-v0.3}{2020-04-05} \item Biblatex style with first complete example \end{release} -\begin{release}{bltx-v0.2}{2020-04-02} \item Biblatex style sent for review \end{release} -\begin{release}{bltx-v0.1}{2020-04-02} \item First version of the biblatex style \end{release} +history.tex
\ No newline at end of file diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-software/Makefile b/macros/latex/contrib/biblatex-contrib/biblatex-software/Makefile index e8eef5a8fc..1b75b6374d 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-software/Makefile +++ b/macros/latex/contrib/biblatex-contrib/biblatex-software/Makefile @@ -22,7 +22,13 @@ software-biblatex.pdf: software-biblatex.tex swentries.tex history.tex biblio.bi pdflatex software-biblatex.tex pdflatex software-biblatex.tex -sample-use-sty.pdf: biblio.bib +sample-use-sty.pdf: biblio.bib sample-content.tex + +sample-use-sty.backref.pdf: biblio.bib biblio.bib sample-content.tex + # test that backrefs work + pdflatex "\PassOptionsToPackage{backref=true}{biblatex} \input{sample-use-sty.backref.tex}" + biber sample-use-sty.backref + pdflatex "\PassOptionsToPackage{backref=true}{biblatex} \input{sample-use-sty.backref.tex}" history.tex: git for-each-ref --format="\begin{release}{%(refname:short)}{%(taggerdate:short)} \item %(subject) \end{release}" refs/tags | grep bltx | tac > history.tex diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-software/README.md b/macros/latex/contrib/biblatex-contrib/biblatex-software/README.md index 766e85a125..cfd7f303a0 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-software/README.md +++ b/macros/latex/contrib/biblatex-contrib/biblatex-software/README.md @@ -29,7 +29,7 @@ The simplest way to use this style is to follow the example given in the file `sample-use-sty.tex` that shows how one can *extend* any existing `biblatex` style by simply doing the following: - - pass the `model=software` option to the `biblatex` package + - pass the `datamodel=software` option to the `biblatex` package - load the software biblatex style with `\usepackage{software-biblatex}` - set software specific bibliography options using the macro `\ExecuteBibliographyOptions`; the options with their default values are as in diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-software/english-software.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-software/english-software.lbx index 3d3220e352..d18b35ed59 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-software/english-software.lbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-software/english-software.lbx @@ -3,11 +3,11 @@ \InheritBibliographyStrings{english} \NewBibliographyString{software,edited,swmodule,swpartof,swversion,swexcerpt,swexc,refart,manual} \DeclareBibliographyStrings{% - software = {{\sc [Software]}{\sc [SW]}}, - swmodule = {{\sc [Software Module]}{\sc [SW Mod\adddot]}}, + software = {{\textsc [Software]}{\textsc [SW]}}, + swmodule = {{\textsc [Software Module]}{\textsc [SW Mod\adddot]}}, swpartof = {{part of}}{{part of}}, - swversion = {{\sc [Software Release]}{\sc [SW Rel\adddot]}}, - swexcerpt = {{\sc [Software excerpt]}{\sc [SW exc\adddot]}}, + swversion = {{\textsc [Software Release]}{\textsc [SW Rel\adddot]}}, + swexcerpt = {{\textsc [Software excerpt]}{\textsc [SW exc\adddot]}}, swexc = {{from}}{{from}}, edited = {{Coordinated by}{Coord\adddot by}}, refart = {{Described in}{Descr\adddot in}}, diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-software/history.tex b/macros/latex/contrib/biblatex-contrib/biblatex-software/history.tex index cd11c76365..37f075302e 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-software/history.tex +++ b/macros/latex/contrib/biblatex-contrib/biblatex-software/history.tex @@ -1,3 +1,4 @@ +\begin{release}{bltx-v1.2-3}{2021-01-09} \item Add support for backrefs. \end{release} \begin{release}{bltx-v1.2-2}{2020-06-27} \item Fix handling of related field; use date instead of year/month in examples; add swMATH definition \end{release} \begin{release}{bltx-v1.2-1}{2020-06-01} \item Fix mishandling of SWHIDs and HALids when hyperref is not loaded. Fix wrong origins in some SWHIDs in the examples. Improve ASCL example. \end{release} \begin{release}{bltx-v1.2}{2020-05-29} \item Bump version to 1.2 with clean support of multiline SWHIDs \end{release} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-software/sample-content.tex b/macros/latex/contrib/biblatex-contrib/biblatex-software/sample-content.tex new file mode 100644 index 0000000000..b18f544631 --- /dev/null +++ b/macros/latex/contrib/biblatex-contrib/biblatex-software/sample-content.tex @@ -0,0 +1,64 @@ +% +% Make title an hyperlink to the DOI or URL to make the result leaner (suggested by N. Rougier 4/4/2020) +% + +\newcommand{\doiorurl}{% + \iffieldundef{doi} + {\iffieldundef{url} + {} + {\strfield{url}}} + {http://dx.doi.org/\strfield{doi}}% +} +\newcommand{\myhref}[1]{% + \ifboolexpr{% + test {\ifhyperref} + and + not test {\iftoggle{bbx:url}} + and + not test {\iftoggle{bbx:doi}} + } + {\href{\doiorurl}{#1}} + {#1}% +} +\DeclareFieldFormat{title}{\myhref{\mkbibemph{#1}}} +\DeclareFieldFormat + [article,inbook,incollection,inproceedings,patent,thesis,unpublished] + {title}{\myhref{\mkbibquote{#1\isdot}}} + + +\addbibresource{biblio.bib} +\addbibresource{manual.bib} +\author{Inria Software Citation Working Group} +\date{\today} +\title{Test document for software entries} +\begin{document} + +\maketitle + +This is a test document that showcases the possibilities for rendering the +various software-releated bibliographic entries with the standard BibLaTeX style +extended with the \texttt{software} module. + +\begin{itemize} +\item software entry CGAL \cite{cgal} and Scilab \cite{delebecque:hal-02090402} +\item softwareversion entry CGAL 5.0.2 \cite{cgal:5-0-2} +\item softwareversion Scilab 1.1.1 : from the chain of crossrefs \cite{delebecque:hal-02090402v1}, and from the condensed bibtem \cite{delebecque:hal-02090402-condensed} (they should be identical) +\item softwaremodule entry Voronoi: from the chain of crossrefs \cite{cgal:lp-gi-20a}, and the from the condensed bibtem \cite{cgal:lp-gi-20a-condensed} (they should be identical) +\item software entry Parmap \cite{parmap} +\item codefragment entry simplemapper \cite{simplemapper} +\item software entry from the Astrophysics Source Code Library, using the eprint field \cite{2013ascl.soft05002P} +\item software entry from the swMATH catalog, using the eprint field \cite{sw01091} +\item documentation in a software entry \cite{scilabdoc} +\item software entry \cite{sw-ipol.2020.300} and related article \cite{ipol.2020.300} from the IPOL journal +\end{itemize} + +\ifbacktracker +\printbibheading[title=References \emph{(with backref enabled)}] +\else +\printbibheading[title=References \emph{(default style)}] +\fi +\printbibliography[heading=subbibliography,type=software,title={Software Projects}] +\printbibliography[heading=subbibliography,nottype=software,title={Software versions, modules, excerpts and manuals}] + + + diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-software/sample-use-sty.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-software/sample-use-sty.pdf Binary files differindex e1f9733b8c..f89eedd265 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-software/sample-use-sty.pdf +++ b/macros/latex/contrib/biblatex-contrib/biblatex-software/sample-use-sty.pdf diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-software/sample-use-sty.tex b/macros/latex/contrib/biblatex-contrib/biblatex-software/sample-use-sty.tex index 616351538c..725c31e8ab 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-software/sample-use-sty.tex +++ b/macros/latex/contrib/biblatex-contrib/biblatex-software/sample-use-sty.tex @@ -29,61 +29,7 @@ swlabels=true, vcs=true, license=false} -% -% Make title an hyperlink to the DOI or URL to make the result leaner (suggested by N. Rougier 4/4/2020) -% - -\newcommand{\doiorurl}{% - \iffieldundef{doi} - {\iffieldundef{url} - {} - {\strfield{url}}} - {http://dx.doi.org/\strfield{doi}}% -} -\newcommand{\myhref}[1]{% - \ifboolexpr{% - test {\ifhyperref} - and - not test {\iftoggle{bbx:url}} - and - not test {\iftoggle{bbx:doi}} - } - {\href{\doiorurl}{#1}} - {#1}% -} -\DeclareFieldFormat{title}{\myhref{\mkbibemph{#1}}} -\DeclareFieldFormat - [article,inbook,incollection,inproceedings,patent,thesis,unpublished] - {title}{\myhref{\mkbibquote{#1\isdot}}} - - -\addbibresource{biblio.bib} -\addbibresource{manual.bib} -\author{Inria Software Citation Working Group} -\date{\today} -\title{Test document for software entries} -\begin{document} - -\maketitle - -This is how the proposed entries are rendered with the standard BibLaTeX style -extended with the \texttt{software} module. - -\begin{itemize} -\item software entry CGAL \cite{cgal} and Scilab \cite{delebecque:hal-02090402} -\item softwareversion entry CGAL 5.0.2 \cite{cgal:5-0-2} -\item softwareversion Scilab 1.1.1 : from the chain of crossrefs \cite{delebecque:hal-02090402v1}, and from the condensed bibtem \cite{delebecque:hal-02090402-condensed} (they should be identical) -\item softwaremodule entry Voronoi: from the chain of crossrefs \cite{cgal:lp-gi-20a}, and the from the condensed bibtem \cite{cgal:lp-gi-20a-condensed} (they should be identical) -\item software entry Parmap \cite{parmap} -\item codefragment entry simplemapper \cite{simplemapper} -\item software entry from the Astrophysics Source Code Library, using the eprint field \cite{2013ascl.soft05002P} -\item software entry from the swMATH catalog, using the eprint field \cite{sw01091} -\item documentation in a software entry \cite{scilabdoc} -\item software entry \cite{sw-ipol.2020.300} and related article \cite{ipol.2020.300} from the IPOL journal -\end{itemize} -\printbibheading -\printbibliography[heading=subbibliography,type=software,title={Software Projects}] -\printbibliography[heading=subbibliography,nottype=software,title={Software versions, modules, excerpts and manuals}] +\input{sample-content} \end{document} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-software/sample.tex b/macros/latex/contrib/biblatex-contrib/biblatex-software/sample.tex index 89fedb0ffb..1113190fdd 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-software/sample.tex +++ b/macros/latex/contrib/biblatex-contrib/biblatex-software/sample.tex @@ -21,61 +21,6 @@ defernumbers=true, maxbibnames=100]{biblatex} -% -% Make title an hyperlink to the DOI or URL to make the result leaner (suggested by N. Rougier 4/4/2020) -% - -\newcommand{\doiorurl}{% - \iffieldundef{doi} - {\iffieldundef{url} - {} - {\strfield{url}}} - {http://dx.doi.org/\strfield{doi}}% -} -\newcommand{\myhref}[1]{% - \ifboolexpr{% - test {\ifhyperref} - and - not test {\iftoggle{bbx:url}} - and - not test {\iftoggle{bbx:doi}} - } - {\href{\doiorurl}{#1}} - {#1}% -} -\DeclareFieldFormat{title}{\myhref{\mkbibemph{#1}}} -\DeclareFieldFormat - [article,inbook,incollection,inproceedings,patent,thesis,unpublished] - {title}{\myhref{\mkbibquote{#1\isdot}}} - - -\addbibresource{biblio.bib} -\addbibresource{manual.bib} -\author{Inria Software Citation Working Group} -\date{\today} -\title{Test document for software entries} -\begin{document} - -\maketitle - -This is how the proposed entries are rendered with the standard BibLaTeX style -extended with the \texttt{software} module. - -\begin{itemize} -\item software entry CGAL \cite{cgal} and Scilab \cite{delebecque:hal-02090402} -\item softwareversion entry CGAL 5.0.2 \cite{cgal:5-0-2} -\item softwareversion Scilab 1.1.1 : from the chain of crossrefs \cite{delebecque:hal-02090402v1}, and from the condensed bibtem \cite{delebecque:hal-02090402-condensed} (they should be identical) -\item softwaremodule entry Voronoi: from the chain of crossrefs \cite{cgal:lp-gi-20a}, and the from the condensed bibtem \cite{cgal:lp-gi-20a-condensed} (they should be identical) -\item software entry Parmap \cite{parmap} -\item codefragment entry simplemapper \cite{simplemapper} -\item software entry from the Astrophysics Source Code Library, using the eprint field \cite{2013ascl.soft05002P} -\item software entry from the swMATH catalog, using the eprint field \cite{sw01091} -\item documentation in a software entry \cite{scilabdoc} -\item software entry \cite{sw-ipol.2020.300} and related article \cite{ipol.2020.300} from the IPOL journal -\end{itemize} - -\printbibheading -\printbibliography[heading=subbibliography,type=software,title={Software Projects}] -\printbibliography[heading=subbibliography,nottype=software,title={Software versions, modules, excerpts and manuals}] +\input{sample-content} \end{document} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-software/software-biblatex.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-software/software-biblatex.pdf Binary files differindex cd71a236ec..67adf9f35e 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-software/software-biblatex.pdf +++ b/macros/latex/contrib/biblatex-contrib/biblatex-software/software-biblatex.pdf diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-software/software-biblatex.tex b/macros/latex/contrib/biblatex-contrib/biblatex-software/software-biblatex.tex index d97d3bfbef..4e0aad191c 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-software/software-biblatex.tex +++ b/macros/latex/contrib/biblatex-contrib/biblatex-software/software-biblatex.tex @@ -14,7 +14,7 @@ url={http://mirror.ctan.org/macros/latex/exptl/biblatex-contrib/biblatex-software/}, author={Roberto Di Cosmo}, email={roberto@dicosmo.org}, - revision={1.2-2}, + revision={1.2-3}, date={\today}} \hypersetup{% diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-software/software.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-software/software.bbx index 7ef6d84771..c33e114347 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-software/software.bbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-software/software.bbx @@ -161,8 +161,7 @@ {\printtext[parens]{% \bibstring{edited}\addspace% \printnames{editor}}}% - \addcomma% - \addspace% + \setunit*{\addcomma\addspace}% \printdate% } @@ -182,8 +181,7 @@ {\printtext[parens]{% \bibstring{edited}\addspace% \printnames{editor}}}% - \addcomma% - \addspace% + \setunit*{\addcomma\addspace}% \printdate% } @@ -284,6 +282,8 @@ \usebibmacro{swids}% \newunit\newblock% \usebibmacro{swrelated}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% \usebibmacro{finentry}} \DeclareBibliographyDriver{softwareversion}{% @@ -301,6 +301,8 @@ \usebibmacro{swids}% \newunit\newblock% \usebibmacro{swrelated}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% \usebibmacro{finentry}} \DeclareBibliographyDriver{softwaremodule}{% @@ -318,6 +320,8 @@ \usebibmacro{swids}% \newunit\newblock% \usebibmacro{swrelated}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% \usebibmacro{finentry}} \DeclareBibliographyDriver{codefragment}{% @@ -335,4 +339,6 @@ \usebibmacro{swids}% \newunit\newblock% \usebibmacro{swrelated}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% \usebibmacro{finentry}} diff --git a/macros/latex/contrib/easybook/README.md b/macros/latex/contrib/easybook/README.md index 6ad00b0e33..9c98211412 100644 --- a/macros/latex/contrib/easybook/README.md +++ b/macros/latex/contrib/easybook/README.md @@ -24,7 +24,7 @@ xelatex -shell-escape easybook-demo ## License -This work may be distributed and/or modified under the conditions of the CC-BY-NC 4.0 License. The latest version of this license is in https://creativecommons.org/licenses/by-nc/4.0/legalcode. +This work may be distributed and/or modified under the conditions of the CC-BY 4.0 License. The latest version of this license is in https://creativecommons.org/licenses/by/4.0/legalcode. ## Website @@ -32,7 +32,7 @@ This work may be distributed and/or modified under the conditions of the CC-BY-N # easybook 书籍文档类 -easybook 是基于 ctexbook 书籍文档类的极简风格模板。它主要适用于中文书籍或笔记的排版,甚至可以稍作修改成为论文模板。已加载一些常用的宏程序包以实现一般的排版要求。尽管已尽可能多地考虑了一些细节,但仍然存在不足。 +easybook 是基于 ctexbook 书籍文档类的极简风格模板。它主要适用于中文书籍或笔记的排版,甚至可以稍作修改成为论文模板。已加载一些常用的宏包以实现一般的排版要求。尽管已尽可能多地考虑了一些细节,但仍然存在不足。 ## 编译方法 @@ -56,7 +56,7 @@ xelatex -shell-escape easybook-demo ## 协议 -可以使用 CC-BY-NC 4.0 许可协议传播和修改此作品。此许可协议的最新版本位于 https://creativecommons.org/licenses/by-nc/4.0/legalcode。 +可以使用 CC-BY 4.0 许可协议传播和修改此作品。此许可协议的最新版本位于 https://creativecommons.org/licenses/by/4.0/legalcode。 ## 网址 diff --git a/macros/latex/contrib/easybook/doc/easybook-demo.pdf b/macros/latex/contrib/easybook/doc/easybook-demo.pdf Binary files differindex a5e66104c1..16869f252c 100644 --- a/macros/latex/contrib/easybook/doc/easybook-demo.pdf +++ b/macros/latex/contrib/easybook/doc/easybook-demo.pdf diff --git a/macros/latex/contrib/easybook/doc/easybook-demo.tex b/macros/latex/contrib/easybook/doc/easybook-demo.tex index 9f9531bd4f..b03695b0bd 100644 --- a/macros/latex/contrib/easybook/doc/easybook-demo.tex +++ b/macros/latex/contrib/easybook/doc/easybook-demo.tex @@ -49,7 +49,7 @@ \textcolor[HTML]{00c2ff}{\faEdge}~\url{https://latexstudio.net} \\ \url{https://ctan.org/pkg/easybook} } - \date{2021/01/08\hskip\ccwd\relax v1.1} + \date{2021/01/09\hskip\ccwd\relax v1.2} } \begin{document} diff --git a/macros/latex/contrib/easybook/doc/easybook.pdf b/macros/latex/contrib/easybook/doc/easybook.pdf Binary files differindex 43a82ee62d..3ec672b518 100644 --- a/macros/latex/contrib/easybook/doc/easybook.pdf +++ b/macros/latex/contrib/easybook/doc/easybook.pdf diff --git a/macros/latex/contrib/easybook/doc/easybook.tex b/macros/latex/contrib/easybook/doc/easybook.tex new file mode 100644 index 0000000000..ab65b0c7c8 --- /dev/null +++ b/macros/latex/contrib/easybook/doc/easybook.tex @@ -0,0 +1,407 @@ +\documentclass{ctxdoc} +\hypersetup + { + colorlinks, + linkcolor=blue, + urlcolor=blue + } + +\title{\sffamily easybook书籍文档类} +\author{瞿毅} +\date{2021/01/09\hskip\ccwd\relax v1.2\thanks{\url{https://gitee.com/TeX-doc/easybook}}} + +\begin{document} +\maketitle +\changes{v1.2}{2021/01/09}{修改和完善用户文档。} +\changes{v1.2}{2021/01/09}{模板更改为使用CC-BY许可协议。} +\begin{abstract} + \cls{easybook} 是基于 \cls{ctexbook} 书籍文档类创建以极简为风格的模板,可以看作对 \cls{ctexbook} 的进一步包装。虽然\CTeX 文档类提供了较好的中文支持,但想实现个性化功能一般需要在其基础上载入更多宏包来定制。\cls{easybook} 考虑了一些细节并载入一些常用宏包实现一般的排版需求,它适用于排版中英文书籍或笔记,甚至可稍加修改成为学位论文模板。 +\end{abstract} +\tableofcontents + +\section{编译文档} +成功地编译演示文档,可能需要满足以下的条件 +\begin{itemize} + \item 使用 \hologo{XeLaTeX}(推荐)或 \hologo{LuaLaTeX} 两种编译方式,参考文献使用 \hologo{BibTeX} 编译。 + \item 默认情况下安装方正与思源字体。 + \item 安装最新的\TeX 发行版并将宏包升级为最新。 +\end{itemize} + +\subsection{编译步骤} +\begin{frameverb} + xelatex -shell-escape easybook-demo + bibtex easybook-demo + makeindex easybook-demo + xelatex -shell-escape easybook-demo + xelatex -shell-escape easybook-demo +\end{frameverb} + +需注意,正确\textbf{编译索引}需要增加 \opt{-shell-escape} 命令行选项。若不需要索引和参考文献,可以在正文中注释掉命令。若出现以下警告,再编译一次即可。 +\begin{frameverb} + LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. +\end{frameverb} + +\subsection{字体设置} +默认中文使用方正系列的{\songti 方正书宋}、{\heiti 方正黑体}、{\kaishu 方正楷体}和{\fangsong 方正仿宋},英文使用思源系列的{\rmfamily Noto Serif}、{\sffamily Noto Sans}和{\ttfamily Noto Sans Mono},数学字体使用 \pkg{notomath}。字体点击此处下载\href{https://wws.lanzous.com/b01ns361i}{下载地址}。 + +如果您\textbf{懒于安装字体},可以见小节 \ref{subsec1} 使用\CTeX 预置中文字库。如果您不喜欢方正、思源字体,\textbf{自定义字体}需启用选项 \opt{font = none},并可在导言区设置中文字体,粗体与斜体不设置会产生警告。 +\begin{ctexexam} + \setCJKmainfont{SimSun}[BoldFont = SimHei,ItalicFont = KaiTi] + \setCJKsansfont{SimHei} + \setCJKmonofont{FangSong} +\end{ctexexam} + +\section{模板选项} +标准 \cls{book} 文类与 \cls{ctexbook} 文类的选项同样适用于本文档。除此之外选项分为两类 +\begin{itemize} + \item 带有 \rexptarget\rexpstar{} 号的选项,需要在引入文档类的时候设定。 + \item 带有 \exptarget\expstar{} 号的选项,需要通过\CTeX 宏集提供的用户接口命令 \tn{ctexset} 设定。 +\end{itemize} +\subsection{文档类选项}\label{subsec1} + +\begin{function}[rEXP,added = 2021-01-05]{draft} +开启草稿模式会加快编译速度,表现有显示页面边框、行溢出的地方显示黑色方块、图片变成占位方框、显示当前日期和关闭超链接渲染。 +\end{function} + +\begin{function}[rEXP,added = 2021-01-05]{newline} +章标题风格为另起一行,英文模式使用较为常见。类似下面的效果 +\begin{flushleft}\sffamily\LARGE + Chapter 1\vskip 1.3pc + This is a title +\end{flushleft} +\end{function} + +\begin{function}[rEXP,added = 2021-01-05]{entitle} +部分标题编号由中文数字变为大写罗马数字,章标题编号由中文数字变为阿拉伯数字。比如\textsf{第一部分}变为\textsf{第I部分},\textsf{第一章}变为\textsf{第1章}。 +\end{function} +\begin{function}[rEXP,added = 2021-01-05]{english} +使各类标题变为英文形式。包括章节标题、图表标题和定理标题等。如\textsf{第一章}变为\textsf{Chapter 1},\textsf{图1.1} 变为 \textsf{Table 1.1}。 +\end{function} +\begin{function}[rEXP,added = 2021-01-05]{enstyle} +同时开启 \opt{newline}、\opt{entitle} 和 \opt{english} 三个选项以符合英文原生风格。 +\end{function} + +\begin{function}[rEXP,added = 2021-01-05]{font} +\begin{syntax} + font = <adobe|founder|mac|windows|linux|overleaf|none> +\end{syntax} +传递给 \cls{ctexbook} 设置字体,最好不要使用原有的 \opt{fontset} 选项,默认情况下使用自定义字体而不开启这个选项,可根据安装的字体及电脑系统选取。\opt{overleaf} 是一个各系统通用选项,会检测系统环境选取对应字体。 +\end{function} + +\begin{function}[rEXP,added = 2021-01-05]{paper} +\begin{syntax} + paper = <(a4)|b5> +\end{syntax} +设置版面规格,有A4和B5两种纸张大小,建议 选项 \opt{a4} 和 \opt{zihao = 5},选项 \opt{b5} 和 \opt{zihao = -4} 配合。 +\end{function} + +\subsection{接口选项} +\begin{function}[added = 2021-01-05]{\ctexset} +\begin{syntax} + \tn{ctexset}\marg{键值列表} +\end{syntax} +\cls{easybook} 扩展了\CTeX 宏集\LaTeX 3风格键值的通用控制命令 \tn{ctexset},接口选项同样用它设置, 原有的键值列表仍然可用。 +\end{function} + +\begin{function}[added = 2021-01-08]{config} +\begin{syntax} + config = <配置文件名> +\end{syntax} +\changes{v1.1}{2021/01/08}{加入载入用户配置选项。} +\opt{config}为载入用户配置选项,配置文件名不需加括号但需带有后缀名如 \opt{tex}、\opt{def} 和 \opt{cfg}。 +\end{function} + +\subsubsection{风格} +\begin{function}[EXP,updated = 2021-01-08]{style/color,style/cite,style/thmbox,style/capdash,style/multoc,style/withpart,style/perchap,style/perpage} +\begin{syntax} + color = <(none)|forest|energy|cyberpunk> + cite = <(number)|authoryear> + thmbox = <true|(false)> + capdash = <true|(false)> + multoc = <true|(false)> + withpart = <true|(false)> + perchap = <true|(false)> + perpage = <true|(false)> +\end{syntax} +\changes{v1.1}{2021/01/08}{更改颜色实现方式与选项名。} +\opt{style} 选项控制文章的风格。 +\end{function} + +\begin{optdesc} + \item[color]主题颜色,包括标题、页眉颜色等,选项 \opt{none} 为黑白页面,但不包括超链接。 + \begin{function}{ctex@frame,ctex@emph,ctex@verb} + \begin{syntax} + \tn{definecolor}\oarg{类型}\marg{名称}\marg{模式列表}\marg{参数列表} + \end{syntax} + \changes{v1.1}{2021/01/08}{可以自定义主题颜色。} + 主题颜色用到这三个颜色,可以使用 \tn{definecolor} 命令进行更改,类似地更改超链接颜色见小节 \ref{ssubsec1}。 + \end{function} + \item[cite]参考文献格式为中国的参考文献推荐标准GB/T 7714-2015,有顺序编码制和著者-出版年制两种风格,理工科类一般使用顺序编码制,文科类一般使用著者-出版年制。 + \item[thmbox]开启定理及习题环境的盒子边框。 + \item[capdash]将图表代码标题风格由例如\textsf{图1.1}变为\textsf{图1--1}的形式。 + \item[multoc]开启双栏目录,可与 \opt{onecolumn} 和 \opt{twocolumn} 选项配合出单栏正文、单栏目录,双栏正文、单栏目录,单栏正文、双栏目录和双栏正文、双栏目录四种方式 。 + \item[withpart]使章跟随每一部分编号,默认不跟随。 + \item[perchap]使脚注跟随每一章编号,默认不跟随。 + \item[perpage]使脚注跟随每一页编号,默认不跟随。 +\end{optdesc} + +\subsubsection{超链接}\label{ssubsec1} +\begin{function}[EXP,updated = 2021-01-08]{link/hyperlink,link/linkcolor,link/linktopage} +\begin{syntax} + hyperlink = <(edge)|various|none> + linkcolor = <(graphite)|cutepink|skyblue|crimson> + linktopage = <true|(false)> +\end{syntax} +\changes{v1.1}{2021/01/08}{修复了 \opt{linktopage} 选项关闭时目录中标题编号无超链接的问题。} +\end{function} + +\begin{optdesc} + \item[hyperlink]\opt{edge} 使超链接为边框形式,\opt{various} 使超链接为彩色字体,有四种颜色风格。\opt{none} 关闭超链接边框与颜色,此时 \opt{linkcolor} 选项无效。 + \item[linkcolor]超链接颜色样式。 + \begin{function}{ctex@link,ctex@url,ctex@cite} + \begin{syntax} + \tn{definecolor}\oarg{类型}\marg{名称}\marg{模式列表}\marg{参数列表} + \end{syntax}超链接颜色用到这三个颜色,可以使用 \tn{definecolor} 命令进行更改。 + \changes{v1.1}{2021/01/08}{可以自定义超链接颜色。} + \end{function} + \item[linktopage]将目录中的超链接置于页码上,默认是置于标题上。 +\end{optdesc} + +\subsubsection{行距} +\begin{function}[EXP,added = 2021-01-05]{spread/linespread,spread/tabspread,spread/mathspread,spread/capspread,spread/fnspread} +\begin{syntax} + linespread = <(1.3)> + tabspread = <(1)> + mathspread = <(1)> + capspread = <(1)> + fnspread = <(1)> +\end{syntax} +行距因子用于设置各种行距倍数,只能是浮点数,不能带有长度单位。\tn{ctexset} 原有的行距选项\opt{linespread}失效。各行距既可在导言区全局设置也可正文中设置对后面生效,行距的意义为 +\end{function} + +\begin{optdesc} + \item[linespread]正文行距。 + \item[tabspread]表格行距。 + \item[mathspread]数学环境行距。 + \item[capspread]图表代码标题行距。 + \item[fnspread]脚注行距。 +\end{optdesc} + +\subsubsection{其它字体} +\begin{function}[EXP,added = 2021-01-08]{elfont/tabfont,elfont/figfont,elfont/lstfont,elfont/fnfont,elfont/marfont} +\begin{syntax} + tabfont = <\tn{sffamily}\tn{small}> + figfont = <\tn{sffamily}\tn{small}> + lstfont = <\tn{sffamily}\tn{small}> + fnfont = <\tn{rmfamily}> + marfont = <\tn{rmfamily}\tn{footnotesize}> +\end{syntax} +\changes{v1.1}{2021/01/08}{加入自定义非正文字体选项。} +\end{function} + +\begin{optdesc} + \item[tabfont]表格标题的字体设置。 + \item[figfont]图片标题的字体设置。 + \item[lstfont]代码标题的字体设置。 + \item[fnfont]脚注的字体设置,请不要使用字号命令。 + \item[marfont]边注的字体设置。 +\end{optdesc} + +\section{常用环境} +\subsection{公式} +\begin{function}[added = 2021-01-05]{equation,multline,gather,align} +\begin{syntax} + \tn{begin}\marg{环境名} + \tn{item} <行间公式> + \tn{end}\marg{环境名} +\end{syntax} +\opt{amsmath} 宏包提供了一系列数学环境,它们可以排布各种对齐或不对齐的公式组。\opt{multline} 环境用于一行无法放下的长公式,\opt{gather} 环境用于每行居中的公式组,\opt{align} 环境用于多列对齐的公式组。 +\end{function} + +\subsection{列表} +\begin{function}[added = 2021-01-05]{enumerate,itemize,description} +\begin{syntax} + \tn{begin}\marg{环境名}\oarg{键值列表} + \tn{item} <列表内容> + \tn{end}\marg{环境名} +\end{syntax} +\pkg{enumitem} 宏包为系统自带的列表环境提供了更灵活的标签以及间距的控制。已设置默认格式,若自定义标签可例如 +\begin{ctexexam} + \begin{enumerate}[label = \arabic*(a),leftmargin = 1cm,resume] + \begin{itemize}[label = \textbullet] + \begin{description}[font = \sffamily\bfseries,style = nextline] +\end{ctexexam} +\end{function} + +\subsubsection{排序列表}\label{ssubsec2} +使用 \opt{enumerate} 环境可创建排序列表,使用 \opt{enumerate*} 环境产生行内部列表,可以使用\textsf{A、a、I、i和1}作为可选项为 \opt{enumerate} 与 \opt{enumerate*} 格式化标签。若生成\textbf{Item I、Item II、Item III}格式可以这样 +\begin{ctexexam} + \begin{enumerate*}[(a)] + \begin{enumerate}[\bfseries{Item} I] +\end{ctexexam} + +\subsubsection{常规列表} +使用 \opt{itemize} 环境可创建不计数列表,列表环境中若换行不缩进,若在列表中分段后则缩进两字符。 \opt{itemize*} 为行内常规列表,也提供一个可选参数。 + +用$\star$取代默认的符号 +\begin{ctexexam} + \begin{itemize*}[$\star$] + \begin{itemize}[$\star$] +\end{ctexexam} + +\subsubsection{主题列表}使用 \opt{description} 环境可创建带有主题词的列表。 +\begin{ctexexam} +\begin{description} + \item[主题一] 内容一 + \item[主题二] 内容二 +\end{description} +\end{ctexexam} + +\subsection{定理} +\begin{function}[updated = 2021-01-08]{theorem,definition,lemma,corollary,proposition,example,remark,proof} +\begin{syntax} + \tn{begin}\marg{环境名} + <定理内容> + \tn{end}\marg{环境名} +\end{syntax} +定理环境除了注和证明跟随章编号并可带有边框,边框和习题标题盒子可使用 \opt{thmbox = false} 开启,证明末尾会自动添加证明结束符。 +\end{function} + +\subsection{习题} +\begin{function}[added = 2021-01-05]{exercise} + \begin{syntax} + \tn{begin}\marg{exercise}\oarg{颜色名}\oarg{编号}\oarg{标题} + \tn{item} <习题内容> + \tn{end}\marg{exercise} +\end{syntax} +习题环境 \opt{exercise} 的标题紧接上一节编号并加入目录与页眉,当使用星号环境时不进行编号。三个可选参数中颜色为自定义或 \pkg{xcolor} 包含的颜色名称(深色),正文编号格式与小节 \ref{ssubsec2} 排序列表相同,标题名默认为摘要,参数只能\textsf{从右往左}省略。 +\begin{ctexexam} + \begin{exercise}[black][1.][习题] + \item 习题内容 + \item 习题内容 + \end{exercise} +\end{ctexexam} +\end{function} + +\subsection{盒子} + +\subsubsection{摘要盒子} +\begin{function}[added = 2021-01-05]{outline} +\begin{syntax} + \tn{begin}\marg{outline}\oarg{标题名称} + \tn{item} <摘要内容> + \tn{end}\marg{outline} +\end{syntax} +摘要盒子可用于章前摘要,它的标题是可选参数,默认标题是摘要。 +\begin{ctexexam} + \begin{outline}[标题名称] + \item 摘要内容 + \item 摘要内容 + \end{outline} +\end{ctexexam} +\end{function} + +\subsubsection{段落盒子} +\begin{function}[added = 2021-01-05]{mybox} +\begin{syntax} + \tn{begin}\marg{mybox}\oarg{段落标题} + <盒子内容> + \tn{end}\marg{mybox} +\end{syntax} +环境 \opt{mybox} 创建一个段落盒子,可以添加可选参数的标题,否则无标题框。带有星号的环境会生成浅灰背景,否则是纯白背景。 +\begin{ctexexam} + \begin{mybox}*[段落标题] + 盒子内容 + \tcblower % 盒子上下部分分界线 + 盒子内容 + \end{mybox} +\end{ctexexam} +\end{function} + +\subsubsection{行内盒子} +\begin{function}[added = 2021-01-05]{\concise,\fuzzy} +\begin{syntax} + \tn{concise}\oarg{颜色名}\oarg{配置}\marg{内容} + \tn{fuzzy}\oarg{颜色名}\oarg{配置}\marg{内容} +\end{syntax} +设置了两个参数选项相同的行内盒子,盒子 \opt{concise} 可以为抄录盒子有三个参数,行内盒子内容是必选参数其他可选。盒子 \opt{fuzzy} 不是抄录盒子,具有模糊边缘类似高亮的效果。 +\end{function} + +\section{其它格式} + +\subsection{代码} +\begin{function}[added = 2021-01-05]{\lstinline,lstlisting} +\begin{syntax} + \tn{lstinline}\oarg{键值列表}\marg{行内代码} + \tn{begin}\marg{lstlisting}\oarg{键值列表} + <行间代码> + \tn{end}\marg{lstlisting} +\end{syntax} +使用 \pkg{listings} 宏包可以对代码格式进行高度定制。 +\end{function} + +\subsection{物理量} +\begin{function}[added = 2021-01-05]{\num,\si,\SI} +\begin{syntax} + \tn{num}\oarg{选项}\marg{数字} + \tn{si}\oarg{选项}\marg{单位} + \tn{SI}\oarg{选项}\marg{数字}\oarg{前缀}\marg{单位} +\end{syntax} +\pkg{siunitx} 宏包的 \tn{num} 命令可以输出科学计数法,而 \tn{SI} 命令可用来输出带有单位的量,\tn{si} 命令支持数学模式,可以代替数学行内公式输入。 +\begin{ctexexam} + \num{-21x.3e5} + \si{mL.min^{-1}} + \SI{5}{\mole} +\end{ctexexam} +\end{function} + +\subsection{化学式} +\begin{function}[added = 2021-01-05]{\ch,\chemfig} +\begin{syntax} + \tn{ch}\oarg{选项}\marg{输入} + \tn{chemfig}\oarg{键值列表}\marg{分子代码} +\end{syntax} +除了以普通公式的方式,化学式还可用 \pkg{chemformula} 实现,无机化学式使用 \tn{ch} 命令书写。有机化学式推荐使用 \pkg{chemfig} 的 \tn{chemfig} 命令完成。 +\end{function} + +\subsection{引用} +\begin{function}[added = 2021-01-05]{\cref} + \begin{syntax} + \tn{cref}\marg{标签} + \end{syntax} +使用 \pkg{cleveref} 宏包的 \tn{cref} 命令进行引用,将会自动检测环境并添加相应的前缀。 +\end{function} + +\subsubsection{索引} +\begin{function}[added = 2021-01-05]{\index} +\begin{syntax} + \tn{index}\marg{标签} +\end{syntax} +使用 \pkg{imakeidx} 生成索引,仅做了简单的设置如将索引设为双栏并加入目录,其他选项可另外配置。 +\end{function} + +\subsubsection{脚注} +\begin{function}[added = 2021-01-05]{\Footnote,\Footnotetext,\Footnotemark} +\begin{syntax} + \tn{Footnote}\marg{标记}\marg{插入文本} + \tn{Footnotetext}\marg{标记}\marg{插入文本} + \tn{Footnotemark}\marg{标记} +\end{syntax} +自定义标记且不影响正常编号的脚注命令。 +\begin{ctexexam} + \Footnote{*}{这是可以自定义标记的脚注。} +\end{ctexexam} +\end{function} + +\subsubsection{边注} +\begin{function}[added = 2021-01-05]{\marginnote} +\begin{syntax} + \tn{marginnote}\oarg{左文本}\marg{右文本}\oarg{垂直偏移} +\end{syntax} +命令 \tn{marginnote} 可以生成简单的边注,如果只给定了\meta{右文本},那么边注在奇偶数页文字相同。如果同时给定了\meta{左文本},则偶数页使用\meta{左文本}的文字。 +\end{function} + +\IndexLayout +\PrintChanges +\PrintIndex +\end{document}
\ No newline at end of file diff --git a/macros/latex/contrib/easybook/doc/pages/preface.tex b/macros/latex/contrib/easybook/doc/pages/preface.tex index de5c7d8a0c..fc862b21f8 100644 --- a/macros/latex/contrib/easybook/doc/pages/preface.tex +++ b/macros/latex/contrib/easybook/doc/pages/preface.tex @@ -4,7 +4,7 @@ \chapter*{前言} -\lstinline{easybook} 使用\LaTeX 3语法将选项扩展入\CTeX 宏集接口命令 \lstinline{\ctexset} 的列表。如果无法编译以及选项说明细节参见~\href{../easybook.pdf}{easybook用户手册}。 +\lstinline{easybook} 使用\LaTeX 3语法将选项扩展入\CTeX 宏集接口命令 \lstinline{\ctexset} 的列表。如果无法编译以及选项说明细节参见~\href{./easybook.pdf}{easybook用户手册}。 \begin{enumerate}[label = \color{DarkBlue}\protect\circled{\arabic*}] \item 修复了 \lstinline{linktopage} 选项关闭时目录中标题编号无超链接的问题。 diff --git a/macros/latex/contrib/easybook/easybook.cls b/macros/latex/contrib/easybook/easybook.cls index 318c80d9e6..f413155cba 100644 --- a/macros/latex/contrib/easybook/easybook.cls +++ b/macros/latex/contrib/easybook/easybook.cls @@ -1,20 +1,15 @@ %% -%% This is file `easybook.cls', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% easybook.dtx (with options: `class') +%% This is file `easybook.cls'. %% %% Copyright (C) 2021 by Qu Yi <texeasybook@foxmail.com> %% %% This work may be distributed and/or modified under the -%% conditions of the CC-BY-NC 4.0 License. +%% conditions of the CC-BY 4.0 License. %% The latest version of this license is in -%% https://creativecommons.org/licenses/by-nc/4.0/legalcode +%% https://creativecommons.org/licenses/by/4.0/legalcode \NeedsTeXFormat{LaTeX2e} \RequirePackage{l3keys2e} -\ProvidesExplClass{easybook}{2021/01/08}{v1.1}{} +\ProvidesExplClass{easybook}{2021/01/09}{v1.2}{} \cs_generate_variant:Nn \keys_define:nn {nx} \cs_generate_variant:Nn \int_to_arabic:n {v} @@ -216,7 +211,7 @@ \RequirePackage[ lang = {chinese-utf8}, type = {CC}, - modifier = {by-nc}, + modifier = {by}, version = {4.0} ]{doclicense} \ctex_at_end_preamble:n @@ -642,7 +637,6 @@ } \captionsetup[subfigure] { - labelfont = {sf,small,color = ctex@frame}, labelformat = parens, belowskip = 2pt,aboveskip = 6pt } diff --git a/macros/latex/contrib/l3backend/CHANGELOG.md b/macros/latex/contrib/l3backend/CHANGELOG.md index 61b75641de..242cacf93a 100644 --- a/macros/latex/contrib/l3backend/CHANGELOG.md +++ b/macros/latex/contrib/l3backend/CHANGELOG.md @@ -6,6 +6,16 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2021-01-09] + +### Added +- Support for referencing last link with `(x)dvipdfmx` (requires an up-to-date + backend) + +### Changed +- Implementation of color wtih (x)dvipdfmx (requires an up-to-date + backend) + ## [2020-09-24] ### Fixed @@ -125,7 +135,8 @@ this project uses date-based 'snapshot' version identifiers. - Include `l3backend` in file names - Moved backend code to internal for each 'parent' module -[Unreleased]: https://github.com/latex3/latex3/compare/2020-09-24...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2021-01-09...HEAD +[2021-01-09]: https://github.com/latex3/latex3/compare/2020-09-24...2021-01-09 [2020-09-24]: https://github.com/latex3/latex3/compare/2020-09-11...2020-09-24 [2020-09-11]: https://github.com/latex3/latex3/compare/2020-09-01...2020-09-11 [2020-09-01]: https://github.com/latex3/latex3/compare/2020-08-07...2020-09-01 diff --git a/macros/latex/contrib/l3backend/README.md b/macros/latex/contrib/l3backend/README.md index 0d40ed996b..21f57acd74 100644 --- a/macros/latex/contrib/l3backend/README.md +++ b/macros/latex/contrib/l3backend/README.md @@ -1,7 +1,7 @@ LaTeX3 Backend Drivers ====================== -Release 2020-09-24 +Release 2021-01-09 This package forms parts of `expl3`, and contains the code used to interface with backends (drivers) across the `expl3` codebase. The functions here are @@ -11,6 +11,6 @@ on an independent schedule. ----- -<p>Copyright (C) 2019,2020 The LaTeX3 Project <br /> +<p>Copyright (C) 2019-2021 The LaTeX3 Project <br /> <a href="http://latex-project.org/">http://latex-project.org/</a> <br /> All rights reserved.</p> diff --git a/macros/latex/contrib/l3backend/l3backend-basics.dtx b/macros/latex/contrib/l3backend/l3backend-basics.dtx index 8b01e543ce..9fad72c75d 100644 --- a/macros/latex/contrib/l3backend/l3backend-basics.dtx +++ b/macros/latex/contrib/l3backend/l3backend-basics.dtx @@ -2,7 +2,7 @@ % %% File: l3backend-basics.dtx % -% Copyright (C) 2019,2020 The LaTeX3 Project +% Copyright (C) 2019-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-09-24} +% \date{Released 2021-01-09} % % \maketitle % @@ -70,27 +70,27 @@ % \begin{macrocode} \ProvidesExplFile %<*dvipdfmx> - {l3backend-dvipdfmx.def}{2020-09-24}{} + {l3backend-dvipdfmx.def}{2021-01-09}{} {L3 backend support: dvipdfmx} %</dvipdfmx> %<*dvips> - {l3backend-dvips.def}{2020-09-24}{} + {l3backend-dvips.def}{2021-01-09}{} {L3 backend support: dvips} %</dvips> %<*dvisvgm> - {l3backend-dvisvgm.def}{2020-09-24}{} + {l3backend-dvisvgm.def}{2021-01-09}{} {L3 backend support: dvisvgm} %</dvisvgm> %<*luatex> - {l3backend-luatex.def}{2020-09-24}{} + {l3backend-luatex.def}{2021-01-09}{} {L3 backend support: PDF output (LuaTeX)} %</luatex> %<*pdftex> - {l3backend-pdftex.def}{2020-09-24}{} + {l3backend-pdftex.def}{2021-01-09}{} {L3 backend support: PDF output (pdfTeX)} %</pdftex> %<*xetex> - {l3backend-xetex.def}{2020-09-24}{} + {l3backend-xetex.def}{2021-01-09}{} {L3 backend support: XeTeX} %</xetex> % \end{macrocode} @@ -348,8 +348,9 @@ % required. % % \begin{macro}{\__kernel_backend_literal_pdf:n, \__kernel_backend_literal_pdf:x} -% Equivalent to \texttt{pdf:content} but favored as the link to -% the \pdfTeX{} primitive approach is clearer. +% Undocumented but equivalent to \pdfTeX{}'s |literal| keyword. It's similar to +% be not the same as the documented |contents| keyword as that adds a |q|/|Q| +% pair. % \begin{macrocode} \cs_new_protected:Npn \__kernel_backend_literal_pdf:n #1 { \__kernel_backend_literal:n { pdf:literal~ #1 } } @@ -379,6 +380,35 @@ % \end{macro} % % \begin{macrocode} +%<@@=sys> +% \end{macrocode} +% +% \begin{macro}{\c__kernel_sys_dvipdfmx_version_int} +% A short excursion into the |sys| module to set up the backend version +% information. +% \begin{macrocode} +\group_begin: + \cs_set:Npn \@@_tmp:w #1 Version ~ #2 ~ #3 \q_stop {#2} + \sys_get_shell:nnNTF { extractbb~--version } + { \char_set_catcode_space:n { `\ } } + \l_@@_internal_tl + { + \int_const:Nn \c__kernel_sys_dvipdfmx_version_int + { + \exp_after:wN \@@_tmp:w \l_@@_internal_tl + \q_stop + } + } + { \int_const:Nn \c__kernel_sys_dvipdfmx_version_int { 0 } } +\group_end: +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%<@@=> +% \end{macrocode} +% +% \begin{macrocode} %</dvipdfmx|xetex> % \end{macrocode} % diff --git a/macros/latex/contrib/l3backend/l3backend-box.dtx b/macros/latex/contrib/l3backend/l3backend-box.dtx index e233c729f3..9fd7b70694 100644 --- a/macros/latex/contrib/l3backend/l3backend-box.dtx +++ b/macros/latex/contrib/l3backend/l3backend-box.dtx @@ -2,7 +2,7 @@ % %% File: l3backend-box.dtx % -% Copyright (C) 2019,2020 The LaTeX3 Project +% Copyright (C) 2019-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-09-24} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3backend/l3backend-code.pdf b/macros/latex/contrib/l3backend/l3backend-code.pdf Binary files differindex 0be885472a..f0a28c396f 100644 --- a/macros/latex/contrib/l3backend/l3backend-code.pdf +++ b/macros/latex/contrib/l3backend/l3backend-code.pdf diff --git a/macros/latex/contrib/l3backend/l3backend-color.dtx b/macros/latex/contrib/l3backend/l3backend-color.dtx index baefde5d3c..f3087b0904 100644 --- a/macros/latex/contrib/l3backend/l3backend-color.dtx +++ b/macros/latex/contrib/l3backend/l3backend-color.dtx @@ -2,7 +2,7 @@ % %% File: l3backend-color.dtx % -% Copyright (C) 2019,2020 The LaTeX3 Project +% Copyright (C) 2019-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-09-24} +% \date{Released 2021-01-09} % % \maketitle % @@ -60,59 +60,16 @@ %<@@=color> % \end{macrocode} % -% Color support is split into parts: general color, separations, and color for +% Color support is split into parts: collecting data from \LaTeXe{}, the color stack, general color, separations, and color for % drawings. We have different approaches in each backend, and have some choices % to make about \texttt{dvipdfmx}/\XeTeX{} in particular. Whilst it is in some ways % convenient to use the same approach in multiple backends, the fact that % \texttt{dvipdfmx}/\XeTeX{} is PDF-based means it (largely) sticks closer to % direct PDF output. % -% \subsection{\texttt{dvipmdfx}/\XeTeX{}} +% \subsection{Collecting information from \LaTeXe{}} % -% \begin{macrocode} -%<*dvipdfmx|xetex> -% \end{macrocode} -% -% These backends have the most possible approaches: it recognises both -% \texttt{dvips}-based color specials and it's own format, plus one can -% include PDF statements directly. The latter are not subject to the stack, -% so are not suitable for general use. Of the two stack methods, the dedicated -% one has been extended to cover color spaces, so it is used in preference to -% the \texttt{dvips} one. -% -% The \LaTeXe{} backend code uses \texttt{dvips}-based code with -% \texttt{dvipmdfx}/\XeTeX{}, and so we leave getting color from \LaTeXe{} to -% a shared code path below. -% -% \begin{macro} -% { -% \@@_backend_select_cmyk:n , -% \@@_backend_select_gray:n , -% \@@_backend_select_rgb:n -% } -% \begin{macro}{\@@_backend_reset:} -% \begin{macro}{color.sc, color.fc} -% Push the data to the stack. -% \begin{macrocode} -\cs_new_protected:Npn \@@_backend_select_cmyk:n #1 - { - \__kernel_backend_literal:n { pdf: bc ~ [#1] } - \group_insert_after:N \@@_backend_reset: - } -\cs_new_eq:NN \@@_backend_select_gray:n \@@_backend_select_cmyk:n -\cs_new_eq:NN \@@_backend_select_rgb:n \@@_backend_select_cmyk:n -\cs_new_protected:Npn \@@_backend_reset: - { \__kernel_backend_literal:n { pdf: ec } } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macrocode} -%</dvipdfmx|xetex> -% \end{macrocode} -% -% \subsection{\texttt{dvips}-style} +% \subsubsection{\texttt{dvips}-style} % % \begin{macrocode} %<*dvisvgm|dvipdfmx|dvips|xetex> @@ -128,7 +85,7 @@ \cs_new_protected:Npn \@@_backend_pickup:N #1 { } \cs_if_exist:cT { ver@color.sty } { - \cs_set_protected:Npn \@@_backend_pickup:N #1 + \cs_set_protected:Npn \@@_backend_pickup:N #1 { \exp_args:NV \tl_if_head_is_space:nTF \current@color { @@ -154,49 +111,7 @@ %</dvisvgm|dvipdfmx|dvips|xetex> % \end{macrocode} % -% \begin{macrocode} -%<*dvisvgm|dvips> -% \end{macrocode} -% -% \begin{macro} -% { -% \@@_backend_select_cmyk:n , -% \@@_backend_select_gray:n , -% \@@_backend_select_rgb:n , -% \@@_backend_select:n -% } -% \begin{macro}{\@@_backend_reset:} -% \begin{macro}{color.sc, color.fc} -% Push the data to the stack. In the case of \texttt{dvips} also saves the -% drawing color in raw PostScript. -% \begin{macrocode} -\cs_new_protected:Npn \@@_backend_select_cmyk:n #1 - { \@@_backend_select:n { cmyk ~ #1 } } -\cs_new_protected:Npn \@@_backend_select_gray:n #1 - { \@@_backend_select:n { gray ~ #1 } } -\cs_new_protected:Npn \@@_backend_select_rgb:n #1 - { \@@_backend_select:n { rgb ~ #1 } } -\cs_new_protected:Npn \@@_backend_select:n #1 - { - \__kernel_backend_literal:n { color~push~ #1 } -%<*dvips> - \__kernel_backend_postscript:n { /color.sc~ { ~ } ~def } - \__kernel_backend_postscript:n { /color.fc~ { ~ } ~def } -%</dvips> - \group_insert_after:N \@@_backend_reset: - } -\cs_new_protected:Npn \@@_backend_reset: - { \__kernel_backend_literal:n { color~pop } } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macrocode} -%</dvisvgm|dvips> -% \end{macrocode} -% -% \subsection{\LuaTeX{} and \pdfTeX{}} +% \subsubsection{\LuaTeX{} and \pdfTeX{}} % % \begin{macrocode} %<*luatex|pdftex> @@ -247,9 +162,192 @@ % \end{macro} % \end{macro} % +% \begin{macrocode} +%</luatex|pdftex> +% \end{macrocode} +% +% \subsection{The color stack} +% +% For PDF-based engines, we have a color stack available inside the specials. +% This is used for concepts beyond color itself: it is needed to manage th graphics +% state generally. The exact form depends on the engine, and for +% \texttt{dvipdfmx}/\XeTeX{} the backend version. +% +% \subsubsection{\texttt{dvipdfmx}/\XeTeX{}} +% +% \begin{macrocode} +%<*dvipdfmx|xetex> +% \end{macrocode} +% +% \begin{macro}{\__kernel_color_stack_init:Nnn} +% \begin{variable}{\g__color_stack_int} +% In \texttt{(x)dvipdfmx}, the base color stack is not set up, so we have to +% force that, as well as providing a mechanism more generally. +% \begin{macrocode} +\int_compare:nNnF \c__kernel_sys_dvipdfmx_version_int < { 20201111 } + { + \int_new:N \g__color_stack_int + \cs_new_protected:Npn \__kernel_color_stack_init:Nnn #1#2#3 + { + \int_gincr:N \g__color_stack_int + \int_const:Nn #1 { \g__color_stack_int } + \__kernel_backend_literal:x + { + pdfcolorstackinit ~ + \int_use:N \g__color_stack_int \c_space_tl + \tl_if_blank:nF {#2} { #2 ~ } + (#3) + } + } + } +% \end{macrocode} +% \end{variable} +% \end{macro} +% +% \begin{macro}{\__kernel_color_stack_push:nn} +% \begin{macro}{\__kernel_color_stack_pop:n} +% Simple enough but needs a version check. +% \begin{macrocode} +\int_compare:nNnF \c__kernel_sys_dvipdfmx_version_int < { 20201111 } + { + \cs_new_protected:Npn \__kernel_color_stack_push:nn #1#2 + { + \__kernel_backend_literal:x + { + pdfcolorstack ~ + \int_eval:n {#1} ~ + push ~ (#2) + } + } + \cs_new_protected:Npn \__kernel_color_stack_pop:n #1 + { + \__kernel_backend_literal:x + { + pdfcolorstack ~ + \int_eval:n {#1} ~ + pop + } + } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +%</dvipdfmx|xetex> +% \end{macrocode} +% +% \subsubsection{\LuaTeX and \pdfTeX{}} +% +% \begin{macrocode} +%<*luatex|pdftex> +% \end{macrocode} +% +% \begin{macro}{\__kernel_color_stack_init:Nnn} +% \begin{macrocode} +\cs_new_protected:Npn \__kernel_color_stack_init:Nnn #1#2#3 + { + \int_const:Nn #1 + { +%<*luatex> + \tex_pdffeedback:D colorstackinit ~ +%</luatex> +%<*pdftex> + \tex_pdfcolorstackinit:D +%</pdftex> + \tl_if_blank:nF {#2} { #2 ~ } + {#3} + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\__kernel_color_stack_push:nn} +% \begin{macro}{\__kernel_color_stack_pop:n} +% \begin{macrocode} +\cs_new_protected:Npn \__kernel_color_stack_push:nn #1#2 + { +%<*luatex> + \tex_pdfextension:D colorstack ~ +%</luatex> +%<*pdftex> + \tex_pdfcolorstack:D +%</pdftex> + \int_eval:n {#1} ~ push ~ {#2} + } +\cs_new_protected:Npn \__kernel_color_stack_pop:n #1 + { +%<*luatex> + \tex_pdfextension:D colorstack ~ +%</luatex> +%<*pdftex> + \tex_pdfcolorstack:D +%</pdftex> + \int_eval:n {#1} ~ pop \scan_stop: + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +%</luatex|pdftex> +% \end{macrocode} +% +% \subsection{General color} +% +% \subsubsection{\texttt{dvips}-style} +% +% \begin{macrocode} +%<*dvips|dvisvgm> +% \end{macrocode} +% +% \begin{macro} +% { +% \@@_backend_select_cmyk:n , +% \@@_backend_select_gray:n , +% \@@_backend_select_rgb:n , +% \@@_backend_select:n +% } +% \begin{macro}{\@@_backend_reset:} +% \begin{macro}{color.sc, color.fc} +% Push the data to the stack. In the case of \texttt{dvips} also saves the +% drawing color in raw PostScript. +% \begin{macrocode} +\cs_new_protected:Npn \@@_backend_select_cmyk:n #1 + { \@@_backend_select:n { cmyk ~ #1 } } +\cs_new_protected:Npn \@@_backend_select_gray:n #1 + { \@@_backend_select:n { gray ~ #1 } } +\cs_new_protected:Npn \@@_backend_select_rgb:n #1 + { \@@_backend_select:n { rgb ~ #1 } } +\cs_new_protected:Npn \@@_backend_select:n #1 + { + \__kernel_backend_literal:n { color~push~ #1 } +%<*dvips> + \__kernel_backend_postscript:n { /color.sc~ { ~ } ~def } + \__kernel_backend_postscript:n { /color.fc~ { ~ } ~def } +%</dvips> + \group_insert_after:N \@@_backend_reset: + } +\cs_new_protected:Npn \@@_backend_reset: + { \__kernel_backend_literal:n { color~pop } } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +%</dvips|dvisvgm> +% \end{macrocode} +% +% \subsubsection{\LuaTeX{} and \pdfTeX{}} +% +% \begin{macrocode} +%<*dvipdfmx|luatex|pdftex|xetex> +% \end{macrocode} +% % \begin{variable}{\l__kernel_color_stack_int} -% \pdfTeX{} and \LuaTeX{} have multiple stacks available, and to track -% which one is in use a variable is required. +% \pdfTeX{}, \LuaTeX{} and recent \texttt{(x)dvipdfmx} have multiple stacks +% available, and to track which one is in use a variable is required. % \begin{macrocode} \int_new:N \l__kernel_color_stack_int % \end{macrocode} @@ -272,31 +370,60 @@ { \@@_backend_select:n { #1 ~ rg ~ #1 ~ RG } } \cs_new_protected:Npn \@@_backend_select:n #1 { -%<*luatex> - \tex_pdfextension:D colorstack -%</luatex> -%<*pdftex> - \tex_pdfcolorstack:D -%</pdftex> - \l__kernel_color_stack_int push {#1} + \__kernel_color_stack_push:nn \l__kernel_color_stack_int {#1} \group_insert_after:N \@@_backend_reset: } \cs_new_protected:Npn \@@_backend_reset: + { \__kernel_color_stack_pop:n \l__kernel_color_stack_int } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +%</dvipdfmx|luatex|pdftex|xetex> +% \end{macrocode} +% +% \subsubsection{\texttt{dvipmdfx}/\XeTeX{}} +% +% \begin{macrocode} +%<*dvipdfmx|xetex> +% \end{macrocode} +% +% These backends have the most possible approaches: it recognises both +% \texttt{dvips}-based color specials and it's own format, plus one can +% include PDF statements directly. Recent releases also have a color stack +% approach similar to \pdfTeX{}. Of the stack methods, the dedicated +% the most versatile is the latter as it can cover all of the use cases +% we have. Thus it is used in preference to the \texttt{dvips}-style interface +% or the \enquote{native} color specials (which have only one stack). +% +% \begin{macro} +% { +% \@@_backend_select_cmyk:n , +% \@@_backend_select_gray:n , +% \@@_backend_select_rgb:n +% } +% \begin{macro}{\@@_backend_reset:} +% Push the data to the stack. +% \begin{macrocode} +\int_compare:nNnT \c__kernel_sys_dvipdfmx_version_int < { 20201111 } { -%<*luatex> - \tex_pdfextension:D colorstack -%</luatex> -%<*pdftex> - \tex_pdfcolorstack:D -%</pdftex> - \l__kernel_color_stack_int pop \scan_stop: + \cs_gset_protected:Npn \@@_backend_select_cmyk:n #1 + { + \__kernel_backend_literal:n { pdf: bc ~ [#1] } + \group_insert_after:N \@@_backend_reset: + } + \cs_gset_eq:NN \@@_backend_select_gray:n \@@_backend_select_cmyk:n + \cs_gset_eq:NN \@@_backend_select_rgb:n \@@_backend_select_cmyk:n + \cs_gset_protected:Npn \@@_backend_reset: + { \__kernel_backend_literal:n { pdf: ec } } } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macrocode} -%</luatex|pdftex> +%</dvipdfmx|xetex> % \end{macrocode} % % \subsection{Separations} @@ -601,22 +728,12 @@ % % \begin{macro}{\@@_backend_select_separation:nn, \@@_backend_select_devicen:nn} % \begin{macro}{\@@_backend_select:n} -% Different syntaxes here as the stacks are accessed very differently. +% Although \texttt{(x)dvipdfmx} has a built-in approach to color spaces, that +% can't be used with the generic color stacks. So we take an approach in which +% we share the same code as for \pdfTeX{}. % \begin{macrocode} \cs_new_protected:Npn \@@_backend_select_separation:nn #1#2 -%<*dvipdfmx|xetex> - { \@@_backend_select:n { @#1 ~ [#2] } } -%</dvipdfmx|xetex> -%<*luatex|pdftex> { \@@_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } } -%</luatex|pdftex> -%<*dvipdfmx|xetex> -\cs_new_protected:Npn \@@_backend_select:n #1 - { - \__kernel_backend_literal:n { pdf: bc ~ #1 } - \group_insert_after:N \@@_backend_reset: - } -%</dvipdfmx|xetex> \cs_new_eq:NN \@@_backend_select_devicen:nn \@@_backend_select_separation:nn % \end{macrocode} % \end{macro} @@ -627,9 +744,7 @@ % \begin{macro}{\@@_backend_separation_init_CIELAB:nnn} % Initialising the PDF structures needs two parts: creating an object % containing the \enquote{real} name of the Separation, then adding a reference -% to that to each page. The latter uses the internal name of the \texttt{cs}. -% For \texttt{dvipdfmx}/\XeTeX{}, the backend does most of the work so we need a -% simplified version. We use a separate object for the tint transformation +% to that to each page. We use a separate object for the tint transformation % following the model in the PDF reference. % \begin{macrocode} \cs_new_protected:Npn \@@_backend_separation_init:nnnnn #1#2#3#4#5 @@ -648,30 +763,19 @@ / \str_convert_pdfname:n {#1} ~ #2 ~ \pdf_object_last: } -%<*luatex|pdftex> \use:x { - \pdfcoredict_gput:nnn + \pdfmanagement_add:nnn { Page / Resources / ColorSpace } { color \int_use:N \g_@@_model_int } { \pdf_object_last: } } -%</luatex|pdftex> } \cs_if_exist:NF \pdf_object_now:nn { \cs_gset_protected:Npn \@@_backend_separation_init:nnnnn #1#2#3#4#5 { } } \cs_new_protected:Npn \@@_backend_separation_init:n #1 { -%<*dvipdfmx|xetex> - \__kernel_backend_literal:x - { - pdf:obj ~ @color \int_use:N \g_@@_model_int \c_space_tl - [#1] - } -%</dvipdfmx|xetex> -%<*luatex|pdftex> \pdf_object_now:nx { array } {#1} -%</luatex|pdftex> } % \end{macrocode} % For CIELAB colors, we need one object per document for the illuminant, @@ -746,15 +850,13 @@ #2 ~ \pdf_object_last: } -%<*luatex|pdftex> \use:x { - \pdfcoredict_gput:nnn + \pdfmanagement_add:nnn { Page / Resources / ColorSpace } { color \int_use:N \g_@@_model_int } { \pdf_object_last: } } -%</luatex|pdftex> } \cs_if_exist:NF \pdf_object_now:nn { \cs_gset_protected:Npn \@@_backend_devicen_init:nnn #1#2#3 { } } diff --git a/macros/latex/contrib/l3backend/l3backend-draw.dtx b/macros/latex/contrib/l3backend/l3backend-draw.dtx index 8de6910edf..2951e21504 100644 --- a/macros/latex/contrib/l3backend/l3backend-draw.dtx +++ b/macros/latex/contrib/l3backend/l3backend-draw.dtx @@ -2,7 +2,7 @@ % %% File: l3backend-draw.dtx % -% Copyright (C) 2019,2020 The LaTeX3 Project +% Copyright (C) 2019-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-09-24} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3backend/l3backend-graphics.dtx b/macros/latex/contrib/l3backend/l3backend-graphics.dtx index e72bbe9a58..7d288ac17d 100644 --- a/macros/latex/contrib/l3backend/l3backend-graphics.dtx +++ b/macros/latex/contrib/l3backend/l3backend-graphics.dtx @@ -2,7 +2,7 @@ % %% File: l3backend-graphics.dtx % -% Copyright (C) 2019,2020 The LaTeX3 Project +% Copyright (C) 2019-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-09-24} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3backend/l3backend-header.dtx b/macros/latex/contrib/l3backend/l3backend-header.dtx index e158491688..80dac57f72 100644 --- a/macros/latex/contrib/l3backend/l3backend-header.dtx +++ b/macros/latex/contrib/l3backend/l3backend-header.dtx @@ -2,7 +2,7 @@ % %% File: l3backend-header.dtx % -% Copyright (C) 2019,2020 The LaTeX3 Project +% Copyright (C) 2019-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-09-24} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3backend/l3backend-pdf.dtx b/macros/latex/contrib/l3backend/l3backend-pdf.dtx index 58c7da7f08..e74ac8286b 100644 --- a/macros/latex/contrib/l3backend/l3backend-pdf.dtx +++ b/macros/latex/contrib/l3backend/l3backend-pdf.dtx @@ -2,7 +2,7 @@ % %% File: l3backend-pdf.dtx % -% Copyright (C) 2019,2020 The LaTeX3 Project +% Copyright (C) 2019-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-09-24} +% \date{Released 2021-01-09} % % \maketitle % @@ -565,7 +565,6 @@ % question about the name of the hook: to be resolved at the \LaTeXe{} % end. % \begin{macrocode} -%<*package> \use_none:n { \cs_if_exist:NT \@makecol@hook @@ -593,7 +592,6 @@ \cs_set_eq:NN \@@_breaklink_usebox:N \hbox_unpack:N } } -%</package> % \end{macrocode} % \end{macro} % @@ -622,6 +620,7 @@ % Here, we need to turn the zoom into a scale. We also need to know where % the current anchor point actually is: worked out in PostScript. For the % rectangle version, we have a bit more PostScript: we need two points. +% fitr without rule spec doesn't work, so it falls back to /Fit here. % \begin{macrocode} \cs_new_protected:Npn \@@_backend_destination:nn #1#2 { @@ -639,6 +638,7 @@ { fitbv } { /FitBV ~ pdf.dest.x } { fith } { /FitH ~ pdf.dest.y } { fitv } { /FitV ~ pdf.dest.x } + { fitr } { /Fit } } { /XYZ ~ pdf.dest.point ~ \fp_eval:n { (#2) / 100 } @@ -883,6 +883,7 @@ { fitbv } { fitbv } { fith } { fith } { fitv } { fitv } + { fitr } { fitr } } { xyz ~ zoom \fp_eval:n { #2 * 10 } } \scan_stop: @@ -1406,6 +1407,13 @@ % \end{macrocode} % \end{macro} % +% \begin{variable}{\g_@@_backend_link_int} +% To track annotations which are links. +% \begin{macrocode} +\int_new:N \g_@@_backend_link_int +% \end{macrocode} +% \end{variable} +% % \begin{macro} % {\@@_backend_link_begin_goto:nnw, \@@_backend_link_begin_user:nnw} % \begin{macro}{\@@_backend_link_begin:n} @@ -1416,11 +1424,21 @@ { \@@_backend_link_begin:n { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } } \cs_new_protected:Npn \@@_backend_link_begin_user:nnw #1#2 { \@@_backend_link_begin:n {#1#2} } -\cs_new_protected:Npn \@@_backend_link_begin:n #1 +\cs_new_protected:Npx \@@_backend_link_begin:n #1 { - \@@_backend:n + \int_compare:nNnF \c__kernel_sys_dvipdfmx_version_int < { 20201111 } { - bann + \exp_not:N \int_gincr:N \exp_not:N \g_@@_backend_link_int + } + \@@_backend:x + { + bann ~ + \int_compare:nNnF \c__kernel_sys_dvipdfmx_version_int < { 20201111 } + { + @pdf.lnk + \exp_not:N \int_use:N \exp_not:N \g_@@_backend_link_int + \c_space_tl + } << /Type /Annot #1 @@ -1435,9 +1453,17 @@ % \end{macro} % % \begin{macro}{\@@_backend_link_last:} -% Data not available. +% Available using the backend mechanism with a suitably-recent +% version. % \begin{macrocode} -\cs_new:Npn \@@_backend_link_last: { } +\cs_new:Npx \@@_backend_link_last: + { + \int_compare:nNnF \c__kernel_sys_dvipdfmx_version_int < { 20201111 } + { + @pdf.lnk + \exp_not:N \int_use:N \exp_not:N \g_@@_backend_link_int + } + } % \end{macrocode} % \end{macro} % @@ -1453,6 +1479,7 @@ % Here, we need to turn the zoom into a scale. The method for \texttt{FitR} % is from Alexander Grahn: the idea is to avoid needing to do any calculations % in \TeX{} by using the backend data for \texttt{@xpos} and \texttt{@ypos}. +% fitr without rule spec doesn't work, so it falls back to /Fit here. % \begin{macrocode} \cs_new_protected:Npn \@@_backend_destination:nn #1#2 { @@ -1470,6 +1497,7 @@ { fitbv } { /FitBV ~ @xpos } { fith } { /FitH ~ @ypos } { fitv } { /FitV ~ @xpos } + { fitr } { /Fit } } { /XYZ ~ @xpos ~ @ypos ~ \fp_eval:n { (#2) / 100 } } ] diff --git a/macros/latex/contrib/l3backend/l3backend.ins b/macros/latex/contrib/l3backend/l3backend.ins index 3babb97da1..ebce5ad026 100644 --- a/macros/latex/contrib/l3backend/l3backend.ins +++ b/macros/latex/contrib/l3backend/l3backend.ins @@ -2,7 +2,7 @@ File l3backend.ins -Copyright (C) 2019,2020 The LaTeX3 Project +Copyright (C) 2019-2021 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -35,7 +35,7 @@ license information is placed in the derived files. \preamble -Copyright (C) 1990-2020 The LaTeX3 Project +Copyright (C) 1990-2021 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md index 10e0520081..ce020127f4 100644 --- a/macros/latex/contrib/l3kernel/CHANGELOG.md +++ b/macros/latex/contrib/l3kernel/CHANGELOG.md @@ -7,6 +7,17 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2021-01-09] + +### Added +- `\keyval_parse:nnn` + +### Changed +- `\keyval_parse:NNn` is set equal to `\keyval_parse:nnn` + +### Fixed +- Handling of encoding-specfic commands in `\text_purify:n` + ## [2020-12-07] ### Fixed @@ -815,7 +826,8 @@ this project uses date-based 'snapshot' version identifiers. - Step functions have been added for dim variables, e.g. `\dim_step_inline:nnnn` -[Unreleased]: https://github.com/latex3/latex3/compare/2020-12-07...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2021-01-09...HEAD +[2021-01-09]: https://github.com/latex3/latex3/compare/2020-12-07...2021-01-09 [2020-12-07]: https://github.com/latex3/latex3/compare/2020-12-05...2020-12-07 [2020-12-05]: https://github.com/latex3/latex3/compare/2020-12-03...2020-12-05 [2020-12-03]: https://github.com/latex3/latex3/compare/2020-10-27...2020-12-03 diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md index b4146044e6..00087c46d8 100644 --- a/macros/latex/contrib/l3kernel/README.md +++ b/macros/latex/contrib/l3kernel/README.md @@ -1,7 +1,7 @@ LaTeX3 Programming Conventions ============================== -Release 2020-12-07 +Release 2021-01-09 Overview -------- @@ -80,6 +80,6 @@ the [LaTeX-L list](#Discussion) should be used. ----- -<p>Copyright (C) 1998-2012,2015-2020 The LaTeX3 Project <br /> +<p>Copyright (C) 1998-2012,2015-2021 The LaTeX3 Project <br /> <a href="http://latex-project.org/">http://latex-project.org/</a> <br /> All rights reserved.</p> diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx index 1f96c8298d..b684859b76 100644 --- a/macros/latex/contrib/l3kernel/expl3.dtx +++ b/macros/latex/contrib/l3kernel/expl3.dtx @@ -2,7 +2,7 @@ % %% File: expl3.dtx % -% Copyright (C) 1990-2020 The LaTeX3 Project +% Copyright (C) 1990-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> %</driver|generic|package|2ekernel> -\def\ExplFileDate{2020-12-07}% +\def\ExplFileDate{2021-01-09}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf Binary files differindex d8f391aa0e..f87cfdb041 100644 --- a/macros/latex/contrib/l3kernel/expl3.pdf +++ b/macros/latex/contrib/l3kernel/expl3.pdf diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf Binary files differindex d4129e66fd..7d756df461 100644 --- a/macros/latex/contrib/l3kernel/interface3.pdf +++ b/macros/latex/contrib/l3kernel/interface3.pdf diff --git a/macros/latex/contrib/l3kernel/interface3.tex b/macros/latex/contrib/l3kernel/interface3.tex index 2940d49147..bc2c61ff38 100644 --- a/macros/latex/contrib/l3kernel/interface3.tex +++ b/macros/latex/contrib/l3kernel/interface3.tex @@ -2,7 +2,7 @@ File: interfaces3.tex -Copyright (C) 1990-2011,2017-2020 The LaTeX3 Project +Copyright (C) 1990-2011,2017-2021 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -54,7 +54,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2020-12-07} +\date{Released 2021-01-09} \pagenumbering{roman} \maketitle diff --git a/macros/latex/contrib/l3kernel/l3.ins b/macros/latex/contrib/l3kernel/l3.ins index ad3b5267dd..f567f2a8c6 100644 --- a/macros/latex/contrib/l3kernel/l3.ins +++ b/macros/latex/contrib/l3kernel/l3.ins @@ -2,7 +2,7 @@ File l3.ins -Copyright (C) 2011,2012,2014-2020 The LaTeX3 Project +Copyright (C) 2011,2012,2014-2021 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -35,7 +35,7 @@ license information is placed in the derived files. \preamble -Copyright (C) 1990-2020 The LaTeX3 Project +Copyright (C) 1990-2021 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of @@ -151,7 +151,7 @@ and all files in that bundle must be distributed together. \def\MetaPrefix{--} \preamble -Copyright (C) 1990-2020 The LaTeX3 Project +Copyright (C) 1990-2021 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx index 82f1a25c02..dd95416e5a 100644 --- a/macros/latex/contrib/l3kernel/l3basics.dtx +++ b/macros/latex/contrib/l3kernel/l3basics.dtx @@ -2,7 +2,7 @@ % %% File: l3basics.dtx % -% Copyright (C) 1990-2020 The LaTeX3 Project +% Copyright (C) 1990-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx index 6643fb36be..65397d5286 100644 --- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx +++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx @@ -2,7 +2,7 @@ % %% File: l3bootstrap.dtx % -% Copyright (C) 2011-2020 The LaTeX3 Project +% Copyright (C) 2011-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx index 572cb9b5a6..eade06c734 100644 --- a/macros/latex/contrib/l3kernel/l3box.dtx +++ b/macros/latex/contrib/l3kernel/l3box.dtx @@ -2,7 +2,7 @@ % %% File: l3box.dtx % -% Copyright (C) 2005-2020 The LaTeX3 Project +% Copyright (C) 2005-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx index d5cefd0946..1a3d67c01e 100644 --- a/macros/latex/contrib/l3kernel/l3candidates.dtx +++ b/macros/latex/contrib/l3kernel/l3candidates.dtx @@ -2,7 +2,7 @@ % %% File: l3candidates.dtx % -% Copyright (C) 2012-2020 The LaTeX3 Project +% Copyright (C) 2012-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3cctab.dtx b/macros/latex/contrib/l3kernel/l3cctab.dtx index 5084481a35..1d393df1d4 100644 --- a/macros/latex/contrib/l3kernel/l3cctab.dtx +++ b/macros/latex/contrib/l3kernel/l3cctab.dtx @@ -2,7 +2,7 @@ % %% File: l3cctab.dtx % -% Copyright (C) 2018-2020 The LaTeX3 Project +% Copyright (C) 2018-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx index 3c8d9149c0..f88dd61968 100644 --- a/macros/latex/contrib/l3kernel/l3clist.dtx +++ b/macros/latex/contrib/l3kernel/l3clist.dtx @@ -3,7 +3,7 @@ %% File: l3clist.dtx % % Copyright (C) 2004-2011 Frank Mittelbach, The LaTeX3 Project -% (C) 2012-2020 The LaTeX3 Project +% (C) 2012-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx index c37a6d7c04..4c7784cdba 100644 --- a/macros/latex/contrib/l3kernel/l3coffins.dtx +++ b/macros/latex/contrib/l3kernel/l3coffins.dtx @@ -2,7 +2,7 @@ % %% File: l3coffins.dtx % -% Copyright (C) 2010-2020 The LaTeX3 Project +% Copyright (C) 2010-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3color-base.dtx b/macros/latex/contrib/l3kernel/l3color-base.dtx index 6796bbafa6..8612fb9361 100644 --- a/macros/latex/contrib/l3kernel/l3color-base.dtx +++ b/macros/latex/contrib/l3kernel/l3color-base.dtx @@ -2,7 +2,7 @@ % %% File: l3color-base.dtx % -% Copyright (C) 2011,2012,2014,2016-2020 The LaTeX3 Project +% Copyright (C) 2011,2012,2014,2016-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx index 802ce32441..bd46449673 100644 --- a/macros/latex/contrib/l3kernel/l3debug.dtx +++ b/macros/latex/contrib/l3kernel/l3debug.dtx @@ -2,7 +2,7 @@ % %% File: l3debug.dtx % -% Copyright (C) 2019,2020 The LaTeX3 Project +% Copyright (C) 2019-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx index b112eb89ae..77183e8c73 100644 --- a/macros/latex/contrib/l3kernel/l3deprecation.dtx +++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx @@ -2,7 +2,7 @@ % %% File: l3deprecation.dtx % -% Copyright (C) 2017-2020 The LaTeX3 Project +% Copyright (C) 2017-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx index 76bbdfd341..b0411437b3 100644 --- a/macros/latex/contrib/l3kernel/l3doc.dtx +++ b/macros/latex/contrib/l3kernel/l3doc.dtx @@ -2,7 +2,7 @@ % %% File: l3doc.dtx % -% Copyright (C) 1990-2020 The LaTeX3 Project +% Copyright (C) 1990-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -31,7 +31,7 @@ \askforoverwritefalse \preamble -Copyright (C) 1990-2020 The LaTeX3 Project +Copyright (C) 1990-2021 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of @@ -79,7 +79,7 @@ and all files in that bundle must be distributed together. % % \title{The \cls{l3doc} class} % \author{\Team} -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % \maketitle % \tableofcontents % diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx index f41250c05e..4f5122da27 100644 --- a/macros/latex/contrib/l3kernel/l3docstrip.dtx +++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx @@ -2,7 +2,7 @@ % %% File l3dosctrip.dtx % -% Copyright (C) 2012,2014-2020 The LaTeX3 Project +% Copyright (C) 2012,2014-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf Binary files differindex a55d29b254..7cac6864c4 100644 --- a/macros/latex/contrib/l3kernel/l3docstrip.pdf +++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/contrib/l3kernel/l3expan.dtx index a516c83742..b842b242ab 100644 --- a/macros/latex/contrib/l3kernel/l3expan.dtx +++ b/macros/latex/contrib/l3kernel/l3expan.dtx @@ -2,7 +2,7 @@ % %% File: l3expan.dtx % -% Copyright (C) 1990-2020 The LaTeX3 Project +% Copyright (C) 1990-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx index cb523d6e46..a97a7a9a76 100644 --- a/macros/latex/contrib/l3kernel/l3file.dtx +++ b/macros/latex/contrib/l3kernel/l3file.dtx @@ -2,7 +2,7 @@ % %% File: l3file.dtx % -% Copyright (C) 1990-2020 The LaTeX3 Project +% Copyright (C) 1990-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx index 4de5934170..7a7546f27c 100644 --- a/macros/latex/contrib/l3kernel/l3flag.dtx +++ b/macros/latex/contrib/l3kernel/l3flag.dtx @@ -2,7 +2,7 @@ % %% File: l3flag.dtx % -% Copyright (C) 2011-2020 The LaTeX3 Project +% Copyright (C) 2011-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx index eb424f6907..12eb397190 100644 --- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-assign.dtx @@ -2,7 +2,7 @@ % %% File: l3fp-assign.dtx % -% Copyright (C) 2011-2020 The LaTeX3 Project +% Copyright (C) 2011-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % \maketitle % % \begin{documentation} diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx index 2d8e315ba8..149ccb46f9 100644 --- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx @@ -2,7 +2,7 @@ % %% File: l3fp-aux.dtx % -% Copyright (C) 2011-2020 The LaTeX3 Project +% Copyright (C) 2011-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx index 1c6bfe0fe3..b040ac3e96 100644 --- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx @@ -2,7 +2,7 @@ % %% File: l3fp-basics.dtx % -% Copyright (C) 2011-2014,2016-2020 The LaTeX3 Project +% Copyright (C) 2011-2014,2016-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx index c334df2d46..8c4e5270f6 100644 --- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx @@ -2,7 +2,7 @@ % %% File: l3fp-convert.dtx % -% Copyright (C) 2011-2020 The LaTeX3 Project +% Copyright (C) 2011-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx index 3f4f5cd07c..3f7b065f05 100644 --- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-expo.dtx @@ -2,7 +2,7 @@ % %% File: l3fp-expo.dtx % -% Copyright (C) 2011-2020 The LaTeX3 Project +% Copyright (C) 2011-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx index 9927e0b9cb..dcccbe502a 100644 --- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-extended.dtx @@ -2,7 +2,7 @@ % %% File: l3fp-extended.dtx % -% Copyright (C) 2011-2020 The LaTeX3 Project +% Copyright (C) 2011-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx index 4e28c73487..0b220209a3 100644 --- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-logic.dtx @@ -2,7 +2,7 @@ % %% File: l3fp-logic.dtx % -% Copyright (C) 2011-2020 The LaTeX3 Project +% Copyright (C) 2011-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx index 1cde3d1e99..4d72f67104 100644 --- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-parse.dtx @@ -2,7 +2,7 @@ % %% File: l3fp-parse.dtx % -% Copyright (C) 2011-2020 The LaTeX3 Project +% Copyright (C) 2011-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx index f171d02bf2..b5d9012689 100644 --- a/macros/latex/contrib/l3kernel/l3fp-random.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-random.dtx @@ -2,7 +2,7 @@ % %% File: l3fp-random.dtx % -% Copyright (C) 2016-2020 The LaTeX3 Project +% Copyright (C) 2016-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx index 66628c9d8c..9a9ff30a58 100644 --- a/macros/latex/contrib/l3kernel/l3fp-round.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx @@ -2,7 +2,7 @@ % %% File: l3fp-round.dtx % -% Copyright (C) 2011-2020 The LaTeX3 Project +% Copyright (C) 2011-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx index 3a8eedaade..456999ed1b 100644 --- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx @@ -2,7 +2,7 @@ % %% File: l3fp-traps.dtx % -% Copyright (C) 2011-2014,2016-2020 The LaTeX3 Project +% Copyright (C) 2011-2014,2016-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % \maketitle % % \begin{documentation} diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx index c65aa762de..57ff263e7d 100644 --- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-trig.dtx @@ -2,7 +2,7 @@ % %% File: l3fp-trig.dtx % -% Copyright (C) 2011-2020 The LaTeX3 Project +% Copyright (C) 2011-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx index 898fca2a0a..2319504a4a 100644 --- a/macros/latex/contrib/l3kernel/l3fp.dtx +++ b/macros/latex/contrib/l3kernel/l3fp.dtx @@ -2,7 +2,7 @@ % %% File: l3fp.dtx % -% Copyright (C) 2011-2020 The LaTeX3 Project +% Copyright (C) 2011-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx index e98ceb52b4..6847cb1e0c 100644 --- a/macros/latex/contrib/l3kernel/l3fparray.dtx +++ b/macros/latex/contrib/l3kernel/l3fparray.dtx @@ -2,7 +2,7 @@ % %% File: l3fparray.dtx % -% Copyright (C) 2018-2020 The LaTeX3 Project +% Copyright (C) 2018-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx index cb1ab5db50..d5bfaf26b6 100644 --- a/macros/latex/contrib/l3kernel/l3int.dtx +++ b/macros/latex/contrib/l3kernel/l3int.dtx @@ -2,7 +2,7 @@ % %% File: l3int.dtx % -% Copyright (C) 1990-2020 The LaTeX3 Project +% Copyright (C) 1990-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx index c261fa5c84..1dacedc38b 100644 --- a/macros/latex/contrib/l3kernel/l3intarray.dtx +++ b/macros/latex/contrib/l3kernel/l3intarray.dtx @@ -2,7 +2,7 @@ % %% File: l3intarray.dtx % -% Copyright (C) 2017-2020 The LaTeX3 Project +% Copyright (C) 2017-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx index 22f33e1d41..68771e076a 100644 --- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx +++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx @@ -2,7 +2,7 @@ % %% File: l3kernel-functions.dtx % -% Copyright (C) 2018-2020 The LaTeX3 Project +% Copyright (C) 2018-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx index d1f9f19268..860854cc77 100644 --- a/macros/latex/contrib/l3kernel/l3keys.dtx +++ b/macros/latex/contrib/l3kernel/l3keys.dtx @@ -2,7 +2,7 @@ % %% File: l3keys.dtx % -% Copyright (C) 2006-2020 The LaTeX3 Project +% Copyright (C) 2006-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % @@ -891,7 +891,45 @@ % \end{verbatim} % are treated identically. % -% \begin{function}[EXP,updated = 2020-02-20]{\keyval_parse:NNn} +% \begin{function}[rEXP, added=2020-12-19]{\keyval_parse:nnn} +% \begin{syntax} +% \cs{keyval_parse:nnn} \Arg{code_1} \Arg{code_2} \Arg{key--value list} +% \end{syntax} +% Parses the \meta{key--value list} into a series of \meta{keys} and +% associated \meta{values}, or keys alone (if no \meta{value} was +% given). \meta{code_1} receives each \meta{key} (with no \meta{value}) as a +% trailing brace group, whereas \meta{code_2} is appended by two brace groups, +% the \meta{key} and \meta{value}. +% The order of the \meta{keys} in the \meta{key--value list} +% is preserved. Thus +% \begin{verbatim} +% \keyval_parse:nnn +% { \use_none:nn { code 1 } } +% { \use_none:nnn { code 2 } } +% { key1 = value1 , key2 = value2, key3 = , key4 } +% \end{verbatim} +% is converted into an input stream +% \begin{verbatim} +% \use_none:nnn { code 2 } { key1 } { value1 } +% \use_none:nnn { code 2 } { key2 } { value2 } +% \use_none:nnn { code 2 } { key3 } { } +% \use_none:nn { code 1 } { key4 } +% \end{verbatim} +% Note that there is a difference between an empty value (an equals +% sign followed by nothing) and a missing value (no equals sign at +% all). Spaces are trimmed from the ends of the \meta{key} and \meta{value}, +% then one \emph{outer} set of braces is removed from the \meta{key} +% and \meta{value} as part of the processing. If you need exactly the output +% shown above, you'll need to either \texttt{x}-type or \texttt{e}-type expand +% the function. +% \begin{texnote} +% The result of each list element is returned within \cs{exp_not:n}, which +% means that the converted input stream does not expand further when +% appearing in an \texttt{x}-type or \texttt{e}-type argument expansion. +% \end{texnote} +% \end{function} +% +% \begin{function}[rEXP,updated = 2020-12-19]{\keyval_parse:NNn} % \begin{syntax} % \cs{keyval_parse:NNn} \meta{function_1} \meta{function_2} \Arg{key--value list} % \end{syntax} @@ -920,6 +958,9 @@ % all). Spaces are trimmed from the ends of the \meta{key} and \meta{value}, % then one \emph{outer} set of braces is removed from the \meta{key} % and \meta{value} as part of the processing. +% +% This shares the implementation of \cs{keyval_parse:nnn}, the difference is +% only semantically. % \begin{texnote} % The result is returned within \cs{exp_not:n}, which means that the % converted input stream does not expand further when appearing in an @@ -969,30 +1010,31 @@ { % \end{macrocode} % -% \begin{macro}[EXP]{\keyval_parse:NNn} +% \begin{macro}[EXP]{\keyval_parse:nnn, \keyval_parse:NNn} % The main function starts the first of two loops. The outer loop splits the % key--value list at active commas, the inner loop will do so at other commas. % The use of \cs{s_@@_mark} here prevents loss of braces from the key % argument. % \begin{macrocode} - \cs_new:Npn \keyval_parse:NNn ##1 ##2 ##3 - { \@@_loop_active:NNw ##1 ##2 \s_@@_mark ##3 #1 \s_@@_tail #1 } + \cs_new:Npn \keyval_parse:nnn ##1 ##2 ##3 + { \@@_loop_active:nnw {##1} {##2} \s_@@_mark ##3 #1 \s_@@_tail #1 } + \cs_new_eq:NN \keyval_parse:NNn \keyval_parse:nnn % \end{macrocode} % \end{macro} % -% \begin{macro}[EXP]{\@@_loop_active:NNw} +% \begin{macro}[EXP]{\@@_loop_active:nnw} % First a fast test for the end of the loop is done, it'll gobble everything % up to a \cs{s_@@_tail}. The loop ending macro will gobble everything to the -% last \cs{s_@@_mark} in this definition. +% last comma in this definition. % If the end isn't reached yet, start the second loop splitting at other -% commas, and after that one iterate the current loop. +% commas, the next iteration of this first loop will be inserted by the end of +% \cs{@@_loop_other:nnw}. % \begin{macrocode} - \cs_new:Npn \@@_loop_active:NNw ##1 ##2 ##3 #1 + \cs_new:Npn \@@_loop_active:nnw ##1 ##2 ##3 #1 { \@@_if_recursion_tail:w ##3 \@@_end_loop_active:w \s_@@_tail - \@@_loop_other:NNw ##1 ##2 ##3 , \s_@@_tail , - \@@_loop_active:NNw ##1 ##2 \s_@@_mark + \@@_loop_other:nnw {##1} {##2} ##3 , \s_@@_tail , } % \end{macrocode} % \end{macro} @@ -1003,14 +1045,14 @@ % token following \cs{s_@@_mark} that followed the equals sign. Hence they % also test for the presence of such an equals sign simultaneously. % \begin{macrocode} - \cs_new:Npn \@@_split_other:w ##1 = ##2 \s_@@_mark ##3 ##4 \s_@@_stop + \cs_new:Npn \@@_split_other:w ##1 = ##2 \s_@@_mark ##3 { ##3 ##1 \s_@@_stop \s_@@_mark ##2 } - \cs_new:Npn \@@_split_active:w ##1 #2 ##2 \s_@@_mark ##3 ##4 \s_@@_stop + \cs_new:Npn \@@_split_active:w ##1 #2 ##2 \s_@@_mark ##3 { ##3 ##1 \s_@@_stop \s_@@_mark ##2 } % \end{macrocode} % \end{macro} % -% \begin{macro}[EXP]{\@@_loop_other:NNw} +% \begin{macro}[EXP]{\@@_loop_other:nnw} % The second loop uses the same test for its end as the first loop, next it % splits at the first active equals sign using \cs{@@_split_active:w}. The % \cs{s_@@_nil} prevents accidental brace stripping and acts as a delimiter in @@ -1018,16 +1060,15 @@ % number of necessary expansion steps for the expected average use case of % other equals signs and hence perform better on average. % \begin{macrocode} - \cs_new:Npn \@@_loop_other:NNw ##1 ##2 ##3 , + \cs_new:Npn \@@_loop_other:nnw ##1 ##2 ##3 , { \@@_if_recursion_tail:w ##3 \@@_end_loop_other:w \s_@@_tail \@@_split_active:w ##3 \s_@@_nil \s_@@_mark \@@_split_active_auxi:w #2 \s_@@_mark \@@_clean_up_active:w - \s_@@_stop - ##1 ##2 - \@@_loop_other:NNw ##1 ##2 \s_@@_mark + {##1} {##2} + \s_@@_mark } % \end{macrocode} % \end{macro} @@ -1050,7 +1091,6 @@ \@@_split_other:w ##1 \s_@@_nil \s_@@_mark \@@_misplaced_equal_after_active_error:w = \s_@@_mark \@@_split_active_auxii:w - \s_@@_stop } % \end{macrocode} % \cs{@@_split_active_auxii:w} gets the correct key name with a leading @@ -1061,7 +1101,8 @@ \cs_new:Npn \@@_split_active_auxii:w ##1 \s_@@_nil \s_@@_mark \@@_misplaced_equal_after_active_error:w \s_@@_stop \s_@@_mark - { \@@_trim:nN { ##1 } \@@_split_active_auxiii:w } + ##2 \s_@@_nil #2 \s_@@_mark \@@_clean_up_active:w + { \@@_trim:nN {##1} \@@_split_active_auxiii:w ##2 \s_@@_nil } % \end{macrocode} % Next we test for a misplaced active equals sign in the value, if none is % found \cs{@@_split_active_auxiv:w} will be called. @@ -1071,8 +1112,7 @@ \@@_split_active:w ##2 \s_@@_nil \s_@@_mark \@@_misplaced_equal_in_split_error:w #2 \s_@@_mark \@@_split_active_auxiv:w - \s_@@_stop - { ##1 } + {##1} } % \end{macrocode} % This runs the last test after sanitising the remainder of the previous one. @@ -1086,16 +1126,15 @@ \@@_split_other:w ##1 \s_@@_nil \s_@@_mark \@@_misplaced_equal_in_split_error:w = \s_@@_mark \@@_split_active_auxv:w - \s_@@_stop } % \end{macrocode} % This last macro in this execution branch sanitises the last test, trims the -% value and passes it to \cs{@@_pair:nnNN}. +% value and passes it to \cs{@@_pair:nnnn}. % \begin{macrocode} \cs_new:Npn \@@_split_active_auxv:w ##1 \s_@@_nil \s_@@_mark \@@_misplaced_equal_in_split_error:w \s_@@_stop \s_@@_mark - { \@@_trim:nN { ##1 } \@@_pair:nnNN } + { \@@_trim:nN { ##1 } \@@_pair:nnnn } % \end{macrocode} % \end{macro} % \end{macro} @@ -1115,7 +1154,6 @@ \@@_split_other:w ##1 \s_@@_nil \s_@@_mark \@@_split_other_auxi:w = \s_@@_mark \@@_clean_up_other:w - \s_@@_stop } % \end{macrocode} % \end{macro} @@ -1132,24 +1170,25 @@ { \@@_trim:nN { ##1 } \@@_split_other_auxii:w } % \end{macrocode} % We know that the value doesn't contain misplaced active equals signs but we -% have to test for others. +% have to test for others. Also we need to sanitise the previous test, which +% is done here and not earlier to avoid superfluous argument grabbing. % \begin{macrocode} - \cs_new:Npn \@@_split_other_auxii:w ##1 ##2 \s_@@_nil + \cs_new:Npn \@@_split_other_auxii:w + ##1 ##2 \s_@@_nil = \s_@@_mark \@@_clean_up_other:w { \@@_split_other:w ##2 \s_@@_nil \s_@@_mark \@@_misplaced_equal_in_split_error:w = \s_@@_mark \@@_split_other_auxiii:w - \s_@@_stop { ##1 } } % \end{macrocode} % \cs{@@_split_other_auxiii:w} sanitises the test for other equals signs, -% trims the value and forwards it to \cs{@@_pair:nnNN}. +% trims the value and forwards it to \cs{@@_pair:nnnn}. % \begin{macrocode} \cs_new:Npn \@@_split_other_auxiii:w ##1 \s_@@_nil \s_@@_mark \@@_misplaced_equal_in_split_error:w \s_@@_stop \s_@@_mark - { \@@_trim:nN { ##1 } \@@_pair:nnNN } + { \@@_trim:nN { ##1 } \@@_pair:nnnn } % \end{macrocode} % \end{macro} % \end{macro} @@ -1159,14 +1198,14 @@ % \cs{@@_clean_up_other:w} is the last branch that might exist. It is called % if no equals sign was found, hence the only possibilities left are a blank % list element, which is to be skipped, or a lonely key. If it's no empty list -% element this will trim the key name and forward it to \cs{@@_key:nNN}. +% element this will trim the key name and forward it to \cs{@@_key:nn}. % \begin{macrocode} \cs_new:Npn \@@_clean_up_other:w ##1 \s_@@_nil \s_@@_mark \@@_split_other_auxi:w \s_@@_stop \s_@@_mark { \@@_if_blank:w ##1 \s_@@_nil \s_@@_stop \@@_blank_true:w - \s_@@_mark \s_@@_stop \use:n - { \@@_trim:nN { ##1 } \@@_key:nNN } + \s_@@_mark \s_@@_stop + \@@_trim:nN { ##1 } \@@_key:nn } % \end{macrocode} % \end{macro} @@ -1174,21 +1213,26 @@ % \begin{macro}[EXP]{\@@_misplaced_equal_after_active_error:w} % \begin{macro}[EXP]{\@@_misplaced_equal_in_split_error:w} % All these two macros do is gobble the remainder of the current other loop -% execution and throw an error. +% execution and throw an error. Afterwards they have to insert the next loop +% iteration. % \begin{macrocode} \cs_new:Npn \@@_misplaced_equal_after_active_error:w \s_@@_mark ##1 \s_@@_stop \s_@@_mark ##2 \s_@@_nil - \s_@@_mark ##3 \s_@@_nil ##4 ##5 + = \s_@@_mark \@@_split_active_auxii:w + \s_@@_mark ##3 \s_@@_nil + #2 \s_@@_mark \@@_clean_up_active:w { \__kernel_msg_expandable_error:nn { kernel } { misplaced-equals-sign } + \@@_loop_other:nnw } \cs_new:Npn \@@_misplaced_equal_in_split_error:w \s_@@_mark ##1 \s_@@_stop \s_@@_mark ##2 \s_@@_nil - ##3 ##4 ##5 + ##3 \s_@@_mark ##4 ##5 { \__kernel_msg_expandable_error:nn { kernel } { misplaced-equals-sign } + \@@_loop_other:nnw } % \end{macrocode} % \end{macro} @@ -1197,21 +1241,20 @@ % \begin{macro}[EXP]{\@@_end_loop_other:w, \@@_end_loop_active:w} % All that's left for the parsing loops are the macros which end the % recursion. Both just gobble the remaining tokens of the respective loop -% including the next recursion call. +% including the next recursion call. \cs{@@_end_loop_other:w} also has to +% insert the next iteration of the active loop. % \begin{macrocode} \cs_new:Npn \@@_end_loop_other:w \s_@@_tail - \@@_split_active:w ##1 \s_@@_nil - \s_@@_mark \@@_split_active_auxi:w + \@@_split_active:w + \s_@@_mark \s_@@_tail + \s_@@_nil \s_@@_mark + \@@_split_active_auxi:w #2 \s_@@_mark \@@_clean_up_active:w - \s_@@_stop - ##2 ##3 - \@@_loop_other:NNw ##4 \s_@@_mark - { } + { \@@_loop_active:nnw } \cs_new:Npn \@@_end_loop_active:w \s_@@_tail - \@@_loop_other:NNw ##1 , \s_@@_tail , - \@@_loop_active:NNw ##2 \s_@@_mark + \@@_loop_other:nnw ##1 \s_@@_mark \s_@@_tail , \s_@@_tail , { } % \end{macrocode} % \end{macro} @@ -1226,23 +1269,26 @@ \group_end: % \end{macrocode} % -% \begin{macro}[EXP]{\@@_pair:nnNN, \@@_key:nNN} +% \begin{macro}[EXP]{\@@_pair:nnnn, \@@_key:nn} % These macros will be called on the parsed keys and values of the key--value % list. All arguments are completely trimmed. They test for blank key names -% and call the functions passed to \cs{keyval_parse:NNn} inside of -% \cs{exp_not:n} with the correct arguments. +% and call the functions passed to \cs{keyval_parse:nnn} inside of +% \cs{exp_not:n} with the correct arguments. Afterwards they insert the next +% iteration of the other loop. % \begin{macrocode} -\cs_new:Npn \@@_pair:nnNN #1 #2 #3 #4 +\cs_new:Npn \@@_pair:nnnn #1 #2 #3 #4 { \@@_if_blank:w \s_@@_mark #2 \s_@@_nil \s_@@_stop \@@_blank_key_error:w \s_@@_mark \s_@@_stop \exp_not:n { #4 { #2 } { #1 } } + \@@_loop_other:nnw {#3} {#4} } -\cs_new:Npn \@@_key:nNN #1 #2 #3 +\cs_new:Npn \@@_key:nn #1 #2 { \@@_if_blank:w \s_@@_mark #1 \s_@@_nil \s_@@_stop \@@_blank_key_error:w \s_@@_mark \s_@@_stop \exp_not:n { #2 { #1 } } + \@@_loop_other:nnw {#2} } % \end{macrocode} % \end{macro} @@ -1263,7 +1309,8 @@ % These macros will be called if the tests above didn't gobble them, they % execute the branching. % \begin{macrocode} -\cs_new:Npn \@@_blank_true:w \s_@@_mark \s_@@_stop \use:n #1 #2 #3 { } +\cs_new:Npn \@@_blank_true:w \s_@@_mark \s_@@_stop \@@_trim:nN #1 \@@_key:nn + { \@@_loop_other:nnw } \cs_new:Npn \@@_blank_key_error:w \s_@@_mark \s_@@_stop \exp_not:n #1 { \__kernel_msg_expandable_error:nn @@ -1303,7 +1350,6 @@ \@@_trim_auxiii:w #1 \s_@@_nil \@@_trim_auxiv:w - \s_@@_stop } \cs_new:Npn \@@_trim_auxi:w ##1 \s_@@_mark #1 ##2 \s_@@_mark ##3 { @@ -1327,8 +1373,11 @@ % \end{macrocode} % This is the one macro which differs from the original definition. % \begin{macrocode} - \cs_new:Npn \@@_trim_auxiv:w \s_@@_mark ##1 \s_@@_nil ##2 \s_@@_stop ##3 - { ##3 { ##1 } } + \cs_new:Npn \@@_trim_auxiv:w + \s_@@_mark ##1 \s_@@_nil + \@@_trim_auxiii:w \s_@@_nil \@@_trim_auxiii:w + ##2 + { ##2 { ##1 } } } \@@_tmp:n { ~ } \group_end: diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx index 257b01f455..6bf78a7c4c 100644 --- a/macros/latex/contrib/l3kernel/l3legacy.dtx +++ b/macros/latex/contrib/l3kernel/l3legacy.dtx @@ -2,7 +2,7 @@ % %% File: l3legacy.dtx % -% Copyright (C) 2019,2020 The LaTeX3 Project +% Copyright (C) 2019-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx index d8456d8cb0..80b3d85591 100644 --- a/macros/latex/contrib/l3kernel/l3luatex.dtx +++ b/macros/latex/contrib/l3kernel/l3luatex.dtx @@ -2,7 +2,7 @@ % %% File: l3luatex.dtx % -% Copyright (C) 2010-2020 The LaTeX3 Project +% Copyright (C) 2010-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx index 19a89cf03f..6e2ff77f36 100644 --- a/macros/latex/contrib/l3kernel/l3msg.dtx +++ b/macros/latex/contrib/l3kernel/l3msg.dtx @@ -2,7 +2,7 @@ % %% File: l3msg.dtx % -% Copyright (C) 2009-2020 The LaTeX3 Project +% Copyright (C) 2009-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx index 45e4f74f1c..24a3fad804 100644 --- a/macros/latex/contrib/l3kernel/l3names.dtx +++ b/macros/latex/contrib/l3kernel/l3names.dtx @@ -2,7 +2,7 @@ % %% File: l3names.dtx % -% Copyright (C) 1990-2020 The LaTeX3 Project +% Copyright (C) 1990-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf Binary files differindex 5d39e93074..107af7a97d 100644 --- a/macros/latex/contrib/l3kernel/l3news.pdf +++ b/macros/latex/contrib/l3kernel/l3news.pdf diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf Binary files differindex 2e8b35dc52..36b8943235 100644 --- a/macros/latex/contrib/l3kernel/l3news01.pdf +++ b/macros/latex/contrib/l3kernel/l3news01.pdf diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf Binary files differindex b9d2926fd4..0e39a68409 100644 --- a/macros/latex/contrib/l3kernel/l3news02.pdf +++ b/macros/latex/contrib/l3kernel/l3news02.pdf diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf Binary files differindex 068def0bfc..c48bc3a25f 100644 --- a/macros/latex/contrib/l3kernel/l3news03.pdf +++ b/macros/latex/contrib/l3kernel/l3news03.pdf diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf Binary files differindex dbc31a5fda..98d34ef070 100644 --- a/macros/latex/contrib/l3kernel/l3news04.pdf +++ b/macros/latex/contrib/l3kernel/l3news04.pdf diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf Binary files differindex 8730edbf01..71958e1c4b 100644 --- a/macros/latex/contrib/l3kernel/l3news05.pdf +++ b/macros/latex/contrib/l3kernel/l3news05.pdf diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf Binary files differindex d61db5f17f..bdec3b54d4 100644 --- a/macros/latex/contrib/l3kernel/l3news06.pdf +++ b/macros/latex/contrib/l3kernel/l3news06.pdf diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf Binary files differindex 226e5aae4f..6d8daca1e3 100644 --- a/macros/latex/contrib/l3kernel/l3news07.pdf +++ b/macros/latex/contrib/l3kernel/l3news07.pdf diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf Binary files differindex d44db337be..c17dbd5563 100644 --- a/macros/latex/contrib/l3kernel/l3news08.pdf +++ b/macros/latex/contrib/l3kernel/l3news08.pdf diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf Binary files differindex 0d792547fa..2f102b2c54 100644 --- a/macros/latex/contrib/l3kernel/l3news09.pdf +++ b/macros/latex/contrib/l3kernel/l3news09.pdf diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf Binary files differindex 26130e3f1f..3697b42045 100644 --- a/macros/latex/contrib/l3kernel/l3news10.pdf +++ b/macros/latex/contrib/l3kernel/l3news10.pdf diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf Binary files differindex e9c62ffafb..637c1df8f0 100644 --- a/macros/latex/contrib/l3kernel/l3news11.pdf +++ b/macros/latex/contrib/l3kernel/l3news11.pdf diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf Binary files differindex 6ba240b059..7d690fd463 100644 --- a/macros/latex/contrib/l3kernel/l3news12.pdf +++ b/macros/latex/contrib/l3kernel/l3news12.pdf diff --git a/macros/latex/contrib/l3kernel/l3prefixes.csv b/macros/latex/contrib/l3kernel/l3prefixes.csv index 46ce3a046b..47a2abf9e0 100644 --- a/macros/latex/contrib/l3kernel/l3prefixes.csv +++ b/macros/latex/contrib/l3kernel/l3prefixes.csv @@ -164,6 +164,7 @@ qrbill,qrbill,Marei Peischl,https://github.com/peiTeX/qrbill,https://github.com/ quark,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, randomwalk,randomwalk,Bruno Le Floch,https://github.com/blefloch/latex-randomwalk,https://github.com/blefloch/latex-randomwalk.git,https://github.com/blefloch/latex-randomwalk/issues,2013-03-16,2015-09-22, recursion,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, +ref,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2020-12-24,2020-12-24, regex,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2018-04-06, reverse,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-28,2012-09-28, right,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, @@ -175,6 +176,7 @@ sdaps,sdaps,Benjamin Berg,https://sdaps.org,https://github.com/sdaps/sdaps-class seq,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, shipout,ltshipout,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex2e.git,https://github.com/latex3/latex2e/issues,2020-10-01,2020-10-01, siunitx,siunitx,Joseph Wright,https://github.com/josephwright/siunitx,https://github.com/josephwright/siunitx.git,https://github.com/josephwright/siunitx/issues,2012-11-04,2012-11-04, +skel,skeldoc,Magnus Lie Hetland,https://github.com/mlhetland/skeldoc.sty,https://github.com/mlhetland/skeldoc.sty.git,https://github.com/mlhetland/skeldoc.sty/issues,2021-01-04,2021-01-04, skip,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, sort,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2017-02-13, space,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf Binary files differindex 6bf8a501e9..a71383c327 100644 --- a/macros/latex/contrib/l3kernel/l3prefixes.pdf +++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/contrib/l3kernel/l3prg.dtx index 88cec672de..539bb5489b 100644 --- a/macros/latex/contrib/l3kernel/l3prg.dtx +++ b/macros/latex/contrib/l3kernel/l3prg.dtx @@ -2,7 +2,7 @@ % %% File: l3prg.dtx % -% Copyright (C) 2005-2020 The LaTeX3 Project +% Copyright (C) 2005-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx index 36a8be3938..ea5d85a3fa 100644 --- a/macros/latex/contrib/l3kernel/l3prop.dtx +++ b/macros/latex/contrib/l3kernel/l3prop.dtx @@ -2,7 +2,7 @@ % %% File: l3prop.dtx % -% Copyright (C) 1990-2020 The LaTeX3 Project +% Copyright (C) 1990-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx index 427244ce5d..17348c29ee 100644 --- a/macros/latex/contrib/l3kernel/l3quark.dtx +++ b/macros/latex/contrib/l3kernel/l3quark.dtx @@ -2,7 +2,7 @@ % %% File: l3quark.dtx % -% Copyright (C) 1990-2020 The LaTeX3 Project +% Copyright (C) 1990-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx index 85e9cf12b9..9d52a75857 100644 --- a/macros/latex/contrib/l3kernel/l3regex.dtx +++ b/macros/latex/contrib/l3kernel/l3regex.dtx @@ -2,7 +2,7 @@ % %% File: l3regex.dtx % -% Copyright (C) 2011-2020 The LaTeX3 Project +% Copyright (C) 2011-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx index 4b9905e3bb..a7c22d7331 100644 --- a/macros/latex/contrib/l3kernel/l3seq.dtx +++ b/macros/latex/contrib/l3kernel/l3seq.dtx @@ -2,7 +2,7 @@ % %% File: l3seq.dtx % -% Copyright (C) 1990-2020 The LaTeX3 Project +% Copyright (C) 1990-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx index e6750a998f..13d88972bc 100644 --- a/macros/latex/contrib/l3kernel/l3skip.dtx +++ b/macros/latex/contrib/l3kernel/l3skip.dtx @@ -3,7 +3,7 @@ %% File: l3skip.dtx % % Copyright (C) 2004-2011 Frank Mittelbach, The LaTeX3 Project -% (C) 2012-2020 The LaTeX3 Project +% (C) 2012-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx index 47e12e7466..a4fcbcfe6b 100644 --- a/macros/latex/contrib/l3kernel/l3sort.dtx +++ b/macros/latex/contrib/l3kernel/l3sort.dtx @@ -2,7 +2,7 @@ % %% File l3sort.dtx % -% Copyright (C) 2012-2020 The LaTeX3 Project +% Copyright (C) 2012-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx index 8c540d7e07..66c23b73ad 100644 --- a/macros/latex/contrib/l3kernel/l3str-convert.dtx +++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx @@ -2,7 +2,7 @@ % %% File: l3str-convert.dtx % -% Copyright (C) 2013-2020 The LaTeX3 Project +% Copyright (C) 2013-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx index 3152e7dae7..bbe072d2a0 100644 --- a/macros/latex/contrib/l3kernel/l3str.dtx +++ b/macros/latex/contrib/l3kernel/l3str.dtx @@ -2,7 +2,7 @@ % %% File: l3str.dtx % -% Copyright (C) 2011-2020 The LaTeX3 Project +% Copyright (C) 2011-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf Binary files differindex 3538053a0b..81ae7f0b4e 100644 --- a/macros/latex/contrib/l3kernel/l3styleguide.pdf +++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf diff --git a/macros/latex/contrib/l3kernel/l3styleguide.tex b/macros/latex/contrib/l3kernel/l3styleguide.tex index ac90e607df..c5013154a3 100644 --- a/macros/latex/contrib/l3kernel/l3styleguide.tex +++ b/macros/latex/contrib/l3kernel/l3styleguide.tex @@ -2,7 +2,7 @@ File: l3styleguide.tex -Copyright (C) 2011,2012,2014-2020 The LaTeX3 Project +Copyright (C) 2011,2012,2014-2021 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2020-12-07} +\date{Released 2021-01-09} \begin{document} diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf Binary files differindex d19e3d7bb4..9bf1317663 100644 --- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf +++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.tex b/macros/latex/contrib/l3kernel/l3syntax-changes.tex index 7555222005..3ae6759ea5 100644 --- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex +++ b/macros/latex/contrib/l3kernel/l3syntax-changes.tex @@ -2,7 +2,7 @@ File: l3syntax-changes.tex -Copyright (C) 2011,2012,2017-2020 The LaTeX3 Project +Copyright (C) 2011,2012,2017-2021 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2020-12-07} +\date{Released 2021-01-09} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx index 9b50d08962..30a86af7d8 100644 --- a/macros/latex/contrib/l3kernel/l3sys.dtx +++ b/macros/latex/contrib/l3kernel/l3sys.dtx @@ -2,7 +2,7 @@ % %% File: l3sys.dtx % -% Copyright (C) 2015-2020 The LaTeX3 Project +% Copyright (C) 2015-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % @@ -975,10 +975,14 @@ end \__kernel_tl_gset:Nx \g_@@_backend_tl { \sys_if_engine_xetex:TF - { xdvipdfmx } + { xetex } { \sys_if_output_pdf:TF - { pdfmode } + { + \sys_if_engine_pdftex:TF + { pdftex } + { luatex } + } { dvips } } } diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf Binary files differindex 1e22a89464..8b35fa230c 100644 --- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf +++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.tex b/macros/latex/contrib/l3kernel/l3term-glossary.tex index bf2967e713..88f1bc395c 100644 --- a/macros/latex/contrib/l3kernel/l3term-glossary.tex +++ b/macros/latex/contrib/l3kernel/l3term-glossary.tex @@ -2,7 +2,7 @@ File: l3term-glossary.tex -Copyright (C) 2018-2020 The LaTeX3 Project +Copyright (C) 2018-2021 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2020-12-07} +\date{Released 2021-01-09} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx index 4d94fb2b78..d1415b5a8c 100644 --- a/macros/latex/contrib/l3kernel/l3text-case.dtx +++ b/macros/latex/contrib/l3kernel/l3text-case.dtx @@ -2,7 +2,7 @@ % %% File: l3text-case.dtx % -% Copyright (C) 2020 The LaTeX3 Project +% Copyright (C) 2020,2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx index 0166cc20f6..0241a11e60 100644 --- a/macros/latex/contrib/l3kernel/l3text-purify.dtx +++ b/macros/latex/contrib/l3kernel/l3text-purify.dtx @@ -2,7 +2,7 @@ % %% File: l3text-purify.dtx % -% Copyright (C) 2020 The LaTeX3 Project +% Copyright (C) 2020,2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % @@ -94,7 +94,8 @@ % \begin{macro}[EXP]{\@@_purify_math_cmd:Nn} % \begin{macro}[EXP]{\@@_purify_replace:N} % \begin{macro}[EXP]{\@@_purify_replace:n} -% \begin{macro}[EXP]{\@@_purify_expand:N, \@@_purify_protect:N} +% \begin{macro}[EXP]{\@@_purify_expand:N, \@@_purify_protect:N, \@@_purify_encoding:N} +% \begin{macro}[EXP]{\@@_purify_encoding_escape:NN} % As in the other parts of the module, we start off with a standard % \enquote{action} loop, with expansion applied up-front. % \begin{macrocode} @@ -288,15 +289,31 @@ { \str_if_eq:nnTF {#1} { \protect } { \@@_purify_protect:N } + { \@@_purify_encoding:N #1 } + } +\cs_new:Npn \@@_purify_protect:N #1 + { + \@@_if_recursion_tail_stop_do:Nn #1 { \@@_purify_end:w } + \@@_purify_loop:w + } +% \end{macrocode} +% Handle encoding commands, as detailed for expansion. +% \begin{macrocode} +\cs_new:Npn \@@_purify_encoding:N #1 + { + \bool_lazy_or:nnTF + { \cs_if_eq_p:NN #1 \@current@cmd } + { \cs_if_eq_p:NN #1 \@changed@cmd } + { \@@_purify_encoding_escape:NN } { \@@_if_expandable:NTF #1 { \exp_after:wN \@@_purify_loop:w #1 } { \@@_purify_loop:w } } } -\cs_new:Npn \@@_purify_protect:N #1 +\cs_new:Npn \@@_purify_encoding_escape:NN #1#2 { - \@@_if_recursion_tail_stop_do:Nn #1 { \@@_purify_end:w } + \@@_purify_store:n {#1} \@@_purify_loop:w } % \end{macrocode} @@ -323,6 +340,7 @@ % \end{macro} % \end{macro} % \end{macro} +% \end{macro} % % \begin{macro} % { diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx index 38e52aa9db..7dcf87b3de 100644 --- a/macros/latex/contrib/l3kernel/l3text.dtx +++ b/macros/latex/contrib/l3kernel/l3text.dtx @@ -2,7 +2,7 @@ % %% File: l3text.dtx % -% Copyright (C) 2020 The LaTeX3 Project +% Copyright (C) 2020,2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx index 69f73aab0c..30ebe4814b 100644 --- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx +++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx @@ -2,7 +2,7 @@ % %% File: l3tl-analysis.dtx % -% Copyright (C) 2011-2020 The LaTeX3 Project +% Copyright (C) 2011-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx index d335824821..b31fe6e5e9 100644 --- a/macros/latex/contrib/l3kernel/l3tl.dtx +++ b/macros/latex/contrib/l3kernel/l3tl.dtx @@ -2,7 +2,7 @@ % %% File: l3tl.dtx % -% Copyright (C) 1990-2020 The LaTeX3 Project +% Copyright (C) 1990-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx index b28987a858..c01bf675a4 100644 --- a/macros/latex/contrib/l3kernel/l3token.dtx +++ b/macros/latex/contrib/l3kernel/l3token.dtx @@ -2,7 +2,7 @@ % %% File: l3token.dtx % -% Copyright (C) 2005-2020 The LaTeX3 Project +% Copyright (C) 2005-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx index dd28393b47..76384b25a6 100644 --- a/macros/latex/contrib/l3kernel/l3unicode.dtx +++ b/macros/latex/contrib/l3kernel/l3unicode.dtx @@ -2,7 +2,7 @@ % %% File: l3unicode.dtx % -% Copyright (C) 2018-2020 The LaTeX3 Project +% Copyright (C) 2018-2021 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-12-07} +% \date{Released 2021-01-09} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf Binary files differindex 2437a51678..05f9221ca1 100644 --- a/macros/latex/contrib/l3kernel/source3.pdf +++ b/macros/latex/contrib/l3kernel/source3.pdf diff --git a/macros/latex/contrib/l3kernel/source3.tex b/macros/latex/contrib/l3kernel/source3.tex index 00c11e871f..b1349ddcb7 100644 --- a/macros/latex/contrib/l3kernel/source3.tex +++ b/macros/latex/contrib/l3kernel/source3.tex @@ -2,7 +2,7 @@ File: source3.tex -Copyright (C) 1990-2012,2017-2020 The LaTeX3 Project +Copyright (C) 1990-2012,2017-2021 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -53,7 +53,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2020-12-07} +\date{Released 2021-01-09} \pagenumbering{roman} \maketitle diff --git a/macros/latex/contrib/pdfpages/pdfpages.dtx b/macros/latex/contrib/pdfpages/pdfpages.dtx index 3cd8f9cb0f..587b47cb53 100644 --- a/macros/latex/contrib/pdfpages/pdfpages.dtx +++ b/macros/latex/contrib/pdfpages/pdfpages.dtx @@ -2,7 +2,7 @@ % \iffalse % %<*(package,pppdftexdef,ppluatexdef,ppvtexdef,ppxetexdef,ppdvipsdef,ppdvipdfmxdef,ppnulldef)> -%% Copyright (C) 2001-2020 Andreas MATTHIAS +%% Copyright (C) 2001-2021 Andreas MATTHIAS %% %% This work may be distributed and/or modified under the conditions %% of the LaTeX Project Public License, either version 1.3c @@ -27,12 +27,12 @@ %<*dtx> \makeatletter %</dtx> -\def\AM@fileversion{v0.5q} +\def\AM@fileversion{v0.5r} \def\AM@Git@Date@process$#1: #2 #3${\AM@Git@Date@process@i#2\END} \def\AM@Git@Date@process@i#1-#2-#3\END{\def\AM@Git@Date{#1/#2/#3}} \def\AM@Git@SHA@process$#1: #2${\def\AM@Git@SHA{#2}} -\AM@Git@Date@process$Date: 2020-01-28 18:31:23 +0100 $ -\AM@Git@SHA@process$SHA-1: 105b2fdadf38120b838b3393c5cf83a7db30724e $ +\AM@Git@Date@process$Date: 2021-01-09 21:30:43 +0100 $ +\AM@Git@SHA@process$SHA-1: 835dfb0d7e5502acd5c811aa9c00b2e44eae9cbd $ %</!(example1,example2,example3,installer)> % % @@ -84,7 +84,7 @@ % % \GetFileInfo{pdfpages.dtx} % -% \CheckSum{5022} +% \CheckSum{5059} % % \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 @@ -108,6 +108,7 @@ \documentclass{ltxdoc} \usepackage{array} \usepackage{graphicx} +\usepackage{booktabs} \usepackage{cmap} \usepackage{hypdoc} \hypersetup{colorlinks, linkcolor=blue, pdfstartview={Fit}, @@ -515,8 +516,8 @@ % \item[linktodoc] Lets the inserted pages be hyperlinks to the % document from which they were extracted. % Note that the \PDF-Viewer will not find the -% file, if \meta{filename} has not filename -% extension (.pdf). +% file, if filename extension (.pdf) is missing +% in \meta{filename}. % Either `true' or `false' (or no value, which % is equivalent to `true'). \df{linktodoc=false} % \end{description} @@ -1238,6 +1239,28 @@ \newif\ifAM@memoir\AM@memoirfalse \@ifclassloaded{memoir}{\AM@memoirtrue}{} % \end{macrocode} +% Pdfpages calls |\includegraphics| several times to retrieve necessary +% information like width, height, or number of pages without actually +% typesetting the image. Just the final call to |\includegraphics| will +% eventually typeset the image. Packages which hook into +% |\includegraphics| and whish to check whether or not this is the final +% call to |\includegraphics| can do so by using the counter +% |\pdfpages@includegraphics@status|: +% \begin{quotation} +% \begin{tabular}{@{}cl@{}} +% \toprule +% Status & Use of |\includegraphics| ...\\ +% \midrule +% 0 & outside of pdfpages\\ +% 1 & inside of pdfpages: final call\\ +% 2 & inside of pdfpages: non-final call, for internal use\\ +% \bottomrule +% \end{tabular} +% \end{quotation} +% \begin{macrocode} +\newcount\pdfpages@includegraphics@status +\pdfpages@includegraphics@status\z@ +% \end{macrocode} % \subsection{Commands} % Declare macro names and define default values. % \begin{macrocode} @@ -1352,6 +1375,7 @@ % \begin{macrocode} \newcommand*{\includepdf}[2][]{% \begingroup + \global\pdfpages@includegraphics@status\tw@ \AM@pagecnt\@ne \let\AM@threadname\relax \def\AM@tmp{pdfpages} @@ -1410,6 +1434,7 @@ \AM@CheckAtEnd \endgroup \AM@ClearShipoutPicture + \global\pdfpages@includegraphics@status\z@ } % \end{macrocode} % \macro{\includepdfmerge} @@ -1417,6 +1442,7 @@ % \begin{macrocode} \newcommand*{\includepdfmerge}[2][]{% \begingroup + \global\pdfpages@includegraphics@status\tw@ \AM@pagecnt\@ne \let\AM@currentdocname\relax \def\AM@tmp{pdfpages} @@ -1430,6 +1456,7 @@ \AM@CheckAtEnd \endgroup \AM@ClearShipoutPicture + \global\pdfpages@includegraphics@status\z@ } % \end{macrocode} % \macro{\AM@CheckAtEnd} @@ -1936,11 +1963,13 @@ \noexpand\raise \ht\@tempboxa \hbox{\AM@hyper@begin@i}% % \end{macrocode} % \begin{macrocode} + \global\pdfpages@includegraphics@status\@ne \AM@hyper@begin@ii\noexpand\AM@fbox{% \noexpand\AM@ARBug@hook \noexpand\AM@reflectbox{% \expandafter\noexpand\expandafter \includegraphics\AM@opts{\AM@docname}}}% + \global\pdfpages@includegraphics@status\tw@ \AM@hyper@end}}% }% \fi diff --git a/macros/latex/contrib/pdfpages/pdfpages.pdf b/macros/latex/contrib/pdfpages/pdfpages.pdf Binary files differindex 9d03242372..26938f7a4c 100644 --- a/macros/latex/contrib/pdfpages/pdfpages.pdf +++ b/macros/latex/contrib/pdfpages/pdfpages.pdf |