diff options
author | Norbert Preining <norbert@preining.info> | 2023-12-10 03:03:07 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-12-10 03:03:07 +0000 |
commit | 4d14c5388a9581dee1111261078e6141963ec24f (patch) | |
tree | 52553457b5385303c1ce97dcfa6e070ccd0235e7 /macros/latex | |
parent | 1bac51c9be71358b55925783e16f3d8bc03d630b (diff) |
CTAN sync 202312100303
Diffstat (limited to 'macros/latex')
49 files changed, 716 insertions, 338 deletions
diff --git a/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md b/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md index c3bc86cfc0..9076adab08 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md +++ b/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md @@ -6,6 +6,21 @@ 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-17] +Version: 2023-12-09, 0.96d + +### Removed + + - l3bitset is now provided by l3kernel. + +### Added + - 2023-11-20: l3pdfmeta.dtx: support for PDF declarations in XMP metadata, issue #58 + - hyperref-generic.dtx: option nested-links key to suppress nested links. + +### Changed + - key family in hyperref-generic is now hyp and not hyp/setup + - do not use pdfuaid:rev with pdf/UA-1 + +## [2023-11-17] Version: 2023-11-17, 0.96c - remove dependency to ltxcmds in the hyperref driver diff --git a/macros/latex/contrib/pdfmanagement-testphase/README.md b/macros/latex/contrib/pdfmanagement-testphase/README.md index 94a0136f3d..e0b527353f 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.96c, 2023-11-17 +Version: 0.96d, 2023-12-09 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 6b86bc4c17..fb44b9e726 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-11-17 v0.96c +\ProvidesPackage{color-ltx}[2023-12-09 v0.96d 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 c6f186877a..21609d988b 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-11-17}{0.96c} +\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2023-12-09}{0.96d} {temporay patches to for the colorspace package to test pdfresource management ... UF} % colorspace can define more models, that l3color can't yet handle. diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx index c03d57a7fc..03b931f11d 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % \begin{documentation} @@ -615,7 +615,15 @@ % the link type, so the link is for example no longer colored. It also removes the % implicit grouping of the content. % -% +% \DescribeHypkey{nested-links}% +% +% Links are sometimes nested. E.g. if a section heading contains a reference +% it can lead to nested links in the table of contents or if |\nameref| is used. +% That is not forbidden and normally work as expected: If the link area overlap +% normally the inner link is \enquote{on top} and chosen at a click. +% But it is not always actually wanted, so with the |nested-links| (a boolean key) +% it is possible to disable such nested links. +% % \section{Draftmode} % pdftex and other engines knows a % draftmode which can be set with |\pdfdraftmode=1| @@ -797,7 +805,7 @@ % %\section{Assorted key descriptions}\label{sec:keydesc} %The following gives a few details to some keys that are perhaps not -%completly described in the manual, or are a bit different in this driver. +%completely described in the manual, or are a bit different in this driver. %The list is alphabetic. % % \DescribeHypkey{bookmarkstype} This key takes as value the extension of a list @@ -956,7 +964,7 @@ %<@@=hyp> % \end{macrocode} % \begin{macrocode} -\ProvidesFile{hgeneric-testphase.def}[2023-11-17 v0.96c % +\ProvidesFile{hgeneric-testphase.def}[2023-12-09 v0.96d % generic Hyperref driver for the LaTeX PDF management testphase bundle] \RequirePackage{etoolbox} %why? @@ -1221,15 +1229,15 @@ \cs_set_protected:Npn \hypersetup #1 { %\kvsetkeys{Hyp} {#1} - \keys_set:nn { hyp / setup }{ #1 } + \keys_set:nn { hyp }{ #1 } } % TODO for now unknown keys should only give warnings. -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { unknown .code:n = { \msg_warning:nneee { hyp } { unknown-key } - { hyp~/~setup }{ \l_keys_key_str } { #1 } + { hyp }{ \l_keys_key_str } { #1 } } } % \end{macrocode} @@ -1238,7 +1246,7 @@ % chapters and sections and with \cs{phantomsection}. The following key allows % to force a specific name for the destination so that it can be used by bookmarks. % \begin{macrocode} -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { next-anchor .code:n = { @@ -1274,7 +1282,7 @@ ,destination .tl_set:N = \l_@@_href_pdf_destination_tl ,pdfremotestartview .code:n = { - \keys_set:nn { hyp / setup } + \keys_set:nn { hyp } { pdfremotestartview = #1 } } ,page .code:n = @@ -1293,7 +1301,7 @@ { \pdfdict_put:nnn{l_hyp/annot/A}{Next}{#1} \tl_set:Nn \Hy@href@nextactionraw {/Next~#1} - \keys_set:nn {hyp / setup }{ pdfnewwindow = true} + \keys_set:nn {hyp }{ pdfnewwindow = true} } } ,afrelationship .code:n = @@ -1304,7 +1312,7 @@ } -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,href / urlencode .bool_set:N = \l_@@_href_url_encode_bool ,href / urlencode .default:n = {true} @@ -1467,7 +1475,7 @@ \hook_new:n{hyp/link/cite} %\color_set:nnn {hyp/color/cite}{HTML}{2E7E2A} %\color_set:nn {hyp/color/citeborder}{hyp/color/cite!60!white} -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,citecolor .code:n = {\@@_color_set:ne {hyp/color/cite}{#1}\@@_citecolor_hook_init:} ,citebordercolor @@ -1477,7 +1485,7 @@ { \hook_gput_code:nnn { hyp/link/cite }{hyp/cite} { - \keys_set:nn { hyp / setup } + \keys_set:nn { hyp } { linkcolor = hyp/color/cite } @@ -1488,7 +1496,7 @@ { \hook_gput_code:nnn { hyp/link/cite }{hyp/citeborder} { - \keys_set:nn { hyp / setup } + \keys_set:nn { hyp } { linkbordercolor = hyp/color/citeborder } @@ -1972,7 +1980,7 @@ } % \end{macrocode} % \end{macro} -% \section {Core Hyperref Commands} +% \section{Core Hyperref Commands} % Every \pkg{hyperref} has to define eight core command: % \begin{verbatim} % \hyper@anchor @@ -1987,7 +1995,46 @@ % % This driver defines for consistency also % |\hyper@linklaunch| for Launch and |\hyper@linknamed| for Named. +% +% \subsection{Link level} +% Links can be nested. Inner links need perhaps special handling, e.g. +% to deactivate the link, or to change the border, or in the case of +% tagging to add some additional structure to handle the parent-child rules. +% We therefore add a global counter which is increased at the begin of +% link and decreased at the end. +% \begin{macro}{g_@@_linknestlevel_int} +% \begin{macrocode} +\int_new:N \g_@@_linknestlevel_int +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\prg_new_conditional:Npnn \@@_if_outer_link: {TF} + { + \int_compare:nNnTF { \g_@@_linknestlevel_int } > {1} + { \prg_return_false: } + { \prg_return_true: } + } +% \end{macrocode} + +% \begin{macrocode} +\cs_new:Npn \@@_check_link_nesting:TF #1 #2 + { + \use_i:nn {#1}{#2} + } +% \end{macrocode} % +% \begin{macrocode} +\keys_define:nn { hyp } + { + nested-links .choice:, + nested-links / true .code:n = + { \cs_set_eq:NN \@@_check_link_nesting:TF \use_i:nn }, + nested-links / false .code:n = + { \cs_set_eq:NN \@@_check_link_nesting:TF \@@_if_outer_link:TF }, + nested-links .default:n = {true} + } +% \end{macrocode} % \subsection{ Anchors / destinations} % The first three commands are needed for \enquote{anchors}. At first % the internal commands to create a destination. It uses @@ -2157,27 +2204,41 @@ { \bool_if:NTF \l_@@_annot_GoTo_bool { - \Hy@VerboseLinkStart{#1}{#2} - \group_begin: - \tl_set:Nn \l_hyp_current_dest_name_tl {#2} - \hook_use:n {hyp/link/#1} - \@@_link_goto_begin:nw {#2}#3\Hy@xspace@end - \@@_link_goto_end: - \group_end: - \Hy@VerboseLinkStop + \int_gincr:N\g_@@_linknestlevel_int + \@@_check_link_nesting:TF + { + \Hy@VerboseLinkStart{#1}{#2} + \group_begin: + \tl_set:Nn \l_hyp_current_dest_name_tl {#2} + \hook_use:n {hyp/link/#1} + \@@_link_goto_begin:nw {#2}#3\Hy@xspace@end + \@@_link_goto_end: + \group_end: + \Hy@VerboseLinkStop + } + { + \group_begin: #3\group_end: + } + \int_gdecr:N\g_@@_linknestlevel_int } {{\let\protect\relax#3}} } - \cs_new_protected:Npn \hyper@linkstart #1 #2 %#1 context, #2=destination name { \bool_if:NT \l_@@_annot_GoTo_bool { - \Hy@VerboseLinkStart{#1}{#2}% only for debug - \group_begin: - \tl_set:Nn \l_hyp_current_dest_name_tl {#2} - \hook_use:n {hyp/link/#1} - \@@_link_goto_begin:nw {#2} + \int_gincr:N\g_@@_linknestlevel_int + \@@_check_link_nesting:TF + { + \Hy@VerboseLinkStart{#1}{#2}% only for debug + \group_begin: + \tl_set:Nn \l_hyp_current_dest_name_tl {#2} + \hook_use:n {hyp/link/#1} + \@@_link_goto_begin:nw {#2} + } + { + \group_begin: + } } } @@ -2185,9 +2246,16 @@ { \bool_if:NT \l_@@_annot_GoTo_bool { - \@@_link_goto_end: - \group_end: - \Hy@VerboseLinkStop + \@@_check_link_nesting:TF + { + \@@_link_goto_end: + \group_end: + \Hy@VerboseLinkStop + } + { + \group_end: + } + \int_gdecr:N\g_@@_linknestlevel_int } } % \end{macrocode} @@ -2203,31 +2271,39 @@ { \bool_if:NTF \l_@@_annot_URI_bool { - \group_begin: - \@@_text_pdfstring:eoN - { #2} - { \l_@@_text_enc_uri_print_tl } - \l_@@_uri_tmpa_tl - \pdfdict_put:nno{l_hyp/annot/A/URI}{URI}{\l_@@_uri_tmpa_tl} - \bool_if:NT \l_@@_href_url_ismap_bool - { - \pdfdict_put:nnn{l_hyp/annot/A/URI}{IsMap}{true} - } - \cs_set_eq:NN \# \c_hash_str - \cs_set_eq:NN \% \c_percent_str - \Hy@safe@activestrue - \mode_leave_vertical: - \pdfannot_dict_put:nne {link/URI}{A}{<<\pdfdict_use:n {l_hyp/annot/A/URI}>>} - \pdfannot_link:nen { URI } - { - } + \int_gincr:N\g_@@_linknestlevel_int + \@@_check_link_nesting:TF + { + \group_begin: + \@@_text_pdfstring:eoN + { #2} + { \l_@@_text_enc_uri_print_tl } + \l_@@_uri_tmpa_tl + \pdfdict_put:nno{l_hyp/annot/A/URI}{URI}{\l_@@_uri_tmpa_tl} + \bool_if:NT \l_@@_href_url_ismap_bool + { + \pdfdict_put:nnn{l_hyp/annot/A/URI}{IsMap}{true} + } + \cs_set_eq:NN \# \c_hash_str + \cs_set_eq:NN \% \c_percent_str + \Hy@safe@activestrue + \mode_leave_vertical: + \pdfannot_dict_put:nne {link/URI}{A}{<<\pdfdict_use:n {l_hyp/annot/A/URI}>>} + \pdfannot_link:nen { URI } + { + } + { + \let\protect\relax + #1 + \Hy@xspace@end + \Hy@VerboseLinkStop %where is the start?? + } + \group_end: + } { - \let\protect\relax - #1 - \Hy@xspace@end - \Hy@VerboseLinkStop %where is the start?? + \group_begin: #1 \group_end: } - \group_end: + \int_gdecr:N\g_@@_linknestlevel_int } {{\let\protect\relax#1}} } @@ -2244,57 +2320,65 @@ { \bool_if:NTF \l_@@_annot_GoToR_bool { - \group_begin: - \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: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:nne - {l_hyp/annot/A/GoToR} - {F} - {\pdf_object_ref:e {@@_file_\tl_to_str:N \l_@@_filename_tmpa_tl}} - \@@_text_pdfstring:nnN - { #3 } - { \l_@@_text_enc_dest_print_tl } - \l_@@_dest_name_tmpa_tl - \tl_if_blank:eTF {#3} + \int_gincr:N\g_@@_linknestlevel_int + \@@_check_link_nesting:TF { - \pdfdict_put:nne {l_hyp/annot/A/GoToR}{D} + \group_begin: + \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: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:nne + {l_hyp/annot/A/GoToR} + {F} + {\pdf_object_ref:e {@@_file_\tl_to_str:N \l_@@_filename_tmpa_tl}} + \@@_text_pdfstring:nnN + { #3 } + { \l_@@_text_enc_dest_print_tl } + \l_@@_dest_name_tmpa_tl + \tl_if_blank:eTF {#3} { - [ - \int_eval:n - { \int_max:nn {0}{ 0\l_@@_href_pdf_page_tl - 1 }} - /\l_@@_dest_pdfremotestartview_tl - ] + \pdfdict_put:nne {l_hyp/annot/A/GoToR}{D} + { + [ + \int_eval:n + { \int_max:nn {0}{ 0\l_@@_href_pdf_page_tl - 1 }} + /\l_@@_dest_pdfremotestartview_tl + ] + } } - } - { - \pdfdict_put:nno {l_hyp/annot/A/GoToR}{D}{\l_@@_dest_name_tmpa_tl} - } - \mode_leave_vertical: + { + \pdfdict_put:nno {l_hyp/annot/A/GoToR}{D}{\l_@@_dest_name_tmpa_tl} + } + \mode_leave_vertical: % \end{macrocode} % We use an extra object here, as ghostscript doesn't like the % object reference in the dict % \url{https://chat.stackexchange.com/transcript/message/57361080#57361080} % \begin{macrocode} - \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 } - { - } + \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 } + { + } + { + \let\protect\relax + #1\Hy@xspace@end + \Hy@VerboseLinkStop %where is the start?? + } + \group_end: + } { - \let\protect\relax - #1\Hy@xspace@end - \Hy@VerboseLinkStop %where is the start?? + \group_begin: #1 \group_end: } - \group_end: + \int_gdecr:N\g_@@_linknestlevel_int } {{\let\protect\relax#1}} } @@ -2312,47 +2396,53 @@ { \bool_if:NTF \l_@@_annot_Launch_bool { - \group_begin: - \@@_text_pdfstring:nnN - { #1 } - { \l_@@_text_enc_file_print_tl } - \l_@@_filename_tmpa_tl - \pdfdict_put:nno {l_hyp/annot/A/Launch}{F}{\l_@@_filename_tmpa_tl} - \@@_text_pdfstring:noN - { #3 } - { \l_@@_text_enc_para_print_tl } - \l_@@_para_tmpa_tl - \bool_if:nTF - { - \str_if_eq_p:Vn \l_@@_para_tmpa_tl {()} - || - \pdf_version_compare_p:Nn > {1.9} - } - { - \pdfdict_remove:nn {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:nne {link/Launch}{A}{<<\pdfdict_use:n {l_hyp/annot/A/Launch}>>} - \pdfannot_link:nen - { Launch } - { - % /A -% << -% \pdfdict_use:n {l_hyp/annot/A/Launch} -% >> - } - { - \let\protect\relax - #2\Hy@xspace@end - \Hy@VerboseLinkStop %where is the start?? - } - \group_end: + \int_gincr:N\g_@@_linknestlevel_int + \@@_check_link_nesting:TF + { + \group_begin: + \@@_text_pdfstring:nnN + { #1 } + { \l_@@_text_enc_file_print_tl } + \l_@@_filename_tmpa_tl + \pdfdict_put:nno {l_hyp/annot/A/Launch}{F}{\l_@@_filename_tmpa_tl} + \@@_text_pdfstring:noN + { #3 } + { \l_@@_text_enc_para_print_tl } + \l_@@_para_tmpa_tl + \bool_if:nTF + { + \str_if_eq_p:Vn \l_@@_para_tmpa_tl {()} + || + \pdf_version_compare_p:Nn > {1.9} + } + { + \pdfdict_remove:nn {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:nne {link/Launch}{A}{<<\pdfdict_use:n {l_hyp/annot/A/Launch}>>} + \pdfannot_link:nen + { Launch } + { + % /A + % << + % \pdfdict_use:n {l_hyp/annot/A/Launch} + % >> + } + { + \let\protect\relax + #2\Hy@xspace@end + \Hy@VerboseLinkStop %where is the start?? + } + \group_end: + } + { \group_begin: #2 \group_end: } + \int_gdecr:N\g_@@_linknestlevel_int } {{\let\protect\relax#2}} } @@ -2380,31 +2470,37 @@ { \bool_if:NTF \l_@@_annot_Named_bool { - \group_begin: - \pdfmeta_standard_verify:nnTF {named_actions}{#1} - { - \mode_leave_vertical: - \pdfdict_put:nne {l_hyp/annot/A/Named}{N} - {\pdf_name_from_unicode_e:n{#1}} - \pdfannot_dict_put:nne {link/Named}{A}{<<\pdfdict_use:n {l_hyp/annot/A/Named}>>} - \pdfannot_link:nnn { Named } + \int_gincr:N\g_@@_linknestlevel_int + \@@_check_link_nesting:TF + { + \group_begin: + \pdfmeta_standard_verify:nnTF {named_actions}{#1} { -% /A -% << -% \pdfdict_use:n { l_hyp/annot/A/Named } -% >> + \mode_leave_vertical: + \pdfdict_put:nne {l_hyp/annot/A/Named}{N} + {\pdf_name_from_unicode_e:n{#1}} + \pdfannot_dict_put:nne {link/Named}{A}{<<\pdfdict_use:n {l_hyp/annot/A/Named}>>} + \pdfannot_link:nnn { Named } + { + % /A + % << + % \pdfdict_use:n { l_hyp/annot/A/Named } + % >> + } + { + #2 + \Hy@xspace@end + \Hy@VerboseLinkStop + } } { + \msg_warning:nnn { hyp } { pdfa-no-named-action }{#1} #2 - \Hy@xspace@end - \Hy@VerboseLinkStop } - } - { - \msg_warning:nnn { hyp } { pdfa-no-named-action }{#1} - #2 - } - \group_end: + \group_end: + } + { \group_begin: #2 \group_end: } + \int_gdecr:N\g_@@_linknestlevel_int } {{\let\protect\relax#2}} } @@ -2517,7 +2613,7 @@ % \begin{hypkey}{colorlinks} % This key also resets the border and borderstyle. % \begin{macrocode} -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,colorlinks .meta:n = { @@ -2539,14 +2635,14 @@ % \begin{macrocode} \seq_map_inline:Nn \c_@@_annot_types_seq { - \keys_define:nn { hyp / setup } + \keys_define:nn { hyp } { ,color#1 .bool_set:c = { l_hyp_annot_color#1_bool } ,#1color .code:n = { \@@_color_set:ne {hyp/color/#1}{##1} } } } -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,allcolors .meta:n = { @@ -2568,7 +2664,7 @@ % or cmyk (unusual). This can be set with the |bordercolormodel| key: %\begin{hypkey}{bordercolormodel} % \begin{macrocode} -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,bordercolormodel .choices:nn = {rgb,cmyk} @@ -2580,7 +2676,7 @@ % \begin{macrocode} \prop_map_inline:Nn \c_@@_map_hyp_annot_prop { - \keys_define:nn { hyp / setup } + \keys_define:nn { hyp } { #1bordercolor .code:n = { @@ -2605,7 +2701,7 @@ } } -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,allbordercolors .meta:n = { @@ -2625,7 +2721,7 @@ % \begin{macrocode} \prop_map_inline:Nn \c_@@_map_hyp_annot_prop { - \keys_define:nn { hyp / setup } + \keys_define:nn { hyp } { #1border .code:n = { @@ -2644,7 +2740,7 @@ } } } -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,pdfborder .code:n = { @@ -2678,7 +2774,7 @@ % \begin{macrocode} \prop_map_inline:Nn \c_@@_map_hyp_annot_prop { - \keys_define:nn { hyp / setup } + \keys_define:nn { hyp } { #1borderstyle .code:n = { @@ -2697,7 +2793,7 @@ } } } -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,pdfborderstyle .code:n = { @@ -2850,7 +2946,7 @@ { \pdf_version_compare_p:Nn > {1.4} } { \str_if_eq_p:ee{\pdf_version_major:}{-1} } { - \keys_define:nn { hyp / setup } + \keys_define:nn { hyp } { ,_ocgcolorlinks .meta:n = { @@ -2864,7 +2960,7 @@ } } { - \keys_define:nn { hyp / setup } + \keys_define:nn { hyp } { ,_ocgcolorlinks .code:n = { @@ -2876,7 +2972,7 @@ } } -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,ocgcolorlinks .choice: ,ocgcolorlinks / true .meta:n = @@ -2899,13 +2995,13 @@ { \pdf_version_compare_p:Nn > {1.4} } { \str_if_eq_p:ee{\pdf_version_major:}{-1} } { - \keys_define:nn { hyp / setup } + \keys_define:nn { hyp } { ,ocgcolor#1 .bool_set:c = { l_hyp_annot_ocgcolor#1_bool } } } { - \keys_define:nn { hyp / setup } + \keys_define:nn { hyp } { ,ocgcolor#1 .code:n= { @@ -2925,7 +3021,7 @@ % \begin{macrocode} \prop_map_inline:Nn \c_@@_map_hyp_annot_prop { - \keys_define:nn { hyp / setup } + \keys_define:nn { hyp } { ,#1highlight .choices:nn = { /I, /N, /O, /P} @@ -2954,7 +3050,7 @@ } -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,pdfhighlight .choices:nn = { /I, /N, /O, /P} @@ -2991,7 +3087,7 @@ % This key disable all appearance keys. The link themselves are still there. % \begin{hypkey}{hidelinks,hidelink,hideurl,hidefile,hiderun,hidemenu} % \begin{macrocode} -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { hidelinks .meta:n = { @@ -3004,7 +3100,7 @@ \seq_map_inline:Nn \c_@@_annot_types_seq { - \keys_define:nn { hyp / setup } + \keys_define:nn { hyp } { hide#1 .meta:n = { @@ -3021,20 +3117,20 @@ % This define the key for the color schemes and sets the default colors. % \begin{hypkey}{colorscheme} % \begin{macrocode} -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { colorscheme .code:n = { \prop_map_inline:cn { c_@@_colorscheme_#1_prop } { - \keys_set:nn { hyp /setup } + \keys_set:nn { hyp } { ##1 = ##2 } } } } -\keys_set:nn { hyp / setup } {colorscheme=phelype} +\keys_set:nn { hyp } {colorscheme=phelype} % \end{macrocode} % \end{hypkey} % @@ -3044,7 +3140,7 @@ % The following are ignored (with or without warnings) % \begin{hypkey}{unicode,pdfencoding,pdfversion} % \begin{macrocode} -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,unicode .code:n = {} ,pdfencoding .code:n = {} @@ -3062,12 +3158,12 @@ % % \begin{hypkey}{verbose,debug,draft,final} % \begin{macrocode} -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,verbose .legacy_if_set:n = {Hy@verbose} ,debug .legacy_if_set:n = {Hy@verbose} } -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,draft .code:n = { @@ -3086,7 +3182,7 @@ % pageanchor,linktoc,linktocpage,plainpages,localanchorname, % linkfileprefix} % \begin{macrocode} -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,extension .tl_set:N = \XR@ext ,extension .initial:n= pdf @@ -3098,7 +3194,7 @@ ,plainpages .legacy_if_set:n = {Hy@plainpages} } -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,linktoc .choices:nn = { none, section, all, page } { @@ -3124,7 +3220,7 @@ % \begin{macrocode} \prop_map_inline:Nn \c_@@_map_hyp_annot_prop { - \keys_define:nn { hyp / setup } + \keys_define:nn { hyp } { ,#1 .bool_set:c = {l_@@_annot_#2_bool} } @@ -3133,7 +3229,7 @@ % \end{hypkey} % % \begin{macrocode} -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,baseurl .code:n = { @@ -3691,7 +3787,7 @@ % \begin{hypkey}{pdfview} % Destination keys. pdfview is a bit more complicated so extra. % \begin{macrocode} -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,pdfview .code:n = { @@ -3781,7 +3877,7 @@ % \begin{hypkey}{pdflang} % |pdflang| should be deprecated. % \begin{macrocode} -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,pdflang .code:n = { @@ -3807,7 +3903,7 @@ \regex_set:Nn\l_@@_optlang_regex {\A\[([A-Za-z\-]+)\](.*)} \cs_new_protected:Npn \@@_setup_info_key:nn #1 #2 { - \keys_define:nn { hyp / setup } + \keys_define:nn { hyp } { pdf#1 .code:n = { @@ -3894,7 +3990,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_setup_info_date_key:nn #1 #2 { - \keys_define:nn { hyp / setup } + \keys_define:nn { hyp } { pdf#1 .code:n = { @@ -3927,7 +4023,7 @@ \@@_setup_info_date_key:nn {creationdate} {CreationDate} \@@_setup_info_date_key:nn {moddate} {ModDate} -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { pdfmetadate .code:n = { \@@_store_metadata:nn {pdfmetadate}{#1} } } @@ -3936,12 +4032,12 @@ % \begin{hypkey}{pdftrapped} % Trapped is a bit curious, it has an value "unknown", and one can't suppress it ... % \begin{macrocode} -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { ,pdftrapped .code:n = { \exp_args:Nne - \keys_set:nn { hyp / setup } { _pdftrapped = \str_uppercase:n { #1 } } + \keys_set:nn { hyp } { _pdftrapped = \str_uppercase:n { #1 } } } ,_pdftrapped .choices:nn = {TRUE,FALSE,UNKNOWN} { @@ -3969,7 +4065,7 @@ % \begin{hypkey}{pdfinfo} % pdfinfo allows to set the info keys with keyval ... % \begin{macrocode} -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { pdfinfo .code:n = { @@ -3980,10 +4076,10 @@ % \end{hypkey} % Now we set some default values % \begin{macrocode} -\keys_set:nn { hyp / setup} {pdfcreator = LaTeX~with~hyperref} -\keys_set:nn { hyp / setup} {pdfauthor = } -\keys_set:nn { hyp / setup} {pdftitle = } -\keys_set:nn { hyp / setup} {pdfsubject = } +\keys_set:nn { hyp} {pdfcreator = LaTeX~with~hyperref} +\keys_set:nn { hyp} {pdfauthor = } +\keys_set:nn { hyp} {pdftitle = } +\keys_set:nn { hyp} {pdfsubject = } % \end{macrocode} % % \subsection{hyperxmp keys} @@ -4032,7 +4128,7 @@ ,pdfdate } { - \keys_define:nn { hyp / setup } + \keys_define:nn { hyp } { #1 .code:n= { \@@_store_metadata:nn {#1}{##1}} } @@ -4043,7 +4139,7 @@ % \subsection{Transitions} % pdfpageduration sets the duration a page is shown in full screen mode. % \begin{macrocode} -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { pdfpageduration .code:n = { @@ -4088,7 +4184,7 @@ % opaque & true or false, only relevant for Fly style % \end{tabular} % \begin{macrocode} -\keys_define:nn { hyp / setup } +\keys_define:nn { hyp } { pdfpagetransition .code:n = { @@ -4180,7 +4276,7 @@ % % Finally we process the package option list, to get most keys working % \begin{macrocode} -\keys_set_known:nv{hyp/setup}{opt@hyperref.sty} +\keys_set_known:nv{ hyp }{opt@hyperref.sty} % \end{macrocode} % % Unfinished diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf Binary files differindex 9318d060f9..f5d853b7e4 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx index 37e47d5c91..03e50367f2 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % @@ -56,27 +56,27 @@ % \begin{macrocode} %<drivers>\ProvidesExplFile %<*dvipdfmx> - {l3backend-testphase-dvipdfmx.def}{2023-11-17}{} + {l3backend-testphase-dvipdfmx.def}{2023-12-09}{} {LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx} %</dvipdfmx> %<*dvips> - {l3backend-testphase-dvips.def}{2023-11-17}{} + {l3backend-testphase-dvips.def}{2023-12-09}{} {LaTeX~PDF~management~testphase~bundle~backend~support: dvips} %</dvips> %<*dvisvgm> - {l3backend-testphase-dvisvgm.def}{2023-11-17}{} + {l3backend-testphase-dvisvgm.def}{2023-12-09}{} {LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm} %</dvisvgm> %<*luatex> - {l3backend-testphase-luatex.def}{2023-11-17}{} + {l3backend-testphase-luatex.def}{2023-12-09}{} {LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)} %</luatex> %<*pdftex> - {l3backend-testphase-pdftex.def}{2023-11-17}{} + {l3backend-testphase-pdftex.def}{2023-12-09}{} {LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)} %</pdftex> %<*xdvipdfmx> - {l3backend-testphase-xetex.def}{2023-11-17}{} + {l3backend-testphase-xetex.def}{2023-12-09}{} {LaTeX~PDF~management~testphase~bundle~backend~support: XeTeX} %</xdvipdfmx> % \end{macrocode} diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf Binary files differindex 3c292b8dfa..da62220855 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx index 4c0942ad72..dfb1f12e75 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % \begin{documentation} @@ -432,7 +432,7 @@ % \begin{macrocode} %<@@=pdfannot> %<*header> -\ProvidesExplPackage{l3pdfannot}{2023-11-17}{0.96c} +\ProvidesExplPackage{l3pdfannot}{2023-12-09}{0.96d} {PDF-annotations} \RequirePackage{l3pdfdict} %</header> @@ -441,7 +441,8 @@ % bitset for it. % \begin{macrocode} %<*package> -\RequirePackage{l3bitset} +\cs_if_exist:NF \bitset_new:Nn + { \RequirePackage { l3bitset } } \bitset_new:Nn \l_pdfannot_F_bitset { Invisible = 1, diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf Binary files differindex 8db999acd8..a3b40dbcd2 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx index abb1d33936..d1007322fa 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % \begin{documentation} @@ -208,7 +208,7 @@ % \begin{macrocode} %<@@=pdfdict> %<*header> -\ProvidesExplPackage{l3pdfdict}{2023-11-17}{0.96c} +\ProvidesExplPackage{l3pdfdict}{2023-12-09}{0.96d} {Tools for PDF dictionaries (LaTeX PDF management testphase bundle)} %</header> % \end{macrocode} diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf Binary files differindex c488bc77bf..ae30760b1b 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx index b4d535bfc2..ef7f1a5c4c 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % \begin{documentation} diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf Binary files differindex 1ad47b14fb..1d2dfa5a9a 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx index dfbf0c3af3..6e6f5fe007 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % \begin{documentation} diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf Binary files differindex e0f6b1fc9a..5daeeaf118 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx index c94891b733..ae2cdec29d 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % \begin{documentation} diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf Binary files differindex 80cb55d643..1ab858899c 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx index fb7b913a76..cf0153732e 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % \begin{documentation} diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf Binary files differindex c9b9cd1aef..b455ede38e 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx index e951990650..2f9ce890c5 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % \begin{documentation} diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf Binary files differindex b66ff7f3cb..bfe906ca9d 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx index 7922c659a7..15fe26a805 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % \begin{documentation} diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf Binary files differindex 3d40a66eee..428b07121c 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx index 59275311f4..28ce09312c 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % \begin{documentation} @@ -972,7 +972,7 @@ %<*package> %<@@=pdffield> \NeedsTeXFormat{LaTeX2e} -\ProvidesExplPackage{l3pdffield-testphase}{2023-11-17}{0.96c}% +\ProvidesExplPackage{l3pdffield-testphase}{2023-12-09}{0.96d}% {form fields} % \end{macrocode} % \subsection{hyperref specific command} diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf Binary files differindex e4171c07e0..8a91d85118 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx index 5a11d41e7e..01d247b7e7 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % \begin{documentation} @@ -398,7 +398,7 @@ % % \begin{macrocode} %<*header> -\ProvidesExplPackage{l3pdffile}{2023-11-17}{0.96c} +\ProvidesExplPackage{l3pdffile}{2023-12-09}{0.96d} {embedding and referencing files in PDF---LaTeX PDF management testphase bundle} \RequirePackage{l3pdftools} %temporarly!! %</header> diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf Binary files differindex cc338aff79..35940f20fd 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx index 88704f2e51..2a7ce89481 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % \begin{documentation} @@ -632,7 +632,7 @@ %<@@=pdfmanagement> %<*header> % -\ProvidesExplPackage{l3pdfmanagement}{2023-11-17}{0.96c} +\ProvidesExplPackage{l3pdfmanagement}{2023-12-09}{0.96d} {Management of core PDF dictionaries (LaTeX PDF management testphase bundle)} %</header> % \end{macrocode} diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf Binary files differindex 9ddc2d15a7..4e704567e9 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx index 6d6b19b2de..720669e237 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % \begin{documentation} @@ -458,6 +458,33 @@ % It is up to the author to ensure and validate % that the document actually follows the standard. % +% \subsubsection{Declarations} +% PDF knows beside standards also a more generic method to declare conformance +% to some specification by adding a declaration, +% see \url{https://pdfa.org/wp-content/uploads/2019/09/PDF-Declarations.pdf}). +% Such declarations can be added as a simple url which identify the specification or +% with additional details regarding date and credentials. An example would be +% +% \begin{verbatim} +% \DocumentMetadata{} +% \documentclass{article} +% \ExplSyntaxOn +% \pdfmeta_xmp_add_declaration:e {https://pdfa.org/declarations\c_hash_str iso32005} +% \pdfmeta_xmp_add_declaration:ennnn +% {https://pdfa.org/declarations\c_hash_str wcag21A}{}{2023-11-20}{}{} +% \pdfmeta_xmp_add_declaration:nnnnn +% {https://github.com/TikZlings/no-duck-harmed} +% {Ulrike~Fischer}{2023-11-20}{Bär}{https://github.com/u-fischer/bearwear} +% \pdfmeta_xmp_add_declaration:nnnnn +% {https://github.com/TikZlings/no-duck-harmed} +% {Ulrike~Fischer}{2023-11-20}{Paulo}{https://github.com/cereda/sillypage} +% \ExplSyntaxOff +% \begin{document} +% text +% \end{document} +% +% \end{verbatim} +% % \subsubsection{Dates} % \begin{itemize} % \item @@ -557,6 +584,31 @@ % With this command a xmlns name space can be added. % \end{function} % +% With the two following commands PDF declarations can be added to the XMP metadata +% (see \url{https://pdfa.org/wp-content/uploads/2019/09/PDF-Declarations.pdf}). +% \begin{function}{\pdfmeta_xmp_add_declaration:n,\pdfmeta_xmp_add_declaration:e} +% \begin{syntax} +% \cs{pdfmeta_xmp_add_declaration:n}\Arg{uri} +% \end{syntax} +% This add a PDF declaration with the required |conformsTo| property to the XMP metadata. +% \meta{uri} should not be empty and is a URI specifying +% the standard or profile referred to by the PDF +% Declaration. If the uri contains a hash, use \cs{c_hash_str} to excape it +% and use the \texttt{e} variant to expand it. +% \end{function} +% +% \begin{function}{\pdfmeta_xmp_add_declaration:nnnnn,\pdfmeta_xmp_add_declaration:ennnn} +% \begin{syntax} +% \cs{pdfmeta_xmp_add_declaration:nnnnn}\Arg{uri}\Arg{By}\Arg{Date}\Arg{Credentials}\Arg{Report} +% \end{syntax} +% This add a PDF declaration to the XMP metadata similar +% to \cs{pdfmeta_xmp_add_declaration:n}. +% With \meta{By}, \meta{Date}, \meta{Credentials}, \meta{Report} the optional +% fields |claimBy| (text), |claimDate| (iso date), |claimCredentials| (text) and +% |claimReport| (uri) of the |claimData| property can be given. +% If \cs{pdfmeta_xmp_add_declaration:nnnnn} is used twice with the same \meta{uri} +% argument the |claimData| are concatenated. There is no check if the |claimData| are identical. +% \end{function} % \end{documentation} % % \begin{implementation} @@ -566,7 +618,7 @@ % \begin{macrocode} %<@@=pdfmeta> %<*header> -\ProvidesExplPackage{l3pdfmeta}{2023-11-17}{0.96c} +\ProvidesExplPackage{l3pdfmeta}{2023-12-09}{0.96d} {PDF-Standards---LaTeX PDF management testphase bundle} %</header> % \end{macrocode} @@ -1217,7 +1269,7 @@ {\AddToDocumentProperties [document]{pdfstandard-X}{PDF/X-6p}}, _pdfstandard / UA-1 .code:n = { - \AddToDocumentProperties [document]{pdfstandard-UA}{{1}{2016}} + \AddToDocumentProperties [document]{pdfstandard-UA}{{1}{}} }, _pdfstandard / UA-2 .code:n = {\AddToDocumentProperties [document]{pdfstandard-UA}{{2}{2023}}}, @@ -1735,6 +1787,7 @@ \@@_xmp_build_pdf: \@@_xmp_build_xmpRights: \@@_xmp_build_standards: %pdfaid,pdfxid,pdfuaid + \@@_xmp_build_pdfd: \@@_xmp_build_dc: \@@_xmp_build_photoshop: \@@_xmp_build_xmp: @@ -2129,6 +2182,84 @@ } % \end{macrocode} % \item[jav]: currently ignored +% +% \item[declarations] The PDF Declarations mechanism allows creation and +% editing software to declare, via a PDF Declaration, a PDF file to be in +% conformance with a 3rd party specification or profile +% that may not be related to PDF technology. Their specification is for example +% described in \url{https://pdfa.org/wp-content/uploads/2019/09/PDF-Declarations.pdf}. +% +% If declarations are added to the XMP-metadata they need (for pdf/A compliancy) a +% schema declaration. We do not add it by default but define here a command to enable +% it. (This can be done in the document preamble as xmp is built only at the end.) +% +% +% \begin{macrocode} +\cs_new_protected:Npn \@@_xmp_schema_enable_pdfd: + { + \@@_xmp_xmlns_new:ne {pdfd}{http://pdfa.org/declarations/} + \@@_xmp_schema_new:nnn + {PDF~Declarations~Schema} + {pdfd} + {http://pdfa.org/declarations/} + \@@_xmp_property_new:nnnnn + {pdfd} + {declarations} + {Bag~declaration} + {external} + {An~unordered~array~of~PDF~Declaration~entries,~where~each~PDF~Declaration~representing~a~statement~of~conformance~with~ an~identified~external~standard~or~profile,~along~with~optional~information~identifying~the~nature~of~the~claim.} +% \end{macrocode} +% the values are complicated so we use the additions: method to add them. +% \begin{macrocode} + \cs_new_protected:cpn { __pdfmeta_xmp_schema_pdfd_additions: } + { + \@@_xmp_add_packet_open:nn{pdfaSchema}{valueType} + \@@_xmp_add_packet_open:nn{rdf}{Seq} + \@@_xmp_add_packet_open_attr:nnn{rdf}{li}{rdf:parseType="Resource"} + \@@_xmp_add_packet_line:nnn{pdfaType}{type}{claim} + \@@_xmp_add_packet_line:nnn{pdfaType}{namespaceURI} + {http://pdfa.org/declarations/} + \@@_xmp_add_packet_line:nnn{pdfaType}{prefix}{pdfd} + \@@_xmp_add_packet_line:nnn{pdfaType}{description} + {A~structure~describing~properties~of~an~individual claim.} + \@@_xmp_add_packet_open:nn{pdfaType}{field} + \@@_xmp_add_packet_open:nn{rdf}{Seq} + \@@_xmp_add_packet_field:nnn{claimReport}{Text} + {A~URL~to~a~report~containing~details~of~the~specific~conformance~claim.} + \@@_xmp_add_packet_field:nnn{claimCredentials}{Text} + {The~claimant's~credentials.} + \@@_xmp_add_packet_field:nnn{claimDate}{Text} + {A~date~identifying~when~the~claim~was~made.} + \@@_xmp_add_packet_field:nnn{claimBy}{Text} + {The~name~of~the~organization~and/or~individual~and/or~software~making~the~claim.} + \@@_xmp_add_packet_close:nn{rdf}{Seq} + \@@_xmp_add_packet_close:nn{pdfaType}{field} + \@@_xmp_add_packet_close:nn{rdf}{li} + \@@_xmp_add_packet_open_attr:nnn{rdf}{li}{rdf:parseType="Resource"} + \@@_xmp_add_packet_line:nnn{pdfaType}{type}{declaration} + \@@_xmp_add_packet_line:nnn{pdfaType}{namespaceURI} + {http://pdfa.org/declarations/} + \@@_xmp_add_packet_line:nnn{pdfaType}{prefix}{pdfd} + \@@_xmp_add_packet_line:nnn{pdfaType}{description} + {A~structure~describing~a~single~PDF~ Declaration~asserting~conformance~with~ an~externally-identified~standard~or~ profile.} + \@@_xmp_add_packet_open:nn{pdfaType}{field} + \@@_xmp_add_packet_open:nn{rdf}{Seq} + \@@_xmp_add_packet_field:nnn{conformsTo}{Text} + {A~property~containing~a~URI~specifying~the~standard~or~profile~by~the~PDF~Declaration.~This~property~is~ intended~to~mirror~the~Dublin~Core~property~dc:conformsTo.} + \@@_xmp_add_packet_field:nnn{claimData}{Bag~claim} + {An~unordered~array~of~claim~data,~where~each~claim~identifies~the~nature~of~the~claim.} + \@@_xmp_add_packet_close:nn{rdf}{Seq} + \@@_xmp_add_packet_close:nn{pdfaType}{field} + \@@_xmp_add_packet_close:nn{rdf}{li} + \@@_xmp_add_packet_close:nn{rdf}{Seq} + \@@_xmp_add_packet_close:nn{pdfaSchema}{valueType} + } +% \end{macrocode} +% the schema should be added only once so disable it after use: +% \begin{macrocode} + \cs_gset_eq:NN \@@_xmp_schema_enable_pdfd: \prg_do_nothing: + } +% \end{macrocode} % % \end{description} % \subsection{The actual user / document data} @@ -2241,8 +2372,56 @@ % \end{macrocode} % \end{macro} % - -% \subsubsection{Photoshop} +% \subsection{Declarations} +% See \url{https://pdfa.org/wp-content/uploads/2019/09/PDF-Declarations.pdf} +% +% \begin{variable}{\g_@@_xmp_pdfd_data_prop} +% This holds the data for declarations. +% \begin{macrocode} +\prop_new:N \g_@@_xmp_pdfd_data_prop +% \end{macrocode} +% \end{variable} +% the main building command used in the xmp generation +% \begin{macro}{\@@_xmp_build_pdfd:} +% \begin{macrocode} +\cs_new_protected:Npn \@@_xmp_build_pdfd: + { + \prop_if_empty:NF\g_@@_xmp_pdfd_data_prop + { + \@@_xmp_add_packet_open:nn{pdfd}{declarations} + \@@_xmp_add_packet_open:nn{rdf}{Bag} + \prop_map_inline:Nn \g_@@_xmp_pdfd_data_prop + { + \@@_xmp_build_pdfd_claim:nn{##1}{##2} + } + \@@_xmp_add_packet_close:nn{rdf}{Bag} + \@@_xmp_add_packet_close:nn{pdfd}{declarations} + } + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@@_xmp_build_pdfd_claim:nn} +% This build the xml for one claim. If there is no +% claimData only the conformsTo is output. +% \begin{macrocode} +\cs_new_protected:Npn \@@_xmp_build_pdfd_claim:nn #1#2 + { + \@@_xmp_add_packet_open_attr:nnn{rdf}{li}{rdf:parseType="Resource"} + \@@_xmp_add_packet_line:nnn{pdfd}{conformsTo}{#1} + \tl_if_empty:nF {#2} + { + \@@_xmp_add_packet_open:nn{pdfd}{claimData} + \@@_xmp_add_packet_open:nn{rdf}{Bag} + #2 + \@@_xmp_add_packet_close:nn{rdf}{Bag} + \@@_xmp_add_packet_close:nn{pdfd}{claimData} + } + \@@_xmp_add_packet_close:nn{rdf}{li} + } +% \end{macrocode} +% \end{macro} +% +% \subsection{Photoshop} % \begin{macro}{\@@_xmp_build_photoshop:} % \begin{macrocode} \cs_new_protected:Npn \@@_xmp_build_photoshop: @@ -2633,6 +2812,45 @@ } % \end{macrocode} % \end{macro} +% +% \begin{macro}{\pdfmeta_xmp_add_declaration:n,\pdfmeta_xmp_add_declaration:e} +% \begin{macrocode} +\cs_new_protected:Npn \pdfmeta_xmp_add_declaration:n #1 %conformsTo uri + { + \@@_xmp_schema_enable_pdfd: + \prop_gput:Nnn\g_@@_xmp_pdfd_data_prop{#1}{} + } +\cs_generate_variant:Nn \pdfmeta_xmp_add_declaration:n {e} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\pdfmeta_xmp_add_declaration:nnnnn,\pdfmeta_xmp_add_declaration:ennnn} +% \begin{macrocode} +\cs_new_protected:Npn \pdfmeta_xmp_add_declaration:nnnnn #1#2#3#4#5 + %#1=conformsTo uri, #2 claimBy, #3 claimDate #4 claimCredentials #4 claimReport + { + \@@_xmp_schema_enable_pdfd: + \tl_set:Nn \l_@@_tmpa_tl + { + \@@_xmp_add_packet_open_attr:nnn{rdf}{li}{rdf:parseType="Resource"} + \@@_xmp_add_packet_line:nnn{pdfd}{claimBy}{#2} + \@@_xmp_add_packet_line:nnn{pdfd}{claimDate}{#3} + \@@_xmp_add_packet_line:nnn{pdfd}{claimCredentials}{#4} + \@@_xmp_add_packet_line:nnn{pdfd}{claimReport}{#5} + \@@_xmp_add_packet_close:nn{rdf}{li} + } + \prop_get:NnNT \g_@@_xmp_pdfd_data_prop {#1}\l_@@_tmpb_tl + { + \tl_concat:NNN \l_@@_tmpa_tl \l_@@_tmpa_tl \l_@@_tmpb_tl + } + \prop_gput:Nno\g_@@_xmp_pdfd_data_prop{#1} + { + \l_@@_tmpa_tl + } + } +\cs_generate_variant:Nn\pdfmeta_xmp_add_declaration:nnnnn {e} +% \end{macrocode} +% \end{macro} +% % \begin{macrocode} %</package> % \end{macrocode} diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf Binary files differindex ccbfc2789e..6f94039cd0 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx index c6efc127f3..3e5dc1f1ff 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % \begin{documentation} @@ -231,7 +231,7 @@ % % \begin{macrocode} %<*header> -\ProvidesExplPackage{l3pdftools}{2023-11-17}{0.96c} +\ProvidesExplPackage{l3pdftools}{2023-12-09}{0.96d} {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 Binary files differindex 6711cd498c..e10591432e 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx index 0f3196cb0a..3928d790d3 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % \begin{documentation} @@ -132,7 +132,7 @@ % \begin{macrocode} %<@@=pdf> %<*header> -\ProvidesExplPackage{l3pdfxform}{2023-11-17}{0.96c} +\ProvidesExplPackage{l3pdfxform}{2023-12-09}{0.96d} {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 Binary files differindex b013fc980d..7b901ddda0 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf diff --git a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx index 332012c4dc..7688446417 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % \begin{documentation} @@ -220,7 +220,7 @@ % \begin{macrocode} %<@@=pdfmanagement> %<*header> -\ProvidesExplPackage{ltdocinit}{2023-11-17}{0.96c} +\ProvidesExplPackage{ltdocinit}{2023-12-09}{0.96d} {Initialize document metadata} %</header> % \end{macrocode} diff --git a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf Binary files differindex d8c5ab0934..32df59ad2e 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx index 6154ccf3e3..cdcc24255e 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % \begin{documentation} @@ -63,7 +63,7 @@ % |debug={firstaidoff={name1,name2,...},...}|. % \begin{macrocode} %<*package> -\ProvidesExplPackage{pdfmanagement-firstaid}{2023-11-17}{0.96c} +\ProvidesExplPackage{pdfmanagement-firstaid}{2023-12-09}{0.96d} {LaTeX PDF management testphase bundle / firstaid-patches} %<@@=pdfmanagement> diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf Binary files differindex 5b95298b42..fc3bd4ce8a 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx index a685374c52..189f496cf2 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.96c, released 2023-11-17} +% \date{Version 0.96d, released 2023-12-09} % % \maketitle % \begin{documentation} @@ -233,10 +233,7 @@ % % \section{Requirements} % The new PDF management is developed parallel to the \LaTeX{} format -% and should be updated together with the format. It -% requires currently a \LaTeX{} format from 2023/11/01 or later -% and an L3 programming layer of 2023-11-01 or later. -% It currently depends on the experimental package and \pkg{l3bitset}. +% and should be updated together with the format. % In some places, e.g. when writing strings to the pdf it assumes that % the file is utf8 encoded -- ascii will naturally work too, but legacy 8bit encodings are % not supported. @@ -397,7 +394,7 @@ % \begin{macrocode} %<@@=pdf> %<*package> -\ProvidesExplPackage{pdfmanagement-testphase}{2023-11-17}{0.96c} +\ProvidesExplPackage{pdfmanagement-testphase}{2023-12-09}{0.96d} {LaTeX PDF management testphase bundle} \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} \IfFormatAtLeastTF{2020-10-01}{}{ @@ -425,7 +422,7 @@ % to allow to set it in the document. % \begin{macrocode} %<*header> -\ProvidesExplFile{pdfmanagement-testphase.ltx}{2023-11-17}{0.96c} +\ProvidesExplFile{pdfmanagement-testphase.ltx}{2023-12-09}{0.96d} {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 Binary files differindex 041de89f5e..5f9f2f81e5 100644 --- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf +++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf 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 98d5aaf4e9..a444924dfd 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-11-17 v0.96c patch xcolor for l3color] +\ProvidesPackage{xcolor-patches-tmp-ltx}[2023-12-09 v0.96d patch xcolor for l3color] \@ifundefined{color_set:nn}{\RequirePackage{l3color}}{} \ExplSyntaxOn diff --git a/macros/latex/contrib/tutodoc/README.md b/macros/latex/contrib/tutodoc/README.md index 335d288b1d..7458ee34e7 100644 --- a/macros/latex/contrib/tutodoc/README.md +++ b/macros/latex/contrib/tutodoc/README.md @@ -16,4 +16,4 @@ This project may be distributed and/or modified under the conditions of the GNU Where is the documentation? --------------------------- -At this time, there is a French and an English documentation writing with a tutorial-like flavor (in the repository, see the folder `rollout/doc`). +Documentation is currently available in French and English, they arewriting with a tutorial-like flavor (in the repository, see the folder `rollout/doc`). diff --git a/macros/latex/contrib/tutodoc/code/tutodoc.sty b/macros/latex/contrib/tutodoc/code/tutodoc.sty index 83b6c88433..cd4a6aecb3 100644 --- a/macros/latex/contrib/tutodoc/code/tutodoc.sty +++ b/macros/latex/contrib/tutodoc/code/tutodoc.sty @@ -9,8 +9,8 @@ \ProvidesExplPackage {tutodoc} - {2023-11-29} % Creation: 2023-11-29 - {1.0.0} + {2023-12-08} % Creation: 2023-11-29 + {1.0.1} {This package proposes tools for writing "human friendly" documentations of LaTeX packages.} \RequirePackage[ @@ -344,7 +344,7 @@ % prototype:: % #1 : the name of a macro % -% :action: ''\tdocenv{mymacro}'' prints verb::''\mymacro''. +% :action: ''\tdocmacro{mymacro}'' prints verb::''\mymacro''. %%% \NewDocumentCommand{\tdocmacro}{m}{% \texttt{\textbackslash{}#1}% @@ -360,10 +360,12 @@ % or something like verb::''\begin{myenv}<opt1> ... \end{myenv}'', % the spaces being secable. %%% +% +% Cleaner code from https://tex.stackexchange.com/a/703379/6880 . \NewDocumentCommand{\tdocenv}{O{}m}{% - \texttt{\textbackslash{}begin\{#2\}#1 % - \!...\! % - \textbackslash{}end\{#2\}}% + \texttt{\string\begin\string{#2\string}#1 % + \!\!...\@\!\!\! % + \string\end\string{#2\string}}% } @@ -510,9 +512,9 @@ %%% \NewDocumentEnvironment{tdoc@showcase@basic}{m m m}{ \tdocruler{#1}{\tdocdarkcolor{#3}} - \medskip + \nopagebreak\medskip\nopagebreak }{ - \medskip + \nopagebreak\medskip\nopagebreak \tdocruler{#2}{\tdocdarkcolor{#3}} } @@ -587,7 +589,7 @@ % :see: env.tdoc@showcase@basic , % env.tdoc@showcase@colorstrip %%% -\NewDocumentEnvironment{tdocshowcase}{O{}}{ +\NewDocumentEnvironment{tdocshowcase}{ O{} }{ \group_begin: \keys_set:nn { tdoc/showcase } { #1 } diff --git a/macros/latex/contrib/tutodoc/doc/tutodoc-en.pdf b/macros/latex/contrib/tutodoc/doc/tutodoc-en.pdf Binary files differindex 4d051d3010..a83fc1915d 100644 --- a/macros/latex/contrib/tutodoc/doc/tutodoc-en.pdf +++ b/macros/latex/contrib/tutodoc/doc/tutodoc-en.pdf diff --git a/macros/latex/contrib/tutodoc/doc/tutodoc-en.tex b/macros/latex/contrib/tutodoc/doc/tutodoc-en.tex index a520d22847..8d628d7b4a 100644 --- a/macros/latex/contrib/tutodoc/doc/tutodoc-en.tex +++ b/macros/latex/contrib/tutodoc/doc/tutodoc-en.tex @@ -4,7 +4,7 @@ % -------------------- % -\begin{filecontents*}{examples-focus-exa.tex} +\begin{filecontents*}[overwrite]{examples-focus-exa.tex} Bla, bla, bla... \begin{tdocexa} @@ -25,7 +25,7 @@ \end{filecontents*} -\begin{filecontents*}{examples-focus-exa-leavevmode.tex} +\begin{filecontents*}[overwrite]{examples-focus-exa-leavevmode.tex} \begin{tdocexa} \leavevmode @@ -38,7 +38,7 @@ \end{filecontents*} -\begin{filecontents*}{examples-focus-rmk.tex} +\begin{filecontents*}[overwrite]{examples-focus-rmk.tex} \begin{tdocrem} Just one remark... \end{tdocrem} @@ -49,7 +49,7 @@ \end{filecontents*} -\begin{filecontents*}{examples-focus-tip.tex} +\begin{filecontents*}[overwrite]{examples-focus-tip.tex} \begin{tdoctip} A tip. \end{tdoctip} @@ -60,7 +60,7 @@ \end{filecontents*} -\begin{filecontents*}{examples-focus-note.tex} +\begin{filecontents*}[overwrite]{examples-focus-note.tex} \begin{tdocnote} Something useful to tell you... \end{tdocnote} @@ -71,7 +71,7 @@ \end{filecontents*} -\begin{filecontents*}{examples-focus-important.tex} +\begin{filecontents*}[overwrite]{examples-focus-important.tex} \begin{tdocimportant} Important and harmless. \end{tdocimportant} @@ -82,7 +82,7 @@ \end{filecontents*} -\begin{filecontents*}{examples-focus-caution.tex} +\begin{filecontents*}[overwrite]{examples-focus-caution.tex} \begin{tdoccaution} Caution, caution... \end{tdoccaution} @@ -93,7 +93,7 @@ \end{filecontents*} -\begin{filecontents*}{examples-focus-warn.tex} +\begin{filecontents*}[overwrite]{examples-focus-warn.tex} \begin{tdocwarn} Avoid the dangers... \end{tdocwarn} @@ -104,7 +104,7 @@ \end{filecontents*} -\begin{filecontents*}{examples-showcase-default.tex} +\begin{filecontents*}[overwrite]{examples-showcase-default.tex} \begin{tdocshowcase} \bfseries A bit of code \LaTeX. @@ -115,7 +115,7 @@ \end{filecontents*} -\begin{filecontents*}{examples-showcase-customized.tex} +\begin{filecontents*}[overwrite]{examples-showcase-customized.tex} \begin{tdocshowcase}[before = My beginning, after = My end, color = red] @@ -124,21 +124,21 @@ Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla... \end{filecontents*} -\begin{filecontents*}{examples-showcase-hook.tex} -\begin{tdocshowcase}[] - [This works...] +\begin{filecontents*}[overwrite]{examples-showcase-hook.tex} +\begin{tdocshowcase} + \string[This works...] \end{tdocshowcase} \end{filecontents*} -\begin{filecontents*}{examples-showcase-no-clrstrip.tex} +\begin{filecontents*}[overwrite]{examples-showcase-no-clrstrip.tex} \begin{tdocshowcase}[nostripe] Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla... \end{tdocshowcase} \end{filecontents*} -\begin{filecontents*}{examples-showcase-no-clrstrip-customized.tex} +\begin{filecontents*}[overwrite]{examples-showcase-no-clrstrip-customized.tex} \begin{tdocshowcase}[nostripe, before = My beginning, after = My end, @@ -149,32 +149,32 @@ Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla... \end{filecontents*} -\begin{filecontents*}{examples-showcase-external.tex} +\begin{filecontents*}[overwrite]{examples-showcase-external.tex} Blablobli, blablobli, blablobli, blablobli, blablobli, blablobli... \end{filecontents*} -\begin{filecontents*}{examples-listing-ABC.tex} +\begin{filecontents*}[overwrite]{examples-listing-ABC.tex} \begin{tdoclatex}[sbs] $A = B + C$ \end{tdoclatex} \end{filecontents*} -\begin{filecontents*}{examples-listing-strange.tex} +\begin{filecontents*}[overwrite]{examples-listing-strange.tex} \begin{tdoclatex}[std] [Strange... Or not!] \end{tdoclatex} \end{filecontents*} -\begin{filecontents*}{examples-listing-xyz.tex} +\begin{filecontents*}[overwrite]{examples-listing-xyz.tex} % Just one demo. $x y z = 1$ \end{filecontents*} -\begin{filecontents*}{examples-listing-latexshow-options.tex} +\begin{filecontents*}[overwrite]{examples-listing-latexshow-options.tex} \tdoclatexshow[explain = What comes next is colourful..., before = Rendering below., after = Finished rendering., @@ -183,7 +183,7 @@ $x y z = 1$ \end{filecontents*} -\begin{filecontents*}{examples-version-n-change-dating.tex} +\begin{filecontents*}[overwrite]{examples-version-n-change-dating.tex} Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla... \medskip % CAUTION! This prevents overlapping. @@ -204,7 +204,7 @@ Blu, blu, blu, blu, blu, blu, blu, blu, blu, blu, blu, blu, blu... \end{filecontents*} -\begin{filecontents*}{examples-version-n-change-versioning.tex} +\begin{filecontents*}[overwrite]{examples-version-n-change-versioning.tex} \tdocversion[red]{10.2.0-beta}[2023-12-01] Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla... @@ -220,7 +220,7 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble... \end{filecontents*} -\begin{filecontents*}{examples-version-n-change-new.tex} +\begin{filecontents*}[overwrite]{examples-version-n-change-new.tex} \begin{tdocnew} \item Info 1... \item Info 2... @@ -228,7 +228,7 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble... \end{filecontents*} -\begin{filecontents*}{examples-version-n-change-update.tex} +\begin{filecontents*}[overwrite]{examples-version-n-change-update.tex} \begin{tdocupdate} \item Info 1... \item Info 2... @@ -236,7 +236,7 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble... \end{filecontents*} -\begin{filecontents*}{examples-version-n-change-fix.tex} +\begin{filecontents*}[overwrite]{examples-version-n-change-fix.tex} \begin{tdocfix} \item Info 1... \item Info 2... @@ -244,7 +244,7 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble... \end{filecontents*} -\begin{filecontents*}{examples-version-n-change-topic.tex} +\begin{filecontents*}[overwrite]{examples-version-n-change-topic.tex} \begin{tdoctopic}{Unclassifiable changes} % This is where the point needs to be put. \item Info 1... @@ -257,7 +257,7 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble... % -- SOURCE FOR THE DOC -- % % ------------------------ % -\documentclass[12pt, a4paper]{article} +\documentclass[10pt, a4paper]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} @@ -270,6 +270,8 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble... \usepackage{tabularray} \usepackage{fmtcount} +\setlength{\parindent}{0em} + % Package documented. \usepackage[lang = english]{tutodoc} @@ -278,11 +280,11 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble... % * https://tex.stackexchange.com/a/604698/6880 \NewDocumentCommand{ \tdocdocbasicinput }{ m }{% - Considérons le code suivant. + Consider the following code. \tdoclatexinput[code]{#1} - Ceci produira ce qui suit. + This will produce the following. \input{#1} } @@ -307,12 +309,12 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble... } \NewDocumentEnvironment{ tdoc-doc-showcase } - { O{ Début du rendu dans cette doc. } - O{ Fin du rendu dans cette doc. } }{ + { O{ Start of the rendering in this doc. } + O{ End of rendering in this doc. } }{ \tdocdocextraruler{#1} - \smallskip + \nopagebreak\smallskip\nopagebreak }{ - \smallskip + \nopagebreak\smallskip\nopagebreak \tdocdocextraruler{#2} } @@ -322,11 +324,12 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble... \title{Le package \texttt{tutodoc} - Documentation de type tutoriel} \author{Christophe BAL} -\date{29 Nov. 2023 - Version 1.0.0} +\date{8th Dec. 2023 - Version 1.0.1} \maketitle \begin{abstract} +\noindent The \tdocpack{tutodoc} package \footnote{ The name comes from \tdocquote{\tdocprewhy{tuto.rial-type} \tdocprewhy{doc.umentation}}. @@ -337,10 +340,15 @@ is used by its author to semantically produce documentation of \LaTeX\ packages }, and with a sober rendering for reading on screen. +\medskip -\begin{tdocnote} - This package imposes a formatting style. In the not-too-distant future, \tdocpack{tutodoc} will probably be split into a class and a package. -\end{tdocnote} +\noindent +Two important points to note. +\begin{itemize} + \item This package imposes a formatting style. In the not-too-distant future, \tdocpack{tutodoc} will probably be split into a class and a package. + + \item This documentation is also available in French. +\end{itemize} \end{abstract} @@ -690,7 +698,7 @@ It is sometimes useful to render code directly in the documentation. This type o \begin{tdocwarn} - With the default settings, if the code to be formatted begins with an opening bracket, an empty option must be explicitly indicated, as in the following example. + With the default settings, if the code to be formatted begins with an opening bracket, use \tdocmacro{string} as in the following example. the following example. \tdoclatexinput[code]{examples-showcase-hook.tex} @@ -935,7 +943,8 @@ The \tdocmacro{tdoclatexinput} macro, shown below, is used in the same way as th \begin{tdocexa}[Changing the explanatory text] Using the key \tdocinlatex|explain|, you can use custom text. Thus, \tdocinlatex|tdoclatexshow[explain = Here is the actual rendering.]{examples-listing-xyz.tex}| will produce the following. - \medskip + \newpage +% \medskip \begin{tdoc-doc-showcase} \tdoclatexshow[explain = Here is the actual rendering.]{examples-listing-xyz.tex} @@ -1089,8 +1098,18 @@ Blu, blu, blu... +\newpage \section{History} +\tdocversion{1.0.1}[2023-12-08] + +\begin{tdocfix} + \item \tdocmacro{tdocenv}: spacing is now correct, even if the \tdocpack{babel} package is not loaded with the French language. + + \item \tdocenv[{[nostripe]}]{showcase}: page breaks around the rulers are no longer possible.\end{tdocfix} + +\tdocsep + \tdocversion{1.0.0}[2023-11-29] First public version of the project. diff --git a/macros/latex/contrib/tutodoc/doc/tutodoc-fr.pdf b/macros/latex/contrib/tutodoc/doc/tutodoc-fr.pdf Binary files differindex 61c26a3f4f..3b37329ef4 100644 --- a/macros/latex/contrib/tutodoc/doc/tutodoc-fr.pdf +++ b/macros/latex/contrib/tutodoc/doc/tutodoc-fr.pdf diff --git a/macros/latex/contrib/tutodoc/doc/tutodoc-fr.tex b/macros/latex/contrib/tutodoc/doc/tutodoc-fr.tex index d5c55ff667..ef86f8a9bc 100644 --- a/macros/latex/contrib/tutodoc/doc/tutodoc-fr.tex +++ b/macros/latex/contrib/tutodoc/doc/tutodoc-fr.tex @@ -4,7 +4,7 @@ % -------------------- % -\begin{filecontents*}{examples-focus-exa.tex} +\begin{filecontents*}[overwrite]{examples-focus-exa.tex} Bla, bla, bla... \begin{tdocexa} @@ -25,7 +25,7 @@ Bla, bla, bla... \end{filecontents*} -\begin{filecontents*}{examples-focus-exa-leavevmode.tex} +\begin{filecontents*}[overwrite]{examples-focus-exa-leavevmode.tex} \begin{tdocexa} \leavevmode @@ -38,7 +38,7 @@ Bla, bla, bla... \end{filecontents*} -\begin{filecontents*}{examples-focus-rmk.tex} +\begin{filecontents*}[overwrite]{examples-focus-rmk.tex} \begin{tdocrem} Juste une remarque... \end{tdocrem} @@ -49,7 +49,7 @@ Bla, bla, bla... \end{filecontents*} -\begin{filecontents*}{examples-focus-tip.tex} +\begin{filecontents*}[overwrite]{examples-focus-tip.tex} \begin{tdoctip} Une astuce. \end{tdoctip} @@ -60,7 +60,7 @@ Bla, bla, bla... \end{filecontents*} -\begin{filecontents*}{examples-focus-note.tex} +\begin{filecontents*}[overwrite]{examples-focus-note.tex} \begin{tdocnote} Un truc utile à vous dire... \end{tdocnote} @@ -71,7 +71,7 @@ Bla, bla, bla... \end{filecontents*} -\begin{filecontents*}{examples-focus-important.tex} +\begin{filecontents*}[overwrite]{examples-focus-important.tex} \begin{tdocimportant} Un truc important sans danger. \end{tdocimportant} @@ -82,7 +82,7 @@ Bla, bla, bla... \end{filecontents*} -\begin{filecontents*}{examples-focus-caution.tex} +\begin{filecontents*}[overwrite]{examples-focus-caution.tex} \begin{tdoccaution} Prudence, prudence... \end{tdoccaution} @@ -93,7 +93,7 @@ Bla, bla, bla... \end{filecontents*} -\begin{filecontents*}{examples-focus-warn.tex} +\begin{filecontents*}[overwrite]{examples-focus-warn.tex} \begin{tdocwarn} Evitez les dangers... \end{tdocwarn} @@ -104,7 +104,7 @@ Bla, bla, bla... \end{filecontents*} -\begin{filecontents*}{examples-showcase-default.tex} +\begin{filecontents*}[overwrite]{examples-showcase-default.tex} \begin{tdocshowcase} \bfseries Un peu de code \LaTeX. @@ -115,7 +115,7 @@ Bla, bla, bla... \end{filecontents*} -\begin{filecontents*}{examples-showcase-customized.tex} +\begin{filecontents*}[overwrite]{examples-showcase-customized.tex} \begin{tdocshowcase}[before = Mon début, after = Ma fin à moi, color = red] @@ -124,21 +124,21 @@ Bla, bla, bla... \end{filecontents*} -\begin{filecontents*}{examples-showcase-hook.tex} -\begin{tdocshowcase}[] - [Cela fonctionne...] +\begin{filecontents*}[overwrite]{examples-showcase-hook.tex} +\begin{tdocshowcase} + \string[Cela fonctionne...] \end{tdocshowcase} \end{filecontents*} -\begin{filecontents*}{examples-showcase-no-clrstrip.tex} +\begin{filecontents*}[overwrite]{examples-showcase-no-clrstrip.tex} \begin{tdocshowcase}[nostripe] Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla... \end{tdocshowcase} \end{filecontents*} -\begin{filecontents*}{examples-showcase-no-clrstrip-customized.tex} +\begin{filecontents*}[overwrite]{examples-showcase-no-clrstrip-customized.tex} \begin{tdocshowcase}[nostripe, before = Mon début, after = Ma fin à moi, @@ -148,32 +148,32 @@ Bla, bla, bla... \end{filecontents*} -\begin{filecontents*}{examples-showcase-external.tex} +\begin{filecontents*}[overwrite]{examples-showcase-external.tex} Blablobli, blablobli, blablobli, blablobli, blablobli, blablobli... \end{filecontents*} -\begin{filecontents*}{examples-listing-ABC.tex} +\begin{filecontents*}[overwrite]{examples-listing-ABC.tex} \begin{tdoclatex}[sbs] $A = B + C$ \end{tdoclatex} \end{filecontents*} -\begin{filecontents*}{examples-listing-strange.tex} +\begin{filecontents*}[overwrite]{examples-listing-strange.tex} \begin{tdoclatex}[std] [Étrange... Ou pas !] \end{tdoclatex} \end{filecontents*} -\begin{filecontents*}{examples-listing-xyz.tex} +\begin{filecontents*}[overwrite]{examples-listing-xyz.tex} % Juste une démo. $x y z = 1$ \end{filecontents*} -\begin{filecontents*}{examples-listing-latexshow-options.tex} +\begin{filecontents*}[overwrite]{examples-listing-latexshow-options.tex} \tdoclatexshow[explain = Ce qui vient est coloré..., before = Rendu ci-après., after = Rendu fini., @@ -182,7 +182,7 @@ $x y z = 1$ \end{filecontents*} -\begin{filecontents*}{examples-version-n-change-dating.tex} +\begin{filecontents*}[overwrite]{examples-version-n-change-dating.tex} Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla... \medskip % ATTENTION ! Ceci évite le chevauchement. @@ -203,7 +203,7 @@ Blu, blu, blu, blu, blu, blu, blu, blu, blu, blu, blu, blu, blu... \end{filecontents*} -\begin{filecontents*}{examples-version-n-change-versioning.tex} +\begin{filecontents*}[overwrite]{examples-version-n-change-versioning.tex} \tdocversion[red]{10.2.0-beta}[2023-12-01] Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla... @@ -219,7 +219,7 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble... \end{filecontents*} -\begin{filecontents*}{examples-version-n-change-new.tex} +\begin{filecontents*}[overwrite]{examples-version-n-change-new.tex} \begin{tdocnew} \item Info 1... \item Info 2... @@ -227,7 +227,7 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble... \end{filecontents*} -\begin{filecontents*}{examples-version-n-change-update.tex} +\begin{filecontents*}[overwrite]{examples-version-n-change-update.tex} \begin{tdocupdate} \item Info 1... \item Info 2... @@ -235,7 +235,7 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble... \end{filecontents*} -\begin{filecontents*}{examples-version-n-change-fix.tex} +\begin{filecontents*}[overwrite]{examples-version-n-change-fix.tex} \begin{tdocfix} \item Info 1... \item Info 2... @@ -243,7 +243,7 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble... \end{filecontents*} -\begin{filecontents*}{examples-version-n-change-topic.tex} +\begin{filecontents*}[overwrite]{examples-version-n-change-topic.tex} \begin{tdoctopic}{Des changements inclassables} % Ici le point s'impose. \item Info 1... @@ -269,6 +269,7 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble... % Package documented. \usepackage[lang = french]{tutodoc} +\setlength{\parindent}{0em} % Source. % * https://tex.stackexchange.com/a/604698/6880 @@ -306,9 +307,9 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble... { O{ Début du rendu dans cette doc. } O{ Fin du rendu dans cette doc. } }{ \tdocdocextraruler{#1} - \smallskip + \nopagebreak\smallskip\nopagebreak }{ - \smallskip + \nopagebreak\smallskip\nopagebreak \tdocdocextraruler{#2} } @@ -318,11 +319,12 @@ ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble... \title{Le package \texttt{tutodoc} - Documentation de type tutoriel} \author{Christophe BAL} -\date{29 Nov. 2023 - Version 1.0.0} +\date{8 Déc. 2023 - Version 1.0.1} \maketitle \begin{abstract} +\noindent Le package \tdocpack{tutodoc} \footnote{ Le nom vient de \tdocquote{\tdocprewhy{tuto.rial-type} \tdocprewhy{doc.umentation}} se traduit en \tdocquote{documentation de type tutoriel}. @@ -333,19 +335,28 @@ est utilisé par son auteur pour produire de façon sémantique des documentatio }, et avec un rendu sobre pour une lecture sur écran. +\medskip + +\noindent +Deux points importants à noter. +\begin{itemize} + \item Ce package impose un style de mise en forme. Dans un avenir plus ou moins proche, \tdocpack{tutodoc} sera sûrement éclaté en une classe et un package. + + \item Cette documentation est aussi disponible en anglais. +\end{itemize} + + +% ------------------ % -\begin{tdocnote} - Ce package impose un style de mise en forme. - Dans un avenir plus ou moins proche, \tdocpack{tutodoc} sera sûrement éclaté en une classe et un package. -\end{tdocnote} \tdocsep -{\small\itshape +{\noindent +\small\itshape \textbf{Abstract.} The \tdocpack{tutodoc} package \footnote{ - The name comes from \tdocquote{\tdocprewhy{tuto.rial-type} \tdocprewhy{doc.umentation}}. + The name comes from \tdocquote{\tdocprewhy{tuto.rial-type} \tdocprewhy{doc.umentation}}. } is used by its author to semantically produce documentation of \LaTeX\ packages and classes in a tutorial style \footnote{ @@ -353,10 +364,15 @@ is used by its author to semantically produce documentation of \LaTeX\ packages }, and with a sober rendering for reading on screen. +\medskip -\begin{tdocnote} - This package imposes a formatting style. In the not-too-distant future, \tdocpack{tutodoc} will probably be split into a class and a package. -\end{tdocnote} +\noindent +Two important points to note. +\begin{itemize} + \item This package imposes a formatting style. In the not-too-distant future, \tdocpack{tutodoc} will probably be split into a class and a package. + + \item This documentation is also available in French. +\end{itemize} } \end{abstract} @@ -708,7 +724,7 @@ Il est parfois utile d'obtenir directement le rendu d'un code dans la documentat \begin{tdocwarn} - Avec les réglages par défaut, si le code \LaTeX\ à mettre en forme commence par un crochet ouvrant, il faudra indiquer explicitement une option vide comme dans l'exemple suivant. + Avec les réglages par défaut, si le code \LaTeX\ à mettre en forme commence par un crochet ouvrant, il faudra user de \tdocmacro{string} comme dans l'exemple suivant. \tdoclatexinput[code]{examples-showcase-hook.tex} @@ -882,6 +898,7 @@ La macro \tdocmacro{tdoclatexinput} , présentée ci-après, s'utilise comme l'e % ------------------ % +\newpage \begin{tdocexa}[Face à face] \leavevmode @@ -1050,6 +1067,7 @@ On peut au choix dater quelque chose, ou bien le versionner, dans ce second cas lors des derniers changements. +\newpage \begin{tdocexa}[Pour les nouveautés] \leavevmode @@ -1109,8 +1127,20 @@ Blo, blo, blo... Blu, blu, blu... \end{tdoclatex} + +\newpage \section{Historique} +\tdocversion{1.0.1}[2023-12-08] + +\begin{tdocfix} + \item \tdocmacro{tdocenv}: l'espacement est maintenant correct, même si le paquet \tdocpack{babel} n'est pas chargé avec la langue française. + + \item \tdocenv[{[nostripe]}]{showcase}: les sauts de page autour des règles ne sont plus possibles. +\end{tdocfix} + +\tdocsep + \tdocversion{1.0.0}[2023-11-29] Première version publique du projet. |