From 830ca3622cd4bfe82812703c57c3af1971150bf8 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 14 Nov 2023 21:03:38 +0000 Subject: postnotes (14nov23) git-svn-id: svn://tug.org/texlive/trunk@68840 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/postnotes/CHANGELOG.md | 13 +- Master/texmf-dist/doc/latex/postnotes/README.md | 4 +- .../doc/latex/postnotes/postnotes-code.pdf | Bin 849779 -> 819390 bytes .../doc/latex/postnotes/postnotes-code.tex | 5 +- .../doc/latex/postnotes/postnotes-doc.pdf | Bin 177635 -> 203205 bytes .../doc/latex/postnotes/postnotes-doc.tex | 164 +++++++++++--- .../source/latex/postnotes/postnotes.dtx | 247 ++++++++++++--------- .../source/latex/postnotes/postnotes.ins | 10 +- .../texmf-dist/tex/latex/postnotes/postnotes.sty | 205 +++++++++-------- 9 files changed, 402 insertions(+), 246 deletions(-) diff --git a/Master/texmf-dist/doc/latex/postnotes/CHANGELOG.md b/Master/texmf-dist/doc/latex/postnotes/CHANGELOG.md index fda5f611731..c364fc150af 100644 --- a/Master/texmf-dist/doc/latex/postnotes/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/postnotes/CHANGELOG.md @@ -1,6 +1,17 @@ # Changelog -## [Unreleased](https://github.com/gusbrs/postnotes/compare/v0.2.6...HEAD) +## [Unreleased](https://github.com/gusbrs/postnotes/compare/v0.2.7...HEAD) + +## [v0.2.7](https://github.com/gusbrs/postnotes/compare/v0.2.6...v0.2.7) (2023-11-14) + +### Added +- Provide `\pnidnextnote`, with usage example in the manual. +- User manual example for section splitting using section redefinition. + +### Changed +- Don't use `expl3` public scratch temporary variables. +- Prefer `e-type` expansion. +- Require 2023-11-01 LaTeX kernel. ## [v0.2.6](https://github.com/gusbrs/postnotes/compare/v0.2.5...v0.2.6) (2023-08-21) diff --git a/Master/texmf-dist/doc/latex/postnotes/README.md b/Master/texmf-dist/doc/latex/postnotes/README.md index b6b5f0334e4..6b730c27e65 100644 --- a/Master/texmf-dist/doc/latex/postnotes/README.md +++ b/Master/texmf-dist/doc/latex/postnotes/README.md @@ -2,8 +2,8 @@ **Endnotes for LaTeX** -Author: Gustavo Barros -Maintainer: Gustavo Barros +Author: gusbrs +Maintainer: gusbrs `postnotes` is an endnotes package for LaTeX. Its user interface provides means to print multiple sections of notes along the document, and to subdivide diff --git a/Master/texmf-dist/doc/latex/postnotes/postnotes-code.pdf b/Master/texmf-dist/doc/latex/postnotes/postnotes-code.pdf index d4a78a2cfee..5d443132222 100644 Binary files a/Master/texmf-dist/doc/latex/postnotes/postnotes-code.pdf and b/Master/texmf-dist/doc/latex/postnotes/postnotes-code.pdf differ diff --git a/Master/texmf-dist/doc/latex/postnotes/postnotes-code.tex b/Master/texmf-dist/doc/latex/postnotes/postnotes-code.tex index 67aff57582c..6cc43c80af3 100644 --- a/Master/texmf-dist/doc/latex/postnotes/postnotes-code.tex +++ b/Master/texmf-dist/doc/latex/postnotes/postnotes-code.tex @@ -4,7 +4,7 @@ % % This file is part of the LaTeX package "postnotes". % -% Copyright (C) 2022-2023 Gustavo Barros +% Copyright (C) 2022-2023 gusbrs % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -17,8 +17,7 @@ % version 2005/12/01 or later. % % -% This work is "maintained" (as per LPPL maintenance status) by -% Gustavo Barros. +% This work is "maintained" (as per LPPL maintenance status) by gusbrs. % % This work consists of the files postnotes.dtx, % postnotes.ins, diff --git a/Master/texmf-dist/doc/latex/postnotes/postnotes-doc.pdf b/Master/texmf-dist/doc/latex/postnotes/postnotes-doc.pdf index 62ee64468b0..e2fa275f3ab 100644 Binary files a/Master/texmf-dist/doc/latex/postnotes/postnotes-doc.pdf and b/Master/texmf-dist/doc/latex/postnotes/postnotes-doc.pdf differ diff --git a/Master/texmf-dist/doc/latex/postnotes/postnotes-doc.tex b/Master/texmf-dist/doc/latex/postnotes/postnotes-doc.tex index 3d29f76a69c..4848fa7cb25 100644 --- a/Master/texmf-dist/doc/latex/postnotes/postnotes-doc.tex +++ b/Master/texmf-dist/doc/latex/postnotes/postnotes-doc.tex @@ -4,7 +4,7 @@ % % This file is part of the LaTeX package "postnotes". % -% Copyright (C) 2022-2023 Gustavo Barros +% Copyright (C) 2022-2023 gusbrs % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -17,8 +17,7 @@ % version 2005/12/01 or later. % % -% This work is "maintained" (as per LPPL maintenance status) by -% Gustavo Barros. +% This work is "maintained" (as per LPPL maintenance status) by gusbrs. % % This work consists of the files postnotes.dtx, % postnotes.ins, @@ -64,10 +63,7 @@ \hypersetup{hidelinks} \usepackage{zref-clever} -\zcsetup{ - cap, - countertype = { pnexample = example } , -} +\zcsetup{cap} \usepackage{zref-titleref} \usepackage{zref-check} @@ -79,13 +75,24 @@ \chapter , \@mkboth , \@textsuperscript , + \thechapter , \AddToHook , + \AddToHookNext , \counterwithin , \tableofcontents , \ExplSyntaxOn , \ExplSyntaxOff , \NewDocumentCommand , + \RenewDocumentCommand , + \NewCommandCopy , + \IfBooleanTF , + \IfNoValueTF , \tl_if_eq:NNTF , + \tl_new:N , + \tl_gset:Nv , + \prop_new:N , + \prop_gput:NeV , + \prop_item:NV , \bool_case:nF , \str_if_eq_p:ee , \prg_replicate:nn , @@ -113,6 +120,7 @@ \pnthesection , \pnthechapternextnote , \pnthesectionnextnote , + \pnidnextnote , \pnhdpagefirst , \pnhdpagelast , \pnhdchapfirst , @@ -123,6 +131,10 @@ \pnhdnamelast , \mypnheader , \demochapter , + \origlatexchapter , + \l_postnotes_note_id_tl , + \g_my_currentname_tl , + \g_my_names_prop , } } \lstset{ @@ -139,22 +151,15 @@ \lstnewenvironment{pnexample}[1][]{% \renewcommand{\lstlistingname}{Example}% \renewcommand*\theHlstlisting{ht.\thelstlisting}% + \zcsetup{countertype={lstlisting=example}}% \lstset{#1}% + \stepcounter{pnexample}% \setcounter{lstlisting}{\value{pnexample}}% }{} \lstnewenvironment{pnsnippet}[1][]{% \renewcommand{\lstlistingname}{Example}% \lstset{#1}% }{} -\ExplSyntaxOn -\makeatletter -\lst@AddToHook { PreInit } - { - \cs_if_exist:cT { c@ \lstenv@name } - { \exp_args:Nx \refstepcounter { \lstenv@name } } - } -\makeatother -\ExplSyntaxOff \setlength{\marginparsep}{2\labelsep} @@ -168,18 +173,17 @@ \title{% The \pkg{postnotes} package% - \thanks{This file describes \fileversion, released \filedate.}% \texorpdfstring{\\{}\medskip{}}{ - }% User manual% \texorpdfstring{\medskip{}}{}% } \author{% - Gustavo Barros% - \thanks{\url{https://github.com/gusbrs/postnotes}}% -} + \texorpdfstring{\texttt{gusbrs}\\[0.8em] + \url{https://github.com/gusbrs/postnotes}\\ + \url{https://www.ctan.org/pkg/postnotes}}{gusbrs}} -\date{\filedate} +\date{Version \fileversion\ -- \filedate} \maketitle @@ -505,7 +509,7 @@ is typeset. For details on how to use these variables, see \DescribeOption{exp} % By default, \cs{postnotesection} stores its \meta{text} argument with ``no manipulation''. The \opt{exp} option allows one to fully expand -(\texttt{x}-type expansion) \meta{text} in place before storing it. It is a +(\texttt{e}-type expansion) \meta{text} in place before storing it. It is a boolean option, and the option given with no value is equivalent to \texttt{exp=true}. @@ -536,6 +540,7 @@ generic ``add to''. \DescribeMacro{\pnthesection} % \DescribeMacro{\pnthechapternextnote} % \DescribeMacro{\pnthesectionnextnote} % +\DescribeMacro{\pnidnextnote} % Just like with \cs{postnote}, the contents of \cs{postnotesection} are not expanded in place, but rather stored with ``no manipulation'' to be typeset later at \cs{printpostnotes}. For this reason, some contextual information is @@ -560,6 +565,7 @@ the value of \cs{thechapter} at the point the ``next note'' is placed (a \cs{postnote}, that is), the first in the chapter, and already inside it, thus with an expected value of the \texttt{chapter} counter. Similarly, \cs{pnthesectionnextnote} contains the value of \cs{thesection} for the ``next +note''. \cs{pnidnextnote}, in turn, stores the Id number of the ``next note''. Of course, the ``next note'' variables are \emph{proxies}, but they are meant to support the automation of the subdivision of the notes through the use of \texttt{before} hooks to the document's sectioning commands, in @@ -622,10 +628,14 @@ by means of \cs{counterwithin*}. Note that the call to \cs{chapter*} inside \cs{tableofcontents} does not generate a spurious notes section at \cs{printpostnotes} (as long as you don't place a note in a sectioning command with no short argument, which you shouldn't do anyway). But what if we have, -among mostly numbered chapters, an ocasional unnumbered one? -\cs{pnthechapternextnote} wouldn't possibly work in this case. Since -immediately successive calls to \cs{postnotesection} override the previous -ones, it is straightforward to just manually adjust the exception: +among mostly numbered chapters, an ocasional unnumbered one?\footnote{The + example here counts on the lucky circumstance of having only a single + initial unnumbered section. But, in general, if that's not the case, + \cs{counterwithin*} is insufficient and the resetting of the + \texttt{postnote} counter at unnumbered sections most be handled somehow + else.} \cs{pnthechapternextnote} wouldn't possibly work in this case. +Since immediately successive calls to \cs{postnotesection} override the +previous ones, it is straightforward to just manually adjust the exception: \begin{pnexample}[caption={Fine-tuning automation},label={ex:sect:fine-auto}] \documentclass{book} @@ -649,6 +659,108 @@ Boo.\postnote{Boo note.} \end{document} \end{pnexample} +If one wants to use section names/titles, the technique above (of using +something similar to \cs{pnthechapternextnote}) is less useful, since if the +first note in the section occurs within a subsection we would lose the +information of interest. So we have a little more work to do in this case. +\zcref{ex:sect:names} uses the \texttt{cmd/chapter/before} hook to store the +value of \cs{@currentlabelname} in a dedicated variable after the next call to +\cs{NR@gettitle} (presuming the use of \pkg{nameref}, through \pkg{hyperref}). +We then store the value of this variable for each note using the +\texttt{postnotes/note/store} hook and the note's Id number +\cs{l_postnotes_note_id_tl}. Finally we can retrieve this stored value using +\cs{pnidnextnote} inside \cs{postnotesection}. Indeed, this example is also +meant to illustrate the general technique for storing/restoring variables of +interest for this purpose. + +\begin{pnexample}[caption={Section names},label={ex:sect:names}] +\documentclass{book} +\usepackage{postnotes} +\ExplSyntaxOn +\tl_new:N \g_my_currentname_tl +\prop_new:N \g_my_names_prop +\AddToHook{cmd/chapter/before}{ + \AddToHookNext{cmd/NR@gettitle/after}{ + \tl_gset:Nv \g_my_currentname_tl { @currentlabelname } } } +\AddToHook{postnotes/note/store}{ + \prop_gput:NeV \g_my_names_prop + { \l_postnotes_note_id_tl } \g_my_currentname_tl } +\AddToHook{cmd/chapter/before}{ + \postnotesection{ + \section*{Notes~to~\prop_item:NV \g_my_names_prop \pnidnextnote}}} +\ExplSyntaxOff +\counterwithin*{postnote}{chapter} +\usepackage{hyperref} +\begin{document} +\chapter*{Introduction} +Intro.\postnote{Intro note.} +\chapter{First chapter} +Foo.\postnote{Foo note.} +Bar.\postnote{Bar note.} +\chapter{Second chapter} +Baz.\postnote{Baz note.} +Boo.\postnote{Boo note.} +\printpostnotes +\end{document} +\end{pnexample} + +While \pkg{postnotes} goes through great lengths to avoid tampering with +sectioning commands, the fact that in general we cannot use \texttt{cmd} hooks +after \cs{chapter} or \cs{section} does complicate things. And +\zcref{ex:sect:names} is indeed a good illustration of how a supposedly simple +task can become quite convoluted if we are not allowed to observe the +variables of interest \emph{after} the sectioning commands. However, things +are quite different from the perspective of a user, considering the problem at +the document level. In this case, the definition of the sectioning commands +is known, and unique, so that it may make sense to use of the traditional +technique of storing the definition of the sectioning command, and then +redefining it to do what it used to, plus something +else.\footnote{\username{egreg} commonly applies the technique for the same + purpose in answers using \pkg{endnotes} at TeX.SX. For example: + \url{https://tex.stackexchange.com/a/62425}, +\url{https://tex.stackexchange.com/a/109566}, and +\url{https://tex.stackexchange.com/a/85001}. But things are somewhat simpler +with \pkg{postnotes}, since there's no need to handle the case of sections +with no notes, given that empty \cs{postnotesection}s are already skipped.} +In which case, we can set \cs{postnotesection}s with full generality and +flexibility. + +\begin{pnexample}[caption={Redefining sections},label={ex:sect:redefined}] +\documentclass{book} +\usepackage{postnotes} +\counterwithin*{postnote}{chapter} +\NewCommandCopy\origlatexchapter\chapter +\RenewDocumentCommand{\chapter}{som}{% + \IfBooleanTF{#1}{% + \origlatexchapter*{#3}% + \setcounter{postnote}{0}% + \postnotesection{\section*{Notes to ``#3''}}% + }{% + \IfNoValueTF{#2}{% + \origlatexchapter{#3}% + }{% + \origlatexchapter[#2]{#3}% + }% + \postnotesection{\section*{Notes to chapter \pnthechapter}}% + }% +} +\usepackage{hyperref} +\begin{document} +\chapter*{Introduction} +Intro.\postnote{Intro note.} +\chapter{First chapter} +Foo.\postnote{Foo note.} +Bar.\postnote{Bar note.} +\chapter{Second chapter} +Baz.\postnote{Baz note.} +Boo.\postnote{Boo note.} +\printpostnotes +\end{document} +\end{pnexample} + +Things could easily get fancier, of course. But that's the basic structure. + + \section{Headers} \zlabel{sec:headers} diff --git a/Master/texmf-dist/source/latex/postnotes/postnotes.dtx b/Master/texmf-dist/source/latex/postnotes/postnotes.dtx index 5a32a179630..58f00e6cdb9 100644 --- a/Master/texmf-dist/source/latex/postnotes/postnotes.dtx +++ b/Master/texmf-dist/source/latex/postnotes/postnotes.dtx @@ -4,7 +4,7 @@ % % This file is part of the LaTeX package "postnotes". % -% Copyright (C) 2022-2023 Gustavo Barros +% Copyright (C) 2022-2023 gusbrs % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -17,8 +17,7 @@ % version 2005/12/01 or later. % % -% This work is "maintained" (as per LPPL maintenance status) by -% Gustavo Barros. +% This work is "maintained" (as per LPPL maintenance status) by gusbrs. % % This work consists of the files postnotes.dtx, % postnotes.ins, @@ -95,18 +94,17 @@ % % \title{^^A % The \pkg{postnotes} package^^A -% \thanks{This file describes \fileversion, released \filedate.}^^A % \texorpdfstring{\\{}\medskip{}}{ - }^^A % Code documentation^^A % \texorpdfstring{\medskip{}}{}^^A % } % % \author{^^A -% Gustavo Barros^^A -% \thanks{\url{https://github.com/gusbrs/postnotes}}^^A -% } +% \texorpdfstring{\texttt{gusbrs}\\[0.8em] +% \url{https://github.com/gusbrs/postnotes}\\ +% \url{https://www.ctan.org/pkg/postnotes}}{gusbrs}} % -% \date{\filedate} +% \date{Version \fileversion\ -- \filedate} % % \maketitle % @@ -134,11 +132,12 @@ % simplifies the relation with \pkg{hyperref} (\texttt{ltnews35}, % \texttt{hyperref-linktarget}): the provision of \cs{MakeLinkTarget} and the % definition by the kernel of the starred version of \cs{ref}, which we can -% use regardless of \pkg{hyperref} being loaded. So we require the 2022-06-01 -% kernel or newer. +% use regardless of \pkg{hyperref} being loaded. Finally, since we followed +% the move to \texttt{e}-type expansion, to play safe we require the +% 2023-11-01 kernel or newer. % % \begin{macrocode} -\def\postnotes@required@kernel{2022-06-01} +\def\postnotes@required@kernel{2023-11-01} \NeedsTeXFormat{LaTeX2e}[\postnotes@required@kernel] \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} \IfFormatAtLeastTF{\postnotes@required@kernel} @@ -153,11 +152,28 @@ % % % \begin{macrocode} -\ProvidesExplPackage {postnotes} {2023-08-21} {0.2.6} +\ProvidesExplPackage {postnotes} {2023-11-14} {0.2.7} {Endnotes for LaTeX} % \end{macrocode} % % +% \begin{macro} +% { +% \l_@@_tmpa_tl , +% \l_@@_tmpb_tl , +% \l_@@_tmpa_seq , +% \l_@@_tmpa_box , +% } +% Temporary scratch variables. +% \begin{macrocode} +\tl_new:N \l_@@_tmpa_tl +\tl_new:N \l_@@_tmpb_tl +\seq_new:N \l_@@_tmpa_seq +\box_new:N \l_@@_tmpa_box +% \end{macrocode} +% \end{macro} +% +% % \section{Data} % % @@ -196,11 +212,11 @@ { \prop_new:c { \@@_data_name:e {#1} } \prop_gput:cnn { \@@_data_name:e {#1} } { type } { note } - \prop_gput:cnx { \@@_data_name:e {#1} } { mark } + \prop_gput:cne { \@@_data_name:e {#1} } { mark } { \l_@@_mark_tl } - \prop_gput:cnx { \@@_data_name:e {#1} } { counter } + \prop_gput:cne { \@@_data_name:e {#1} } { counter } { \int_use:N \c@postnote } - \prop_gput:cnx { \@@_data_name:e {#1} } { sortnum } + \prop_gput:cne { \@@_data_name:e {#1} } { sortnum } { \bool_if:NTF \l_@@_manual_sortnum_bool { \fp_use:N \l_@@_sort_num_fp } @@ -208,16 +224,16 @@ } \cs_if_exist:cT { chapter } { - \prop_gput:cnx { \@@_data_name:e {#1} } + \prop_gput:cne { \@@_data_name:e {#1} } { thechapter } { \thechapter } } - \prop_gput:cnx { \@@_data_name:e {#1} } { thesection } + \prop_gput:cne { \@@_data_name:e {#1} } { thesection } { \thesection } - \prop_gput:cnx { \@@_data_name:e {#1} } { pnsectname } + \prop_gput:cne { \@@_data_name:e {#1} } { pnsectname } { \g_@@_section_name_tl } - \prop_gput:cnx { \@@_data_name:e {#1} } { pnsectid } + \prop_gput:cne { \@@_data_name:e {#1} } { pnsectid } { \int_use:N \g_@@_sectid_int } - \prop_gput:cnx { \@@_data_name:e {#1} } { multibool } + \prop_gput:cne { \@@_data_name:e {#1} } { multibool } { \bool_to_str:N \l_@@_maybe_multi_bool } \prop_gput:cnn { \@@_data_name:e {#1} } { content } {#2} \UseHook { postnotes/note/store } @@ -239,14 +255,14 @@ \prop_gput:cnn { \@@_data_name:e {#1} } { type } { section } \cs_if_exist:cT { chapter } { - \prop_gput:cnx { \@@_data_name:e {#1} } + \prop_gput:cne { \@@_data_name:e {#1} } { thechapter } { \thechapter } } - \prop_gput:cnx { \@@_data_name:e {#1} } { thesection } + \prop_gput:cne { \@@_data_name:e {#1} } { thesection } { \thesection } \prop_gput:cnn { \@@_data_name:e {#1} } { content } {#2} } -\cs_generate_variant:Nn \@@_store_section:nn { nx } +\cs_generate_variant:Nn \@@_store_section:nn { ne } % \end{macrocode} % \end{macro} % @@ -290,7 +306,7 @@ % \end{syntax} % \begin{macrocode} \tl_const:Nn \c_@@_ref_prefix_tl { postnote@r } -\cs_new_protected:Npx \post@note #1#2 +\cs_new_protected:Npe \post@note #1#2 { \exp_not:N \@newl@bel { \c_@@_ref_prefix_tl } {#1} {#2} } % \end{macrocode} % \end{macro} @@ -303,7 +319,7 @@ { \legacy_if:nT { @filesw } { - \iow_now:Nx \@mainaux + \iow_now:Ne \@mainaux { \token_to_str:N \providecommand \token_to_str:N \post@note [2]{} } } } @@ -311,7 +327,7 @@ { \legacy_if:nT { @filesw } { - \iow_now:Nx \@partaux + \iow_now:Ne \@partaux { \token_to_str:N \providecommand \token_to_str:N \post@note [2]{} } } } @@ -345,13 +361,13 @@ } \cs_new_protected:Npn \@@_set_mark_page_label:n #1 { \@@_set_label:nn { mark@ #1 } { \thepage } } -\cs_generate_variant:Nn \@@_set_mark_page_label:n { x } +\cs_generate_variant:Nn \@@_set_mark_page_label:n { e } \cs_new_protected:Npn \@@_set_text_page_label:n #1 { \@@_set_label:nn { text@ #1 } { \int_use:N \c@page } } -\cs_generate_variant:Nn \@@_set_text_page_label:n { x } +\cs_generate_variant:Nn \@@_set_text_page_label:n { e } \cs_new_protected:Npn \@@_set_print_page_label:n #1 { \@@_set_label:nn { print@ #1 } { \int_use:N \c@page } } -\cs_generate_variant:Nn \@@_set_print_page_label:n { x } +\cs_generate_variant:Nn \@@_set_print_page_label:n { e } % \end{macrocode} % \end{macro} % @@ -373,7 +389,7 @@ { \tl_set:Nv #1 { \c_@@_ref_prefix_tl @ #2 } } { \tl_clear:N #1 } } -\cs_generate_variant:Nn \@@_get_pageref:Nn { Nx } +\cs_generate_variant:Nn \@@_get_pageref:Nn { Ne } \cs_new:Npn \@@_extract_pageref:n #1 { \cs_if_exist:cTF { \c_@@_ref_prefix_tl @ #1 } @@ -646,9 +662,10 @@ % \begin{macrocode} maketextmark = { - \hbox_set:Nn \l_tmpa_box { \@textsuperscript { \normalfont ##1 } } - \skip_horizontal:n { - \box_wd:N \l_tmpa_box } - ##2 \box_use:N \l_tmpa_box ##3 + \hbox_set:Nn \l_@@_tmpa_box + { \@textsuperscript { \normalfont ##1 } } + \skip_horizontal:n { - \box_wd:N \l_@@_tmpa_box } + ##2 \box_use:N \l_@@_tmpa_box ##3 } , } , style / pagenote .meta:n = @@ -893,19 +910,19 @@ \tl_if_empty:NT \l_@@_mark_tl { \stepcounter { postnote } - \tl_set:Nx \l_@@_mark_tl { \thepostnote } + \tl_set:Ne \l_@@_mark_tl { \thepostnote } } - \seq_gput_right:Nx \g_@@_queue_seq + \seq_gput_right:Ne \g_@@_queue_seq { \l_postnotes_note_id_tl } \UseHook { postnotes/note/begin } \cs_set:Npn \@currentcounter { postnote } - \cs_set:Npx \@currentlabel { \p@postnote \l_@@_mark_tl } + \cs_set:Npe \@currentlabel { \p@postnote \l_@@_mark_tl } \MakeLinkTarget* { postnote. \l_postnotes_note_id_tl .mark } - \@@_set_mark_page_label:x { \l_postnotes_note_id_tl } + \@@_set_mark_page_label:e { \l_postnotes_note_id_tl } \@@_set_user_labels: \bool_if:NF \l_@@_nomark_bool { - \@@_typeset_mark:xV + \@@_typeset_mark:eV { \l_postnotes_note_id_tl } \l_@@_mark_tl } \@@_store:nn { \l_postnotes_note_id_tl } {#2} @@ -990,12 +1007,12 @@ \bool_if:NTF \l_@@_print_plain_mark_stepcounter_bool { \stepcounter { postnote } - \tl_set:Nx \l_@@_mark_tl { \thepostnote } + \tl_set:Ne \l_@@_mark_tl { \thepostnote } } { \group_begin: \int_incr:N \c@postnote - \exp_args:NNNx + \exp_args:NNNe \group_end: \tl_set:Nn \l_@@_mark_tl { \thepostnote } } @@ -1037,14 +1054,14 @@ { \@@_make_mark:nnn {#2} { } { } } } } -\cs_generate_variant:Nn \@@_typeset_mark:nn { xV } +\cs_generate_variant:Nn \@@_typeset_mark:nn { eV } \tl_new:N \l_@@_saved_spacefactor_tl \cs_new_protected:Npn \@@_typeset_mark_wrapper:n #1 { \mode_leave_vertical: \mode_if_horizontal:T { - \tl_set:Nx \l_@@_saved_spacefactor_tl { \the\spacefactor } + \tl_set:Ne \l_@@_saved_spacefactor_tl { \the\spacefactor } \nobreak } #1 @@ -1151,11 +1168,11 @@ \group_begin: \int_gincr:N \g_@@_sectid_int \int_gincr:N \g_@@_note_id_int - \seq_gput_right:Nx \g_@@_queue_seq { \l_postnotes_note_id_tl } + \seq_gput_right:Ne \g_@@_queue_seq { \l_postnotes_note_id_tl } \tl_gclear:N \g_@@_section_name_tl \keys_set:nn { postnotes/section } {#1} \bool_if:NTF \l_@@_section_exp_bool - { \@@_store_section:nx { \l_postnotes_note_id_tl } {#2} } + { \@@_store_section:ne { \l_postnotes_note_id_tl } {#2} } { \@@_store_section:nn { \l_postnotes_note_id_tl } {#2} } \group_end: } @@ -1202,12 +1219,14 @@ % \pnthechapternextnote , % \pnthesectionnextnote , % \pnthepage , +% \pnidnextnote , % } % User facing variables, aimed at making available some of the notes' and % sections' metadata for the user at specific contexts. % \begin{macrocode} \tl_new:N \pnthechapter \tl_new:N \pnthesection +\tl_new:N \pnidnextnote \tl_new:N \pnthechapternextnote \tl_new:N \pnthesectionnextnote \tl_new:N \pnthepage @@ -1360,6 +1379,7 @@ \@@_prop_get:nnN { \l_postnotes_print_note_id_tl } { thesection } \pnthesection + \tl_set:NV \pnidnextnote \l_@@_print_note_id_next_tl \@@_prop_get:nnN { \l_@@_print_note_id_next_tl } { thechapter } \pnthechapternextnote @@ -1382,13 +1402,13 @@ \tl_if_eq:NnF \l_@@_print_type_prev_tl { note } { \bool_if:NTF \l_@@_print_as_list_bool - { \exp_args:Nx \begin { \l_@@_print_env_tl } } + { \exp_args:Ne \begin { \l_@@_print_env_tl } } { \group_begin: } \l_@@_print_format_tl } \group_begin: \UseHook { postnotes/print/note/begin } - \@@_get_pageref:Nx \pnthepage + \@@_get_pageref:Ne \pnthepage { mark@ \l_postnotes_print_note_id_tl } \@@_prop_get:nnN { \l_postnotes_print_note_id_tl } @@ -1402,13 +1422,13 @@ \cs_set:Npn \@currentcounter { postnotetext } \int_set:Nn \c@postnotetext { \l_@@_print_counter_tl } - \cs_set:Npx \@currentlabel + \cs_set:Npe \@currentlabel { \p@postnote \l_@@_print_mark_tl } \@@_text_mark_wrapper:n { \MakeLinkTarget* { postnote. \l_postnotes_print_note_id_tl .text } - \@@_set_text_page_label:x + \@@_set_text_page_label:e { \l_postnotes_print_note_id_tl } \@@_typeset_text_mark:eV { \l_postnotes_print_note_id_tl } @@ -1438,7 +1458,7 @@ \tl_if_eq:NnF \l_@@_print_type_next_tl { note } { \bool_if:NTF \l_@@_print_as_list_bool - { \exp_args:Nx \end { \l_@@_print_env_tl } } + { \exp_args:Ne \end { \l_@@_print_env_tl } } { \group_end: } % \end{macrocode} % Ensure \cs{par} at the end of \cs{printopostnotes} (see @@ -1548,19 +1568,19 @@ \cs_new_protected:Npn \@@_verify_multipass:N #1 { \group_begin: - \seq_clear:N \l_tmpa_seq + \seq_clear:N \l_@@_tmpa_seq \seq_map_inline:Nn #1 { - \@@_prop_get:nnN {##1} { multibool } \l_tmpa_tl - \tl_if_eq:NnTF \l_tmpa_tl { true } + \@@_prop_get:nnN {##1} { multibool } \l_@@_tmpa_tl + \tl_if_eq:NnTF \l_@@_tmpa_tl { true } { \cs_if_exist:cT { \c_@@_ref_prefix_tl @ mark@ ##1 } - { \seq_put_right:Nn \l_tmpa_seq {##1} } + { \seq_put_right:Nn \l_@@_tmpa_seq {##1} } } - { \seq_put_right:Nn \l_tmpa_seq {##1} } + { \seq_put_right:Nn \l_@@_tmpa_seq {##1} } } - \seq_gset_eq:NN #1 \l_tmpa_seq + \seq_gset_eq:NN #1 \l_@@_tmpa_seq \group_end: } % \end{macrocode} @@ -1578,19 +1598,20 @@ \group_begin: \seq_gsort:Nn #1 { - \@@_prop_get:nnN {##1} { pnsectid } \l_tmpa_tl - \@@_prop_get:nnN {##2} { pnsectid } \l_tmpb_tl - \tl_if_eq:NNTF \l_tmpa_tl \l_tmpb_tl + \@@_prop_get:nnN {##1} { pnsectid } \l_@@_tmpa_tl + \@@_prop_get:nnN {##2} { pnsectid } \l_@@_tmpb_tl + \tl_if_eq:NNTF \l_@@_tmpa_tl \l_@@_tmpb_tl { - \@@_prop_get:nnN {##1} { type } \l_tmpa_tl - \@@_prop_get:nnN {##2} { type } \l_tmpb_tl + \@@_prop_get:nnN {##1} { type } \l_@@_tmpa_tl + \@@_prop_get:nnN {##2} { type } \l_@@_tmpb_tl \bool_lazy_and:nnTF - { \str_if_eq_p:Vn \l_tmpa_tl { note } } - { \str_if_eq_p:Vn \l_tmpb_tl { note } } + { \str_if_eq_p:Vn \l_@@_tmpa_tl { note } } + { \str_if_eq_p:Vn \l_@@_tmpb_tl { note } } { - \@@_prop_get:nnN {##1} { sortnum } \l_tmpa_tl - \@@_prop_get:nnN {##2} { sortnum } \l_tmpb_tl - \fp_compare:nNnTF { \l_tmpa_tl } > { \l_tmpb_tl } + \@@_prop_get:nnN {##1} { sortnum } \l_@@_tmpa_tl + \@@_prop_get:nnN {##2} { sortnum } \l_@@_tmpb_tl + \fp_compare:nNnTF + { \l_@@_tmpa_tl } > { \l_@@_tmpb_tl } { \sort_return_swapped: } { \sort_return_same: } } @@ -1763,7 +1784,7 @@ \tl_clear:N \l_@@_prev_mark_name_tl \seq_map_inline:Nn #1 { - \exp_args:Nx \tl_if_eq:nnT + \exp_args:Ne \tl_if_eq:nnT { \@@_prop_item:nn {##1} { type } } { note } { @@ -1802,16 +1823,16 @@ % \begin{macrocode} \tl_if_empty:NF \l_@@_prev_text_page_tl { - \prop_gput:Nxx \g_@@_header_page_last_prop + \prop_gput:Nee \g_@@_header_page_last_prop { \l_@@_prev_text_page_tl } { \l_@@_prev_mark_page_tl } - \prop_gput:Nxx \g_@@_header_chap_last_prop + \prop_gput:Nee \g_@@_header_chap_last_prop { \l_@@_prev_text_page_tl } { \l_@@_prev_mark_chap_tl } - \prop_gput:Nxx \g_@@_header_sect_last_prop + \prop_gput:Nee \g_@@_header_sect_last_prop { \l_@@_prev_text_page_tl } { \l_@@_prev_mark_sect_tl } - \prop_gput:Nxx \g_@@_header_name_last_prop + \prop_gput:Nee \g_@@_header_name_last_prop { \l_@@_prev_text_page_tl } { \l_@@_prev_mark_name_tl } } @@ -1819,16 +1840,16 @@ % % Set `first' values for current page, based on the current note ID. % \begin{macrocode} - \prop_gput:Nxx \g_@@_header_page_first_prop + \prop_gput:Nee \g_@@_header_page_first_prop { \l_@@_curr_text_page_tl } { \@@_extract_pageref:n { mark@ ##1 } } - \prop_gput:Nxx \g_@@_header_chap_first_prop + \prop_gput:Nee \g_@@_header_chap_first_prop { \l_@@_curr_text_page_tl } { \@@_prop_item:nn {##1} { thechapter } } - \prop_gput:Nxx \g_@@_header_sect_first_prop + \prop_gput:Nee \g_@@_header_sect_first_prop { \l_@@_curr_text_page_tl } { \@@_prop_item:nn {##1} { thesection } } - \prop_gput:Nxx \g_@@_header_name_first_prop + \prop_gput:Nee \g_@@_header_name_first_prop { \l_@@_curr_text_page_tl } { \@@_prop_item:nn {##1} { pnsectname } } % \end{macrocode} @@ -1863,16 +1884,16 @@ % \begin{macrocode} \tl_if_empty:NF \l_@@_prev_text_page_tl { - \prop_gput:Nxx \g_@@_header_page_last_prop + \prop_gput:Nee \g_@@_header_page_last_prop { \l_@@_prev_text_page_tl } { \l_@@_prev_mark_page_tl } - \prop_gput:Nxx \g_@@_header_chap_last_prop + \prop_gput:Nee \g_@@_header_chap_last_prop { \l_@@_prev_text_page_tl } { \l_@@_prev_mark_chap_tl } - \prop_gput:Nxx \g_@@_header_sect_last_prop + \prop_gput:Nee \g_@@_header_sect_last_prop { \l_@@_prev_text_page_tl } { \l_@@_prev_mark_sect_tl } - \prop_gput:Nxx \g_@@_header_name_last_prop + \prop_gput:Nee \g_@@_header_name_last_prop { \l_@@_prev_text_page_tl } { \l_@@_prev_mark_name_tl } } @@ -1905,52 +1926,56 @@ { \group_begin: \prop_get:NnNTF \g_@@_header_page_first_prop - {#1} \l_tmpa_tl - { \tl_gset:NV \pnhdpagefirst \l_tmpa_tl } + {#1} \l_@@_tmpa_tl + { \tl_gset:NV \pnhdpagefirst \l_@@_tmpa_tl } { \tl_gset:NV \pnhdpagefirst \g_@@_header_prev_last_page_tl } \prop_get:NnNTF \g_@@_header_page_last_prop - {#1} \l_tmpa_tl + {#1} \l_@@_tmpa_tl { - \tl_gset:NV \pnhdpagelast \l_tmpa_tl - \tl_gset:NV \g_@@_header_prev_last_page_tl \l_tmpa_tl + \tl_gset:NV \pnhdpagelast \l_@@_tmpa_tl + \tl_gset:NV \g_@@_header_prev_last_page_tl + \l_@@_tmpa_tl } { \tl_gset:NV \pnhdpagelast \g_@@_header_prev_last_page_tl } \prop_get:NnNTF \g_@@_header_chap_first_prop - {#1} \l_tmpa_tl - { \tl_gset:NV \pnhdchapfirst \l_tmpa_tl } + {#1} \l_@@_tmpa_tl + { \tl_gset:NV \pnhdchapfirst \l_@@_tmpa_tl } { \tl_gset:NV \pnhdchapfirst \g_@@_header_prev_last_chap_tl } \prop_get:NnNTF \g_@@_header_chap_last_prop - {#1} \l_tmpa_tl + {#1} \l_@@_tmpa_tl { - \tl_gset:NV \pnhdchaplast \l_tmpa_tl - \tl_gset:NV \g_@@_header_prev_last_chap_tl \l_tmpa_tl + \tl_gset:NV \pnhdchaplast \l_@@_tmpa_tl + \tl_gset:NV \g_@@_header_prev_last_chap_tl + \l_@@_tmpa_tl } { \tl_gset:NV \pnhdchaplast \g_@@_header_prev_last_chap_tl } \prop_get:NnNTF \g_@@_header_sect_first_prop - {#1} \l_tmpa_tl - { \tl_gset:NV \pnhdsectfirst \l_tmpa_tl } + {#1} \l_@@_tmpa_tl + { \tl_gset:NV \pnhdsectfirst \l_@@_tmpa_tl } { \tl_gset:NV \pnhdsectfirst \g_@@_header_prev_last_sect_tl } \prop_get:NnNTF \g_@@_header_sect_last_prop - {#1} \l_tmpa_tl + {#1} \l_@@_tmpa_tl { - \tl_gset:NV \pnhdsectlast \l_tmpa_tl - \tl_gset:NV \g_@@_header_prev_last_sect_tl \l_tmpa_tl + \tl_gset:NV \pnhdsectlast \l_@@_tmpa_tl + \tl_gset:NV \g_@@_header_prev_last_sect_tl + \l_@@_tmpa_tl } { \tl_gset:NV \pnhdsectlast \g_@@_header_prev_last_sect_tl } \prop_get:NnNTF \g_@@_header_name_first_prop - {#1} \l_tmpa_tl - { \tl_gset:NV \pnhdnamefirst \l_tmpa_tl } + {#1} \l_@@_tmpa_tl + { \tl_gset:NV \pnhdnamefirst \l_@@_tmpa_tl } { \tl_gset:NV \pnhdnamefirst \g_@@_header_prev_last_name_tl } \prop_get:NnNTF \g_@@_header_name_last_prop - {#1} \l_tmpa_tl + {#1} \l_@@_tmpa_tl { - \tl_gset:NV \pnhdnamelast \l_tmpa_tl - \tl_gset:NV \g_@@_header_prev_last_name_tl \l_tmpa_tl + \tl_gset:NV \pnhdnamelast \l_@@_tmpa_tl + \tl_gset:NV \g_@@_header_prev_last_name_tl + \l_@@_tmpa_tl } { \tl_gset:NV \pnhdnamelast \g_@@_header_prev_last_name_tl } \group_end: } -\cs_generate_variant:Nn \@@_set_headers_vars:n { x } +\cs_generate_variant:Nn \@@_set_headers_vars:n { e } % \end{macrocode} % \end{macro} % @@ -1974,13 +1999,13 @@ \cs_new_protected:Npn \@@_set_headers_vars_next: { \bool_if:NT \g_@@_header_vars_next_bool - { \@@_set_headers_vars:x { \int_eval:n { \c@page + 1 } } } + { \@@_set_headers_vars:e { \int_eval:n { \c@page + 1 } } } } \cs_new_protected:Npn \@@_set_headers_vars_first: { - \@@_set_print_page_label:x + \@@_set_print_page_label:e { \int_use:N \g_@@_print_postnotes_int } - \@@_set_headers_vars:x + \@@_set_headers_vars:e { \@@_extract_pageref:e { print@ \int_use:N \g_@@_print_postnotes_int } @@ -2101,11 +2126,11 @@ % \begin{macrocode} \AddToHook { postnotes/note/store } [ postnotes ] { - \prop_gput:cnx { \@@_data_name:e { \l_postnotes_note_id_tl } } + \prop_gput:cne { \@@_data_name:e { \l_postnotes_note_id_tl } } { biblatex@refsection } { \int_use:N \c@refsection } - \prop_gput:cnx { \@@_data_name:e { \l_postnotes_note_id_tl } } + \prop_gput:cne { \@@_data_name:e { \l_postnotes_note_id_tl } } { biblatex@refsegment } { \int_use:N \c@refsegment } - \prop_gput:cnx { \@@_data_name:e { \l_postnotes_note_id_tl } } + \prop_gput:cne { \@@_data_name:e { \l_postnotes_note_id_tl } } { biblatex@refcontextbool } { \iftoggle { blx@refcontext } { true } { false } } \prop_gput:cnV { \@@_data_name:e { \l_postnotes_note_id_tl } } @@ -2149,7 +2174,7 @@ \togglefalse { blx@refcontext } \tl_clear:N \blx@refcontext@labelprefix \tl_clear:N \blx@refcontext@labelprefix@real - \tl_set:Nx \blx@refcontext@sortingtemplatename { \blx@sorting } + \tl_set:Ne \blx@refcontext@sortingtemplatename { \blx@sorting } \tl_set:Nn \blx@refcontext@sortingnamekeytemplatename { global } \tl_set:Nn \blx@refcontext@uniquenametemplatename { global } \tl_set:Nn \blx@refcontext@labelalphanametemplatename { global } @@ -2246,10 +2271,10 @@ \tl_new:N \g_@@_biblatex_prev_refsection_tl \AddToHook { postnotes/print/begin } [ postnotes ] { - \tl_set:Nx \l_@@_biblatex_orig_refsection_tl + \tl_set:Ne \l_@@_biblatex_orig_refsection_tl { \int_use:N \c@refsection } - \tl_gset:Nx \g_@@_biblatex_prev_refsection_tl - \l_@@_biblatex_orig_refsection_tl + \tl_gset:Ne \g_@@_biblatex_prev_refsection_tl + { \l_@@_biblatex_orig_refsection_tl } } \AddToHook { postnotes/print/note/begin } [ postnotes ] { @@ -2379,9 +2404,9 @@ { \AddToHook { postnotes/note/store } [ postnotes ] { - \prop_gput:cnx { \@@_data_name:e { \l_postnotes_note_id_tl } } + \prop_gput:cne { \@@_data_name:e { \l_postnotes_note_id_tl } } { zref-check@abschap } { \int_use:N \c@zc@abschap } - \prop_gput:cnx { \@@_data_name:e { \l_postnotes_note_id_tl } } + \prop_gput:cne { \@@_data_name:e { \l_postnotes_note_id_tl } } { zref-check@abssec } { \int_use:N \c@zc@abssec } } \AddToHook { postnotes/print/note/begin } [ postnotes ] diff --git a/Master/texmf-dist/source/latex/postnotes/postnotes.ins b/Master/texmf-dist/source/latex/postnotes/postnotes.ins index 08c592ad16c..8cac7bab06a 100644 --- a/Master/texmf-dist/source/latex/postnotes/postnotes.ins +++ b/Master/texmf-dist/source/latex/postnotes/postnotes.ins @@ -4,7 +4,7 @@ % % This file is part of the LaTeX package "postnotes". % -% Copyright (C) 2022-2023 Gustavo Barros +% Copyright (C) 2022-2023 gusbrs % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -17,8 +17,7 @@ % version 2005/12/01 or later. % % -% This work is "maintained" (as per LPPL maintenance status) by -% Gustavo Barros. +% This work is "maintained" (as per LPPL maintenance status) by gusbrs. % % This work consists of the files postnotes.dtx, % postnotes.ins, @@ -50,7 +49,7 @@ This file was generated from file(s) of the LaTeX package "postnotes". -Copyright (C) 2022-2023 Gustavo Barros +Copyright (C) 2022-2023 gusbrs It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -63,8 +62,7 @@ and version 1.3 or later is part of all distributions of LaTeX version 2005/12/01 or later. -This work is "maintained" (as per LPPL maintenance status) by - Gustavo Barros. +This work is "maintained" (as per LPPL maintenance status) by gusbrs. This work consists of the files postnotes.dtx, postnotes.ins, diff --git a/Master/texmf-dist/tex/latex/postnotes/postnotes.sty b/Master/texmf-dist/tex/latex/postnotes/postnotes.sty index 400353d766b..e1809c88aca 100644 --- a/Master/texmf-dist/tex/latex/postnotes/postnotes.sty +++ b/Master/texmf-dist/tex/latex/postnotes/postnotes.sty @@ -8,7 +8,7 @@ %% %% This file was generated from file(s) of the LaTeX package "postnotes". %% -%% Copyright (C) 2022-2023 Gustavo Barros +%% Copyright (C) 2022-2023 gusbrs %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -21,8 +21,7 @@ %% version 2005/12/01 or later. %% %% -%% This work is "maintained" (as per LPPL maintenance status) by -%% Gustavo Barros. +%% This work is "maintained" (as per LPPL maintenance status) by gusbrs. %% %% This work consists of the files postnotes.dtx, %% postnotes.ins, @@ -42,7 +41,7 @@ %% %% ----------------------------------------------------------------------- %% -\def\postnotes@required@kernel{2022-06-01} +\def\postnotes@required@kernel{2023-11-01} \NeedsTeXFormat{LaTeX2e}[\postnotes@required@kernel] \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} \IfFormatAtLeastTF{\postnotes@required@kernel} @@ -53,8 +52,12 @@ 'postnotes' requires a LaTeX kernel \postnotes@required@kernel\space or newer.% }% }% -\ProvidesExplPackage {postnotes} {2023-08-21} {0.2.6} +\ProvidesExplPackage {postnotes} {2023-11-14} {0.2.7} {Endnotes for LaTeX} +\tl_new:N \l__postnotes_tmpa_tl +\tl_new:N \l__postnotes_tmpb_tl +\seq_new:N \l__postnotes_tmpa_seq +\box_new:N \l__postnotes_tmpa_box \cs_new:Npn \__postnotes_data_name:n #1 { g__postnotes_ #1 _data_prop } \cs_generate_variant:Nn \__postnotes_data_name:n { e } @@ -63,11 +66,11 @@ { \prop_new:c { \__postnotes_data_name:e {#1} } \prop_gput:cnn { \__postnotes_data_name:e {#1} } { type } { note } - \prop_gput:cnx { \__postnotes_data_name:e {#1} } { mark } + \prop_gput:cne { \__postnotes_data_name:e {#1} } { mark } { \l__postnotes_mark_tl } - \prop_gput:cnx { \__postnotes_data_name:e {#1} } { counter } + \prop_gput:cne { \__postnotes_data_name:e {#1} } { counter } { \int_use:N \c@postnote } - \prop_gput:cnx { \__postnotes_data_name:e {#1} } { sortnum } + \prop_gput:cne { \__postnotes_data_name:e {#1} } { sortnum } { \bool_if:NTF \l__postnotes_manual_sortnum_bool { \fp_use:N \l__postnotes_sort_num_fp } @@ -75,16 +78,16 @@ } \cs_if_exist:cT { chapter } { - \prop_gput:cnx { \__postnotes_data_name:e {#1} } + \prop_gput:cne { \__postnotes_data_name:e {#1} } { thechapter } { \thechapter } } - \prop_gput:cnx { \__postnotes_data_name:e {#1} } { thesection } + \prop_gput:cne { \__postnotes_data_name:e {#1} } { thesection } { \thesection } - \prop_gput:cnx { \__postnotes_data_name:e {#1} } { pnsectname } + \prop_gput:cne { \__postnotes_data_name:e {#1} } { pnsectname } { \g__postnotes_section_name_tl } - \prop_gput:cnx { \__postnotes_data_name:e {#1} } { pnsectid } + \prop_gput:cne { \__postnotes_data_name:e {#1} } { pnsectid } { \int_use:N \g__postnotes_sectid_int } - \prop_gput:cnx { \__postnotes_data_name:e {#1} } { multibool } + \prop_gput:cne { \__postnotes_data_name:e {#1} } { multibool } { \bool_to_str:N \l__postnotes_maybe_multi_bool } \prop_gput:cnn { \__postnotes_data_name:e {#1} } { content } {#2} \UseHook { postnotes/note/store } @@ -95,14 +98,14 @@ \prop_gput:cnn { \__postnotes_data_name:e {#1} } { type } { section } \cs_if_exist:cT { chapter } { - \prop_gput:cnx { \__postnotes_data_name:e {#1} } + \prop_gput:cne { \__postnotes_data_name:e {#1} } { thechapter } { \thechapter } } - \prop_gput:cnx { \__postnotes_data_name:e {#1} } { thesection } + \prop_gput:cne { \__postnotes_data_name:e {#1} } { thesection } { \thesection } \prop_gput:cnn { \__postnotes_data_name:e {#1} } { content } {#2} } -\cs_generate_variant:Nn \__postnotes_store_section:nn { nx } +\cs_generate_variant:Nn \__postnotes_store_section:nn { ne } \cs_new_protected:Npn \__postnotes_prop_get:nnN #1#2#3 { \prop_get:cnNF { \__postnotes_data_name:e {#1} } {#2} #3 @@ -113,13 +116,13 @@ \cs_new_protected:Npn \__postnotes_prop_gclear:n #1 { \prop_gclear:c { \__postnotes_data_name:e {#1} } } \tl_const:Nn \c__postnotes_ref_prefix_tl { postnote@r } -\cs_new_protected:Npx \post@note #1#2 +\cs_new_protected:Npe \post@note #1#2 { \exp_not:N \@newl@bel { \c__postnotes_ref_prefix_tl } {#1} {#2} } \AddToHook { begindocument } { \legacy_if:nT { @filesw } { - \iow_now:Nx \@mainaux + \iow_now:Ne \@mainaux { \token_to_str:N \providecommand \token_to_str:N \post@note [2]{} } } } @@ -127,7 +130,7 @@ { \legacy_if:nT { @filesw } { - \iow_now:Nx \@partaux + \iow_now:Ne \@partaux { \token_to_str:N \providecommand \token_to_str:N \post@note [2]{} } } } @@ -141,20 +144,20 @@ } \cs_new_protected:Npn \__postnotes_set_mark_page_label:n #1 { \__postnotes_set_label:nn { mark@ #1 } { \thepage } } -\cs_generate_variant:Nn \__postnotes_set_mark_page_label:n { x } +\cs_generate_variant:Nn \__postnotes_set_mark_page_label:n { e } \cs_new_protected:Npn \__postnotes_set_text_page_label:n #1 { \__postnotes_set_label:nn { text@ #1 } { \int_use:N \c@page } } -\cs_generate_variant:Nn \__postnotes_set_text_page_label:n { x } +\cs_generate_variant:Nn \__postnotes_set_text_page_label:n { e } \cs_new_protected:Npn \__postnotes_set_print_page_label:n #1 { \__postnotes_set_label:nn { print@ #1 } { \int_use:N \c@page } } -\cs_generate_variant:Nn \__postnotes_set_print_page_label:n { x } +\cs_generate_variant:Nn \__postnotes_set_print_page_label:n { e } \cs_new_protected:Npn \__postnotes_get_pageref:Nn #1#2 { \cs_if_exist:cTF { \c__postnotes_ref_prefix_tl @ #2 } { \tl_set:Nv #1 { \c__postnotes_ref_prefix_tl @ #2 } } { \tl_clear:N #1 } } -\cs_generate_variant:Nn \__postnotes_get_pageref:Nn { Nx } +\cs_generate_variant:Nn \__postnotes_get_pageref:Nn { Ne } \cs_new:Npn \__postnotes_extract_pageref:n #1 { \cs_if_exist:cTF { \c__postnotes_ref_prefix_tl @ #1 } @@ -344,9 +347,10 @@ pretextmark = { \par } , maketextmark = { - \hbox_set:Nn \l_tmpa_box { \@textsuperscript { \normalfont ##1 } } - \skip_horizontal:n { - \box_wd:N \l_tmpa_box } - ##2 \box_use:N \l_tmpa_box ##3 + \hbox_set:Nn \l__postnotes_tmpa_box + { \@textsuperscript { \normalfont ##1 } } + \skip_horizontal:n { - \box_wd:N \l__postnotes_tmpa_box } + ##2 \box_use:N \l__postnotes_tmpa_box ##3 } , } , style / pagenote .meta:n = @@ -378,19 +382,19 @@ \tl_if_empty:NT \l__postnotes_mark_tl { \stepcounter { postnote } - \tl_set:Nx \l__postnotes_mark_tl { \thepostnote } + \tl_set:Ne \l__postnotes_mark_tl { \thepostnote } } - \seq_gput_right:Nx \g__postnotes_queue_seq + \seq_gput_right:Ne \g__postnotes_queue_seq { \l_postnotes_note_id_tl } \UseHook { postnotes/note/begin } \cs_set:Npn \@currentcounter { postnote } - \cs_set:Npx \@currentlabel { \p@postnote \l__postnotes_mark_tl } + \cs_set:Npe \@currentlabel { \p@postnote \l__postnotes_mark_tl } \MakeLinkTarget* { postnote. \l_postnotes_note_id_tl .mark } - \__postnotes_set_mark_page_label:x { \l_postnotes_note_id_tl } + \__postnotes_set_mark_page_label:e { \l_postnotes_note_id_tl } \__postnotes_set_user_labels: \bool_if:NF \l__postnotes_nomark_bool { - \__postnotes_typeset_mark:xV + \__postnotes_typeset_mark:eV { \l_postnotes_note_id_tl } \l__postnotes_mark_tl } \__postnotes_store:nn { \l_postnotes_note_id_tl } {#2} @@ -441,12 +445,12 @@ \bool_if:NTF \l__postnotes_print_plain_mark_stepcounter_bool { \stepcounter { postnote } - \tl_set:Nx \l__postnotes_mark_tl { \thepostnote } + \tl_set:Ne \l__postnotes_mark_tl { \thepostnote } } { \group_begin: \int_incr:N \c@postnote - \exp_args:NNNx + \exp_args:NNNe \group_end: \tl_set:Nn \l__postnotes_mark_tl { \thepostnote } } @@ -471,14 +475,14 @@ { \__postnotes_make_mark:nnn {#2} { } { } } } } -\cs_generate_variant:Nn \__postnotes_typeset_mark:nn { xV } +\cs_generate_variant:Nn \__postnotes_typeset_mark:nn { eV } \tl_new:N \l__postnotes_saved_spacefactor_tl \cs_new_protected:Npn \__postnotes_typeset_mark_wrapper:n #1 { \mode_leave_vertical: \mode_if_horizontal:T { - \tl_set:Nx \l__postnotes_saved_spacefactor_tl { \the\spacefactor } + \tl_set:Ne \l__postnotes_saved_spacefactor_tl { \the\spacefactor } \nobreak } #1 @@ -530,11 +534,11 @@ \group_begin: \int_gincr:N \g__postnotes_sectid_int \int_gincr:N \g__postnotes_note_id_int - \seq_gput_right:Nx \g__postnotes_queue_seq { \l_postnotes_note_id_tl } + \seq_gput_right:Ne \g__postnotes_queue_seq { \l_postnotes_note_id_tl } \tl_gclear:N \g__postnotes_section_name_tl \keys_set:nn { postnotes/section } {#1} \bool_if:NTF \l__postnotes_section_exp_bool - { \__postnotes_store_section:nx { \l_postnotes_note_id_tl } {#2} } + { \__postnotes_store_section:ne { \l_postnotes_note_id_tl } {#2} } { \__postnotes_store_section:nn { \l_postnotes_note_id_tl } {#2} } \group_end: } @@ -552,6 +556,7 @@ { \__postnotes_print_notes: } \tl_new:N \pnthechapter \tl_new:N \pnthesection +\tl_new:N \pnidnextnote \tl_new:N \pnthechapternextnote \tl_new:N \pnthesectionnextnote \tl_new:N \pnthepage @@ -622,6 +627,7 @@ \__postnotes_prop_get:nnN { \l_postnotes_print_note_id_tl } { thesection } \pnthesection + \tl_set:NV \pnidnextnote \l__postnotes_print_note_id_next_tl \__postnotes_prop_get:nnN { \l__postnotes_print_note_id_next_tl } { thechapter } \pnthechapternextnote @@ -641,13 +647,13 @@ \tl_if_eq:NnF \l__postnotes_print_type_prev_tl { note } { \bool_if:NTF \l__postnotes_print_as_list_bool - { \exp_args:Nx \begin { \l__postnotes_print_env_tl } } + { \exp_args:Ne \begin { \l__postnotes_print_env_tl } } { \group_begin: } \l__postnotes_print_format_tl } \group_begin: \UseHook { postnotes/print/note/begin } - \__postnotes_get_pageref:Nx \pnthepage + \__postnotes_get_pageref:Ne \pnthepage { mark@ \l_postnotes_print_note_id_tl } \__postnotes_prop_get:nnN { \l_postnotes_print_note_id_tl } @@ -661,13 +667,13 @@ \cs_set:Npn \@currentcounter { postnotetext } \int_set:Nn \c@postnotetext { \l__postnotes_print_counter_tl } - \cs_set:Npx \@currentlabel + \cs_set:Npe \@currentlabel { \p@postnote \l__postnotes_print_mark_tl } \__postnotes_text_mark_wrapper:n { \MakeLinkTarget* { postnote. \l_postnotes_print_note_id_tl .text } - \__postnotes_set_text_page_label:x + \__postnotes_set_text_page_label:e { \l_postnotes_print_note_id_tl } \__postnotes_typeset_text_mark:eV { \l_postnotes_print_note_id_tl } @@ -691,7 +697,7 @@ \tl_if_eq:NnF \l__postnotes_print_type_next_tl { note } { \bool_if:NTF \l__postnotes_print_as_list_bool - { \exp_args:Nx \end { \l__postnotes_print_env_tl } } + { \exp_args:Ne \end { \l__postnotes_print_env_tl } } { \group_end: } \par } @@ -733,19 +739,19 @@ \cs_new_protected:Npn \__postnotes_verify_multipass:N #1 { \group_begin: - \seq_clear:N \l_tmpa_seq + \seq_clear:N \l__postnotes_tmpa_seq \seq_map_inline:Nn #1 { - \__postnotes_prop_get:nnN {##1} { multibool } \l_tmpa_tl - \tl_if_eq:NnTF \l_tmpa_tl { true } + \__postnotes_prop_get:nnN {##1} { multibool } \l__postnotes_tmpa_tl + \tl_if_eq:NnTF \l__postnotes_tmpa_tl { true } { \cs_if_exist:cT { \c__postnotes_ref_prefix_tl @ mark@ ##1 } - { \seq_put_right:Nn \l_tmpa_seq {##1} } + { \seq_put_right:Nn \l__postnotes_tmpa_seq {##1} } } - { \seq_put_right:Nn \l_tmpa_seq {##1} } + { \seq_put_right:Nn \l__postnotes_tmpa_seq {##1} } } - \seq_gset_eq:NN #1 \l_tmpa_seq + \seq_gset_eq:NN #1 \l__postnotes_tmpa_seq \group_end: } \cs_new_protected:Npn \__postnotes_sort_queue:N #1 @@ -753,19 +759,20 @@ \group_begin: \seq_gsort:Nn #1 { - \__postnotes_prop_get:nnN {##1} { pnsectid } \l_tmpa_tl - \__postnotes_prop_get:nnN {##2} { pnsectid } \l_tmpb_tl - \tl_if_eq:NNTF \l_tmpa_tl \l_tmpb_tl + \__postnotes_prop_get:nnN {##1} { pnsectid } \l__postnotes_tmpa_tl + \__postnotes_prop_get:nnN {##2} { pnsectid } \l__postnotes_tmpb_tl + \tl_if_eq:NNTF \l__postnotes_tmpa_tl \l__postnotes_tmpb_tl { - \__postnotes_prop_get:nnN {##1} { type } \l_tmpa_tl - \__postnotes_prop_get:nnN {##2} { type } \l_tmpb_tl + \__postnotes_prop_get:nnN {##1} { type } \l__postnotes_tmpa_tl + \__postnotes_prop_get:nnN {##2} { type } \l__postnotes_tmpb_tl \bool_lazy_and:nnTF - { \str_if_eq_p:Vn \l_tmpa_tl { note } } - { \str_if_eq_p:Vn \l_tmpb_tl { note } } + { \str_if_eq_p:Vn \l__postnotes_tmpa_tl { note } } + { \str_if_eq_p:Vn \l__postnotes_tmpb_tl { note } } { - \__postnotes_prop_get:nnN {##1} { sortnum } \l_tmpa_tl - \__postnotes_prop_get:nnN {##2} { sortnum } \l_tmpb_tl - \fp_compare:nNnTF { \l_tmpa_tl } > { \l_tmpb_tl } + \__postnotes_prop_get:nnN {##1} { sortnum } \l__postnotes_tmpa_tl + \__postnotes_prop_get:nnN {##2} { sortnum } \l__postnotes_tmpb_tl + \fp_compare:nNnTF + { \l__postnotes_tmpa_tl } > { \l__postnotes_tmpb_tl } { \sort_return_swapped: } { \sort_return_same: } } @@ -832,7 +839,7 @@ \tl_clear:N \l__postnotes_prev_mark_name_tl \seq_map_inline:Nn #1 { - \exp_args:Nx \tl_if_eq:nnT + \exp_args:Ne \tl_if_eq:nnT { \__postnotes_prop_item:nn {##1} { type } } { note } { @@ -856,29 +863,29 @@ { \tl_if_empty:NF \l__postnotes_prev_text_page_tl { - \prop_gput:Nxx \g__postnotes_header_page_last_prop + \prop_gput:Nee \g__postnotes_header_page_last_prop { \l__postnotes_prev_text_page_tl } { \l__postnotes_prev_mark_page_tl } - \prop_gput:Nxx \g__postnotes_header_chap_last_prop + \prop_gput:Nee \g__postnotes_header_chap_last_prop { \l__postnotes_prev_text_page_tl } { \l__postnotes_prev_mark_chap_tl } - \prop_gput:Nxx \g__postnotes_header_sect_last_prop + \prop_gput:Nee \g__postnotes_header_sect_last_prop { \l__postnotes_prev_text_page_tl } { \l__postnotes_prev_mark_sect_tl } - \prop_gput:Nxx \g__postnotes_header_name_last_prop + \prop_gput:Nee \g__postnotes_header_name_last_prop { \l__postnotes_prev_text_page_tl } { \l__postnotes_prev_mark_name_tl } } - \prop_gput:Nxx \g__postnotes_header_page_first_prop + \prop_gput:Nee \g__postnotes_header_page_first_prop { \l__postnotes_curr_text_page_tl } { \__postnotes_extract_pageref:n { mark@ ##1 } } - \prop_gput:Nxx \g__postnotes_header_chap_first_prop + \prop_gput:Nee \g__postnotes_header_chap_first_prop { \l__postnotes_curr_text_page_tl } { \__postnotes_prop_item:nn {##1} { thechapter } } - \prop_gput:Nxx \g__postnotes_header_sect_first_prop + \prop_gput:Nee \g__postnotes_header_sect_first_prop { \l__postnotes_curr_text_page_tl } { \__postnotes_prop_item:nn {##1} { thesection } } - \prop_gput:Nxx \g__postnotes_header_name_first_prop + \prop_gput:Nee \g__postnotes_header_name_first_prop { \l__postnotes_curr_text_page_tl } { \__postnotes_prop_item:nn {##1} { pnsectname } } \__postnotes_get_pageref:Nn @@ -897,16 +904,16 @@ } \tl_if_empty:NF \l__postnotes_prev_text_page_tl { - \prop_gput:Nxx \g__postnotes_header_page_last_prop + \prop_gput:Nee \g__postnotes_header_page_last_prop { \l__postnotes_prev_text_page_tl } { \l__postnotes_prev_mark_page_tl } - \prop_gput:Nxx \g__postnotes_header_chap_last_prop + \prop_gput:Nee \g__postnotes_header_chap_last_prop { \l__postnotes_prev_text_page_tl } { \l__postnotes_prev_mark_chap_tl } - \prop_gput:Nxx \g__postnotes_header_sect_last_prop + \prop_gput:Nee \g__postnotes_header_sect_last_prop { \l__postnotes_prev_text_page_tl } { \l__postnotes_prev_mark_sect_tl } - \prop_gput:Nxx \g__postnotes_header_name_last_prop + \prop_gput:Nee \g__postnotes_header_name_last_prop { \l__postnotes_prev_text_page_tl } { \l__postnotes_prev_mark_name_tl } } @@ -916,65 +923,69 @@ { \group_begin: \prop_get:NnNTF \g__postnotes_header_page_first_prop - {#1} \l_tmpa_tl - { \tl_gset:NV \pnhdpagefirst \l_tmpa_tl } + {#1} \l__postnotes_tmpa_tl + { \tl_gset:NV \pnhdpagefirst \l__postnotes_tmpa_tl } { \tl_gset:NV \pnhdpagefirst \g__postnotes_header_prev_last_page_tl } \prop_get:NnNTF \g__postnotes_header_page_last_prop - {#1} \l_tmpa_tl + {#1} \l__postnotes_tmpa_tl { - \tl_gset:NV \pnhdpagelast \l_tmpa_tl - \tl_gset:NV \g__postnotes_header_prev_last_page_tl \l_tmpa_tl + \tl_gset:NV \pnhdpagelast \l__postnotes_tmpa_tl + \tl_gset:NV \g__postnotes_header_prev_last_page_tl + \l__postnotes_tmpa_tl } { \tl_gset:NV \pnhdpagelast \g__postnotes_header_prev_last_page_tl } \prop_get:NnNTF \g__postnotes_header_chap_first_prop - {#1} \l_tmpa_tl - { \tl_gset:NV \pnhdchapfirst \l_tmpa_tl } + {#1} \l__postnotes_tmpa_tl + { \tl_gset:NV \pnhdchapfirst \l__postnotes_tmpa_tl } { \tl_gset:NV \pnhdchapfirst \g__postnotes_header_prev_last_chap_tl } \prop_get:NnNTF \g__postnotes_header_chap_last_prop - {#1} \l_tmpa_tl + {#1} \l__postnotes_tmpa_tl { - \tl_gset:NV \pnhdchaplast \l_tmpa_tl - \tl_gset:NV \g__postnotes_header_prev_last_chap_tl \l_tmpa_tl + \tl_gset:NV \pnhdchaplast \l__postnotes_tmpa_tl + \tl_gset:NV \g__postnotes_header_prev_last_chap_tl + \l__postnotes_tmpa_tl } { \tl_gset:NV \pnhdchaplast \g__postnotes_header_prev_last_chap_tl } \prop_get:NnNTF \g__postnotes_header_sect_first_prop - {#1} \l_tmpa_tl - { \tl_gset:NV \pnhdsectfirst \l_tmpa_tl } + {#1} \l__postnotes_tmpa_tl + { \tl_gset:NV \pnhdsectfirst \l__postnotes_tmpa_tl } { \tl_gset:NV \pnhdsectfirst \g__postnotes_header_prev_last_sect_tl } \prop_get:NnNTF \g__postnotes_header_sect_last_prop - {#1} \l_tmpa_tl + {#1} \l__postnotes_tmpa_tl { - \tl_gset:NV \pnhdsectlast \l_tmpa_tl - \tl_gset:NV \g__postnotes_header_prev_last_sect_tl \l_tmpa_tl + \tl_gset:NV \pnhdsectlast \l__postnotes_tmpa_tl + \tl_gset:NV \g__postnotes_header_prev_last_sect_tl + \l__postnotes_tmpa_tl } { \tl_gset:NV \pnhdsectlast \g__postnotes_header_prev_last_sect_tl } \prop_get:NnNTF \g__postnotes_header_name_first_prop - {#1} \l_tmpa_tl - { \tl_gset:NV \pnhdnamefirst \l_tmpa_tl } + {#1} \l__postnotes_tmpa_tl + { \tl_gset:NV \pnhdnamefirst \l__postnotes_tmpa_tl } { \tl_gset:NV \pnhdnamefirst \g__postnotes_header_prev_last_name_tl } \prop_get:NnNTF \g__postnotes_header_name_last_prop - {#1} \l_tmpa_tl + {#1} \l__postnotes_tmpa_tl { - \tl_gset:NV \pnhdnamelast \l_tmpa_tl - \tl_gset:NV \g__postnotes_header_prev_last_name_tl \l_tmpa_tl + \tl_gset:NV \pnhdnamelast \l__postnotes_tmpa_tl + \tl_gset:NV \g__postnotes_header_prev_last_name_tl + \l__postnotes_tmpa_tl } { \tl_gset:NV \pnhdnamelast \g__postnotes_header_prev_last_name_tl } \group_end: } -\cs_generate_variant:Nn \__postnotes_set_headers_vars:n { x } +\cs_generate_variant:Nn \__postnotes_set_headers_vars:n { e } \AddToHook { shipout/before } [ postnotes/header ] { \__postnotes_set_headers_vars_next: } \bool_new:N \g__postnotes_header_vars_next_bool \cs_new_protected:Npn \__postnotes_set_headers_vars_next: { \bool_if:NT \g__postnotes_header_vars_next_bool - { \__postnotes_set_headers_vars:x { \int_eval:n { \c@page + 1 } } } + { \__postnotes_set_headers_vars:e { \int_eval:n { \c@page + 1 } } } } \cs_new_protected:Npn \__postnotes_set_headers_vars_first: { - \__postnotes_set_print_page_label:x + \__postnotes_set_print_page_label:e { \int_use:N \g__postnotes_print_postnotes_int } - \__postnotes_set_headers_vars:x + \__postnotes_set_headers_vars:e { \__postnotes_extract_pageref:e { print@ \int_use:N \g__postnotes_print_postnotes_int } @@ -1053,9 +1064,9 @@ { \AddToHook { postnotes/note/store } [ postnotes ] { - \prop_gput:cnx { \__postnotes_data_name:e { \l_postnotes_note_id_tl } } + \prop_gput:cne { \__postnotes_data_name:e { \l_postnotes_note_id_tl } } { zref-check@abschap } { \int_use:N \c@zc@abschap } - \prop_gput:cnx { \__postnotes_data_name:e { \l_postnotes_note_id_tl } } + \prop_gput:cne { \__postnotes_data_name:e { \l_postnotes_note_id_tl } } { zref-check@abssec } { \int_use:N \c@zc@abssec } } \AddToHook { postnotes/print/note/begin } [ postnotes ] -- cgit v1.2.3