Experiments with \doloopoverlist
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? %%%%%%%%%% MWE: \setupinteraction[state=start] \define[2]\imghref{\bgroup\goto{#1}[url(#2)]\egroup} \defineexternalfigure[logo][height=1em] \definedataset[autores] \setdataset[autores][ nombre={Angie Natalia Farfán Acevedo}, cvlac={ https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?... }, 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?... } 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?... } 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?... } 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?... } 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 } ] \defineuserdataalternative[idautor][renderingsetup=userdata:idautor] \startsetups[userdata:idautor] \dontleavehmode \imghref {\externalfigure[cvlac.pdf][logo]} {\userdataparameter{cvlac}} \quad \imghref {\externalfigure[orcid.pdf][logo]} {\userdataparameter{orcid}} \quad \imghref {\externalfigure[gscholar.pdf][logo]} {\userdataparameter{gscholar}} \quad \userdataparameter{author}\par \stopsetups \defineuserdata[idautor][alternative=idautor] \startdocument % I have to manually set the length of the dataset in the loop and use recurselevel... % Maybe there is a way to use the length of the "autores" dataset? and use indexes? \dorecurse{5}{ \startuserdata[idautor][ author={\datasetvariable{autores}{\recurselevel}{nombre}}, cvlac={\datasetvariable{autores}{\recurselevel}{cvlac}}, orcid={\datasetvariable{autores}{\recurselevel}{orcid}}, gscholar={\datasetvariable{autores}{\recurselevel}{gscholar}}, ]\stopuserdata % My "inlineuserdata" is empty... no idea if this is OK... } \stopdocument %%%%%%%%%% END MWE Thank you in advance. -- Andrés Conrado Montoya Andi Kú andresconrado@gmail.com http://sesentaycuatro.com http://messier87.com http://chiquitico.org ---------------------------------------- Los fines no justifican los medios, porque la medida verdadera de nuestro carácter está dada por los medios que estamos dispuestos a utilizar, no por los fines que proclamamos. ---------------------------------------- “You develop an instant global consciousness, a people orientation, an intense dissatisfaction with the state of the world, and a compulsion to do something about it. From out there on the moon, international politics look so petty. You want to grab a politician by the scruff of the neck and drag him a quarter of a million miles out and say, ‘Look at that, you son of a bitch.’” — Apollo 14 astronaut Edgar Mitchell
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 -----------------------------------------------------------------
participants (2)
-
Andres Conrado Montoya
-
Hans Hagen