¿Qué hacen name:delim y name:hook en biblatex?

¿Qué hacen name:delim y name:hook en biblatex?

Estas name:delimmacros name:hookparecen de bajo nivel y cada una toma solo un argumento que normalmente es una combinación de nameparts. 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}}

yNombres CJK

\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:delimescribe 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:delimse 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:delimdebe 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:hooktiene 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:delimy name:hookdeben recibir los argumentos de la parte del nombre en el mismo orden en que los imprime la macro.

información relacionada