Ci sono due spazietti con intercalata una penalità 10000 che non capisco da dove saltino fuori.
Non ne ho la più pallida idea. Allora, il volume e il numero sono gestiti da questa macro:
`\newbibmacro*{volnumdefault}{%
\printfield{volume}%
\setunit*{\volnumpunct}%
\printfield{number}}`
Il comando \volnumpunct è definito così:
`\newcommand*{\volnumpunct}{\addcomma\space}`
Non dovrebbero essere qui gli spazi intrusi. Questa macro è richiamata all’interno di un’altra macro: journal+issuetitle, dove ci sono un paio di \ifdefstring{}{}{}{}…ma non credo sia nemmeno lì il problema.
L’altro comando eseguito dalla macro è \printfield. Credo sia definito nel file biblatex.sty così:
`\newrobustcmd*{\blx@imc@printfield}[2][]{%
\blx@imc@iffieldundef{#2}
{\blx@nounit}
{\blx@getformat\blx@theformat{ffd}{#1}{#2}%
\ifdefvoid\blx@theformat
{\blx@nounit}
{\blx@begunit
\def\currentfield{#2}%
\expandafter\expandafter
\expandafter\blx@theformat
\expandafter\expandafter
\expandafter{\csname abx@field@#2\endcsname}%
\blx@endunit}}}`Come si fa a scoprirlo? Si scrive \showthe\lastnodetype e si scopre che il nodo precedente è “glue”; allora si aggiunge \unskip e si scopre che il nodo precedente è “glue”; di nuovo e il nodo precedente è “penalty”; con \unpenalty abbiamo un nodo “glue” e poi un nodo “char”. Finalmente!
Non capisco dove mettere \showthe\lastnodetype 🙄
In totale: glue per lo spazio tra parole; una penalità 10000 che sinceramente non so a che serva, poi uno spazio negativo di 0.00035pt e uno spazio positivo di 0.00035pt. ❓ Suppongo derivino dal codice di biblatex, quindi indagare dovrebbe essere complicato. 🙂
Spero che dipendano da biblatex e non dai miei codici
Non ci sono spazi spuri, se è questo che ti preoccupa; i due spazietti dopo la penalità si cancellano, ma sono comunque invisibili (0,00035 pt = 0.00012 mm).
Quanto a \showthe\lastnodetype, lo devi mettere davanti al numero della rivista:
`\field{number}{\showthe\lastnodetype1}`
per esempio, modificando il file .bbl. Durante la compilazione, TeX si ferma come per un errore e ti dice un numero. Il numero corrisponde a un tipo di nodo secondo la tabella
`-1: none (empty list)
0: char node
1: hlist node
2: vlist node
3: rule node
4: ins node
5: mark node
6: adjust node
7: ligature node
8: disc node
9: whatsit node
10: math node
11: glue node
12: kern node
13: penalty node
14: unset node
15: math mode nodes`
Puoi eliminare solo nodi kern (\unkern), penalty (\unpenalty) e glue (\unskip); con un trucco si possono eliminare anche i nodi hlist e vlist (che corrispondono a costruzioni come \hbox, \vbox, \box e \copy) dicendo
`{\setbox0=\lastbox}`
Ciao
Enrico