On 8/17/2023 3:50 AM, Andres Conrado Montoya wrote:
Hello List.

I've been trying to typeset a somewhat complex list of authors for several
articles and a book.
My proof of concept seems to work fine, however, I know I am doing weird
things that I think could probably be done in a better way. I'm using
datasets and a recursion, kind of hacky but I can't find a better way of
handling it. Specifically I would like to know:
1. Is there a way of getting the length of a filled dataset? (how many
entries it contains)
2. Is it OK to use \startuserdata \stopuserdata without its inlineuserdata?
Is there an alternative that does not require inlineuserdata?

Weird is relative. Just use what you like most. One could for instance use the publication mechanism but you need to set up a bit more (see manual for example of usa as database).

Now datasets. It is not hard to add a size query so I added that. Your data is missins commas so let's fix that first

\definedataset[autores]

\setdataset[autores]
    [
        nombre={Angie Natalia Farfán Acevedo},

cvlac={https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0002125949},
        orcid={https://orcid.org/0009-0007-0765-4241},

gscholar={https://scholar.google.com/citations?user=GpYTTU0AAAAJ&hl=es&authuser=1},
    ]

\setdataset[autores]
    [
        nombre={Ivon Andrea Rodríguez Román},

cvlac={https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0000027033},
        orcid={https://orcid.org/0009-0001-1183-6829},

gscholar={https://scholar.google.com/citations?user=iz8SQNcAAAAJ&hl=es},
    ]

\setdataset[autores]
    [
      nombre={Angie Caterin Garzón González},

cvlac={https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0002128501},
      orcid={https://orcid.org/0009-0009-0990-6902},

gscholar={https://scholar.google.com/citations?view_op=list_works&hl=es&user=5WqcOeEAAAAJ},
    ]

\setdataset[autores]
    [
      nombre={Heidy Paola Veira Tenorio},

cvlac={https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0002127550},
      orcid={https://orcid.org/0009-0008-4076-7317},

gscholar={https://scholar.google.es/citations?view_op=new_profile&hl=es&authuser=1},
    ]

\setdataset[autores]
    [
        nombre={Yerly Lorena Diaz Aldana},

cvlac={https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0002127754},
        orcid={https://orcid.org/0009-0008-1720-4057},

gscholar={https://scholar.google.com/citations?hl=es&user=0obyCwkAAAAJ&view_op=list_works&gmla=AOV7GLPWRTK-xooHNe0iQ3uubfcSbG__GY_Guy35FdaqDJA3OfLLtp01-E1kzjxUhltlsfj494MaoQFkk9U9hCFYSipoR8aX0Vu2E6sV},
    ]

There is no need to use userdata as intermediate:

% \startsetups[userdata:idautor]
%   \dontleavehmode
%   \imghref
%     {\externalfigure[cvlac.pdf][logo]}
%     {\datasetvariable{autores}{\recurselevel}{vclac}}
%     \quad
%   \imghref
%     {\externalfigure[orcid.pdf][logo]}
%     {\datasetvariable{autores}{\recurselevel}{orcid}}
%     \quad
%   \imghref
%     {\externalfigure[gscholar.pdf][logo]}
%     {\datasetvariable{autores}{\recurselevel}{nombre}}
%     \quad
%   \datasetvariable{autores}{\recurselevel}{nombre}\par
% \stopsetups

Just loop over the set and call up the variables in the setup:

% \startdocument
%   \dorecurse{\datasetsize{autores}}{
%     \setups[userdata:idautor]
%   }
% \stopdocument

However, i can provide a processor:

% \startsetups[userdata:idautor]
%   \dontleavehmode
%   \imghref
%     {\externalfigure[cvlac.pdf][logo]}
%     {\datasetvariable{autores}{\datasetindex}{vclac}}
%     \quad
%   \imghref
%     {\externalfigure[orcid.pdf][logo]}
%     {\datasetvariable{autores}{\datasetindex}{orcid}}
%     \quad
%   \imghref
%     {\externalfigure[gscholar.pdf][logo]}
%     {\datasetvariable{autores}{\datasetindex}{nombre}}
%     \quad
%   \datasetvariable{autores}{\datasetindex}{nombre}\par
% \stopsetups

As we know what dataset we process:

\startsetups[userdata:idautor]
  \dontleavehmode
  \imghref
    {\externalfigure[cvlac.pdf][logo]}
    {\datasetentry{vclac}}
    \quad
  \imghref
    {\externalfigure[orcid.pdf][logo]}
    {\datasetentry{orcid}}
    \quad
  \imghref
    {\externalfigure[gscholar.pdf][logo]}
    {\datasetentry{nombre}}
    \quad
  \datasetentry{nombre}
  \par
\stopsetups

We then end up with:

\startdocument
  \processdataset[autores][userdata:idautor]
\stopdocument

I'll mail you the patch. Copy it to the right place and remake the format.

Hans

-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
       tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / https://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : https://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : https://contextgarden.net
___________________________________________________________________________________

Reply via email to