Mi viene in mente che il comando \@namedef definisce una macro corta, che non piò contenere più di un capoverso, e nemmeno la fine di un capoverso.
bisogna vedere se le macro definite nel pacchetto etoolbox (sempre utili e sanz segni @) prevedono anche la definizione di un comando lungo a partire da una stringa di caratteri qualsiasi.
Ci darò un’occhiata, ma nel frattempo anche tu puoi studiare la documentazione di questo pacchetto con texdoc etoolbox; ci sono molti comandi per eseguire questo tipo di definizioni e ci sono anche dei comandi per sostituire il comando \@whilenum e anche \@nameuse. La lettura non è elementare e bisogna stare attenti perfino alle virgole. 😉
Incidentalmente a me la serie dei tre versetti specificati separatamente mi produce tre capoversi distinti se metto \endinput dop due righe bianche dopo il terzo versetto, ma apparentemente non protesta se metto una riga vuota prima della graffa chiusa del terzo versetto. Se metto \endinput nella riga dopo la graffa chiusa del terzo versetto ma non metto un segno di commento attaccato alla graffa chius, lo spazio dopo la graffa è singigficativo e quindi lo spazio dopo ogni versetto è sempre troppo grande.
Poi con il tuo esempio più lungo ho messo il segno di commento dopo ogni graffa chusa e il prefisso \long prima dei \@namedef che contengono una o più righe vuote., oltre a \enfinput dopo l’ultimo versetto
Con il comando \branobibbia{Gn}{1}{1}{23} viene stampato tutto il file Gb1.tex come previsto che sia, con i nuovi capoversi dopo ogni riga vuota; mentre se non metto i comandi \long la composizione si ferma al primo versetto che contiene una riga vuota.
Mi sempra tutto in regola. Il punto è che quando il file Gn1.tex viene letto gli spazi dopo le graffe chiuse sono significativi e le righe vuote richiedono delle definizioni \long