[latex3-commits] [git/LaTeX3-latex3-latex3] master: Zap l3xref (632555f9d)

Joseph Wright joseph.wright at morningstar2.co.uk
Sat Oct 10 00:01:42 CEST 2020


Repository : https://github.com/latex3/latex3
On branch  : master
Link       : https://github.com/latex3/latex3/commit/632555f9dfcf7fc19a3cbe0aa3bfe84eee8fb62b

>---------------------------------------------------------------

commit 632555f9dfcf7fc19a3cbe0aa3bfe84eee8fb62b
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Fri Oct 9 23:01:42 2020 +0100

    Zap l3xref


>---------------------------------------------------------------

632555f9dfcf7fc19a3cbe0aa3bfe84eee8fb62b
 l3leftovers/l3xref.dtx | 378 -------------------------------------------------
 1 file changed, 378 deletions(-)

diff --git a/l3leftovers/l3xref.dtx b/l3leftovers/l3xref.dtx
deleted file mode 100644
index 61ecaf032..000000000
--- a/l3leftovers/l3xref.dtx
+++ /dev/null
@@ -1,378 +0,0 @@
-% \iffalse
-%% File: l3xref.dtx Copyright (C) 2006,2009 LaTeX3 project
-%%
-%% It may be distributed and/or modified under the conditions of the
-%% LaTeX Project Public License (LPPL), either version 1.3c of this
-%% license or (at your option) any later version.  The latest version
-%% of this license is in the file
-%%
-%%    http://www.latex-project.org/lppl.txt
-%%
-%% This file is part of the ``expl3 bundle'' (The Work in LPPL)
-%% and all files in that bundle must be distributed together.
-%%
-%% The released version of this bundle is available from CTAN.
-%%
-%% -----------------------------------------------------------------------
-%%
-%% The development version of the bundle can be found at
-%%
-%%    http://www.latex-project.org/svnroot/experimental/trunk/
-%%
-%% for those people who are interested.
-%%
-%%%%%%%%%%%
-%% NOTE: %%
-%%%%%%%%%%%
-%%
-%%   Snapshots taken from the repository represent work in progress and may
-%%   not work or may contain conflicting material!  We therefore ask
-%%   people _not_ to put them into distributions, archives, etc. without
-%%   prior consultation with the LaTeX Project Team.
-%%
-%% -----------------------------------------------------------------------
-%
-%<*driver|package|testfile>
-\RequirePackage{l3bootstrap}
-%</driver|package|testfile>
-%\fi
-\GetIdInfo$Id$
-       {L3 Experimental cross referencing}
-%\iffalse
-%<*testfile>
-\ProvidesFile{\jobname.tex}
-  [\filedate\space v\fileversion\space\filedescription]
-%</testfile>
-%<*driver>
-%\fi
-\ProvidesFile{\filename.\filenameext}
-  [\filedate\space v\fileversion\space\filedescription]
-%\iffalse
-\documentclass[full]{l3doc}
-\begin{document}
-\DocInput{\filename.\filenameext}
-\end{document}
-%</driver>
-% \fi
-%
-%
-% \title{The \textsf{l3xref} package\thanks{This file
-%         has version number \fileversion, last
-%         revised \filedate.}\\
-% Cross references}
-% \author{\Team}
-% \date{\filedate}
-% \maketitle
-%
-% \begin{documentation}
-%
-% \begin{function}{\xref_set_label:n}
-%   \begin{syntax}
-%     "\xref_set_label:n" \Arg{name}
-%   \end{syntax}
-%   Sets a label in the text. Note that this function does not do
-%   anything else than setting the correct labels. In particular, it
-%   does not try to fix any spacing around the write node; this is a
-%   task for the \textsf{galley2} module.
-% \end{function}
-%
-% \begin{function}{\xref_new:nn}
-%   \begin{syntax}
-%     "\xref_new:nn" \Arg{type} \Arg{value}
-%   \end{syntax}
-%   Defines a new cross reference type <type>. This defines the token
-%   list variable |\l_xref_curr_|<type>|_tl| with default value
-%   <value> which gets written fully expanded when |\xref_set_label:n|
-%   is called.
-% \end{function}
-%
-%
-% \begin{function}{\xref_deferred_new:nn}
-%   \begin{syntax}
-%     "\xref_deferred_new:nn" \Arg{type} \Arg{value}
-%   \end{syntax}
-%   Same as |\xref_new:n| except for this one, the value written
-%   happens when \TeX\ ships out the page. Page numbers use this one
-%   obviously.
-% \end{function}
-%
-% \begin{function}[EXP]{\xref_get_value:nn}
-%   \begin{syntax}
-%     "\xref_get_value:nn" \Arg{type} \Arg{name}
-%   \end{syntax}
-%   Extracts the cross reference information of type <type> for the
-%   label <name>. This operation is expandable.
-% \end{function}
-%
-%
-% \end{documentation}
-%
-% \begin{implementation}
-%
-% \section{\pkg{l3xref} implementation}
-%
-% \subsection{Internal functions and variables}
-%
-% \begin{variabledoc}{ \g_xref_all_curr_immediate_fields_prop |
-%                   \g_xref_all_curr_deferred_fields_prop  }
-% What they say they are ":)"
-% \end{variabledoc}
-%
-% \begin{variabledoc}{ \xref_write  }
-% A stream for writing cross references, although they are not required
-% to be in a separate file.
-% \end{variabledoc}
-%
-% \begin{function}{\xref_define_label:nn}
-%   \begin{syntax}
-%     "\xref_define_label:nn" \Arg{name} \Arg{plist contents}
-%   \end{syntax}
-% Define the property list for each label; used internally by
-% "\xref_set_label:n".
-% \end{function}
-%
-% \subsection{Module code}
-%
-%    We start by ensuring that the required packages are loaded.
-%    \begin{macrocode}
-%<*package>
-\ProvidesExplPackage
-  {\filename}{\filedate}{\fileversion}{\filedescription}
-\package_check_loaded_expl:
-%</package>
-%<*initex|package>
-%    \end{macrocode}
-%
-% There are two kinds of information, namely information which is
-% \emph{immediate} like a section title and then there's \emph{deferred}
-% information like page numbers. Each reference type belong to one of
-% these categories, which we save internally as the property lists
-% |\g_xref_all_curr_immediate_fields_prop| and
-% |\g_xref_all_curr_deferred_fields_prop| and the reference type
-% \meta{xyz} exists as the key-info pair |\xref_|\meta{xyz}|_key|
-% |{\l_xref_curr_|\meta{xyz}|_tl}| on one of these lists. This way each
-% new entry type is just added as another key-info pair.
-%
-% When the cross references are generated at the beginning of the
-% document each will turn into a control sequence. Thus |\label{mylab}|
-% will internally refer to the property list |\g_xref_mylab_prop|.
-%
-% The extraction of values from this property list can be done in
-% several different ways but we want to keep the operation
-% expandable. Therefore we use a dedicated function for each type of
-% cross reference, which looks like this:
-% \begin{verbatim}
-% \xref_get_value_xyz_aux:w -> #1 \xref_xyz_key #2#3\q_nil{#2}
-% \end{verbatim}
-% This will throw away all the bits we don't need. In case |xyz| is
-% the first on the |mylab| property list |#1| is empty, if it's the
-% last key-info pair |#3| is empty. The value of the field can be
-% extracted with the function |\xref_get_value:nn| where the first
-% argument is the type and the second the label name so here it would
-% be |\xref_get_value:nn| |{xyz}| |{mylab}|.
-%
-%  \begin{macro}{\g_xref_all_curr_immediate_fields_prop}
-%  \begin{macro}{\g_xref_all_curr_deferred_fields_prop}
-%    The two main property lists for storing information. They contain
-%    key-info pairs for all known types.
-%    \begin{macrocode}
-\prop_new:N \g_xref_all_curr_immediate_fields_prop
-\prop_new:N \g_xref_all_curr_deferred_fields_prop
-%    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
-%
-%  \begin{macro}{\xref_new:nn}
-%  \begin{macro}{\xref_deferred_new:nn}
-%  \begin{macro}[aux]{\xref_new_aux:nnn}
-%  Setting up a new cross reference type is fairly straight forward
-%  when we follow the game plan mentioned earlier.
-%    \begin{macrocode}
-\cs_new_nopar:Npn \xref_new:nn {\xref_new_aux:nnn{immediate}}
-\cs_new_nopar:Npn \xref_deferred_new:nn {\xref_new_aux:nnn{deferred}}
-\cs_new_nopar:Npn \xref_new_aux:nnn #1#2#3{
-%    \end{macrocode}
-%  First put the new type in the relevant property list.
-%    \begin{macrocode}
-  \exp_args:Nccx \prop_gput:Nnn {g_xref_all_curr_ #1 _fields_prop}
-  { xref_ #2 _key }
-  { \exp_not:c {l_xref_curr_#2_tl }}
-%    \end{macrocode}
-% Then define the key to be a protected macro.\footnote{We could also
-%   set it equal to \cs{scan_stop:} but this just feels ``cleaner''.}
-%    \begin{macrocode}
-  \cs_set_protected_nopar:cpn { xref_#2_key }{}
-  \tl_new:c {l_xref_curr_#2_tl}
-  \tl_set:cn {l_xref_curr_#2_tl} {#3}
-%    \end{macrocode}
-% Now for the function extracting the value of a reference. We could
-% do this with a simple |\prop_if_in| thing put since we want to do
-% things in an expandable way we make a separate grabber for each
-% type---this is also faster. The grabber function can be defined by
-% using an intricate construction of |\exp_after:wN| and other goodies
-% but I prefer readable code. The end result for the input |xyz| is
-% \begin{verbatim}
-% \cs_set_nopar:Npn\xref_get_value_xyz_aux:w #1\xref_xyz_key #2#3\q_nil{#2}
-% \end{verbatim}
-%    \begin{macrocode}
-  \toks_set:Nx \l_tmpa_toks {
-    \exp_not:n { \cs_set_nopar:cpn {xref_get_value_#2_aux:w} ##1 }
-    \exp_not:N \q_prop
-    \exp_not:c { xref_#2_key }
-    \exp_not:N \q_prop
-  }
-  \toks_use:N \l_tmpa_toks ##2 ##3\q_nil {##2}
-}
-%    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
-%
-%
-% \begin{macro}{\xref_get_value:nn}
-%   Getting the correct value for a given label-type pair is a matter
-%   of connecting the correct grabber functions and property list.
-%    \begin{macrocode}
-\cs_new_nopar:Npn \xref_get_value:nn #1#2 {
-  \cs_if_exist:cTF{g_xref_#2_prop}
-  {
-%    \end{macrocode}
-% This next expansion may look a little weird but it isn't if you
-% think about it!
-%    \begin{macrocode}
-    \exp_args:NcNc \exp_after:wN {xref_get_value_#1_aux:w}
-    \toks_use:N {g_xref_#2_prop}
-%    \end{macrocode}
-%  Better put in the stop marker.
-%    \begin{macrocode}
-    \q_nil
-  }
-  {??}
-}
-%    \end{macrocode}
-%  Temporary! We expand the property list and so we can't have the
-%  |\q_prop| marker just expand!
-%    \begin{macrocode}
-\cs_set_nopar:Npn \exp_after:cc #1#2 {
-  \exp_after:wN \exp_after:wN
-  \cs:w #1\exp_after:wN\cs_end: \cs:w #2\cs_end:
-}
-\cs_set_protected:Npn \q_prop {\q_prop}
-%    \end{macrocode}
-%  \end{macro}
-%
-%  \begin{macro}{\xref_define_label:nn}
-%  \begin{macro}[aux]{\xref_define_label_aux:nn}
-%    Define the property list for each label. We better do this in two
-%    steps because the special catcode regime is in effect and since
-%    some of the info fields are very likely to contain actual text,
-%    we better make sure spaces aren't ignored! As for the meaning of
-%    other characters then it is a possibility to also have a field
-%    containing catcode instructions which can then be activated with
-%    |\etex_scantokens:D|.
-%    \begin{macrocode}
-\cs_new_protected_nopar:Npn \xref_define_label:nn {
-  \group_begin:
-    \char_set_catcode:nn {`\ } { 10 }
-    \xref_define_label_aux:nn
-}
-%    \end{macrocode}
-% If the label is already taken we have a multiply defined label and
-% we should do something about it. For now we don't do anything
-% spectacular.
-%    \begin{macrocode}
-\cs_new_nopar:Npn \xref_define_label_aux:nn #1#2 {
-    \cs_if_free:cTF{g_xref_#1_prop}
-    {\prop_new:c{g_xref_#1_prop}}{\WARNING}
-    \toks_gset:cn{g_xref_#1_prop}{#2}
-  \group_end:
-}
-%    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
-%
-%
-% \begin{macro}{\xref_set_label:n}
-%   Then the generic command for setting a label. We expand the
-%   immediate labels fully before calling the write function but make
-%   sure the deferred fields aren't expanded just yet. Due to property
-%   lists being implemented as token list registers we must expand the
-%   `immediate' fields twice.
-%    \begin{macrocode}
-\cs_set_nopar:Npn \xref_set_label:n #1{
-  \cs_set_nopar:Npx \xref_tmp:w{\toks_use:N\g_xref_all_curr_immediate_fields_prop}
-  \exp_args:NNx\iow_shipout_x:Nn \xref_write{
-    \xref_define_label:nn {#1} {
-      \xref_tmp:w
-      \toks_use:N \g_xref_all_curr_deferred_fields_prop
-    }
-  }
-}
-%    \end{macrocode}
-%  \end{macro}
-%
-%  That's it (for now).
-%    \begin{macrocode}
-%</initex|package>
-%    \end{macrocode}
-%
-%
-% \section{\pkg{l3xref} test file}
-%
-%    \begin{macrocode}
-%<*testfile>
-\documentclass{article}
-\usepackage{l3xref}
-\ExplSyntaxOn
-\cs_set_nopar:Npn \startrecording {\iow_open:Nn \xref_write {\jobname.xref}}
-\cs_set_nopar:Npn \DefineCrossReferences {
-  \group_begin:
-    \ExplSyntaxNamesOn
-    \InputIfFileExists{\jobname.xref}{}{}
-  \group_end:
-}
-\AtBeginDocument{\DefineCrossReferences\startrecording}
-
-\xref_new:nn {name}{}
-\cs_set_nopar:Npn \setname{\tl_set:Nn\l_xref_curr_name_tl}
-\cs_set_nopar:Npn \getname{\xref_get_value:nn{name}}
-
-\xref_deferred_new:nn {page}{\thepage}
-\cs_set_nopar:Npn \getpage{\xref_get_value:nn{page}}
-
-\xref_deferred_new:nn {valuepage}{\number\value{page}}
-\cs_set_nopar:Npn \getvaluepage{\xref_get_value:nn{valuepage}}
-
-\cs_set_eq:NN \setlabel \xref_set_label:n
-
-\ExplSyntaxOff
-\begin{document}
-\pagenumbering{roman}
-
-Text\setname{This is a name}\setlabel{testlabel1}.  More
-text\setname{This is another name}\setlabel{testlabel2}. \clearpage
-
-Text\setname{This is a third name}\setlabel{testlabel3}. More
-text\setname{Hello World!}\setlabel{testlabel4}. \clearpage
-
-\pagenumbering{arabic}
-
-Text\setname{Name 5}\setlabel{testlabel5}. More text\setname{Name
-  6}\setlabel{testlabel6}. \clearpage
-
-Text\setname{Name 7}\setlabel{testlabel 7}. More text\setname{Name
-  8}\setlabel{testlabel8}. \clearpage
-
-Now let's extract some values. \getname{testlabel1} on page
-\getpage{testlabel1} with value \getvaluepage{testlabel1}.
-
-Now let's extract some values. \getname{testlabel 7} on page
-\getpage{testlabel 7} with value \getvaluepage{testlabel 7}.
-\end{document}
-%</testfile>
-%    \end{macrocode}
-%
-% \end{implementation}
-% \PrintIndex
-%
-% \endinput





More information about the latex3-commits mailing list.