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
___________________________________________________________________________________