![¿Qué hacen name:delim y name:hook en biblatex?](https://rvso.com/image/476235/%C2%BFQu%C3%A9%20hacen%20name%3Adelim%20y%20name%3Ahook%20en%20biblatex%3F.png)
Estas name:delim
macros name:hook
parecen de bajo nivel y cada una toma solo un argumento que normalmente es una combinación de namepart
s. Y, sin embargo, Moewe se preocupa por combinarlos de diferentes maneras.
Aquí hay un esquema de visualización de nombres estándar enbiblatex.def
\newbibmacro*{name:family}[4]{%
\ifuseprefix
{\usebibmacro{name:delim}{#3#1}%
\usebibmacro{name:hook}{#3#1}%
\mkbibcompletenamefamily{%
\ifdefvoid{#3}
{}
{\ifcapital
{\mkbibnameprefix{\MakeCapital{#3}}\isdot}
{\mkbibnameprefix{#3}\isdot}%
\ifprefchar{}{\bibnamedelimc}}%
\mkbibnamefamily{#1}\isdot}}
{\usebibmacro{name:delim}{#1}%
\usebibmacro{name:hook}{#1}%
\mkbibcompletenamefamily{%
\mkbibnamefamily{#1}\isdot}}}%
Aquí están sus soluciones personalizadas para mostrar.nombres etíopes
\newbibmacro*{name:ethiopian}[3]{%
\usebibmacro{name:delim}{#1#2#3}%
\usebibmacro{name:hook}{#1#2#3}%
\mkbibethgiven{#1}%
\ifdefvoid{#2}{}{\bibnamedelimd\mkbibethpat{#2}\isdot}%
\ifdefvoid{#3}{}{\bibnamedelimd\mkbibethpap{#3}\isdot}}
\newbibmacro*{name:cjk}[3]{%
\usebibmacro{name:delim}{#2#3#1}%
\usebibmacro{name:hook}{#2#3#1}%
\mkbibnamefamily{#1}%
\ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}}%
\ifdefvoid{#3}{}{\bibnamedelimd\mkbibnamecjk{#3}}}
Obviamente hay un patrón, pero no veo que afecte la salida visible. Así que quiero saber cuánta atención debo prestar a esto mientras intento crear mi propio nombre personalizado.
Debiblatex.def
:
\newbibmacro*{name:hook}[1]{%
\ifnumequal{\value{listcount}}{1}
{\lbx@initnamehook{#1}}
{}}
\newbibmacro*{name:delim}[1]{%
\ifnumgreater{\value{listcount}}{\value{liststart}}
{\ifboolexpr{
test {\ifnumless{\value{listcount}}{\value{liststop}}}
or
test \ifmorenames
}
{\printdelim{multinamedelim}}
{\lbx@finalnamedelim{#1}}}
{}}
Respuesta1
name:delim
escribe el delimitador entre diferentes nombres. Normalmente ( multinamedelim
) se trata de una coma o algún signo de puntuación aburrido, pero el último delimitador puede ser especial ( finalnamedelim
), por ejemplo, a veces es un "y". En algunos idiomas la finalnamedelim
("y") puede cambiar de forma dependiendo de la palabra/nombre que sigue (en español hay que cambiar entre "y" y "e"). Es por eso que name:delim
se le proporciona cierta información sobre el nombre para que pueda decidir la forma de la "y". En términos generales, el orden de los argumentos en el argumento de name:delim
debe seguir el orden de las partes del nombre impresas en el bibmacro correspondiente. (Esto fue cierto para el caso de Etiopía, pero no para la macro CJK. Lo cambié en la publicación vinculada).
name:hook
tiene un papel similar. Pero se aplica sólo al nombre. Es relevante para cosas comoeditado poren francés, donde elporseríaDelawareod'dependiendo del nombre.
A menos que utilice un idioma en el que sea necesario modificar las palabras dependiendo de lo que sigue (y esa modificación se implementa mediante biblatex
), no notará una diferencia en los formatos de sus nombres cuando no proporcione los argumentos en "el orden correcto".
La regla general es que name:delim
y name:hook
deben recibir los argumentos de la parte del nombre en el mismo orden en que los imprime la macro.