O que name:delim e name:hook fazem no biblatex?

O que name:delim e name:hook fazem no biblatex?

As macros name:delimare name:hookparecem de baixo nível e cada uma leva apenas um argumento que normalmente é uma combinação de nameparts. Mesmo assim, Moewe tem o cuidado de combiná-los de diferentes maneiras.

Aqui está um esquema de exibição de nome padrão embiblatex.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}}}%

Aqui estão suas soluções personalizadas para exibiçãoNomes 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}}

eNomes 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 há um padrão, mas não vejo que eles afetem a saída visível. Então, quero saber quanta atenção devo prestar a isso enquanto tento montar minha própria exibição de nome personalizada.

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}}}
    {}}

Responder1

name:delimcompõe o delimitador entre nomes diferentes. Normalmente ( multinamedelim) é uma vírgula ou alguma pontuação chata, mas o último delimitador pode ser especial ( finalnamedelim), por exemplo, às vezes é um "e". Em alguns idiomas o finalnamedelim("e") pode mudar de forma dependendo da palavra/nome que se segue (em espanhol você deve alternar entre "y" e "e"). É por isso que name:delimrecebe algumas informações sobre o nome para que possa decidir a forma do “e”. De modo geral, a ordem dos argumentos no argumento de name:delimdeve seguir a ordem das partes do nome impressa pela bibmacro relevante. (Isso era verdade para o caso da Etiópia, mas não para a macro CJK. Mudei isso na postagem vinculada.)

name:hooktem um papel semelhante. Mas isso se aplica apenas ao primeiro nome. É relevante para coisas comoeditado porem francês, ondeporseriadeoud'dependendo do nome.


A menos que você use uma linguagem na qual seja necessário modificar palavras dependendo do que se segue (e essa modificação seja implementada por biblatex), você não notará diferença nos formatos de seu nome quando não alimentar os argumentos "na ordem correta".

A regra geral é que name:delime name:hookdevem ser alimentados os argumentos da parte do nome na mesma ordem em que são impressos pela macro.

informação relacionada