summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/affilauthor/README.txt46
-rw-r--r--macros/latex/contrib/affilauthor/affilauthor-doc.pdfbin0 -> 191233 bytes
-rw-r--r--macros/latex/contrib/affilauthor/affilauthor-doc.tex203
-rw-r--r--macros/latex/contrib/affilauthor/affilauthor.sty224
-rw-r--r--macros/latex/contrib/affilauthor/affiliations_sampleimage.pngbin0 -> 23088 bytes
-rw-r--r--macros/latex/contrib/affilauthor/authorname_sampleimage.pngbin0 -> 37996 bytes
-rw-r--r--macros/latex/contrib/fancyvrb/Changes2
-rw-r--r--macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdfbin171060 -> 170570 bytes
-rw-r--r--macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex42
-rw-r--r--macros/latex/contrib/fancyvrb/latex/fancyvrb.sty4
-rw-r--r--macros/latex/contrib/homework/README.md16
-rw-r--r--macros/latex/contrib/homework/homework.cls2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md7
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/README.md2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty8
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx253
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdfbin965059 -> 965250 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx56
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdfbin706088 -> 706581 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx58
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdfbin588246 -> 606541 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx26
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdfbin515760 -> 516165 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx48
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdfbin558915 -> 559398 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx22
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdfbin542008 -> 542491 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx26
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdfbin544283 -> 544767 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx28
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdfbin537398 -> 537893 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx26
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdfbin594477 -> 594970 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdfbin516622 -> 517104 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx116
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdfbin751045 -> 751518 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx62
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdfbin566776 -> 567485 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx98
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdfbin682682 -> 683358 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx90
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdfbin815036 -> 815504 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdfbin532070 -> 532573 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdfbin427143 -> 427900 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx8
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdfbin590327 -> 590956 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdfbin386566 -> 0 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx89
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdfbin440395 -> 449226 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdfbin463827 -> 464495 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty2
-rw-r--r--macros/latex/contrib/q-and-a/Q-and-A.cls130
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-cn/Q-and-A-demo-cn-content.tex92
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-cn/Q-and-A-demo-cn.pdfbin0 -> 175682 bytes
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-cn/Q-and-A-demo-cn.tex28
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-cn/code/Q-and-A-demo-cn-code-for.py2
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-cn/code/Q-and-A-demo-cn-code-func.py4
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-cn/code/Q-and-A-demo-cn-code-list.py1
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-de/Q-and-A-demo-de-content.tex92
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-de/Q-and-A-demo-de.pdfbin0 -> 52791 bytes
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-de/Q-and-A-demo-de.tex28
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-de/code/Q-and-A-demo-de-code-for.py2
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-de/code/Q-and-A-demo-de-code-func.py4
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-de/code/Q-and-A-demo-de-code-list.py1
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-en/Q-and-A-demo-en-content.tex92
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-en/Q-and-A-demo-en.pdfbin0 -> 49773 bytes
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-en/Q-and-A-demo-en.tex26
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-en/code/Q-and-A-demo-en-code-for.py2
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-en/code/Q-and-A-demo-en-code-func.py4
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-en/code/Q-and-A-demo-en-code-list.py1
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-fr/Q-and-A-demo-fr.pdfbin48110 -> 48816 bytes
-rw-r--r--macros/latex/contrib/q-and-a/demo/lang-fr/Q-and-A-demo-fr.tex2
-rw-r--r--macros/latex/contrib/q-and-a/doc/Q-and-A-doc.pdfbin99039 -> 100627 bytes
-rw-r--r--macros/latex/contrib/q-and-a/doc/Q-and-A-doc.tex20
-rw-r--r--macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-content-result.pdfbin21654 -> 21837 bytes
-rw-r--r--macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-content-result.tex4
-rw-r--r--macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-document.tex5
-rw-r--r--macros/latex/contrib/siunitx/CHANGELOG.md21
-rw-r--r--macros/latex/contrib/siunitx/siunitx-angle.dtx22
-rw-r--r--macros/latex/contrib/siunitx/siunitx-code.pdfbin647636 -> 648032 bytes
-rw-r--r--macros/latex/contrib/siunitx/siunitx-complex.dtx16
-rw-r--r--macros/latex/contrib/siunitx/siunitx-compound.dtx38
-rw-r--r--macros/latex/contrib/siunitx/siunitx-emulation.dtx2
-rw-r--r--macros/latex/contrib/siunitx/siunitx-number.dtx12
-rw-r--r--macros/latex/contrib/siunitx/siunitx-print.dtx16
-rw-r--r--macros/latex/contrib/siunitx/siunitx-quantity.dtx14
-rw-r--r--macros/latex/contrib/siunitx/siunitx-symbol.dtx10
-rw-r--r--macros/latex/contrib/siunitx/siunitx-table.dtx2
-rw-r--r--macros/latex/contrib/siunitx/siunitx-unit.dtx32
-rw-r--r--macros/latex/contrib/siunitx/siunitx.dtx2
-rw-r--r--macros/latex/contrib/siunitx/siunitx.pdfbin705592 -> 705592 bytes
96 files changed, 1690 insertions, 621 deletions
diff --git a/macros/latex/contrib/affilauthor/README.txt b/macros/latex/contrib/affilauthor/README.txt
new file mode 100644
index 0000000000..8d9bdc2f8f
--- /dev/null
+++ b/macros/latex/contrib/affilauthor/README.txt
@@ -0,0 +1,46 @@
+----------------------------------------------------
+ Package: affilauthor
+ Author: Selvam P.
+ Mail: selvamittex@gmail.com
+ Licence: Released under the LaTeX Project Public License v1.3c or later,
+ see http://www.latex-project.org/lppl.txt
+----------------------------------------------------
+
+Customized fields(key-value style) to tag the author and affiliation informations in a structured format. Each field has a specific name within \author and \affil commands similar to bib format. We can customize the styles as per preferences for article.cls class layout. Instead of giving all information(author and affiliation) in single tag, we can split the information in a format of key-value style.
+
+Sample author tag:
+
+\author
+ {
+ name={Author name},
+ mail={author@gmail.com},
+ phone={+111-222-33},
+ affil={af1},
+ note={Greeting to everyone}
+ }
+
+Sample affiliation tag:
+
+\affil
+ {
+ id = {af1},
+ div = {Department of Computer Science},
+ org = {University},
+ street = {1st cross street},
+ country = {India}
+ }
+
+Sample formating tag:
+
+\affilstyle
+ {
+ authfont = {\sf},
+ affilfont = {\sf\small},
+ mailfont = {\tt\small},
+ urlfont = {\tt\small},
+ phonefont = {\tt\small},
+ notefont = {\tt\tiny},
+ notenum = { alpha },
+ authspace = {\baselineskip},
+ affilspace = {\baselineskip}
+ } \ No newline at end of file
diff --git a/macros/latex/contrib/affilauthor/affilauthor-doc.pdf b/macros/latex/contrib/affilauthor/affilauthor-doc.pdf
new file mode 100644
index 0000000000..2c806f8cf0
--- /dev/null
+++ b/macros/latex/contrib/affilauthor/affilauthor-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/affilauthor/affilauthor-doc.tex b/macros/latex/contrib/affilauthor/affilauthor-doc.tex
new file mode 100644
index 0000000000..97c07246c3
--- /dev/null
+++ b/macros/latex/contrib/affilauthor/affilauthor-doc.tex
@@ -0,0 +1,203 @@
+\documentclass{article}
+%\usepackage{affilauthor}
+\usepackage{listings,xcolor}
+\usepackage{graphicx}
+\usepackage[colorlinks]{hyperref}
+\usepackage{makeidx}
+
+\makeindex
+
+
+\lstdefinestyle{mystyle}
+{
+ language=[LaTeX]{TeX},
+ texcsstyle=*\color{blue},
+ basicstyle=\ttfamily,
+ moretexcs={affil,affilstyle},
+ columns=fullflexible
+}
+
+\title{affilauthor\thanks{Package to customize author and affiliations tagging for \TeX\ inputs.}}
+
+\author{Selvam P.\thanks{Suggestions and feedbacks are welcome, please reach me at selvamittex@gmail.com}}
+
+\date{} %% if you don't need date to appear
+
+\begin{document}
+ \maketitle
+
+\section*{Introduction}
+
+{\tt affilauthor} package provides customized fields(key-value style) to tag the author and affiliation informations in a structured format. Each field has a specific name within \textbackslash author\ and \textbackslash affil\ commands similar to bib format. We can customize the styles as per preferences for {\tt article.cls} class layouts.
+
+Instead of giving all information(author and affiliation) in single tag {\textbackslash author\{...\}}, we can split the information in a format of key-value style. It will given control over the elements and later we can do changes/styles by given values. It is very simple package, lot more could be added in further improvements.
+
+\section*{Author name tagging}
+
+Available filed names are listed below and it could be placed any order. Fields are optional, e.g.: If we don't have own/org site then we ignore such fields. Contact informations (mail,phone,url) and note field values will treated as footnote with footer mark.\index{\textbackslash author}
+
+\begin{lstlisting}[style=mystyle]
+\author
+ {
+ name={...},
+ mail={...},
+ phone={...},
+ url={...},
+ affil={...},
+ note={...}
+ }
+\end{lstlisting}
+
+More than one value for a field can be added with separation operators.
+\index{mail}
+\begin{lstlisting}[style=mystyle]
+ mail={mail1@gmail.com,mail2@gmail.com}
+\end{lstlisting}
+
+Required to mention the affiliation ids for determine the affiliations those belongs to author. More than one affiliation can be added by comma separation. ID name could be any format like \textbackslash label. Based on the ID, the affiliation number will be displayed after name and also contacts/notes marker.\index{affil}
+
+\begin{lstlisting}[style=mystyle]
+ affil={af1,af2,af5}
+\end{lstlisting}
+
+\noindent Sample author group output:\index{sample author output}
+
+\noindent\includegraphics[width=\textwidth]{authorname_sampleimage.png}
+
+\noindent Sample Footer note output:\index{sample affiliation output}
+
+\noindent\includegraphics[width=\textwidth]{affiliations_sampleimage.png}
+
+Here, we get appropriate marker to the notes in sequence order and also we can change the format like alphabet or roman.
+
+\section*{Affiliation tagging}
+
+Affiliation related fields are listed below and it could be placed any order. {\tt id} should be a unique label(mandatory field) which is used in author field to get appropriate affiliation number. Other remaining fields are related to respective type of contents, it can be ignored optionally except {\tt id}.\index{\textbackslash affil}
+
+\begin{lstlisting}[style=mystyle]
+\affil
+ {
+ id = {...},
+ div = {...},
+ org = {...},
+ addr = {...},
+ street = {...},
+ landmark = {...},
+ pincode = {...},
+ postbox = {...},
+ city = {...},
+ state = {...},
+ country = {...}
+ }
+\end{lstlisting}
+
+\section*{Formatting style}
+
+It provide options to customize the font shape and size. Available types are listed below. We can directly use any Primitive \TeX\ commands to change the style in value part.\index{\textbackslash affilstyle}
+
+\begin{lstlisting}[style=mystyle]
+\affilstyle
+ {
+ authfont = {...},
+ affilfont = {...},
+ mailfont = {...},
+ urlfont = {...},
+ phonefont = {...},
+ notefont = {...},
+ notenum = { alpha, fnsym, roman },
+ authspace = {...},
+ affilspace = {...}
+ }
+\end{lstlisting}
+
+Suppose, if I want to change mail font size and shape then below option is preferred. Same way we can do other properties as well.\index{mailfont}
+
+\begin{lstlisting}[style=mystyle]
+ \affilstyle{mailfont = {\itshape\small}}
+\end{lstlisting}
+
+To change the note marker either alphabet or roman number below option can be used.
+Here, it is choice options so should be choose of those three values:\index{notenum}
+
+\medskip
+
+{\tt alpha} Alphabet number
+
+{\tt fnsym} Default \TeX\ note sequence
+
+{\tt roman} Roman number
+
+\begin{lstlisting}[style=mystyle]
+ \affilstyle{notenum = {alpha}}
+\end{lstlisting}
+
+\medskip
+
+Adjust the vertical space before author and affiliation.\index{authspace}
+
+\begin{lstlisting}[style=mystyle]
+\affilstyle{authspace = {\baselineskip},
+ affilspace = {\baselineskip}}
+\end{lstlisting}
+
+\bigskip
+
+Add note it, I have defined these for article class which doesn't have such options. So later updates we can add more features and styles.
+
+\section*{Sample Code}
+
+\begin{lstlisting}[style=mystyle]
+\affilstyle[authfont={\sf},
+ mailfont={\tt},
+ affilfont={\it},
+ notenum={fnsym}
+ ]
+
+\author{name={Author1 Name},
+ mail={author1@gmail.com},
+ phone={+111-222-333},
+ url={author1.com},
+ affil={af1,af2},
+ note={Thanks to LaTeX Community}
+ }
+\author{name={Author2 Name},
+ mail={author2@gmail.com},
+ phone={+111-222-333},
+ url={author2.com},
+ affil={af2}
+ }
+\author{name={Author3 Name},
+ mail={author3@gmail.com},
+ url={author3.com},
+ affil={af2},
+ }
+
+\affil{id={af2},
+ div={Department of Computer Science},
+ org={University of London},
+ street={1st block},
+ city={London},
+ country={UK}
+ }
+\affil{id={af1},
+ div={Department of Computer Science},
+ org={Delhi University},
+ city={Delhi},
+ country={India}
+ }
+
+\end{lstlisting}
+
+
+\section*{To do lists}
+
+\begin{itemize}
+ \item Adding customize colour options to differentiation
+ \item More layout styles
+ \item Convert to various formats
+ \item etc....
+\end{itemize}
+
+\printindex
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/affilauthor/affilauthor.sty b/macros/latex/contrib/affilauthor/affilauthor.sty
new file mode 100644
index 0000000000..65fccd556e
--- /dev/null
+++ b/macros/latex/contrib/affilauthor/affilauthor.sty
@@ -0,0 +1,224 @@
+\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+\ProvidesPackage{affilauthor}[2023/11/05 1.0.0]
+
+\RequirePackage{marvosym}
+
+\ExplSyntaxOn
+
+\tl_new:N \l__affauth_tmpa_tl
+\tl_new:N \l__affauth_tmpb_tl
+\int_new:N \l__affauth_tmpa_int
+\int_new:N \l__affauth_tmpb_int
+\bool_new:N \l__affauth_tmpa_bool
+\bool_new:N \l__affauth_tmpb_bool
+\seq_new:N \l__affauth_tmpa_seq
+\seq_new:N \l__affauth_tmpb_seq
+
+\tl_new:N \l__affauth_auth_name_tl
+\tl_new:N \l__affauth_auth_mail_tl
+\tl_new:N \l__affauth_auth_phone_tl
+\tl_new:N \l__affauth_auth_url_tl
+\tl_new:N \l__affauth_auth_note_tl
+\tl_new:N \l__affauth_auth_affil_id_tl
+
+\tl_new:N \l__affauth_font_author_tl
+\tl_new:N \l__affauth_font_affil_tl
+\tl_new:N \l__affauth_font_mail_tl
+\tl_new:N \l__affauth_font_url_tl
+\tl_new:N \l__affauth_font_phone_tl
+\tl_new:N \l__affauth_font_note_tl
+\tl_new:N \l__affauth_font_note_num_tl
+
+\tl_new:N \l__affauth_aff_id_tl
+\tl_new:N \l__affauth_aff_div_tl
+\tl_new:N \l__affauth_aff_org_tl
+\tl_new:N \l__affauth_aff_addr_tl
+\tl_new:N \l__affauth_aff_street_tl
+\tl_new:N \l__affauth_aff_landmark_tl
+\tl_new:N \l__affauth_aff_pincode_tl
+\tl_new:N \l__affauth_aff_postbox_tl
+\tl_new:N \l__affauth_aff_city_tl
+\tl_new:N \l__affauth_aff_state_tl
+\tl_new:N \l__affauth_aff_country_tl
+
+\seq_new:N \l__affauth_author_info_seq
+\prop_new:N \l__affauth_author_id_prop
+\seq_new:N \l__affauth_affil_info_seq
+\int_new:N \l__affauth_author_cnt_int
+\int_new:N \l__affauth_affil_cnt_int
+\int_new:N \l__affauth_author_note_int
+
+\skip_new:N \__affauth_before_affil_skip
+\skip_new:N \__affauth_before_auth_skip
+
+\skip_set:Nn \__affauth_before_affil_skip {2\baselineskip}
+\skip_set:Nn \__affauth_before_auth_skip {0pt}
+
+\keys_define:nn { author-info }
+ {
+ name .tl_set:N = \l__affauth_name_tl,
+ mail .tl_set:N = \l__affauth_auth_mail_tl,
+ url .tl_set:N = \l__affauth_auth_url_tl,
+ phone .tl_set:N = \l__affauth_auth_phone_tl,
+ note .tl_set:N = \l__affauth_auth_note_tl,
+ affil .tl_set:N = \l__affauth_auth_affil_id_tl
+ }
+
+\keys_define:nn { affil-info }
+ {
+ id .tl_set:N = \l__affauth_aff_id_tl,
+ div .tl_set:N = \l__affauth_aff_div_tl,
+ org .tl_set:N = \l__affauth_aff_org_tl,
+ addr .tl_set:N = \l__affauth_aff_addr_tl,
+ street .tl_set:N = \l__affauth_aff_street_tl,
+ landmark .tl_set:N = \l__affauth_aff_landmark_tl,
+ pincode .tl_set:N = \l__affauth_aff_pincode_tl,
+ postbox .tl_set:N = \l__affauth_aff_postbox_tl,
+ city .tl_set:N = \l__affauth_aff_city_tl,
+ state .tl_set:N = \l__affauth_aff_state_tl,
+ country .tl_set:N = \l__affauth_aff_country_tl
+ }
+
+\keys_define:nn { style-format }
+ {
+ authfont .tl_set:N = \l__affauth_font_author_tl,
+ affilfont .tl_set:N = \l__affauth_font_affil_tl,
+ mailfont .tl_set:N = \l__affauth_font_mail_tl,
+ urlfont .tl_set:N = \l__affauth_font_url_tl,
+ phonefont .tl_set:N = \l__affauth_font_phone_tl,
+ notefont .tl_set:N = \l__affauth_font_note_tl,
+ notenum .choices:nn = { alpha, fnsym, roman }
+ {
+ \int_case:nn {\l_keys_choice_int}
+ {
+ {1}{\let\l__affauth_note:n\@alph}
+ {2}{\let\l__affauth_note:n\@fnsymbol}
+ {3}{\let\l__affauth_note:n\@roman}
+ }
+ },
+ authspace. skip_set:N = \__affauth_before_auth_skip,
+ affilspace. skip_set:N = \__affauth_before_affil_skip
+ }
+
+
+\NewDocumentCommand{\affilstyle}{O{}} {\keys_set:nn { style-format } { #1 }}
+
+\cs_set_protected:Nn \__affauth_aff_id:n
+ {
+ \group_begin:
+ \seq_set_split:Nxx \l__affauth_tmpa_seq {,} {#1}
+ \seq_clear:N \l__affauth_tmpb_seq
+ \seq_map_inline:Nn \l__affauth_tmpa_seq
+ {
+ \prop_if_in:NeT \l__affauth_author_id_prop {##1}
+ {
+ \prop_get:NeN \l__affauth_author_id_prop {##1} \l__affauth_tmpb_tl
+ \seq_put_right:NV \l__affauth_tmpb_seq \l__affauth_tmpb_tl
+ }
+ }
+ \seq_sort:Nn \l__affauth_tmpb_seq
+ {
+ \int_compare:nNnTF {##1} < {##2}
+ {\sort_return_same:}{\sort_return_swapped:}
+ }
+ \textsuperscript{\seq_use:Nn \l__affauth_tmpb_seq {,}}
+ \group_end:
+ }
+
+\cs_set:Nn \__affauth_auth_sep:n {}
+
+\cs_set_protected:Nn \__affauth_aff_number:n
+ {
+ \int_compare:nNnT {#1} > {1} {\par}
+ \textsuperscript{#1}\thinspace
+ }
+
+\cs_set_protected:Nn \l__affauth_note:n {\ifcase#1\or *\or
+ **\or***\or****\or\#\or\#\#\or\#\#\#\or\#\#\#\#\or\$\or\$\$\or\$\$\$\or\$\$\$\$
+ \or\dag\or\dag\dag\or\dag\dag\dag\or\dag\dag\dag\dag\or\ddag\or\ddag\ddag\or\ddag\ddag\ddag\or\ddag\ddag\ddag\ddag\fi}
+
+\cs_set_protected:Nn \__affauth_auth_mail:nnnn
+ {
+ \group_begin:
+ \seq_clear:N \l__affauth_tmpa_seq
+ \tl_if_empty:nF {#1} {\seq_put_right:Nn \l__affauth_tmpa_seq {{\l__affauth_font_mail_tl\Letter\thinspace\exp_not:n{#1}}}}
+ \tl_if_empty:nF {#2} {\seq_put_right:Nn \l__affauth_tmpa_seq {{\l__affauth_font_phone_tl\Telefon\thinspace\exp_not:n{#2}}}}
+ \tl_if_empty:nF {#3} {\seq_put_right:Nn \l__affauth_tmpa_seq {{\l__affauth_font_url_tl\Mundus\thinspace\exp_not:n{#3}}}}
+ \seq_if_empty:NF \l__affauth_tmpa_seq
+ {
+ \group_begin:
+ \int_gincr:N \l__affauth_author_note_int
+ \textsuperscript{,\l__affauth_note:n{\l__affauth_author_note_int}}
+ \cs_set:Npn \thefootnote {}
+ \footnotetext[0]{\leftskip-\parindent\l__affauth_note:n{\l__affauth_author_note_int}\thinspace\seq_use:Nn \l__affauth_tmpa_seq {,\space}}
+ \group_end:
+ }
+ \tl_if_empty:nF {#4}
+ {
+ \group_begin:
+ \int_gincr:N \l__affauth_author_note_int
+ \textsuperscript{,\l__affauth_note:n{\l__affauth_author_note_int}}
+ \cs_set:Npn \thefootnote {}
+ \footnotetext[0]{\leftskip-\parindent{\l__affauth_font_note_tl\l__affauth_note:n{\l__affauth_author_note_int}\thinspace\exp_not:n{#4}}}
+ \group_end:
+ }
+ \group_end:
+ }
+
+\cs_set_protected:Npn \author #1
+ {
+ \group_begin:
+ \int_gincr:N \l__affauth_author_cnt_int
+ \keys_set:nn { author-info } { #1 }
+ \seq_gput_right:Ne \l__affauth_author_info_seq
+ {
+ \l__affauth_name_tl
+ \exp_args:NV \__affauth_aff_id:n \l__affauth_auth_affil_id_tl
+ \__affauth_auth_mail:nnnn {\l__affauth_auth_mail_tl} {\l__affauth_auth_phone_tl} {\l__affauth_auth_url_tl} {\l__affauth_auth_note_tl}
+ \exp_args:NV \__affauth_auth_sep:n \l__affauth_author_cnt_int
+ }
+ \group_end:
+ }
+
+\cs_set_protected:Npn \affil #1
+ {
+ \group_begin:
+ \int_gincr:N \l__affauth_affil_cnt_int
+ \keys_set:nn { affil-info } { #1 }
+ \prop_gput:NVV \l__affauth_author_id_prop \l__affauth_aff_id_tl \l__affauth_affil_cnt_int
+ \seq_gput_right:Ne \l__affauth_affil_info_seq
+ {
+ \exp_args:NV \__affauth_aff_number:n \l__affauth_affil_cnt_int
+ \tl_if_empty:NF \l__affauth_aff_div_tl \l__affauth_aff_div_tl
+ \tl_if_empty:NF \l__affauth_aff_org_tl {,\space} \l__affauth_aff_org_tl
+ \tl_if_empty:NF \l__affauth_aff_addr_tl {,\space} \l__affauth_aff_addr_tl
+ \tl_if_empty:NF \l__affauth_aff_street_tl {,\space} \l__affauth_aff_street_tl
+ \tl_if_empty:NF \l__affauth_aff_landmark_tl {,\space} \l__affauth_aff_landmark_tl
+ \tl_if_empty:NF \l__affauth_aff_pincode_tl {,\space} \l__affauth_aff_pincode_tl
+ \tl_if_empty:NF \l__affauth_aff_postbox_tl {,\space} \l__affauth_aff_postbox_tl
+ \tl_if_empty:NF \l__affauth_aff_city_tl {,\space} \l__affauth_aff_city_tl
+ \tl_if_empty:NF \l__affauth_aff_state_tl {,\space} \l__affauth_aff_state_tl
+ \tl_if_empty:NF \l__affauth_aff_country_tl {,\space} \l__affauth_aff_country_tl
+ }
+ \group_end:
+ }
+
+\let\org@maketitle=\maketitle
+\def\maketitle
+ {{\renewenvironment{tabular}[2][]{\begin{center}}
+ {\end{center}}
+ \org@maketitle}
+ }
+
+\AtBeginDocument{
+ \gdef\@author
+ {
+ \group_begin:
+ \vskip\__affauth_before_auth_skip
+ {\l__affauth_font_author_tl\seq_use:Nnnn \l__affauth_author_info_seq {\space and\space}{,\space}{,\space and\space}}
+ \par\vskip\__affauth_before_affil_skip
+ {\l__affauth_font_affil_tl\seq_use:Nn \l__affauth_affil_info_seq {\par}}
+ \group_end:
+ }
+ }
+\ExplSyntaxOff \ No newline at end of file
diff --git a/macros/latex/contrib/affilauthor/affiliations_sampleimage.png b/macros/latex/contrib/affilauthor/affiliations_sampleimage.png
new file mode 100644
index 0000000000..567b5e6995
--- /dev/null
+++ b/macros/latex/contrib/affilauthor/affiliations_sampleimage.png
Binary files differ
diff --git a/macros/latex/contrib/affilauthor/authorname_sampleimage.png b/macros/latex/contrib/affilauthor/authorname_sampleimage.png
new file mode 100644
index 0000000000..7112b166de
--- /dev/null
+++ b/macros/latex/contrib/affilauthor/authorname_sampleimage.png
Binary files differ
diff --git a/macros/latex/contrib/fancyvrb/Changes b/macros/latex/contrib/fancyvrb/Changes
index 542d7326d0..123927ae33 100644
--- a/macros/latex/contrib/fancyvrb/Changes
+++ b/macros/latex/contrib/fancyvrb/Changes
@@ -1,4 +1,6 @@
--- fancyvrb.sty
+4.5b 2023/11/06 - added info to the documentation for
+ the different behaviour in the \LaTeX kernel (hv)
4.5a 2023/01/19 - modified documentation (hv)
4.5 2022/06/06 - added \noniterlineskip for frame=lines (hv)
4.4 2022/06/03 - fix for deleted \@penalty command _before_ top rule(hv)
diff --git a/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf
index 76efb4e4f1..321082c642 100644
--- a/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf
+++ b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex
index ec6dbcdfed..7f7985d8ac 100644
--- a/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex
+++ b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex
@@ -103,8 +103,10 @@ Will Robertson,
Ulrich M. Schwarz,
Thomas Siegel, % \url{siegel@aix520.informatik.uni-leipzig.de},
Clemens Steinke,
+Vladimir Volovich,
and
-Vladimir Volovich. %\url{vvv@vvv.vsu.ru}.
+Yukai Chou
+ %\url{vvv@vvv.vsu.ru}.
\clearpage
\tableofcontents
\clearpage
@@ -770,8 +772,8 @@ With the setting \texttt{lastline=} or \texttt{lastline=0} nothing will be print
\end{optlist}
\begin{SideBySideExample}[gobble=0]
-\begin{Verbatim}[showspaces=true]
- Verbatim line.
+\begin{Verbatim}[showspaces,showtabs]
+Verbatim line .
\end{Verbatim}
\end{SideBySideExample}
@@ -779,9 +781,9 @@ With the setting \texttt{lastline=} or \texttt{lastline=0} nothing will be print
sets \texttt{showspaces=true}:
\begin{SideBySideExample}[gobble=0]
- \begin{Verbatim*}
- Verbatim line.
- \end{Verbatim*}
+\begin{Verbatim*}
+Verbatim line .
+\end{Verbatim*}
\end{SideBySideExample}
There are also some parameters to determine the way tab characters are
@@ -803,6 +805,34 @@ interpreted (using tabs is in fact a rather old-fashioned style of coding):
(\emph{Default:~8}).
\end{optlist}
+\noindent
+\colorbox{black!15}{\parbox{\linewidth}{%
+Pay attention that the behaviour of the environment/command from
+the \LaTeX\ kernel is different. In \LaTeX\ Tabs are printed as visible
+space, but with \texttt{fancyvrb} as spaces or with \texttt{showtabs}
+as visible Tab.}}
+
+\iffalse
+\begin{SideBySideExample}[gobble=0]
+\begin{Verbatim*}
+Verbatim line foo
+\end{Verbatim*}
+\end{SideBySideExample}
+
+
+\begin{SideBySideExample}[gobble=0]
+\begin{verbatim*}
+verbatim line foo
+\end{verbatim*}
+\end{SideBySideExample}
+
+
+\begin{SideBySideExample}[gobble=0]
+\Verb*|Verb line foo|\par
+\verb*|verb line foo|
+\end{SideBySideExample}
+\fi
+
\subsubsection{Space between lines}
\begin{optlist}
diff --git a/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty b/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty
index ad9c0b7bc8..b8b1d8514d 100644
--- a/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty
+++ b/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty
@@ -13,8 +13,8 @@
%% verbatim environments and commands and extensive documentation.
%%
\NeedsTeXFormat{LaTeX2e}
-\def\fileversion{4.5a}
-\def\filedate{2023/01/19}
+\def\fileversion{4.5b}
+\def\filedate{2023/11/06}
\ProvidesPackage{fancyvrb}[\filedate\space \fileversion\space verbatim text (tvz,hv)]
%\message{Style option: `fancyvrb' v\fileversion \space <\filedate> (tvz)}
\csname fancyvrb@loaded\endcsname
diff --git a/macros/latex/contrib/homework/README.md b/macros/latex/contrib/homework/README.md
index 63c8e21806..f423470c23 100644
--- a/macros/latex/contrib/homework/README.md
+++ b/macros/latex/contrib/homework/README.md
@@ -37,7 +37,7 @@ Also, without these fonts installed, the compilation speed might be much slower
## Usage
-> It is recommended that you start by looking at one of the demo documents that suits your need and edit the code there to get your own template.
+> It is recommended that you start by looking at one of the [demo documents](https://github.com/Jinwen-XU/homework/tree/main/demo) that suits your need and edit the code there to get your own template.
> If you don't find what you were expecting, or if you would like some elements to be changed or improved, feel free to post a feature request via [the GitHub issue](https://github.com/Jinwen-XU/homework/issues).
@@ -111,26 +111,36 @@ A typical homework document looks like this:
% If you wish to answer each sub-question of a problem separately...
\begin{problem}[A problem with many sub-questions]
- \begin{enumerate}[itemsep=.5\baselineskip]
+ \begin{enumerate}
\item First question.
+
\begin{solution}
The solution of the first question.
\end{solution}
+
\item Second question.
- \begin{enumerate}[itemsep=.3\baselineskip]
+
+ \begin{enumerate}
\item First sub-question.
+
\begin{solution}
The solution of the first sub-question.
\end{solution}
+
\item Second sub-question.
+
\begin{solution}
The solution of the second sub-question.
\end{solution}
+
\end{enumerate}
+
\item Third question.
+
\begin{solution}
The solution of the third question.
\end{solution}
+
\end{enumerate}
\noQED % Use \noqed or \noQED at the end to suppress the Q.E.D. symbol that marks the end of the current problem.
\end{problem}
diff --git a/macros/latex/contrib/homework/homework.cls b/macros/latex/contrib/homework/homework.cls
index ba1dd459e1..914ff614cf 100644
--- a/macros/latex/contrib/homework/homework.cls
+++ b/macros/latex/contrib/homework/homework.cls
@@ -12,7 +12,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplClass
{homework}
- {2023/10/15} {}
+ {2023/10/15a} {}
{Document class for writing homework}
\keys_define:nn { homework }
diff --git a/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md b/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
index 5474986109..972c49380d 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
+++ b/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
@@ -5,7 +5,12 @@ first release 0.95a, 2021-02-23 will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
this project uses date-based 'snapshot' version identifiers.
-
+## [2023-11-05]
+Version: 2023-11-05, 0.96b
+
+- switch to e-type
+- correct fontspec firstaid and spotcolor support
+
## [2023-10-09]
Version: 2023-10-09, 0.96a
diff --git a/macros/latex/contrib/pdfmanagement-testphase/README.md b/macros/latex/contrib/pdfmanagement-testphase/README.md
index 770ec9e2b5..35361e0a49 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/README.md
+++ b/macros/latex/contrib/pdfmanagement-testphase/README.md
@@ -1,6 +1,6 @@
# LaTeX PDF management testphase bundle
-Version: 0.96a, 2023-10-09
+Version: 0.96b, 2023-11-05
This package is used during a test phase to load the new PDF management code
of LaTeX.
diff --git a/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
index b04fa5aa9b..ac0a4e5f86 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
@@ -24,7 +24,7 @@
%% This file has the LPPL maintenance status "maintained".
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{color-ltx}[2023-10-09 v0.96a
+\ProvidesPackage{color-ltx}[2023-11-05 v0.96b
Standard LaTeX Color (patched for l3color, part of pdfmanagement-testphase, original version 2022/01/06 v1.3d) (DPC)]
\edef\Gin@codes{%
\catcode`\noexpand\^^A\the\catcode`\^^A\relax
diff --git a/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
index 6af2ce080f..8e03acf112 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
@@ -19,7 +19,7 @@
%
% for those people who are interested.
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2023-10-09}{0.96a}
+\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2023-11-05}{0.96b}
{temporay patches to for the colorspace package to test pdfresource management ... UF}
% colorspace can define more models, that l3color can't yet handle.
@@ -79,11 +79,11 @@
\seq_set_split:NnV \l_tmpa_seq {~}\l_tmpa_str
\seq_get_left:NN\l_tmpa_seq\l_tmpa_str
%remove spaces
- \exp_args:NNx
+ \exp_args:NNe
\str_replace_all:Nnn\l_tmpa_str {\c_hash_str20}{~}
%remove slash
- \str_set:Nx\l_tmpa_str{\str_tail:N\l_tmpa_str}
- \pdfmanagement_add:nex
+ \str_set:Ne\l_tmpa_str{\str_tail:N\l_tmpa_str}
+ \pdfmanagement_add:nee
{Page/Resources/ColorSpace}{\l_tmpa_str}{\seq_item:Nn\l_tmpa_seq{2}~0~R}
}
\spc@csall
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
index dc722effbe..47b957c2ec 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
@@ -82,7 +82,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
% \begin{documentation}
@@ -956,7 +956,7 @@
%<@@=hyp>
% \end{macrocode}
% \begin{macrocode}
-\ProvidesFile{hgeneric-testphase.def}[2023-10-09 v0.96a %
+\ProvidesFile{hgeneric-testphase.def}[2023-11-05 v0.96b %
generic Hyperref driver for the LaTeX PDF management testphase bundle]
\RequirePackage{etoolbox} %why?
@@ -1213,7 +1213,7 @@
% \begin{macrocode}
% TODO should go at some time ...
% \kv@set@family@handler{Hyp}
-% { \msg_warning:nnx {hyp}{unknown-key-to-Hyp}{#1} }
+% { \msg_warning:nne {hyp}{unknown-key-to-Hyp}{#1} }
\cs_set_protected:Npn \hypersetup #1
{
%\kvsetkeys{Hyp} {#1}
@@ -1224,7 +1224,7 @@
{
unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-key }
+ \msg_warning:nneee { hyp } { unknown-key }
{ hyp~/~setup }{ \l_keys_key_str } { #1 }
}
}
@@ -1294,7 +1294,7 @@
}
,afrelationship .code:n =
{
- \pdfdict_put:nnx
+ \pdfdict_put:nne
{ l_pdffile/Filespec}{AFRelationship}{ \pdf_name_from_unicode_e:n {#1}}
}
@@ -1454,7 +1454,7 @@
%\tl_set:cn {@#1}{#2}
\AddToDocumentProperties[hyperref]{#1}{#2}
}
-\cs_generate_variant:Nn \@@_store_metadata:nn {xn,nx,xx}
+\cs_generate_variant:Nn \@@_store_metadata:nn {en,ne,ee}
% \end{macrocode}
% \subsection{citecolor}
% cite is a link context. So we define a hook, and the keys in terms of this hook.
@@ -1878,7 +1878,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_text_purify:nN #1 #2 %#1 input, #2 str command
{
- \str_set:Nx #2 {\text_purify:n { #1 } }
+ \str_set:Ne #2 {\text_purify:n { #1 } }
}
% \end{macrocode}
% \end{macro}
@@ -1936,7 +1936,7 @@
\group_end:
\str_set_eq:NN #3 \g_@@_text_tmpa_str
}
-\cs_generate_variant:Nn \@@_text_pdfstring:nnN {xnN,onN,xoN,ooN,noN}
+\cs_generate_variant:Nn \@@_text_pdfstring:nnN {enN,onN,eoN,ooN,noN}
% \end{macrocode}
% \end{macro}
% !!! temporary until all instances are gone
@@ -1947,7 +1947,7 @@
%^^A \char_set_catcode_active:N \~
% \begin{macrocode}
\cs_new_protected:Npn\Hy@pstringdef #1 #2
- { \@@_text_pdfstring:xnN {#2} {utf8/string-raw}#1 }
+ { \@@_text_pdfstring:enN {#2} {utf8/string-raw}#1 }
% \end{macrocode}
%
% This is a special version for info keys:
@@ -2009,7 +2009,7 @@
% \begin{macrocode}
\cs_new_protected:Npn\@@_PageLabels_gpush:
{
- \pdfmanagement_add:nnx {Catalog} {PageLabels}{<</Nums[\HyPL@Labels]>>}
+ \pdfmanagement_add:nne {Catalog} {PageLabels}{<</Nums[\HyPL@Labels]>>}
}
\def\Hy@PutCatalog #1 {}
@@ -2019,7 +2019,7 @@
{
\cs_set_protected:Npn \HyPL@StorePageLabel #1
{
- \tl_gput_right:Nx \HyPL@Labels { \the\Hy@abspage<<#1>> }
+ \tl_gput_right:Ne \HyPL@Labels { \the\Hy@abspage<<#1>> }
\@@_PageLabels_gpush:
}
}
@@ -2062,7 +2062,7 @@
\mode_if_horizontal:T { \@savsf\spacefactor }
\Hy@SaveLastskip %defined in hyperref
\Hy@VerboseAnchor{#1} %defined in hyperref, for debugging
- \@@_text_pdfstring:xoN
+ \@@_text_pdfstring:eoN
{ \HyperDestNameFilter{#1} }
{ \l_@@_text_enc_dest_tl }
\l_@@_tmpa_tl
@@ -2144,14 +2144,14 @@
\protected@edef \l_@@_dest_name_tmpa_tl { #1 }
\tl_if_empty:NTF \l_@@_dest_name_tmpa_tl
{
- \msg_warning:nnx
+ \msg_warning:nne
{ hyp }
{ empty-destination-name }
{ \c_@@_dest_undefined_tl }
\tl_set_eq:NN \l_@@_dest_name_tmpa_tl \c_@@_dest_undefined_tl
}
{
- \@@_text_pdfstring:xoN
+ \@@_text_pdfstring:eoN
{ \exp_args:No \HyperDestNameFilter { \l_@@_dest_name_tmpa_tl } }
{ \l_@@_text_enc_dest_tl }
\l_@@_dest_name_tmpa_tl
@@ -2257,7 +2257,7 @@
\bool_if:NTF \l_@@_annot_URI_bool
{
\group_begin:
- \@@_text_pdfstring:xoN
+ \@@_text_pdfstring:eoN
{ #2}
{ \l_@@_text_enc_uri_print_tl }
\l_@@_uri_tmpa_tl
@@ -2270,8 +2270,8 @@
\cs_set_eq:NN \% \c_percent_str
\Hy@safe@activestrue
\mode_leave_vertical:
- \pdfannot_dict_put:nnx {link/URI}{A}{<<\pdfdict_use:n {l_hyp/annot/A/URI}>>}
- \pdfannot_link:nxn { URI }
+ \pdfannot_dict_put:nne {link/URI}{A}{<<\pdfdict_use:n {l_hyp/annot/A/URI}>>}
+ \pdfannot_link:nen { URI }
{
}
{
@@ -2292,24 +2292,23 @@
\pdfdict_put:nnn {l_hyp/annot/A/GoToR}{Type}{/Action}
\pdfdict_put:nnn {l_hyp/annot/A/GoToR}{S}{/GoToR}
-
+\cs_generate_variant:Nn \pdffile_embed_file:nnn {noe}
\cs_new_protected:Npn \hyper@linkfile #1 #2 #3 % link text, filename, destname
{
\bool_if:NTF \l_@@_annot_GoToR_bool
{
\group_begin:
- \tl_set:Nx \l_@@_filename_tmpa_tl { \text_expand:n { #2 } }
- \exp_args:Nx
+ \tl_set:Ne \l_@@_filename_tmpa_tl { \text_expand:n { #2 } }
+ \exp_args:Ne
\pdf_object_if_exist:nF { @@_file_\tl_to_str:N \l_@@_filename_tmpa_tl }
{
- \pdfdict_put:nnx { l_pdffile/Filespec}{Subtype}{\pdf_name_from_unicode_e:n {application/pdf}}
- \exp_args:Nnox
- \pdffile_embed_file:nnn
+ \pdfdict_put:nne { l_pdffile/Filespec}{Subtype}{\pdf_name_from_unicode_e:n {application/pdf}}
+ \pdffile_embed_file:noe
{}
{\l_@@_filename_tmpa_tl }
{@@_file_\tl_to_str:N \l_@@_filename_tmpa_tl }
}
- \pdfdict_put:nnx
+ \pdfdict_put:nne
{l_hyp/annot/A/GoToR}
{F}
{\pdf_object_ref:e {@@_file_\tl_to_str:N \l_@@_filename_tmpa_tl}}
@@ -2319,7 +2318,7 @@
\l_@@_dest_name_tmpa_tl
\tl_if_blank:eTF {#3}
{
- \pdfdict_put:nnx {l_hyp/annot/A/GoToR}{D}
+ \pdfdict_put:nne {l_hyp/annot/A/GoToR}{D}
{
[
\int_eval:n
@@ -2337,9 +2336,9 @@
% object reference in the dict
% \url{https://chat.stackexchange.com/transcript/message/57361080#57361080}
% \begin{macrocode}
- \pdf_object_unnamed_write:nx{dict}{\pdfdict_use:n {l_hyp/annot/A/GoToR}}
- \pdfannot_dict_put:nnx {link/GoToR}{A}{\pdf_object_ref_last:}
- \pdfannot_link:nxn %expansion??
+ \pdf_object_unnamed_write:ne{dict}{\pdfdict_use:n {l_hyp/annot/A/GoToR}}
+ \pdfannot_dict_put:nne {link/GoToR}{A}{\pdf_object_ref_last:}
+ \pdfannot_link:nnn %expansion??
{ GoToR }
{
}
@@ -2386,12 +2385,14 @@
\pdfdict_remove:nn {l_hyp/annot/A/Launch}{Win}
}
{
- \pdfdict_put:nnx {l_hyp/annot/A/Launch}{Win}
+ \pdfdict_put:nne
+ {l_hyp/annot/A/Launch}
+ {Win}
{<</P \l_@@_para_tmpa_tl /F \l_@@_filename_tmpa_tl >>}
}
\mode_leave_vertical:
- \pdfannot_dict_put:nnx {link/Launch}{A}{<<\pdfdict_use:n {l_hyp/annot/A/Launch}>>}
- \pdfannot_link:nxn
+ \pdfannot_dict_put:nne {link/Launch}{A}{<<\pdfdict_use:n {l_hyp/annot/A/Launch}>>}
+ \pdfannot_link:nen
{ Launch }
{
% /A
@@ -2412,9 +2413,9 @@
% The actually command used by \pkg{hyperref} is \cs{@hyper@launch} which uses a delimited
% argument, because of the color the definition is a bit convoluted.
% \begin{macrocode}
-\use:x
+\use:e
{ % filename, anchor text, linkname
- \cs_set_protected:Npn \exp_not:N \@hyper@launch run \c_colon_str ##1 \exp_not:N \\ ##2 ##3
+ \cs_set_protected:Npn \exp_not:N \@hyper@launch run \c_colon_str #1 \exp_not:N \\ #2 #3
}
{
\hyper@linklaunch {#1}{#2}{#3}
@@ -2436,10 +2437,10 @@
\pdfmeta_standard_verify:nnTF {named_actions}{#1}
{
\mode_leave_vertical:
- \pdfdict_put:nnx {l_hyp/annot/A/Named}{N}
+ \pdfdict_put:nne {l_hyp/annot/A/Named}{N}
{\pdf_name_from_unicode_e:n{#1}}
- \pdfannot_dict_put:nnx {link/Named}{A}{<<\pdfdict_use:n {l_hyp/annot/A/Named}>>}
- \pdfannot_link:nxn { Named }
+ \pdfannot_dict_put:nne {link/Named}{A}{<<\pdfdict_use:n {l_hyp/annot/A/Named}>>}
+ \pdfannot_link:nnn { Named }
{
% /A
% <<
@@ -2648,7 +2649,7 @@
{hyp/color/#1border}
\g_@@_bordercolormodel_str
\l_@@_tmpa_tl
- \pdfannot_dict_put:nnx
+ \pdfannot_dict_put:nne
{link/#2}
{ C }
{ [\l_@@_tmpa_tl] }
@@ -2791,7 +2792,7 @@
\pdf_object_new:n { @@/OCG/Print }
\pdf_object_new:n { @@/OCG/config }
\pdf_object_new:n { @@/OCG/refarray }
- \pdf_object_write:nnx { @@/OCG/refarray } { array }
+ \pdf_object_write:nne { @@/OCG/refarray } { array }
{
\pdf_object_ref:n { @@/OCG/View }
\c_space_tl
@@ -2817,9 +2818,9 @@
/View <</ViewState/OFF>>~
>>
}
- \pdfmanagement_add:nnx { Catalog / OCProperties }{OCGs }{ \pdf_object_ref:n {@@/OCG/View} }
- \pdfmanagement_add:nnx { Catalog / OCProperties }{OCGs }{ \pdf_object_ref:n {@@/OCG/Print} }
- \pdf_object_write:nnx { @@/OCG/config } { dict }
+ \pdfmanagement_add:nne { Catalog / OCProperties }{OCGs }{ \pdf_object_ref:n {@@/OCG/View} }
+ \pdfmanagement_add:nne { Catalog / OCProperties }{OCGs }{ \pdf_object_ref:n {@@/OCG/Print} }
+ \pdf_object_write:nne { @@/OCG/config } { dict }
{
/OFF[\pdf_object_ref:n { @@/OCG/Print }]
/AS[
@@ -2840,7 +2841,7 @@
>>
]
}
- \pdfmanagement_add:nnx { Catalog / OCProperties }{ D }{ \pdf_object_ref:n { @@/OCG/config} }
+ \pdfmanagement_add:nne { Catalog / OCProperties }{ D }{ \pdf_object_ref:n { @@/OCG/config} }
\cs_gset:Npn \@@_ocg_init: {}
}
% \end{macrocode}
@@ -2920,7 +2921,7 @@
{
,_ocgcolorlinks .code:n =
{
- \msg_warning:nnxx
+ \msg_warning:nnee
{ hyp }
{ ignore-deprecated-or-unknown-option-in-pdf-version }
{ ocgcolorlinks } { \pdf_version_major:.\pdf_version_minor: }
@@ -2961,7 +2962,7 @@
{
,ocgcolor#1 .code:n=
{
- \msg_warning:nnxx
+ \msg_warning:nnee
{ hyp }
{ ignore-deprecated-or-unknown-option-in-pdf-version }
{ ocgcolor#1 }
@@ -2997,7 +2998,7 @@
}
,#1highlight / unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-choice+empty }
+ \msg_warning:nneee { hyp } { unknown-choice+empty }
{ pdfhighlight }
{ /I~(inverse), /N~(no effect), /O~(outline), /P~(inset) }
{ \exp_not:n {##1} }
@@ -3031,7 +3032,7 @@
,pdfhighlight .initial:n = {/I},
,pdfhighlight / unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-choice+empty }
+ \msg_warning:nneee { hyp } { unknown-choice+empty }
{ pdfhighlight }
{ /I~(inverse), /N~(no effect), /O~(outline), /P~(inset) }
{ \exp_not:n {#1} }
@@ -3158,7 +3159,7 @@
}
,linktoc / unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-choice }
+ \msg_warning:nneee { hyp } { unknown-choice }
{ linktoc }
{ none, section, all, page }
{ \exp_not:n {#1} }
@@ -3195,7 +3196,7 @@
\pdfmanagement_remove:nn {Catalog} { URI }
}
{
- \pdfmanagement_add:nnx {Catalog} { URI }{ <</Base \l_@@_tmpa_tl>> }
+ \pdfmanagement_add:nne {Catalog} { URI }{ <</Base \l_@@_tmpa_tl>> }
}
\@@_store_metadata:nn {baseurl}{#1}
}
@@ -3223,7 +3224,7 @@
}
,pdfcenterwindow / unknown .code:n =
{
- \msg_warning:nnxx { hyp } { no-bool }
+ \msg_warning:nnee { hyp } { no-bool }
{ pdfcenterwindow }
{ \exp_not:n {#1} }
}
@@ -3243,7 +3244,7 @@
}
,pdfdirection / unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-choice+empty }
+ \msg_warning:nneee { hyp } { unknown-choice+empty }
{ pdfdirection }
{ L2R , R2L }
{ \exp_not:n {#1} }
@@ -3267,7 +3268,7 @@
{ PrintDuplex } { /#1 }
}
{
- \msg_warning:nnxx
+ \msg_warning:nnee
{hyp}
{ignore-deprecated-or-unknown-option-in-pdf-version}
{pdfduplex}
@@ -3280,7 +3281,7 @@
}
,pdfduplex / unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-choice+empty }
+ \msg_warning:nneee { hyp } { unknown-choice+empty }
{ pdfduplex }
{ Simplex, DuplexFlipShortEdge, DuplexFlipLongEdge }
{ \exp_not:n {#1} }
@@ -3301,7 +3302,7 @@
,pdffitwindow .default:n = true
,pdffitwindow / unknown .code:n =
{
- \msg_warning:nnxx { hyp } { no-bool }
+ \msg_warning:nnee { hyp } { no-bool }
{ pdffitwindow }
{ \exp_not:n {#1} }
}
@@ -3324,7 +3325,7 @@
,pdfmenubar .default:n = true
,pdfmenubar / unknown .code:n =
{
- \msg_warning:nnxx { hyp } { no-bool }
+ \msg_warning:nnee { hyp } { no-bool }
{ pdfmenubar }
{ \exp_not:n {#1} }
}
@@ -3347,7 +3348,7 @@
,pdfnonfullscreenpagemode .choices:nn =
{ UseNone, UseOutlines, UseThumbs, FullScreen, UseOC } %pdf 1.5
{
- \pdfmanagement_add:nnx {Catalog / ViewerPreferences }
+ \pdfmanagement_add:nne {Catalog / ViewerPreferences }
{ NonFullScreenPageMode} {/#1}
}
,pdfnonfullscreenpagemode / UseAttachments .code:n =
@@ -3357,7 +3358,7 @@
%message
}
{
- \pdfmanagement_add:nnx {Catalog / ViewerPreferences }
+ \pdfmanagement_add:nne {Catalog / ViewerPreferences }
{NonFullScreenPageMode}{/UseAttachments}
}
}
@@ -3367,7 +3368,7 @@
}
,pdfnonfullscreenpagemode / unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-choice+empty }
+ \msg_warning:nneee { hyp } { unknown-choice+empty }
{ pdfnonfullscreenpagemode }
{ UseNone, UseOutlines, UseThumbs, FullScreen, UseOC, UseAttachments (PDF 1.6) }
{ \exp_not:n {#1} }
@@ -3381,12 +3382,12 @@
\pdfmanagement_remove:nn {Catalog / ViewerPreferences } { NumCopies }
}
{
- \pdfmanagement_add:nnx {Catalog / ViewerPreferences }
+ \pdfmanagement_add:nne {Catalog / ViewerPreferences }
{NumCopies}{#1}
}
}
{
- \msg_warning:nnxx
+ \msg_warning:nnee
{hyp}
{ignore-deprecated-or-unknown-option-in-pdf-version}
{pdfnumcopies}
@@ -3395,27 +3396,27 @@
}
,pdfpagelayout .choices:nn =
{ SinglePage, OneColumn, TwoColumnLeft, TwoColumnRight, TwoPageLeft, TwoPageRight}
- { \pdfmanagement_add:nnx {Catalog} { PageLayout }{ /#1 } }
+ { \pdfmanagement_add:nne {Catalog} { PageLayout }{ /#1 } }
,pdfpagelayout / .code:n =
{ \pdfmanagement_remove:nn {Catalog} { PageLayout } }
,pdfpagelayout / unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-choice+empty }
+ \msg_warning:nneee { hyp } { unknown-choice+empty }
{ pdfpagelayout }
{ SinglePage, OneColumn, TwoColumnLeft, TwoColumnRight, TwoPageLeft, TwoPageRight }
{ \exp_not:n {#1} }
}
,pdfpagemode .choices:nn =
{ UseNone, UseOutlines, UseThumbs, FullScreen, UseOC } %pdf 1.5
- { \pdfmanagement_add:nnx {Catalog} { PageMode }{ /#1 } }
+ { \pdfmanagement_add:nne {Catalog} { PageMode }{ /#1 } }
,pdfpagemode / UseAttachments .code:n =
{
\pdf_version_compare:NnTF > {1.5}
{
- \pdfmanagement_add:nnx {Catalog} { PageMode }{ /UseAttachments }
+ \pdfmanagement_add:nne {Catalog} { PageMode }{ /UseAttachments }
}
{
- \msg_warning:nnxx
+ \msg_warning:nnee
{hyp}
{ignore-deprecated-or-unknown-value-in-pdf-version}
{UseAttachments}
@@ -3425,7 +3426,7 @@
,pdfpagemode .initial:n = { UseOutlines } %for now ...
,pdfpagemode / unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-choice+empty }
+ \msg_warning:nneee { hyp } { unknown-choice+empty }
{ pdfpagemode }
{ UseNone, UseOutlines, UseThumbs, FullScreen, UseOC, UseAttachments (PDF 1.6) }
{ \exp_not:n {#1} }
@@ -3437,7 +3438,7 @@
\pdfmanagement_remove:nn {Pages} { CropBox }
}
{
- \pdfmanagement_add:nnx {Pages} { CropBox } { [#1] }
+ \pdfmanagement_add:nne {Pages} { CropBox } { [#1] }
}
}
,pdfpicktraybypdfsize .choice:
@@ -3449,7 +3450,7 @@
{ PickTrayByPDFSize } { true }
}
{
- \msg_warning:nnxx
+ \msg_warning:nnee
{hyp}
{ignore-deprecated-or-unknown-option-in-pdf-version}
{pdfpicktraybypdfsize}
@@ -3464,7 +3465,7 @@
{ PickTrayByPDFSize } { false }
}
{
- \msg_warning:nnxx
+ \msg_warning:nnee
{hyp}
{ignore-deprecated-or-unknown-option-in-pdf-version}
{pdfpicktraybypdfsize}
@@ -3477,7 +3478,7 @@
}
,pdfpicktraybypdfsize / unknown .code:n =
{
- \msg_warning:nnxx { hyp } { no-bool }
+ \msg_warning:nnee { hyp } { no-bool }
{ picktraybypdfsize }
{ \exp_not:n {#1} }
}
@@ -3486,11 +3487,11 @@
{
\pdf_version_compare:NnTF < {2.0}
{
- \pdfmanagement_add:nnx {Catalog / ViewerPreferences }
+ \pdfmanagement_add:nne {Catalog / ViewerPreferences }
{ PrintArea } { /#1 }
}
{
- \msg_warning:nnxx
+ \msg_warning:nnee
{hyp}
{ignore-deprecated-or-unknown-option-in-pdf-version}
{pdfprintarea}
@@ -3501,7 +3502,7 @@
{ \pdfmanagement_remove:nn {Catalog / ViewerPreferences } { PrintArea } }
,pdfprintarea / unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-choice+empty }
+ \msg_warning:nneee { hyp } { unknown-choice+empty }
{ pdfprintarea }
{ MediaBox, CropBox, BleedBox, TrimBox, ArtBox }
{ \exp_not:n {#1} }
@@ -3511,11 +3512,11 @@
{
\pdf_version_compare:NnTF < {2.0}
{
- \pdfmanagement_add:nnx {Catalog / ViewerPreferences }
+ \pdfmanagement_add:nne {Catalog / ViewerPreferences }
{ PrintClip } { /#1 }
}
{
- \msg_warning:nnxx
+ \msg_warning:nnee
{hyp}
{ignore-deprecated-or-unknown-option-in-pdf-version}
{pdfprintclip}
@@ -3528,7 +3529,9 @@
}
,pdfprintclip / unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-choice+empty }
+ \msg_warning:nneee
+ { hyp }
+ { unknown-choice+empty }
{ pdfprintclip }
{ MediaBox, CropBox, BleedBox, TrimBox, ArtBox }
{ \exp_not:n {#1} }
@@ -3543,12 +3546,12 @@
{ PrintPageRange }
}
{
- \pdfmanagement_add:nnx {Catalog / ViewerPreferences }
+ \pdfmanagement_add:nne {Catalog / ViewerPreferences }
{PrintPageRange}{[#1]}
}
}
{
- \msg_warning:nnxx
+ \msg_warning:nnee
{hyp}
{ignore-deprecated-or-unknown-option-in-pdf-version}
{pdfprintpagerange}
@@ -3560,11 +3563,11 @@
{
\pdf_version_compare:NnTF > {1.5}
{
- \pdfmanagement_add:nnx {Catalog / ViewerPreferences }
+ \pdfmanagement_add:nne {Catalog / ViewerPreferences }
{ PrintScaling } { /#1 }
}
{
- \msg_warning:nnxx
+ \msg_warning:nnee
{hyp}
{ignore-deprecated-or-unknown-option-in-pdf-version}
{pdfprintscaling}
@@ -3577,18 +3580,18 @@
}
,pdfprintscaling / unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-choice+empty }
+ \msg_warning:nneee { hyp } { unknown-choice+empty }
{ pdfprintarea }
{ None, AppDefault }
{ \exp_not:n {#1} }
}
,pdfremotestartview .code:n =
{
- \tl_set:Nx \l_@@_tmpa_tl {#1~null~null~null~}
+ \tl_set:Ne \l_@@_tmpa_tl {#1~null~null~null~}
\exp_args:NNV
\regex_extract_once:NnNTF \c_@@_dest_startview_regex \l_@@_tmpa_tl \l_@@_tmpa_seq
{
- \tl_set:Nx \l_@@_dest_pdfremotestartview_tl {\seq_item:Nn \l_@@_tmpa_seq {1}}
+ \tl_set:Ne \l_@@_dest_pdfremotestartview_tl {\seq_item:Nn \l_@@_tmpa_seq {1}}
}
{
\msg_warning:nnnn {hyp}{invalid-destination-value}{#1}{pdfremotestartview}
@@ -3599,14 +3602,14 @@
% pdfstartpage is special as it shares code with pdfstartview
,pdfstartpage .code:n =
{
- \tl_gset:Nx \g_@@_dest_pdfstartpage_tl { #1 }
+ \tl_gset:Ne \g_@@_dest_pdfstartpage_tl { #1 }
\bool_if:nTF
{ \tl_if_empty_p:N \g_@@_dest_pdfstartpage_tl || \tl_if_empty_p:N \g_@@_dest_pdfstartview_tl }
{
\pdfmanagement_remove:nn {Catalog} { OpenAction }
}
{
- \pdfmanagement_add:nnx {Catalog} { OpenAction }
+ \pdfmanagement_add:nne {Catalog} { OpenAction }
{
[\pdf_pageobject_ref:n {\g_@@_dest_pdfstartpage_tl}~/\g_@@_dest_pdfstartview_tl]
}
@@ -3615,11 +3618,11 @@
,pdfstartpage .initial:n =1
,pdfstartview .code:n =
{
- \tl_set:Nx \l_@@_tmpa_tl {#1~null~null~null~}
+ \tl_set:Ne \l_@@_tmpa_tl {#1~null~null~null~}
\exp_args:NNV
\regex_extract_once:NnNTF \c_@@_dest_startview_regex \l_@@_tmpa_tl \l_@@_tmpa_seq
{
- \tl_gset:Nx \g_@@_dest_pdfstartview_tl {\seq_item:Nn \l_@@_tmpa_seq {1}}
+ \tl_gset:Ne \g_@@_dest_pdfstartview_tl {\seq_item:Nn \l_@@_tmpa_seq {1}}
}
{
\msg_warning:nnnn {hyp}{invalid-destination-value}{#1}{pdfstartview}
@@ -3631,7 +3634,7 @@
\pdfmanagement_remove:nn {Catalog} { OpenAction }
}
{
- \pdfmanagement_add:nnx {Catalog} { OpenAction }
+ \pdfmanagement_add:nne {Catalog} { OpenAction }
{
[\pdf_pageobject_ref:n {\g_@@_dest_pdfstartpage_tl}~/\g_@@_dest_pdfstartview_tl]
}
@@ -3655,7 +3658,7 @@
,pdftoolbar .default:n = true
,pdftoolbar / unknown .code:n =
{
- \msg_warning:nnxx { hyp } { no-bool }
+ \msg_warning:nnee { hyp } { no-bool }
{ pdftoolbar }
{ \exp_not:n {#1} }
}
@@ -3669,7 +3672,7 @@
{ ViewArea } { /#1 }
}
{
- \msg_warning:nnxx
+ \msg_warning:nnee
{hyp}
{ignore-deprecated-or-unknown-option-in-pdf-version}
{pdfviewarea}
@@ -3682,7 +3685,7 @@
}
,pdfviewarea / unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-choice+empty }
+ \msg_warning:nneee { hyp } { unknown-choice+empty }
{ pdfviewarea }
{ MediaBox, CropBox, BleedBox, TrimBox, ArtBox }
{ \exp_not:n {#1} }
@@ -3696,7 +3699,7 @@
{ ViewClip } { /#1 }
}
{
- \msg_warning:nnxx
+ \msg_warning:nnee
{hyp}
{ignore-deprecated-or-unknown-option-in-pdf-version}
{pdfviewclip}
@@ -3709,7 +3712,7 @@
}
,pdfviewclip / unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-choice+empty }
+ \msg_warning:nneee { hyp } { unknown-choice+empty }
{ pdfviewclip }
{ MediaBox, CropBox, BleedBox, TrimBox, ArtBox }
{ \exp_not:n {#1} }
@@ -3730,7 +3733,7 @@
}
,pdfwindowui / unknown .code:n =
{
- \msg_warning:nnxx { hyp } { no-bool }
+ \msg_warning:nnee { hyp } { no-bool }
{ pdfwindowui }
{ \exp_not:n {#1} }
}
@@ -3758,7 +3761,7 @@
\tl_set:Nn \l_@@_dest_pdfview_tl {xyz}
}
{
- \tl_set:Nx \l_@@_dest_pdfview_tl
+ \tl_set:Ne \l_@@_dest_pdfview_tl
{
\fp_eval:n { \l_@@_tmpa_tl * 100 }
}
@@ -3837,7 +3840,7 @@
{
\tl_if_empty:nF { #1 }
{
- \pdfmanagement_add:nnx {Catalog} { Lang } { (#1) }
+ \pdfmanagement_add:nne {Catalog} { Lang } { (#1) }
\AddToDocumentProperties[document]{lang}{#1}
}
}
@@ -3868,12 +3871,12 @@
{creator}
{
\msg_info:nnn { hyp }{ empty-info-value } { pdfcreator }
- \pdfmanagement_add:nnx {Info}{Creator}{()}
+ \pdfmanagement_add:nne {Info}{Creator}{()}
}
{producer}
{
\msg_info:nnn { hyp }{ empty-info-value } { pdfproducer }
- \pdfmanagement_add:nnx {Info}{Producer}{()}
+ \pdfmanagement_add:nne {Info}{Producer}{()}
}
}
{
@@ -3881,7 +3884,7 @@
}
}
{
- \tl_set:Nx\l_@@_tmpa_tl {\clist_item:nn{##1}{1}}
+ \tl_set:Ne\l_@@_tmpa_tl {\clist_item:nn{##1}{1}}
\exp_args:NNV
\regex_extract_once:NnN \l_@@_optlang_regex \l_@@_tmpa_tl\l_@@_tmpa_seq
\seq_if_empty:NTF\l_@@_tmpa_seq
@@ -3889,12 +3892,12 @@
\@@_text_pdfstring_info:nN {##1}\l_@@_tmpa_str
}
{
- \exp_args:Nx
+ \exp_args:Ne
\@@_text_pdfstring_info:nN {\seq_item:Nn \l_@@_tmpa_seq{3}}\l_@@_tmpa_str
}
\str_if_eq:VnF\l_@@_tmpa_str{<FEFF>}
{
- \pdfmanagement_add:nnx {Info}{#2}{\l_@@_tmpa_str}
+ \pdfmanagement_add:nne {Info}{#2}{\l_@@_tmpa_str}
}
}
\@@_store_metadata:nn {pdf#1}{##1}
@@ -3912,10 +3915,10 @@
\@@_text_pdfstring_info:nN {##1}\l_@@_tmpa_str
\str_if_eq:VnF\l_@@_tmpa_str{<FEFF>}
{
- \pdfmanagement_add:nnx {Info}{#2}{\l_@@_tmpa_str}
+ \pdfmanagement_add:nne {Info}{#2}{\l_@@_tmpa_str}
}
}
- \exp_args:Nx \@@_store_metadata:nn {pdf\str_lowercase:n{#1}}{##1}
+ \exp_args:Ne \@@_store_metadata:nn {pdf\str_lowercase:n{#1}}{##1}
}
,unknown .code:n =
{
@@ -3923,7 +3926,7 @@
\str_if_eq:VnF\l_@@_tmpa_str{<FEFF>}
{
\exp_args:Nno
- \pdfmanagement_add:nnx {Info}
+ \pdfmanagement_add:nne {Info}
{ \l_keys_key_str } {\l_@@_tmpa_str}
}
}
@@ -3953,7 +3956,7 @@
\pdfmanagement_remove:nn {Info}{#2}
}
{
- \pdfmanagement_add:nnx {Info}{#2}{(##1)}
+ \pdfmanagement_add:nne {Info}{#2}{(##1)}
}
\@@_store_metadata:nn {pdf#1}{##1}
\AddToDocumentProperties[document]{#1}{##1}
@@ -3968,9 +3971,9 @@
\pdfmanagement_remove:nn {Info}{#2}
}
{
- \pdfmanagement_add:nnx {Info}{#2}{(##1)}
+ \pdfmanagement_add:nne {Info}{#2}{(##1)}
}
- \exp_args:Nx \@@_store_metadata:nn {pdf\str_lowercase:n{#1}}{##1}
+ \exp_args:Ne \@@_store_metadata:nn {pdf\str_lowercase:n{#1}}{##1}
}
}
}
@@ -3995,12 +3998,12 @@
}
,_pdftrapped .choices:nn = {TRUE,FALSE,UNKNOWN}
{
- \pdfmanagement_add:nnx {Info}{Trapped}
+ \pdfmanagement_add:nne {Info}{Trapped}
{/
\str_uppercase:f { \str_head:n { #1 } }
\str_lowercase:f { \str_tail:n { #1 } }
}
- \@@_store_metadata:nx {pdftrapped}
+ \@@_store_metadata:ne {pdftrapped}
{
\str_uppercase:f { \str_head:n { #1 } }
\str_lowercase:f { \str_tail:n { #1 } }
@@ -4008,7 +4011,7 @@
}
,_pdftrapped / unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-choice }
+ \msg_warning:nneee { hyp } { unknown-choice }
{ pdftrapped }
{ true~(case~insensitive), false~(case~insensitive), unknown~(case~insensitive) }
{ \exp_not:n {#1} }
@@ -4149,11 +4152,11 @@
{
\group_begin:
\keys_set:nn { hyp / trans }{style=R,#1}
- \pdf_object_unnamed_write:nx { dict }
+ \pdf_object_unnamed_write:ne { dict }
{
\pdfdict_use:n {l_@@_page/Trans}
}
- \pdfmanagement_add:nnx {Page}{Trans}{\pdf_object_ref_last:}
+ \pdfmanagement_add:nne {Page}{Trans}{\pdf_object_ref_last:}
\group_end:
}
}
@@ -4165,7 +4168,7 @@
{ \pdfdict_put:nnn {l_@@_page/Trans}{ S }{/#1} }
,style / unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-choice }
+ \msg_warning:nneee { hyp } { unknown-choice }
{ trans / style }
{ Split,Blinds,Box,Wipe,Dissolve,Glitter,R,Fly,Push,Cover,Uncover,Fade }
{ \exp_not:n {#1} }
@@ -4184,7 +4187,7 @@
{ \pdfdict_put:nnn {l_@@_page/Trans}{ Di }{ /None } }
,direction / unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-choice }
+ \msg_warning:nneee { hyp } { unknown-choice }
{ trans / direction }
{
H~(horizontal,~only~Split,~Blinds),
@@ -4203,7 +4206,7 @@
{ \pdfdict_put:nnn {l_@@_page/Trans}{ M }{/#1} }
,motion / unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-choice }
+ \msg_warning:nneee { hyp } { unknown-choice }
{ trans / motion }
{ I~(inwards) , O~(outwards) }
{ \exp_not:n {#1} }
@@ -4214,7 +4217,7 @@
{ \pdfdict_put:nnn { l_@@_page/Trans }{ B } { #1} }
,opaque / unknown .code:n =
{
- \msg_warning:nnxxx { hyp } { unknown-choice }
+ \msg_warning:nneee { hyp } { unknown-choice }
{ trans / B }
{ true~(opaque~back,~only~Fly), false~(opaque~back,~only~Fly) }
{ \exp_not:n {#1} }
@@ -4223,7 +4226,7 @@
,unknown .code:n =
{
% warning ...
- \exp_args:Nnx\keys_set:nn {hyp/trans}{ style=\l_keys_key_str }
+ \exp_args:Nne\keys_set:nn {hyp/trans}{ style=\l_keys_key_str }
}
}
% \end{macrocode}
@@ -4281,7 +4284,7 @@
\def\HyField@AddToFields
{
- \exp_args:Nx\HyField@@AddToFields
+ \exp_args:Ne\HyField@@AddToFields
{
\pdfannot_box_ref_last:
}
@@ -4329,7 +4332,7 @@
\Hy@FormObjects
\prop_map_inline:Nn \g_@@_AcroForm_Fields_prop
{
- \pdfmanagement_add:nnx { Catalog / AcroForm } { Fields }{##1}
+ \pdfmanagement_add:nne { Catalog / AcroForm } { Fields }{##1}
%\pdfmanagement_show:n { Catalog / AcroForm }
}
\prop_if_empty:NF \g_@@_AcroForm_CoFields_prop
@@ -4346,18 +4349,18 @@
}
\seq_map_inline:Nn \l_@@_tmpa_seq
{
- \pdfmanagement_add:nnx { Catalog / AcroForm }
+ \pdfmanagement_add:nne { Catalog / AcroForm }
{ CO }
{
\prop_item:Nn \g_@@_AcroForm_CoFields_prop {##1}
}
}
}
- \pdfmanagement_add:nnx {Catalog / AcroForm/DR/Font }
+ \pdfmanagement_add:nne {Catalog / AcroForm/DR/Font }
{ZaDb} {\pdf_object_ref:n {@@/Font/ZaDb} }
- \pdfmanagement_add:nnx {Catalog / AcroForm/DR/Font }
+ \pdfmanagement_add:nne {Catalog / AcroForm/DR/Font }
{Helv} {\pdf_object_ref:n {@@/Font/Helv} }
- \pdfmanagement_add:nnx {Catalog /AcroForm}
+ \pdfmanagement_add:nne {Catalog /AcroForm}
{DA}{(/Helv~10~Tf~0~g)}
\pdfmeta_standard_verify:nTF {form_no_NeedAppearance}
{
@@ -4538,7 +4541,7 @@
\group_end:
}
}
- \pdfannot_box:nnnx
+ \pdfannot_box:nnne
{\Fld@width}
{\Fld@height}
{0pt} %is this correct?
@@ -4765,7 +4768,7 @@
\pdf_object_new:n {@@/Encoding/pdfdoc }
\pdf_object_new:n {@@/Font/ZaDb }
\pdf_object_new:n {@@/Font/Helv }
- \pdf_object_write:nnx {@@/Encoding/pdfdoc } { dict }
+ \pdf_object_write:nne {@@/Encoding/pdfdoc } { dict }
{
/Type/Encoding
/Differences[
@@ -4814,7 +4817,7 @@
/Name/ZaDb
/BaseFont/ZapfDingbats
}
- \pdf_object_write:nnx {@@/Font/Helv } { dict }
+ \pdf_object_write:nne {@@/Font/Helv } { dict }
{
/Type/Font
/Subtype/Type1
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
index d830ce140a..4b4d37a989 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
index e378716818..4d557d276b 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
@@ -45,7 +45,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
%
@@ -56,27 +56,27 @@
% \begin{macrocode}
%<drivers>\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-testphase-dvipdfmx.def}{2023-10-09}{}
+ {l3backend-testphase-dvipdfmx.def}{2023-11-05}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-testphase-dvips.def}{2023-10-09}{}
+ {l3backend-testphase-dvips.def}{2023-11-05}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-testphase-dvisvgm.def}{2023-10-09}{}
+ {l3backend-testphase-dvisvgm.def}{2023-11-05}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-testphase-luatex.def}{2023-10-09}{}
+ {l3backend-testphase-luatex.def}{2023-11-05}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-testphase-pdftex.def}{2023-10-09}{}
+ {l3backend-testphase-pdftex.def}{2023-11-05}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)}
%</pdftex>
%<*xdvipdfmx>
- {l3backend-testphase-xetex.def}{2023-10-09}{}
+ {l3backend-testphase-xetex.def}{2023-11-05}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: XeTeX}
%</xdvipdfmx>
% \end{macrocode}
@@ -446,7 +446,7 @@
%we need to know the page the resource should be added too.
\int_gincr:N\g_@@_backend_resourceid_int
\@@_backend_record_abspage:e { l3pdf\int_use:N\g_@@_backend_resourceid_int }
- \tl_set:Nx \l_@@_tmpa_tl
+ \tl_set:Ne \l_@@_tmpa_tl
{
\@@_backend_ref_abspage:e {l3pdf\int_use:N\g_@@_backend_resourceid_int}
}
@@ -734,7 +734,7 @@
\prop_if_empty:cF
{ \__kernel_pdfdict_name:n { g_@@_Core/Page/Resources/##1} }
{
- \pdf_object_write:nnx
+ \pdf_object_write:nne
{ @@/Page/Resources/##1 } { dict }
{ \pdfdict_use:n { g_@@_Core/Page/Resources/##1} }
}
@@ -1101,7 +1101,7 @@
}
{
\@@_backend_record_abspage:e {l3pdf\int_use:N\g_@@_backend_resourceid_int}
- \tl_set:Nx \l_@@_tmpa_tl
+ \tl_set:Ne \l_@@_tmpa_tl
{
\@@_backend_ref_abspage:e{l3pdf\int_use:N\g_@@_backend_resourceid_int}
}
@@ -1131,7 +1131,7 @@
}
{
\@@_backend_record_abspage:e{l3pdf\int_use:N\g_@@_backend_resourceid_int}
- \tl_set:Nx \l_@@_tmpa_tl
+ \tl_set:Ne \l_@@_tmpa_tl
{
\@@_backend_ref_abspage:e{l3pdf\int_use:N\g_@@_backend_resourceid_int}
}
@@ -1358,13 +1358,13 @@
#4
}
%store the dimensions
- \tl_const:cx
+ \tl_const:ce
{ c_@@_backend_xform_wd_ \tl_to_str:n {#1} _tl }
{ \tex_the:D \box_wd:N \l_@@_backend_tmpa_box }
- \tl_const:cx
+ \tl_const:ce
{ c_@@_backend_xform_ht_ \tl_to_str:n {#1} _tl }
{ \tex_the:D \box_ht:N \l_@@_backend_tmpa_box }
- \tl_const:cx
+ \tl_const:ce
{ c_@@_backend_xform_dp_ \tl_to_str:n {#1} _tl }
{ \tex_the:D \box_dp:N \l_@@_backend_tmpa_box }
%% do we need to test if #2 and #3 are empty??
@@ -1439,13 +1439,13 @@
\prop_gclear:c { \__kernel_pdfdict_name:n { g_@@_Core/Xform/Resources/Properties } }
#4
}
- \tl_const:cx
+ \tl_const:ce
{ c_@@_backend_xform_wd_ \tl_to_str:n {#1} _tl }
{ \tex_the:D \box_wd:N \l_@@_backend_tmpa_box }
- \tl_const:cx
+ \tl_const:ce
{ c_@@_backend_xform_ht_ \tl_to_str:n {#1} _tl }
{ \tex_the:D \box_ht:N \l_@@_backend_tmpa_box }
- \tl_const:cx
+ \tl_const:ce
{ c_@@_backend_xform_dp_ \tl_to_str:n {#1} _tl }
{ \tex_the:D \box_dp:N \l_@@_backend_tmpa_box }
%% do we need to test if #2 and #3 are empty??
@@ -1531,13 +1531,13 @@
\bool_set_true:N \l_@@_backend_xform_bool
#4
}
- \tl_const:cx
+ \tl_const:ce
{ c_@@_backend_xform_wd_ \tl_to_str:n {#1} _tl }
{ \tex_the:D \box_wd:c { g_@@_backend_xform_#1_box } }
- \tl_const:cx
+ \tl_const:ce
{ c_@@_backend_xform_ht_ \tl_to_str:n {#1} _tl }
{ \tex_the:D \box_ht:c { g_@@_backend_xform_#1_box } }
- \tl_const:cx
+ \tl_const:ce
{ c_@@_backend_xform_dp_ \tl_to_str:n {#1} _tl }
{ \tex_the:D \box_dp:c { g_@@_backend_xform_#1_box } }
\box_set_dp:cn { g_@@_backend_xform_#1_box } { \c_zero_dim }
@@ -1644,27 +1644,27 @@
#4
}
%store the dimensions
- \tl_const:cx
+ \tl_const:ce
{ c_@@_backend_xform_wd_ \tl_to_str:n {#1} _tl }
{ \tex_the:D \box_wd:N \l_@@_backend_tmpa_box }
- \tl_const:cx
+ \tl_const:ce
{ c_@@_backend_xform_ht_ \tl_to_str:n {#1} _tl }
{ \tex_the:D \box_ht:N \l_@@_backend_tmpa_box }
- \tl_const:cx
+ \tl_const:ce
{ c_@@_backend_xform_dp_ \tl_to_str:n {#1} _tl }
{ \tex_the:D \box_dp:N \l_@@_backend_tmpa_box }
%store content dimensions in DPI units (Dots) (code from issue 25)
- \tl_set:Nx\l_@@_backend_xform_tmpwd_tl
+ \tl_set:Ne\l_@@_backend_xform_tmpwd_tl
{
\dim_to_decimal_in_sp:n{ \box_wd:N \l_@@_backend_tmpa_box }~
65536~div~72.27~div~DVImag~mul~Resolution~mul~
}
- \tl_set:Nx\l_@@_backend_xform_tmpht_tl
+ \tl_set:Ne\l_@@_backend_xform_tmpht_tl
{
\dim_to_decimal_in_sp:n{ \box_ht:N \l_@@_backend_tmpa_box }~
65536~div~72.27~div~DVImag~mul~VResolution~mul~
}
- \tl_set:Nx\l_@@_backend_xform_tmpdp_tl
+ \tl_set:Ne\l_@@_backend_xform_tmpdp_tl
{
\dim_to_decimal_in_sp:n{ \box_dp:N \l_@@_backend_tmpa_box }~
65536~div~72.27~div~DVImag~mul~VResolution~mul~
@@ -2125,8 +2125,8 @@
\__kernel_backend_literal:e{!~<</InstanceUUID~(InstanceUUID)>>~setpagedevice}
\str_if_exist:NTF\c_sys_timestamp_str
{
- \pdfmanagement_add:nnx{Info}{CreationDate}{(\c_sys_timestamp_str)}
- \pdfmanagement_add:nnx{Info}{ModDate}{(\c_sys_timestamp_str)}
+ \pdfmanagement_add:nne{Info}{CreationDate}{(\c_sys_timestamp_str)}
+ \pdfmanagement_add:nne{Info}{ModDate}{(\c_sys_timestamp_str)}
}
{
\pdfmanagement_add:nnn{Info}{CreationDate}{(D:20010101205959-00'00')}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
index 5abbe8a3f2..233f89550f 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
index a6384c182c..73b309615c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
% \begin{documentation}
@@ -93,7 +93,7 @@
% \subsection{General annotation commands}
%
% \begin{function}[added = 2019-09-05, updated = 2020-04-14]
-% { \pdfannot_box:nnnn,\pdfannot_box:nnnx }
+% { \pdfannot_box:nnnn,\pdfannot_box:nnne }
% \begin{syntax}
% \cs{pdfannot_box:nnnn} \Arg{width} \Arg{height} \Arg{depth} \Arg{annot spec}
% \end{syntax}
@@ -123,7 +123,7 @@
% \pdfdict_new:n {l_my_annot}
% \pdfdict_put:nnn{l_my_annot}{Subtype}{/Link}
% \pdfdict_put:nnn{l_my_annot}{Border}{[0~0~1]}
-% \pdfannot_box:nnnx{1cm}{1cm}{0cm}{\pdfdict_use:n{l_my_annot}}
+% \pdfannot_box:nnne{1cm}{1cm}{0cm}{\pdfdict_use:n{l_my_annot}}
% \end{verbatim}
%
% The second method is clearly slower and more to type. But it has the advantage
@@ -187,7 +187,7 @@
% by the commands \cs{pdfannot_dict_put:nnn} and friends described below.
% \end{variable}
% \begin{function}[added = 2020-03-12, updated = 2020-12-06]
-% { \pdfannot_link:nnn,\pdfannot_link:nxn }
+% { \pdfannot_link:nnn,\pdfannot_link:nen }
% \begin{syntax}
% \cs{pdfannot_link:nnn} \Arg{type} \Arg{user action spec} \Arg{link text}
% \end{syntax}
@@ -237,7 +237,7 @@
% \pdfannot_dict_put:nnn
% {link/URI} { C } {[1~0~0]} %red border
%
-% \pdfannot_link:nxn { URI }
+% \pdfannot_link:nen { URI }
% {
% /A <<\pdfdict_use:n{l_my_action_dict}>>
% }
@@ -260,7 +260,7 @@
% {link/URI} { C } {[1~0~0]} %red border
%
% \group_begin:
-% \pdfannot_dict_put:nnx {link/GoTo}{A}{<<\pdfdict_use:n{l_my_action_dict}>>}
+% \pdfannot_dict_put:nne {link/GoTo}{A}{<<\pdfdict_use:n{l_my_action_dict}>>}
% \pdfannot_link:nnn { URI }{}{ link text }
% \group_end:
% \end{verbatim}
@@ -381,7 +381,7 @@
% This outputs the property list of the dictionary as a list of
% |/key value| pairs.
% This can be used e.g. when writing a dictionary object with
-% \cs{pdf_object_write:nnx}
+% \cs{pdf_object_write:nne}
% \end{function}
%
% \begin{variable}[added = 2020-12-28]{\l_pdfannot_F_bitset}
@@ -390,7 +390,7 @@
% It can be used for example like this:
% \begin{verbatim}
% \bitset_set_true:Nn \l_pdfannot_F_bitset {Print}
-% \pdfannot_dict_put:nnx {link/URI} {F}
+% \pdfannot_dict_put:nne {link/URI} {F}
% { \bitset_to_arabic:N \l_pdfannot_F_bitset }
% \end{verbatim}
% The known keys for the bitset are |Invisible|, |Hidden|,
@@ -432,7 +432,7 @@
% \begin{macrocode}
%<@@=pdfannot>
%<*header>
-\ProvidesExplPackage{l3pdfannot}{2023-10-09}{0.96a}
+\ProvidesExplPackage{l3pdfannot}{2023-11-05}{0.96b}
{PDF-annotations}
\RequirePackage{l3pdfdict}
%</header>
@@ -481,14 +481,14 @@
% type or not type? Syntax for type?
% should there be a version without type?
% \end{NOTE}
-% \begin{macro}{\pdfannot_box:nnnn,\pdfannot_box:nnnx,\pdfannot_box_ref_last:}
+% \begin{macro}{\pdfannot_box:nnnn,\pdfannot_box:nnne,\pdfannot_box_ref_last:}
% \begin{macrocode}
\cs_new_protected:Npn \pdfannot_box:nnnn #1 #2 #3 #4
{
\__pdf_backend_annotation:nnnn {#1}{#2}{#3}{#4}
\bool_gset_false:N\g_@@_use_lastlink_bool
}
-\cs_generate_variant:Nn \pdfannot_box:nnnn {nnnx}
+\cs_generate_variant:Nn \pdfannot_box:nnnn {nnne,nnnx}
\cs_new:Npn \pdfannot_box_ref_last:
{
\__pdf_backend_annotation_last:
@@ -520,34 +520,34 @@
{
\pdfdict_if_empty:nF { l_@@/widget/AA }
{
- \pdf_object_unnamed_write:nx {dict}{\pdfdict_use:n{l_@@/widget/AA}}
- \pdfdict_put:nnx { l_@@/widget }
+ \pdf_object_unnamed_write:ne {dict}{\pdfdict_use:n{l_@@/widget/AA}}
+ \pdfdict_put:nne { l_@@/widget }
{AA}
{\pdf_object_ref_last:}
}
}
\pdfdict_if_empty:nF { l_@@/widget/AP }
{
- \pdf_object_unnamed_write:nx {dict}{\pdfdict_use:n{l_@@/widget/AP}}
- \pdfdict_put:nnx { l_@@/widget }
+ \pdf_object_unnamed_write:ne {dict}{\pdfdict_use:n{l_@@/widget/AP}}
+ \pdfdict_put:nne { l_@@/widget }
{AP}
{\pdf_object_ref_last:}
}
\pdfdict_if_empty:nF { l_@@/widget/MK }
{
- \pdf_object_unnamed_write:nx {dict}{\pdfdict_use:n{l_@@/widget/MK}}
- \pdfdict_put:nnx { l_@@/widget }
+ \pdf_object_unnamed_write:ne {dict}{\pdfdict_use:n{l_@@/widget/MK}}
+ \pdfdict_put:nne { l_@@/widget }
{MK}
{\pdf_object_ref_last:}
}
\pdfdict_if_empty:nF { l_@@/widget/BS }
{
- \pdf_object_unnamed_write:nx {dict}{\pdfdict_use:n{l_@@/widget/BS}}
- \pdfdict_put:nnx { l_@@/widget }
+ \pdf_object_unnamed_write:ne {dict}{\pdfdict_use:n{l_@@/widget/BS}}
+ \pdfdict_put:nne { l_@@/widget }
{BS}
{\pdf_object_ref_last:}
}
- \pdfannot_box:nnnx {#1}{#2}{#3}
+ \pdfannot_box:nnne {#1}{#2}{#3}
{
\pdfdict_use:n { l_@@/widget}
}
@@ -618,14 +618,14 @@
%
% \subsubsection{Annotations, subtype Link /management}
%
-% \begin{macro}{\pdfannot_link:nnn,\pdfannot_link:nxn}
+% \begin{macro}{\pdfannot_link:nnn,\pdfannot_link:nen}
% \begin{macrocode}
\cs_new_protected:Nn \pdfannot_link:nnn %#1 type (URI, GoTo etc),
%#2 action spec, #3 link text
{
\hook_use:n { pdfannot/link/#1/before}
\mode_leave_vertical:
- \exp_args:Nxx %xetex needs expansion
+ \exp_args:Nee %xetex needs expansion
\__pdf_backend_link_begin_user:nnw
{
\pdfdict_if_exist:nT { l_@@/link/#1 }
@@ -644,19 +644,19 @@
\bool_gset_true:N \g_@@_use_lastlink_bool
\hook_use:n { pdfannot/link/#1/after}
}
-\cs_generate_variant:Nn \pdfannot_link:nnn {nxn}
+\cs_generate_variant:Nn \pdfannot_link:nnn {nen,nxn}
% \end{macrocode}
% \end{macro}
% \begin{macro}{
% \pdfannot_link_begin:nnw,
-% \pdfannot_link_begin:nxw,
+% \pdfannot_link_begin:new,
% \pdfannot_link_end:n }
% \begin{macrocode}
\cs_new_protected:Npn \pdfannot_link_begin:nnw #1 #2 %#1 type, #2 action spec
{
\hook_use:n { pdfannot/link/#1/before}
\mode_leave_vertical:
- \exp_args:Nxx %xetex needs expansion
+ \exp_args:Nee %xetex needs expansion
\__pdf_backend_link_begin_user:nnw
{
\pdfdict_if_exist:nT { l_@@/link/#1 }
@@ -676,7 +676,7 @@
\bool_gset_true:N \g_@@_use_lastlink_bool
\hook_use:n { pdfannot/link/#1/after}
}
-\cs_generate_variant:Nn \pdfannot_link_begin:nnw {nxw}
+\cs_generate_variant:Nn \pdfannot_link_begin:nnw {new,nxw}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\pdfannot_link_goto_begin:nw, \pdfannot_link_goto_end:}
@@ -686,7 +686,7 @@
\pdfdict_remove:nn { l_@@/link/GoTo} {Subtype}
\hook_use:n { pdfannot/link/GoTo/before} %the backend add it too
\mode_leave_vertical:
- \exp_args:Nxx %xetex needs expansion
+ \exp_args:Nee %xetex needs expansion
\__pdf_backend_link_begin_goto:nnw
{
\pdfdict_use:n { l_@@/link/GoTo}
@@ -734,7 +734,7 @@
% \begin{macro}
% {
% \pdfannot_dict_put:nnn,
-% \pdfannot_dict_put:nnx,
+% \pdfannot_dict_put:nne,
% \pdfannot_dict_remove:nn,
% \pdfannot_dict_show:n
% \pdfannot_dict_use:n
@@ -744,7 +744,7 @@
{
\pdfdict_put:nnn { l_@@/#1 } { #2 }{ #3 }
}
-\cs_generate_variant:Nn \pdfannot_dict_put:nnn {nnx}
+\cs_generate_variant:Nn \pdfannot_dict_put:nnn {nne,nnx}
% \end{macrocode}
% \begin{macrocode}
\cs_new_protected:Npn \pdfannot_dict_remove:nn #1 #2
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
index 92ae61b635..4871acbc4b 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
index d95382ad91..88f6f1bd1c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
% \begin{documentation}
@@ -144,7 +144,7 @@
% This outputs the property list of the dictionary as a list of
% |/key value| pairs.
% This can be used e.g. when writing a dictionary object with
-% \cs{pdf_object_write:nnx}
+% \cs{pdf_object_write:nne}
% \end{function}
%
% \begin{function}[updated = 2020-12-03]
@@ -208,7 +208,7 @@
% \begin{macrocode}
%<@@=pdfdict>
%<*header>
-\ProvidesExplPackage{l3pdfdict}{2023-10-09}{0.96a}
+\ProvidesExplPackage{l3pdfdict}{2023-11-05}{0.96b}
{Tools for PDF dictionaries (LaTeX PDF management testphase bundle)}
%</header>
% \end{macrocode}
@@ -285,7 +285,7 @@
{
\@@_if_exist:nTF { #1 }
{
- \msg_error:nnxx
+ \msg_error:nnee
{ pdfdict }
{ dict-already-defined }
{ \tl_to_str:n {#1} }
@@ -306,7 +306,7 @@
}
}
{
- \msg_error:nnx{pdfdict}{invalid-name}{\tl_to_str:n{#1}}
+ \msg_error:nne{pdfdict}{invalid-name}{\tl_to_str:n{#1}}
}
}
}
@@ -419,7 +419,7 @@
{
\@@_if_exist:nTF { #1 }
{
- \exp_args:Nnx \prop_put:cnn
+ \exp_args:Nne \prop_put:cnn
{ \@@_name:n { #1 } }{ \str_convert_pdfname:n { #2 } } { #3 }
}
{
@@ -429,7 +429,7 @@
}
\cs_set_eq:NN \pdfdict_put:nnn \@@_put:nnn
-\cs_generate_variant:Nn \pdfdict_put:nnn {nnx,nno,nee}
+\cs_generate_variant:Nn \pdfdict_put:nnn {nne,nno,nee,nnx}
\cs_new_protected:Npn \@@_gput:nnn #1 #2 #3 %#1 global dict, #2 name, #3 value
{
@@ -440,7 +440,7 @@
{
\@@_if_exist:nTF { #1 }
{
- \exp_args:Nnx \prop_gput:cnn
+ \exp_args:Nne \prop_gput:cnn
{ \@@_name:n { #1 } }{ \str_convert_pdfname:n { #2 } } { #3 }
}
{
@@ -450,7 +450,7 @@
}
\cs_set_eq:NN \pdfdict_gput:nnn \@@_gput:nnn
-\cs_generate_variant:Nn \pdfdict_gput:nnn {nnx,nno,nee}
+\cs_generate_variant:Nn \pdfdict_gput:nnn {nne,nno,nee,nnx}
% \end{macrocode}
% \end{macro}
%
@@ -464,7 +464,7 @@
{
\@@_if_exist:nTF { #1 }
{
- \exp_args:Nnx \prop_get:cnN
+ \exp_args:Nne \prop_get:cnN
{ \@@_name:n { #1 } }
{ \str_convert_pdfname:n { #2 } } #3
}
@@ -489,7 +489,7 @@
{
\@@_if_exist:nTF { #1 }
{
- \exp_args:Nnx \prop_remove:cn
+ \exp_args:Nne \prop_remove:cn
{ \@@_name:n { #1 } }{ \str_convert_pdfname:n { #2 } }
}
{
@@ -502,7 +502,7 @@
{
\@@_if_exist:nTF { #1 }
{
- \exp_args:Nnx \prop_gremove:cn
+ \exp_args:Nne \prop_gremove:cn
{ \@@_name:n { #1 } }{ \str_convert_pdfname:n { #2 } }
}
{
@@ -537,7 +537,7 @@
}
\cs_new_protected:Npn \pdfdict_show:n #1
{
- \@@_show:Nn \msg_show:nnxxxx {#1}
+ \@@_show:Nn \msg_show:nneeee {#1}
}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
index c580144fb5..5c0de310c3 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
index 09489fc8a1..3948784b33 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
% \begin{documentation}
@@ -92,7 +92,7 @@
%
% \begin{verbatim}
% Netto~\pdffield_textfield:n{name=netto}~
-% \pdf_object_unnamed_write:nx{stream}
+% \pdf_object_unnamed_write:ne{stream}
% {
% {}
% {
@@ -100,7 +100,7 @@
% event.value = 1.19*f_netto.value;
% }
% }
-% \tl_set:Nx\l_tmpa_tl{\pdf_object_ref_last:}
+% \tl_set:Ne\l_tmpa_tl{\pdf_object_ref_last:}
% Brutto~\pdffield_textfield:n{name=brutto,AA/C={\l_tmpa_tl}}
% \end{verbatim}
%
@@ -388,8 +388,8 @@
% ,\dim_set:N
% ,\endcsname
% ,\exp_args:Ne
-% ,\exp_args:Nnx
-% ,\exp_args:Nx
+% ,\exp_args:Nne
+% ,\exp_args:Ne
% ,\fboxsep
% ,\group_begin:
% ,\group_end:
@@ -422,12 +422,12 @@
% ,\pdf_object_ref:n
% ,\pdf_object_ref_last:
% ,\pdf_object_unnamed_write:nn
-% ,\pdf_object_unnamed_write:nx
+% ,\pdf_object_unnamed_write:ne
% ,\pdf_object_write:nnn
% ,\pdf_string_from_unicode:nnN
% ,\pdfannot_box_ref_last:
% ,\pdfannot_dict_put:nnn
-% ,\pdfannot_dict_put:nnx
+% ,\pdfannot_dict_put:nne
% ,\pdfannot_dict_remove:nn
% ,\pdfannot_widget_box:nnn
% ,\pdfdict_if_empty:nTF
@@ -436,7 +436,7 @@
% ,\pdfdict_put:nnn
% ,\pdfdict_remove:nn
% ,\pdfdict_use:n
-% ,\pdfdict_put:nnx
+% ,\pdfdict_put:nne
% ,\pdfmanagement_add:nnn
% ,\pdfmeta_standard_verify:nTF
% ,\pdfxform_if_exist:nTF
@@ -608,7 +608,7 @@
\cs_if_exist:cTF { @@_action_reset_#1: }
{
\use:c { @@_action_reset_#1: }
- \pdfannot_dict_put:nnx{widget}
+ \pdfannot_dict_put:nne{widget}
{A}
{\tl_use:c { c_@@_action_reset_#1_tl } }
}
@@ -626,7 +626,7 @@
\cs_if_exist:cTF { @@_action_submit_#1: }
{
\use:c { @@_action_submit_#1: }
- \pdfannot_dict_put:nnx{widget}
+ \pdfannot_dict_put:nne{widget}
{A}
{\tl_use:c { c_@@_action_submit_#1_tl } }
}
@@ -641,8 +641,8 @@
import .code:n =
{
\pdf_string_from_unicode:nnN {utf8/string}{#1}\l_@@_tmpa_str
- \pdf_object_unnamed_write:nx {dict}{/Type/Action/S/ImportData/F\l_@@_tmpa_str}
- \pdfannot_dict_put:nnx{widget}
+ \pdf_object_unnamed_write:ne {dict}{/Type/Action/S/ImportData/F\l_@@_tmpa_str}
+ \pdfannot_dict_put:nne{widget}
{A}
{\pdf_object_ref_last: }
}
@@ -714,25 +714,25 @@
\group_begin:
\seq_clear:N \l_@@_action_Fields_seq
\keys_set:nn { pdffield / action }{ #2 }
- \pdf_object_unnamed_write:nx
+ \pdf_object_unnamed_write:ne
{ array }
{ \seq_use:Nn \l_@@_action_Fields_seq {~} }
\tl_if_empty:NF \l_@@_action_next_tl
{
- \pdfdict_put:nnx {l_@@/ResetForm}{Next}{\l_@@_action_next_tl}
+ \pdfdict_put:nne {l_@@/ResetForm}{Next}{\l_@@_action_next_tl}
}
- \pdfdict_put:nnx
+ \pdfdict_put:nne
{ l_@@/ResetForm }
{ Fields }
{ \pdf_object_ref_last: }
- \pdfdict_put:nnx
+ \pdfdict_put:nne
{ l_@@/ResetForm }
{ Flags }
{ \bitset_item:Nn\l_@@_Flags_bitset{Include/Exclude} }
- \pdf_object_unnamed_write:nx
+ \pdf_object_unnamed_write:ne
{ dict }
{ \pdfdict_use:n{l_@@/ResetForm} }
- \tl_const:cx { c_@@_action_reset_#1_tl } { \pdf_object_ref_last: }
+ \tl_const:ce { c_@@_action_reset_#1_tl } { \pdf_object_ref_last: }
\cs_gset_eq:cN {@@_action_reset_#1:} \prg_do_nothing:
\group_end:
}
@@ -764,30 +764,30 @@
\bitset_clear:N \l_@@_Flags_bitset
\keys_set:nn {pdffield/action}{#2}
\use:c{ @@_action_flags_\l_@@_action_export_tl :}
- \pdfdict_put:nnx
+ \pdfdict_put:nne
{ l_@@/SubmitForm }
{ Flags }
{ \bitset_to_arabic:N \l_@@_Flags_bitset }
\tl_if_empty:NF \l_@@_action_next_tl
{
- \pdfdict_put:nnx {l_@@/SubmitForm}{Next}{\l_@@_action_next_tl}
+ \pdfdict_put:nne {l_@@/SubmitForm}{Next}{\l_@@_action_next_tl}
}
\bool_if:NTF \l_@@_url_encode_bool
{ \pdf_string_from_unicode:nnN { utf8/URI } {#3}\l_@@_tmpa_str }
{ \pdf_string_from_unicode:nnN { utf8/string }{#3}\l_@@_tmpa_str }
- \pdf_object_unnamed_write:nx {dict}
+ \pdf_object_unnamed_write:ne {dict}
{
/FS/URL
/F \l_@@_tmpa_str
}
- \pdfdict_put:nnx
+ \pdfdict_put:nne
{ l_@@/SubmitForm }
{ F }
{ \pdf_object_ref_last: }
- \pdf_object_unnamed_write:nx
+ \pdf_object_unnamed_write:ne
{ dict }
{ \pdfdict_use:n{ l_@@/SubmitForm } }
- \tl_const:cx { c_@@_action_submit_#1_tl } { \pdf_object_ref_last: }
+ \tl_const:ce { c_@@_action_submit_#1_tl } { \pdf_object_ref_last: }
\cs_gset_eq:cN { @@_action_submit_#1: } \prg_do_nothing:
\group_end:
}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
index 46ae5b82f2..11934af61c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
index 1a053e7180..cb16c8f00d 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
@@ -64,7 +64,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
% \begin{documentation}
@@ -486,14 +486,14 @@
,checked .choice:
,checked / false .code:n =
{
- \pdfdict_put:nnx { l_@@/field }{V} { /Off }
- \pdfdict_put:nnx { l_@@/field }{DV}{ /Off }
+ \pdfdict_put:nne { l_@@/field }{V} { /Off }
+ \pdfdict_put:nne { l_@@/field }{DV}{ /Off }
\pdfannot_dict_put:nnn {widget}{AS}{ /Off }
}
,checked / true .code:n =
{
- \pdfdict_put:nnx { l_@@/field }{V} { /Yes }
- \pdfdict_put:nnx { l_@@/field }{DV}{ /Yes }
+ \pdfdict_put:nne { l_@@/field }{V} { /Yes }
+ \pdfdict_put:nne { l_@@/field }{DV}{ /Yes }
\pdfannot_dict_put:nnn {widget}{AS}{ /Yes }
}
,checked .default:n = {true}
@@ -504,14 +504,14 @@
,__value .choice:
,__value / Off .code:n =
{
- \pdfdict_put:nnx { l_@@/field }{V} { /Off }
- \pdfdict_put:nnx { l_@@/field }{DV}{ /Off }
+ \pdfdict_put:nne { l_@@/field }{V} { /Off }
+ \pdfdict_put:nne { l_@@/field }{DV}{ /Off }
\pdfannot_dict_put:nnn {widget}{AS}{ /Off }
}
,__value / Yes .code:n =
{
- \pdfdict_put:nnx { l_@@/field }{V} { /Yes }
- \pdfdict_put:nnx { l_@@/field }{DV}{ /Yes }
+ \pdfdict_put:nne { l_@@/field }{V} { /Yes }
+ \pdfdict_put:nne { l_@@/field }{DV}{ /Yes }
\pdfannot_dict_put:nnn {widget}{AS}{ /Yes }
}
}
@@ -542,14 +542,14 @@
\pdf_object_if_exist:nF {@@/checkbox/AP/#1}
{
\pdf_object_new:n {@@/checkbox/AP/#1}
- \pdf_object_write:nnx
+ \pdf_object_write:nne
{@@/checkbox/AP/#1} { dict }
{
/Yes ~ \pdfxform_ref:n { #1/Yes}
/Off ~ \pdfxform_ref:n { #1/Off}
}
}
- \pdfannot_dict_put:nnx {widget/AP}{#2}{\pdf_object_ref:n{@@/checkbox/AP/#1}}
+ \pdfannot_dict_put:nne {widget/AP}{#2}{\pdf_object_ref:n{@@/checkbox/AP/#1}}
}
{
\msg_error:nnnn{pdffield}{appearance-missing}{#1}{#3}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
index d6e06870ad..3ebc6e7caa 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
index 5b9993158f..23d142d089 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
% \begin{documentation}
@@ -369,14 +369,14 @@
% ,\pdf_object_ref:n
% ,\pdf_object_ref_last:
% ,\pdf_object_unnamed_write:nn
-% ,\pdf_object_unnamed_write:nx
-% ,\pdf_object_write:nnx
+% ,\pdf_object_unnamed_write:ne
+% ,\pdf_object_write:nne
% ,\pdf_object_write:nnn
% ,\pdf_string_from_unicode:nnN
% ,\pdfannot_box_ref_last:
% ,\pdfannot_dict_put:nnn
-% ,\pdfannot_dict_put:nnx
-% ,\pdfdict_put:nnx
+% ,\pdfannot_dict_put:nne
+% ,\pdfdict_put:nne
% ,\pdfannot_dict_remove:nn
% ,\pdfannot_widget_box:nnn
% ,\pdfdict_if_empty:nTF
@@ -470,7 +470,7 @@
\seq_map_indexed_inline:Nn \l_@@_choice_values_seq
{
\pdf_string_from_unicode:nnN{utf16/hex}{##2}\l_@@_tmpa_str
- \tl_set:Nx \l_@@_tmpa_tl {\seq_item:Nn \l_@@_choice_displayvalues_seq {##1} }
+ \tl_set:Ne \l_@@_tmpa_tl {\seq_item:Nn \l_@@_choice_displayvalues_seq {##1} }
\tl_if_empty:NTF \l_@@_tmpa_tl
{
\seq_put_right:NV \l_@@_choice_opt_seq \l_@@_tmpa_str
@@ -478,12 +478,12 @@
{
\exp_args:NnV
\pdf_string_from_unicode:nnN{utf16/hex}\l_@@_tmpa_tl\l_@@_tmpb_str
- \seq_put_right:Nx \l_@@_choice_opt_seq
+ \seq_put_right:Ne \l_@@_choice_opt_seq
{ [ \l_@@_tmpa_str\c_space_tl\l_@@_tmpb_str] }
}
}
- \pdf_object_unnamed_write:nx {array}{\seq_use:Nn\l_@@_choice_opt_seq {~}}
- \pdfdict_put:nnx { l_@@/field }{Opt} { \pdf_object_ref_last: }
+ \pdf_object_unnamed_write:ne {array}{\seq_use:Nn\l_@@_choice_opt_seq {~}}
+ \pdfdict_put:nne { l_@@/field }{Opt} { \pdf_object_ref_last: }
% \end{macrocode}
% Now we handle the V value. If MultiSelect is set, we use the full
% displayvalues seq, if not only the first value.
@@ -495,14 +495,14 @@
{
\pdf_string_from_unicode:nnN{utf16/hex}{##1}\l_@@_tmpa_str
\tl_put_right:NV \l_@@_tmpa_tl \l_@@_tmpa_str
- \pdfdict_put:nnx { l_@@/field }{V} { [ \l_@@_tmpa_tl ] }
+ \pdfdict_put:nne { l_@@/field }{V} { [ \l_@@_tmpa_tl ] }
}
}
{
- \tl_set:Nx \l_@@_tmpa_tl {\seq_item:Nn \l_@@_choice_defaultvalues_seq {1} }
+ \tl_set:Ne \l_@@_tmpa_tl {\seq_item:Nn \l_@@_choice_defaultvalues_seq {1} }
\exp_args:NnV
\pdf_string_from_unicode:nnN{utf16/hex}\l_@@_tmpa_tl\l_@@_tmpb_str
- \pdfdict_put:nnx { l_@@/field }{V} { \l_@@_tmpb_str }
+ \pdfdict_put:nne { l_@@/field }{V} { \l_@@_tmpb_str }
}
% \end{macrocode}
% now we create the field and set it as parent for the following annotation.
@@ -605,7 +605,7 @@
}
,top-index .code:n =
{
- \pdfdict_put:nnx {l_@@/field}{TI}{\int_eval:n{#1-1}}
+ \pdfdict_put:nne {l_@@/field}{TI}{\int_eval:n{#1-1}}
}
}
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
index c8c02c3dd7..3bf4f3e933 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
index 7471de15f8..38f3b91b12 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
@@ -55,7 +55,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
% \begin{documentation}
@@ -82,8 +82,8 @@
% \group_begin:
% \tl_set:Nn\l_tmpa_tl{app.alert('Hello!~I\'m~Bär!',3,0);}
% \regex_replace_once:nnN{ä}{\x5Cu00E4}\l_tmpa_tl{}
-% \pdf_object_unnamed_write:nx{stream}{{}{\exp_not:o{\l_tmpa_tl}}}
-% \pdfannot_dict_put:nnx{widget}{A}{<</S/JavaScript /JS~\pdf_object_ref_last:>>}
+% \pdf_object_unnamed_write:ne{stream}{{}{\exp_not:o{\l_tmpa_tl}}}
+% \pdfannot_dict_put:nne{widget}{A}{<</S/JavaScript /JS~\pdf_object_ref_last:>>}
% \pdffield_pushbutton:n{name=bear,appearance=pdffield/bear,width=23pt,height=30pt,depth=10pt}
% \group_end:
% \ExplSyntaxOff
@@ -93,9 +93,9 @@
%^^A \group_begin:
%^^A \tl_set:Nn\l_tmpa_tl{app.alert('Hello!~Im~Bär!',3,0);}
%^^A \regex_replace_once:nnN{ä}{\x5Cu00E4}\l_tmpa_tl{}
-%^^A \pdf_object_unnamed_write:nx{stream}{{}{\exp_not:o{\l_tmpa_tl}}}
-%^^A \pdf_object_unnamed_write:nx{dict}{/S/JavaScript /JS~\pdf_object_ref_last:}
-%^^A \pdfannot_dict_put:nnx{widget}{A}{\pdf_object_ref_last:}
+%^^A \pdf_object_unnamed_write:ne{stream}{{}{\exp_not:o{\l_tmpa_tl}}}
+%^^A \pdf_object_unnamed_write:ne{dict}{/S/JavaScript /JS~\pdf_object_ref_last:}
+%^^A \pdfannot_dict_put:nne{widget}{A}{\pdf_object_ref_last:}
%^^A \pdffield_pushbutton:n{name=bear,appearance=pdffield/bear,width=23pt,height=30pt,depth=10pt}
%^^A \group_end:%
% \bigskip
@@ -318,8 +318,8 @@
% ,\dim_set:N
% ,\endcsname
% ,\exp_args:Ne
-% ,\exp_args:Nnx
-% ,\exp_args:Nx
+% ,\exp_args:Nne
+% ,\exp_args:Ne
% ,\fboxsep
% ,\group_begin:
% ,\group_end:
@@ -355,7 +355,7 @@
% ,\pdf_string_from_unicode:nnN
% ,\pdfannot_box_ref_last:
% ,\pdfannot_dict_put:nnn
-% ,\pdfannot_dict_put:nnx
+% ,\pdfannot_dict_put:nne
% ,\pdfannot_dict_remove:nn
% ,\pdfannot_widget_box:nnn
% ,\pdfdict_if_empty:nTF
@@ -442,7 +442,7 @@
\cs_new_protected:Npn \@@_pushbutton_default_appearances:
{
\int_gincr:N \g_@@_pushbutton_cnt_int
- \exp_args:Nx
+ \exp_args:Ne
\pdffield_appearance:nn {pdffield/pushbutton/default-\int_use:N \g_@@_pushbutton_cnt_int}
{
\draw_begin:
@@ -517,7 +517,7 @@
\draw_box_use:N \l_tmpa_box
\draw_end:
}
- \exp_args:Nx
+ \exp_args:Ne
\pdffield_appearance:nn {pdffield/pushbutton/defaultrollover-\int_use:N \g_@@_pushbutton_cnt_int}
{
\draw_begin:
@@ -591,7 +591,7 @@
\draw_box_use:N \l_tmpa_box
\draw_end:
}
- \exp_args:Nx
+ \exp_args:Ne
\pdffield_appearance:nn {pdffield/pushbutton/defaultdown-\int_use:N \g_@@_pushbutton_cnt_int}
{
\draw_begin:
@@ -723,7 +723,7 @@
\tl_if_empty:NT\l_@@_pushbutton_appearance_code_tl
{
\@@_pushbutton_default_appearances:
- \exp_args:Nnx
+ \exp_args:Nne
\keys_set:nn {pdffield}
{
appearance = pdffield/pushbutton/default-\int_eval:n{ \g_@@_pushbutton_cnt_int},
@@ -751,7 +751,7 @@
{
\pdfxform_if_exist:nTF { #1 }
{
- \pdfannot_dict_put:nnx {widget/AP}{#2}{\pdfxform_ref:n{#1}}
+ \pdfannot_dict_put:nne {widget/AP}{#2}{\pdfxform_ref:n{#1}}
}
{
\msg_error:nnnn{pdffield}{appearance-missing}{#1}{#3}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
index c561ea10a5..afb6ed1e8e 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
index 8098d4684c..3c82cdde97 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
@@ -83,7 +83,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
% \begin{documentation}
@@ -519,14 +519,14 @@
% ,\pdf_object_ref:n
% ,\pdf_object_ref_last:
% ,\pdf_object_unnamed_write:nn
-% ,\pdf_object_unnamed_write:nx
-% ,\pdf_object_write:nnx
+% ,\pdf_object_unnamed_write:ne
+% ,\pdf_object_write:nne
% ,\pdf_object_write:nnn
% ,\pdf_string_from_unicode:nnN
% ,\pdfannot_box_ref_last:
% ,\pdfannot_dict_put:nnn
-% ,\pdfannot_dict_put:nnx
-% ,\pdfdict_put:nnx
+% ,\pdfannot_dict_put:nne
+% ,\pdfdict_put:nne
% ,\pdfannot_dict_remove:nn
% ,\pdfannot_widget_box:nnn
% ,\pdfdict_if_empty:nTF
@@ -708,19 +708,19 @@
% The object is written at the end of the document.
% \begin{macrocode}
\pdf_object_new:n {@@/field/@@/radio-Opt/#1}
- \pdfdict_put:nnx { l_@@/field }{Opt} { \pdf_object_ref:n {@@/field/@@/radio-Opt/#1} }
+ \pdfdict_put:nne { l_@@/field }{Opt} { \pdf_object_ref:n {@@/field/@@/radio-Opt/#1} }
\seq_new:c { g_@@_radio_opt_#1_seq }
\hook_gput_code:nnn {shipout/lastpage}{pdffield/radio}
{
- \pdf_object_write:nnx
+ \pdf_object_write:nne
{@@/field/@@/radio-Opt/#1} { array }
{\seq_use:cn {g_@@_radio_opt_#1_seq}{~}}
}
% \end{macrocode}
% The default value is retrieved through a label:
% \begin{macrocode}
- \pdfdict_put:nnx { l_@@/field }{V} { /\@@_property_ref:nn{#1}{pdfradioindex} }
- \pdfdict_put:nnx { l_@@/field }{DV} { /\@@_property_ref:nn{#1}{pdfradioindex} }
+ \pdfdict_put:nne { l_@@/field }{V} { /\@@_property_ref:nn{#1}{pdfradioindex} }
+ \pdfdict_put:nne { l_@@/field }{DV} { /\@@_property_ref:nn{#1}{pdfradioindex} }
% \end{macrocode}
% now we create the field and set it as parent for the following annotation.
% \begin{macrocode}
@@ -828,8 +828,8 @@
{
\@@_property_ref:Vn\l_@@_fieldID_tl{pdfradioindex}
}
- { \pdfannot_dict_put:nnx {widget}{AS}{/\@@_property_ref:Vn\l_@@_fieldID_tl{pdfradioindex}} }
- { \pdfannot_dict_put:nnx {widget}{AS}{/Off} }
+ { \pdfannot_dict_put:nne {widget}{AS}{/\@@_property_ref:Vn\l_@@_fieldID_tl{pdfradioindex}} }
+ { \pdfannot_dict_put:nne {widget}{AS}{/Off} }
% \end{macrocode}
% Now we set the appearances, if no key has been use we take the default.
% \begin{macrocode}
@@ -906,14 +906,14 @@
{
\pdfxform_if_exist:nTF { #1 / Yes }
{
- \pdf_object_unnamed_write:nx
+ \pdf_object_unnamed_write:ne
{dict}
{
/\int_use:N \l_@@_radio_value_num_int
\c_space_tl \pdfxform_ref:n { #1/Yes}
/Off ~ \pdfxform_ref:n { #1/Off}
}
- \pdfannot_dict_put:nnx {widget/AP}{#2}{\pdf_object_ref_last:}
+ \pdfannot_dict_put:nne {widget/AP}{#2}{\pdf_object_ref_last:}
}
{
\msg_error:nnnn{pdffield}{appearance-missing}{#1}{#3}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
index 4b89a4d1d0..8a7962663b 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
index 4ab1db01f8..df091d3e60 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
% \begin{documentation}
@@ -135,7 +135,7 @@
% to use should be active)
% \begin{verbatim}
% \pdffield_textfield:n {name=text,font=F\pdffeedback~fontname\font}
-% \pdfmanagement_add:nxx{Catalog/AcroForm/DR/Font}
+% \pdfmanagement_add:nee{Catalog/AcroForm/DR/Font}
% {F\pdffeedback~fontname\font}
% {\pdffeedback~fontobjnum\font \c_space_tl 0 \c_space_tl R}
% \end{verbatim}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
index 491aff2815..38c9534fda 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
index 1e1eb23f1e..9261078e98 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
@@ -69,7 +69,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
% \begin{documentation}
@@ -287,7 +287,7 @@
%
%
% \begin{verbatim}
-% \pdfmanagement_add:nnx{Catalog/AcroForm}{Fields}{<obj ref>}
+% \pdfmanagement_add:nne{Catalog/AcroForm}{Fields}{<obj ref>}
% \end{verbatim}
%
% \end{function}
@@ -897,7 +897,7 @@
% ,\dim_new:N
% ,\endcsname
% ,\exp_args:Ne
-% ,\exp_args:Nnx
+% ,\exp_args:Nne
% ,\exp_args:NV
% ,\group_begin:
% ,\group_end:
@@ -910,7 +910,7 @@
% ,\keys_set:nn
% ,\mode_leave_vertical:
% ,\msg_error:nnnn
-% ,\msg_error:nnx
+% ,\msg_error:nne
% ,\msg_new:nnn
% ,\msg_warning:nn
% ,\msg_warning:nnn
@@ -922,23 +922,23 @@
% ,\pdf_object_new:n
% ,\pdf_object_ref:n
% ,\pdf_object_ref_last:
-% ,\pdf_object_unnamed_write:nx
-% ,\pdf_object_write:nnx
+% ,\pdf_object_unnamed_write:ne
+% ,\pdf_object_write:nne
% ,\pdf_string_from_unicode:nnN
% ,\pdfannot_box_ref_last:
% ,\pdfannot_dict_put:nnn
-% ,\pdfannot_dict_put:nnx
+% ,\pdfannot_dict_put:nne
% ,\pdfannot_dict_remove:nn
% ,\pdfannot_widget_box:nnn
% ,\pdfdict_if_empty:nTF
% ,\pdfdict_if_empty:nF
% ,\pdfdict_new:n
% ,\pdfdict_put:nnn
-% ,\pdfdict_put:nnx
+% ,\pdfdict_put:nne
% ,\pdfdict_remove:nn
% ,\pdfdict_use:n
% ,\pdfmanagement_add:nnn
-% ,\pdfmanagement_add:nnx
+% ,\pdfmanagement_add:nne
% ,\pdfmeta_standard_verify:nTF
% ,\pdfmeta_standard_verify:nT
% ,\pdfmeta_standard_verify:nF
@@ -948,7 +948,7 @@
% ,\ProvidesExplPackage
% ,\rule
% ,\seq_gput_right:Nn
-% ,\seq_gput_right:cx
+% ,\seq_gput_right:ce
% ,\seq_if_exist:NTF
% ,\seq_if_exist:cTF
% ,\seq_new:N
@@ -972,7 +972,7 @@
%<*package>
%<@@=pdffield>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{l3pdffield-testphase}{2023-10-09}{0.96a}%
+\ProvidesExplPackage{l3pdffield-testphase}{2023-11-05}{0.96b}%
{form fields}
% \end{macrocode}
% \subsection{hyperref specific command}
@@ -1169,7 +1169,7 @@
\pdf_object_new:n {@@/field/Kids/#1}
\tl_if_empty:NTF \l_@@_currentparent_tl
{
- \pdfmanagement_add:nnx
+ \pdfmanagement_add:nne
{ Catalog / AcroForm }
{ Fields }
{\pdf_object_ref:n {@@/field/#1} }
@@ -1178,22 +1178,22 @@
\exp_args:Ne
\pdf_object_if_exist:nTF {@@/field/\l_@@_currentparent_tl}
{
- \pdfdict_put:nnx { l_@@/field }{Parent}
+ \pdfdict_put:nne { l_@@/field }{Parent}
{\exp_args:Ne \pdf_object_ref:n{@@/field/\l_@@_currentparent_tl}}
- \seq_gput_right:cx {g_@@_field/Kids/\l_@@_currentparent_tl _seq}
+ \seq_gput_right:ce {g_@@_field/Kids/\l_@@_currentparent_tl _seq}
{ \exp_args:Ne \pdf_object_ref:n{@@/field/#1}}
}
{
- \msg_error:nnx {pdffield}{parent-field-missing}{\l_@@_currentparent_tl}
+ \msg_error:nne {pdffield}{parent-field-missing}{\l_@@_currentparent_tl}
}
}
\seq_new:c {g_@@_field/Kids/#1_seq}
- \pdfdict_put:nnx {l_@@/field}
+ \pdfdict_put:nne {l_@@/field}
{Kids}
{
\pdf_object_ref:n {@@/field/Kids/#1}
}
- \pdfdict_put:nnx {l_@@/field}
+ \pdfdict_put:nne {l_@@/field}
{Ff}
{\bitset_to_arabic:N \l_@@_Ff_bitset }
\pdfdict_if_empty:nF{l_@@/field/AA}
@@ -1201,29 +1201,29 @@
\pdfmeta_standard_verify:nT
{annot_widget_no_AA}
{
- \pdf_object_unnamed_write:nx {dict}{\pdfdict_use:n {l_@@/field/AA}}
- \pdfdict_put:nnx
+ \pdf_object_unnamed_write:ne {dict}{\pdfdict_use:n {l_@@/field/AA}}
+ \pdfdict_put:nne
{l_@@/field}
{AA}
{\pdf_object_ref_last:}
\pdfdict_get:nnN {l_@@/field/AA}{C}\l_@@_tmpa_tl
\quark_if_no_value:NF \l_@@_tmpa_tl
{
- \prop_gput:Nxx\g_@@_CO_sortkeys_prop
+ \prop_gput:Nee\g_@@_CO_sortkeys_prop
{ \pdf_object_ref:n {@@/field/#1} }{ \l_@@_CO_sortkey_str }
- \seq_gput_right:Nx\g_@@_CO_sortkeys_seq
+ \seq_gput_right:Ne\g_@@_CO_sortkeys_seq
{ \pdf_object_ref:n {@@/field/#1} }
}
}
}
\hook_gput_code:nnn {shipout/lastpage}{pdffield} %xetex needs this ...
{
- \pdf_object_write:nnx {@@/field/Kids/#1} { array }
+ \pdf_object_write:nne {@@/field/Kids/#1} { array }
{
\seq_use:cn{g_@@_field/Kids/#1_seq}{~}
}
}
- \pdf_object_write:nnx {@@/field/#1} { dict } { \pdfdict_use:n {l_@@/field} }
+ \pdf_object_write:nne {@@/field/#1} { dict } { \pdfdict_use:n {l_@@/field} }
}
\hook_gput_code:nnn {shipout/lastpage}{pdffield}
@@ -1239,7 +1239,7 @@
{ \sort_return_swapped: }
{ \sort_return_same: }
}
- \pdfmanagement_add:nnx
+ \pdfmanagement_add:nne
{ Catalog / AcroForm }
{ CO }
{ \seq_use:Nn \g_@@_CO_sortkeys_seq{~} }
@@ -1274,21 +1274,21 @@
\bitset_set_false:Nn \l_@@_F_bitset {Invisible}
\bitset_set_false:Nn \l_@@_F_bitset {NoView}
}
- \pdfannot_dict_put:nnx {widget}{F}{ \bitset_to_arabic:N \l_@@_F_bitset }
+ \pdfannot_dict_put:nne {widget}{F}{ \bitset_to_arabic:N \l_@@_F_bitset }
\@@_tag_add_struct_parent:
\tl_if_empty:NF \l_@@_currentparent_tl
{
\exp_args:Ne
\pdf_object_if_exist:nTF { @@/field/\l_@@_currentparent_tl }
{
- \pdfannot_dict_put:nnx {widget}{Parent}
+ \pdfannot_dict_put:nne {widget}{Parent}
{
\exp_args:Ne
\pdf_object_ref:n{@@/field/\l_@@_currentparent_tl}
}
}
{
- \msg_error:nnx { pdffield }{parent-field-missing}{\l_@@_currentparent_tl}
+ \msg_error:nne { pdffield }{parent-field-missing}{\l_@@_currentparent_tl}
}
}
\mode_leave_vertical:
@@ -1303,19 +1303,19 @@
{ \l_@@_annot_dp_dim }
\hfill
}
- \tl_gset:Nx \g_@@_annot_ref_last_tl { \pdfannot_box_ref_last: }
+ \tl_gset:Ne \g_@@_annot_ref_last_tl { \pdfannot_box_ref_last: }
\exp_args:NV \@@_tag_add_objr:n \g_@@_annot_ref_last_tl
\@@_tag_struct_end:
\tl_if_empty:NF \l_@@_currentparent_tl
{
\seq_if_exist:cTF {g_@@_field/Kids/\l_@@_currentparent_tl _seq}
{
- \seq_gput_right:cx
+ \seq_gput_right:ce
{g_@@_field/Kids/\l_@@_currentparent_tl _seq}
{ \g_@@_annot_ref_last_tl }
}
{
- \msg_error:nnx { pdffield}{parent-field-missing}{\l_@@_currentparent_tl}
+ \msg_error:nne { pdffield}{parent-field-missing}{\l_@@_currentparent_tl}
}
}
}
@@ -1357,14 +1357,14 @@
{
\bool_if:NT \l_@@_tag_bool
{
- \pdfannot_dict_put:nnx {widget}{StructParent}{ \tag_struct_parent_int: }
+ \pdfannot_dict_put:nne {widget}{StructParent}{ \tag_struct_parent_int: }
}
}
\cs_set_protected:Npn \@@_tag_add_objr:n #1
{
\bool_if:NT \l_@@_tag_bool
{
- \exp_args:Nnx
+ \exp_args:Nne
\tag_struct_insert_annot:nn {#1}{ \tag_struct_parent_int: }
}
}
@@ -1437,7 +1437,7 @@
\pdf_string_from_unicode:nnN {utf8/string-raw}{#1}\l_@@_tmpa_str
\str_if_in:NnT \l_@@_tmpa_str {.}
{
- \msg_error:nnx {pdffield}{no-period}{\l_@@_tmpa_str}
+ \msg_error:nne {pdffield}{no-period}{\l_@@_tmpa_str}
}
\str_if_empty:NTF\l_@@_tmpa_str
{
@@ -1445,7 +1445,7 @@
\pdfdict_remove:nn { l_@@/field }{T}
}
{
- \pdfdict_put:nnx { l_@@/field }{T}{(\l_@@_tmpa_str)}
+ \pdfdict_put:nne { l_@@/field }{T}{(\l_@@_tmpa_str)}
}
}
,T .value_required:n = true
@@ -1462,7 +1462,7 @@
}
{
\pdf_string_from_unicode:nnN {utf16/hex}{#1}\l_@@_tmpa_str
- \pdfdict_put:nnx { l_@@/field }{TU}{\l_@@_tmpa_str}
+ \pdfdict_put:nne { l_@@/field }{TU}{\l_@@_tmpa_str}
}
}
,TU .groups:n = {field}
@@ -1476,7 +1476,7 @@
}
{
\pdf_string_from_unicode:nnN {utf16/hex}{#1}\l_@@_tmpa_str
- \pdfdict_put:nnx { l_@@/field }{TM}{\l_@@_tmpa_str}
+ \pdfdict_put:nne { l_@@/field }{TM}{\l_@@_tmpa_str}
}
}
,TM .groups:n = {field}
@@ -1515,7 +1515,7 @@
}
{
\@@_V_handler:nN{#1}\l_@@_tmpa_str
- \pdfdict_put:nnx { l_@@/field }{V}{ \l_@@_tmpa_str }
+ \pdfdict_put:nne { l_@@/field }{V}{ \l_@@_tmpa_str }
}
}
,V .groups:n = {field}
@@ -1527,7 +1527,7 @@
}
{
\@@_V_handler:nN{#1}\l_@@_tmpa_str
- \pdfdict_put:nnx { l_@@/field }{DV}{ \l_@@_tmpa_str }
+ \pdfdict_put:nne { l_@@/field }{DV}{ \l_@@_tmpa_str }
}
}
,DV .groups:n = {field}
@@ -1538,7 +1538,7 @@
\pdfdict_remove:nn { l_@@/field }{MaxLen}
}
{
- \pdfdict_put:nnx { l_@@/field }{MaxLen}{ #1 }
+ \pdfdict_put:nne { l_@@/field }{MaxLen}{ #1 }
}
}
,MaxLen .groups:n = {field}
@@ -1549,7 +1549,7 @@
\pdfdict_remove:nn { l_@@/field }{Lock}
}
{
- \pdfdict_put:nnx { l_@@/field }{Lock}{ \pdf_object_ref:n{#1} }
+ \pdfdict_put:nne { l_@@/field }{Lock}{ \pdf_object_ref:n{#1} }
}
}
,Lock .groups:n = {field}
@@ -1560,7 +1560,7 @@
\pdfdict_remove:nn { l_@@/field }{SV}
}
{
- \pdfdict_put:nnx { l_@@/field }{SV}{ \pdf_object_ref:n{#1} }
+ \pdfdict_put:nne { l_@@/field }{SV}{ \pdf_object_ref:n{#1} }
}
}
,SV .groups:n = {field}
@@ -1571,7 +1571,7 @@
\pdfdict_remove:nn { l_@@/field }{Opt}
}
{
- \pdfdict_put:nnx { l_@@/field }{Opt}{ \pdf_object_ref:n{#1} }
+ \pdfdict_put:nne { l_@@/field }{Opt}{ \pdf_object_ref:n{#1} }
}
}
,Opt .groups:n = {field}
@@ -1582,7 +1582,7 @@
\pdfdict_remove:nn { l_@@/field }{TI}
}
{
- \pdfdict_put:nnx { l_@@/field }{TI}{ #1 }
+ \pdfdict_put:nne { l_@@/field }{TI}{ #1 }
}
}
,TI .groups:n = {field}
@@ -1593,7 +1593,7 @@
\pdfdict_remove:nn { l_@@/field }{I}
}
{
- \pdfdict_put:nnx { l_@@/field }{I}{ \pdf_object_ref:n{#1} }
+ \pdfdict_put:nne { l_@@/field }{I}{ \pdf_object_ref:n{#1} }
}
}
,I .groups:n = {field}
@@ -1648,7 +1648,7 @@
\pdfdict_remove:nn {l_@@/field/AA}{#1}
}
{
- \pdfdict_put:nnx {l_@@/field/AA}
+ \pdfdict_put:nne {l_@@/field/AA}
{#1}
{<</S/JavaScript/JS\c_space_tl ##1>>}
}
@@ -1675,7 +1675,7 @@
\keys_define:nn {pdffield}
{
- sortkey .code:n = {\str_set:Nx \l_@@_CO_sortkey_str {\tl_to_str:n{#1}}}
+ sortkey .code:n = {\str_set:Ne \l_@@_CO_sortkey_str {\tl_to_str:n{#1}}}
}
% \end{macrocode}
% \end{macro}
@@ -1692,13 +1692,13 @@
\pdfdict_remove:nn { l_@@/field }{DA}
}
{
- \pdfdict_put:nnx { l_@@/field }{DA}{ (#1) }
+ \pdfdict_put:nne { l_@@/field }{DA}{ (#1) }
}
}
,DA .groups:n = {field}
,Q .choices:nn = {left,center,right}
{
- \pdfdict_put:nnx { l_@@/field }{Q}{ \int_eval:n{\l_keys_choice_int-1} }
+ \pdfdict_put:nne { l_@@/field }{Q}{ \int_eval:n{\l_keys_choice_int-1} }
}
,Q / .code:n = { \pdfdict_remove:nn { l_@@/field }{Q} }
,Q .groups:n = {field}
@@ -1761,7 +1761,7 @@
{
\pdfxform_if_exist:nTF { #1 }
{
- \pdfannot_dict_put:nnx {widget/AP}{#2}
+ \pdfannot_dict_put:nne {widget/AP}{#2}
{
\pdfxform_ref:n {#1}
}
@@ -1785,7 +1785,7 @@
\pdfannot_dict_remove:nn { widget }{AS}
}
{
- \pdfannot_dict_put:nnx {widget}{AS}{\pdf_name_from_unicode_e:n{#1}}
+ \pdfannot_dict_put:nne {widget}{AS}{\pdf_name_from_unicode_e:n{#1}}
}
}
,AS .groups:n = annot
@@ -1847,7 +1847,7 @@
{
MK/R .choices:nn = {0,90,180,270}
{
- \pdfannot_dict_put:nnx {widget/MK}{R}{#1}
+ \pdfannot_dict_put:nne {widget/MK}{R}{#1}
}
,MK/R / .code:n =
{
@@ -1868,7 +1868,7 @@
{
\@@_color_set:nn {@@/tmp}{#1}
\color_export:nnN{@@/tmp}{space-sep-rgb}\l_@@_tmpa_tl
- \pdfannot_dict_put:nnx {widget/MK}{BC}{[\l_@@_tmpa_tl]}
+ \pdfannot_dict_put:nne {widget/MK}{BC}{[\l_@@_tmpa_tl]}
}
}
,MK/BC .groups:n = annot
@@ -1886,7 +1886,7 @@
{
\@@_color_set:nn {@@/tmp}{#1}
\color_export:nnN{@@/tmp}{space-sep-rgb}\l_@@_tmpa_tl
- \pdfannot_dict_put:nnx {widget/MK}{BG}{[\l_@@_tmpa_tl]}
+ \pdfannot_dict_put:nne {widget/MK}{BG}{[\l_@@_tmpa_tl]}
}
}
,MK/BG .groups:n = annot
@@ -1905,7 +1905,7 @@
}
{
\pdf_string_from_unicode:nnN {utf8/string}{#1}\l_@@_tmpa_str
- \pdfannot_dict_put:nnx {widget/MK}{CA}{\l_@@_tmpa_str}
+ \pdfannot_dict_put:nne {widget/MK}{CA}{\l_@@_tmpa_str}
}
}
,MK/CA .groups:n = annot
@@ -1923,7 +1923,7 @@
}
{
\pdf_string_from_unicode:nnN {utf8/string}{#1}\l_@@_tmpa_str
- \pdfannot_dict_put:nnx {widget/MK}{RC}{\l_@@_tmpa_str}
+ \pdfannot_dict_put:nne {widget/MK}{RC}{\l_@@_tmpa_str}
}
}
,MK/RC .groups:n = annot
@@ -1941,7 +1941,7 @@
}
{
\pdf_string_from_unicode:nnN {utf8/string}{#1}\l_@@_tmpa_str
- \pdfannot_dict_put:nnx {widget/MK}{AC}{\l_@@_tmpa_str}
+ \pdfannot_dict_put:nne {widget/MK}{AC}{\l_@@_tmpa_str}
}
}
,MK/AC .groups:n = annot
@@ -1966,7 +1966,7 @@
\pdfannot_dict_remove:nn { widget/MK }{#1}
}
{
- \pdfannot_dict_put:nnx {widget/MK}{#1}{##1}
+ \pdfannot_dict_put:nne {widget/MK}{#1}{##1}
}
}
,MK/#1 .groups:n = annot
@@ -2030,7 +2030,7 @@
\pdfannot_dict_remove:nn {widget/AA}{#1}
}
{
- \pdfannot_dict_put:nnx {widget/AA}
+ \pdfannot_dict_put:nne {widget/AA}
{#1}
{<</S/JavaScript/JS\c_space_tl##1>>}
}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
index c121fc5ebf..0f29cb9597 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
index a98883d5c1..08ec26e76f 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
% \begin{documentation}
@@ -182,7 +182,7 @@
% in the |/Filespec| dictionary.
%
% \begin{verbatim}
-% \pdf_object_unnamed_write:nx {fstream}
+% \pdf_object_unnamed_write:ne {fstream}
% {
% {
% /Type /EmbeddedFile
@@ -196,7 +196,7 @@
% }
% {example-image.eps}
% }
-% \tl_set:Nx \l_my_fileobj_tl {\pdf_object_ref_last:}
+% \tl_set:Ne \l_my_fileobj_tl {\pdf_object_ref_last:}
% \end{verbatim}
%
% \begin{itemize}
@@ -226,7 +226,7 @@
% This name tree is a global resource and uncoordinated access can lead to
% clashes and files that are not visible or inaccessible.
% The access here is managed by the \pkg{l3pdfmanagement} module:\\[\smallskipamount]%
-% |\pdfmanagement_add:nnx{Catalog/Names}{EmbeddedFiles}{|\meta{objref}|}|
+% |\pdfmanagement_add:nne{Catalog/Names}{EmbeddedFiles}{|\meta{objref}|}|
%
% \subsection{Commands and tools of these module}
% \begin{function}{file, file/Params, file/streamParams,file/Filespec}
@@ -323,7 +323,7 @@
% The stream should not be too long, at least PS imposes a size limit for strings.
% \end{function}
%
-% \begin{function}{\pdffile_filespec:nnn,\pdffile_filespec:nnx}
+% \begin{function}{\pdffile_filespec:nnn,\pdffile_filespec:nne}
% \begin{syntax}
% \cs{ pdffile_filespec:nnn }\Arg{object name}\Arg{file name}{stream object reference}
% \end{syntax}
@@ -380,11 +380,11 @@
% \pdf_string_from_unicode:nnN {utf16/string}
% {this~is~an~odd~description~with~öäü}
% \l_tmpa_str
-% \pdfdict_put:nnx {l_pdffile/Filespec} {Desc}{\l_tmpa_str}
+% \pdfdict_put:nne {l_pdffile/Filespec} {Desc}{\l_tmpa_str}
% %embeds testinput.txt and calls it grüße.txt
% \pdffile_embed_file:nnn {testinput.txt}{grüße.txt}{mymodule/example1}
% %reference it in the panel
-% \pdfmanagement_add:nnx
+% \pdfmanagement_add:nne
% {Catalog/Names}
% {EmbeddedFiles}
% {\pdf_object_ref:n{mymodule/example1}}
@@ -398,7 +398,7 @@
%
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage{l3pdffile}{2023-10-09}{0.96a}
+\ProvidesExplPackage{l3pdffile}{2023-11-05}{0.96b}
{embedding and referencing files in PDF---LaTeX PDF management testphase bundle}
\RequirePackage{l3pdftools} %temporarly!!
%</header>
@@ -538,7 +538,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \pdffile_embed_show:
{
- \msg_show:nnx
+ \msg_show:nne
{pdffile}{show-files}
{
\prop_map_function:NN {\g_pdffile_embed_prop} \msg_show_item:nn
@@ -573,10 +573,10 @@
\l_@@_ext_str
\l_@@_tmpb_tl
{
- \tl_set:Nx #2 {/Subtype~\pdf_name_from_unicode_e:V \l_@@_tmpb_tl}
+ \tl_set:Ne #2 {/Subtype~\pdf_name_from_unicode_e:V \l_@@_tmpb_tl}
}
{
- \msg_warning:nnx { pdffile }{ mimetype-missing} {#1}
+ \msg_warning:nne { pdffile }{ mimetype-missing} {#1}
\tl_clear:N #2
}
}
@@ -589,7 +589,7 @@
% e.g. result from \@@_mimetype_set:NN
\cs_new_protected:Npn \@@_fstream_write:nN #1 #2
{
- \pdf_object_unnamed_write:nx { fstream }
+ \pdf_object_unnamed_write:ne { fstream }
{
{
#2
@@ -614,7 +614,7 @@
% e.g. result from \@@_mimetype_set:NN
\cs_new_protected:Npn \@@_stream_write:nN #1 #2
{
- \pdf_object_unnamed_write:nx { stream }
+ \pdf_object_unnamed_write:ne { stream }
{
{
#2
@@ -646,9 +646,9 @@
{
\group_begin:
\@@_filename_convert_to_print:nN { #2 } \l_@@_tmpa_str
- \pdfdict_put:nnx {l_pdffile/Filespec}{F} { \l_@@_tmpa_str }
- \pdfdict_put:nnx {l_pdffile/Filespec}{UF}{ \l_@@_tmpa_str }
- \pdf_object_write:nnx { #1 } { dict }
+ \pdfdict_put:nne {l_pdffile/Filespec}{F} { \l_@@_tmpa_str }
+ \pdfdict_put:nne {l_pdffile/Filespec}{UF}{ \l_@@_tmpa_str }
+ \pdf_object_write:nne { #1 } { dict }
{
\pdfdict_use:n { l_pdffile/Filespec}
\tl_if_empty:nF { #3 }
@@ -670,9 +670,9 @@
{
\group_begin:
\@@_filename_convert_to_print:nN { #1 } \l_@@_tmpa_str
- \pdfdict_put:nnx {l_pdffile/Filespec}{F} { \l_@@_tmpa_str }
- \pdfdict_put:nnx {l_pdffile/Filespec}{UF}{ \l_@@_tmpa_str }
- \pdf_object_unnamed_write:nx {dict}
+ \pdfdict_put:nne {l_pdffile/Filespec}{F} { \l_@@_tmpa_str }
+ \pdfdict_put:nne {l_pdffile/Filespec}{UF}{ \l_@@_tmpa_str }
+ \pdf_object_unnamed_write:ne {dict}
{
\pdfdict_use:n { l_pdffile/Filespec}
\tl_if_empty:nF { #2 }
@@ -680,14 +680,14 @@
/EF <</F~#2 /UF~#2>>
}
}
- \tl_gset:Nx\g_@@_tmpa_tl{\pdf_object_ref_last:}
+ \tl_gset:Ne\g_@@_tmpa_tl{\pdf_object_ref_last:}
\group_end:
\tl_set_eq:NN#3\g_@@_tmpa_tl
}
}
\cs_set_eq:NN \pdffile_filespec:nnn \@@_filespec_write:nnn
-\cs_generate_variant:Nn \pdffile_filespec:nnn {nnx}
+\cs_generate_variant:Nn \pdffile_filespec:nnn {nne,nnx}
%#1 {source filename}
%#2 {target filename}
%#3 { filespec object name } (will internally get a prefix! ??)
@@ -712,14 +712,14 @@
\@@_fstream_write:VN
\l_pdffile_source_name_str
\l_@@_automimetype_tl
- \tl_set:Nx \l_@@_embed_ref_tl { \pdf_object_ref_last: }
+ \tl_set:Ne \l_@@_embed_ref_tl { \pdf_object_ref_last: }
}
{
\msg_error:nnn { pdffile }{ file-not-found }{ #1 }
}
}
- \prop_gput:Nnx
+ \prop_gput:Nne
\g_pdffile_embed_prop
{ #3 }
{
@@ -734,7 +734,7 @@
\tl_if_blank:nTF { #2 }
{
\pdf_object_new:n { #3 }
- \exp_args:Nnnx
+ \exp_args:Nnne
\@@_filespec_write:nnn
%#1 dict, #2 target file name, #3 object ref
{ #3 }
@@ -743,7 +743,7 @@
}
{
\pdf_object_new:n { #3 }
- \exp_args:Nnnx
+ \exp_args:Nnne
\@@_filespec_write:nnn
%#1 dict, #2 target file name, #3 object ref
{ #3 }
@@ -765,7 +765,7 @@
\msg_error:nnn { pdffile }{ object-exists } { #3 }
}
{
- \prop_gput:Nnx
+ \prop_gput:Nne
\g_pdffile_embed_prop
{ #3 }
{{stream}{}{\tl_if_blank:nTF {#2}{stream.txt}{\exp_not:n{#2}}}}
@@ -775,9 +775,9 @@
\@@_stream_write:nN
{ #1 }
\l_@@_automimetype_tl
- \tl_set:Nx \l_@@_embed_ref_tl { \pdf_object_ref_last: }
+ \tl_set:Ne \l_@@_embed_ref_tl { \pdf_object_ref_last: }
\pdf_object_new:n { #3 }
- \exp_args:Nnxx
+ \exp_args:Nnee
\@@_filespec_write:nnn
%#1 dict, #2 target file name, #3 object ref
{ #3 }
@@ -794,14 +794,14 @@
\@@_stream_write:nN
{ #1 }
\l_@@_automimetype_tl
- \tl_set:Nx \l_@@_embed_ref_tl { \pdf_object_ref_last: }
- \exp_args:Nxx
+ \tl_set:Ne \l_@@_embed_ref_tl { \pdf_object_ref_last: }
+ \exp_args:Nee
\@@_filespec_write:nnN
%#1 target file name, #2 object ref of stream, #3 object ref of filespec
{ \tl_if_blank:nTF {#2}{stream.txt}{\exp_not:n{#2}} }
{\l_@@_embed_ref_tl}
#3
- \prop_gput:Nxx
+ \prop_gput:Nee
\g_pdffile_embed_prop
{ #3 }
{{stream}{}{\tl_if_blank:nTF {#2}{stream.txt}{\exp_not:n{#2}}}}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
index dc868ba43c..4b75eb1797 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
index 6081864cb6..cdedd54040 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
@@ -57,7 +57,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
% \begin{documentation}
@@ -139,7 +139,7 @@
% \end{function}
% \begin{function}[added = 2020-04-06,updated=2021-07-23]
-% {\pdfmanagement_add:nnn,\pdfmanagement_add:nnx,\pdfmanagement_add:nxx,\pdfmanagement_add:xxx,
+% {\pdfmanagement_add:nnn,\pdfmanagement_add:nne,\pdfmanagement_add:nee,\pdfmanagement_add:eee,
% \PDFManagementAdd}
% \begin{syntax}
% \cs{pdfmanagement_add:nnn} \Arg{resource path} \Arg{name} \Arg{value}
@@ -153,7 +153,7 @@
% keys used in PDF dictionaries (see the l3pdfdict module) the name is escaped
% with \cs{str_convert_pdfname:n} when stored.
% \Arg{value} should be a valid PDF value for this Name in the
-% target dictionary. |\PDFManagementAdd| is a copy of |\pdfmanagement_add:xxx|
+% target dictionary. |\PDFManagementAdd| is a copy of |\pdfmanagement_add:eee|
% and so expands all its arguments.
%
%
@@ -250,7 +250,7 @@
% normally sensible:
% \begin{verbatim}
% \str_set_convert:Nnnn \l_tmpa_str { Grüße }{ default } {utf16/string}
-% \pdfmanagement_add:nnx {Info} {Title}{(\l_tmpa_str)}
+% \pdfmanagement_add:nne {Info} {Title}{(\l_tmpa_str)}
% \end{verbatim}
% \end{function}
%
@@ -539,13 +539,13 @@
% \begin{verbatim}
% \pdf_object_new:n {module/intent}
% \pdf_object_write:nnn {module/intent}{dict}{...}
-% \pdfmanagement_add:nnx {Catalog} {OutputIntents}{\pdf_object_ref:n {module/intent}}
+% \pdfmanagement_add:nne {Catalog} {OutputIntents}{\pdf_object_ref:n {module/intent}}
% \end{verbatim}
%
% or
% \begin{verbatim}
% \pdf_object_unnamed_write:nn {dict} { ... }
-% \pdfmanagement_add:nnx {Catalog} {OutputIntents}{\pdf_object_ref_last:}
+% \pdfmanagement_add:nne {Catalog} {OutputIntents}{\pdf_object_ref_last:}
% \end{verbatim}
%
%
@@ -582,7 +582,7 @@
% the AP names (for appearance streams) use
%
% \begin{verbatim}
-% \pdfmanagement_add:nnx { Catalog / Names / AP } {myAPname} {\pdf_object_ref_last:}
+% \pdfmanagement_add:nne { Catalog / Names / AP } {myAPname} {\pdf_object_ref_last:}
% \end{verbatim}
%
% Remarks:
@@ -632,7 +632,7 @@
%<@@=pdfmanagement>
%<*header>
%
-\ProvidesExplPackage{l3pdfmanagement}{2023-10-09}{0.96a}
+\ProvidesExplPackage{l3pdfmanagement}{2023-11-05}{0.96b}
{Management of core PDF dictionaries (LaTeX PDF management testphase bundle)}
%</header>
% \end{macrocode}
@@ -723,13 +723,13 @@
}
}
{
- \msg_warning:nnx {pdfmanagement}{inactive}
+ \msg_warning:nne {pdfmanagement}{inactive}
{\tl_to_str:n {\pdfmanagement_add:nnn}}
}
}
-\cs_generate_variant:Nn \pdfmanagement_add:nnn {nnx,nxx,xxx}
-\cs_set_eq:NN \PDFManagementAdd \pdfmanagement_add:xxx
+\cs_generate_variant:Nn \pdfmanagement_add:nnn {nne,nee,eee,nnx,nxx,xxx}
+\cs_set_eq:NN \PDFManagementAdd \pdfmanagement_add:eee
% \end{macrocode}
% \subsection{Hooks -- shipout and end of run code}
% Code is executed in three places: At shipout of every page,
@@ -831,7 +831,7 @@
{ @@_handler/#1/#2_gput:n }
{ \use:c {@@_handler/#1/#2_gput:n} {#3} } %special handler
{
- \exp_args:Nnx
+ \exp_args:Nne
\prop_gput:cnn
{ \__kernel_pdfdict_name:n { g__pdf_Core/#1 } }
{ \str_convert_pdfname:n { #2 } }
@@ -846,11 +846,11 @@
}
-\cs_generate_variant:Nn \@@_handler_gput:nnn {nxx}
+\cs_generate_variant:Nn \@@_handler_gput:nnn {nee}
\cs_new_protected:Npn \@@_get:nnN #1 #2 #3 %path,key,macro
{
- \exp_args:Nnx
+ \exp_args:Nne
\prop_get:cnN
{ \__kernel_pdfdict_name:n { g__pdf_Core/#1 } }
{ \str_convert_pdfname:n {#2} } #3
@@ -869,7 +869,7 @@
{ @@_handler/#1/#2_gremove: }
{ \use:c {@@_handler/#1/#2_gremove:} } %special handler
{
- \exp_args:Nnx
+ \exp_args:Nne
\prop_gremove:cn
{ \__kernel_pdfdict_name:n { g__pdf_Core/#1 } }
{ \str_convert_pdfname:n {#2} }
@@ -885,7 +885,7 @@
{
\pdfdict_if_exist:nTF { g__pdf_Core/#1 }
{
- \exp_args:Nnx
+ \exp_args:Nne
\prop_gremove:cn
{ \__kernel_pdfdict_name:n { g__pdf_Core/#1 } }
{ \str_convert_pdfname:n{#2} }
@@ -931,7 +931,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \pdfmanagement_show:n #1
{
- \@@_show:Nn \msg_show:nnxxxx {#1}
+ \@@_show:Nn \msg_show:nneeee {#1}
}
% \end{macrocode}
% \begin{macrocode}
@@ -999,7 +999,7 @@
{
\pdfdict_if_empty:nF { g__pdf_Core/Pages}
{
- \exp_args:Nx \__pdf_backend_Pages_primitive:n
+ \exp_args:Ne \__pdf_backend_Pages_primitive:n
{
\pdfdict_use:n { g__pdf_Core/Pages}
}
@@ -1279,10 +1279,10 @@
{ \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AA } }
{
\pdf_object_new:n { @@/Catalog/AA }
- \pdf_object_write:nnx
+ \pdf_object_write:nne
{ @@/Catalog/AA }{ dict }
{ \pdfdict_use:n { g__pdf_Core/Catalog/AA } }
- \exp_args:Nnx
+ \exp_args:Nne
\__pdf_backend_catalog_gput:nn
{AA}
{
@@ -1309,10 +1309,10 @@
\seq_if_empty:cF { g_@@_/Catalog/AcroForm/Fields_seq }
{
\pdf_object_new:n { @@/Catalog/AcroForm/Fields }
- \pdf_object_write:nnx
+ \pdf_object_write:nne
{ @@/Catalog/AcroForm/Fields } { array }
{ \seq_use:cn { g_@@_/Catalog/AcroForm/Fields_seq } {~} }
- \exp_args:Nnnx
+ \exp_args:Nnne
\prop_gput:cnn %we have to use \prop here to avoid the handler ...
{ \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm } }
{ Fields }
@@ -1321,10 +1321,10 @@
\seq_if_empty:cF { g_@@_/Catalog/AcroForm/CO_seq }
{
\pdf_object_new:n { @@/Catalog/AcroForm/CO }
- \pdf_object_write:nnx
+ \pdf_object_write:nne
{ @@/Catalog/AcroForm/CO } { array }
{ \seq_use:cn { g_@@_/Catalog/AcroForm/CO_seq } {~} }
- \exp_args:Nnnx
+ \exp_args:Nnne
\prop_gput:cnn %we have to use \prop here to avoid the handler ...
{ \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm } }
{ CO }
@@ -1333,10 +1333,10 @@
\prop_if_empty:cF { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm/DR/Font}}
{
\pdf_object_new:n { @@/Catalog/AcroForm/DR/Font }
- \pdf_object_write:nnx
+ \pdf_object_write:nne
{ @@/Catalog/AcroForm/DR/Font } { dict }
{ \pdfdict_use:n { g__pdf_Core/Catalog/AcroForm/DR/Font } }
- \exp_args:Nnnx
+ \exp_args:Nnne
\prop_gput:cnn %we have to use \prop here to avoid the handler ...
{ \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm/DR } }
{ Font }
@@ -1345,10 +1345,10 @@
\prop_if_empty:cF { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm/DR}}
{
\pdf_object_new:n { @@/Catalog/AcroForm/DR }
- \pdf_object_write:nnx
+ \pdf_object_write:nne
{ @@/Catalog/AcroForm/DR } { dict }
{ \pdfdict_use:n { g__pdf_Core/Catalog/AcroForm/DR } }
- \exp_args:Nnnx
+ \exp_args:Nnne
\prop_gput:cnn %we have to use \prop here to avoid the handler ...
{ \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm } }
{ DR }
@@ -1357,10 +1357,10 @@
\prop_if_empty:cF { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm} }
{
\pdf_object_new:n { @@/Catalog/AcroForm }
- \pdf_object_write:nnx
+ \pdf_object_write:nne
{ @@/Catalog/AcroForm } { dict }
{ \pdfdict_use:n { g__pdf_Core/Catalog/AcroForm } }
- \exp_args:Nnnx
+ \exp_args:Nnne
\@@_handler_gput:nnn
{ Catalog }
{ AcroForm }
@@ -1381,10 +1381,10 @@
{ g_@@_/Catalog/AF_seq }
{
\pdf_object_new:n { @@/Catalog/AF }
- \pdf_object_write:nnx
+ \pdf_object_write:nne
{ @@/Catalog/AF } { array }
{ \seq_use:cn { g_@@_/Catalog/AF_seq } {~} }
- \exp_args:Nnx
+ \exp_args:Nne
\__pdf_backend_catalog_gput:nn
{AF}
{
@@ -1404,10 +1404,10 @@
{ \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/MarkInfo } }
{
\pdf_object_new:n { @@/Catalog/MarkInfo }
- \pdf_object_write:nnx
+ \pdf_object_write:nne
{ @@/Catalog/MarkInfo } { dict }
{ \pdfdict_use:n { g__pdf_Core/Catalog/MarkInfo } }
- \exp_args:Nnx
+ \exp_args:Nne
\__pdf_backend_catalog_gput:nn
{MarkInfo}
{
@@ -1445,7 +1445,7 @@
{
\pdf_object_new:n { @@/Catalog/OCProperties }
\seq_gpop_left:cN { g_@@_/Catalog/OCProperties/Configs_seq} \l_@@_tmpa_tl
- \pdf_object_write:nnx {@@/Catalog/OCProperties} {dict}
+ \pdf_object_write:nne {@@/Catalog/OCProperties} {dict}
{
/OCGs~[ \seq_use:cn { g_@@_/Catalog/OCProperties/OCGs_seq } {~} ]
/D~\l_@@_tmpa_tl~
@@ -1455,7 +1455,7 @@
[ \seq_use:cn { g_@@_/Catalog/OCProperties/Configs_seq} {~} ]
}
}
- \exp_args:Nnx
+ \exp_args:Nne
\__pdf_backend_catalog_gput:nn
{ OCProperties }
{ \__pdf_backend_object_ref:n {@@/Catalog/OCProperties} }
@@ -1474,10 +1474,10 @@
{ g_@@_/Catalog/OutputIntents_seq }
{
\pdf_object_new:n { @@/Catalog/OutputIntents }
- \pdf_object_write:nnx
+ \pdf_object_write:nne
{ @@/Catalog/OutputIntents } { array }
{ \seq_use:cn { g_@@_/Catalog/OutputIntents_seq } {~} }
- \exp_args:Nnx
+ \exp_args:Nne
\__pdf_backend_catalog_gput:nn
{OutputIntents}
{
@@ -1498,10 +1498,10 @@
{ g_@@_/Catalog/Requirements_seq }
{
\pdf_object_new:n { @@/Catalog/Requirements }
- \pdf_object_write:nnx
+ \pdf_object_write:nne
{ @@/Catalog/Requirements } { array }
{ \seq_use:cn { g_@@_/Catalog/Requirements_seq } {~} }
- \exp_args:Nnx
+ \exp_args:Nne
\__pdf_backend_catalog_gput:nn
{Requirements}
{
@@ -1522,10 +1522,10 @@
{ \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/ViewerPreferences } }
{
\pdf_object_new:n { @@/Catalog/ViewerPreferences }
- \pdf_object_write:nnx
+ \pdf_object_write:nne
{ @@/Catalog/ViewerPreferences } { dict }
{ \pdfdict_use:n { g__pdf_Core/Catalog/ViewerPreferences } }
- \exp_args:Nnx
+ \exp_args:Nne
\__pdf_backend_catalog_gput:nn
{ViewerPreferences}
{
@@ -1571,12 +1571,12 @@
\cs_new_protected:cpn { @@_handler/Catalog/Names/EmbeddedFiles_gput:n } #1
{
\int_gincr:N \g_@@_EmbeddedFiles_int
- \exp_args:Nnx
+ \exp_args:Nne
\prop_gput:cnn
{ \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/Names/EmbeddedFiles }}
{ \@@_EmbeddedFiles_name: }
{ #1 }
- \exp_args:Nx
+ \exp_args:Ne
\__pdf_backend_NamesEmbeddedFiles_add:nn {\@@_EmbeddedFiles_name:} { #1 }
}
% \end{macrocode}
@@ -1601,7 +1601,7 @@
{ \sort_return_swapped: }
{ \sort_return_same: }
}
- \exp_args:Nnx \__pdf_backend_Names_gpush:nn
+ \exp_args:Nne \__pdf_backend_Names_gpush:nn
{#1}
{
\seq_use:Nn \l_@@_tmpa_seq {~}
@@ -1615,7 +1615,7 @@
% \begin{macrocode}
\cs_new_protected:cpn {@@_handler/Catalog/?_show:}
{
- \iow_term:x
+ \iow_term:e
{
\iow_newline:
The~Catalog~contains~in~the~top~level~the~single~value~entries
@@ -1627,7 +1627,7 @@
{
\seq_if_empty:cF { g_@@_/Catalog/##1_seq }
{
- \iow_term:x
+ \iow_term:e
{
The~'##1'~array~contains~the~entries
\seq_map_function:cN { g_@@_/Catalog/##1_seq } \msg_show_item:n
@@ -1638,7 +1638,7 @@
{
\prop_if_empty:cF { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/##1 } }
{
- \iow_term:x
+ \iow_term:e
{
The~Catalog~subdirectory~'##1'~contains~the~single~value~entries
\prop_map_function:cN
@@ -1647,7 +1647,7 @@
}
}
}
- \tl_show:x {\tl_to_str:n{\pdfmanagement_show:n{Catalog}}}
+ \tl_show:e {\tl_to_str:n{\pdfmanagement_show:n{Catalog}}}
}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
index 0f2871f660..c43e204e23 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
index 1f30c5badf..0a55e2b9d7 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
% \begin{documentation}
@@ -566,7 +566,7 @@
% \begin{macrocode}
%<@@=pdfmeta>
%<*header>
-\ProvidesExplPackage{l3pdfmeta}{2023-10-09}{0.96a}
+\ProvidesExplPackage{l3pdfmeta}{2023-11-05}{0.96b}
{PDF-Standards---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
@@ -644,7 +644,7 @@
{
\cs_if_exist:cTF {@@_standard_verify_handler_#1:nn}
{
- \exp_args:Nnnx
+ \exp_args:Nnne
\use:c
{@@_standard_verify_handler_#1:nn}
{ #2 }
@@ -756,7 +756,7 @@
{ \__pdf_backend_omit_charset:n {1} }
\pdfmeta_standard_verify:nnF { min_pdf_version }
{ \pdf_version: }
- { \msg_warning:nnxxx {pdf}{wrong-pdfversion}
+ { \msg_warning:nneee {pdf}{wrong-pdfversion}
{\pdf_version:}{low}
{
\pdfmeta_standard_item:n{type}
@@ -766,7 +766,7 @@
}
\pdfmeta_standard_verify:nnF { max_pdf_version }
{ \pdf_version: }
- { \msg_warning:nnxxx {pdf}{wrong-pdfversion}
+ { \msg_warning:nneee {pdf}{wrong-pdfversion}
{\pdf_version:}{high}
{
\pdfmeta_standard_item:n{type}
@@ -970,7 +970,7 @@
% \end{verbatim}
% \item Write a |/OutputIntent| dictionary for this
% \begin{verbatim}
-% \pdf_object_unnamed_write:nx {dict}
+% \pdf_object_unnamed_write:ne {dict}
% {
% /Type /OutputIntent
% /S /GTS_PDFA1 % or GTS_PDFX or ISO_PDFE1 or ...
@@ -981,7 +981,7 @@
% \end{verbatim}
% \item Reference the dictionary in the catalog:
% \begin{verbatim}
-% \pdfmanagement_add:nnx {Catalog}{OutputIntents}{\pdf_object_ref_last:}
+% \pdfmanagement_add:nne {Catalog}{OutputIntents}{\pdf_object_ref_last:}
% \end{verbatim}
% \end{enumerate}
% But we need to do a bit more work, to get the interface right.
@@ -1085,7 +1085,7 @@
\pdf_object_if_exist:nF { __color_icc_ #1 }
{
\pdf_object_new:n { __color_icc_ #1 }
- \pdf_object_write:nnx { __color_icc_ #1 } { fstream }
+ \pdf_object_write:nne { __color_icc_ #1 } { fstream }
{
{/N\c_space_tl
\prop_item:cn{c_@@_colorprofile_#1}{N}
@@ -1098,8 +1098,8 @@
\cs_new_protected:Npn \@@_write_outputintent:nn #1 #2 %#1 file name, #2 subtype
{
\group_begin:
- \pdfdict_put:nnx {l_pdfmeta/outputintent}{S}{/\str_convert_pdfname:n{#2}}
- \pdfdict_put:nnx {l_pdfmeta/outputintent}
+ \pdfdict_put:nne {l_pdfmeta/outputintent}{S}{/\str_convert_pdfname:n{#2}}
+ \pdfdict_put:nne {l_pdfmeta/outputintent}
{DestOutputProfile}
{\pdf_object_ref:n{ __color_icc_ #1 }}
\clist_map_inline:nn { OutputConditionIdentifier, Info, RegistryName }
@@ -1110,12 +1110,12 @@
\l_@@_tmpa_tl
{
\pdf_string_from_unicode:nVN {utf8/string}\l_@@_tmpa_tl\l_@@_tmpa_str
- \pdfdict_put:nnx
+ \pdfdict_put:nne
{l_pdfmeta/outputintent}{##1}{\l_@@_tmpa_str}
}
}
- \pdf_object_unnamed_write:nx {dict}{\pdfdict_use:n {l_pdfmeta/outputintent} }
- \pdfmanagement_add:nnx {Catalog}{OutputIntents}{\pdf_object_ref_last:}
+ \pdf_object_unnamed_write:ne {dict}{\pdfdict_use:n {l_pdfmeta/outputintent} }
+ \pdfmanagement_add:nne {Catalog}{OutputIntents}{\pdf_object_ref_last:}
\group_end:
}
% \end{macrocode}
@@ -1143,18 +1143,18 @@
% Then we loop but take always the same profile.
% \begin{macrocode}
{
- \exp_args:NNx
+ \exp_args:NNe
\prop_if_in:NnF
\g_@@_outputintents_prop
{ \pdfmeta_standard_item:n { outputintent_A } }
{
- \exp_args:NNx
+ \exp_args:NNe
\prop_gput:Nnn
\g_@@_outputintents_prop
{ \pdfmeta_standard_item:n { outputintent_A } }
{ sRGB.icc }
}
- \exp_args:NNx
+ \exp_args:NNe
\prop_get:NnN
\g_@@_outputintents_prop
{ \pdfmeta_standard_item:n { outputintent_A } }
@@ -1191,8 +1191,8 @@
% \begin{macrocode}
\hook_gput_code:nnn{pdfmanagement/add}{pdfmanagement}
{
- \pdfmanagement_add:nnx {Info}{Producer}{(\c_sys_engine_exec_str-\c_sys_engine_version_str)}
- \pdfmanagement_add:nnx {Info}{Creator}{(LaTeX)}
+ \pdfmanagement_add:nne {Info}{Producer}{(\c_sys_engine_exec_str-\c_sys_engine_version_str)}
+ \pdfmanagement_add:nne {Info}{Creator}{(LaTeX)}
}
% \end{macrocode}
% \subsection{New document keys}
@@ -1390,7 +1390,7 @@
\cs_new_protected:Npn \@@_xmp_date_get:nNN #1 #2 #3
%#1 property, #2 tl var with PDF date, #3 seq for splitted date
{
- \tl_set:Nx #2 { \GetDocumentProperties{#1} }
+ \tl_set:Ne #2 { \GetDocumentProperties{#1} }
\tl_if_blank:VTF #2
{
\seq_set_eq:NN #3 \l_@@_xmp_currentdate_seq
@@ -1408,8 +1408,8 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_xmp_create_uuid:nN #1 #2
{
- \str_set:Nx#2 {\str_lowercase:f{\tex_mdfivesum:D{#1}}}
- \str_set:Nx#2
+ \str_set:Ne#2 {\str_lowercase:f{\tex_mdfivesum:D{#1}}}
+ \str_set:Ne#2
{ uuid:
\str_range:Nnn #2{1}{8}
-\str_range:Nnn#2{9}{12}
@@ -1433,8 +1433,8 @@
\group_begin:
\text_declare_purify_equivalent:Nn \& {\tl_to_str:N & }
\text_declare_purify_equivalent:Nn \texttilde {\c_tilde_str}
- \tl_set:Nx \l_@@_tmpa_tl { \text_purify:n {#1} }
- \str_gset:Nx \g_@@_tmpa_str { \tl_to_str:N \l_@@_tmpa_tl }
+ \tl_set:Ne \l_@@_tmpa_tl { \text_purify:n {#1} }
+ \str_gset:Ne \g_@@_tmpa_str { \tl_to_str:N \l_@@_tmpa_tl }
\str_greplace_all:Nnn\g_@@_tmpa_str {&}{&amp;}
\str_greplace_all:Nnn\g_@@_tmpa_str {<}{&lt;}
\str_greplace_all:Nnn\g_@@_tmpa_str {>}{&gt;}
@@ -1478,8 +1478,8 @@
\tl_set:Nn #3 {#1}
}
{
- \tl_set:Nx #2 {\seq_item:Nn\l_@@_tmpa_seq{2}}
- \tl_set:Nx #3 {\seq_item:Nn\l_@@_tmpa_seq{3}}
+ \tl_set:Ne #2 {\seq_item:Nn\l_@@_tmpa_seq{2}}
+ \tl_set:Ne #3 {\seq_item:Nn\l_@@_tmpa_seq{3}}
}
}
\cs_generate_variant:Nn \@@_xmp_lang_get:nNN {eNN,VNN}
@@ -1503,7 +1503,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_xmp_add_packet_chunk:n #1
{
- \tl_gput_right:Nx\g_@@_xmp_packet_tl
+ \tl_gput_right:Ne\g_@@_xmp_packet_tl
{
\@@_xmp_indent: \exp_not:n{#1}
}
@@ -1518,7 +1518,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_xmp_add_packet_chunk:nN #1 #2
{
- \tl_put_right:Nx#2
+ \tl_put_right:Ne#2
{
\@@_xmp_indent: \exp_not:n{#1}
}
@@ -1690,8 +1690,8 @@
% think if an error is needed for empty lang.
% \end{NOTE}
% \begin{macrocode}
- \tl_set:Nx \l_@@_xmp_doclang_tl {\GetDocumentProperties{document/lang}}
- \tl_set:Nx \l_@@_xmp_metalang_tl {\GetDocumentProperties{hyperref/pdfmetalang}}
+ \tl_set:Ne \l_@@_xmp_doclang_tl {\GetDocumentProperties{document/lang}}
+ \tl_set:Ne \l_@@_xmp_metalang_tl {\GetDocumentProperties{hyperref/pdfmetalang}}
\tl_if_blank:VT \l_@@_xmp_metalang_tl
{ \cs_set_eq:NN \l_@@_xmp_metalang_tl\l_@@_xmp_doclang_tl}
% \end{macrocode}
@@ -1768,17 +1768,17 @@
\prop_new:N \g_@@_xmp_xmlns_prop
% \end{macrocode}
% \end{variable}
-% \begin{macro}{\@@_xmp_xmlns_new:nn,\@@_xmp_xmlns_new:nx}
+% \begin{macro}{\@@_xmp_xmlns_new:nn,\@@_xmp_xmlns_new:ne}
% \begin{macrocode}
\cs_new_protected:Npn \@@_xmp_xmlns_new:nn #1 #2
{
\prop_gput:Nnn \g_@@_xmp_xmlns_prop {#1}{#2}
- \tl_gput_right:Nx \g_@@_xmp_xmlns_tl
+ \tl_gput_right:Ne \g_@@_xmp_xmlns_tl
{
\@@_xmp_indent:n{4} xmlns:\exp_not:n{#1="#2"}
}
}
-\cs_generate_variant:Nn \@@_xmp_xmlns_new:nn {nx}
+\cs_generate_variant:Nn \@@_xmp_xmlns_new:nn {ne}
% \end{macrocode}
% \end{macro}
% Now we fill the data. The list is more or less the same as in hyperxmp
@@ -1789,7 +1789,7 @@
\@@_xmp_xmlns_new:nn {photoshop}{http://ns.adobe.com/photoshop/1.0/}
\@@_xmp_xmlns_new:nn {xmp} {http://ns.adobe.com/xap/1.0/}
\@@_xmp_xmlns_new:nn {xmpMM} {http://ns.adobe.com/xap/1.0/mm/}
-\@@_xmp_xmlns_new:nx {stEvt}
+\@@_xmp_xmlns_new:ne {stEvt}
{http://ns.adobe.com/xap/1.0/sType/ResourceEvent\c_hash_str}
\@@_xmp_xmlns_new:nn {pdfaid} {http://www.aiim.org/pdfa/ns/id/}
\@@_xmp_xmlns_new:nn {pdfuaid} {http://www.aiim.org/pdfua/ns/id/}
@@ -1798,13 +1798,13 @@
\@@_xmp_xmlns_new:nn {prism} {http://prismstandard.org/namespaces/basic/3.0/}
%\@@_xmp_xmlns_new:nn {jav} {http://www.niso.org/schemas/jav/1.0/}
%\@@_xmp_xmlns_new:nn {xmpTPg} {http://ns.adobe.com/xap/1.0/t/pg/}
-\@@_xmp_xmlns_new:nx {stFnt} {http://ns.adobe.com/xap/1.0/sType/Font\c_hash_str}
+\@@_xmp_xmlns_new:ne {stFnt} {http://ns.adobe.com/xap/1.0/sType/Font\c_hash_str}
\@@_xmp_xmlns_new:nn {Iptc4xmpCore}{http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/}
\@@_xmp_xmlns_new:nn {pdfaExtension}{http://www.aiim.org/pdfa/ns/extension/}
-\@@_xmp_xmlns_new:nx {pdfaSchema}{http://www.aiim.org/pdfa/ns/schema\c_hash_str}
-\@@_xmp_xmlns_new:nx {pdfaProperty}{http://www.aiim.org/pdfa/ns/property\c_hash_str}
-\@@_xmp_xmlns_new:nx {pdfaType} {http://www.aiim.org/pdfa/ns/type\c_hash_str}
-\@@_xmp_xmlns_new:nx {pdfaField}{http://www.aiim.org/pdfa/ns/field\c_hash_str}
+\@@_xmp_xmlns_new:ne {pdfaSchema}{http://www.aiim.org/pdfa/ns/schema\c_hash_str}
+\@@_xmp_xmlns_new:ne {pdfaProperty}{http://www.aiim.org/pdfa/ns/property\c_hash_str}
+\@@_xmp_xmlns_new:ne {pdfaType} {http://www.aiim.org/pdfa/ns/type\c_hash_str}
+\@@_xmp_xmlns_new:ne {pdfaField}{http://www.aiim.org/pdfa/ns/field\c_hash_str}
% \end{macrocode}
% \subsection{Building the chunks: Extensions}
@@ -2191,14 +2191,14 @@
\@@_xmp_date_get:nNN
{document/creationdate}\l_@@_tmpa_tl\l_@@_tmpa_seq
\@@_xmp_add_packet_line:nne{xmp}{CreateDate}{\@@_xmp_print_date:N\l_@@_tmpa_seq}
- \pdfmanagement_add:nnx{Info}{CreationDate}{(\l_@@_tmpa_tl)}
+ \pdfmanagement_add:nne{Info}{CreationDate}{(\l_@@_tmpa_tl)}
% \end{macrocode}
% ModifyDate
% \begin{macrocode}
\@@_xmp_date_get:nNN
{document/moddate}\l_@@_tmpa_tl\l_@@_tmpa_seq
\@@_xmp_add_packet_line:nne{xmp}{ModifyDate}{\@@_xmp_print_date:N\l_@@_tmpa_seq}
- \pdfmanagement_add:nnx{Info}{ModDate}{(\l_@@_tmpa_tl)}
+ \pdfmanagement_add:nne{Info}{ModDate}{(\l_@@_tmpa_tl)}
% \end{macrocode}
% MetadataDate
% \begin{macrocode}
@@ -2273,7 +2273,7 @@
% \end{macrocode}
% pdfdocumentid / xmpMM:DocumentID
% \begin{macrocode}
- \str_set:Nx\l_@@_tmpa_str {\GetDocumentProperties{hyperref/pdfdocumentid}}
+ \str_set:Ne\l_@@_tmpa_str {\GetDocumentProperties{hyperref/pdfdocumentid}}
\str_if_empty:NT \l_@@_tmpa_str
{
\@@_xmp_create_uuid:nN
@@ -2285,7 +2285,7 @@
% \end{macrocode}
% pdfinstanceid / xmpMM:InstanceID
% \begin{macrocode}
- \str_set:Nx\l_@@_tmpa_str {\GetDocumentProperties{hyperref/pdfinstanceid}}
+ \str_set:Ne\l_@@_tmpa_str {\GetDocumentProperties{hyperref/pdfinstanceid}}
\str_if_empty:NT \l_@@_tmpa_str
{
\@@_xmp_create_uuid:nN
@@ -2473,7 +2473,7 @@
{
\@@_xmp_add_packet_open_attr:nnn
{Iptc4xmpCore}{CreatorContactInfo}{rdf:parseType="Resource"}
- \tl_gput_right:Nx\g_@@_xmp_packet_tl { \l_@@_xmp_iptc_data_tl }
+ \tl_gput_right:Ne\g_@@_xmp_packet_tl { \l_@@_xmp_iptc_data_tl }
\@@_xmp_add_packet_close:nn
{Iptc4xmpCore}{CreatorContactInfo}
}
@@ -2552,7 +2552,7 @@
% The page count is take from the previous run or from
% pdfnumpages.
% \begin{macrocode}
- \tl_set:Nx \l_@@_tmpa_tl { \GetDocumentProperties{hyperref/pdfnumpages} }
+ \tl_set:Ne \l_@@_tmpa_tl { \GetDocumentProperties{hyperref/pdfnumpages} }
\@@_xmp_add_packet_line:nne
{prism}{pageCount}
{\tl_if_blank:VTF \l_@@_tmpa_tl {\PreviousTotalPages}{\l_@@_tmpa_tl}}
@@ -2599,7 +2599,7 @@
\@@_xmp_build_packet:
\exp_args:No
\__pdf_backend_metadata_stream:n {\g_@@_xmp_packet_tl}
- \pdfmanagement_add:nnx {Catalog} {Metadata}{\pdf_object_ref_last:}
+ \pdfmanagement_add:nne {Catalog} {Metadata}{\pdf_object_ref_last:}
\bool_if:NT \g_@@_xmp_export_bool
{
\iow_open:Nn\g_tmpa_iow{\g_@@_xmp_export_str.xmpi}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
index a0edffc232..060a1e2326 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
index 6906727952..ce9958a9bb 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
% \begin{documentation}
@@ -231,7 +231,7 @@
%
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage{l3pdftools}{2023-10-09}{0.96a}
+\ProvidesExplPackage{l3pdftools}{2023-11-05}{0.96b}
{candidate commands for l3pdf---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
index 733d736ef7..8e72e27da0 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
index 4df838e625..bb25497b41 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
% \begin{documentation}
@@ -132,7 +132,7 @@
% \begin{macrocode}
%<@@=pdf>
%<*header>
-\ProvidesExplPackage{l3pdfxform}{2023-10-09}{0.96a}
+\ProvidesExplPackage{l3pdfxform}{2023-11-05}{0.96b}
{command to create xforms (beta)---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
index eec75e8d94..ea4ecb57a5 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
index 96da24d648..6501ef6715 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
% \begin{documentation}
@@ -220,7 +220,7 @@
% \begin{macrocode}
%<@@=pdfmanagement>
%<*header>
-\ProvidesExplPackage{ltdocinit}{2023-10-09}{0.96a}
+\ProvidesExplPackage{ltdocinit}{2023-11-05}{0.96b}
{Initialize document metadata}
%</header>
% \end{macrocode}
@@ -280,7 +280,7 @@
% \begin{macrocode}
\NewDocumentCommand\AddToDocumentProperties{O{\@currname}mm}
{
- \exp_args:NNx
+ \exp_args:NNe
\prop_gput:Nnn \g_@@_documentproperties_prop
{
\tl_if_blank:eTF {#1}{top-level/}{#1/} #2
@@ -333,7 +333,7 @@
}
\NewDocumentCommand\ShowDocumentProperties {}
{
- \msg_show:nnx {pdfmanagement}{show-properties}
+ \msg_show:nne {pdfmanagement}{show-properties}
{
\prop_map_function:NN \g_@@_documentproperties_prop \msg_show_item:nn
}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
index 692a6df4ac..4c2d341ee6 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf b/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
deleted file mode 100644
index dc8d376f76..0000000000
--- a/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
index 29fcf8bafa..3835be9ef2 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
% \begin{documentation}
@@ -63,7 +63,7 @@
% |debug={firstaidoff={name1,name2,...},...}|.
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{pdfmanagement-firstaid}{2023-10-09}{0.96a}
+\ProvidesExplPackage{pdfmanagement-firstaid}{2023-11-05}{0.96b}
{LaTeX PDF management testphase bundle / firstaid-patches}
%<@@=pdfmanagement>
@@ -103,15 +103,78 @@
{
\bool_if:NT \g_@@_firstaid_fontspec_bool
{
- \@ifpackagelater{fontspec}{2023-03-10}
+ \AddToHook{package/fontspec/after}
{
- \__fontspec_keys_define_code:nnn {fontspec} {Color}
- {
- \tl_set:Nn \l__fontspec_hexcol_tl {#1}
- }
- }{}
+ \@ifpackagelater{fontspec}{2023-11-05}
+ {\typeout{PDF~Management:~fontspec~firstaid~ignored}}
+ {
+ \def\c__fontspec_opacity_tl{}
+ \__fontspec_keys_define_code:nnn {fontspec} {Color}
+ {
+ \color_if_exist:nTF {#1}
+ {
+ \tl_set:Nn \l__fontspec_hexcol_tl {#1}
+ }
+ {
+ \cs_if_exist:cTF { \token_to_str:N \color@ #1 }
+ {
+ \convertcolorspec{named}{#1}{HTML}\l__fontspec_hexcol_tl
+ }
+ {
+ \int_compare:nTF { \tl_count:n {#1} == 6 }
+ { \tl_set:Nn \l__fontspec_hexcol_tl {#1} }
+ {
+ \int_compare:nTF { \tl_count:n {#1} == 8 }
+ { \fontspec_parse_colour:viii #1 }
+ {
+ \bool_if:NF \l__fontspec_firsttime_bool
+ { \__fontspec_warning:nx {bad-colour} {#1} }
+ }
+ }
+ }
+ }
+ }
+% \end{macrocode}
+% add a comma
+% \begin{macrocode}
+ \__fontspec_keys_define_code:nnn {fontspec} {Opacity}
+ {
+ \int_set:Nn \l__fontspec_tmp_int {255}
+ \__fontspec_int_mult_truncate:Nn \l__fontspec_tmp_int { #1 }
+ \tl_if_eq:NNF \l__fontspec_opacity_tl \c__fontspec_opacity_tl
+ {
+ \bool_if:NF \l__fontspec_firsttime_bool
+ { \__fontspec_warning:nx {opa-twice} {#1} }
+ }
+ \tl_set:Nx \l__fontspec_opacity_tl
+ {
+ ,
+ \int_compare:nT { \l__fontspec_tmp_int <= "F } {0} % zero pad
+ \int_to_hex:n { \l__fontspec_tmp_int }
+ }
+ }
+% \end{macrocode}
+% and a brace
+% \begin{macrocode}
+ \cs_set:Nn \__fontspec_get_features:n
+ {
+ \__fontspec_init_fontface:
+ \__fontspec_keys_set_known:nxN {fontspec-renderer} {\l__fontspec_fontfeat_clist,#1}
+ \l__fontspec_keys_leftover_clist
+ \__fontspec_keys_set_known:nxN {fontspec} {\l__fontspec_keys_leftover_clist} \l__fontspec_keys_leftover_clist
+ \keys_set:nV {fontspec-opentype} \l__fontspec_keys_leftover_clist
+
+ \tl_if_empty:NF \l__fontspec_mapping_tl
+ { \__fontspec_update_featstr:n { mapping = \l__fontspec_mapping_tl } }
+
+ \str_if_eq:eeF { \l__fontspec_hexcol_tl \l__fontspec_opacity_tl }
+ { \c__fontspec_hexcol_tl \c__fontspec_opacity_tl }
+ { \__fontspec_update_featstr:n { color = {\l__fontspec_hexcol_tl\l__fontspec_opacity_tl } } }
+ }
+ }
}
}
+ }
% \end{macrocode}
% \subsection{\pkg{beamer}}
@@ -314,21 +377,21 @@
}
\cs_generate_variant:Nn \tl_trim_spaces:n{V}
-\cs_generate_variant:Nn \pdfmanagement_add:nnn {nex}
+\cs_generate_variant:Nn \pdfmanagement_add:nnn {nee}
\cs_new:Npn \@@_patch_pgfextgs:w #1/#2<<#3>>#4\q_stop
{
- \tl_set:Nx\l_tmpa_tl{#2}
- \pdfmanagement_add:nex
+ \tl_set:Ne\l_tmpa_tl{#2}
+ \pdfmanagement_add:nee
{Page/Resources/ExtGState}{\tl_trim_spaces:V\l_tmpa_tl}{<<#3 #4>>}
}
\cs_new:Npn \@@_patch_pgfpatterns:w #1/#2\space#3\q_stop
{
- \pdfmanagement_add:nex
+ \pdfmanagement_add:nee
{Page/Resources/Pattern}{\tl_trim_spaces:n{#2}}{#3}
}
\cs_new:Npn \@@_patch_pgfcolorspaces:w #1/#2[#3]#4\q_stop
{
- \pdfmanagement_add:nex
+ \pdfmanagement_add:nee
{Page/Resources/ColorSpace}{\tl_trim_spaces:n{#2}}{[#3]}
}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
index 1bf780aa3b..e6911957d3 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
index 0fa1b2130b..bb6140dd31 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.96a, released 2023-10-09}
+% \date{Version 0.96b, released 2023-11-05}
%
% \maketitle
% \begin{documentation}
@@ -395,7 +395,7 @@
% \begin{macrocode}
%<@@=pdf>
%<*package>
-\ProvidesExplPackage{pdfmanagement-testphase}{2023-10-09}{0.96a}
+\ProvidesExplPackage{pdfmanagement-testphase}{2023-11-05}{0.96b}
{LaTeX PDF management testphase bundle}
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
\IfFormatAtLeastTF{2020-10-01}{}{
@@ -423,7 +423,7 @@
% to allow to set it in the document.
% \begin{macrocode}
%<*header>
-\ProvidesExplFile{pdfmanagement-testphase.ltx}{2023-10-09}{0.96a}
+\ProvidesExplFile{pdfmanagement-testphase.ltx}{2023-11-05}{0.96b}
{PDF~management~code~(testphase)}
% \end{macrocode}
% We define a boolean for the new delayed shipout. This is temporary. At some
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
index d2898a3049..db319ff855 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
index 29074b3de4..597c4669a2 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
@@ -1,6 +1,6 @@
%% LaTeX2e file `xcolor-patches-tmp-ltx.sty'
%%
-\ProvidesPackage{xcolor-patches-tmp-ltx}[2023-10-09 v0.96a patch xcolor for l3color]
+\ProvidesPackage{xcolor-patches-tmp-ltx}[2023-11-05 v0.96b patch xcolor for l3color]
\@ifundefined{color_set:nn}{\RequirePackage{l3color}}{}
\ExplSyntaxOn
diff --git a/macros/latex/contrib/q-and-a/Q-and-A.cls b/macros/latex/contrib/q-and-a/Q-and-A.cls
index 20078cb62a..82e1cd7d5a 100644
--- a/macros/latex/contrib/q-and-a/Q-and-A.cls
+++ b/macros/latex/contrib/q-and-a/Q-and-A.cls
@@ -12,7 +12,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplClass
{Q-and-A}
- {2023/11/05} {}
+ {2023/11/07} {}
{Document class for typesetting Q&A conversation}
\keys_define:nn { Q-and-A }
@@ -33,6 +33,22 @@
, ChatGPT~dark .meta:n = { theme = ChatGPT-dark }
, ChatGPT dark .meta:n = { theme = ChatGPT-dark }
+ , numbered-question .bool_set:N = \l__QA_numbered_question_bool
+ , numbered-question .initial:n = { false }
+ , numbered~question .bool_set:N = \l__QA_numbered_question_bool
+ , numbered question .bool_set:N = \l__QA_numbered_question_bool
+ , question-number .bool_set:N = \l__QA_numbered_question_bool
+ , question~number .bool_set:N = \l__QA_numbered_question_bool
+ , question number .bool_set:N = \l__QA_numbered_question_bool
+
+ , numbered-answer .bool_set:N = \l__QA_numbered_answer_bool
+ , numbered-answer .initial:n = { false }
+ , numbered~answer .bool_set:N = \l__QA_numbered_answer_bool
+ , numbered answer .bool_set:N = \l__QA_numbered_answer_bool
+ , answer-number .bool_set:N = \l__QA_numbered_answer_bool
+ , answer~number .bool_set:N = \l__QA_numbered_answer_bool
+ , answer number .bool_set:N = \l__QA_numbered_answer_bool
+
, answer-outside-the-box .bool_set:N = \l__QA_answer_outside_the_box_bool
, answer-outside-the-box .initial:n = { false }
, answer~outside~the~box .bool_set:N = \l__QA_answer_outside_the_box_bool
@@ -153,7 +169,7 @@
}
\newlist { QA-entry } { description } { 1 }
-\setlist [ QA-entry ] { font = \normalfont\sffamily, leftmargin = \l_QA_list_indentation_dim, labelsep = \l_QA_list_labelsep_dim, labelwidth=!, parsep=\parskip }
+\setlist [ QA-entry ] { font = \normalfont\sffamily, leftmargin = \l_QA_list_indentation_dim, labelsep = \l_QA_list_labelsep_dim, labelwidth=3em, itemindent=0pt, parsep=\parskip }
\renewcommand{\descriptionlabel}[1]{#1}
\bool_new:N \l__QA_inside_list_bool
@@ -684,36 +700,84 @@
{
\tl_set:cn { l_QA_logo_code_ #1 _tl } { #2 }
}
+
% Set default logo code
\SetLogoCode[Q]{\textbf{\l_QA_label_Q_tl}}
\SetLogoCode[A]{\textbf{\l_QA_label_R_tl}}
-\projlib_langauge_define_multilingual_text:Nn \l_QA_label_Q_tl
+
+\newcounter{QA_Q}
+\newcounter{QA_A}
+\NewDocumentCommand \QAShowCounter { m }
+ {
+ \stepcounter{QA_#1}
+ \tl_use:c {theQA_#1}
+ }
+
+\bool_if:NTF \l__QA_numbered_question_bool
{
- , EN = { Q\,: }
- , FR = { Q: }
- , DE = { F\,: }
- , IT = { D\,: }
- , PT = { P\,: }
- , BR = { P\,: }
- , ES = { P\,: }
- , CN = { Q\,: }
- , TC = { Q\,: }
- , JP = { Q\,: }
- , RU = { B\,: }
- }
-\projlib_langauge_define_multilingual_text:Nn \l_QA_label_R_tl
+ \projlib_langauge_define_multilingual_text:Nn \l_QA_label_Q_tl
+ {
+ , EN = { Q \QAShowCounter{Q} \,: }
+ , FR = { Q \QAShowCounter{Q} : }
+ , DE = { F \QAShowCounter{Q} \,: }
+ , IT = { D \QAShowCounter{Q} \,: }
+ , PT = { P \QAShowCounter{Q} \,: }
+ , BR = { P \QAShowCounter{Q} \,: }
+ , ES = { P \QAShowCounter{Q} \,: }
+ , CN = { 问 \QAShowCounter{Q} \,:\hspace{-.5em} }
+ , TC = { 問 \QAShowCounter{Q} \,:\hspace{-.5em} }
+ , JP = { Q \QAShowCounter{Q} \,: }
+ , RU = { B \QAShowCounter{Q} \,: }
+ }
+ }
{
- , EN = { A\,: }
- , FR = { R: }
- , DE = { A\,: }
- , IT = { R\,: }
- , PT = { R\,: }
- , BR = { R\,: }
- , ES = { R\,: }
- , CN = { A\,: }
- , TC = { A\,: }
- , JP = { A\,: }
- , RU = { O\,: }
+ \projlib_langauge_define_multilingual_text:Nn \l_QA_label_Q_tl
+ {
+ , EN = { Q\,: }
+ , FR = { Q: }
+ , DE = { F\,: }
+ , IT = { D\,: }
+ , PT = { P\,: }
+ , BR = { P\,: }
+ , ES = { P\,: }
+ , CN = { 问\,:\hspace{-.33em} }
+ , TC = { 問\,:\hspace{-.33em} }
+ , JP = { Q\,: }
+ , RU = { B\,: }
+ }
+ }
+\bool_if:NTF \l__QA_numbered_answer_bool
+ {
+ \projlib_langauge_define_multilingual_text:Nn \l_QA_label_R_tl
+ {
+ , EN = { A \QAShowCounter{A} \,: }
+ , FR = { R \QAShowCounter{A} : }
+ , DE = { A \QAShowCounter{A} \,: }
+ , IT = { R \QAShowCounter{A} \,: }
+ , PT = { R \QAShowCounter{A} \,: }
+ , BR = { R \QAShowCounter{A} \,: }
+ , ES = { R \QAShowCounter{A} \,: }
+ , CN = { 答 \QAShowCounter{A} \,:\hspace{-.5em} }
+ , TC = { 答 \QAShowCounter{A} \,:\hspace{-.5em} }
+ , JP = { A \QAShowCounter{A} \,: }
+ , RU = { O \QAShowCounter{A} \,: }
+ }
+ }
+ {
+ \projlib_langauge_define_multilingual_text:Nn \l_QA_label_R_tl
+ {
+ , EN = { A\,: }
+ , FR = { R: }
+ , DE = { A\,: }
+ , IT = { R\,: }
+ , PT = { R\,: }
+ , BR = { R\,: }
+ , ES = { R\,: }
+ , CN = { 答\,:\hspace{-.33em} }
+ , TC = { 答\,:\hspace{-.33em} }
+ , JP = { A\,: }
+ , RU = { O\,: }
+ }
}
\prop_new:N \g__QA_prefix_type_prop
@@ -797,16 +861,16 @@
\AddLanguageSetting [ CN ]
{
\QARemoveAllPrefix
- \QASetTypePrefix { Q } { 问: , Q: , ? , ? }
- \QASetTypePrefix { A } { 答: , A: , : , : }
- \QASetTypePrefix { N } { 注: , N: , " , “ , ” , 「 }
+ \QASetTypePrefix { Q } { 问: , 问: , Q: , ? , ? }
+ \QASetTypePrefix { A } { 答: , 答: , A: , : , : }
+ \QASetTypePrefix { N } { 注: , 注: , N: , " , “ , ” , 「 }
}
\AddLanguageSetting [ TC ]
{
\QARemoveAllPrefix
- \QASetTypePrefix { Q } { 問: , Q: , ? , ? }
- \QASetTypePrefix { A } { 答: , A: , : , : }
- \QASetTypePrefix { N } { 註: , N: , " , “ , ” , 「 }
+ \QASetTypePrefix { Q } { 問: , 問: , Q: , ? , ? }
+ \QASetTypePrefix { A } { 答: , 答: , A: , : , : }
+ \QASetTypePrefix { N } { 註: , 註: , N: , " , “ , ” , 「 }
}
\AddLanguageSetting [ JP ]
{
diff --git a/macros/latex/contrib/q-and-a/demo/lang-cn/Q-and-A-demo-cn-content.tex b/macros/latex/contrib/q-and-a/demo/lang-cn/Q-and-A-demo-cn-content.tex
new file mode 100644
index 0000000000..6caa361359
--- /dev/null
+++ b/macros/latex/contrib/q-and-a/demo/lang-cn/Q-and-A-demo-cn-content.tex
@@ -0,0 +1,92 @@
+% 以下对话由 ChatGPT(使用 GPT-3.5)生成。
+
+Q:
+ 什么是计算机编程?
+
+A:
+ 计算机编程是为计算机创建指令以执行特定任务的过程。这是计算机科学领域的基本技能之一。编程涉及以计算机可理解的语言编写代码行。然后这些指令按顺序执行,允许执行各种操作,从简单的数学计算到管理复杂数据库或创建软件。
+
+Q:
+ 主要的编程语言有哪些?
+
+A:
+ 有许多编程语言,每种都有其自身的特点和特定的应用领域。一些常见的编程语言包括:
+
+ [Python]
+ 因其简单性和多功能性而备受赞誉,在数据科学、Web 开发和自动化领域广泛使用。
+
+ [Java]
+ 以其可移植性而闻名,用于 Android 应用程序开发、企业软件和嵌入式系统。
+
+ [C++]
+ 提供高性能,常用于游戏、桌面应用程序和实时系统。
+
+ [JavaScript]
+ 是 Web 开发的首选语言,运行在浏览器中,可创建交互式应用程序。
+
+ [Ruby]
+ 因其语法简单和优雅而备受赞誉,常用于 Web 开发和脚本编写。
+
+Q:
+ 如何在 Python 中编写 `for` 循环?
+
+A:
+ 在 Python 中,`for` 循环常用于迭代数据序列,如列表、字符串或字典。以下是 Python 中 `for` 循环的示例:
+
+ == [python] {code/Q-and-A-demo-cn-code-for.py}
+
+ 在此示例中,`for` 循环遍历从 0 到 4 的值,每次迭代时打印 `i` 的值。这使您能够高效执行重复的操作。
+
+Q:
+ 在 Python 中,什么是列表?
+
+A:
+ 在 Python 中,列表是一种数据结构,用于存储有序的元素集合。列表中的元素可以具有不同的类型,如数字、字符串,甚至其他列表。列表非常灵活多用,因此经常用于数据存储。以下是 Python 中列表的示例:
+
+ == [python] {code/Q-and-A-demo-cn-code-list.py}
+
+ 您可以使用它们的索引访问列表的元素。例如,`my\_list[2]` 将返回值 3,因为索引从 0 开始。
+
+Q:
+ 编程中局部变量和全局变量有什么区别?
+
+A:
+ 在编程中,变量的作用域是一个重要的概念。局部变量在函数内部声明,只能在该函数内部访问。它仅在函数执行期间存在,其名称与程序的其余部分隔离。相反,全局变量在所有函数外部声明,可以在程序的任何地方使用。它在函数调用之间保留其值,并可以被代码的任何部分修改。了解变量作用域对于避免代码中的意外错误至关重要。
+
+Q:
+ 如何在 Python 中声明函数?
+
+A:
+ 要在 Python 中声明函数,使用 `def` 关键字,后跟函数名称和参数。以下是一个函数声明的示例:
+
+ == [python] {code/Q-and-A-demo-cn-code-func.py}
+
+ 在此示例中,`my\_function` 是函数名称,它以 `parameter` 作为参数。函数内部执行操作,然后使用 `return` 关键字将结果值返回给调用者。函数对于组织代码并使其可重用非常重要。
+
+Q:
+ 解决编程问题的步骤是什么?
+
+A:
+ 解决编程问题包括多个关键步骤。
+
+ [理解问题]
+ [*] 确定目标。
+ [*] 分析输入数据。
+
+ [设计解决方案]
+ [*] 制定算法。
+ [*] 使用列表表示复杂的数据结构。
+
+ [编写代码]
+ [*] 将算法转化为代码。
+ [*] 使用列表和循环处理数据。
+
+ [测试和调试代码]
+ [*] 检查代码是否正确运行。
+ [*] 修复潜在错误(bug)。
+
+ [必要时进行优化]
+ [*] 改进代码效率。
+ [*] 使用高级技巧和列表以优化性能。
+
+ 这种结构化方法有助于程序员有效地解决计算机相关问题。
diff --git a/macros/latex/contrib/q-and-a/demo/lang-cn/Q-and-A-demo-cn.pdf b/macros/latex/contrib/q-and-a/demo/lang-cn/Q-and-A-demo-cn.pdf
new file mode 100644
index 0000000000..d8ac0d4a8e
--- /dev/null
+++ b/macros/latex/contrib/q-and-a/demo/lang-cn/Q-and-A-demo-cn.pdf
Binary files differ
diff --git a/macros/latex/contrib/q-and-a/demo/lang-cn/Q-and-A-demo-cn.tex b/macros/latex/contrib/q-and-a/demo/lang-cn/Q-and-A-demo-cn.tex
new file mode 100644
index 0000000000..40eeb71b0f
--- /dev/null
+++ b/macros/latex/contrib/q-and-a/demo/lang-cn/Q-and-A-demo-cn.tex
@@ -0,0 +1,28 @@
+\documentclass[%11pt,
+ numbered question,
+ numbered answer,
+ scroll,
+]{Q-and-A}
+
+\UseLanguage{Chinese}
+
+\begin{document}
+
+
+:: {Q-and-A-demo-cn-content}
+
+
+---
+
+"
+ 以下是这段对话的代码。
+
+ == {Q-and-A-demo-cn-content}
+
+"
+ 以下是主文档的代码。
+
+ == [latex] {\jobname}
+
+
+\end{document}
diff --git a/macros/latex/contrib/q-and-a/demo/lang-cn/code/Q-and-A-demo-cn-code-for.py b/macros/latex/contrib/q-and-a/demo/lang-cn/code/Q-and-A-demo-cn-code-for.py
new file mode 100644
index 0000000000..7049de3509
--- /dev/null
+++ b/macros/latex/contrib/q-and-a/demo/lang-cn/code/Q-and-A-demo-cn-code-for.py
@@ -0,0 +1,2 @@
+for i in range(5):
+ print(i) \ No newline at end of file
diff --git a/macros/latex/contrib/q-and-a/demo/lang-cn/code/Q-and-A-demo-cn-code-func.py b/macros/latex/contrib/q-and-a/demo/lang-cn/code/Q-and-A-demo-cn-code-func.py
new file mode 100644
index 0000000000..449d842a97
--- /dev/null
+++ b/macros/latex/contrib/q-and-a/demo/lang-cn/code/Q-and-A-demo-cn-code-func.py
@@ -0,0 +1,4 @@
+def my_function(parameter):
+ # 在函数内部执行操作
+ result = parameter * 2
+ return result \ No newline at end of file
diff --git a/macros/latex/contrib/q-and-a/demo/lang-cn/code/Q-and-A-demo-cn-code-list.py b/macros/latex/contrib/q-and-a/demo/lang-cn/code/Q-and-A-demo-cn-code-list.py
new file mode 100644
index 0000000000..b57a6ab114
--- /dev/null
+++ b/macros/latex/contrib/q-and-a/demo/lang-cn/code/Q-and-A-demo-cn-code-list.py
@@ -0,0 +1 @@
+my_list = [1, 2, 3, 4, 5] \ No newline at end of file
diff --git a/macros/latex/contrib/q-and-a/demo/lang-de/Q-and-A-demo-de-content.tex b/macros/latex/contrib/q-and-a/demo/lang-de/Q-and-A-demo-de-content.tex
new file mode 100644
index 0000000000..85e95d710e
--- /dev/null
+++ b/macros/latex/contrib/q-and-a/demo/lang-de/Q-and-A-demo-de-content.tex
@@ -0,0 +1,92 @@
+% Das folgende Gespräch wurde von ChatGPT (mit GPT-3.5) generiert.
+
+F:
+ Was ist Computerprogrammierung?
+
+A:
+ Die Computerprogrammierung ist der Prozess, Anweisungen für einen Computer zu erstellen, um spezifische Aufgaben auszuführen. Es ist eine der grundlegenden Fähigkeiten im Bereich der Informatik. Die Programmierung besteht darin, Zeilen von Code in einer für die Maschine verständlichen Sprache zu schreiben. Diese Anweisungen werden dann sequenziell ausgeführt und ermöglichen verschiedene Operationen, von einfachen mathematischen Berechnungen bis hin zur Verwaltung komplexer Datenbanken oder zur Erstellung von Software.
+
+F:
+ Was sind die wichtigsten Programmiersprachen?
+
+A:
+ Es gibt zahlreiche Programmiersprachen, jede mit ihren eigenen Merkmalen und spezifischen Anwendungsdomänen. Einige der häufigsten Programmiersprachen sind:
+
+ [Python]
+ Sehr geschätzt für seine Einfachheit und Vielseitigkeit, wird es weit verbreitet in der Datenwissenschaft, Webentwicklung und Automatisierung eingesetzt.
+
+ [Java]
+ Bekannt für seine Portabilität, wird es in der Entwicklung von Android-Apps, Unternehmenssoftware und eingebetteten Systemen verwendet.
+
+ [C++]
+ Es bietet hohe Leistung und wird häufig für Spiele, Desktop-Anwendungen und Echtzeitsysteme eingesetzt.
+
+ [JavaScript]
+ Die bevorzugte Sprache für die Webentwicklung, sie wird in Browsern ausgeführt und ermöglicht die Erstellung interaktiver Anwendungen.
+
+ [Ruby]
+ Geschätzt für seine syntaktische Einfachheit und Eleganz, wird es häufig in der Webentwicklung und Skripting eingesetzt.
+
+F:
+ Wie schreibt man eine `for`-Schleife in Python?
+
+A:
+ In Python werden `for`-Schleifen häufig verwendet, um über Datenfolgen wie Listen, Zeichenketten oder Wörterbücher zu iterieren. Hier ist ein Beispiel für eine `for`-Schleife in Python:
+
+ == [python] {code/Q-and-A-demo-de-code-for.py}
+
+ In diesem Beispiel durchläuft die `for`-Schleife Werte von 0 bis 4, und in jeder Iteration wird der Wert von `i` gedruckt. Dies ermöglicht die effiziente Ausführung wiederholter Operationen.
+
+F:
+ Was ist eine Liste in Python?
+
+A:
+ In Python ist eine Liste eine Datenstruktur, mit der Sie eine geordnete Sammlung von Elementen speichern können. Elemente in einer Liste können unterschiedliche Typen haben, wie Zahlen, Zeichenketten oder sogar andere Listen. Listen sind sehr flexibel und vielseitig, weshalb sie eine häufige Wahl für die Datenspeicherung sind. Hier ist ein Beispiel für eine Liste in Python:
+
+ == [python] {code/Q-and-A-demo-de-code-list.py}
+
+ Sie können auf Elemente der Liste zugreifen, indem Sie ihren Index verwenden. Zum Beispiel würde `meine\_liste[2]` den Wert 3 zurückgeben, da die Indizes bei 0 beginnen.
+
+F:
+ Was ist der Unterschied zwischen einer lokalen und einer globalen Variablen in der Programmierung?
+
+A:
+ In der Programmierung ist der Gültigkeitsbereich von Variablen ein wichtiger Begriff. Eine lokale Variable wird innerhalb einer Funktion deklariert und ist nur innerhalb dieser Funktion zugänglich. Sie existiert nur während der Ausführung der Funktion, und ihr Name ist vom Rest des Programms isoliert. Im Gegensatz dazu wird eine globale Variable außerhalb aller Funktionen deklariert und kann überall im Programm verwendet werden. Sie behält ihren Wert zwischen Funktionsaufrufen bei und kann von jedem Teil des Codes geändert werden. Das Verständnis des Variablenbereichs ist entscheidend, um unerwartete Fehler in Ihrem Code zu vermeiden.
+
+F:
+ Wie deklariert man eine Funktion in Python?
+
+A:
+ Um eine Funktion in Python zu deklarieren, verwenden Sie das Schlüsselwort `def`, gefolgt vom Namen der Funktion und ihren Parametern. Hier ist ein Beispiel für die Deklaration einer Funktion:
+
+ == [python] {code/Q-and-A-demo-de-code-func.py}
+
+ In diesem Beispiel ist `meine\_funktion` der Name der Funktion, und sie nimmt `parameter` als Argument. Innerhalb der Funktion werden Operationen durchgeführt, und der resultierende Wert wird an den Aufrufer mit dem Schlüsselwort `return` zurückgegeben. Funktionen sind entscheidend, um den Code zu organisieren und wiederzuverwenden.
+
+F:
+ Welche Schritte sind erforderlich, um ein Programmierproblem zu lösen?
+
+A:
+ Die Lösung eines Programmierproblems umfasst mehrere wesentliche Schritte.
+
+ [Das Problem verstehen]
+ [*] Ziele identifizieren.
+ [*] Eingabedaten analysieren.
+
+ [Eine Lösung entwerfen]
+ [*] Einen Algorithmus entwickeln.
+ [*] Listen zur Darstellung komplexer Datenstrukturen verwenden.
+
+ [Den Code schreiben]
+ [*] Den Algorithmus in Code umsetzen.
+ [*] Listen und Schleifen verwenden, um Daten zu verarbeiten.
+
+ [Den Code testen und debuggen]
+ [*] Überprüfen, ob der Code korrekt funktioniert.
+ [*] Eventuelle Fehler (Bugs) beheben.
+
+ [Optimieren, wenn erforderlich]
+ [*] Die Codeeffizienz verbessern.
+ [*] Fortgeschrittene Techniken mit Listen verwenden, um die Leistung zu optimieren.
+
+ Diese strukturierte Herangehensweise hilft Programmierern dabei, Computerprobleme effektiv zu lösen.
diff --git a/macros/latex/contrib/q-and-a/demo/lang-de/Q-and-A-demo-de.pdf b/macros/latex/contrib/q-and-a/demo/lang-de/Q-and-A-demo-de.pdf
new file mode 100644
index 0000000000..e5bc82799b
--- /dev/null
+++ b/macros/latex/contrib/q-and-a/demo/lang-de/Q-and-A-demo-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/q-and-a/demo/lang-de/Q-and-A-demo-de.tex b/macros/latex/contrib/q-and-a/demo/lang-de/Q-and-A-demo-de.tex
new file mode 100644
index 0000000000..97380b0453
--- /dev/null
+++ b/macros/latex/contrib/q-and-a/demo/lang-de/Q-and-A-demo-de.tex
@@ -0,0 +1,28 @@
+\documentclass[%11pt,
+ numbered question,
+ numbered answer,
+ scroll,
+]{Q-and-A}
+
+\UseLanguage{German}
+
+\begin{document}
+
+
+:: {Q-and-A-demo-de-content}
+
+
+---
+
+"
+ Hier ist der Code dieses Gesprächs.
+
+ == {Q-and-A-demo-de-content}
+
+"
+ Hier ist der Code des Hauptdokuments.
+
+ == [latex] {\jobname}
+
+
+\end{document}
diff --git a/macros/latex/contrib/q-and-a/demo/lang-de/code/Q-and-A-demo-de-code-for.py b/macros/latex/contrib/q-and-a/demo/lang-de/code/Q-and-A-demo-de-code-for.py
new file mode 100644
index 0000000000..7049de3509
--- /dev/null
+++ b/macros/latex/contrib/q-and-a/demo/lang-de/code/Q-and-A-demo-de-code-for.py
@@ -0,0 +1,2 @@
+for i in range(5):
+ print(i) \ No newline at end of file
diff --git a/macros/latex/contrib/q-and-a/demo/lang-de/code/Q-and-A-demo-de-code-func.py b/macros/latex/contrib/q-and-a/demo/lang-de/code/Q-and-A-demo-de-code-func.py
new file mode 100644
index 0000000000..6eea5e601e
--- /dev/null
+++ b/macros/latex/contrib/q-and-a/demo/lang-de/code/Q-and-A-demo-de-code-func.py
@@ -0,0 +1,4 @@
+def meine_funktion(parameter):
+ # Führen Sie Operationen innerhalb der Funktion durch
+ ergebnis = parameter * 2
+ return ergebnis \ No newline at end of file
diff --git a/macros/latex/contrib/q-and-a/demo/lang-de/code/Q-and-A-demo-de-code-list.py b/macros/latex/contrib/q-and-a/demo/lang-de/code/Q-and-A-demo-de-code-list.py
new file mode 100644
index 0000000000..dc5dc91a3b
--- /dev/null
+++ b/macros/latex/contrib/q-and-a/demo/lang-de/code/Q-and-A-demo-de-code-list.py
@@ -0,0 +1 @@
+meine_liste = [1, 2, 3, 4, 5] \ No newline at end of file
diff --git a/macros/latex/contrib/q-and-a/demo/lang-en/Q-and-A-demo-en-content.tex b/macros/latex/contrib/q-and-a/demo/lang-en/Q-and-A-demo-en-content.tex
new file mode 100644
index 0000000000..dfe8970825
--- /dev/null
+++ b/macros/latex/contrib/q-and-a/demo/lang-en/Q-and-A-demo-en-content.tex
@@ -0,0 +1,92 @@
+% The following conversation is generated by ChatGPT (with GPT-3.5).
+
+Q:
+ What is computer programming?
+
+A:
+ Computer programming is the process of creating instructions for a computer to perform specific tasks. It is one of the fundamental skills in the field of computer science. Programming involves writing lines of code in a language understandable by the machine. These instructions are then executed sequentially, allowing for various operations, from simple mathematical calculations to managing complex databases or creating software.
+
+Q:
+ What are the main programming languages?
+
+A:
+ There are numerous programming languages, each with its own characteristics and specific application domains. Some of the most common programming languages include:
+
+ [Python]
+ Highly appreciated for its simplicity and versatility, it is widely used in data science, web development, and automation.
+
+ [Java]
+ Known for its portability, it is used in Android app development, enterprise software, and embedded systems.
+
+ [C++]
+ It offers high performance and is commonly used for games, desktop applications, and real-time systems.
+
+ [JavaScript]
+ The language of choice for web development, it runs in browsers and allows for creating interactive applications.
+
+ [Ruby]
+ Appreciated for its syntactical simplicity and elegance, it is commonly used in web development and scripting.
+
+Q:
+ How do you write a `for` loop in Python?
+
+A:
+ In Python, `for` loops are commonly used to iterate over data sequences, such as lists, strings, or dictionaries. Here's an example of a `for` loop in Python:
+
+ == [python] {code/Q-and-A-demo-en-code-for.py}
+
+ In this example, the `for` loop iterates through values from 0 to 4, and at each iteration, the value of `i` is printed. This allows you to perform repetitive operations efficiently.
+
+Q:
+ What is a list in Python?
+
+A:
+ In Python, a list is a data structure that allows you to store an ordered collection of elements. Elements in a list can be of different types, such as numbers, strings, or even other lists. Lists are very flexible and versatile, making them a common choice for data storage. Here's an example of a list in Python:
+
+ == [python] {code/Q-and-A-demo-en-code-list.py}
+
+ You can access elements of the list using their index; for example, `my\_list[2]` would return the value 3 because indices start at 0.
+
+Q:
+ What is the difference between a local variable and a global variable in programming?
+
+A:
+ In programming, the scope of variables is an important concept. A local variable is declared inside a function and is only accessible within that function. It exists only during the execution of the function, and its name is isolated from the rest of the program. In contrast, a global variable is declared outside of all functions and can be used anywhere in the program. It retains its value between function calls and can be modified by any part of the code. Understanding variable scope is essential to avoid unexpected errors in your code.
+
+Q:
+ How do you declare a function in Python?
+
+A:
+ To declare a function in Python, use the `def` keyword followed by the function name and its parameters. Here's an example of a function declaration:
+
+ == [python] {code/Q-and-A-demo-en-code-func.py}
+
+ In this example, `my\_function` is the function name, and it takes a `parameter` as an argument. Inside the function, operations are performed, and the resulting value is returned to the caller using the `return` keyword. Functions are essential for organizing code and making it reusable.
+
+Q:
+ What are the steps to solve a programming problem?
+
+A:
+ Solving a programming problem involves several essential steps.
+
+ [Understand the Problem]
+ [*] Identify the objectives.
+ [*] Analyze input data.
+
+ [Design a Solution]
+ [*] Develop an algorithm.
+ [*] Use lists to represent complex data structures.
+
+ [Write the Code]
+ [*] Transform your algorithm into code.
+ [*] Use lists and loops to process data.
+
+ [Test and Debug the Code]
+ [*] Check if the code works correctly.
+ [*] Fix any potential errors (bugs).
+
+ [Optimize if Necessary]
+ [*] Improve code efficiency.
+ [*] Use advanced techniques with lists to optimize performance.
+
+ This structured approach helps programmers effectively solve computer-related problems.
diff --git a/macros/latex/contrib/q-and-a/demo/lang-en/Q-and-A-demo-en.pdf b/macros/latex/contrib/q-and-a/demo/lang-en/Q-and-A-demo-en.pdf
new file mode 100644
index 0000000000..289a8e4e1a
--- /dev/null
+++ b/macros/latex/contrib/q-and-a/demo/lang-en/Q-and-A-demo-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/q-and-a/demo/lang-en/Q-and-A-demo-en.tex b/macros/latex/contrib/q-and-a/demo/lang-en/Q-and-A-demo-en.tex
new file mode 100644
index 0000000000..d39626a9dd
--- /dev/null
+++ b/macros/latex/contrib/q-and-a/demo/lang-en/Q-and-A-demo-en.tex
@@ -0,0 +1,26 @@
+\documentclass[%11pt,
+ numbered question,
+ numbered answer,
+ scroll,
+]{Q-and-A}
+
+\begin{document}
+
+
+:: {Q-and-A-demo-en-content}
+
+
+---
+
+"
+ Below is the code of this conversation.
+
+ == {Q-and-A-demo-en-content}
+
+"
+ Below is the code of the main document.
+
+ == [latex] {\jobname}
+
+
+\end{document}
diff --git a/macros/latex/contrib/q-and-a/demo/lang-en/code/Q-and-A-demo-en-code-for.py b/macros/latex/contrib/q-and-a/demo/lang-en/code/Q-and-A-demo-en-code-for.py
new file mode 100644
index 0000000000..7049de3509
--- /dev/null
+++ b/macros/latex/contrib/q-and-a/demo/lang-en/code/Q-and-A-demo-en-code-for.py
@@ -0,0 +1,2 @@
+for i in range(5):
+ print(i) \ No newline at end of file
diff --git a/macros/latex/contrib/q-and-a/demo/lang-en/code/Q-and-A-demo-en-code-func.py b/macros/latex/contrib/q-and-a/demo/lang-en/code/Q-and-A-demo-en-code-func.py
new file mode 100644
index 0000000000..a7a8f99b20
--- /dev/null
+++ b/macros/latex/contrib/q-and-a/demo/lang-en/code/Q-and-A-demo-en-code-func.py
@@ -0,0 +1,4 @@
+def my_function(parameter):
+ # Perform operations inside the function
+ result = parameter * 2
+ return result \ No newline at end of file
diff --git a/macros/latex/contrib/q-and-a/demo/lang-en/code/Q-and-A-demo-en-code-list.py b/macros/latex/contrib/q-and-a/demo/lang-en/code/Q-and-A-demo-en-code-list.py
new file mode 100644
index 0000000000..b57a6ab114
--- /dev/null
+++ b/macros/latex/contrib/q-and-a/demo/lang-en/code/Q-and-A-demo-en-code-list.py
@@ -0,0 +1 @@
+my_list = [1, 2, 3, 4, 5] \ No newline at end of file
diff --git a/macros/latex/contrib/q-and-a/demo/lang-fr/Q-and-A-demo-fr.pdf b/macros/latex/contrib/q-and-a/demo/lang-fr/Q-and-A-demo-fr.pdf
index a1307f1deb..6713a86cf5 100644
--- a/macros/latex/contrib/q-and-a/demo/lang-fr/Q-and-A-demo-fr.pdf
+++ b/macros/latex/contrib/q-and-a/demo/lang-fr/Q-and-A-demo-fr.pdf
Binary files differ
diff --git a/macros/latex/contrib/q-and-a/demo/lang-fr/Q-and-A-demo-fr.tex b/macros/latex/contrib/q-and-a/demo/lang-fr/Q-and-A-demo-fr.tex
index 4f5ae4eded..140fafde78 100644
--- a/macros/latex/contrib/q-and-a/demo/lang-fr/Q-and-A-demo-fr.tex
+++ b/macros/latex/contrib/q-and-a/demo/lang-fr/Q-and-A-demo-fr.tex
@@ -1,4 +1,6 @@
\documentclass[%11pt,
+ numbered question,
+ numbered answer,
scroll,
]{Q-and-A}
diff --git a/macros/latex/contrib/q-and-a/doc/Q-and-A-doc.pdf b/macros/latex/contrib/q-and-a/doc/Q-and-A-doc.pdf
index 6c884038c4..dadca3b63e 100644
--- a/macros/latex/contrib/q-and-a/doc/Q-and-A-doc.pdf
+++ b/macros/latex/contrib/q-and-a/doc/Q-and-A-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/q-and-a/doc/Q-and-A-doc.tex b/macros/latex/contrib/q-and-a/doc/Q-and-A-doc.tex
index 5405916bad..48894878d7 100644
--- a/macros/latex/contrib/q-and-a/doc/Q-and-A-doc.tex
+++ b/macros/latex/contrib/q-and-a/doc/Q-and-A-doc.tex
@@ -1,9 +1,11 @@
\documentclass[%11pt,
use style = classical,
+ % numbered answer,
+ % numbered question,
scroll,
]{Q-and-A}
-\def\PackageVersion{2023/11/05}
+\def\PackageVersion{2023/11/07}
\def\PackageSubVersion{}
\newcommand{\QApackage}{{\normalfont\textsf{Q-and-A}}}
@@ -69,9 +71,11 @@
The available class options include:
\begin{itemize}
\item Font size options such as `11pt`, `12pt`.
- \item `scroll`: turns the scroll mode on, which generates a single-page pdf similar to a long screenshot. It is recommended to use this option if your document contains some large piece of code.
+ \item `scroll`: turn the scroll mode on, which generates a single-page pdf similar to a long screenshot. It is recommended to use this option if your document contains some large piece of code.
\item `use theme = \meta{theme}`: use the selected theme, available choices include: `default` (like the current document), `ChatGPT-light` and `ChatGPT-dark` (see the demo documents).
- \item `answer outside the box`, or `answer out of the box` (or even omit `the`): enables another implementation for printing the answer that does not involve putting it into a colored box. This would be useful if the answers contain many long pieces of code while you still want the pages to break normally.
+ \item `numbered question`, or `question number`: enable the numbering of questions.
+ \item `numbered answer`, or `answer number`: enable the numbering of answers.
+ \item `answer outside the box`, or `answer out of the box` (or even omit `the`): enable another implementation for printing the answer that does not involve putting it into a colored box. This would be useful if the answers contain many long pieces of code while you still want the pages to break normally.
\end{itemize}
?
@@ -221,8 +225,14 @@
\item Use `\textbackslash SetLogoCode\{Q\}\{\meta{logo code}\}` to set the labels for questions.
\item Use `\textbackslash SetLogoCode\{A\}\{\meta{logo code}\}` to set the labels for answers.
\end{itemize}
- Here, \meta{logo code} is the actual code for displaying the corresponding label. For example, the default label for questions is preset via `\textbackslash SetLogoCode\{Q\}\{\textbackslash textbf\{Q\textbackslash,:\}\}`.
- >>> In the demo document, you can find an example on how to use this command to specify a logo for each role in the conversation.
+ Here, \meta{logo code} is the actual code for displaying the corresponding label. For example, the default label for (unnumbered) questions is preset via `\textbackslash SetLogoCode\{Q\}\{\textbackslash textbf\{Q\textbackslash,:\}\}`.
+ \QANote{In the demo document, you can find an example on how to use this command to specify a logo for each role in the conversation.}
+ If you wish to include the question number or answer number, you may use the command `\textbackslash QAShowCounter`:
+ \begin{itemize}
+ \item Use `\textbackslash QAShowCounter\{Q\}` to step the counter of question and print it.
+ \item Use `\textbackslash QAShowCounter\{A\}` to step the counter of answer and print it.
+ \end{itemize}
+ For example, the default label for numbered questions is preset by adding `\textbackslash QAShowCounter\{Q\}` to the unnumbered version: `\textbackslash SetLogoCode\{Q\}\{\textbackslash textbf\{Q\textbackslash QAShowCounter\{Q\}\textbackslash,:\}\}`.
##+ {Known Issues}
diff --git a/macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-content-result.pdf b/macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-content-result.pdf
index 1b5660f6b2..24a795b3ca 100644
--- a/macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-content-result.pdf
+++ b/macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-content-result.pdf
Binary files differ
diff --git a/macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-content-result.tex b/macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-content-result.tex
index 9323cc5037..09a9f712e8 100644
--- a/macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-content-result.tex
+++ b/macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-content-result.tex
@@ -1,8 +1,10 @@
\documentclass[%11pt,
+ numbered answer,
+ numbered question,
% scroll,
]{Q-and-A}
-\geometry{paperwidth=12cm, paperheight=7.2cm}
+\geometry{paperwidth=12cm, paperheight=8.2cm}
\begin{document}
diff --git a/macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-document.tex b/macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-document.tex
index 7d4f6bc6ae..29aa3599e1 100644
--- a/macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-document.tex
+++ b/macros/latex/contrib/q-and-a/doc/code/Q-and-A-doc-code-sample-document.tex
@@ -1,7 +1,10 @@
\documentclass[%11pt,
use theme = (@@@\meta{theme}),
+ numbered question,
+ numbered answer,
+ % answer outside the box,
scroll,
-]{Q-A}
+]{Q-and-A}
\UseLanguage{(@@@\meta{language})} % For English this line can be omitted.
diff --git a/macros/latex/contrib/siunitx/CHANGELOG.md b/macros/latex/contrib/siunitx/CHANGELOG.md
index 3e9be4b986..554c6ff609 100644
--- a/macros/latex/contrib/siunitx/CHANGELOG.md
+++ b/macros/latex/contrib/siunitx/CHANGELOG.md
@@ -7,6 +7,24 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
## [Unreleased]
+## [v3.3.8] - 2023-11-06
+
+### Deprecated
+- `x`-type variants
+ - `\siunitx_angle:x`
+ - `\siunitx_angle:xxx`
+ - `\siunitx_complex_number:x`
+ - `\siunitx_complex_quantity:xn`
+ - `\siunitx_print_number:x`
+ - `\siunitx_quantity_print:xV`
+ - `\siunitx_declare_prefix:Nnx`
+ - `\siunitx_declare_unit:Nx`
+ - `\siunitx_declare_unit:Nxn`
+
+### Fixed
+- Printing of `1` when `print-unity-mantissa = false` (see issue
+ [\#700](https://github.com/josephwright/siunitx/issues/700))
+
## [v3.3.7] - 2023-10-07
### Fixed
@@ -2025,7 +2043,8 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Added
- First public testing release (as `si`)
-[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.3.7...HEAD
+[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.3.8...HEAD
+[v3.3.8]: https://github.com/josephwright/siunitx/compare/v3.3.7...v3.3.8
[v3.3.7]: https://github.com/josephwright/siunitx/compare/v3.3.6...v3.3.7
[v3.3.6]: https://github.com/josephwright/siunitx/compare/v3.3.5...v3.3.6
[v3.3.5]: https://github.com/josephwright/siunitx/compare/v3.3.4...v3.3.5
diff --git a/macros/latex/contrib/siunitx/siunitx-angle.dtx b/macros/latex/contrib/siunitx/siunitx-angle.dtx
index 5489fbfec3..7b2b012e13 100644
--- a/macros/latex/contrib/siunitx/siunitx-angle.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-angle.dtx
@@ -64,8 +64,8 @@
%
% \begin{function}
% {
-% \siunitx_angle:n, \siunitx_angle:x,
-% \siunitx_angle:nnn, \siunitx_angle:xxx
+% \siunitx_angle:n, \siunitx_angle:e,
+% \siunitx_angle:nnn, \siunitx_angle:eee
% }
% \begin{syntax}
% \cs{siunitx_angle:n} \Arg{angle}
@@ -240,9 +240,9 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\siunitx_angle:n, \siunitx_angle:x, \@@_angle:n}
-% \begin{macro}{\siunitx_angle:nnn, \siunitx_angle:xxx}
-% \begin{macro}{\@@_arc_convert:n, \@@_arc_convert:x}
+% \begin{macro}{\siunitx_angle:n, \siunitx_angle:e, \@@_angle:n}
+% \begin{macro}{\siunitx_angle:nnn, \siunitx_angle:eee}
+% \begin{macro}{\@@_arc_convert:n, \@@_arc_convert:e}
% The first step here is to force format conversion if required. Going to
% a decimal is easy, going to arc format is a bit more painful: avoid
% repeating calculations mainly for code readability.
@@ -262,11 +262,11 @@
}
}
}
-\cs_generate_variant:Nn \siunitx_angle:n { x }
+\cs_generate_variant:Nn \siunitx_angle:n { e , x }
\cs_new_protected:Npn \@@_angle:n #1
{
\bool_if:NTF \l_@@_force_arc_bool
- { \@@_arc_convert:x { \fp_eval:n {#1} } }
+ { \@@_arc_convert:e { \fp_eval:n {#1} } }
{
\siunitx_number_parse:nN {#1} \l_@@_degrees_tl
\siunitx_number_process:NN \l_@@_degrees_tl \l_@@_degrees_tl
@@ -284,7 +284,7 @@
{
\bool_if:NTF \l_@@_force_decimal_bool
{
- \siunitx_angle:x
+ \siunitx_angle:e
{ \fp_eval:n { #1 + (#2) / 60 + (#3) / 3600 } }
}
{ \@@_arc_sign:nnn {#1} {#2} {#3} }
@@ -302,10 +302,10 @@
\l_@@_seconds_tl
}
}
-\cs_generate_variant:Nn \siunitx_angle:nnn { xxx }
+\cs_generate_variant:Nn \siunitx_angle:nnn { eee , xxx }
\cs_new_protected:Npn \@@_arc_convert:n #1
{
- \siunitx_angle:xxx
+ \siunitx_angle:eee
{ \fp_eval:n { trunc(#1,0) } }
{ \fp_eval:n { trunc((#1 - trunc(#1,0)) * 60,0) } }
{
@@ -319,7 +319,7 @@
}
}
}
-\cs_generate_variant:Nn \@@_arc_convert:n { x }
+\cs_generate_variant:Nn \@@_arc_convert:n { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/macros/latex/contrib/siunitx/siunitx-code.pdf b/macros/latex/contrib/siunitx/siunitx-code.pdf
index 0e2b1d9aef..71cc89e478 100644
--- a/macros/latex/contrib/siunitx/siunitx-code.pdf
+++ b/macros/latex/contrib/siunitx/siunitx-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/siunitx-complex.dtx b/macros/latex/contrib/siunitx/siunitx-complex.dtx
index af0b882c94..644aa9c095 100644
--- a/macros/latex/contrib/siunitx/siunitx-complex.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-complex.dtx
@@ -66,7 +66,7 @@
% assumptions concerning \LaTeXe{} commands in the submodule beyond those in the
% core number and unit submodules.
%
-% \begin{function}{\siunitx_complex_number:n, \siunitx_complex_number:x}
+% \begin{function}{\siunitx_complex_number:n, \siunitx_complex_number:e}
% \begin{syntax}
% \cs{siunitx_complex_number:n} \Arg{number}
% \end{syntax}
@@ -96,7 +96,7 @@
% \begin{function}
% {
% \siunitx_complex_quantity:nn ,
-% \siunitx_complex_quantity:xn ,
+% \siunitx_complex_quantity:en ,
% \siunitx_complex_quantity:nnn
% }
% \begin{syntax}
@@ -691,9 +691,9 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\siunitx_complex_number:n, \siunitx_complex_number:x}
+% \begin{macro}{\siunitx_complex_number:n, \siunitx_complex_number:e}
% \begin{macro}{\siunitx_complex_number:nn, \@@_number:nn}
-% \begin{macro}{\siunitx_complex_quantity:nn, \siunitx_complex_quantity:xn}
+% \begin{macro}{\siunitx_complex_quantity:nn, \siunitx_complex_quantity:en}
% \begin{macro}{\siunitx_complex_quantity:nnn, \@@_quantity:nnn}
% The work here is pretty trivial: only conversion between forms makes
% things a bit more intricate.
@@ -722,7 +722,7 @@
}
}
}
-\cs_generate_variant:Nn \siunitx_complex_number:n { x }
+\cs_generate_variant:Nn \siunitx_complex_number:n { e, x }
\cs_new_protected:Npn \siunitx_complex_number:nn #1#2
{
\bool_lazy_or:nnTF
@@ -740,7 +740,7 @@
{ \l_@@_force_cartesian_bool }
{ \l_siunitx_number_parse_bool }
{
- \siunitx_complex_number:x
+ \siunitx_complex_number:e
{ \@@_convert_cartesian:nn {#1} {#2} }
}
{
@@ -770,7 +770,7 @@
{ \siunitx_quantity:nn {#1} {#2} }
}
}
-\cs_generate_variant:Nn \siunitx_complex_quantity:nn { x }
+\cs_generate_variant:Nn \siunitx_complex_quantity:nn { e , x }
\cs_new_protected:Npn \siunitx_complex_quantity:nnn #1#2#3
{
\bool_lazy_or:nnTF
@@ -788,7 +788,7 @@
{ \l_@@_force_cartesian_bool }
{ \l_siunitx_number_parse_bool }
{
- \siunitx_complex_quantity:xn
+ \siunitx_complex_quantity:en
{ \@@_convert_cartesian:nn {#1} {#2} }
{#3}
}
diff --git a/macros/latex/contrib/siunitx/siunitx-compound.dtx b/macros/latex/contrib/siunitx/siunitx-compound.dtx
index e6a2b67691..4083e3ac47 100644
--- a/macros/latex/contrib/siunitx/siunitx-compound.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-compound.dtx
@@ -535,7 +535,7 @@
% \begin{macro}{\siunitx_compound_number:n}
% \begin{macro}{\@@_format:n}
% \begin{macro}{\@@_format:nn}
-% \begin{macro}{\@@_format:nnn, \@@_format:xxn}
+% \begin{macro}{\@@_format:nnn, \@@_format:een}
% Printing a generic set starts with the question of whether we want to
% extract exponents. If we do, then there is the work to do with extraction.
% Either way, the printing is handed off to a common function. We do a quick
@@ -546,7 +546,7 @@
\group_begin:
\bool_set_false:N \l_@@_unit_bool
\@@_format:nn {#1} { }
- \@@_print:N \siunitx_print_number:x
+ \@@_print:N \siunitx_print_number:e
\group_end:
}
\cs_new_protected:Npn \@@_format:nn #1#2
@@ -554,7 +554,7 @@
\seq_clear:N \l_@@_tmp_seq
\bool_if:NTF \l_siunitx_number_parse_bool
{
- \@@_format:xxn
+ \@@_format:een
{ \tl_head:n {#1} }
{ \tl_tail:n {#1} }
{#2}
@@ -575,7 +575,7 @@
}
{ \@@_format_aux:nnn {#1} {#2} {#3} }
}
-\cs_generate_variant:Nn \@@_format:nnn { xx }
+\cs_generate_variant:Nn \@@_format:nnn { ee }
\cs_new_protected:Npn \@@_format_aux:nnn #1#2#3
{
\siunitx_number_parse:nN {#1} \l_@@_tmp_tl
@@ -855,17 +855,17 @@
\str_if_eq:VnT \l_siunitx_quantity_prefix_mode_tl { combine-exponent }
{ \tl_clear:N \l_@@_exp_tl }
\bool_if:NTF \l_@@_unit_repeat_bool
- { \@@_print:N \@@_print_quantity:x }
+ { \@@_print:N \@@_print_quantity:e }
{
\bool_lazy_and:nnTF
{ \l_@@_unit_bracket_bool }
{ \tl_if_empty_p:N \l_@@_exp_tl }
{
\siunitx_print_number:V \l_@@_bracket_open_tl
- \@@_print:N \siunitx_print_number:x
+ \@@_print:N \siunitx_print_number:e
\siunitx_print_number:V \l_@@_bracket_close_tl
}
- { \@@_print:N \siunitx_print_number:x }
+ { \@@_print:N \siunitx_print_number:e }
\@@_print_quantity:n { \c_empty_tl }
}
}
@@ -874,11 +874,11 @@
% \end{macro}
%
% \begin{macro}{\@@_print:N}
-% \begin{macro}{\@@_print:nnN, \@@_print:nVN, \@@_print:xnN, \@@_print:xxN}
-% \begin{macro}{\@@_print:nnnN, \@@_print:xnnN}
+% \begin{macro}{\@@_print:nnN, \@@_print:nVN, \@@_print:enN, \@@_print:eeN}
+% \begin{macro}{\@@_print:nnnN, \@@_print:ennN}
% \begin{macro}{\@@_print_aux:n}
% \begin{macro}{\@@_print_aux:nn}
-% \begin{macro}{\@@_print_quantity:n, \@@_print_quantity:x}
+% \begin{macro}{\@@_print_quantity:n, \@@_print_quantity:e}
% \begin{macro}
% {
% \@@_print_boundary:n, \@@_print_boundary:V,
@@ -894,7 +894,7 @@
{ \l_@@_exp_bracket_bool }
{ ! \tl_if_empty_p:N \l_@@_exp_tl }
{
- \@@_print:xxN
+ \@@_print:eeN
{ \exp_not:V \l_@@_bracket_open_tl }
{
\exp_not:V \l_@@_bracket_close_tl
@@ -906,10 +906,10 @@
}
\cs_new_protected:Npn \@@_print:nnN #1#2#3
{
- \@@_print:xnnN
+ \@@_print:ennN
{ \seq_count:N \l_@@_tmp_seq } {#1} {#2} #3
}
-\cs_generate_variant:Nn \@@_print:nnN { nV , x , xx }
+\cs_generate_variant:Nn \@@_print:nnN { nV , e , ee }
% \end{macrocode}
% A rather long auxiliary as we want a way to have the brackets/exponent
% available. The actual flow is simple enough: see how many entries there are
@@ -955,7 +955,7 @@
\@@_print_boundary:V \l_@@_boundary_close_tl
}
}
-\cs_generate_variant:Nn \@@_print:nnnN { x }
+\cs_generate_variant:Nn \@@_print:nnnN { e }
\cs_new_protected:Npn \@@_print_aux:n #1 { }
\cs_new_protected:Npn \@@_print_aux:nn #1#2
{
@@ -991,7 +991,7 @@
}
\cs_new_protected:Npn \@@_print_quantity:n #1
{ \siunitx_quantity_print:nV {#1} \l_@@_unit_tl }
-\cs_generate_variant:Nn \@@_print_quantity:n { x }
+\cs_generate_variant:Nn \@@_print_quantity:n { e }
\cs_new_protected:Npn \@@_print_boundary:n #1
{
\tl_if_blank:nF {#1}
@@ -1191,7 +1191,7 @@
% \begin{macro}{\siunitx_number_product:n}
% \begin{macro}{\siunitx_quantity_product:nn}
% \begin{macro}{\@@_aux:}
-% \begin{macro}{\@@_aux:n, \@@_aux:x}
+% \begin{macro}{\@@_aux:n, \@@_aux:e}
% Simply recover the settings and use as a list.
% \begin{macrocode}
\cs_new_protected:Npn \siunitx_number_product:n #1
@@ -1211,8 +1211,8 @@
\cs_new_protected:Npn \@@_aux:
{
\bool_if:NTF \l_@@_phrase_bool
- { \@@_aux:x { \exp_not:V \l_@@_phrase_tl } }
- { \@@_aux:x { { } \exp_not:V \l_@@_symbol_tl { } } }
+ { \@@_aux:e { \exp_not:V \l_@@_phrase_tl } }
+ { \@@_aux:e { { } \exp_not:V \l_@@_symbol_tl { } } }
}
\cs_new_protected:Npn \@@_aux:n #1
{
@@ -1235,7 +1235,7 @@
compound-units = \l_@@_units_tl
}
}
-\cs_generate_variant:Nn \@@_aux:n { x }
+\cs_generate_variant:Nn \@@_aux:n { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/macros/latex/contrib/siunitx/siunitx-emulation.dtx b/macros/latex/contrib/siunitx/siunitx-emulation.dtx
index 887cea9d20..4d82d7b426 100644
--- a/macros/latex/contrib/siunitx/siunitx-emulation.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-emulation.dtx
@@ -1050,7 +1050,7 @@
{
\quark_if_recursion_tail_stop:N #1
\bool_new:c { g_@@_unit_warning_ \token_to_str:N #1 _bool }
- \siunitx_declare_unit:Nx #1
+ \siunitx_declare_unit:Ne #1
{
\exp_not:N \bool_if:NF
\exp_not:c { g_@@_unit_warning_ \token_to_str:N #1 _bool }
diff --git a/macros/latex/contrib/siunitx/siunitx-number.dtx b/macros/latex/contrib/siunitx/siunitx-number.dtx
index 2218e61022..04b302cf51 100644
--- a/macros/latex/contrib/siunitx/siunitx-number.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-number.dtx
@@ -1777,7 +1777,7 @@
% \begin{macro}
% {
% \@@_parse_uncert_marker:nnnnnnN ,
-% \@@_parse_uncert_marker:xnnnnnN
+% \@@_parse_uncert_marker:ennnnnN
% }
% \begin{macro}{\@@_parse_uncert_after:N}
% Parsing a combined uncertainty has a very restricted range of allowed
@@ -1954,7 +1954,7 @@
}
\cs_new_protected:Npn \@@_parse_uncert_marker:nnnnnN #1#2#3#4#5#6
{
- \@@_parse_uncert_marker:xnnnnnN
+ \@@_parse_uncert_marker:ennnnnN
{ \int_eval:n { \tl_count:n {#4} } }
{#1} {#2} {#3} {#4} {#5} #6
}
@@ -1990,7 +1990,7 @@
}
#5#6#7
}
-\cs_generate_variant:Nn \@@_parse_uncert_marker:nnnnnnN { x }
+\cs_generate_variant:Nn \@@_parse_uncert_marker:nnnnnnN { e }
% \end{macrocode}
% At the end of collection, we can either start another one or be done:
% either way we move the data around.
@@ -4148,7 +4148,11 @@
{ ! \str_if_eq_p:nn { #1 . #2 } { 1. } }
{
\bool_lazy_and_p:nn
- { \str_if_eq_p:nn {#3} { 0 } }
+ {
+ \bool_lazy_or_p:nn
+ { \tl_if_blank_p:n {#3} }
+ { \str_if_eq_p:nn {#3} { 0 } }
+ }
{ ! \l_@@_zero_exponent_bool }
}
{
diff --git a/macros/latex/contrib/siunitx/siunitx-print.dtx b/macros/latex/contrib/siunitx/siunitx-print.dtx
index 79d2d53840..6e1a89f629 100644
--- a/macros/latex/contrib/siunitx/siunitx-print.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-print.dtx
@@ -105,9 +105,9 @@
% \begin{function}
% {
% \siunitx_print_number:n, \siunitx_print_number:V,
-% \siunitx_print_number:x,
-% \siunitx_print_unit:n, \siunitx_print_unit:V, \siunitx_print_unit:o,
-% \siunitx_print_unit:x
+% \siunitx_print_number:e,
+% \siunitx_print_unit:n, \siunitx_print_unit:V, \siunitx_print_unit:e,
+% \siunitx_print_unit:o
% }
% \begin{syntax}
% \cs{siunitx_print_number:n} \Arg{material}
@@ -458,9 +458,9 @@
% \begin{macro}
% {
% \siunitx_print_number:n, \siunitx_print_number:V,
-% \siunitx_print_number:x,
-% \siunitx_print_unit:n, \siunitx_print_unit:V, \siunitx_print_unit:o,
-% \siunitx_print_unit:x
+% \siunitx_print_number:e,
+% \siunitx_print_unit:n, \siunitx_print_unit:V, \siunitx_print_unit:e,
+% \siunitx_print_unit:o
% }
% \begin{macro}{\@@_aux:nn}
% The main printing function doesn't actually need to do very much: just set
@@ -471,10 +471,10 @@
% \begin{macrocode}
\cs_new_protected:Npn \siunitx_print_number:n #1
{ \@@_aux:nn { number } {#1} }
-\cs_generate_variant:Nn \siunitx_print_number:n { V , x }
+\cs_generate_variant:Nn \siunitx_print_number:n { V , e , x }
\cs_new_protected:Npn \siunitx_print_unit:n #1
{ \@@_aux:nn { unit } {#1} }
-\cs_generate_variant:Nn \siunitx_print_unit:n { V , o , x }
+\cs_generate_variant:Nn \siunitx_print_unit:n { V , e , o , x }
\cs_new_protected:Npn \@@_aux:nn #1#2
{
\tl_if_empty:oF {#2}
diff --git a/macros/latex/contrib/siunitx/siunitx-quantity.dtx b/macros/latex/contrib/siunitx/siunitx-quantity.dtx
index d8e71d7f22..b9c7e107bb 100644
--- a/macros/latex/contrib/siunitx/siunitx-quantity.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-quantity.dtx
@@ -78,7 +78,7 @@
% \begin{function}
% {
% \siunitx_quantity_print:nn, \siunitx_quantity_print:nV,
-% \siunitx_quantity_print:VV, \siunitx_quantity_print:xV
+% \siunitx_quantity_print:VV, \siunitx_quantity_print:eV
% }
% \begin{syntax}
% \cs{siunitx_quantity_print:nn} \Arg{number} \Arg{unit}
@@ -311,7 +311,7 @@
{
\bool_if:NTF \l_@@_uncert_bracket_bool
{
- \siunitx_quantity_print:xV
+ \siunitx_quantity_print:eV
{
\exp_not:n {#2}
\exp_not:V \l_@@_bracket_open_tl
@@ -376,7 +376,7 @@
% \begin{macro}
% {
% \siunitx_quantity_print:nn, \siunitx_quantity_print:nV,
-% \siunitx_quantity_print:VV, \siunitx_quantity_print:xV
+% \siunitx_quantity_print:VV, \siunitx_quantity_print:eV
% }
% For printing a single part of a quantity. This is needed for compound
% quantities and so is public: that's also the reason for passing both
@@ -403,7 +403,7 @@
{ \siunitx_print_unit:o { \use_none:n #2 } }
}
}
-\cs_generate_variant:Nn \siunitx_quantity_print:nn { nV , VV , xV }
+\cs_generate_variant:Nn \siunitx_quantity_print:nn { nV , VV , eV , xV }
% \end{macrocode}
% \end{macro}
%
@@ -437,13 +437,13 @@
% in quantities. This is done here as it avoids a dependency in
% \pkg{siunitx-unit} on options it does not contain.
% \begin{macrocode}
-\siunitx_declare_unit:Nxn \arcminute
+\siunitx_declare_unit:Nen \arcminute
{ \@@_non_latin:n { "02B9 } }
{ quantity-product = { } }
-\siunitx_declare_unit:Nxn \arcsecond
+\siunitx_declare_unit:Nen \arcsecond
{ \@@_non_latin:n { "02BA } }
{ quantity-product = { } }
-\siunitx_declare_unit:Nxn \degree
+\siunitx_declare_unit:Nen \degree
{ \@@_non_latin:n { "00B0 } }
{ quantity-product = { } }
% \end{macrocode}
diff --git a/macros/latex/contrib/siunitx/siunitx-symbol.dtx b/macros/latex/contrib/siunitx/siunitx-symbol.dtx
index 037e39ffc7..c5ec0c39ce 100644
--- a/macros/latex/contrib/siunitx/siunitx-symbol.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-symbol.dtx
@@ -159,7 +159,7 @@
% \begin{macrocode}
\@@_if_replace:NnT \degree { "00B0 }
{
- \siunitx_declare_unit:Nxn \degree
+ \siunitx_declare_unit:Nen \degree
{
\exp_not:N \ifmmode
\@ifpackageloaded { unicode-math }
@@ -189,7 +189,7 @@
\str_if_eq:VVTF \l_@@_tmpa_tl \l_@@_tmpb_tl
{
\group_end:
- \siunitx_declare_unit:Nx \degreeCelsius
+ \siunitx_declare_unit:Ne \degreeCelsius
{
\exp_not:N \ifmmode
\@ifpackageloaded { unicode-math }
@@ -225,7 +225,7 @@
\exp_not:N \text
{ \exp_not:N \ensuremath { \exp_not:V \l_@@_tmpa_tl } }
}
- \siunitx_declare_unit:Nx \ohm
+ \siunitx_declare_unit:Ne \ohm
{
\@ifpackageloaded { fourier }
{
@@ -260,7 +260,7 @@
% \begin{macrocode}
\@@_if_replace:NnT \micro { "03BC }
{
- \siunitx_declare_prefix:Nnx \micro { -6 }
+ \siunitx_declare_prefix:Nne \micro { -6 }
{
\exp_not:N \text
{
@@ -286,7 +286,7 @@
{
\@ifpackageloaded { hyperref }
{
- \ExpandArgs { x } \pdfstringdefDisableCommands
+ \ExpandArgs { e } \pdfstringdefDisableCommands
{
\cs_set_eq:NN \siunitx_print_text:n \exp_not:N \use:n
\siunitx_declare_unit:Nn \exp_not:N \ohm
diff --git a/macros/latex/contrib/siunitx/siunitx-table.dtx b/macros/latex/contrib/siunitx/siunitx-table.dtx
index 1eaf959a6b..f900c741f8 100644
--- a/macros/latex/contrib/siunitx/siunitx-table.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-table.dtx
@@ -1263,7 +1263,7 @@
{ \siunitx_print_number:n { #1#2#3 } }
\hbox_set:Nn \l_@@_decimal_box
{
- \siunitx_print_number:x
+ \siunitx_print_number:e
{ \@@_print_marker_aux:w #4 \q_stop }
}
\@@_center_marker:
diff --git a/macros/latex/contrib/siunitx/siunitx-unit.dtx b/macros/latex/contrib/siunitx/siunitx-unit.dtx
index ee458b3f88..8c94acad0e 100644
--- a/macros/latex/contrib/siunitx/siunitx-unit.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-unit.dtx
@@ -191,7 +191,7 @@
%
% \section{Defining symbolic units}
%
-% \begin{function}{\siunitx_declare_prefix:Nnn, \siunitx_declare_prefix:Nnx}
+% \begin{function}{\siunitx_declare_prefix:Nnn, \siunitx_declare_prefix:Nne}
% \begin{syntax}
% \cs{siunitx_declare_prefix:Nnn} \meta{prefix} \Arg{power} \Arg{symbol}
% \end{syntax}
@@ -248,9 +248,9 @@
% \begin{function}
% {
% \siunitx_declare_unit:Nn,
-% \siunitx_declare_unit:Nx,
+% \siunitx_declare_unit:Ne,
% \siunitx_declare_unit:Nnn,
-% \siunitx_declare_unit:Nxn
+% \siunitx_declare_unit:Nen
% }
% \begin{syntax}
% \cs{siunitx_declare_unit:Nn} \meta{unit} \Arg{meaning}
@@ -868,7 +868,7 @@
% \end{macro}
%
% \begin{macro}{\siunitx_declare_prefix:Nn}
-% \begin{macro}{\siunitx_declare_prefix:Nnn, \siunitx_declare_prefix:Nnx}
+% \begin{macro}{\siunitx_declare_prefix:Nnn, \siunitx_declare_prefix:Nne}
% \begin{variable}
% {\l_@@_prefixes_forward_prop, \l_@@_prefixes_reverse_prop}
% For prefixes there are a couple of options. In all cases, the basic
@@ -890,7 +890,7 @@
\prop_put:Nnn \l_@@_prefixes_forward_prop {#3} {#2}
\prop_put:Nnn \l_@@_prefixes_reverse_prop {#2} {#3}
}
-\cs_generate_variant:Nn \siunitx_declare_prefix:Nnn { Nnx }
+\cs_generate_variant:Nn \siunitx_declare_prefix:Nnn { Nne , Nnx }
\prop_new:N \l_@@_prefixes_forward_prop
\prop_new:N \l_@@_prefixes_reverse_prop
% \end{macrocode}
@@ -911,14 +911,14 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\siunitx_declare_unit:Nn, \siunitx_declare_unit:Nx}
-% \begin{macro}{\siunitx_declare_unit:Nnn, \siunitx_declare_unit:Nxn}
+% \begin{macro}{\siunitx_declare_unit:Nn, \siunitx_declare_unit:Ne}
+% \begin{macro}{\siunitx_declare_unit:Nnn, \siunitx_declare_unit:Nen}
% For the unit parsing, allowing for variations in definition order requires
% that a test is made for the output of each unit at point of use.
% \begin{macrocode}
\cs_new_protected:Npn \siunitx_declare_unit:Nn #1#2
{ \siunitx_declare_unit:Nnn #1 {#2} { } }
-\cs_generate_variant:Nn \siunitx_declare_unit:Nn { Nx }
+\cs_generate_variant:Nn \siunitx_declare_unit:Nn { Ne , Nx }
\cs_new_protected:Npn \siunitx_declare_unit:Nnn #1#2#3
{
\seq_put_right:Nn \l_siunitx_unit_seq {#1}
@@ -933,7 +933,7 @@
\tl_if_empty:nF {#3}
{ \tl_set:cn { l_@@_options_ \token_to_str:N #1 _tl } {#3} }
}
-\cs_generate_variant:Nn \siunitx_declare_unit:Nnn { Nx }
+\cs_generate_variant:Nn \siunitx_declare_unit:Nnn { Ne , Nx }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2718,7 +2718,7 @@
\siunitx_declare_prefix:Nnn \femto { -15 } { f }
\siunitx_declare_prefix:Nnn \pico { -12 } { p }
\siunitx_declare_prefix:Nnn \nano { -9 } { n }
-\siunitx_declare_prefix:Nnx \micro { -6 } { \@@_non_latin:n { "03BC } }
+\siunitx_declare_prefix:Nne \micro { -6 } { \@@_non_latin:n { "03BC } }
\siunitx_declare_prefix:Nnn \milli { -3 } { m }
\siunitx_declare_prefix:Nnn \centi { -2 } { c }
\siunitx_declare_prefix:Nnn \deci { -1 } { d }
@@ -2775,7 +2775,7 @@
% Named derived units: first half of alphabet.
% \begin{macrocode}
\siunitx_declare_unit:Nn \becquerel { Bq }
-\siunitx_declare_unit:Nx \degreeCelsius { \@@_non_latin:n { "00B0 } C }
+\siunitx_declare_unit:Ne \degreeCelsius { \@@_non_latin:n { "00B0 } C }
\siunitx_declare_unit:Nn \coulomb { C }
\siunitx_declare_unit:Nn \farad { F }
\siunitx_declare_unit:Nn \gray { Gy }
@@ -2804,7 +2804,7 @@
% Named derived units: second half of alphabet.
% \begin{macrocode}
\siunitx_declare_unit:Nn \newton { N }
-\siunitx_declare_unit:Nx \ohm { \@@_non_latin:n { "2126 } }
+\siunitx_declare_unit:Ne \ohm { \@@_non_latin:n { "2126 } }
\siunitx_declare_unit:Nn \pascal { Pa }
\siunitx_declare_unit:Nn \radian { rad }
\siunitx_declare_unit:Nn \siemens { S }
@@ -2859,16 +2859,16 @@
% }
% Arc units: again, non-\acro{SI}, but accepted for general use.
% \begin{macrocode}
-\siunitx_declare_unit:Nx \arcminute { \@@_non_latin:n { "02B9 } }
-\siunitx_declare_unit:Nx \arcsecond { \@@_non_latin:n { "02BA } }
-\siunitx_declare_unit:Nx \degree { \@@_non_latin:n { "00B0 } }
+\siunitx_declare_unit:Ne \arcminute { \@@_non_latin:n { "02B9 } }
+\siunitx_declare_unit:Ne \arcsecond { \@@_non_latin:n { "02BA } }
+\siunitx_declare_unit:Ne \degree { \@@_non_latin:n { "00B0 } }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\percent}
% For percent, the raw character is the most flexible way of handling output.
% \begin{macrocode}
-\siunitx_declare_unit:Nx \percent { \cs_to_str:N \% }
+\siunitx_declare_unit:Ne \percent { \cs_to_str:N \% }
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex/contrib/siunitx/siunitx.dtx b/macros/latex/contrib/siunitx/siunitx.dtx
index 88f313ab7f..e2870e43e6 100644
--- a/macros/latex/contrib/siunitx/siunitx.dtx
+++ b/macros/latex/contrib/siunitx/siunitx.dtx
@@ -121,7 +121,7 @@
%
% Identify the package and give the over all version information.
% \begin{macrocode}
-\ProvidesExplPackage {siunitx} {2023-10-07} {3.3.7}
+\ProvidesExplPackage {siunitx} {2023-11-06} {3.3.8}
{A comprehensive (SI) units package}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/siunitx/siunitx.pdf b/macros/latex/contrib/siunitx/siunitx.pdf
index 59e098502a..73faebb49e 100644
--- a/macros/latex/contrib/siunitx/siunitx.pdf
+++ b/macros/latex/contrib/siunitx/siunitx.pdf
Binary files differ